:root{--bg:#f4f6f8;--panel:#fff;--line:#d8dee6;--text:#1b1f24;--muted:#5c6773;--accent:#1f6feb;--right:#2f8f46;--wrong:#d93b3b;--tscale:1}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}input,textarea{-webkit-user-select:text;user-select:text}#app{flex-direction:column;max-width:520px;height:100dvh;margin:0 auto;display:flex}#bar{padding:calc(6px + env(safe-area-inset-top)) 10px 6px;color:var(--muted);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;font-size:14px;display:grid}.bar-btn{min-width:34px;height:34px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:none;padding:0 8px;font-size:20px;line-height:1}.bar-btn:active{background:#1b1f2414}#bar #topic{text-align:center;text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}#bar #to-home{color:var(--accent);justify-self:start;font-size:15px}#bar .bar-right{justify-self:end;align-items:center;gap:8px;display:flex}#board{width:100%;height:var(--board-h,44svh);background:repeating-linear-gradient(45deg, #0000000f 0 6px, transparent 6px 14px), var(--board-bg,var(--bg));flex:none;position:relative;overflow:hidden}#scene{left:var(--scene-x,0px);top:var(--scene-top,0px);width:var(--scene-w,100%);aspect-ratio:1;position:absolute}@media (width>=720px){#board{width:min(100%,60svh)}}#scene canvas{display:block}#panel{overscroll-behavior:contain;flex-direction:column;flex:auto;gap:12px;padding:14px 16px 10px;display:flex;overflow-y:auto}#question{font-size:calc(16px * var(--tscale));margin:0;line-height:1.35}#options{flex-direction:column;gap:10px;display:flex}button,a,.option,.spot,.home-item{touch-action:manipulation}.option{text-align:left;min-height:56px;font-size:calc(16px * var(--tscale));color:var(--text);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:14px;padding:14px 16px}.option:active:not(:disabled){background:#eef2f7}.option:disabled{cursor:default;color:var(--muted);background:#f6f7f9;border-color:#e7eaee}.option.right,.option.wrong{color:var(--text)}.option.right{border-color:var(--right);background:#2f8f461f}.option.wrong{border-color:var(--wrong);background:#d93b401f}.option.picked{border-color:var(--accent);color:var(--text);background:#1f6feb14}#explain{font-size:calc(14px * var(--tscale));color:var(--muted);border:1px solid var(--line);background:#eef2f7;border-radius:14px;padding:12px 14px;line-height:1.4}.rule{color:var(--muted);white-space:nowrap;margin-left:4px;display:inline-block}#next{color:#fff;background:var(--accent);cursor:pointer;border:0;border-radius:14px;min-height:54px;margin-top:auto;font-size:17px;font-weight:600}.hint{color:var(--muted);margin:0;font-size:15px}.spot{border:3px solid var(--accent);width:54px;height:54px;color:var(--accent);cursor:pointer;background:#fffffff2;border-radius:50%;font-size:22px;position:absolute;transform:translate(-50%,-50%)}.spot.right{border-color:var(--right);color:var(--right)}.spot.wrong{border-color:var(--wrong);color:var(--wrong)}#board.hidden{display:none}#board.filler #scene{opacity:.78}#board.loading{background:linear-gradient(100deg, var(--bg) 30%, #ffffff8c 50%, var(--bg) 70%) 0 0 / 300% 100%;border-radius:12px;animation:1.4s ease-in-out infinite board-wait}#board.broken{text-align:center;color:var(--muted);place-items:center;padding:24px;display:grid}@keyframes board-wait{to{background-position:-150% 0}}@media (prefers-reduced-motion:reduce){#board.loading{animation:none}}#boot button{color:#fff;cursor:pointer;background:#1f6feb;border:0;border-radius:10px;padding:10px 18px;font-size:15px}#panels{grid-template-columns:repeat(var(--panels,2), 1fr);gap:10px;padding:0 10px;display:grid}#panels.hidden{display:none}#panels .panel{margin:0}#panels .panel-box{aspect-ratio:2/3;max-height:var(--panels-h,60svh);background:var(--bg);border-radius:10px;position:relative;overflow:hidden}#panels .panel-box canvas{display:block;position:absolute}#panels .panel-box.pic{aspect-ratio:1;max-height:var(--panels-h,60svh)}#panels .panel-box.pic canvas{width:100%;height:100%;position:static}#panels .panel-sign{object-fit:contain;width:72%;height:72%;margin:14% auto;display:block}#panels figcaption{text-align:center;color:var(--muted);padding-top:6px;font-weight:600}#actions{box-sizing:content-box;height:54px;padding:0 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(to top, var(--bg) 70%, transparent);flex:none;gap:10px;display:flex}#actions button{box-sizing:border-box;height:54px;min-height:0}body.at-home #actions{display:none}body.with-navbar #actions{padding-bottom:60px}#actions button{animation:.18s ease-out action-in}@keyframes action-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){#actions button{animation:none}}#actions button{flex:1}#next:active:not(:disabled){filter:brightness(.92)}#retry:active{background:#eef2f7}#retry{min-height:54px;color:var(--text);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:14px;font-size:17px}#next{margin-top:0}.link{color:var(--accent);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:4px 0;font-size:15px}body:not(.at-home) #bg{display:none}#bg{z-index:0;background:linear-gradient(160deg,#6b7683 0%,#41474d 60%,#2b3138 100%);position:fixed;inset:0}body.at-home #bar,body.at-home #board,body.at-home #panels,body.at-home #coachdock,body.at-home #actions,body.at-home #panel,body.at-home #coach{display:none}#home{z-index:1;padding:20px 16px calc(20px + env(safe-area-inset-bottom));justify-content:center;display:flex;position:fixed;inset:0;overflow-y:auto}#home[hidden]{display:none}.home-card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffffeb;border-radius:20px;flex-direction:column;gap:10px;width:100%;max-width:420px;margin:auto;padding:20px 18px 22px;display:flex;box-shadow:0 18px 50px #10141a59}.home-card h1{margin:0;font-size:26px}.home-note{color:var(--muted);margin:0;font-size:14px}.stats-block{border:1px solid var(--line);background:#fff;border-radius:14px;flex-direction:column;gap:6px;padding:14px 16px;display:flex}.stats-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.stats-head b{font-size:16px}.stats-value{color:var(--accent);white-space:nowrap;font-size:20px;font-weight:600}.stats-line{color:var(--muted);justify-content:space-between;gap:12px;font-size:14px;display:flex}.stats-line span:last-child{color:var(--text);text-align:right}.stats-days{grid-template-columns:repeat(14,1fr);gap:4px;margin-top:6px;display:grid}.stats-day{aspect-ratio:1;background:#e7eaee;border-radius:4px}.stats-day.on{background:var(--accent)}.stats-day.now{outline:2px solid var(--accent);outline-offset:1px}.home-item{border:1px solid var(--line);text-align:left;font:inherit;color:inherit;cursor:pointer;background:#fff;border-radius:14px;flex-direction:column;gap:2px;padding:14px 16px;display:flex}.home-item.resume{background:#1f6feb0f;border-color:#1f6feb66;position:relative;overflow:hidden}.home-item.resume .home-title{color:var(--accent)}.home-item.resume:after{content:"";pointer-events:none;background:linear-gradient(105deg,#1f6feb00 18%,#1f6feb33 50%,#1f6feb00 82%);animation:3.4s ease-in-out infinite resume-sweep;position:absolute;inset:0;transform:translate(-130%)}@keyframes resume-sweep{0%,58%{transform:translate(-130%)}to{transform:translate(130%)}}@media (prefers-reduced-motion:reduce){.home-item.resume:after{animation:none}}.home-item.danger .home-title{color:var(--wrong)}.home-item:disabled{opacity:.45;cursor:default}.home-item:active:not(:disabled){background:#eef2f6}.home-item.primary{background:var(--accent);border-color:var(--accent);color:#fff}.home-title{font-size:16px}.home-sub{color:var(--muted);font-size:13px}.home-item.primary .home-sub{color:#fffc}.home-row{flex-wrap:wrap;justify-content:center;padding-top:4px;display:flex}.home-fine{font:inherit;color:var(--muted);opacity:.75;cursor:pointer;background:0 0;border:0;padding:2px;font-size:12px;text-decoration:none}.home-fine:active{opacity:1}.home-link{font:inherit;color:var(--accent);text-align:left;cursor:pointer;background:0 0;border:0;padding:6px 2px;font-size:14px}.home-chips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.home-cap{color:var(--muted);width:100%;font-size:13px}.chip{border:1px solid var(--line);font:inherit;color:inherit;cursor:pointer;background:#fff;border-radius:999px;padding:6px 10px;font-size:13px}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}#coachdock{z-index:2;height:0;position:relative}.coach-veil{-webkit-backdrop-filter:blur(4px);background:#1b1f2438;border-radius:14px 14px 0 0;transition:opacity .26s;position:absolute;inset:-10px -12px 0}#coach.below .coach-veil{border-radius:0;bottom:-8px}#coach .coach-figure,#coach .coach-bubble{z-index:1;position:relative}#coach.coming .coach-veil,#coach.leaving .coach-veil{opacity:0}#coach{pointer-events:none;z-index:2;align-items:flex-end;gap:8px;display:flex;position:absolute;bottom:0;left:12px;right:12px}#coach[hidden]{display:none}#coach.below{width:min(100% - 24px,520px);top:auto;left:50%;right:auto;bottom:calc(78px + env(safe-area-inset-bottom));position:fixed;transform:translate(-50%)}body.with-navbar #coach.below{bottom:calc(138px + env(safe-area-inset-bottom))}#coach .coach-figure{filter:drop-shadow(0 6px 14px #10141a47);flex:none;width:88px}#coach .coach-figure svg,#coach .coach-figure img{width:100%;height:auto;display:block}#coach .coach-bubble{pointer-events:auto;cursor:pointer;background:#fff;border-radius:14px;flex:0 auto;max-width:min(100%,460px);margin-bottom:18px;margin-left:auto;padding:12px 14px 10px;position:relative;box-shadow:0 8px 24px #10141a2e}#coach .coach-bubble:active{background:#f6f8fa}#coach .coach-bubble:after{content:"";background:#fff;width:14px;height:14px;position:absolute;bottom:14px;right:-7px;transform:rotate(45deg)}#coach .coach-bubble p{font-size:calc(14px * var(--tscale));color:#1b1f24;margin:0;line-height:1.35}#coach .coach-figure{transition:transform .28s ease-out,opacity .28s ease-out}#coach .coach-bubble{transition:opacity .24s ease-out,transform .24s ease-out}#coach.swap .coach-figure,#coach.swap .coach-bubble{opacity:0;transition:opacity .14s ease-out}#coach.coming .coach-figure{opacity:0;transform:translate(70%)}#coach.coming .coach-bubble{opacity:0;transform:translateY(8px)}#coach.leaving .coach-figure{opacity:0;transition:transform .34s ease-in,opacity .34s ease-in;transform:translate(130%)}#coach.leaving .coach-bubble{opacity:0;transition:opacity .26s ease-out}@media (prefers-reduced-motion:reduce){#coach .coach-figure,#coach .coach-bubble{transition:none}}#coach .coach-acts{justify-content:flex-end;align-items:center;gap:8px;margin-top:8px;display:flex}#coach .coach-why{background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:9px;padding:6px 14px;font-size:14px;font-weight:600;line-height:1}#coach .coach-why[hidden]{display:none}#coach .coach-next{color:#1b1f24;cursor:pointer;background:#eef1f4;border:0;border-radius:9px;width:fit-content;padding:6px 14px;font-size:14px;font-weight:600;line-height:1;display:block}#devbar{flex-wrap:wrap;gap:6px;padding:6px 16px 0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;display:flex}#devbar[hidden]{display:none}#devbar button,#devbar a{appearance:none;color:#5c6773;font:inherit;cursor:pointer;background:#eef1f4;border:1px solid #d5dbe1;border-radius:7px;padding:3px 9px;text-decoration:none}#devbar button:hover,#devbar a:hover{color:#2f6f9f;border-color:#2f6f9f}#crash{z-index:100;background:#f4f6f8f0;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}#crash .crash-box{text-align:center;justify-items:center;gap:12px;max-width:320px;display:grid}#crash b{font-size:18px}#crash i{color:#5c6773;font-size:14px;font-style:normal}#crash .crash-more{color:var(--muted);background:0 0;border:0;padding:0;font-size:13px;text-decoration:underline}#crash .crash-tech{white-space:pre-wrap;word-break:break-word;color:#5c6773;text-align:left;max-height:180px;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px;line-height:1.35;overflow:auto}#crash .crash-tech[hidden]{display:none}#crash button{appearance:none;color:#fff;background:#2f6fd0;border:0;border-radius:12px;padding:12px 22px;font-size:15px}.home-hero{cursor:pointer;align-items:center;gap:16px;padding:2px 0 4px;display:flex}.home-hero .ring{--share:0;background:conic-gradient(#2f6fd0 calc(var(--share) * 360deg), #1b1f2414 0);border-radius:50%;flex:none;place-items:center;width:96px;height:96px;display:grid;position:relative}.home-hero .ring:after{content:"";background:var(--card,#f4f6f8);border-radius:50%;position:absolute;inset:9px}.home-hero .ring b{z-index:1;font-size:24px;font-weight:700;position:relative}.home-hero .hero-text{gap:3px;display:grid}.home-hero .hero-text b{font-size:17px}.home-hero .hero-text span{color:var(--muted);font-size:13px}.home-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.home-grid .home-item{padding:12px 14px}.home-grid .home-title{font-size:15px}.home-grid .home-sub{font-size:12px}.home-strip{align-items:center;gap:14px;padding:4px 0 2px;display:flex}.home-strip .ring{--share:0;background:conic-gradient(#2f6fd0 calc(var(--share) * 360deg), #1b1f2414 0);border-radius:50%;flex:none;place-items:center;width:62px;height:62px;display:grid;position:relative}.home-strip .ring:after{content:"";background:var(--card,#f4f6f8);border-radius:50%;position:absolute;inset:6px}.home-strip .ring b{z-index:1;font-size:16px;font-weight:600;position:relative}.home-strip .strip-text{gap:2px;display:grid}.home-strip .strip-text b{font-size:15px}.home-strip .strip-text span{color:var(--muted);font-size:13px}.home-day{color:var(--muted);background:#2f6fd014;border-radius:12px;align-items:center;gap:8px;padding:10px 12px 12px;font-size:13px;display:flex;position:relative;overflow:hidden}.home-day b{color:#1b1f24;font-size:15px}.home-day.done{background:#46a7581f}.home-day i{--share:0;height:3px;width:calc(var(--share) * 100%);background:#2f6fd0;position:absolute;bottom:0;left:0}.home-day.done i{background:#46a758}#offline{z-index:5;text-align:center;color:#7a5b00;background:#fff4d6;padding:6px 16px;font-size:13px;position:sticky;top:0}#offline[hidden]{display:none}#finale{pointer-events:none;align-content:center;justify-items:center;gap:6px;animation:.34s cubic-bezier(.2,1.3,.5,1) finale-in;display:grid;position:absolute;inset:0}#finale i{color:#fff;background:#46a758;border-radius:50%;place-items:center;width:62px;height:62px;font-size:32px;font-style:normal;display:grid;box-shadow:0 8px 24px #1b1f2440}#finale.bad i{background:#d93b3b}#finale .plate{background:#f8fafcf0;border-radius:16px;justify-items:center;gap:2px;margin-top:10px;padding:10px 18px 12px;display:grid;box-shadow:0 6px 20px #1b1f242e}#finale b{color:#1b1f24;font-size:22px}#finale span{color:#5c6773;font-size:14px}#finale.out{opacity:0;transition:opacity .3s}@keyframes finale-in{0%{opacity:0;transform:scale(.82)translateY(10px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){#finale{animation:none}}.stats-table{border-collapse:collapse;width:100%;font-size:14px}.stats-table th{color:var(--muted);text-align:right;padding-bottom:2px;font-size:12px;font-weight:500}.stats-table th:first-child{text-align:left}.stats-table td{color:var(--text);vertical-align:top;padding:3px 0}.stats-table td:first-child{color:var(--muted)}.stats-table td+td,.stats-table th+th{text-align:right;white-space:nowrap;padding-left:10px}#result{flex-direction:column;gap:12px;display:flex}#result[hidden]{display:none}.sum-verdict{text-align:center;border:2px solid var(--text);font-weight:700;font-size:calc(15px * var(--tscale));letter-spacing:.08em;border-radius:4px;padding:13px 10px}.sum-verdict.pass{color:var(--right);border-color:var(--right)}.sum-verdict.fail{color:var(--wrong);border-color:var(--wrong)}.sum-hero{align-items:center;gap:14px;display:flex}.sum-ring{width:88px;height:88px;font-size:calc(21px * var(--tscale));border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.sum-ring.good{color:var(--right);background:#2f8f4624}.sum-ring.bad{color:var(--wrong);background:#d93b401f}.sum-hero h2{font-size:calc(21px * var(--tscale));margin:0}.sum-hero p{color:var(--muted);font-size:calc(14px * var(--tscale));margin:2px 0 0}.sum-tiles{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sum-tile{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:8px 10px}.sum-tile b{font-size:calc(18px * var(--tscale));display:block}.sum-tile span{font-size:calc(12px * var(--tscale));color:var(--muted)}.sum-cap{font-size:calc(12px * var(--tscale));color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:2px 0 -4px}.sum-chips{flex-wrap:wrap;gap:6px;display:flex}.sum-chips i{font-style:normal;font-size:calc(12px * var(--tscale));color:var(--wrong);background:#d93b401a;border-radius:999px;padding:3px 9px}.sum-coach{align-items:flex-end;gap:8px;display:flex}.sum-coach .sum-bubble{background:var(--panel);font-size:calc(14px * var(--tscale));border-radius:14px;flex:auto;padding:10px 12px;box-shadow:0 8px 20px #10141a1f}.sum-coach img{width:84px;height:auto;display:block}.sum-miss{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:10px 12px}.sum-miss h3{font-size:calc(14px * var(--tscale));margin:0 0 6px;font-weight:600}.sum-miss .q{font-size:calc(14px * var(--tscale));margin:0 0 8px}.sum-miss .a{font-size:calc(13px * var(--tscale));gap:6px;margin:0;display:flex}.sum-miss .a span:first-child{color:var(--muted);flex:none}.sum-miss .a.bad span:last-child{color:var(--wrong)}.sum-miss .a.good span:last-child{color:var(--right)}.sum-miss details{font-size:calc(13px * var(--tscale));color:var(--muted);margin-top:6px}.sum-miss summary{cursor:pointer;color:var(--accent)}.sum-miss .rule{font-size:calc(12px * var(--tscale));color:var(--muted);margin:6px 0 0}#hello{z-index:5;color:#fff;background:linear-gradient(170deg,#2b3a52 0%,#1d2530 100%);justify-content:center;display:flex;position:fixed;inset:0;overflow-y:auto}#hello[hidden],body.at-hello #bar,body.at-hello #board,body.at-hello #coachdock,body.at-hello #panels,body.at-hello #panel,body.at-hello #devbar,body.at-hello #actions{display:none}.hello-card{width:100%;max-width:420px;min-height:100%;padding:calc(26px + env(safe-area-inset-top)) 22px calc(22px + env(safe-area-inset-bottom));flex-direction:column;gap:14px;display:flex}.hello-stage{flex-direction:column;flex:auto;justify-content:flex-end;gap:10px;min-height:260px;transition:opacity .16s;display:flex;position:relative}.hello-face{filter:drop-shadow(0 10px 24px #00000059);width:190px;max-width:52%;height:auto;margin-left:-6px;display:block}.hello-art{object-fit:cover;object-position:center 40%;border-radius:14px;width:100%;max-height:34vh;box-shadow:0 12px 30px #00000059}.hello-stage.out{opacity:0}.hello-art.live{aspect-ratio:1;background:#c2cad2;width:min(100%,34vh);height:auto;max-height:none;margin:0 auto;overflow:hidden}.hello-art.live canvas{width:100%;height:100%;display:block}.hello-bubble{min-height:calc(74px * var(--tscale));color:var(--text);font-size:calc(14px * var(--tscale));z-index:1;background:#fff;border-radius:16px;align-items:center;padding:12px 14px;display:flex;position:relative;box-shadow:0 10px 26px #0000004d}.hello-bubble:after{content:"";border:10px solid #0000;border-top-color:#fff;border-bottom:0;position:absolute;bottom:-9px;left:34px}.hello-acts{flex-direction:column;gap:8px;display:flex}.hello-btn{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:1px solid #0000;border-radius:14px;width:100%;padding:15px 16px;font-weight:600}.hello-btn.ghost{color:#fff;background:0 0;border-color:#ffffff47;font-weight:500}.hello-btn.quiet{color:#fff9;background:0 0;border:0;padding:8px;font-weight:500}.hello-stage.with-art .hello-art.live{width:28vh;max-width:min(100%,28vh)}.hello-consent{text-align:center;color:#ffffff8c;margin:0;font-size:11px;line-height:1.4}.hello-consent a{color:#fffc}.hello-dots{justify-content:center;gap:6px;min-height:6px;display:flex}.hello-dots i{background:#ffffff40;border-radius:50%;width:6px;height:6px}.hello-dots i.on{background:#fff}.navbar{z-index:9999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);scrollbar-width:none;background:#1b1f24d1;border-radius:999px;gap:2px;max-width:calc(100vw - 20px);padding:3px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;display:flex;position:fixed;bottom:10px;left:50%;overflow-x:auto;transform:translate(-50%);box-shadow:0 2px 10px #1b1f2440}.navbar::-webkit-scrollbar{display:none}.navbar a{color:#dfe3e8;white-space:nowrap;border-radius:999px;padding:5px 11px;text-decoration:none}.navbar a:hover{background:#ffffff1f}.navbar a.here{color:#fff;background:#1f6feb}body.with-navbar{padding-bottom:46px}
