:root{color-scheme:dark;--ink:#f1f3f5;--muted:#a0aab5;--edge:#d9e8f022;--accent:#c4e4e8;font-family:Inter,"Segoe UI",Arial,sans-serif;background:#090e14;color:var(--ink)}
*{box-sizing:border-box}body{margin:0;min-width:280px;-webkit-tap-highlight-color:transparent}button,input{font:inherit}button{cursor:pointer;color:inherit;touch-action:manipulation}button:disabled{cursor:wait}button:focus-visible,summary:focus-visible,a:focus-visible{outline:2px solid #ceeef3;outline-offset:6px}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ambience{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1;background:radial-gradient(ellipse at 50% 42%,#18263288,transparent 53%),linear-gradient(130deg,#0c121b,#090e14 55%,#11171b)}
.light{position:absolute;width:65vw;height:80vh;border-radius:50%;filter:blur(70px);opacity:.34;will-change:transform;animation:drift 22s ease-in-out infinite alternate}.light-cool{left:-32vw;top:7%;background:radial-gradient(ellipse,#44697777,transparent 66%)}.light-warm{right:-37vw;bottom:-25%;background:radial-gradient(ellipse,#a3896555,transparent 65%);animation-delay:-11s}.horizon{position:absolute;width:150vw;height:65vh;border:1px solid #b7c4d012;border-radius:50%;left:-25vw;bottom:-45vh;box-shadow:0 -20px 100px #627d8d09}
main{min-height:100svh;min-height:100dvh;display:flex;align-items:center;flex-direction:column;padding:clamp(30px,6vh,70px) 24px max(22px,env(safe-area-inset-bottom));position:relative}
.brand{display:flex;align-items:center;flex-direction:column;gap:9px;text-align:center}.brand strong{font-size:25px;font-weight:500;letter-spacing:.32em;padding-left:.32em;background:linear-gradient(110deg,#f6f4ef,#93a2b0 46%,#f6f4ef 85%);background-clip:text;-webkit-background-clip:text;color:transparent}.brand span{color:#a7adb6;font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.voice{width:100%;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:42px 0 52px}
.mic-wrap{--diameter:250px;width:var(--diameter);height:var(--diameter);display:grid;place-items:center;position:relative;isolation:isolate;margin-top:6px}
.mic-wrap:before{content:"";position:absolute;inset:9%;border-radius:50%;background:radial-gradient(circle,#a9dae524,transparent 70%);filter:blur(24px);transform:scale(1.35);opacity:.6;transition:opacity .8s}
.orbit{position:absolute;pointer-events:none;border-radius:50%;border:1px solid #d9e5ed12;box-shadow:0 1px 0 #ffffff05,inset 0 1px 0 #ffffff04;transition:border-color .7s}.orbit-outer{inset:0}.orbit-inner{inset:17px;border-color:#d9e5ed24}
.talk{position:relative;width:176px;height:176px;border:1px solid #b9d0e059;border-radius:50%;display:grid;place-items:center;background:radial-gradient(ellipse at 25% 12%,#e9f6ff28,transparent 42%),radial-gradient(ellipse at 75% 90%,#96b2c41c,transparent 50%),linear-gradient(145deg,#3a4957,#17232f 42%,#101923 68%,#2e3a43);box-shadow:inset 0 2px 2px #ffffff40,inset 0 -3px 8px #0008,0 0 0 5px #0b141bbb,0 0 0 6px #d9e5ed17,0 18px 45px #0007;transition:transform .35s,box-shadow .6s,border-color .6s;overflow:hidden}
.talk:before{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid #ffffff0a;background:linear-gradient(120deg,#ffffff05,transparent 45%);pointer-events:none}.talk:hover{transform:translateY(-3px);border-color:#dbeff2a0;box-shadow:inset 0 2px 2px #ffffff50,inset 0 -3px 8px #0008,0 0 0 5px #0b141bbb,0 0 0 6px #d9e5ed25,0 24px 52px #0008}.talk:active{transform:scale(.97)}.mic{width:39px;height:44px;color:#e5eef3;filter:drop-shadow(0 2px 3px #0008)}.stop-icon{display:none;width:18px;height:18px;border-radius:5px;background:#e3eef3;box-shadow:0 0 18px #caecf455}.talk[aria-pressed=true] .stop-icon{display:block}.talk[aria-pressed=true] .mic{display:none}
h1{font-size:26px;font-weight:400;letter-spacing:-.025em;margin:28px 0 8px;min-height:36px;line-height:36px}#status{font-size:15px;color:#e8b6a6;line-height:1.5;max-width:350px;margin:8px 0 15px}.text-button{border:0;background:none;color:#b9c2cb;min-height:44px;padding:10px 20px;font-size:14px;transition:color .2s}.text-button:hover{color:#fff}#typeToggle{position:relative;margin-top:7px;letter-spacing:.025em}#typeToggle:after{content:"";position:absolute;width:18px;height:1px;background:#aabac14d;bottom:6px;left:calc(50% - 9px)}.small{font-size:13px}
.thinking-dots{display:inline-flex;gap:8px;align-items:center;justify-content:center;height:36px}.thinking-dots i{width:6px;height:6px;background:#d3e5ec;border-radius:50%;animation:think 1.35s ease-in-out infinite}.thinking-dots i:nth-child(2){animation-delay:.16s}.thinking-dots i:nth-child(3){animation-delay:.32s}
body[data-mode=listening] .orbit-inner{border-color:#b3e0e35c;animation:listen 3s ease-in-out infinite}body[data-mode=speaking] .orbit-inner{animation:listen 1.6s ease-in-out infinite;border-color:#cde8ec6b}body[data-mode=speaking] .orbit-outer{animation:listen 1.6s .3s ease-in-out infinite}body[data-mode=thinking] .mic-wrap:before,body[data-mode=browsing] .mic-wrap:before,body[data-mode=connecting] .mic-wrap:before{opacity:1;animation:glow 2.7s ease-in-out infinite}body[data-mode=error] .orbit-inner{border-color:#c890756b}
.chat{width:min(100%,490px);margin-top:22px;padding:20px;border-radius:24px;border:1px solid var(--edge);background:linear-gradient(145deg,#25344177,#121c26b8);box-shadow:inset 0 1px 0 #ffffff0a,0 24px 65px #0003;backdrop-filter:blur(22px);text-align:left}.messages{max-height:32vh;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#455362 transparent}.message{padding:13px 16px;background:#ffffff06;border:1px solid #ffffff08;border-radius:15px;font-size:16px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 12px}.message.user{background:#91b8c414;margin-left:28px}.message.assistant{margin-right:18px}.speaker{display:block;font-size:12px;letter-spacing:.04em;color:#a5bcc9;margin-bottom:4px}#textForm{display:flex;gap:8px;border:1px solid #b7d0df29;border-radius:15px;background:#050e1766;padding:5px;margin-top:12px}#textInput{width:100%;min-width:0;border:0;outline:0;background:none;color:var(--ink);padding:9px 11px;font-size:16px}#textForm:focus-within{border-color:#b9dbe282}#textInput::placeholder{color:#9ba9b6}#send{flex-shrink:0;border:1px solid #d7edf13d;width:44px;height:44px;border-radius:11px;background:linear-gradient(135deg,#dbe5e9,#8fa3b1);color:#13232e;font-size:25px}#endText{display:block;margin:10px auto 0}.chat-open .voice{padding-top:25px;padding-bottom:28px}.chat-open .mic-wrap{--diameter:160px}.chat-open .talk{width:112px;height:112px}.chat-open .orbit-inner{inset:10px}.chat-open .mic{width:29px;height:32px}.chat-open h1{margin-top:16px;font-size:23px}
footer{display:flex;flex-wrap:wrap;gap:10px 20px;justify-content:center;align-items:center;color:#939ea9;font-size:12px;letter-spacing:.06em;min-height:30px}.footer-action{font-size:12px;min-height:44px;border:0;border-left:1px solid #abb7c02e;background:none;color:#afbbc6;padding:6px 0 6px 20px;letter-spacing:0}.footer-action:hover{color:white}
dialog{max-height:85dvh;overflow:auto;background:linear-gradient(140deg,#24313eee,#101923f5);border-color:#ccdbe333;box-shadow:inset 0 1px 0 #ffffff17,0 30px 100px #0009;backdrop-filter:blur(24px)}dialog::backdrop{background:#050a11b8;backdrop-filter:blur(9px)}dialog h2{font-weight:450;letter-spacing:-.025em}dialog button{background:linear-gradient(135deg,#e1e9ed,#a4b5c1);color:#11212e;min-height:48px}.privacy-details{font-size:14px;line-height:1.6;color:var(--muted);margin:17px 0 12px}.privacy-details summary{cursor:pointer;min-height:36px;padding:6px 0}.privacy-details p{font-size:14px}.consent-summary{font-size:16px!important;line-height:1.75!important}.page-hidden *, .page-hidden *:before,.page-hidden *:after{animation-play-state:paused!important}
.handoff{width:min(100%,440px);margin:16px 0;padding:16px 18px;border:1px solid var(--edge);border-radius:20px;background:linear-gradient(135deg,#26374588,#15212bdd);text-align:left;backdrop-filter:blur(18px)}.handoff-heading{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px}.handoff-heading button{width:44px;height:44px;border:0;background:none;font-size:24px;color:var(--muted)}.handoff-actions{display:flex;flex-wrap:wrap;gap:8px}.handoff-actions a,.handoff-actions button,#enquiryDraft{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 13px;border:1px solid #d2e4ec35;border-radius:11px;background:#d5e8ed0d;color:#e0edf2;text-decoration:none;font-size:14px}.handoff-actions a:first-child{background:#b9d1d2;color:#132329}.handoff p{font-size:14px;color:#c2d0d9;margin:12px 0 2px}.handoff .handoff-note{font-size:13px;line-height:1.5;color:var(--muted)}#enquiryForm{display:flex;flex-direction:column;gap:10px}#enquiryForm label{font-size:14px;color:#c5d8e7;margin-top:8px}#enquiryForm input,#enquiryForm textarea{width:100%;background:#050e1755;border:1px solid #b7d0df40;border-radius:10px;color:var(--ink);font:inherit;padding:12px}#enquiryForm p{margin:5px 0}#enquiryForm button{margin:0}#cancelEnquiry{background:transparent;color:#c5d8e7}
@keyframes drift{to{transform:translate(6vw,5vh) scale(1.12)}}@keyframes think{0%,70%,100%{transform:translateY(0);opacity:.35}35%{transform:translateY(-5px);opacity:1}}@keyframes listen{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.055);opacity:1}}@keyframes glow{50%{opacity:.35}}
@media(max-width:480px){main{padding:38px 20px max(18px,env(safe-area-inset-bottom))}.brand strong{font-size:23px}.brand span{font-size:12px;letter-spacing:.12em}.mic-wrap{--diameter:234px}.talk{width:164px;height:164px}.voice{padding:35px 0 42px}h1{font-size:25px}.chat{padding:14px;border-radius:20px}.chat-open .voice{padding-top:24px}.message{padding:11px 13px}.message.user{margin-left:14px}.message.assistant{margin-right:8px}.light{filter:blur(45px)}}
@media(max-height:640px){main{padding-top:24px}.voice{padding:22px 0}.mic-wrap{--diameter:188px}.talk{width:134px;height:134px}h1{margin-top:18px}.chat-open .mic-wrap{--diameter:114px}.chat-open .talk{width:82px;height:82px}.chat-open .orbit-inner{inset:6px}.messages{max-height:35vh}}
/* Opening choreography: the wordmark arrives first, then the two equal choices. */
.brand{animation:brand-arrive 1.65s cubic-bezier(.22,.75,.2,1) both;transform-origin:center;z-index:2}
.choices{display:flex;align-items:center;justify-content:center;gap:36px;width:100%;padding:28px 0;animation:choices-arrive .85s 1.15s cubic-bezier(.16,1,.3,1) both}
.choice{width:180px;height:180px;flex:0 0 auto;border-radius:50%;position:relative;isolation:isolate;border:1px solid #c4d7e657;background:radial-gradient(ellipse at 25% 8%,#e9f6ff24,transparent 45%),linear-gradient(145deg,#31424f,#16232e 48%,#111b24 72%,#2a3943);box-shadow:inset 0 2px 2px #ffffff32,inset 0 -3px 8px #0007,0 0 0 6px #0b141b9c,0 0 0 7px #d9e5ed16,0 18px 45px #0006;display:grid;place-items:center;transition:transform .35s,border-color .35s,box-shadow .35s;overflow:visible}
.choice span{font-family:inherit;font-size:22px;font-weight:450;line-height:1.2;letter-spacing:-.025em;color:#edf3f5;position:relative;z-index:1}
.choice:before{content:"";position:absolute;inset:-18px;border-radius:50%;border:1px solid #cce6ee0e;border-top-color:#cce6ee3b;border-right-color:#cce6ee18;animation:choice-orbit 18s linear infinite;pointer-events:none}.choice:nth-child(2):before{animation-direction:reverse;animation-delay:-7s}.choice:after{content:"";position:absolute;inset:8px;border-radius:50%;border:1px solid #ffffff0b;pointer-events:none}.choice:hover{transform:translateY(-5px);border-color:#deedf291;box-shadow:inset 0 2px 2px #ffffff50,inset 0 -3px 8px #0007,0 0 0 6px #0b141b9c,0 0 0 7px #d9e5ed33,0 22px 55px #0008}.choice:active{transform:scale(.97)}
.choices:focus-within{animation:none}.back-home{position:absolute;top:140px;left:max(24px,calc(50% - 245px));border:0;background:none;display:flex;gap:6px;align-items:center;min-height:44px;padding:6px 10px;font-size:25px;color:#a8b7c3}.back-home span{font-size:14px}.back-home:hover{color:#fff}
body[data-surface=text] .voice{padding-top:62px}body[data-surface=text] #label{margin-top:0}body[data-surface=text] .chat{margin-top:16px}body[data-surface=text] #typeToggle{order:5;margin-top:18px}body[data-surface=text] .messages{max-height:42dvh}body[data-surface=home] .voice{padding-top:20px;padding-bottom:70px}
body:not([data-surface=home]) .mic-wrap,body:not([data-surface=home]) .chat{animation:surface-arrive .45s cubic-bezier(.2,.8,.2,1) both}
footer{animation:footer-arrive .6s 1.45s both}
@keyframes brand-arrive{0%,25%{transform:translateY(calc(50svh - 105px)) scale(1.35);opacity:0}38%{opacity:1;transform:translateY(calc(50svh - 105px)) scale(1.35)}100%{transform:translateY(0) scale(1);opacity:1}}
@keyframes choices-arrive{from{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes footer-arrive{from{opacity:0}to{opacity:1}}@keyframes choice-orbit{to{transform:rotate(360deg)}}@keyframes surface-arrive{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:480px){.choices{gap:24px}.choice{width:142px;height:142px}.choice span{font-size:20px}.choice:before{inset:-11px}.back-home{top:112px;left:16px}body[data-surface=home] .voice{padding-bottom:58px}}
@media(max-width:350px){.choices{gap:22px}.choice{width:122px;height:122px}.choice span{font-size:18px}.choice:before{inset:-9px}}
@media(max-height:640px){.back-home{top:92px}body[data-surface=text] .voice{padding-top:45px}.choices{padding:20px 0}}
/* Immediate, distinct state feedback: colour plus labels, never colour alone. */
.brand{animation-duration:.65s}.choices{animation:choices-arrive .3s .1s backwards}footer{animation-delay:.2s;animation-duration:.3s}
.talk{transition:transform .15s,box-shadow .18s,border-color .18s,background .18s}
.choice:active{background:linear-gradient(145deg,#246e94,#133c57);border-color:#79d4ff;box-shadow:0 0 32px #38bdf84d}
body[data-mode=connecting]{--live:#fbbf24;--live-dark:#70440f}
body[data-mode=listening]{--live:#34d399;--live-dark:#086448}
body[data-mode=thinking],body[data-mode=browsing]{--live:#c4a1ff;--live-dark:#593889}
body[data-mode=speaking],body[data-mode=responding]{--live:#38bdf8;--live-dark:#075b87}
body[data-mode=error]{--live:#fb7185;--live-dark:#803247}
body[data-mode=connecting] .talk,body[data-mode=listening] .talk,body[data-mode=thinking] .talk,body[data-mode=browsing] .talk,body[data-mode=speaking] .talk,body[data-mode=error] .talk{border-color:var(--live);background:radial-gradient(ellipse at 25% 12%,#ffffff38,transparent 48%),linear-gradient(145deg,var(--live-dark),#101c29 85%);box-shadow:inset 0 2px 2px #ffffff45,0 0 0 6px #0b141bcc,0 0 0 7px var(--live),0 0 45px color-mix(in srgb,var(--live) 35%,transparent)}
body[data-mode=connecting] .orbit-inner,body[data-mode=thinking] .orbit-inner,body[data-mode=browsing] .orbit-inner{border-color:var(--live);border-top-width:3px;animation:choice-orbit 1.25s linear infinite}
body[data-mode=listening] .orbit-inner,body[data-mode=speaking] .orbit-inner,body[data-mode=speaking] .orbit-outer{border-color:var(--live)}
body[data-hearing=true] .talk{transform:scale(1.045);box-shadow:inset 0 2px 2px #ffffff45,0 0 0 7px #34d39966,0 0 65px #34d39980}
body[data-mode=speaking] .talk{animation:voice-active .8s ease-in-out infinite alternate}
body[data-mode=responding] .chat{border-color:#38bdf899;box-shadow:0 0 28px #38bdf81a}
@keyframes voice-active{to{filter:brightness(1.22)}}
/* Equal, generous vertical choices — Talk above Write at every screen size. */
.brand{gap:9px}.brand strong{font-size:34px;font-weight:750;letter-spacing:.2em;padding-left:.2em;background:linear-gradient(110deg,#fff,#d1dce5 48%,#fff)}.brand strong{background-clip:text;-webkit-background-clip:text}.brand span{font-size:19px;font-weight:650;letter-spacing:.045em;color:#d3dce5;text-transform:none}
.choices{flex-direction:column;gap:32px;padding:18px 0}.choice{width:clamp(176px,25svh,230px);height:clamp(176px,25svh,230px)}.choice span{font-size:28px;font-weight:700;line-height:1.2;letter-spacing:-.025em}.choice:before{inset:-13px}
body[data-surface=home] .voice{padding:25px 0 30px}footer{font-size:17px;font-weight:700;letter-spacing:.015em;color:#c2ced9}.footer-action{font-weight:500}.back-home{top:155px}
@media(max-width:480px){main{padding-top:28px}.brand strong{font-size:32px}.brand span{font-size:18px}.choices{gap:34px}.choice{width:clamp(164px,22svh,194px);height:clamp(164px,22svh,194px)}.choice span{font-size:27px}.back-home{top:125px}footer{font-size:16px}}
@media(max-height:680px){main{padding-top:20px}.brand strong{font-size:28px}.brand span{font-size:16px}.choices{gap:22px;padding:12px 0}.choice{width:clamp(140px,24svh,174px);height:clamp(140px,24svh,174px)}.choice span{font-size:24px}body[data-surface=home] .voice{padding:20px 0}.back-home{top:105px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.thinking-dots i{opacity:.8}.light{will-change:auto}}
