:root{--bg:#fafaf7;--fg:#141414;--muted:#8a8a85;--line:#e4e4de;--card:#fff;--accent:#141414;--accent-fg:#fafaf7;--low:#c8412b;--summary:#f1f0ea}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#111;--fg:#ececea;--muted:#7d7d78;--line:#2a2a28;--card:#191918;--accent:#ececea;--accent-fg:#111;--low:#ff7a5c;--summary:#1d1d1b}}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--fg)}body{word-break:keep-all;-webkit-font-smoothing:antialiased;font-family:Pretendard,-apple-system,BlinkMacSystemFont,Apple SD Gothic Neo,Malgun Gothic,sans-serif;font-size:16px;line-height:1.6}button{font:inherit;color:inherit;cursor:pointer}.screen{max-width:480px;min-height:100dvh;margin:0 auto;padding:48px 16px 40px}.eyebrow{color:var(--muted);letter-spacing:.02em;font-size:13px}h1{letter-spacing:-.02em;margin:8px 0 16px;font-size:34px;line-height:1.25}h2{color:var(--muted);margin-bottom:10px;font-size:14px;font-weight:600}.lead{margin-bottom:32px;font-size:17px}.foot{color:var(--muted);margin-top:48px;font-size:12px}.hint{color:var(--muted);margin:20px 0 24px;font-size:14px}button.primary,.actions button,.choice button{border:1px solid var(--line);background:var(--card);text-align:left;border-radius:12px;width:100%;padding:15px 16px;transition:transform 80ms;display:block}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);text-align:center;font-weight:700}button:active{transform:scale(.98)}.intro{flex-direction:column;justify-content:center;display:flex}.intro h1{font-size:42px}.records{margin-top:40px}.records li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:8px 0;font-size:14px;list-style:none;display:flex}.records li span:last-child{color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:16px;margin:16px 0;padding:4px 18px}.card .row{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;padding:13px 0;display:flex}.card .row:last-child{border-bottom:0}.card dt{color:var(--muted);flex:none}.card dd{text-align:right;font-weight:600}.reveal{animation:.45s both reveal}@keyframes reveal{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.play{padding-top:0}.stage{z-index:2;background:var(--bg);padding-top:10px;position:sticky;top:0}.status{background:var(--bg);border-bottom:1px solid var(--line);padding:10px 0}.when{align-items:baseline;gap:10px;display:flex}.when strong{font-size:22px}.when span{color:var(--muted);font-size:13px}.speed{border:1px solid var(--line);background:var(--card);letter-spacing:-2px;border-radius:999px;margin-left:auto;padding:2px 12px;font-size:12px}.gauges{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px;display:grid}.gauge{grid-template-rows:auto auto;grid-template-columns:auto 1fr;column-gap:6px;font-size:12px;display:grid}.gauge .label{color:var(--muted)}.gauge .val{text-align:right;font-weight:600}.gauge .bar{background:var(--line);border-radius:2px;grid-area:2/1/auto/3;height:4px;margin-top:3px;overflow:hidden}.gauge .bar i{background:var(--fg);height:100%;transition:width .4s;display:block}.gauge.low .bar i,.gauge.low .val{color:var(--low);background-color:#0000}.gauge.low .bar i{background:var(--low)}.log{padding-top:12px;list-style:none}.line{grid-template-columns:84px 1fr;gap:8px;padding:7px 0;font-size:15px;display:grid}.line time{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:2px;font-size:13px}.line.summary{background:var(--summary);border-radius:10px;margin:6px -10px;padding:9px 10px;font-size:14px}.picked{color:var(--muted);margin-top:2px;font-size:14px;display:block}.choice{border:1px solid var(--fg);background:var(--card);border-radius:16px;margin-top:16px;padding:18px 16px}.choice p{margin-bottom:14px;font-weight:600}.choice button{background:var(--bg);margin-top:8px}.spacer{height:40px}.end h1{font-size:38px}.stat{color:var(--muted);border-left:2px solid var(--line);margin:20px 0;padding-left:12px;font-size:14px}.missed{margin-top:32px}.missed-item{border-bottom:1px solid var(--line);padding:12px 0;font-size:14px}.missed-item time{color:var(--muted);font-size:12px}.grey{color:var(--muted);border:1px dashed var(--line);border-radius:10px;margin-top:6px;padding:8px 12px;display:block}.actions{gap:10px;margin-top:32px;display:grid}.share-msg{color:var(--muted);word-break:break-all;text-align:center;font-size:13px}.scene{border:1px solid var(--line);background:#efe6d8;border-radius:12px;width:100%;height:auto;display:block}.owner-bob{animation:1.2s steps(2,end) infinite bob}@keyframes bob{50%{transform:translateY(-1px)}}.walker{animation:7s linear infinite walk}@keyframes walk{0%{transform:translate(-16px)}35%{transform:translate(84px)}55%{transform:translate(84px)}90%{transform:translate(-16px)}to{transform:translate(-16px)}}.walk-frames{transform-box:fill-box;transform-origin:50%;animation:7s step-end infinite turn;animation-delay:inherit}@keyframes turn{0%{transform:scaleX(1)}55%{transform:scaleX(-1)}90%{transform:scaleX(1)}}.walker .frame-a{animation:.5s step-end infinite frameA}.walker .frame-b{animation:.5s step-end infinite frameB}@keyframes frameA{0%{opacity:1}50%{opacity:0}}@keyframes frameB{0%{opacity:0}50%{opacity:1}}.bubble{animation:.6s steps(2,end) infinite hop}@keyframes hop{50%{transform:translateY(-1px)}}.glow{animation:1.6s steps(2,end) infinite glow}@keyframes glow{50%{opacity:.75}}@media (prefers-reduced-motion:reduce){.walker,.walk-frames,.owner-bob,.bubble,.glow,.walker .frame-a,.walker .frame-b{animation:none}}.modes{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;display:grid}.modes button{text-align:left;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:12px}.modes button.on{border-color:var(--fg);box-shadow:inset 0 0 0 1px var(--fg)}.modes strong{font-size:15px;display:block}.modes span{color:var(--muted);margin-top:2px;font-size:12px;line-height:1.4;display:block}.license{border-style:dashed}.story{margin:14px 2px 20px}.story p{margin:0 0 8px;font-size:15px}.skip{color:var(--muted);background:0 0;border:0;margin:8px auto 0;padding:10px;font-size:13px;display:block}.react-good{animation:.3s steps(2,end) 3 hopUp}@keyframes hopUp{50%{transform:translateY(-3px)}}.react-bad{animation:none;transform:translateY(2px)}.status .when{flex-wrap:wrap;row-gap:2px}.badge{color:#fff;background:var(--low);border-radius:999px;padding:1px 8px;font-size:11px}.gauge .val em{margin-left:3px;font-size:10px;font-style:normal}.gauge .val em.down{color:var(--low)}.gauge .val em.up{color:#3c8d5a}.gauge{grid-template-rows:auto auto}.gauge .label,.gauge .val{grid-row:1}.log{padding-top:6px}.line{border-bottom:1px solid var(--line);grid-template-columns:78px 1fr;padding:9px 0}.line>div>p{margin:0}.line.current>div>p{font-size:17px;font-weight:600}.line:not(.current){color:color-mix(in srgb, var(--fg) 78%, var(--bg))}.flash{animation:.45s cubic-bezier(.2,.8,.2,1) both lineIn;overflow:hidden}@keyframes flash{0%{opacity:0;background:#4fb3b338;transform:translateY(-6px)}to{opacity:1;background:0 0;transform:none}}.outcome{margin-top:3px;font-size:14px;display:block}.outcome b{color:#fff;border-radius:4px;margin-right:4px;padding:1px 5px;font-size:11px;font-weight:700}.outcome.ok b{background:#3c8d5a}.outcome.ng b{background:var(--low)}.chips{flex-wrap:wrap;gap:4px;margin-top:5px;display:flex}.chips i{border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:12px;font-style:normal}.chips i.down{color:var(--low);border-color:color-mix(in srgb, var(--low) 40%, transparent)}.chips i.up{color:#3c8d5a;border-color:#3c8d5a66}.more{border:1px dashed var(--line);width:100%;color:var(--muted);background:0 0;border-radius:10px;margin-top:10px;padding:12px;font-size:13px;display:block}.play .spacer{height:84px}.playbar{z-index:3;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--bg) 92%, transparent);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);justify-content:center;align-items:center;gap:6px;display:flex;position:fixed;bottom:0;left:0;right:0}.playbar button{border:1px solid var(--line);background:var(--card);border-radius:10px;min-width:44px;min-height:44px;padding:0 10px;font-size:13px}.playbar button.on{background:var(--fg);color:var(--bg);border-color:var(--fg)}.speeds{gap:2px;display:flex}.speeds button{min-width:38px;padding:0 6px}.sheet-wrap{z-index:4;background:#00000047;justify-content:center;align-items:flex-end;animation:.2s both fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.sheet{background:var(--card);width:100%;max-width:480px;padding:18px 16px calc(18px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;animation:.22s ease-out both rise}@keyframes rise{0%{transform:translateY(24px)}}.sheet-date{color:var(--muted);font-size:12px}.sheet-text{margin:4px 0 14px;font-size:17px;font-weight:600}.sheet button{text-align:left;border:1px solid var(--line);background:var(--bg);border-radius:12px;justify-content:space-between;align-items:center;gap:10px;width:100%;min-height:48px;margin-top:8px;padding:12px 14px;display:flex}.sheet button small{color:var(--muted);white-space:nowrap;font-size:12px}.percentile{align-items:center;gap:14px;margin:8px 0 4px;display:flex}.percentile p{margin:0;font-size:15px}.waffle{flex:none;width:72px;height:72px}.waffle rect{fill:var(--line)}.waffle rect.on{fill:var(--fg)}@media (prefers-reduced-motion:reduce){.flash,.react-good,.sheet,.sheet-wrap{animation:none}}.line.month{color:var(--muted);border-bottom:0;padding:4px 0;font-size:13px}.line.month>div>p{font-size:13px}.line.month.current>div>p{color:var(--fg);font-size:14px;font-weight:500}.line.month time{font-size:12px}.stat-line{color:var(--muted);border-left:2px solid #4fb3b3;margin-top:4px;padding-left:8px;font-size:12px;display:block}.stat-line em{opacity:.8;font-style:normal}.line.stat>div>p{color:#2f8f8f;font-weight:600}.basis{margin:2px 2px 12px;font-size:13px;line-height:1.5}.basis em{color:var(--muted);font-size:11px;font-style:normal;display:block}.badge-basis{color:#fff;background:#2f8f8f;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:700}.badge-basis.estimate{background:#b07a2a}.steam rect{animation:2.4s linear infinite steam}@keyframes steam{0%{opacity:0;transform:translateY(0)}20%{opacity:.8}to{opacity:0;transform:translateY(-10px)}}.pole{animation:1.2s steps(4,end) infinite pole}@keyframes pole{to{transform:translateY(-4px)}}.spin{transform-box:fill-box;transform-origin:50%;animation:1.4s steps(8,end) infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.blink{animation:1s step-end infinite blink}@keyframes blink{50%{opacity:.15}}.neon{animation:3s step-end infinite neon}@keyframes neon{0%,46%,50%,to{opacity:1}47%,49%{opacity:.3}}.sway{transform-box:fill-box;transform-origin:top;animation:2s ease-in-out infinite sway}@keyframes sway{50%{transform:rotate(6deg)}}.lift{animation:1.6s steps(2,end) infinite lift}@keyframes lift{50%{transform:translateY(-5px)}}.roll{animation:3s ease-in-out infinite alternate roll}@keyframes roll{to{transform:translate(26px)}}.pass{animation:9s linear infinite pass}@keyframes pass{0%{transform:translate(-40px)}to{transform:translate(200px)}}.pass.back{animation-name:passBack;animation-duration:12s}@keyframes passBack{0%{transform:translate(200px)}to{transform:translate(-60px)}}.cloud{animation:40s linear infinite cloud}@keyframes cloud{0%{transform:translate(-50px)}to{transform:translate(180px)}}.dance{animation:.5s steps(2,end) infinite hop}@media (prefers-reduced-motion:reduce){.steam rect,.pole,.spin,.blink,.neon,.sway,.lift,.roll,.pass,.cloud,.dance{animation:none}}.weather rect{animation:3.2s linear infinite fall}.weather.rain rect{animation-duration:.7s}.weather.leaf rect{animation-name:drift;animation-duration:4.5s}@keyframes fall{0%{transform:translateY(-20px)}to{transform:translateY(80px)}}@keyframes drift{0%{transform:translate(-6px,-20px)}to{transform:translate(14px,80px)}}@media (prefers-reduced-motion:reduce){.weather rect{animation:none}}.gallery{max-width:1100px;margin:0 auto;padding:24px 16px}.gallery-row{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-bottom:18px;display:grid}.gallery figure{margin:0}.gallery figcaption{color:var(--muted);text-align:center;font-size:12px}.gallery h2 small{color:var(--muted);font-size:12px;font-weight:400}.traits h3{color:var(--muted);margin:14px 0 6px;font-size:13px;font-weight:600}.trait-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.trait-card{text-align:left;border:1.5px solid var(--line);background:var(--card);border-radius:12px;flex-direction:column;gap:3px;min-height:92px;padding:10px;display:flex}.trait-card .trait-top{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.trait-card b{font-size:15px}.trait-card i{color:#555;background:#e4e4de;border-radius:999px;padding:0 6px;font-size:11px;font-style:normal}.trait-card.rare i{color:#fff;background:#2f8f8f}.trait-card.epic i{color:#fff;background:#c9962b}.trait-card.epic{border-color:#c9962b}.trait-card .pro{color:#3c8d5a;font-size:12px}.trait-card .con{color:var(--low);font-size:12px}.trait-card small{color:var(--muted);font-size:11px}.trait-card.on{border-color:var(--fg);box-shadow:inset 0 0 0 1.5px var(--fg)}.trait-card.neg{border-style:dashed}.trait-card.fate{opacity:1;cursor:default;grid-column:1/-1}.traits .primary{margin-top:14px}.traits .primary:disabled{opacity:.45}.traits-line{font-size:14px;font-weight:600}.trait-badge{color:#c9962b;margin:0 4px;font-size:11px;font-weight:700}@keyframes lineIn{0%{opacity:0;background:#4fb3b338;max-height:0;padding-top:0;padding-bottom:0;transform:translateY(14px)}60%{opacity:1}to{opacity:1;background:0 0;max-height:320px;transform:none}}@media (prefers-reduced-motion:reduce){.flash{animation:none}}.playbar .pace{color:var(--muted);white-space:nowrap;font-size:12px}.line time .report{color:var(--muted);opacity:.45;cursor:pointer;background:0 0;border:0;margin-left:4px;padding:2px 6px;font-size:12px;display:inline-block}.line time .report:hover,.line time .report:focus-visible{opacity:1}.toast{background:var(--fg);color:var(--bg);z-index:30;border-radius:10px;max-width:calc(100% - 32px);padding:10px 14px;font-size:13px;position:fixed;bottom:88px;left:50%;transform:translate(-50%)}.line.milestone>div>p,.line.achievement>div>p{color:#a8761c;font-weight:700}.line.achievement{background:#c9962b1a;border-radius:8px}.updates{margin-top:18px;font-size:13px}.updates .link{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:4px 0}.updates .update{margin:8px 0}.updates ul{color:var(--muted);margin:4px 0 0 18px;padding:0}.status .level{color:var(--muted);justify-content:space-between;align-items:baseline;gap:8px;margin:2px 0 6px;font-size:12px;display:flex}.status .level b{color:#a8761c}.status .level em{color:var(--fg);font-style:normal;font-weight:700}.title-badge{color:#7a5614;background:#c9962b29;border-radius:999px;margin:8px 0 0;padding:6px 12px;font-size:14px;display:inline-block}.achievements ul{margin:6px 0;padding:0;list-style:none}.achievements li{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:6px 0;font-size:14px;display:flex}.achievements li span{color:var(--muted);font-size:13px}.achievements li em{color:#a8761c;margin-left:auto;font-size:12px;font-style:normal}.share-card{margin:14px 0 4px}.twins ul{margin:6px 0;padding:0;list-style:none}.twins li{border-bottom:1px solid var(--line);padding:7px 0;font-size:14px}.twins li b{width:26px;color:var(--muted);display:inline-block}.twins li.me{font-weight:700}.twins li.me b{color:#a8761c}.twins li em{color:#a8761c;font-size:13px;font-style:normal}.levels-note{color:var(--muted);margin:14px 0 10px;font-size:13px}.act-shake{animation:.35s steps(2,end) infinite actShake}@keyframes actShake{50%{transform:translate(1px)}}.act-sway{transform-origin:7px 18px;animation:1.2s ease-in-out infinite actSway}@keyframes actSway{25%{transform:rotate(-4deg)}75%{transform:rotate(4deg)}}.act-bow{animation:1.6s ease-in-out infinite actBow}@keyframes actBow{50%{transform:translateY(1px)}}.act-hop{animation:.5s ease-in-out infinite actHop}@keyframes actHop{50%{transform:translateY(-2px)}}.act-look{transform-origin:7px 9px;animation:2s step-end infinite actLook}@keyframes actLook{50%{transform:scaleX(-1)}}.act-peek{animation:2.4s ease-in-out infinite actPeek}@keyframes actPeek{0%,to{transform:translate(4px)}50%{transform:translate(0)}}.pop{animation:1.4s ease-out both popUp}@keyframes popUp{0%{opacity:0;transform:translateY(4px)}15%{opacity:1}to{opacity:0;transform:translateY(-10px)}}@media (prefers-reduced-motion:reduce){.act-shake,.act-sway,.act-bow,.act-hop,.act-look,.act-peek{animation:none}}
