:root{--bg: #0e0e14;--bg-card: #1a1a24;--bg-elev: #232331;--fg: #ececf2;--fg-dim: #9a9ab0;--accent: #7c6cff;--accent-2: #ff6c9c;--good: #4ad6a0;--warn: #ffc357;--bad: #ff6b6b;--radius: 18px;--shadow: 0 12px 40px rgba(0, 0, 0, .45);color-scheme:dark}*{box-sizing:border-box}*{scrollbar-width:thin;scrollbar-color:#3a3a4a transparent}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#3a3a4a;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background:#4a4a5e}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 80% at 50% -10%,#1b1b2c 0%,var(--bg) 55%);color:var(--fg);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none;overflow:hidden}.app{max-width:480px;margin:0 auto;height:100%;min-height:0;display:flex;flex-direction:column;padding:14px 14px 0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:4px 2px 12px;flex:0 0 auto}.topbar h1{font-size:17px;font-weight:700;letter-spacing:.2px;margin:0}.topbar .sub{color:var(--fg-dim);font-size:12px;font-weight:500}.iconbtn{background:var(--bg-elev);border:1px solid #2e2e3e;color:var(--fg);border-radius:12px;padding:8px 12px;font-size:13px;font-weight:600;cursor:pointer}.iconbtn:active{transform:scale(.96)}.authbar{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--fg-dim);padding:0 2px 10px;flex-wrap:wrap}.authbar-who{color:var(--good);font-weight:600}.authbar-input{flex:1;min-width:140px;background:var(--bg-elev);border:1px solid #2e2e3e;color:var(--fg);border-radius:10px;padding:7px 10px;font-size:12px}.authbar-btn{background:var(--bg-elev);border:1px solid #2e2e3e;color:var(--fg);border-radius:10px;padding:7px 12px;font-size:12px;font-weight:600;cursor:pointer}.authbar-btn:active{transform:scale(.96)}.authbar-err{color:var(--bad);width:100%}.topbar-right{display:flex;align-items:center;gap:8px}.segmented{display:inline-flex;background:var(--bg-elev);border:1px solid #2e2e3e;border-radius:12px;overflow:hidden}.segmented button{background:transparent;border:none;color:var(--fg-dim);font-size:12px;font-weight:700;padding:8px 12px;cursor:pointer}.segmented button.sel{background:var(--accent);color:#fff}.deck{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:0;touch-action:pan-y}.swipe-badge{position:absolute;top:14px;z-index:5;font-size:15px;font-weight:800;letter-spacing:1px;padding:6px 12px;border-radius:10px;pointer-events:none}.swipe-badge.save{right:14px;color:var(--good);border:2px solid var(--good);transform:rotate(8deg)}.swipe-badge.skip{left:14px;color:var(--fg-dim);border:2px solid var(--fg-dim);transform:rotate(-8deg)}.swipe-badge.back{left:50%;translate:-50% 0;bottom:14px;top:auto;color:var(--accent);border:2px solid var(--accent)}.flash{position:absolute;z-index:8;top:50%;left:50%;transform:translate(-50%,-50%);background:#4ad6a029;border:1px solid var(--good);color:var(--good);font-weight:800;padding:10px 18px;border-radius:12px;pointer-events:none}.deck-tools{display:flex;align-items:center;justify-content:space-between;padding:8px 4px 0}.deck-tools-left{display:flex;gap:14px;align-items:center}.linkbtn{background:none;border:none;color:var(--accent);font-size:12px;font-weight:600;cursor:pointer;padding:0}.linkbtn:disabled{opacity:.5;cursor:default}.swipe-hint{color:var(--fg-dim);font-size:11px}.ai-name{color:var(--accent-2);font-size:12px;font-weight:700;font-style:italic}.tbtn.save.done{background:#ff6c9c2e;border-color:var(--accent-2);color:var(--accent-2)}.saved-list{flex:1;display:flex;flex-direction:column;gap:10px;overflow:auto;padding:6px 2px 16px}.saved-row{background:var(--bg-card);border:1px solid #2b2b3a;border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.saved-title{font-weight:700;font-size:15px}.saved-meta{color:var(--fg-dim);font-size:12px;margin-top:2px}.saved-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.saved-actions .tbtn.sm{width:40px;height:40px;font-size:14px}.iconbtn.danger{color:var(--bad);border-color:#ff6b6b66}.empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--fg-dim);text-align:center}.empty-emoji{font-size:44px;color:var(--accent-2)}.card{width:100%;background:linear-gradient(160deg,var(--bg-card),#15151f);border:1px solid #2b2b3a;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px;display:flex;flex-direction:column;gap:14px;will-change:transform}.card .emotion{display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--accent-2)}.card .emotion .dot{width:10px;height:10px;border-radius:50%;background:currentColor}.card h2{margin:0;font-size:22px;font-weight:700}.meta{display:flex;flex-wrap:wrap;gap:8px}.tag{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:11px;font-weight:600;color:var(--fg-dim);background:var(--bg-elev);border:1px solid #2e2e3e;border-radius:999px;padding:4px 10px}button.tag{cursor:pointer;font:inherit}.seedtag{color:var(--warn);border-color:#ffc35761}.tag.algo{color:var(--accent);border-color:#3a3560}.movechips{display:flex;flex-wrap:wrap;gap:6px}.movechip{font-size:11px;font-weight:600;color:var(--good);background:#4ad6a014;border:1px solid rgba(74,214,160,.3);border-radius:8px;padding:3px 8px}.viz{display:flex;flex-direction:column;gap:5px}.viz .row{display:flex;align-items:center;gap:7px}.viz .label{width:46px;font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.5px}.viz .steps{display:flex;gap:3px;flex:1}.viz .step{flex:1;height:16px;border-radius:4px;background:#26263400;border:1px solid #2a2a38}.viz .step.on{background:var(--accent);border-color:var(--accent)}.viz .step.acc{background:var(--accent-2);border-color:var(--accent-2)}.codeblock{background:#0b0b12;border:1px solid #23232f;border-radius:12px;padding:12px;font-family:JetBrains Mono,ui-monospace,SF Mono,Menlo,monospace;font-size:11px;line-height:1.5;color:#c7c7e0;white-space:pre-wrap;max-height:220px;overflow:auto}.errbar{color:var(--bad);font-size:12px;background:#ff6b6b14;border:1px solid rgba(255,107,107,.3);border-radius:10px;padding:8px 10px}.transport{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 0 calc(12px + env(safe-area-inset-bottom));flex:0 0 auto}.tbtn{border:none;border-radius:50%;cursor:pointer;display:grid;place-items:center;font-size:20px;color:var(--fg);background:var(--bg-elev);border:1px solid #2e2e3e}.tbtn.sm{width:48px;height:48px;font-size:16px}.tbtn.lg{width:68px;height:68px;font-size:26px}.tbtn.play{background:var(--accent);border-color:var(--accent)}.tbtn.save{background:#4ad6a026;border-color:var(--good);color:var(--good)}.tbtn.skip{color:var(--fg-dim)}.tbtn.mutate{color:var(--warn);background:#ffc3571f;border-color:#ffc35773}.tbtn:active{transform:scale(.93)}.tbtn:disabled{opacity:.4;cursor:default}#strudel-host{display:none;background:#0b0b12;overflow:hidden}#strudel-host canvas{max-height:72px!important}#strudel-host strudel-editor{display:block;position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;min-height:0;overflow:hidden}#strudel-host .cm-editor{background:#0b0b12!important;height:100%!important}#strudel-host .cm-scroller{overflow:auto!important}.mutate-group{display:inline-flex;align-items:stretch;background:var(--bg-elev);border:1px solid #2e2e3e;border-radius:14px;overflow:hidden;height:48px}.mutate-group button{width:34px;background:transparent;border:none;border-right:1px solid #2a2a38;color:var(--fg-dim);font-size:13px;font-weight:700;cursor:pointer}.mutate-group button:last-child{border-right:none;color:var(--accent-2)}.mutate-group button:active{background:var(--accent);color:#fff}.cardx{position:relative;flex:1;display:flex;flex-direction:column;background:linear-gradient(160deg,var(--bg-card),#15151f);border:1px solid #2b2b3a;border-radius:var(--radius);box-shadow:var(--shadow);margin:6px 0 10px;overflow:hidden;min-height:0}.tabbar{display:flex;gap:18px;justify-content:center;padding:8px 10px 10px;border-top:1px solid #23232f;flex:0 0 auto}.tabbar button{background:transparent;border:none;color:var(--fg-dim);font-size:11px;font-weight:600;letter-spacing:.6px;text-transform:uppercase;padding:4px 2px;cursor:pointer;position:relative;transition:color .12s}.tabbar button.sel{color:var(--fg)}.tabbar button.sel:after{content:"";position:absolute;left:50%;transform:translate(-50%);bottom:-4px;width:16px;height:2px;border-radius:2px;background:var(--accent)}.cardx-body{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.pulse{display:flex;flex-direction:column;gap:12px;min-height:0;padding:16px;overflow:auto}.pulse h2{margin:0;font-size:22px;font-weight:700}.viz{display:flex;flex-direction:column;gap:6px;margin-top:2px}.vrow{display:flex;align-items:center;gap:8px}.vlabel{width:40px;font-size:10px;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.5px}.vsteps{display:flex;gap:3px;flex:1}.vstep{flex:1;height:18px;border-radius:4px;background:#20202c;border:1px solid #2a2a38;transition:opacity .06s linear}.vstep.head{border-color:#ffffff73}.ai-row{display:flex;align-items:center;gap:10px;margin-top:6px}.repl-slot{flex:1;min-height:0;position:relative;overflow:hidden}.repl-loading{color:var(--fg-dim);font-size:13px;padding:16px}.tune{flex:1;min-height:0;display:flex;flex-direction:column;gap:14px;overflow:auto;padding:16px}.tune-now{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--fg-dim);background:var(--bg-elev);border:1px solid #2e2e3e;border-radius:10px;padding:8px 12px}.tune-now-dot{width:10px;height:10px;border-radius:50%}.emo.playing{box-shadow:0 0 0 1px var(--c) inset,0 0 12px color-mix(in srgb,var(--c) 50%,transparent)}.emo-play{color:var(--c);font-size:9px}.swipe-hint{color:var(--fg-dim);font-size:11px;text-align:center;padding:2px 0 0}.hint{color:var(--fg-dim);font-size:12px;text-align:center;padding:6px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:50;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:480px;max-height:88vh;overflow:auto;background:var(--bg);border-top-left-radius:22px;border-top-right-radius:22px;border:1px solid #2b2b3a;padding:10px 16px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:16px}.sheet-grip{width:42px;height:5px;border-radius:3px;background:#3a3a4a;margin:4px auto 6px}.sheet-done{align-self:stretch;text-align:center;padding:12px}.picker{display:flex;flex-direction:column;gap:10px}.picker-head{font-size:13px;font-weight:700;color:var(--fg);display:flex;align-items:center;justify-content:space-between}.picker-actions{display:flex;gap:6px}.picker-actions button{background:var(--bg-elev);border:1px solid #2e2e3e;color:var(--fg-dim);border-radius:8px;font-size:11px;padding:3px 9px;cursor:pointer}.axis{display:flex;flex-direction:column;gap:5px}.axis-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}.axis-emos{display:flex;flex-wrap:wrap;gap:6px}.emo{--c: var(--accent);display:inline-flex;align-items:center;gap:5px;background:var(--bg-elev);border:1px solid #2e2e3e;color:var(--fg);border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer}.emo .emo-i{color:var(--c);font-weight:800;letter-spacing:1px}.emo.sel{border-color:var(--c);background:color-mix(in srgb,var(--c) 16%,var(--bg-elev));box-shadow:0 0 0 1px var(--c) inset}.emo.neutral{align-self:flex-start}.emo:active{transform:scale(.96)}.movecat{display:flex;flex-direction:column;gap:4px}.movecat-label{font-size:11px;font-weight:700;color:var(--fg-dim);text-transform:uppercase;letter-spacing:.4px;margin-top:4px}.moverow{display:flex;align-items:center;gap:10px;background:transparent;border:1px solid #23232f;border-radius:10px;padding:9px 12px;color:var(--fg-dim);font-size:13px;font-weight:600;cursor:pointer;text-align:left}.moverow.on{color:var(--fg);border-color:#3a3560;background:#7c6cff14}.moverow-check{width:14px;color:var(--accent);font-weight:800}.moverow-label{flex:1}.moverow-fit{font-size:10px;color:var(--good);border:1px solid rgba(74,214,160,.3);border-radius:6px;padding:1px 6px}
