:root{--bg:#0b0e14;--bg-chat:#0f1420;--bubble-assistant:#1b2333;--bubble-user:linear-gradient(135deg, #5b7cfa, #3f5fe0);--accent:#5b7cfa;--accent-soft:#263150;--text:#eef1fa;--text-dim:#8d96b3;--danger:#ff6b6b;--online:#3ddc97;--border:#1f2635;font-family:Segoe UI,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text)}body.talk-view{overflow:hidden}textarea,input,button,select{font-family:inherit}.app{background:var(--bg-chat);border-left:1px solid var(--border);border-right:1px solid var(--border);flex-direction:column;max-width:560px;height:100dvh;margin:0 auto;display:flex;position:relative}.chat-header{border-bottom:1px solid var(--border);z-index:5;background:#111726;flex-shrink:0;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.chat-header__identity{align-items:center;gap:12px;display:flex}.chat-header__avatar{color:#fff;background:linear-gradient(135deg,#5b7cfa,#8f5bfa);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;font-size:.85rem;font-weight:700;display:flex;position:relative}.chat-header__dot{background:var(--text-dim);border:2px solid #111726;border-radius:50%;width:11px;height:11px;position:absolute;bottom:-2px;right:-2px}.chat-header__dot--connecting{background:#f2c94c;animation:1.2s infinite dotPulse}.chat-header__dot--ready{background:var(--online)}.chat-header__dot--listening{background:#ff6b6b;animation:1.2s infinite dotPulse}.chat-header__dot--thinking{background:#f2c94c}.chat-header__dot--speaking{background:#4cd3a5}@keyframes dotPulse{0%,to{opacity:1}50%{opacity:.4}}.chat-header__text h1{margin:0;font-size:1.05rem;font-weight:600}.chat-header__text p{color:var(--text-dim);margin:1px 0 0;font-size:.78rem}.icon-button{width:38px;height:38px;color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;transition:background .15s,color .15s;display:flex}.icon-button:hover{background:var(--accent-soft);color:var(--text)}.icon-button--active{background:var(--accent-soft);color:var(--accent)}.interests-overlay{z-index:20;background:#05070c8c;justify-content:flex-end;align-items:flex-start;display:flex;position:absolute;inset:0}.interests-panel{border:1px solid var(--border);background:#161d2d;border-radius:14px;width:min(320px,100% - 24px);margin:64px 12px 0 0;padding:16px;animation:.15s panelIn;box-shadow:0 12px 32px #00000073}@keyframes panelIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.interests-panel__header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.interests-panel__header h2{margin:0;font-size:1rem}.interests-panel__hint{color:var(--text-dim);margin:4px 0 10px;font-size:.8rem;line-height:1.4}.interests-panel textarea{resize:none;border:1px solid var(--accent-soft);width:100%;color:var(--text);background:#0f1420;border-radius:10px;padding:10px 12px;font-size:.88rem;line-height:1.4}.interests-panel textarea:focus{border-color:var(--accent);outline:none}.interests-panel__done{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;width:100%;margin-top:10px;padding:9px;font-size:.88rem;font-weight:600}.interests-panel__done:hover{background:#4a6bf0}.chat-main{flex-direction:column;flex:1;display:flex;overflow:hidden}.chat-messages{background-image:radial-gradient(circle at 20% 15%,#5b7cfa0f,#0000 40%),radial-gradient(circle at 80% 85%,#8f5bfa0d,#0000 40%);flex-direction:column;flex:1;gap:2px;padding:16px 12px;display:flex;overflow-y:auto}.chat-messages--empty{justify-content:center;align-items:center}.empty-state{text-align:center;color:var(--text-dim);padding:0 24px}.empty-state__icon{margin-bottom:8px;font-size:2.2rem}.empty-state p{margin:2px 0}.empty-state__sub{opacity:.8;font-size:.85rem}.msg-row{align-items:flex-end;gap:8px;max-width:100%;margin:3px 0;display:flex}.msg-row--user{justify-content:flex-end}.msg-row--assistant{justify-content:flex-start}.msg-avatar{color:#fff;background:linear-gradient(135deg,#5b7cfa,#8f5bfa);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.6rem;font-weight:700;display:flex}.msg-avatar--spacer{background:0 0}.msg-bubble{word-wrap:break-word;border-radius:16px;max-width:74%;padding:8px 12px;font-size:.93rem;line-height:1.42;position:relative}.msg-bubble--user{background:var(--bubble-user);color:#fff;border-bottom-right-radius:5px}.msg-bubble--assistant{background:var(--bubble-assistant);color:var(--text);border-bottom-left-radius:5px}.msg-bubble__text{white-space:pre-wrap;display:block}.msg-sources{color:var(--text-dim);margin-top:6px;font-size:.85em;display:block}.msg-sources a{color:inherit;text-decoration:underline}.msg-bubble--partial{opacity:.6}.mic-bar{border-top:1px solid var(--border);background:#111726;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;display:flex}.mic-bar__status{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:8px;min-width:0;font-size:.85rem;display:flex;overflow:hidden}.mic-bar__wave{flex-shrink:0;align-items:center;gap:2px;height:16px;display:inline-flex}.mic-bar__wave span{background:#ff6b6b;border-radius:2px;width:2.5px;height:100%;animation:.9s ease-in-out infinite wave}.mic-bar__wave span:first-child{animation-delay:0s}.mic-bar__wave span:nth-child(2){animation-delay:.1s}.mic-bar__wave span:nth-child(3){animation-delay:.2s}.mic-bar__wave span:nth-child(4){animation-delay:.3s}.mic-bar__wave span:nth-child(5){animation-delay:.4s}@keyframes wave{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.mic-button{cursor:pointer;color:#fff;background:var(--accent);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:54px;height:54px;transition:transform .12s,background .2s;display:flex;box-shadow:0 4px 14px #5b7cfa66}.mic-button:hover{transform:scale(1.04)}.mic-button--listening{background:#ff6b6b;animation:1.4s infinite micPulse;box-shadow:0 0 #ff6b6b80}.mic-button--thinking{background:#f2c94c}.mic-button--speaking{background:#4cd3a5}.mic-button__spinner{border:2.5px solid #fff6;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes micPulse{0%{box-shadow:0 0 #ff6b6b80}70%{box-shadow:0 0 0 14px #ff6b6b00}to{box-shadow:0 0 #ff6b6b00}}.connect-button{cursor:pointer;color:#fff;background:var(--accent);border:none;border-radius:23px;flex-shrink:0;height:46px;padding:0 22px;font-size:.95rem;font-weight:600;box-shadow:0 4px 14px #5b7cfa66}.connect-button:hover:not(:disabled){background:#4a6bf0}.connect-button:disabled{opacity:.55;cursor:default}.debug{border-top:1px solid var(--border);color:var(--text-dim);background:#0b0f19;flex-shrink:0;max-height:40%;padding:8px 16px;font-size:.75rem;overflow-y:auto}.debug__stats{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:2px 12px;margin:0;display:grid}.debug__stats div{justify-content:space-between;gap:8px;min-width:0;display:flex}.debug__stats dt{flex-shrink:0}.debug__stats dd{color:var(--text);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.debug__title{margin:6px 0 2px;font-weight:600}.debug__empty{margin:0}.debug__scroll{overflow-x:auto}.debug__turns{border-collapse:collapse;font-variant-numeric:tabular-nums;white-space:nowrap}.debug__turns th,.debug__turns td{text-align:right;padding:1px 10px 1px 0}.debug__turns th{font-weight:500}.debug__turns td{color:var(--text)}.app__error{color:var(--danger);text-align:center;background:#1a1016;border-top:1px solid #ff6b6b40;margin:0;padding:8px 16px;font-size:.82rem}.reminder-toast{z-index:15;border:1px solid var(--accent-soft);background:#1b2333;border-radius:12px;align-items:center;gap:10px;padding:10px 14px;animation:.15s panelIn;display:flex;position:absolute;top:70px;left:12px;right:12px;box-shadow:0 8px 24px #0006}.reminder-toast__icon{font-size:1.1rem}.reminder-toast__text{flex:1;font-size:.86rem}.reminder-toast__dismiss{color:var(--text-dim);cursor:pointer;background:0 0;border:none;padding:2px 4px;font-size:1rem}@media (width>=561px){.app{border-radius:18px;height:calc(100dvh - 32px);margin:16px auto;overflow:hidden;box-shadow:0 20px 60px #00000080}}.talk-panel{border-top:1px solid var(--border);background:#111726;flex-direction:column;flex-shrink:0;align-items:center;gap:10px;padding:12px 16px 16px;display:flex}.talk-panel__status{text-align:center;color:var(--text);align-items:center;gap:8px;margin:0;font-size:1.15rem;line-height:1.4;display:flex}.talk-panel__controls{align-items:center;gap:20px;display:flex}.talk-button{background:linear-gradient(160deg, #7c95ff, var(--accent));color:#fff;cursor:pointer;border:none;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:116px;height:116px;transition:transform .15s,box-shadow .15s;display:flex;box-shadow:0 0 0 6px #5b7cfa29,0 10px 24px #00000059}.talk-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 0 0 8px #5b7cfa38,0 12px 28px #0006}.talk-button:active:not(:disabled){transform:scale(.96)}.talk-button__label{letter-spacing:.02em;font-size:1.1rem;font-weight:700}.talk-button--listening{background:linear-gradient(160deg,#f07a7a,#d94c4c);animation:1.6s ease-in-out infinite pulse}.talk-button--thinking,.talk-button--speaking{background:linear-gradient(160deg,#5d6ea3,#46557f);box-shadow:0 0 0 6px #5d6ea329,0 10px 24px #00000059}.talk-button--muted,.talk-button:disabled{color:var(--text-dim);cursor:not-allowed;box-shadow:none;background:#2a3146}.mute-button{border:1px solid var(--border);min-width:96px;min-height:48px;color:var(--text);cursor:pointer;background:#ffffff0a;border-radius:999px;padding:0 20px;font-size:1.05rem;font-weight:600;transition:background .15s,border-color .15s}.mute-button:hover{border-color:var(--text-dim);background:#ffffff14}.mute-button[aria-pressed=true]{border-color:var(--danger);background:#3a1518}.talk-button:focus-visible,.mute-button:focus-visible{outline-offset:3px;outline:3px solid #ffd166}.connection-banner{color:#ffe2a8;text-align:center;background:#3a2a10;margin:0;padding:10px 16px;font-size:1.1rem}@keyframes pulse{0%,to{box-shadow:0 0 #e05a5a80}50%{box-shadow:0 0 0 14px #e05a5a00}}@media (prefers-reduced-motion:reduce){.talk-button--listening,.mic-bar__wave span{animation:none}}.wake-toggle{color:var(--text);align-items:center;gap:8px;font-size:1rem;display:flex}.wake-toggle input{width:20px;height:20px}.app--page{max-width:760px}.page{flex:1;padding:16px;overflow-y:auto}.page--narrow{justify-content:center;align-items:center;display:flex}.login{width:100%;max-width:380px}.login .field{margin-top:12px}.page-pad{padding:16px}.page-title{margin:0;font-size:1.3rem}.stack{flex-direction:column;gap:14px;display:flex}.nav{border-bottom:1px solid var(--border);background:#0f1420;flex-shrink:0;gap:4px;padding:6px 10px;display:flex}.nav__tab{color:var(--text-dim);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:6px;padding:7px 12px;font-size:.9rem;display:inline-flex}.nav__tab:hover:not(:disabled),.nav__tab--current{color:var(--text);background:var(--accent-soft)}.nav__signout{margin-left:auto}.nav__tab:disabled{opacity:.4;cursor:default}.badge{background:var(--danger);color:#fff;border-radius:999px;padding:1px 7px;font-size:.72rem;font-weight:600}.badge--ok{background:var(--online);color:#06281b;vertical-align:middle;margin-left:8px}.card{border:1px solid var(--border);background:#141b2a;border-radius:14px;padding:16px}.card h2{margin:0 0 10px;font-size:1.05rem}.card p{line-height:1.5}.card--form{border-color:var(--accent-soft)}.form-grid{gap:12px;display:grid}@media (width>=640px){.form-grid{grid-template-columns:1fr 1fr}:is(.form-grid>.form-group,.form-grid>.field:has(textarea),.form-grid>.field:has(.chips)){grid-column:1/-1}}.form-group{border:1px solid var(--border);border-radius:10px;gap:10px;margin:0;padding:10px 12px 12px;display:grid}.form-group legend{color:var(--text-dim);padding:0 4px;font-size:.85rem}.field{flex-direction:column;gap:4px;display:flex}.field--inline{flex-direction:row;align-items:center;gap:8px}.field__label{color:var(--text-dim);font-size:.85rem}.field__hint{color:var(--text-dim);font-size:.78rem}.field__error,.form-error{color:var(--danger);margin:0;font-size:.85rem}.field--error input,.field--error select,.field--error textarea{border-color:var(--danger)}.field input,.field select,.field textarea,.chips input,.event-row input,.change input,.medicine-time input[type=time]{border:1px solid var(--border);width:100%;color:var(--text);background:#0f1420;border-radius:9px;padding:9px 11px;font-size:.95rem}.field input:focus,.field select:focus,.field textarea:focus,.chips input:focus,.medicine-time input[type=time]:focus{border-color:var(--accent);outline:none}.check{align-items:center;gap:8px;font-size:.92rem;display:flex}.check input{width:auto}.actions{align-items:center;gap:10px;margin-top:12px;display:flex}.actions--inline{margin-top:0}.actions--wrap{flex-wrap:wrap}.button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:10px;padding:9px 16px;font-size:.9rem;font-weight:600}.button:hover:not(:disabled){background:#4a6bf0}.button:disabled{opacity:.45;cursor:default}.button--quiet{color:var(--text);border:1px solid var(--border);background:0 0}.button--quiet:hover:not(:disabled){background:var(--accent-soft)}.button--danger{color:var(--danger)}.button.button--danger:not(.button--quiet){background:var(--danger);color:#fff}.chips{flex-direction:column;gap:8px;display:flex}.chips__chosen,.chips__suggestions{flex-wrap:wrap;gap:6px;display:flex}.chips__entry{gap:8px;display:flex}.chip{border:1px dashed var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;padding:4px 11px;font-size:.85rem}.chip--chosen{border-style:solid;border-color:var(--accent-soft);background:var(--accent-soft);color:var(--text);cursor:default;align-items:center;gap:6px;display:inline-flex}.chip--chosen button{color:var(--text-dim);cursor:pointer;background:0 0;border:none;font-size:1rem;line-height:1}.steps{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.steps__item button{border:1px solid var(--border);color:var(--text-dim);cursor:pointer;background:0 0;border-radius:999px;padding:5px 12px;font-size:.82rem}.steps__item--done button{color:var(--online);border-color:#1f4d3a}.steps__item--current button{color:#fff;background:var(--accent);border-color:var(--accent)}.notice{border:1px solid var(--accent-soft);background:#1b2338;border-radius:10px;margin:0;padding:10px 14px;font-size:.92rem;line-height:1.5}.notice ul{margin:6px 0 0}.summary{grid-template-columns:max-content 1fr;gap:6px 14px;margin:0 0 8px;display:grid}.summary dt{color:var(--text-dim)}.summary dd{margin:0}.event-row{grid-template-columns:2fr 1.3fr .8fr auto auto;align-items:center;gap:8px;display:grid}@media (width<=560px){.event-row{grid-template-columns:1fr 1fr}}.routine-row{grid-template-columns:2fr .9fr 2.6fr auto}.days{flex-wrap:wrap;gap:4px 10px;display:flex}.check--day{gap:4px;font-size:.85rem}.event-row .check input{width:auto;padding:0}@media (width<=560px){.routine-row{grid-template-columns:1fr auto}.routine-row .days{grid-column:1/-1}}.contacts{flex-direction:column;gap:8px;display:flex}.contact,.person .actions{margin-top:16px}.person__delete{margin-left:auto}.person h2{margin:0 0 4px}.change__values{grid-template-columns:1fr 1fr;gap:12px;display:grid}.change__values p{margin:4px 0 0}.muted{color:var(--text-dim)}.small{font-size:.82rem}.tag{border:1px solid var(--border);color:var(--text-dim);vertical-align:middle;border-radius:999px;padding:1px 8px;font-size:.75rem;display:inline-block}.tag--ok{color:#7ad59a;border-color:#2f6b45}.tag--warn{color:#e0c070;border-color:#6b5a2f}.tag--bad{color:var(--danger);border-color:var(--danger)}.alert-banner{text-align:left;color:#ffd7d7;border:1px solid var(--danger);cursor:pointer;background:#3a1518;border-radius:10px;width:100%;padding:12px 14px;font-size:1rem;font-weight:600;display:block}.alert--open{border-color:var(--danger)}.alert__quote{border-left:3px solid var(--border);color:var(--text-dim);margin:0;padding:6px 12px}.alert__quote p{margin:4px 0}.badge--alert{background:var(--danger)}.privacy-notice{border:1px solid var(--border);background:#0f1420;border-radius:10px;max-height:360px;margin:8px 0 12px;padding:10px 14px;overflow-y:auto}.privacy-notice h3{margin:4px 0 8px}.privacy-notice h4{margin:10px 0 4px;font-size:.95rem}.privacy-notice p{margin:0 0 6px;line-height:1.5}.medicine-times{gap:10px;margin:12px 0;display:grid}.medicine-time{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.medicine-time input[type=time]{width:auto;min-width:140px}.medicine-time input[type=time]:disabled{opacity:.5}.feature-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.feature{justify-content:space-between;align-items:center;gap:16px;display:flex}.feature__text{gap:4px;display:grid}.feature--off .feature__text strong{color:var(--text-dim)}.switch{border:1px solid var(--border);width:64px;height:32px;color:var(--text-dim);cursor:pointer;text-align:left;background:#2a3142;border-radius:16px;flex-shrink:0;padding:0 10px 0 34px;font-size:.8rem;transition:background .15s;position:relative}.switch:before{content:"";background:var(--text-dim);border-radius:50%;width:24px;height:24px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch--on{background:var(--accent);color:#fff;padding:0 34px 0 10px}.switch--on:before{background:#fff;transform:translate(32px)}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.switch:disabled{opacity:.6;cursor:wait}@media (prefers-reduced-motion:reduce){.switch,.switch:before{transition:none}}
