:root{--ivory:#fffaf0;--cream:#f6eedb;--paper:#fffaf0eb;--forest:#1d3a33;--forest-2:#2c5247;--sage:#8fb996;--sage-d:#4f7d5b;--blush:#f4b6c2;--blush-d:#c9677d;--gold:#c9a35c;--gold-l:#ead7a4;--lilac:#b9a6e8;--ink:#26332e;--ink-2:#55625c;--moon:#9d8fe0;--sun:#e9a23b;--star:#5d66c9;--rainbow:linear-gradient(90deg, #ff9fb4, #ffc27a, #ffe27a, #9be38b, #7fd6e8, #8fa8ff, #c59bff);--r:22px;--shadow:0 10px 30px #14281e2e, 0 2px 6px #14281e14;--safe-b:env(safe-area-inset-bottom,0px);--safe-t:env(safe-area-inset-top,0px);--f-title:"Shippori Mincho B1", "Hiragino Mincho ProN", serif;--f-body:"Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Hiragino Sans", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{height:100%;color:var(--ink);font-family:var(--f-body);overscroll-behavior:none;background:#0d1a17;margin:0;overflow:hidden}canvas#gl{touch-action:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;z-index:2;position:fixed;inset:0}#ui>*{pointer-events:auto}#ui .passthru{pointer-events:none}#ui .passthru>*{pointer-events:auto}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}#ctxlost{z-index:99;color:var(--ivory);background:#0d1a17d9;place-items:center;font-size:15px;display:none;position:fixed;inset:0}body.ctx-lost #ctxlost{display:grid}.btn{letter-spacing:.04em;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:48px;padding:0 22px;font-size:16px;font-weight:700;transition:transform .15s,box-shadow .2s,background .2s;display:inline-flex}.btn:active{transform:scale(.96)}.btn-primary{background:linear-gradient(180deg, #2f5d4f, var(--forest));color:var(--ivory);border:1px solid #ead7a48c;box-shadow:0 6px 18px #1d3a3359,inset 0 1px #ffffff2e}.btn-ghost{background:var(--paper);color:var(--forest);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);border:1px solid #c9a35c73}.btn-round{border-radius:50%;width:48px;height:48px;padding:0}.btn svg{width:22px;height:22px}.btn[disabled]{opacity:.45;pointer-events:none}.hud-top{top:calc(10px + var(--safe-t));align-items:center;gap:8px;display:flex;position:absolute;left:12px;right:12px}.chip{background:var(--paper);height:40px;box-shadow:var(--shadow);color:var(--forest);border:1px solid #c9a35c59;border-radius:999px;align-items:center;gap:8px;padding:0 14px 0 6px;font-size:13px;font-weight:700;display:inline-flex}.chip .dot{background:var(--forest);width:28px;height:28px;color:var(--gold-l);border-radius:50%;place-items:center;display:grid}.chip .dot svg{width:16px;height:16px}.meter{background:#1d3a331f;border-radius:3px;width:64px;height:6px;overflow:hidden}.meter>i{background:linear-gradient(90deg, var(--sage), var(--gold));border-radius:3px;height:100%;transition:width .8s cubic-bezier(.2,.8,.2,1);display:block}.spacer{flex:1}.dock{left:0;right:0;bottom:calc(14px + var(--safe-b));justify-content:center;align-items:center;gap:12px;padding:0 16px;display:flex;position:absolute}.dock .btn-primary{min-width:200px;height:58px;font-size:17px}.badge-view{top:calc(64px + var(--safe-t));color:var(--ivory);letter-spacing:.08em;white-space:nowrap;background:#1d3a33d1;border-radius:999px;padding:6px 14px;font-size:12px;position:absolute;left:50%;transform:translate(-50%)}.bubble{max-width:min(78vw,300px);box-shadow:var(--shadow);color:var(--ink);pointer-events:none;white-space:pre-wrap;background:#fffdf7;border-radius:18px;padding:10px 16px;font-size:15px;font-weight:700;line-height:1.5;animation:.28s cubic-bezier(.2,1.4,.4,1) pop;position:absolute;transform:translate(-50%,-100%)}.bubble:after{content:"";border:8px solid #0000;border-top-color:#fffdf7;border-bottom:0;margin-left:-8px;position:absolute;bottom:-8px;left:50%}.bubble.mimiru{background:#fff0f4}.bubble.mimiru:after{border-top-color:#fff0f4}@keyframes pop{0%{opacity:0;transform:translate(-50%,-88%)scale(.7)}}.dialog{left:12px;right:12px;bottom:calc(14px + var(--safe-b));border-radius:var(--r);background:var(--paper);min-height:128px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);border:1px solid #c9a35c80;padding:26px 20px 18px;position:absolute}.dialog .name{color:#fff;letter-spacing:.1em;border-radius:999px;padding:5px 14px;font-size:13px;font-weight:700;position:absolute;top:-14px;left:18px}.dialog .name.poteri{background:var(--sage-d)}.dialog .name.mimiru{background:var(--blush-d)}.dialog .name.darumon{background:#6e63a3}.dialog .name.narr{display:none}.dialog .text{min-height:3.5em;font-size:17px;line-height:1.75}.dialog.narr .text{font-family:var(--f-title);text-align:center;color:var(--forest);font-size:17px}.dialog .next{border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);width:10px;height:10px;animation:1s infinite nudge;position:absolute;bottom:10px;right:18px;transform:rotate(45deg)}.dialog .skip{color:var(--ivory);background:#1d3a3399;border-radius:999px;min-height:32px;padding:6px 12px;font-size:12px;position:absolute;top:-40px;right:12px}@keyframes nudge{50%{transform:translateY(3px)rotate(45deg)}}.sheet{max-height:82vh;padding:26px 18px calc(22px + var(--safe-b));background:linear-gradient(#fffaf0f7,#f6eedbfa);border-radius:28px 28px 0 0;animation:.45s cubic-bezier(.2,.9,.2,1) up;position:absolute;bottom:0;left:0;right:0;overflow:auto;box-shadow:0 -10px 40px #0a1e1440}.sheet:before{content:"";background:#1d3a332e;border-radius:2px;width:40px;height:4px;margin-left:-20px;position:absolute;top:9px;left:50%}@keyframes up{0%{transform:translateY(100%)}}.sheet h2{font-family:var(--f-title);color:var(--forest);letter-spacing:.06em;margin:2px 0 4px;font-size:22px;font-weight:800}.sheet .lead{color:var(--ink-2);margin:0 0 16px;font-size:14px;line-height:1.6}.moods{grid-template-columns:repeat(5,1fr);gap:8px;display:grid}.mood{color:var(--forest);background:#fff;border:1px solid #c9a35c40;border-radius:18px;flex-direction:column;align-items:center;gap:6px;min-height:92px;padding:12px 2px 10px;font-size:12.5px;font-weight:700;display:flex;box-shadow:0 3px 10px #14281e0f}.mood svg{width:38px;height:38px}.mood:active{transform:scale(.95)}.cares{gap:10px;display:grid}.care{text-align:left;background:#fff;border:1px solid #c9a35c38;border-radius:18px;grid-template-columns:52px 1fr auto;align-items:center;gap:12px;min-height:76px;padding:14px;display:grid;position:relative;box-shadow:0 3px 10px #14281e0f}.care .ic{border-radius:16px;place-items:center;width:52px;height:52px;display:grid}.care .ic svg{width:28px;height:28px}.care.stretch .ic{color:var(--moon);background:#efeaff}.care.dance .ic{color:var(--sun);background:#fff1d9}.care.rest .ic{color:var(--star);background:#e7eaff}.care b{color:var(--forest);font-size:16px;display:block}.care small{color:var(--ink-2);margin-top:2px;font-size:12.5px;line-height:1.4;display:block}.care .min{color:var(--sage-d);white-space:nowrap;background:#eef6ee;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700}.care .rec{color:#fff;background:var(--blush-d);border-radius:999px;padding:2px 9px;font-size:11px;font-weight:700;position:absolute;top:-8px;left:14px}.note{color:var(--ink-2);text-align:center;margin-top:14px;font-size:12.5px}.runner{left:12px;right:12px;bottom:calc(14px + var(--safe-b));border-radius:var(--r);background:var(--paper);box-shadow:var(--shadow);border:1px solid #c9a35c73;grid-template-columns:84px 1fr;align-items:center;gap:14px;padding:18px;display:grid;position:absolute}.ring{width:84px;height:84px;position:relative}.ring svg{width:84px;height:84px;transform:rotate(-90deg)}.ring span{color:var(--forest);place-items:center;font-size:20px;font-weight:700;display:grid;position:absolute;inset:0}.runner .step{color:var(--forest);font-size:17px;font-weight:700;line-height:1.55}.runner .sub{color:var(--ink-2);margin-top:4px;font-size:12px}.runner .row{grid-column:1/-1;gap:10px;display:flex}.runner .row .btn{flex:1}.dots{gap:5px;margin-top:8px;display:flex}.dots i{background:#1d3a3324;border-radius:2px;width:18px;height:4px}.dots i.on{background:var(--sage-d)}.title-card{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.title-card .inner{text-align:center;color:var(--ivory);text-shadow:0 2px 20px #00000059;animation:1.2s both fadein}.title-card .k{letter-spacing:.4em;color:var(--gold-l);font-size:13px}.title-card .t{font-family:var(--f-title);letter-spacing:.12em;margin-top:6px;font-size:clamp(28px,9vw,44px);font-weight:800}@keyframes fadein{0%{opacity:0;filter:blur(6px);transform:translateY(10px)}}.hint{left:0;right:0;bottom:calc(18% + var(--safe-b));text-align:center;color:#fff7e1e6;letter-spacing:.3em;pointer-events:none;font-size:15px;font-family:var(--f-title);animation:2.6s ease-in-out infinite breathe;position:absolute}@keyframes breathe{50%{opacity:.35}}.flash{pointer-events:none;background:#fffbe8;animation:1.6s ease-out forwards flash;position:absolute;inset:0}@keyframes flash{0%{opacity:0}12%{opacity:1}to{opacity:0}}.fade-black{pointer-events:none;background:#070d0b;transition:opacity 1.4s;position:absolute;inset:0}.reward{text-align:center;background:var(--paper);width:min(86vw,340px);box-shadow:var(--shadow);border:1px solid #c9a35c8c;border-radius:24px;padding:20px 18px 16px;animation:.5s cubic-bezier(.2,1.4,.4,1) pop2;position:absolute;top:18%;left:50%;transform:translate(-50%)}@keyframes pop2{0%{opacity:0;transform:translate(-50%)scale(.6)}}.reward .k{letter-spacing:.3em;color:var(--gold);font-size:11px;font-weight:700}.reward .t{font-family:var(--f-title);color:var(--forest);margin:4px 0;font-size:22px;font-weight:800}.reward p{color:var(--ink-2);margin:6px 0 12px;font-size:14px;line-height:1.6}.reward .energy{color:var(--sage-d);align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.loading{color:var(--ivory);z-index:5;background:radial-gradient(120% 80% at 50% 30%,#23463d,#0b1613);place-items:center;transition:opacity .8s;display:grid;position:absolute;inset:0}.loading .logo{text-align:center}.loading .logo svg{width:92px;height:92px}.loading .t{font-family:var(--f-title);letter-spacing:.14em;margin-top:14px;font-size:34px;font-weight:800}.loading .s{letter-spacing:.32em;color:var(--gold-l);margin-top:6px;font-size:13px}.loading .bar{background:#ffffff26;border-radius:1px;width:160px;height:2px;margin:26px auto 0;overflow:hidden}.loading .bar i{background:var(--gold-l);width:0;height:100%;transition:width .4s;display:block}.list{gap:8px;display:grid}.ep{text-align:left;background:#fff;border:1px solid #c9a35c33;border-radius:16px;align-items:center;gap:12px;min-height:56px;padding:12px 14px;display:flex}.ep .n{width:32px;height:32px;color:var(--ivory);background:var(--forest);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:700;display:grid}.ep.locked{opacity:.5}.ep.locked .n{background:#b7bcb6}.ep b{color:var(--forest);font-size:15px}.row-set{border-bottom:1px solid #1d3a3314;justify-content:space-between;align-items:center;min-height:56px;padding:12px 4px;font-size:15px;display:flex}.toggle{background:#c9cfc9;border-radius:15px;width:52px;height:30px;transition:background .2s;position:relative}.toggle:after{content:"";background:#fff;border-radius:50%;width:24px;height:24px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.toggle.on{background:var(--sage-d)}.toggle.on:after{left:25px}.small{color:var(--ink-2);font-size:12px;line-height:1.7}.confirm{background:#0a141073;place-items:center;display:grid;position:absolute;inset:0}.confirm .box{background:var(--ivory);width:min(86vw,340px);box-shadow:var(--shadow);text-align:center;border-radius:22px;padding:20px}.confirm .box p{font-size:15px;line-height:1.6}.confirm .box .row{gap:10px;display:flex}.confirm .box .row .btn{flex:1}.debug{top:calc(60px + var(--safe-t));color:#cfe;background:#000000a8;border-radius:12px;width:210px;padding:10px;font:11px/1.5 ui-monospace,monospace;position:absolute;right:8px}.debug button{color:#fff;background:#2c5247;border-radius:6px;min-height:30px;margin:2px;padding:5px 8px;font-size:11px;display:inline-block}@media (prefers-reduced-motion:reduce){*{transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (min-width:720px){.sheet,.dialog,.runner{width:560px;left:50%;right:auto;transform:translate(-50%)}.sheet{animation:none}}#ui .title-card,#ui .hint,#ui .flash,#ui .fade-black,#ui .bubble{pointer-events:none}
