:root{
  --ivory:#faf7f2;--paper:#fffdfa;--petrol:#0f3d46;--petrol-deep:#0f3d46;
  --aqua:#36c2c6;--sage:#9bb79a;--coral:#ff8a6e;--ink:#0f3d46;
  --muted:#728581;--line:rgba(8,63,70,.12);--soft:#edf3f0;--error:#ad4538;
  --shadow:0 24px 70px rgba(8,63,70,.12);--shadow-soft:0 10px 30px rgba(8,63,70,.08);
  --spring:cubic-bezier(.34,1.56,.64,1);--smooth:cubic-bezier(.25,.46,.45,.94);
  --font-display:"Montserrat","Century Gothic","Segoe UI",sans-serif;
  --font-body:"Montserrat","Century Gothic","Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);font-family:var(--font-body);background:var(--ivory);-webkit-font-smoothing:antialiased}
button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:3px solid rgba(54,194,198,.5);outline-offset:3px}
.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}
.skip-link{position:fixed;inset-block-start:.75rem;inset-inline-start:50%;z-index:20;transform:translate(-50%,-160%);padding:.7rem 1rem;border-radius:.5rem;background:var(--petrol);color:white;text-decoration:none;transition:transform .2s ease}
.skip-link:focus{transform:translate(-50%,0)}
.eyebrow,.form-kicker,.welcome-kicker{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase}

