:root,[data-theme=v1]{--bg1: #0f1023;--bg2: #1d1b3a;--accent: #ffd166;--accent-ink: #1d1b3a;--accent-soft: rgba(255, 209, 102, .18);--text: #ffffff;--text-dim: rgba(255, 255, 255, .65);--glass: rgba(255, 255, 255, .08);--glass-strong: rgba(28, 27, 54, .96);--glass-border: rgba(255, 255, 255, .15);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .5);--blur: 12px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 24px;--ease: cubic-bezier(.22, 1, .36, 1);--aurora-opacity: 0}[data-theme=v2]{--bg1: #05060f;--bg2: #0b1026;--accent: #67e8f9;--accent-ink: #041018;--accent-soft: rgba(103, 232, 249, .16);--text: #f1f5ff;--text-dim: rgba(226, 232, 255, .62);--glass: rgba(148, 180, 255, .07);--glass-strong: rgba(11, 16, 38, .92);--glass-border: rgba(125, 211, 252, .22);--shadow-lg: 0 20px 60px rgba(2, 6, 23, .7);--blur: 20px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--aurora-opacity: 1}*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;overflow:hidden;font-family:PingFang SC,Microsoft YaHei,sans-serif;color:var(--text);transition:background .4s var(--ease)}.aurora{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;opacity:var(--aurora-opacity);transition:opacity .6s var(--ease);overflow:hidden}.aurora span{position:absolute;border-radius:50%;filter:blur(90px);animation:drift 14s var(--ease) infinite alternate}.aurora span:nth-child(1){width:46vw;height:46vw;left:-12vw;top:-14vh;background:radial-gradient(circle,rgba(34,211,238,.35),transparent 65%)}.aurora span:nth-child(2){width:40vw;height:40vw;right:-10vw;top:18vh;background:radial-gradient(circle,rgba(167,139,250,.32),transparent 65%);animation-delay:-5s}.aurora span:nth-child(3){width:34vw;height:34vw;left:22vw;bottom:-18vh;background:radial-gradient(circle,rgba(244,114,182,.25),transparent 65%);animation-delay:-9s}@keyframes drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(6vw,4vh,0) scale(1.15)}}@media (prefers-reduced-motion: reduce){.aurora span{animation:none}}.space{position:relative;height:100%;background:radial-gradient(ellipse at 30% 20%,var(--bg2),var(--bg1) 70%)}.space>.canvas-host{z-index:1}.space>*:not(.canvas-host):not(.aurora){z-index:10}.canvas-host{position:absolute;top:0;right:0;bottom:0;left:0}.canvas-host canvas{position:absolute!important;top:0;right:0;bottom:0;left:0;touch-action:none;user-select:none;-webkit-user-select:none}.topbar{position:fixed;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:14px 20px;z-index:10;background:linear-gradient(rgba(0,0,0,.35),transparent)}.brand{font-size:18px;font-weight:700;letter-spacing:2px;color:var(--accent)}.topbar-right{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.chip{font-size:13px;padding:6px 12px;background:var(--glass);border:1px solid var(--glass-border);border-radius:999px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.btn{border:none;background:var(--accent);color:var(--accent-ink);padding:8px 16px;border-radius:var(--radius-md);font-size:14px;cursor:pointer;font-weight:600;transition:transform .15s var(--ease),box-shadow .15s var(--ease)}.btn:hover{transform:translateY(-1px)}[data-theme=v2] .btn:hover{box-shadow:0 0 24px var(--accent-soft)}.btn.ghost{background:var(--glass);color:var(--text);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.btn.active{outline:2px solid var(--accent)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.onboard{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;z-index:5}.onboard-card{text-align:center;padding:48px 40px;background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-xl);-webkit-backdrop-filter:blur(calc(var(--blur) + 6px));backdrop-filter:blur(calc(var(--blur) + 6px));box-shadow:var(--shadow-lg);display:flex;flex-direction:column;gap:18px;width:340px;animation:rise .4s var(--ease)}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.onboard-card h1{font-size:34px;color:var(--accent)}.onboard-card .sub{font-size:13px;opacity:.7;line-height:1.6}.onboard-card input{padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:#00000040;color:var(--text);font-size:15px;outline:none}.ctxmenu{position:fixed;z-index:20;min-width:180px;background:var(--glass-strong);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:10px;display:flex;flex-direction:column;gap:4px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-lg);animation:rise .18s var(--ease)}.ctxmenu-title{font-size:12px;opacity:.6;padding:4px 8px}.ctxmenu button{text-align:left;border:none;background:transparent;color:var(--text);min-height:44px;padding:10px;border-radius:10px;font-size:14px;cursor:pointer}.ctxmenu button:hover{background:var(--accent-soft)}.ctxmenu-close{position:absolute;top:6px;right:10px;opacity:.5}.say{display:flex;gap:6px;margin-top:6px}.say input{flex:1;min-width:0;padding:8px 10px;border-radius:10px;border:1px solid var(--glass-border);background:#0000004d;color:var(--text);font-size:13px;outline:none}.say button{background:var(--accent);color:var(--accent-ink);border-radius:10px;font-weight:700}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#00000073;display:flex;align-items:center;justify-content:center}.modal-card{width:400px;max-width:90vw;background:var(--glass-strong);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:28px;text-align:center;display:flex;flex-direction:column;gap:14px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));box-shadow:var(--shadow-lg)}.modal-card h3{color:var(--accent)}.modal-card h4{opacity:.7;font-size:13px}.link-text{word-break:break-all;font-size:12px;background:#0000004d;padding:10px;border-radius:10px;text-align:left}.mood-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.look-row{display:flex;gap:8px;margin:8px 0 14px}.look-row .btn{flex:1}.wardrobe-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:10px 0 8px}.style-chip{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:56px;padding:8px 4px;border:2px solid var(--glass-border);border-radius:var(--radius-md);background:var(--glass);color:var(--text);cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s var(--ease),border-color .2s var(--ease)}.style-chip:hover{transform:translateY(-2px) scale(1.03)}.style-chip:active{transform:scale(.95)}.style-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.style-chip.active{border-color:var(--accent);background:var(--accent-soft)}.style-emoji{font-size:22px;line-height:1}.style-label{font-size:11px;color:var(--text-dim);white-space:nowrap}.style-chip.active .style-label{color:var(--text)}.variant-row{grid-template-columns:repeat(2,1fr)}.variant-chip{border-style:dashed}.variant-chip .style-label{font-weight:600}.loading-pill{position:fixed;top:64px;left:50%;transform:translate(-50%);z-index:35;padding:8px 18px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));color:var(--text);font-size:13px;animation:pop .3s var(--ease);pointer-events:none}@media (prefers-reduced-motion: reduce){.loading-pill,.style-chip{animation:none;transition:none}}.records-panel{position:fixed;right:0;top:0;bottom:0;width:340px;z-index:25;background:var(--glass-strong);border-left:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));padding:20px;overflow-y:auto}.records-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.records-panel ul{list-style:none;display:flex;flex-direction:column;gap:10px}.records-panel li{font-size:13px;background:var(--glass);padding:10px 12px;border-radius:var(--radius-md);line-height:1.5}.records-panel .time{display:block;font-size:11px;opacity:.5;margin-bottom:2px}.bubble{position:fixed;bottom:220px;left:50%;transform:translate(-50%);background:#fff;color:#1d1b3a;padding:12px 18px;border-radius:16px;font-size:15px;z-index:15;box-shadow:var(--shadow-lg);animation:pop .25s var(--ease)}.bubble.partner{bottom:300px}@keyframes pop{0%{transform:translate(-50%) scale(.7);opacity:0}}.heart{position:fixed;z-index:14;font-size:22px;animation:floatUp 2.4s var(--ease) forwards;pointer-events:none}@keyframes floatUp{0%{transform:translateY(0) scale(.6);opacity:1}to{transform:translateY(-160px) scale(1.3);opacity:0}}.toast{position:fixed;top:70px;left:50%;transform:translate(-50%);background:var(--accent);color:var(--accent-ink);padding:10px 20px;border-radius:var(--radius-md);font-weight:600;z-index:40;animation:pop .3s var(--ease)}.sub{font-size:12px;opacity:.65;line-height:1.6;color:var(--text)}.theme-switch{position:fixed;right:16px;bottom:78px;z-index:45;width:44px;height:44px;border-radius:50%;border:1px solid var(--glass-border);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));color:var(--text);font-size:18px;cursor:pointer;transition:transform .2s var(--ease)}.theme-switch:hover{transform:rotate(20deg) scale(1.08)}.admin{position:absolute;top:0;right:0;bottom:0;left:0;z-index:50;overflow-y:auto;background:radial-gradient(ellipse at 50% 0%,var(--bg2),var(--bg1) 70%);padding:40px 20px}.admin-card{max-width:860px;margin:0 auto;background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-xl);padding:32px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.admin-card h1{color:var(--accent);margin-bottom:6px}.admin-card h2{color:var(--accent);margin:24px 0 10px;font-size:17px}.admin-card pre{white-space:pre-wrap;word-break:break-word;font-size:12.5px;line-height:1.7;background:#0000004d;border:1px solid var(--glass-border);border-radius:var(--radius-md);padding:16px;max-height:420px;overflow-y:auto}.admin-card input{padding:10px 14px;border-radius:var(--radius-md);border:1px solid var(--glass-border);background:#00000040;color:var(--text);outline:none;margin-right:10px}.admin-error{color:#fda4af;font-size:13px;margin-top:8px}.admin-back{margin-top:20px}.spark-glow{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;background:radial-gradient(circle at 35% 62%,rgba(255,150,80,.5),transparent 42%),radial-gradient(circle at 65% 62%,rgba(255,180,100,.35),transparent 42%);transition:opacity 1s var(--ease)}.bond-card{position:fixed;top:56px;left:50%;transform:translate(-50%);z-index:10;width:min(420px,calc(100vw - 24px));padding:8px 14px 10px;background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.bond-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.bond-row .flame{font-size:18px}.bond-card.cold .flame{filter:grayscale(1);opacity:.7}.bond-title{font-size:13px;font-weight:700;color:var(--accent);flex:1}.bond-streak{font-size:12px;color:var(--text-dim)}.bond-card.cold .bond-title,.bond-card.cold .bond-streak{color:var(--text-dim)}.spark-bar{height:5px;border-radius:3px;background:#ffffff1a;overflow:hidden}.spark-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,#ff6b4a,#ffb347);transition:width .8s var(--ease)}.bond-card.cold .spark-fill{background:#ffffff40}.dock{position:fixed;bottom:76px;left:50%;transform:translate(-50%);z-index:12;display:flex;gap:10px;padding:8px 12px;background:var(--glass);border:1px solid var(--glass-border);border-radius:999px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.dock-btn{display:flex;flex-direction:column;align-items:center;gap:2px;border:none;background:transparent;cursor:pointer;padding:2px 4px;color:var(--text);transition:transform .15s var(--ease)}.dock-btn:hover{transform:translateY(-3px) scale(1.1)}.dock-btn:active{transform:scale(.92)}.dock-emoji{font-size:22px;line-height:1}.dock-label{font-size:10px;color:var(--text-dim)}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--glass-strong);border-top:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;border:none;background:transparent;color:var(--text-dim);cursor:pointer;padding:4px 0;border-radius:var(--radius-md);transition:color .2s var(--ease)}.tab.active{color:var(--accent)}.tab-emoji{font-size:18px;line-height:1.2}.tab-label{font-size:11px}.panel{position:fixed;top:0;left:0;right:0;bottom:0;z-index:30;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:66px 16px 110px;background:linear-gradient(#00000040,#0000008c),radial-gradient(ellipse at 50% 0%,var(--bg2),var(--bg1) 75%)}.panel-card{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-lg);padding:16px;margin-bottom:12px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.panel-card h3{color:var(--accent);margin-bottom:6px}.panel-card .block{display:block;width:100%;margin-top:10px;text-align:center}.panel-card.remind{font-size:14px;line-height:1.6;border-color:#ffb34759;background:linear-gradient(90deg,#ff6b4a1f,#ffb34714)}.panel-card.remind.cold{border-color:var(--glass-border);background:var(--glass);filter:grayscale(.4)}.quest-row{display:flex;justify-content:space-between;font-size:14px;margin-bottom:8px}.quest-row .ok{color:#7ee787}.quest-row .ready{color:var(--accent)}.quest-bar{height:5px;border-radius:3px;background:#ffffff1a;overflow:hidden}.quest-bar>div{height:100%;border-radius:3px;background:linear-gradient(90deg,#ff6b4a,#ffb347);transition:width .6s var(--ease)}.quest.rewarded{opacity:.72}.quest-reward{margin-top:6px;font-size:12px;color:var(--text-dim)}.records-list{list-style:none}.records-list li{display:flex;gap:12px;padding:10px 4px;border-bottom:1px solid var(--glass-border);font-size:14px;line-height:1.5}.records-list .time{color:var(--text-dim);font-size:12px;white-space:nowrap;padding-top:2px}.sub.center{text-align:center}.sub.tiny{font-size:11px}.pet-dock{position:fixed;bottom:calc(14px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:30;display:flex;gap:8px;padding:8px 12px;background:var(--glass);border:1px solid var(--glass-border);border-radius:999px;-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur))}.pet-dock .dock-btn{padding:4px 6px}.pet-status{position:fixed;bottom:calc(74px + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:30;max-width:86vw;padding:5px 12px;border-radius:999px;background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);font-size:12px;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}.pet-dock .dock-emoji{font-size:24px}.pet-exit{position:fixed;top:calc(12px + env(safe-area-inset-top));right:14px;z-index:30;width:44px;height:44px;border-radius:50%;border:1px solid var(--glass-border);background:var(--glass);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));font-size:20px;cursor:pointer;transition:transform .15s var(--ease)}.pet-exit:hover{transform:scale(1.08)}.pet-exit:active{transform:scale(.92)}.memory-head{display:flex;align-items:center;justify-content:space-between;font-weight:600}.memory-refresh{border:1px solid var(--glass-border);background:transparent;color:var(--text-dim);border-radius:999px;padding:3px 12px;font-size:12px;cursor:pointer;transition:color .15s var(--ease),border-color .15s var(--ease)}.memory-refresh:hover{color:var(--text);border-color:var(--text-dim)}.memory-day{margin-top:14px}.memory-day-label{position:sticky;top:64px;z-index:5;width:fit-content;margin:0 auto 8px;padding:2px 14px;border-radius:999px;background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));font-size:12px;color:var(--text-dim)}.memory-card{display:flex;align-items:flex-start;gap:12px}.memory-emoji{font-size:22px;line-height:1.4}.memory-body{flex:1;min-width:0}.memory-title{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.memory-kind{font-size:11px;font-weight:400;color:var(--accent);border:1px solid var(--glass-border);border-radius:999px;padding:0 8px}.memory-desc{margin-top:2px;font-size:12px;color:var(--text-dim);line-height:1.5}.memory-time{margin-top:4px;font-size:11px;color:var(--text-dim);opacity:.8}.memory-del{border:none;background:transparent;color:var(--text-dim);font-size:16px;line-height:1;padding:4px 6px;cursor:pointer;opacity:.5;transition:opacity .15s var(--ease),color .15s var(--ease)}.memory-del:hover{opacity:1;color:#ff6b6b}.memory-confirm{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);white-space:nowrap;padding-top:4px}.memory-confirm button{border-radius:999px;padding:2px 10px;font-size:12px;cursor:pointer;border:1px solid var(--glass-border)}.memory-yes{background:#ff6b6b29;border-color:#ff6b6b73!important;color:#ff8a8a}.memory-no{background:transparent;color:var(--text-dim)}.memory-head-actions{display:inline-flex;align-items:center;gap:8px}.memory-form{display:flex;flex-direction:column;gap:8px}.memory-input{background:var(--glass);border:1px solid var(--glass-border);border-radius:var(--radius-md);color:var(--text);padding:8px 12px;font-size:13px;outline:none;transition:border-color .15s var(--ease);font-family:inherit}.memory-input:focus{border-color:var(--accent)}.memory-form-actions{display:flex;justify-content:flex-end;gap:8px}.memory-form-actions button{border-radius:999px;padding:4px 14px;font-size:12px;cursor:pointer;border:1px solid var(--glass-border)}.memory-form-actions .memory-yes:disabled{opacity:.55;cursor:default}.unbind-row{margin-top:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.unbind-btn{font-size:12px;padding:3px 12px;opacity:.7}.unbind-warn{font-size:12px;color:#ff8a8a}.btn.danger{background:#ff6b6b29;border-color:#ff6b6b73;color:#ff8a8a;font-size:12px;padding:3px 12px}.boot-fallback{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:radial-gradient(ellipse at 30% 20%,var(--bg2),var(--bg1) 70%);color:var(--text-dim);font-size:14px}.boot-orb{font-size:42px;animation:breathe 2.2s var(--ease) infinite}@keyframes breathe{0%,to{transform:scale(1);opacity:.85}50%{transform:scale(1.12);opacity:1}}.boot-retry{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.outbox-pill{position:fixed;top:58px;left:50%;transform:translate(-50%);z-index:30;border:1px solid var(--glass-border);background:var(--glass-strong);-webkit-backdrop-filter:blur(var(--blur));backdrop-filter:blur(var(--blur));color:var(--text);font-size:12px;padding:6px 14px;border-radius:999px;cursor:pointer;box-shadow:var(--shadow-lg);animation:breathe 2.4s var(--ease) infinite}.stage-error{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:flex;align-items:center;justify-content:center;background:#05060f8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.stage-error-card{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:300px;text-align:center;padding:26px 22px;border-radius:var(--radius-lg);border:1px solid var(--glass-border);background:var(--glass-strong);box-shadow:var(--shadow-lg);font-size:13px;color:var(--text-dim)}.stage-error-emoji{font-size:40px}
