html,body,#root{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden}.protected-route-spinner{background:#0a0a0f;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.spinner{border:3px solid #ffffff26;border-top-color:#c084fc;border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-screen{background:#0a0a0f;justify-content:center;align-items:center;min-height:100vh;font-family:Noto Sans JP,system-ui,sans-serif;display:flex}.login-card{text-align:center;background:#ffffff0a;border:1px solid #c084fc33;border-radius:1.25rem;width:min(380px,90vw);padding:2.5rem 2rem;box-shadow:0 0 40px #7c3aed26}.login-title{background:linear-gradient(135deg,#c084fc,#f472b6);-webkit-text-fill-color:transparent;letter-spacing:.05em;-webkit-background-clip:text;background-clip:text;margin:0;font-size:2.5rem;font-weight:600}.login-subtitle{color:#ffffff80;margin:.5rem 0 2rem;font-size:.875rem}.login-error{color:#fca5a5;background:#f8717126;border-radius:.5rem;margin-bottom:1rem;padding:.65rem .85rem;font-size:.85rem}.login-actions{flex-direction:column;gap:.75rem;display:flex}.login-btn{cursor:pointer;border:none;border-radius:.75rem;padding:.75rem 1rem;font-size:.925rem;font-weight:500;transition:opacity .2s,transform .15s}.login-btn:hover{opacity:.92;transform:translateY(-1px)}.login-btn--google{color:#1a1a2e;background:#fff}.login-spinner{justify-content:center;padding:1rem 0;display:flex}.login-spinner .spinner{border:3px solid #ffffff26;border-top-color:#c084fc;border-radius:50%;width:36px;height:36px;animation:.8s linear infinite spin}.vrm-canvas-wrap{z-index:1;width:100%;height:100%;min-height:320px;position:relative}.vrm-canvas{width:100%;height:100%;display:block}.vrm-canvas-wrap:after{content:"";pointer-events:none;background:radial-gradient(130% 100% at 50% 38%,#07070b00 58%,#07070b8c 100%);position:absolute;inset:0}.vrm-canvas-status{z-index:2;color:#ffffffa6;pointer-events:none;justify-content:center;align-items:center;font-size:.95rem;display:flex;position:absolute;inset:0}.vrm-canvas-error{color:#f87171}.subtitle-overlay{pointer-events:none;z-index:30;justify-content:center;width:min(82%,760px);display:flex;position:absolute;bottom:13%;left:50%;transform:translate(-50%)}.subtitle-overlay__line{text-align:center;letter-spacing:.01em;color:#fff;text-shadow:0 1px 2px #000000d9,0 2px 10px #0009,0 0 18px #00000080;margin:0;font-size:clamp(1.05rem,2.4vw,1.7rem);font-weight:600;line-height:1.45}.subtitle-overlay__word{opacity:1;margin:0 .18em;display:inline-block;transform:translateY(0)scale(1)}.subtitle-overlay__word--pop{color:#ffe1ec;text-shadow:0 1px 2px #000000d9,0 0 16px #f4a7b9a6;animation:.36s cubic-bezier(.22,1.4,.4,1) both subtitle-pop}@keyframes subtitle-pop{0%{opacity:0;transform:translateY(6px)scale(.6)}55%{opacity:1;transform:translateY(0)scale(1.12)}to{opacity:1;transform:translateY(0)scale(1)}}@media (prefers-reduced-motion:reduce){.subtitle-overlay__word--pop{animation:.16s both subtitle-fade}@keyframes subtitle-fade{0%{opacity:0}to{opacity:1}}}.message-list{scrollbar-width:thin;scrollbar-color:#c084fc4d transparent;flex-direction:column;flex:1;gap:.6rem;padding:1rem .25rem;display:flex;overflow-y:auto}.message-list::-webkit-scrollbar{width:6px}.message-list::-webkit-scrollbar-thumb{background:#c084fc4d;border-radius:3px}.message-list-empty{color:#fff6;flex-direction:column;align-items:center;gap:.85rem;margin:auto;font-size:.92rem;display:flex}.message-list-empty-avatar{opacity:.9;background:linear-gradient(135deg,#c084fc,#f472b6);border-radius:50%;width:48px;height:48px;box-shadow:0 0 24px #c084fc73}.message-row{align-items:flex-end;gap:.5rem;animation:.28s both message-in;display:flex}.message-row--user{justify-content:flex-end}.message-row--assistant{justify-content:flex-start}@keyframes message-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.message-avatar{background:linear-gradient(135deg,#c084fc,#f472b6);border-radius:50%;flex-shrink:0;width:22px;height:22px;margin-bottom:2px;box-shadow:0 0 10px #c084fc66}.message-bubble{word-break:break-word;border-radius:1.05rem;max-width:80%;padding:.6rem .9rem;font-size:.92rem;line-height:1.5}.message-bubble--user{color:#fff;background:linear-gradient(135deg,#a855f7,#f472b6);border-bottom-right-radius:.3rem;box-shadow:0 6px 18px #a855f747}.message-bubble--assistant{color:#ffffffeb;background:#ffffff12;border:1px solid #ffffff14;border-bottom-left-radius:.3rem}.chat-input-wrap{flex-direction:column;display:flex}.chat-input-status{color:#f472b6e6;text-align:center;margin:.5rem 0 0;font-size:.75rem}.chat-input{border-top:1px solid #ffffff14;align-items:center;gap:.5rem;margin-top:.25rem;padding-top:.75rem;display:flex}.chat-input-mic{color:#fffc;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:transform .15s,background .2s,color .2s,border-color .2s;display:flex}.chat-input-mic:hover:not(:disabled){color:#fff;background:#ffffff1f}.chat-input-mic:active:not(:disabled){transform:scale(.95)}.chat-input-mic:disabled{opacity:.5;cursor:progress}.chat-input-mic--recording{color:#fff;background:linear-gradient(135deg,#ef4444,#f472b6);border-color:#0000;animation:1.3s ease-in-out infinite chat-mic-pulse}@keyframes chat-mic-pulse{0%,to{box-shadow:0 0 #ef44448c}50%{box-shadow:0 0 0 7px #ef444400}}.chat-input-spinner{animation:.9s linear infinite chat-mic-spin}@keyframes chat-mic-spin{to{transform:rotate(360deg)}}.chat-input-field{color:#fff;background:#ffffff0f;border:1px solid #ffffff1f;border-radius:999px;outline:none;flex:1;min-width:0;padding:.7rem 1.1rem;font-size:.92rem;transition:border-color .2s,box-shadow .2s,background .2s}.chat-input-field:focus{background:#ffffff17;border-color:#c084fc99;box-shadow:0 0 0 3px #c084fc2e}.chat-input-field:disabled{opacity:.5}.chat-input-field::placeholder{color:#ffffff61}.chat-input-send{color:#fff;cursor:pointer;background:linear-gradient(135deg,#a855f7,#f472b6);border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;padding:0;transition:transform .15s,opacity .2s,box-shadow .2s;display:flex;box-shadow:0 6px 18px #a855f759}.chat-input-send:hover:not(:disabled){transform:translateY(-1px)scale(1.04)}.chat-input-send:active:not(:disabled){transform:scale(.95)}.chat-input-send:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}.thinking-indicator{align-items:flex-end;gap:.5rem;padding:0 .25rem .5rem;display:flex}.thinking-avatar{background:linear-gradient(135deg,#c084fc,#f472b6);border-radius:50%;flex-shrink:0;width:22px;height:22px;box-shadow:0 0 10px #c084fc66}.thinking-bubble{background:#ffffff12;border:1px solid #ffffff14;border-radius:1.05rem 1.05rem 1.05rem .3rem;padding:.55rem .85rem}.thinking-dots{gap:4px;display:flex}.thinking-dots span{background:#c084fc;border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite thinking-bounce}.thinking-dots span:nth-child(2){animation-delay:.15s}.thinking-dots span:nth-child(3){animation-delay:.3s}@keyframes thinking-bounce{0%,60%,to{opacity:.4;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.canvas-mic{flex-direction:column;align-items:center;gap:.35rem;display:flex}.canvas-mic-btn{color:#ffffffc7;cursor:pointer;-webkit-backdrop-filter:blur(10px);background:#12121a8c;border:1px solid #ffffff29;border-radius:50%;justify-content:center;align-items:center;width:74px;height:74px;padding:0;transition:transform .15s,background .25s,color .2s,border-color .2s,box-shadow .25s;display:flex;position:relative;box-shadow:0 10px 28px #0006}.canvas-mic-btn svg{width:30px;height:30px}.canvas-mic-btn:hover{color:#fff;transform:translateY(-1px)}.canvas-mic-btn:active{transform:scale(.95)}.canvas-mic-btn--on{color:#fff;background:linear-gradient(135deg,#a855f7,#f472b6);border-color:#0000;box-shadow:0 14px 34px #a855f780}.canvas-mic-btn--loading{opacity:.85;cursor:progress}.canvas-mic-btn--error{color:#f472b6f2;background:#28121ab3;border-color:#f472b673}.canvas-mic-btn--speaking{animation:1.8s ease-in-out infinite canvas-mic-speaking}@keyframes canvas-mic-speaking{0%,to{box-shadow:0 14px 34px #a855f780,0 0 #c084fc73}50%{box-shadow:0 14px 34px #a855f780,0 0 0 12px #c084fc00}}.canvas-mic-btn--listening{--mic-level:0;box-shadow:0 14px 34px #a855f780, 0 0 calc(8px + var(--mic-level,0) * 26px) calc(1px + var(--mic-level,0) * 5px) rgba(244, 114, 182, calc(.35 + var(--mic-level,0) * .55));transform:scale(calc(1 + var(--mic-level,0) * .06))}.canvas-mic-ring{border:2px solid rgba(244, 114, 182, calc(.45 + var(--mic-level,0) * .5));transform:scale(calc(1.05 + var(--mic-level,0) * .45));opacity:calc(.4 + var(--mic-level,0) * .6);pointer-events:none;border-radius:50%;transition:transform 60ms linear,opacity .12s linear;animation:2.4s ease-in-out infinite canvas-mic-ring-idle;position:absolute;inset:-5px}@keyframes canvas-mic-ring-idle{0%,to{box-shadow:0 0 #f472b62e}50%{box-shadow:0 0 0 4px #f472b60a}}.canvas-mic-spinner{animation:.8s linear infinite canvas-mic-spin}@keyframes canvas-mic-spin{to{transform:rotate(360deg)}}.canvas-mic-caption{letter-spacing:.02em;color:#ffffff9e;text-shadow:0 1px 4px #00000080;font-size:.7rem;font-weight:500}.canvas-mic-btn--listening+.canvas-mic-caption{color:#f472b6f2}.canvas-mic-error{color:#f472b6e6;text-align:center;max-width:160px;font-size:.7rem}.camera-preview{flex-direction:column;align-items:center;gap:.35rem;display:flex}.camera-preview__panel{z-index:3;opacity:0;pointer-events:none;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:16px;width:0;height:0;transition:opacity .25s,left .24s cubic-bezier(.22,1,.36,1),top .24s cubic-bezier(.22,1,.36,1);position:fixed;overflow:hidden}.camera-preview__panel--on{opacity:1;pointer-events:auto;cursor:grab;border:1px solid #ffffff24;width:208px;height:156px;box-shadow:0 16px 40px #00000080}.camera-preview__panel--dragging{cursor:grabbing;transition:opacity .25s;box-shadow:0 22px 56px #0009}@media (width<=768px){.camera-preview__panel--on{width:132px;height:99px}}.camera-preview__video{object-fit:cover;background:#0b0b12;width:100%;height:100%;transform:scaleX(-1)}.camera-preview__vision{justify-content:flex-start;display:flex;position:absolute;bottom:6px;left:6px;right:6px}.camera-preview__badge{color:#fff;-webkit-backdrop-filter:blur(6px);background:#0c0c12b3;border:1px solid #ffffff1f;border-radius:999px;padding:.18rem .5rem;font-size:.66rem}.camera-preview__badge--muted{color:#ffffffb3;position:absolute;bottom:6px;left:6px}.camera-preview__vision-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#a855f7,#f472b6);border:none;border-radius:999px;padding:.2rem .55rem;font-size:.66rem}.camera-preview__capture{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.camera-preview__toggle{color:#ffffffb8;cursor:pointer;-webkit-backdrop-filter:blur(10px);background:#12121a80;border:1px solid #ffffff24;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;padding:0;transition:transform .15s,background .2s,color .2s,border-color .2s;display:flex;box-shadow:0 8px 22px #00000059}.camera-preview__toggle:hover{color:#fff;transform:translateY(-1px)}.camera-preview__toggle:active{transform:scale(.95)}.camera-preview__toggle--on{color:#fff;background:linear-gradient(135deg,#6366f1,#a855f7);border-color:#0000}.camera-preview__error{color:#f472b6e6;text-align:center;max-width:160px;font-size:.7rem}.sub-panel{flex-direction:column;gap:14px;width:100%;display:flex}.sub-panel__current{background:#ffffff0d;border:1px solid #ffffff14;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.sub-panel__badge{color:#fff;letter-spacing:.02em;font-size:.95rem;font-weight:700}.sub-panel__status{color:#fff9;font-size:.8rem}.sub-panel__error{color:#f4a7b9;margin:0;font-size:.82rem}.sub-panel__notice{color:#6ee7b7;margin:0;font-size:.82rem}.sub-panel__plans{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;display:grid}.sub-panel__plan{background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;flex-direction:column;gap:8px;padding:14px;transition:border-color .18s,transform .18s;display:flex}.sub-panel__plan:hover{border-color:#f4a7b973;transform:translateY(-2px)}.sub-panel__plan--current{background:#6ee7b70f;border-color:#6ee7b780}.sub-panel__plan-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.sub-panel__plan-head h4{color:#fff;margin:0;font-size:.92rem}.sub-panel__price{color:#ffffff8c;white-space:nowrap;font-size:.78rem}.sub-panel__features{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.sub-panel__features li{color:#ffffff9e;padding-left:14px;font-size:.74rem;position:relative}.sub-panel__features li:before{content:"✓";color:#6ee7b7;position:absolute;left:0}.sub-panel__cta{color:#2a1620;cursor:pointer;background:linear-gradient(135deg,#f4a7b9,#f7c8d4);border:none;border-radius:10px;margin-top:4px;padding:9px 12px;font-size:.82rem;font-weight:600;transition:opacity .18s,filter .18s}.sub-panel__cta:hover:not(:disabled){filter:brightness(1.05)}.sub-panel__cta:disabled{opacity:.5;cursor:default;color:#ffffffb3;background:#ffffff1f}.sub-panel__cancel{color:#ffffff73;cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:4px 0;font-size:.78rem;text-decoration:underline}.sub-panel__cancel:hover:not(:disabled){color:#f4a7b9}.sub-panel__cancel:disabled{opacity:.5;cursor:default}.pre-settings-overlay{z-index:1000;pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#06040c9e;justify-content:center;align-items:center;padding:20px;animation:.18s both pre-settings-fade;display:flex;position:fixed;inset:0}@keyframes pre-settings-fade{0%{opacity:0}to{opacity:1}}.pre-settings{background:linear-gradient(160deg,#1c1426f5,#120e1af5);border:1px solid #ffffff1a;border-radius:20px;width:min(560px,100%);max-height:86vh;padding:22px 24px 26px;animation:.22s cubic-bezier(.22,1,.4,1) both pre-settings-rise;overflow-y:auto;box-shadow:0 24px 70px #0000008c}@keyframes pre-settings-rise{0%{opacity:0;transform:translateY(14px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.pre-settings__header{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.pre-settings__header h2{color:#fff;letter-spacing:.02em;margin:0;font-size:1.2rem}.pre-settings__close{color:#fff9;cursor:pointer;background:0 0;border:none;padding:4px;font-size:1.1rem;line-height:1}.pre-settings__close:hover{color:#fff}.pre-settings__section{flex-direction:column;gap:8px;display:flex}.pre-settings__title{color:#fff;margin:0;font-size:.95rem}.pre-settings__hint{color:#ffffff80;margin:0 0 2px;font-size:.78rem}.pre-settings__personalities{flex-wrap:wrap;gap:8px;display:flex}.pre-settings__chip{color:#ffffffc7;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff24;border-radius:999px;padding:8px 14px;font-size:.82rem;transition:border-color .18s,background .18s,color .18s}.pre-settings__chip:hover:not(:disabled){color:#fff;border-color:#f4a7b980}.pre-settings__chip--active{color:#fff;background:#f4a7b929;border-color:#f4a7b9}.pre-settings__chip:disabled{opacity:.6;cursor:default}.pre-settings__loading{color:#ffffff80;font-size:.8rem}.pre-settings__divider{background:#ffffff14;height:1px;margin:18px 0}.session-start{z-index:50;pointer-events:none;flex-direction:column;justify-content:space-between;align-items:center;animation:.9s both session-start-in;display:flex;position:absolute;inset:0;overflow:hidden}.session-start--leaving{animation:.42s forwards session-start-out}.starfield-canvas{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.session-start__vignette{pointer-events:none;background:radial-gradient(90% 75% at 50% 48%,#07070b00 38%,#0906148c 72%,#05040aeb 100%);position:absolute;inset:0}.session-start__aura{pointer-events:none;filter:blur(8px);background:radial-gradient(circle,#a855f738,#f472b61a 42%,#07070b00 70%);width:70vmin;height:70vmin;animation:6.5s ease-in-out infinite session-start-breathe;position:absolute;top:46%;left:50%;transform:translate(-50%,-50%)}.session-start__top{z-index:1;text-align:center;pointer-events:none;padding-top:clamp(2.4rem,9vh,5rem);animation:1.1s .15s both session-start-rise;position:relative}.session-start__title{letter-spacing:.4em;background:linear-gradient(135deg,#e9d5ff 0%,#c084fc 45%,#f472b6 100%);-webkit-text-fill-color:transparent;filter:drop-shadow(0 4px 26px #a855f78c);-webkit-background-clip:text;background-clip:text;margin:0;padding-left:.4em;font-size:clamp(2.6rem,9vw,5.5rem);font-weight:800;animation:5s ease-in-out infinite session-start-title-glow}.session-start__tagline{letter-spacing:.22em;text-transform:lowercase;color:#e9d5ffb3;text-shadow:0 2px 14px #0009;margin:.7rem 0 0;font-size:clamp(.8rem,2.4vw,1rem);font-weight:500}.session-start__bottom{z-index:1;pointer-events:none;flex-direction:column;align-items:center;width:min(92vw,26rem);padding-bottom:clamp(2.2rem,8vh,4.5rem);animation:1.1s .3s both session-start-rise;display:flex;position:relative}.session-start__stages{width:100%;margin:0 0 1.3rem;padding:0;list-style:none}.session-start__stage{letter-spacing:.04em;color:#e9d5ffd1;align-items:center;gap:.7rem;padding:.32rem 0;font-size:.82rem;transition:color .3s;display:flex}.session-start__stage--done{color:#e9d5ff73}.session-start__stage--paused{color:#e9d5ff57}.session-start__stage-dot{color:#f4a7b9f2;border:1.5px solid #f472b680;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:1.25rem;height:1.25rem;font-size:.7rem;line-height:1;transition:background .3s,border-color .3s,color .3s;display:inline-flex}.session-start__stage--done .session-start__stage-dot{color:#fff;background:linear-gradient(135deg,#a855f7,#f472b6);border-color:#0000;box-shadow:0 0 10px #f472b699}.session-start__stage--paused .session-start__stage-dot{color:#e9d5ff66;border-color:#e9d5ff33}.session-start__spin{animation:.95s linear infinite session-start-spin;display:inline-block}.session-start__progress{background:#e9d5ff1f;border-radius:999px;width:100%;height:3px;overflow:hidden}.session-start__progress-fill{background:linear-gradient(90deg,#a855f7,#f472b6);border-radius:999px;height:100%;transition:width .4s;box-shadow:0 0 14px #f472b6b3}.session-start__progress-meta{letter-spacing:.08em;text-transform:lowercase;color:#e9d5ff6b;justify-content:space-between;width:100%;margin-top:.45rem;margin-bottom:1.4rem;font-size:.68rem;display:flex}.session-start__info{text-align:center;color:#e9d5ff99;text-shadow:0 1px 6px #0000008c;max-width:24rem;margin:0 0 1.4rem;font-size:.74rem;line-height:1.5}.session-start__info strong{color:#f4a7b9f2;font-weight:600}.session-start__error{text-align:center;color:#f88c96f2;text-shadow:0 1px 6px #0000008c;max-width:24rem;margin:0 0 1.4rem;font-size:.78rem;line-height:1.5}.session-start__error strong{color:#f8b4bcf2;font-weight:600}.session-start__btn{letter-spacing:.16em;text-transform:uppercase;color:#fff;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:radial-gradient(120% 120% at 50% 0,#c084fc80,#a855f700 70%),linear-gradient(135deg,#a855f7d9,#f472b6d9);border:1px solid #f472b680;border-radius:999px;min-width:12rem;padding:.95rem 2.8rem;font-size:1.05rem;font-weight:600;transition:transform .18s,box-shadow .3s,opacity .25s,border-color .25s;position:relative;box-shadow:0 0 #f472b680,0 18px 44px #a855f780}.session-start__btn:not(:disabled){animation:2.6s ease-in-out infinite session-start-btn-pulse}.session-start__btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 0 0 6px #f472b624,0 24px 54px #a855f7a6}.session-start__btn:active:not(:disabled){transform:scale(.97)}.session-start__btn:disabled{opacity:.72;cursor:progress;background:linear-gradient(135deg,#583c8c99,#783c6499);border-color:#e9d5ff38;box-shadow:0 14px 36px #00000073}.session-start__btn-label{z-index:1;position:relative}.session-start__vision{letter-spacing:.16em;text-transform:lowercase;color:#c084fca6;text-shadow:0 1px 6px #0009;margin-top:1.1rem;font-size:.74rem}.session-start__hint{letter-spacing:.1em;color:#e9d5ff61;margin-top:.55rem;font-size:.72rem}.session-start__settings{z-index:2;color:#e9d5ffbf;cursor:pointer;pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#140e1e8c;border:1px solid #ffffff24;border-radius:999px;justify-content:center;align-items:center;width:2.6rem;height:2.6rem;transition:color .18s,border-color .18s,transform .18s;display:inline-flex;position:absolute;top:clamp(1rem,4vh,2rem);right:clamp(1rem,4vw,2rem)}.session-start__settings:hover{color:#fff;border-color:#f4a7b98c;transform:rotate(35deg)}@keyframes session-start-spin{to{transform:rotate(360deg)}}@keyframes session-start-in{0%{opacity:0}to{opacity:1}}@keyframes session-start-out{0%{opacity:1}to{opacity:0}}@keyframes session-start-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes session-start-breathe{0%,to{opacity:.7;transform:translate(-50%,-50%)scale(1)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.06)}}@keyframes session-start-title-glow{0%,to{filter:drop-shadow(0 4px 22px #a855f773)}50%{filter:drop-shadow(0 4px 32px #f472b6b3)}}@keyframes session-start-btn-pulse{0%,to{box-shadow:0 0 #f472b673,0 18px 44px #a855f780}50%{box-shadow:0 0 0 10px #f472b600,0 18px 44px #a855f780}}@media (prefers-reduced-motion:reduce){.session-start,.session-start__top,.session-start__bottom,.session-start__aura,.session-start__title,.session-start__spin,.session-start__btn:not(:disabled){animation:none}}.paywall-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0009;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.paywall-modal{background:linear-gradient(135deg,#1a1025 0%,#0d0818 100%);border:1px solid #f4a7b94d;border-radius:20px;width:100%;max-width:860px;padding:32px 28px;position:relative;box-shadow:0 0 60px #f4a7b926}.paywall-close{color:#fff6;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 8px;font-size:18px;line-height:1;transition:color .2s;position:absolute;top:16px;right:16px}.paywall-close:hover{color:#fffc}.paywall-header{text-align:center;margin-bottom:28px}.paywall-avatar{margin-bottom:8px;font-size:40px}.paywall-header h2{color:#f4a7b9;margin:0 0 8px;font-size:22px;font-weight:600}.paywall-subtitle{color:#fff9;margin:0;font-size:14px}.paywall-error{color:#ff7875;text-align:center;margin:-12px 0 16px;font-size:13px}.paywall-plans{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px;display:grid}.paywall-plan-card{background:#ffffff0a;border:1px solid #ffffff1a;border-radius:14px;padding:20px;transition:border-color .2s,transform .2s;position:relative}.paywall-plan-card--recommended{background:#f4a7b90f;border-color:#f4a7b980;transform:scale(1.02)}.paywall-badge{color:#1a1025;white-space:nowrap;background:#f4a7b9;border-radius:20px;padding:3px 12px;font-size:11px;font-weight:700;position:absolute;top:-10px;left:50%;transform:translate(-50%)}.paywall-plan-card h3{color:#fff;margin:0 0 8px;font-size:17px;font-weight:600}.paywall-price{margin-bottom:14px}.paywall-price-amount{color:#f4a7b9;font-size:26px;font-weight:700}.paywall-price-period{color:#ffffff80;margin-left:2px;font-size:13px}.paywall-features{flex-direction:column;gap:6px;margin:0 0 18px;padding:0;list-style:none;display:flex}.paywall-features li{color:#ffffffb3;font-size:13px}.paywall-check{color:#f4a7b9;margin-right:6px}.paywall-cta{color:#1a1025;cursor:pointer;background:linear-gradient(135deg,#f4a7b9 0%,#e891a8 100%);border:none;border-radius:10px;width:100%;padding:10px 16px;font-size:14px;font-weight:600;transition:opacity .2s,transform .1s}.paywall-cta:hover:not(:disabled){opacity:.9;transform:translateY(-1px)}.paywall-cta:disabled{opacity:.5;cursor:not-allowed}.paywall-footer{text-align:center;color:#ffffff4d;margin:0;font-size:12px}.paywall-success{text-align:center;padding:48px 32px}.paywall-success-icon{margin-bottom:16px;font-size:56px}.paywall-success h2{color:#f4a7b9;margin:0 0 10px;font-size:22px}.paywall-success p{color:#fff9;margin:0;font-size:15px}.settings-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:900;background:#0000008c;justify-content:flex-end;align-items:flex-start;padding:60px 16px 16px;display:flex;position:fixed;inset:0}.settings-modal{scrollbar-width:thin;scrollbar-color:#f4a7b933 transparent;background:linear-gradient(160deg,#1a1025 0%,#0d0818 100%);border:1px solid #f4a7b940;border-radius:20px;width:100%;max-width:420px;max-height:calc(100vh - 80px);overflow-y:auto;box-shadow:0 0 48px #f4a7b91a,0 8px 32px #00000080}.settings-header{z-index:1;background:linear-gradient(160deg,#1a1025 0%,#120f1e 100%);border-bottom:1px solid #ffffff0f;border-radius:20px 20px 0 0;justify-content:space-between;align-items:center;padding:20px 20px 16px;display:flex;position:sticky;top:0}.settings-header h2{color:#fff;letter-spacing:.02em;margin:0;font-size:16px;font-weight:600}.settings-close{color:#ffffff59;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:16px;line-height:1;transition:color .2s}.settings-close:hover{color:#ffffffb3}.settings-section{padding:16px 20px}.settings-divider{background:#ffffff0f;height:1px;margin:0 20px}.settings-section-title{color:#fff6;letter-spacing:.08em;text-transform:uppercase;margin:0 0 12px;font-size:11px;font-weight:600}.settings-plan-row{align-items:center;gap:10px;margin-bottom:10px;display:flex}.settings-plan-badge{color:#f4a7b9;background:#f4a7b926;border:1px solid #f4a7b94d;border-radius:20px;padding:4px 12px;font-size:13px;font-weight:600}.settings-upgrade-btn{color:#1a1025;cursor:pointer;background:linear-gradient(135deg,#f4a7b9,#e891a8);border:none;border-radius:20px;padding:5px 14px;font-size:13px;font-weight:600;transition:opacity .2s,transform .1s}.settings-upgrade-btn:hover{opacity:.9;transform:translateY(-1px)}.settings-usage{flex-direction:column;gap:6px;display:flex}.settings-usage-bar{background:#ffffff14;border-radius:2px;height:4px;overflow:hidden}.settings-usage-fill{border-radius:2px;height:100%;transition:width .4s,background .4s}.settings-usage-label{font-size:12px;transition:color .3s}.settings-plan-note{color:#ffffff59;margin:4px 0 0;font-size:12px}.settings-personality-row{flex-wrap:wrap;gap:8px;display:flex}.settings-personality-btn{color:#ffffffa6;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:20px;padding:6px 14px;font-size:13px;transition:background .2s,border-color .2s,color .2s}.settings-personality-btn:hover:not(:disabled){color:#f4a7b9;background:#f4a7b91a;border-color:#f4a7b94d}.settings-personality-btn--active{color:#f4a7b9!important;background:#f4a7b926!important;border-color:#f4a7b9!important}.settings-personality-btn:disabled{opacity:.5;cursor:not-allowed}.settings-loading{color:#ffffff4d;font-size:13px}.settings-slots{flex-wrap:wrap;gap:8px;display:flex}.settings-slot{color:#ffffffb3;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;align-items:center;gap:5px;padding:8px 12px;font-size:13px;transition:background .2s,border-color .2s,color .2s;display:flex;position:relative}.settings-slot:hover:not(.settings-slot--locked){color:#fff;background:#f4a7b914;border-color:#f4a7b94d}.settings-slot--active{color:#f4a7b9!important;background:#f4a7b91f!important;border-color:#f4a7b980!important}.settings-slot--locked{opacity:.4;cursor:pointer}.settings-slot--locked:hover{opacity:.7}.settings-slot--locked:hover .settings-slot-tooltip{display:block}.settings-lock-icon{color:#fff9;flex-shrink:0}.settings-slot-name{white-space:nowrap}.settings-slot-tooltip{color:#f4a7b9;white-space:nowrap;pointer-events:none;z-index:10;background:#1a1025f2;border:1px solid #f4a7b94d;border-radius:8px;padding:5px 10px;font-size:11px;display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 16px #0006}.settings-memory-actions{flex-direction:column;gap:8px;display:flex}.settings-danger-btn{color:#ffffff8c;cursor:pointer;text-align:left;background:#ffffff0a;border:1px solid #ffffff1a;border-radius:10px;padding:9px 14px;font-size:13px;transition:background .2s,border-color .2s,color .2s}.settings-danger-btn:hover{color:#ff9a9a;background:#ff505014;border-color:#ff505040}.settings-action-msg{color:#6ee7b7;margin:8px 0 0;font-size:12px}.companion-screen{color:#fff;background:#07070b;width:100vw;height:100dvh;font-family:Noto Sans JP,system-ui,sans-serif;position:relative;overflow:hidden}.companion-stage{z-index:0;position:absolute;inset:0}.companion-glow{z-index:0;background:radial-gradient(52% 46% at 47% 40%,#c084fc38,#f472b61a 45%,#07070b00 72%),radial-gradient(120% 90% at 50% 120%,#7c3aed24,#07070b00 60%);transition:opacity .6s;animation:7s ease-in-out infinite companion-glow-breathe;position:absolute;inset:0}.companion-glow--speaking{animation:2.4s ease-in-out infinite companion-glow-pulse}@keyframes companion-glow-breathe{0%,to{opacity:.75}50%{opacity:1}}@keyframes companion-glow-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}.companion-header{z-index:5;pointer-events:none;justify-content:space-between;align-items:center;padding:1rem 1.25rem;transition:opacity .7s;display:flex;position:absolute;top:0;left:0;right:0}.companion-header-title{letter-spacing:.02em;background:linear-gradient(135deg,#c084fc,#f472b6);-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 8px #7c3aed73);-webkit-background-clip:text;background-clip:text;font-size:1.35rem;font-weight:700}.companion-header-actions{-webkit-backdrop-filter:blur(10px);pointer-events:auto;background:#12121a80;border:1px solid #ffffff14;border-radius:999px;align-items:center;gap:.65rem;padding:.35rem .45rem .35rem .85rem;display:flex}.companion-header-user{color:#fff9;font-size:.8rem}.companion-logout{color:#fffc;cursor:pointer;background:#ffffff0a;border:1px solid #ffffff26;border-radius:999px;padding:.35rem .8rem;font-size:.78rem;transition:background .2s,border-color .2s}.companion-logout:hover{background:#ffffff1a;border-color:#ffffff40}.companion-settings-btn{color:#fff6;cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;padding:4px;transition:color .2s;display:flex}.companion-settings-btn:hover{color:#fffc}.companion-usage-hud{pointer-events:none;z-index:10;font-size:12px;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}.companion-usage-hud-cta{color:#f4a7b9;cursor:pointer;pointer-events:all;white-space:nowrap;background:#f4a7b91f;border:1px solid #f4a7b959;border-radius:20px;padding:5px 14px;font-size:12px;transition:background .2s}.companion-usage-hud-cta:hover{background:#f4a7b933}.companion-dock{z-index:3;-webkit-backdrop-filter:blur(12px);background:#0c0c1273;border:1px solid #ffffff14;border-radius:28px;justify-content:center;align-items:center;gap:1.3rem;padding:.8rem 1.35rem;transition:opacity .7s;display:flex;position:absolute;bottom:1.75rem;left:50%;transform:translate(-50%);box-shadow:0 18px 44px #0006}.companion-hidden{opacity:0;pointer-events:none}.companion-dock-chat{color:#ffffffb8;cursor:pointer;-webkit-backdrop-filter:blur(10px);background:#12121a80;border:1px solid #ffffff24;border-radius:50%;justify-content:center;align-items:center;width:52px;height:52px;padding:0;transition:transform .15s,background .2s,color .2s,border-color .2s;display:flex;box-shadow:0 8px 22px #00000059}.companion-dock-chat:hover{color:#fff;transform:translateY(-1px)}.companion-dock-chat:active{transform:scale(.95)}.companion-dock-chat--active{color:#fff;background:linear-gradient(135deg,#a855f7,#f472b6);border-color:#0000}.companion-chat{z-index:4;-webkit-backdrop-filter:blur(14px);background:#0c0c12b8;border:1px solid #ffffff1a;border-radius:22px;flex-direction:column;width:min(460px,94vw);height:min(58vh,560px);padding:.5rem 1rem 1rem;transition:transform .34s cubic-bezier(.4,0,.2,1),opacity .26s;display:flex;position:absolute;bottom:7.5rem;left:50%;transform:translate(-50%);box-shadow:0 28px 70px #0000008c}.companion-chat--collapsed{opacity:0;pointer-events:none;transform:translate(-50%)translateY(calc(100% + 9rem))}.companion-chat-collapse{z-index:3;color:#ffffffb3;cursor:pointer;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:30px;height:30px;padding:0;transition:background .2s,color .2s;display:flex;position:absolute;top:.5rem;right:.6rem}.companion-chat-collapse:hover{color:#fff;background:#ffffff1f}@media (width<=768px){.companion-dock{bottom:calc(1.1rem + env(safe-area-inset-bottom));gap:1rem;padding:.7rem 1rem}.companion-chat{width:100%;max-width:none;height:70%;padding:.5rem 1rem calc(1rem + env(safe-area-inset-bottom));border-bottom:none;border-radius:22px 22px 0 0;bottom:0;left:0;right:0;transform:none}.companion-chat--collapsed{transform:translateY(calc(100% + 1.5rem))}.companion-glow{background:radial-gradient(62% 30% at 50% 24%,#c084fc3d,#f472b61a 50%,#07070b00 78%)}}.companion-usage-hud{pointer-events:none;z-index:10;font-size:12px;transition:color .3s;position:fixed;bottom:80px;left:50%;transform:translate(-50%)}