/* Login */
.login-body{min-height:100dvh;background:var(--ivory)}
.login-shell{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(25rem,.92fr);padding:clamp(2rem,5vw,5.5rem);background:var(--ivory)}
.login-brand{position:relative;display:grid;min-height:calc(100dvh - clamp(4rem,10vw,11rem));place-items:center;padding:2rem clamp(2rem,5vw,5rem);border-right:1px solid rgba(15,61,70,.18);background:transparent;color:var(--petrol)}
.login-identity{width:min(100%,36rem);text-align:center;animation:fadeUp .65s var(--smooth) both}
.identity-symbol{display:block;width:min(78%,27rem);height:auto;margin:0 auto -.4rem}
.identity-word{font-family:var(--font-display);font-size:clamp(4.6rem,9vw,9rem);font-weight:300;line-height:.94;letter-spacing:.095em;white-space:nowrap;color:var(--petrol)}
.identity-word span{font-weight:300}
.identity-tagline{display:flex;justify-content:center;gap:clamp(.8rem,2vw,1.8rem);margin:2.2rem 0 0;font-size:clamp(.68rem,1vw,.9rem);font-weight:500;letter-spacing:.33em;white-space:nowrap}
.identity-tagline b{font-weight:500}.identity-tagline b:nth-child(1){color:var(--petrol)}.identity-tagline b:nth-child(2){color:var(--aqua)}.identity-tagline b:nth-child(3){color:var(--sage)}
.login-access{display:grid;place-items:center;padding:clamp(2rem,6vw,7rem);background:transparent}
.login-card{width:min(100%,32rem);display:flex;flex-direction:column;animation:fadeUp .65s .08s var(--smooth) both}.mobile-brand{display:none;margin-bottom:2.5rem;align-items:center;color:var(--petrol)}.mobile-brand span{font-size:2.1rem;font-weight:300;letter-spacing:.14em}
.login-card h2{margin:0 0 2.8rem;font-family:var(--font-display);font-size:clamp(2.5rem,4.5vw,4rem);font-weight:300;line-height:1;letter-spacing:.06em;color:var(--petrol)}
.login-card label{margin:1rem 0 .65rem;color:var(--petrol);font-size:.72rem;font-weight:600;letter-spacing:.27em;text-transform:uppercase}
.login-card input{width:100%;padding:1.15rem 1.25rem;border:1px solid rgba(15,61,70,.2);border-radius:.8rem;background:rgba(255,255,255,.22);color:var(--ink);font-size:.9rem;box-shadow:none;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.login-card input::placeholder{color:#a7aaa7}.login-card input:focus{border-color:var(--aqua);outline:none;box-shadow:0 0 0 4px rgba(54,194,198,.11);transform:translateY(-1px)}
.login-card button{margin-top:2.2rem;padding:1.15rem;border:0;border-radius:.75rem;background:var(--petrol);color:white;font-size:.78rem;font-weight:600;letter-spacing:.25em;text-transform:uppercase;cursor:pointer;box-shadow:0 12px 28px rgba(15,61,70,.14);transition:transform .35s var(--spring),box-shadow .25s ease}.login-card button:hover{transform:translateY(-2px) scale(1.01);box-shadow:0 17px 34px rgba(15,61,70,.2)}.login-card button:active{transform:scale(.98)}
.login-help{margin:1.25rem 0 0;text-align:center;color:#98a09d;font-size:.68rem;letter-spacing:.04em}.alert-error{margin:0 0 .8rem;padding:.8rem 1rem;border-left:3px solid var(--coral);border-radius:.35rem;background:#fcece8;color:var(--error);font-size:.8rem}

/* App */
.chat-body{height:100dvh;overflow:hidden;background:var(--ivory)}.app-shell{height:100%;display:grid;grid-template-columns:minmax(18rem,27rem) minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.side-panel{position:relative;overflow:hidden;display:flex;flex-direction:column;padding:2.25rem clamp(1.6rem,3vw,3rem);color:white;background:radial-gradient(circle at 75% 15%,rgba(54,194,198,.2),transparent 28%),linear-gradient(155deg,var(--petrol-deep),var(--petrol))}.side-panel::after{content:"";position:absolute;width:34rem;height:34rem;right:-19rem;bottom:-17rem;border:1px solid rgba(123,230,223,.2);border-radius:50%;box-shadow:0 0 0 4rem rgba(123,230,223,.025),0 0 0 8rem rgba(123,230,223,.02)}
.brand-lockup{position:relative;z-index:1;display:flex;align-items:center;gap:.8rem;color:white;text-decoration:none}.brand-mark{display:grid;width:3.2rem;height:3.2rem;place-items:center;border:1px solid rgba(255,255,255,.16);border-radius:1rem;background:rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.12)}.brand-mark img{width:2.45rem;height:2.45rem;filter:brightness(0) invert(1)}.brand-word{font-family:var(--font-display);font-size:1.3rem;font-weight:750;letter-spacing:.26em}
.side-copy{position:relative;z-index:1;margin:auto 0}.side-copy .eyebrow{color:#78ded9}.side-copy h1{margin:1rem 0 1.35rem;font-family:var(--font-display);font-size:clamp(2.25rem,3.4vw,4rem);font-weight:620;line-height:.98;letter-spacing:-.05em}.side-copy h1 em{color:#a3e4d5;font-family:Georgia,serif;font-weight:400}.side-copy p{max-width:25rem;margin:0;color:rgba(255,255,255,.62);font-size:.96rem;line-height:1.7}
.trust-note{position:relative;z-index:1;display:flex;align-items:center;gap:.8rem;padding-top:1.3rem;border-top:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.58);font-size:.7rem;line-height:1.45}.trust-note span:last-child{display:flex;flex-direction:column}.trust-note strong{color:white;font-size:.74rem;font-weight:650}.trust-pulse{width:.6rem;height:.6rem;border-radius:50%;background:#71ddca;box-shadow:0 0 0 .3rem rgba(113,221,202,.12)}
.chat-workspace{min-width:0;display:flex;height:100%;flex-direction:column;background:radial-gradient(circle at 80% 0,rgba(155,183,154,.13),transparent 27%),var(--ivory)}
.chat-top{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;min-height:5.25rem;padding:.85rem clamp(1rem,3vw,2.6rem);border-bottom:1px solid var(--line);background:rgba(250,247,242,.82);backdrop-filter:blur(18px) saturate(140%)}
.assistant{display:flex;align-items:center;gap:.8rem}.avatar-wrap{position:relative;display:block}.assistant-face{display:block;width:3rem;height:3rem;border-radius:1rem;object-fit:cover;box-shadow:var(--shadow-soft)}.avatar-wrap i{position:absolute;right:-.1rem;bottom:-.05rem;width:.72rem;height:.72rem;border:2px solid var(--ivory);border-radius:50%;background:#55c9a7}.assistant-meta{display:flex;flex-direction:column;gap:.16rem}.assistant-meta .brand{font-family:var(--font-display);font-size:.92rem;font-weight:800;letter-spacing:.18em}.assistant-meta .status{color:var(--muted);font-size:.72rem}
.user-area{display:flex;align-items:center;gap:1rem}.user-name{font-size:.8rem;font-weight:650}.logout-link{position:relative;color:var(--petrol);font-size:.76rem;font-weight:750;text-decoration:none}.logout-link::after{content:"";position:absolute;left:0;right:0;bottom:-.25rem;height:1px;background:var(--aqua);transform:scaleX(0);transform-origin:left;transition:transform .25s ease}.logout-link:hover::after{transform:scaleX(1)}
.thread{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:1.1rem;padding:clamp(1.5rem,4vw,3.5rem) max(clamp(1rem,7vw,7rem),calc((100% - 58rem)/2));scrollbar-width:thin;scrollbar-color:rgba(8,63,70,.18) transparent}
.welcome{max-width:47rem;margin:auto auto 1.4rem;text-align:center;animation:fadeUp .55s var(--smooth) both}.welcome-kicker{color:var(--aqua)}.welcome h2{margin:.75rem 0 .7rem;font-family:var(--font-display);font-size:clamp(2rem,4vw,3.6rem);font-weight:620;line-height:1.02;letter-spacing:-.05em;text-wrap:balance}.welcome>p{max-width:39rem;margin:0 auto;color:var(--muted);font-size:.95rem;line-height:1.65;text-wrap:pretty}
.suggestions{display:grid;grid-template-columns:repeat(3,1fr);gap:.65rem;margin-top:1.8rem;text-align:left}.suggestions button{display:flex;min-height:4.25rem;align-items:flex-end;justify-content:space-between;gap:.75rem;padding:.9rem;border:1px solid var(--line);border-radius:.7rem;background:rgba(255,255,255,.6);color:var(--ink);font-size:.75rem;font-weight:650;line-height:1.3;text-align:left;cursor:pointer;box-shadow:inset 0 1px 0 white;transition:transform .35s var(--spring),background .2s ease,box-shadow .2s ease}.suggestions button span{color:var(--aqua);font-size:1rem}.suggestions button:hover{transform:translateY(-4px);background:white;box-shadow:var(--shadow-soft)}.suggestions button:active{transform:scale(.98)}
.row{display:flex;align-items:flex-end;gap:.65rem;max-width:min(86%,48rem);animation:messageIn .42s var(--smooth) both}.row.bot{align-self:flex-start}.msg-face{width:2rem;height:2rem;flex:0 0 auto;border-radius:.7rem;object-fit:cover;box-shadow:0 5px 16px rgba(8,63,70,.1)}.msg{max-width:min(82%,45rem);padding:.85rem 1rem;border-radius:1.1rem;font-size:.9rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.row .msg{max-width:100%}.msg.bot{align-self:flex-start;border-bottom-left-radius:.3rem;background:white;color:var(--ink);box-shadow:0 6px 24px rgba(8,63,70,.07)}.msg.user{align-self:flex-end;border-bottom-right-radius:.3rem;background:var(--petrol);color:white;box-shadow:0 9px 22px rgba(8,63,70,.16)}.msg.error{border-left:3px solid var(--coral);background:#fcece8;color:var(--error)}
.msg.typing{display:flex;align-items:center;gap:.28rem;min-width:4.2rem;color:transparent;--dot:#8ca09c}.msg.typing::before,.msg.typing::after{content:""}.msg.typing::before,.msg.typing::after,.msg.typing span{width:.38rem;height:.38rem;border-radius:50%;background:var(--dot);animation:dotPulse 1.15s ease-in-out infinite}.msg.typing::after{animation-delay:.28s}.msg.typing span{animation-delay:.14s}
.composer-dock{position:relative;z-index:2;padding:.75rem max(clamp(1rem,7vw,7rem),calc((100% - 58rem)/2)) calc(.85rem + env(safe-area-inset-bottom));background:linear-gradient(180deg,rgba(250,247,242,0),var(--ivory) 28%)}
.composer{display:flex;align-items:flex-end;gap:.65rem;padding:.55rem .55rem .55rem 1rem;border:1px solid rgba(8,63,70,.14);border-radius:1.15rem;background:rgba(255,255,255,.9);box-shadow:0 16px 40px rgba(8,63,70,.11),inset 0 1px 0 white;backdrop-filter:blur(16px);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.composer:focus-within{border-color:rgba(54,194,198,.75);box-shadow:0 18px 42px rgba(8,63,70,.13),0 0 0 4px rgba(54,194,198,.1);transform:translateY(-1px)}.composer textarea{flex:1;min-height:2.75rem;max-height:8rem;padding:.72rem 0;border:0;outline:0;resize:none;background:transparent;color:var(--ink);font-size:1rem;line-height:1.35}.composer textarea::placeholder{color:#94a39f}.composer button{display:grid;width:2.8rem;height:2.8rem;flex:0 0 auto;place-items:center;border:0;border-radius:.85rem;background:var(--petrol);color:white;cursor:pointer;box-shadow:0 7px 17px rgba(8,63,70,.2);transition:transform .35s var(--spring),opacity .2s ease}.composer button svg{width:1.2rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.composer button:hover{transform:scale(1.06) rotate(-2deg)}.composer button:active{transform:scale(.94)}.composer button:disabled{opacity:.42;cursor:wait;transform:none}.composer-note{margin:.5rem 0 0;text-align:center;color:#91a09c;font-size:.66rem}
.chat-body.is-chatting .welcome,.chat-body.is-chatting .intro-message{display:none}
@keyframes fadeUp{from{opacity:0;transform:translateY(1.35rem)}to{opacity:1;transform:translateY(0)}}@keyframes messageIn{from{opacity:0;transform:translateY(.65rem) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes dotPulse{0%,60%,100%{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-.18rem)}}
@media(max-width:900px){.login-shell{grid-template-columns:1fr}.login-brand{display:none}.login-access{min-height:100dvh}.mobile-brand{display:flex}.app-shell{grid-template-columns:1fr}.side-panel{display:none}.thread{padding-top:2rem}.chat-top{min-height:4.8rem}.suggestions{grid-template-columns:1fr}.suggestions button{min-height:3.35rem;align-items:center}.welcome{margin-top:auto}.user-name{display:none}}
@media(max-width:560px){.login-access{padding:1.35rem}.mobile-brand{margin-bottom:2rem}.login-card h2{font-size:2.5rem}.chat-top{padding:.7rem .85rem}.assistant-face{width:2.7rem;height:2.7rem}.logout-link{padding:.55rem}.thread{padding:1.35rem .85rem}.welcome h2{font-size:2.15rem}.welcome>p{font-size:.88rem}.suggestions{margin-top:1.25rem}.row{max-width:95%}.msg{font-size:.88rem}.composer-dock{padding:.65rem .7rem calc(.7rem + env(safe-area-inset-bottom))}.composer-note{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
.attach-btn{display:grid;width:2.8rem;height:2.8rem;flex:0 0 auto;place-items:center;border:0;border-radius:.85rem;background:transparent;color:var(--petrol);cursor:pointer;transition:background .2s ease,transform .2s ease}
.attach-btn svg{width:1.25rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.attach-btn:hover{background:rgba(8,63,70,.07)}
.attach-btn:active{transform:scale(.94)}
.attach-btn:disabled{opacity:.42;cursor:wait}
.confirm-card{display:flex;flex-direction:column;align-items:flex-start}
.confirm-btn{margin-top:.7rem;padding:.55rem 1rem;border:0;border-radius:.7rem;background:var(--petrol);color:white;font-weight:650;font-size:.82rem;cursor:pointer;box-shadow:0 6px 16px rgba(8,63,70,.16);transition:transform .2s ease,opacity .2s ease}
.confirm-btn:hover{transform:translateY(-1px)}
.confirm-btn:disabled{opacity:.5;cursor:default;transform:none}
.voice-toggle{display:grid;width:2.6rem;height:2.6rem;flex:0 0 auto;place-items:center;border:0;border-radius:.7rem;background:transparent;color:var(--muted);cursor:pointer;transition:background .2s ease,color .2s ease,transform .2s ease}
.voice-toggle svg{width:1.3rem;height:1.3rem;fill:currentColor}
.voice-toggle svg .wave{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;opacity:0;transition:opacity .2s ease}
.voice-toggle:hover{background:rgba(8,63,70,.07)}
.voice-toggle:active{transform:scale(.94)}
.voice-toggle.is-on{color:var(--petrol);background:rgba(54,194,198,.12)}
.voice-toggle.is-on svg .wave{opacity:1}
