:root{--color-primary: #3E6B57;--color-primary-hover: #345A49;--color-primary-soft: #E2EDE7;--color-bg: #FBFAF7;--color-surface: #FFFFFF;--color-border: #EAE6DE;--color-text: #2A2925;--color-text-soft: #6F6B62;--color-bubble-user: var(--color-primary);--color-bubble-user-text: #FFFFFF;--color-bubble-agent: #F4F3EF;--color-bubble-agent-text: var(--color-text);--color-danger: #DC2626;--color-success: #16A34A;--font-body: "Hanken Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--text-xs: 13px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--leading-body: 1.55;--leading-tight: 1.2;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-bubble: 20px;--radius-pill: 999px;--shadow-soft: 0 1px 2px rgba(40, 36, 30, .05), 0 2px 8px rgba(40, 36, 30, .05)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);background:var(--color-bg);color:var(--color-text);font-size:var(--text-base);line-height:var(--leading-body);-webkit-font-smoothing:antialiased}.loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--color-text-soft);font-size:var(--text-sm)}.login-page,.auth-container{--auth-ink: #2A2925;--auth-ink-soft: #6F6B62;--auth-paper: #F6F4EF;--auth-panel: rgba(255, 255, 255, .68);--auth-panel-border: rgba(40, 36, 30, .08);position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:clamp(var(--space-6),5vw,var(--space-12)) var(--space-5);overflow:hidden;font-family:"Hanken Grotesk",var(--font-body);color:var(--auth-ink);background:radial-gradient(115% 85% at 6% -8%,#fdf7e1,#fdf7e100 50%),radial-gradient(120% 95% at 100% 106%,#e2eddb,#e2eddb00 50%),radial-gradient(140% 130% at 50% 35%,#FCFBF7 0%,var(--auth-paper) 100%)}.login-page:before,.auth-container:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.login-content{position:relative;z-index:1;width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center}.login-hero{text-align:center;margin-bottom:var(--space-8);animation:authRise .7s cubic-bezier(.22,.61,.36,1) both}.login-hero-title{font-family:Fraunces,Georgia,serif;font-optical-sizing:auto;font-weight:500;font-size:clamp(2.1rem,7vw,3rem);line-height:1.04;letter-spacing:-.015em;color:var(--auth-ink);text-wrap:balance;margin:0 0 var(--space-3)}.login-hero-subtitle{font-family:Fraunces,Georgia,serif;font-style:italic;font-weight:400;font-size:clamp(1.05rem,3.4vw,1.3rem);line-height:1.4;color:var(--auth-ink-soft);text-wrap:balance;margin:0}.login-form-section,.auth-container{position:relative}.login-form-section,.auth-card{position:relative;z-index:1;width:100%;max-width:420px;background:var(--auth-panel);backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);border:1px solid var(--auth-panel-border);border-radius:var(--radius-lg);padding:clamp(var(--space-6),4vw,var(--space-8));box-shadow:inset 0 1px #fffc,0 18px 48px -30px #28241e47;animation:authRise .7s cubic-bezier(.22,.61,.36,1) .12s both}.auth-card{text-align:center}.auth-card h2{font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(1.5rem,4.5vw,1.875rem);letter-spacing:-.015em;color:var(--auth-ink);margin-bottom:var(--space-6);line-height:var(--leading-tight)}.auth-card form,.auth-card .auth-switch,.auth-card .error-message{text-align:left}.login-page .form-group label,.auth-container .form-group label{font-weight:600;letter-spacing:.01em;color:var(--auth-ink)}.login-page .form-group input,.auth-container .form-group input{padding:13px 16px;border-radius:var(--radius-md);border:1px solid rgba(40,36,30,.14);background:#ffffffd9;color:var(--auth-ink);font-family:"Hanken Grotesk",var(--font-body);transition:border-color .18s,box-shadow .18s,background .18s}.login-page .form-group input::placeholder,.auth-container .form-group input::placeholder{color:var(--auth-ink-soft);opacity:.7}.login-page .form-group input:focus,.auth-container .form-group input:focus{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 4px var(--color-primary-soft)}.login-page .btn-primary,.auth-container .btn-primary{padding:13px;border-radius:var(--radius-md);font-family:"Hanken Grotesk",var(--font-body);font-weight:600;letter-spacing:.01em;background:var(--color-primary);box-shadow:none;transition:background .18s ease}.login-page .btn-primary:hover:not(:disabled),.auth-container .btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.login-page .auth-switch,.auth-container .auth-switch,.login-page .field-hint,.auth-container .field-hint,.login-page .hint,.auth-container .hint{color:var(--auth-ink-soft)}@keyframes authRise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){.login-hero,.login-form-section,.auth-card{animation:none}}.form-group{margin-bottom:var(--space-4)}.form-group label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--color-text);margin-bottom:var(--space-1)}.form-group input{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-base);font-family:var(--font-body);color:var(--color-text);background:var(--color-surface);outline:none;transition:border-color .15s,box-shadow .15s}.form-group input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.btn-primary{width:100%;padding:12px;background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-sm);font-size:var(--text-base);font-weight:600;font-family:var(--font-body);cursor:pointer;margin-top:var(--space-2);transition:background .15s;min-height:44px}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.error-message{background:#fef2f2;color:var(--color-danger);padding:10px 14px;border-radius:var(--radius-sm);font-size:var(--text-sm);margin-bottom:var(--space-4);border:1px solid #FECACA}.auth-switch{text-align:center;margin-top:var(--space-5);font-size:var(--text-sm);color:var(--color-text-soft)}.auth-switch a{color:var(--color-primary);text-decoration:none;font-weight:500}.auth-switch a:hover{text-decoration:underline}.hint{color:var(--color-text-soft);font-weight:400}.field-hint{display:block;font-size:var(--text-xs);color:var(--color-text-soft);margin-top:var(--space-1)}.chat-layout{display:flex;flex-direction:column;height:100vh;background:radial-gradient(125% 55% at 50% -12%,#fcf4e6,#fcf4e600 55%),radial-gradient(100% 60% at 92% 112%,#edf2e8,#edf2e800 55%),var(--color-bg);background-attachment:fixed}.chat-header{background:var(--color-surface);border-bottom:1px solid var(--color-border);box-shadow:0 2px 8px #28241e0f;flex-shrink:0;z-index:10;padding:0 var(--space-4)}.chat-header-inner{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:80px;max-width:1460px;margin:0 auto;width:100%}.chat-header-left{display:flex;align-items:center}.chat-header-center{display:flex;flex-direction:column;align-items:center;gap:5px}.chat-agent-avatar{width:42px;height:42px;border-radius:var(--radius-pill);object-fit:cover}.chat-header-right{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3)}.chat-username{font-size:var(--text-sm);color:var(--color-text-soft);max-width:32vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-logout{padding:6px 14px;background:transparent;border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--text-sm);font-family:var(--font-body);color:var(--color-text);cursor:pointer;transition:background .15s;min-height:32px}.btn-logout:hover{background:var(--color-bg)}.message-list{flex:1;overflow-y:auto;padding:var(--space-6) var(--space-4);display:flex;flex-direction:column;gap:10px}.session-divider{display:flex;align-items:center;gap:var(--space-3);max-width:720px;width:100%;margin:var(--space-5) auto var(--space-2)}.session-divider:before,.session-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.session-divider span{font-family:Fraunces,Georgia,serif;font-style:italic;font-size:var(--text-sm);color:var(--color-text-soft);white-space:nowrap;opacity:.8}.chat-empty{max-width:720px;width:100%;margin:auto auto 0;text-align:center;color:var(--color-text-soft);font-family:Fraunces,Georgia,serif;font-style:italic;font-size:var(--text-lg);padding:var(--space-8) 0}.message{display:flex;max-width:720px;width:100%;margin-left:auto;margin-right:auto}.message.user{justify-content:flex-end}.message.assistant{justify-content:flex-start}.bubble{padding:10px var(--space-4);border-radius:var(--radius-bubble);font-size:var(--text-base);line-height:var(--leading-body);white-space:pre-wrap;word-break:break-word;max-width:75%}.message.user .bubble{background:var(--color-bubble-user);color:var(--color-bubble-user-text);border-bottom-right-radius:4px}.message.assistant .bubble{background:var(--color-bubble-agent);color:var(--color-bubble-agent-text);border:1px solid rgba(40,36,30,.07);border-bottom-left-radius:4px}.message.assistant .bubble p{margin:0 0 .3em}.message.assistant .bubble p:last-child{margin-bottom:0}.message.assistant .bubble ul,.message.assistant .bubble ol{margin:.25em 0 0 1.25em;padding:0}.message.assistant .bubble li{margin:0;padding:0;display:list-item}.message.assistant .bubble li p{display:contents}.message.assistant .bubble strong{font-weight:600}.message.assistant .bubble em{font-style:italic}.bubble-error{background:#fef2f2!important;color:var(--color-danger)!important;border:1px solid #FECACA}.typing-cursor{display:inline-block;animation:blink .75s step-start infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@media (prefers-reduced-motion: reduce){.typing-cursor{animation:none}}.chat-input-area{padding:var(--space-3) var(--space-4);background:var(--color-surface);border-top:1px solid var(--color-border);box-shadow:0 -2px 8px #28241e0f;flex-shrink:0}.chat-input-wrapper{display:flex;align-items:flex-end;gap:var(--space-2);max-width:720px;margin:0 auto}.chat-input-wrapper textarea{flex:1;padding:10px 14px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);font-family:var(--font-body);color:var(--color-text);background:var(--color-surface);line-height:var(--leading-body);resize:none;max-height:55vh;overflow-y:auto;outline:none;transition:border-color .15s,box-shadow .15s}.chat-input-wrapper textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.chat-input-wrapper textarea:disabled{background:var(--color-bg);cursor:not-allowed}.btn-send{padding:10px var(--space-5);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:600;font-family:var(--font-body);cursor:pointer;white-space:nowrap;transition:background .15s;flex-shrink:0;min-height:44px;min-width:44px}.btn-send:hover:not(:disabled){background:var(--color-primary-hover)}.btn-send:disabled{opacity:.5;cursor:not-allowed}.onboarding-container{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:2rem 1rem 4rem;overflow-y:auto}.onboarding-container--centered{align-items:center}.onboarding-card{background:#fff;border-radius:16px;width:100%;max-width:560px;box-shadow:0 4px 24px #28241e1a;overflow:hidden}.ob-progress-track{height:6px;background:#e5e7eb}.ob-progress-fill{height:100%;background:#3e6b57;transition:width .3s ease}.ob-body{padding:2rem}.ob-intro{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.25rem;padding-top:3rem;padding-bottom:3rem}.ob-welcome-title{font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(1.75rem,6vw,2.25rem);letter-spacing:-.015em;line-height:1.1;color:var(--color-text);text-wrap:balance}.ob-welcome-text{font-size:1rem;color:var(--color-text-soft);line-height:1.6;max-width:40ch}.ob-intro-btn{width:100%;max-width:320px;padding:.875rem 1rem;font-size:1rem;margin-top:.5rem}.ob-pick{text-align:center}.ob-pick-title{font-family:Fraunces,Georgia,serif;font-weight:500;font-size:clamp(1.5rem,5vw,1.875rem);letter-spacing:-.01em;color:var(--color-text);margin-bottom:.375rem}.ob-pick-subtitle{font-size:.9375rem;color:var(--color-text-soft);line-height:1.5;max-width:34ch;margin:0 auto 1.75rem}.ob-companion-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:1.5rem}.ob-companion-card{position:relative;display:flex;flex-direction:column;align-items:center;gap:.625rem;padding:1.25rem .75rem;border:1.5px solid var(--color-border);border-radius:16px;background:var(--color-surface);font-family:inherit;cursor:pointer;transition:border-color .15s,background .15s,transform .12s}.ob-companion-card:hover{border-color:#94bba9;background:#eef5f1}.ob-companion-card:active{transform:scale(.98)}.ob-companion-card.selected{border-color:var(--color-primary);border-width:2px;background:var(--color-primary-soft)}.ob-companion-card.selected:after{content:"✓";position:absolute;top:8px;right:8px;width:20px;height:20px;border-radius:50%;background:var(--color-primary);color:#fff;font-size:12px;line-height:20px;text-align:center}.ob-companion-img{width:100%;max-width:150px;aspect-ratio:1}.ob-bubble-row{display:flex;align-items:flex-start;gap:.875rem;margin-bottom:1.5rem}.ob-bubble-agent{display:flex;flex-direction:column;align-items:center;gap:.25rem;flex-shrink:0}.ob-bubble-avatar{width:44px;height:44px;border-radius:50%;object-fit:cover;border:2px solid #D7E5DD}.ob-speech-bubble{background:#f3f4f6;border-radius:0 16px 16px;padding:.875rem 1rem;font-size:1rem;font-weight:600;color:#111;line-height:1.45;flex:1}.ob-hint{font-size:.8125rem;color:#9ca3af;margin-bottom:.75rem}.ob-option-list{display:flex;flex-direction:column;gap:.5rem}.ob-option-chip{width:100%;padding:.75rem 1rem;border:1.5px solid #d1d5db;border-radius:10px;background:#fff;font-size:.9375rem;font-family:inherit;color:#374151;text-align:left;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.ob-option-chip:hover{border-color:#94bba9;background:#eef5f1}.ob-option-chip.selected{border-color:#3e6b57;background:#e2ede7;color:#3e6b57;font-weight:500}.ob-trait-chip{width:100%;padding:.75rem 1rem;border:1.5px solid #d1d5db;border-radius:10px;background:#fff;font-family:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s;display:flex;flex-direction:column;gap:.2rem}.ob-trait-chip:hover:not(:disabled){border-color:#94bba9;background:#eef5f1}.ob-trait-chip.selected{border-color:#3e6b57;background:#e2ede7}.ob-trait-chip.disabled{opacity:.4;cursor:not-allowed}.ob-trait-chip-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.ob-trait-locked{background:#e2ede7;border-color:#3e6b57;cursor:default;pointer-events:none}.ob-trait-locked .ob-trait-label{color:#3e6b57}.ob-locked-badge{font-size:.6875rem;font-weight:600;padding:2px 8px;background:#c5dace;color:#2a4a3c;border-radius:999px;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;flex-shrink:0}.ob-lock-icon{font-size:.8rem;margin-right:.2rem}.ob-trait-label{font-size:.9375rem;font-weight:600;color:#111}.ob-trait-chip.selected .ob-trait-label{color:#3e6b57}.ob-trait-desc{font-size:.8125rem;color:#6b7280;line-height:1.4}.ob-other-input{margin-top:1rem}.ob-q5-section{margin-bottom:1.5rem}.ob-q5-label{font-size:.9375rem;font-weight:500;color:#374151;margin-bottom:.625rem}.ob-years-input{max-width:140px}.ob-nav{display:flex;justify-content:flex-end;align-items:center;gap:.75rem;margin-top:2rem}.ob-btn-back{padding:.75rem 1.5rem;background:transparent;border:1.5px solid #d1d5db;border-radius:8px;font-size:.9375rem;font-family:inherit;color:#374151;cursor:pointer;transition:background .15s}.ob-btn-back:hover{background:#f9fafb}.ob-btn-next{width:auto;padding:.75rem 2rem;margin-top:0}.ob-error{margin-top:1rem}.ob-step-indicator{text-align:center;font-size:.8125rem;color:#9ca3af;margin-top:1rem}.sleep-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--color-bg);display:flex;align-items:center;justify-content:center;cursor:pointer;animation:fadeInSlow .7s ease}.sleep-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-5);-webkit-user-select:none;user-select:none}.sleep-avatar{width:135px;height:135px;border-radius:var(--radius-pill);object-fit:cover;border:3px solid var(--color-primary-soft);animation:softPulse 3.5s ease-in-out infinite}.sleep-label{font-size:var(--text-sm);color:var(--color-text-soft);letter-spacing:.02em}.sleep-hint{font-size:var(--text-xs);color:var(--color-text-soft);letter-spacing:.03em;margin-top:calc(-1 * var(--space-3))}.sleep-preparing{font-size:var(--text-xs);color:var(--color-text-soft);letter-spacing:.03em;margin-top:calc(-1 * var(--space-3));font-style:italic;animation:textBreathe 2.4s ease-in-out infinite}.mode-menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#f7f8fae0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:var(--space-4);animation:fadeIn .35s ease}.mode-menu-card{background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border);box-shadow:0 4px 24px #28241e14;padding:var(--space-8) var(--space-6);width:100%;max-width:480px;display:flex;flex-direction:column;align-items:center;gap:var(--space-5)}.mode-menu-avatar{width:52px;height:52px;border-radius:var(--radius-pill);object-fit:cover;border:2px solid var(--color-primary-soft)}.mode-menu-heading{font-family:Fraunces,Georgia,serif;font-size:var(--text-2xl);font-weight:500;letter-spacing:-.01em;color:var(--color-text);text-align:center;line-height:var(--leading-tight)}.mode-menu-options{display:flex;flex-direction:column;gap:var(--space-2);width:100%}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInSlow{0%{opacity:0}to{opacity:1}}@keyframes softPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.72;transform:scale(.965)}}@keyframes textBreathe{0%,to{opacity:.5}50%{opacity:1}}@media (prefers-reduced-motion: reduce){.sleep-overlay,.mode-menu-overlay,.sleep-avatar,.sleep-preparing{animation:none}}@media (max-width: 639px){.auth-card{padding:var(--space-6) var(--space-4)}}
