/* Emolyn: shared tokens, accessible primitives, and page compositions. */
:root{--bg:#faf8f3;--bg-2:#faf8f3;--brand-band:#f0edf8;--brand-panel:#e8e2f4;--brand-paper:#fffefa;--page-gutter:40px;--content-width:1280px;--surface:#fff;--ink:#242538;--ink-soft:#5d5e70;--violet:#5545ba;--violet-deep:#45359f;--violet-soft:#eeebf8;--navy:#242538;--teal:#357565;--teal-strong:#285f51;--teal-soft:#e7eee8;--pink:#ad4174;--coral:#a43e2b;--coral-soft:#f7e6e0;--sun:#e3b954;--line:#dcdbe1;--eye-glow:#91f1d0;--radius-lg:20px;--shadow-soft:0 8px 28px #24253809;--shadow:var(--shadow-soft)}
*,*::before,*::after{box-sizing:border-box}
.page-landing .inclusive-subtitle{display:block;font-size:18px;line-height:1.6;letter-spacing:0;margin:24px 0 0;font-weight:600}body{margin:0;font-family:"Nunito",system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:16px}h1,h2,h3,h4,p{margin-top:0}button,input,select,textarea{font-family:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}a{color:var(--violet);text-underline-offset:4px}button,a{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--violet);outline-offset:4px}.skip-link{position:fixed;left:16px;top:-100px;z-index:1000;background:var(--ink);color:#fff;padding:12px 20px;border-radius:8px}.skip-link:focus{top:12px}[hidden]{display:none!important}.logo{display:inline-flex;align-items:center;gap:0;color:var(--ink);font-size:30px;font-weight:900;text-decoration:none;letter-spacing:-1.5px}.logo .dot{color:var(--violet)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:14px;padding:13px 22px;min-height:46px;font-size:15px;font-weight:800;text-decoration:none;border-radius:999px;border:1px solid transparent;transition:background .15s,transform .15s}.btn-primary,.btn-nav{background:var(--violet);color:white;box-shadow:none}.btn-primary:hover,.btn-nav:hover{background:var(--violet-deep);transform:translateY(-1px)}.btn-ghost,.btn-secondary{background:transparent;border-color:var(--line);color:var(--ink)}.btn-ghost:hover,.btn-secondary:hover{background:#eae8ee}.btn-danger{color:var(--coral);border-color:#d8b5ae;background:#faf0ed;box-shadow:none}.section-kicker{font-size:12px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase;color:var(--violet);margin-bottom:16px}::selection{background:#dfdaf3;color:var(--ink)}
/* Auth: one recognisable arrival, with the form always available. */
.page-login,.page-signup{height:auto;min-height:100vh;overflow:auto;background:var(--brand-band)}.page-login .wrapper,.page-signup .wrapper{height:auto;min-height:calc(100vh - 89px);max-width:1160px;margin:auto;padding:56px 28px;display:grid;grid-template-columns:1fr 1fr;gap:90px;align-items:center}.auth-story{max-width:440px;align-self:start;position:sticky;top:54px;padding-top:50px}.auth-story h2{font-size:clamp(54px,6vw,80px);font-weight:800;line-height:1.02;letter-spacing:-3px;margin:24px 0}.auth-story>p:not(.section-kicker){font-size:19px;color:var(--ink-soft);line-height:1.7}.auth-story>a{font-size:15px;font-weight:800}.page-login .card,.page-signup .card{max-width:none;background:var(--brand-paper);border:1px solid var(--line);border-radius:22px;padding:36px;box-shadow:0 18px 50px #24253807;animation:none}.page-login .brand,.page-signup .brand{align-items:flex-start;gap:10px}.brand .brand-face{animation:none;box-shadow:none;margin-bottom:8px}.brand-face i{animation:none}.page-login .brand h1,.page-signup .brand h1{font-size:32px;letter-spacing:-1px}.page-login .brand p,.page-signup .brand p{font-size:16px;line-height:1.6}.page-login .field label,.page-signup .field label{text-transform:none;letter-spacing:0;color:var(--ink);font-size:14px}.field input,.field select{border:1px solid #c6c4cf;border-radius:9px;font-size:16px;font-weight:600;min-height:48px;padding:11px 13px}.field input:focus,.field select:focus{border-color:var(--violet);box-shadow:0 0 0 3px #5545ba12}.go-btn,.submit-btn{background:var(--violet);border-radius:10px;box-shadow:none;font-size:16px}.go-btn:hover,.submit-btn:hover{background:var(--violet-deep);box-shadow:none;filter:none}.page-signup .field-row{display:block}.hint,.grownup-note,.page-signup .check-row{font-size:14px;line-height:1.6}.page-signup .info-note{border:1px solid var(--line);border-radius:12px;background:#f7f6fb;padding:18px}.info-note li{font-size:14px;line-height:1.6}.password-wrap{display:flex;border:1px solid #c6c4cf;border-radius:9px;overflow:visible}.password-wrap input{border:0;min-width:0;flex:1}.password-toggle{background:transparent;border:0;color:var(--violet);padding:0 12px;font-size:13px;min-width:58px}.error-msg{background:#fcf0eb;color:var(--coral);border-radius:8px;padding:12px;font-size:14px;line-height:1.5;animation:none}.optional{color:var(--ink-soft);font-weight:400}
/* App: a quiet companion panel beside a roomy conversation. */
.page-index{background:var(--bg)}.page-index .app{height:100dvh;background:var(--bg)}.page-index header{background:var(--bg);border-bottom:1px solid var(--line);backdrop-filter:none;padding:16px 30px;min-height:78px}.page-index .logo{font-size:25px}.end-chat-btn{min-height:42px;border-radius:9px;font-size:14px;box-shadow:none}.end-chat-btn{background:var(--violet);color:white}.page-index .face-panel{width:300px;background:#eeedf3;border-right:1px solid var(--line);padding:30px;gap:20px}.face-panel::after,.face-panel::before{display:none}.face-panel-title{order:-1;font-size:14px;color:var(--ink-soft);font-weight:700;text-align:center}.face-panel .robot-bezel{padding:8px;border-radius:26px;background:linear-gradient(145deg,#fff,#d2d0de);box-shadow:0 12px 20px #24253814}.face-panel .robot-screen{border-radius:20px}.face-panel .status-text{font-size:14px;background:#fff;border:1px solid var(--line);padding:9px 14px;border-radius:24px;line-height:1.5;white-space:normal;text-align:center}.page-index .chat-panel{min-width:0;background:var(--bg)}.page-index .chat-area{padding:36px max(28px,calc((100% - 800px)/2));scroll-behavior:auto}.page-index .empty-state{max-width:650px;margin:auto;align-items:stretch;justify-content:center;text-align:left;gap:14px}.empty-state h1{font-size:clamp(30px,3vw,42px);letter-spacing:-1.4px;font-weight:800;line-height:1.1}.page-index .empty-state>p{font-size:16px;color:var(--ink-soft);line-height:1.7}.page-index .empty-state>.section-kicker{font-size:12px;letter-spacing:.9px;color:var(--violet);margin-bottom:0}.page-index .starter-chips{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px;max-width:none}.page-index .chip{padding:19px 20px;border:1px solid var(--line);background:#fff;border-radius:12px;color:var(--ink);font-size:15px;font-weight:700;text-align:left;line-height:1.5;box-shadow:none}.page-index .chip:hover{background:#eeebf7;border-color:#b7addc;transform:translateY(-2px)}.page-index .empty-state>.starter-hint{font-size:13px;margin-top:0}.page-index .input-area{border-top:1px solid var(--line);padding:16px max(28px,calc((100% - 800px)/2)) 18px;background:var(--bg)}.input-area::before{display:none}.page-index .input-row{gap:10px}.page-index textarea{border:1px solid #c9c6d2;border-radius:14px;background:#fff;font-size:16px;line-height:1.6;padding:13px 16px;max-height:160px}.send-btn{background:var(--violet);box-shadow:none;border-radius:12px}.send-btn:hover{background:var(--violet-deep)}.mic-btn{border-radius:12px}.sentiment-toggle{font-size:14px;color:var(--ink-soft);min-height:36px}.sentiment-toggle input{accent-color:var(--violet)}.composer-hint{font-size:12px;color:var(--ink-soft);line-height:1.5;margin:10px 0 0}.page-index .bubble{box-shadow:none;font-size:16px;line-height:1.7;border-radius:16px}.page-index .message.user .bubble{background:#ebe7f6;color:var(--ink)}.page-index .message.ai .bubble{background:#fff;border:1px solid var(--line);color:var(--ink)}.context-btn{min-height:44px;font-size:14px;border-radius:9px}.context-btn.primary{background:var(--violet);color:#fff}.continuity-card{border-color:var(--line);background:#fff}.break-card{background:#edf0e2}
/* Home and terms use the same surfaces and type hierarchy. */
.page-home{background:var(--bg)}.page-home>header,.page-terms>nav{background:var(--bg);border-color:var(--line);backdrop-filter:none;padding:18px 5vw}.page-home main{max-width:none;width:100%;padding:0}.page-home .home-band{background:var(--brand-band)}.page-home .home-content{max-width:var(--content-width);margin:auto;padding:0 var(--page-gutter) 64px}.page-home .hero{max-width:var(--content-width);margin:auto;background:transparent;border:0;box-shadow:none;border-radius:0;padding:40px var(--page-gutter)}.page-home .hero h1{font-size:44px;font-weight:800;letter-spacing:-1.6px}.page-home .hero-copy{font-weight:600}.home-start{margin-top:22px}.page-home .active-note{display:block;width:fit-content;background:#fff;color:var(--teal-strong);font-size:14px}.page-home .memory-panel{background:transparent;box-shadow:none;border-radius:14px;margin-top:40px;padding:0 26px}.memory-panel>summary{font-size:20px;font-weight:800;cursor:pointer;padding:24px 0;line-height:1.5}.memory-panel>summary span{display:block;font-size:14px;color:var(--ink-soft);font-weight:600;padding-top:4px}.memory-panel[open]{padding-bottom:28px}.page-home .summary-card{box-shadow:none;border:1px solid var(--line);border-radius:15px}.page-home .summary-card p{font-size:16px}.page-home .summary-kind{font-size:12px}.page-home .empty{border:1px dashed #c6c2d3;background:#fff;border-radius:16px}.page-home .count,.page-home .field,.page-home .feedback{font-size:14px}.page-home .btn-small{font-size:13px;min-height:40px}.memory-chip{border-radius:12px;max-width:100%;font-size:14px;overflow-wrap:anywhere}.forget-one{min-width:40px;min-height:40px;flex-shrink:0}.page-terms{background:var(--bg)}.page-terms .doc{max-width:920px}.page-terms .doc-card{box-shadow:none;border-radius:18px;padding:44px}.page-terms .doc h1{font-size:38px;letter-spacing:-1px;line-height:1.2}.page-terms .doc h2{font-size:21px}.page-terms .doc p,.page-terms .doc li{font-size:16px}.page-terms footer{font-size:14px;background:var(--bg)}
@media(max-width:1000px){.page-login .wrapper,.page-signup .wrapper{gap:40px}.page-index .face-panel{width:240px;padding:20px}.page-index .chat-area{padding:26px}.page-index .input-area{padding:14px 26px}.page-index .starter-chips{grid-template-columns:1fr}}
@media(max-width:767px){.page-login .wrapper,.page-signup .wrapper{display:block;padding:28px 5vw;min-height:0}.auth-story{display:none}.page-login .card,.page-signup .card{max-width:500px;margin:auto;padding:28px 24px}.page-index header{padding:12px 16px;min-height:68px;gap:10px}.page-index .logo{font-size:21px}.end-chat-btn{padding:8px 10px;font-size:12px}.page-index .face-panel{width:100%;min-height:112px;height:112px;max-height:none;flex-direction:row;justify-content:center;gap:20px;border-right:0;border-bottom:1px solid var(--line);padding:12px 20px}.face-panel-title{display:none}.face-panel .robot-bezel{padding:5px;border-radius:19px}.face-panel .robot-screen{width:136px;height:78px;border-radius:14px}.face-panel .status-text{max-width:155px;margin:0;font-size:12px}.page-index .chat-area{padding:25px 20px}.page-index .empty-state{gap:12px;padding:12px 0}.page-index .empty-state>p{font-size:15px}.page-index .starter-chips{grid-template-columns:1fr 1fr;gap:8px}.page-index .chip{padding:14px 12px;font-size:13px}.page-index .input-area{padding:10px 16px max(12px,env(safe-area-inset-bottom))}.page-index .composer-hint{font-size:11px}.page-index .bubble{font-size:15px}.page-home>header{gap:12px;align-items:center}.page-home .logo{font-size:24px}.page-home .hero{padding:28px}.page-home .hero h1{font-size:34px}.page-home .section-head{flex-direction:column;align-items:flex-start;gap:8px}.page-home .memory-panel{padding-inline:20px}.page-home .check-field{align-items:flex-start}.page-home .check-field input{flex-shrink:0}.page-home .memory-panel>summary{font-size:18px}.page-terms .doc{padding:24px 5vw 48px}.page-terms .doc-card{padding:26px 22px}.page-terms .doc h1{font-size:30px}.page-terms .logo{font-size:24px}}
@media(max-width:380px){.page-index .starter-chips{grid-template-columns:1fr}.page-index .face-panel{height:98px;min-height:98px}.page-index .face-panel .robot-screen{height:64px;width:115px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.page-index .chat-panel{padding:0;min-height:0}

.page-index .end-chat-btn{border-color:var(--violet)}
.page-index .end-chat-btn:hover{background:var(--violet-deep);border-color:var(--violet-deep)}
.page-signup .field .hint{font-size:14px}
.page-landing .hero-face .robot-screen{height:clamp(190px,20vw,270px)}
@media(min-width:768px) and (max-width:1000px){.page-index .face-panel .robot-screen{width:190px;height:116px}}
@media(max-width:767px){.page-index .face-panel .robot-screen{min-height:0}.page-index .composer-hint{font-size:12px}}

/* Chat: one conversation with the face above it, always in view. */
.page-index .body { flex-direction:column; min-height:0; }
.page-index .face-panel {
  width:100%; height:auto; min-height:0; max-height:none;
  flex-direction:column; gap:8px; padding:14px 20px 12px;
  background:var(--bg); border-right:0; border-bottom:1px solid var(--line);
}
.page-index .face-panel-title { display:block; margin:0; font-size:14px; }
.page-index .face-panel .robot-bezel { padding:6px; border-radius:22px; }
.page-index .face-panel .robot-screen {
  width:220px; height:118px; min-height:0; border-radius:17px;
}
.page-index #eyesRow {
  flex:none; width:max-content; height:100%; gap:28px;
  justify-content:center; margin:0; padding:0;
}
.page-index .eye { flex:none; width:42px; }
.page-index .face-panel .status-text {
  max-width:none; margin:0; padding:0; border:0; background:transparent;
  font-size:14px; min-height:22px;
}
.page-index .chat-area { padding:24px max(24px,calc((100% - 860px)/2)); gap:22px; }
.page-index .input-area { padding:12px max(24px,calc((100% - 860px)/2)) max(12px,env(safe-area-inset-bottom)); }
.page-index .empty-state { max-width:760px; width:100%; padding:8px 0; gap:10px; }
.page-index .empty-state h1 { font-size:clamp(26px,3vw,34px); }
.page-index .starter-chips { grid-template-columns:1fr 1fr; gap:10px; margin-top:8px; }
.page-index .chip { padding:14px 16px; }
.page-index .message { align-items:flex-start; }
.page-index .message-author { font-size:14px; font-weight:800; color:var(--ink-soft); }
.page-index .message .ai-content, .page-index .message .user-content { min-width:0; max-width:88%; }
.page-index .message .avatar { margin-top:28px; }
.page-index .message.user .avatar { display:none; }
.page-index .message.ai .bubble { border-radius:4px 16px 16px; }
.page-index .message.user .bubble { border-radius:16px 4px 16px 16px; }
.page-index .bubble pre { max-width:100%; overflow-x:auto; white-space:pre; }
.page-index .bubble table { display:block; max-width:100%; overflow-x:auto; }
.page-index .input-row { border-radius:16px; padding:6px; box-shadow:none; }
.page-index .input-row:focus-within { border-color:var(--violet); box-shadow:0 0 0 3px #5545ba12; }
.page-index #userInput { min-width:0; border:0; background:transparent; }

@media(max-width:767px) {
  .page-index .face-panel { padding:8px 16px; gap:4px; }
  .page-index .face-panel-title { display:none; }
  .page-index .face-panel .robot-screen { width:148px; height:78px; }
  .page-index .face-panel .robot-bezel { padding:4px; border-radius:17px; }
  .page-index #eyesRow { gap:20px; }
  .page-index .eye { width:30px; }
  .page-index .chat-area { padding:18px 16px; }
  .page-index .input-area { padding:8px 12px max(8px,env(safe-area-inset-bottom)); }
  .page-index .message .ai-content { max-width:calc(100% - 44px); }
  .page-index .bubble { font-size:16px; }
  .page-index .chip { font-size:14px; padding:12px; }
  .page-index .empty-state>p { font-size:16px; }
}
@media(max-width:380px) {
  .page-index .starter-chips { grid-template-columns:1fr; }
}
/* Short windows and open mobile keyboards must leave room for the messages. */
@media(max-height:600px) {
  .page-index .face-panel { flex-direction:row; gap:12px; padding:6px 12px; }
  .page-index .face-panel-title { display:none; }
  .page-index .face-panel .robot-screen { width:108px; height:54px; }
  .page-index #eyesRow { gap:16px; }
  .page-index .eye { width:22px; }
  .page-index .face-panel .status-text { max-width:150px; font-size:13px; }
  .page-index .composer-hint { display:none; }
}

/* Explicit voice mode, with its stop action available throughout a reply. */
.page-index .voice-controls { display:flex; flex-direction:column; align-items:center; gap:4px; max-width:100%; }
.page-index .voice-toggle {
  width:auto; height:auto; min-height:40px; padding:8px 14px; gap:8px;
  color:var(--violet); border:1px solid var(--violet); border-radius:24px;
  font:800 14px "Nunito",sans-serif;
}
.page-index .voice-toggle svg { width:18px; height:18px; flex-shrink:0; }
.page-index .voice-toggle[aria-pressed="true"] { background:var(--violet); color:white; }
.page-index .voice-toggle[aria-pressed="true"] svg { fill:white; }
.page-index .voice-toggle.recording { animation:none; }
.page-index .voice-toggle.busy svg { animation:none; }
.page-index .voice-hint, .page-index .voice-status { margin:0; font-size:13px; line-height:1.4; color:var(--ink-soft); text-align:center; }
.page-index .voice-status:empty { display:none; }
@media(max-height:600px) {
  .page-index .face-panel { display:grid; grid-template-columns:auto minmax(0,1fr); column-gap:12px; row-gap:2px; justify-content:center; }
  .page-index .face-panel .robot-bezel { grid-column:1; grid-row:1 / 3; }
  .page-index .face-panel .status-text { grid-column:2; max-width:none; }
  .page-index .voice-controls { grid-column:2; }
  .page-index .voice-toggle { min-height:36px; padding:6px 10px; }
}

/* Companion positioning stays visible on compact authentication pages. */
.auth-story .auth-tagline { font-size:clamp(36px,4.2vw,58px); line-height:1.08; letter-spacing:-1.8px; color:var(--ink); }
.auth-tagline-mobile { display:none; }
@media(max-width:767px) {
  .brand .auth-tagline-mobile { display:block; font-size:17px; font-weight:800; color:var(--violet); margin-bottom:12px; }
}

.page-landing .account-name { font-size:14px; font-weight:700; }
.page-landing .account-chat { display:inline-flex; }

/* Shared gutters keep full-width backgrounds independent of readable content. */
@media(max-width:1100px){:root{--page-gutter:28px}}
@media(max-width:767px){:root{--page-gutter:20px}}

.auth-story > p + p { margin-top:20px; }
.auth-story > a { display:inline-flex; align-items:center; min-height:44px; margin-top:16px; }
