@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700;800;900&display=swap');
:root{color-scheme:light;--ink:#193c32;--green:#28664d;--muted:#7c887e;--cream:#f7f6ee;--line:#dde4d6;--gold:#dda54e}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:'Noto Sans SC',system-ui,sans-serif;-webkit-font-smoothing:antialiased}button,a,canvas{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #dfad54;outline-offset:4px}button{transition:background .18s,transform .18s}button:active{transform:scale(.97)}button:disabled{opacity:.5;cursor:wait}.app{max-width:1280px;margin:auto;padding:0 48px}header{height:102px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink);font-size:18px;font-weight:800;letter-spacing:1px}.brand-mark{font-size:32px;color:var(--green);transform:rotate(-30deg)}.edition{font-size:9px;letter-spacing:2px;font-weight:500;color:var(--muted);margin-left:8px}.quiet{border:1px solid #d5ddce;background:transparent;border-radius:30px;padding:10px 18px;color:var(--ink);font-size:12px}.quiet:hover{background:#e9eddf}main{display:grid;grid-template-columns:minmax(220px,1fr) minmax(330px,420px) 116px;gap:44px;align-items:start;padding:46px 0 38px}.intro{padding-top:42px}.eyebrow{font-size:11px;letter-spacing:2px;color:var(--green);display:flex;align-items:center;gap:8px}.eyebrow span{width:6px;height:6px;background:#80a580;border-radius:50%}h1{font-size:clamp(35px,3.7vw,51px);letter-spacing:-2px;line-height:1.4;margin:20px 0;font-weight:900}.green-word{color:#5d8b50}.intro-copy{font-size:12px;line-height:2.2;color:var(--muted);margin:0 0 32px}.goal-card{display:flex;gap:14px;align-items:center;padding:20px 16px;background:#e9eedf;border:1px solid #dbe4ce;border-radius:19px;position:relative;max-width:300px}.goal-icon{width:60px;height:60px;border-radius:50%;flex:none;background-repeat:no-repeat;box-shadow:0 0 0 4px #f8f9ed,0 0 0 5px #b6c7a3}.tiny{display:block;font-size:10px;letter-spacing:1.5px;color:var(--muted)}.goal-card strong{display:block;font-size:16px;margin:5px 0}.goal-caption{font-size:10px;color:var(--muted)}.sparkle{position:absolute;right:14px;top:12px;font-size:16px;color:#88a16f}.instructions{margin-top:33px}.instructions>div{display:flex;align-items:center;gap:12px;margin:15px 0}.step{font-size:10px;color:#9caa8f;border-bottom:1px solid #c9d2bd;line-height:1.7}.instructions p{font-size:11px;color:#66796a;margin:0}.keyboard{font-size:10px;color:#8b9487;line-height:2.5;margin-top:30px}kbd{font:inherit;padding:3px 5px;border:1px solid #dbe0d3;border-radius:4px;background:#fffdf5}.play-area{min-width:0;filter:drop-shadow(0 14px 22px #2840310b)}.scoreboard{display:flex;align-items:center;background:#153d32;border-radius:22px 22px 0 0;color:#fffce8;padding:20px 24px 16px;gap:38px}.scoreboard span{display:block;font-size:10px;color:#a9c2a6;letter-spacing:1px}.scoreboard strong{font-size:30px;font-weight:600;letter-spacing:-1px;font-variant-numeric:tabular-nums;display:block;margin-top:4px}.scoreboard .best strong{font-size:22px;color:#d9e4ca;margin-top:10px}.pause{margin-left:auto;width:36px;height:36px;border-radius:50%;background:#ffffff12;border:1px solid #ffffff23;color:#e4ecd7;letter-spacing:2px}.pause:hover{background:#ffffff28}.board-wrap{position:relative;border-left:6px solid #153d32;border-right:6px solid #153d32;background:#f5f0da;overflow:hidden}canvas{display:block;width:100%;height:auto;aspect-ratio:420/640;touch-action:none;cursor:crosshair}.board-footer{display:flex;align-items:center;justify-content:space-between;min-height:57px;padding:10px 18px;background:#153d32;border-radius:0 0 22px 22px;color:#c7dac0;font-size:10px}.board-footer>div{display:flex;align-items:center;gap:8px}.status-dot{height:5px;width:5px;border-radius:50%;background:#abc383}.mini-avatar{display:inline-block;width:28px;height:28px;border-radius:50%;background-repeat:no-repeat;box-shadow:0 0 0 2px #ffffff20}.next-label{color:#9db795}.touch-hint{text-align:center;color:#95a08f;font-size:10px;letter-spacing:1px;margin:14px 0 0}.evolution{padding-top:6px}.evolution-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:8px}.evolution-title #progress{font-size:10px;color:#8da07e}.ladder{display:flex;flex-direction:column;gap:7px}.level{position:relative;display:flex;gap:13px;align-items:center;height:50px;opacity:.4;transition:opacity .3s}.level.reached{opacity:1}.level:after{content:'';height:9px;width:1px;position:absolute;top:50px;left:22px;background:#d0d9c4}.level:last-child:after{display:none}.level .portrait{width:44px;height:44px;background-repeat:no-repeat;border-radius:50%;box-shadow:0 0 0 3px var(--cream),0 0 0 4px #d6decd;flex:none}.level.current .portrait{box-shadow:0 0 0 3px var(--cream),0 0 0 4px #6d925a}.level .rank{font-size:10px;color:#8d9a83;font-variant-numeric:tabular-nums}.level:last-child{opacity:1}.level:last-child .portrait{box-shadow:0 0 0 3px var(--cream),0 0 0 5px #d5b66a}.rotation-note{font-size:9px;line-height:1.9;color:#9da492;margin-top:22px}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:16px;padding:22px 0 26px;font-size:10px;color:#8b9783}footer>span{color:#a7ad9f}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#102d2673;backdrop-filter:blur(7px);z-index:3;padding:25px}.overlay[hidden]{display:none}.dialog{background:#fbf9ee;border-radius:26px;padding:32px 25px;text-align:center;width:100%;max-width:290px;box-shadow:0 20px 60px #102d2640}.dialog>span{display:block;font-size:35px;color:#6d925a}.dialog h2{font-size:25px;margin:10px 0 12px}.dialog p{font-size:12px;color:#7c887e;line-height:1.9;white-space:pre-line;margin:0 0 23px}.primary,.secondary{display:block;width:100%;padding:13px;border-radius:30px;font-size:13px}.primary{background:#245a42;color:#f5f5dc;border:0}.primary:hover{background:#194631}.secondary{margin-top:8px;background:transparent;border:0;color:#77846f}.secondary[hidden]{display:none}.toast{position:absolute;top:120px;left:50%;transform:translateX(-50%) translateY(-8px);border-radius:24px;background:#214e3de8;color:#fffbe8;font-size:12px;padding:10px 18px;pointer-events:none;opacity:0;transition:opacity .2s,transform .2s;white-space:nowrap;z-index:2}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(min-width:1440px){.app{max-width:1340px}main{gap:66px}}
@media(max-width:1000px){.app{padding:0 28px}main{gap:25px;grid-template-columns:minmax(180px,1fr) minmax(310px,390px) 80px}.edition{display:none}.intro{padding-top:22px}h1{font-size:37px}.goal-card{padding:16px 12px;gap:10px}.goal-icon{width:48px;height:48px}.goal-card strong{font-size:14px}.goal-caption{font-size:9px}.sparkle{display:none}.evolution-title{flex-direction:column;align-items:start}.level{gap:8px}}
@media(max-width:760px){.app{padding:0 20px;max-width:540px}header{height:68px}.brand{font-size:15px}.brand-mark{font-size:27px}.quiet{font-size:11px;padding:8px 12px}main{display:flex;flex-wrap:wrap;padding-top:20px;gap:20px}.intro{width:100%;padding:0}.eyebrow,.intro-copy,.instructions,.keyboard{display:none}h1{font-size:27px;line-height:1.3;margin:0 0 5px;letter-spacing:-1px}h1 br{display:none}.goal-card{position:absolute;right:22px;top:89px;background:transparent;border:0;padding:0;gap:8px}.goal-card .tiny,.goal-card strong{display:none}.goal-card .goal-caption{display:none}.goal-icon{width:35px;height:35px}.play-area{width:100%}.scoreboard{padding:14px 20px 12px;border-radius:18px 18px 0 0}.scoreboard strong{font-size:26px}.scoreboard .best strong{font-size:19px;margin-top:8px}.scoreboard span{font-size:9px}.board-footer{min-height:48px}.touch-hint{margin-top:10px}.evolution{width:100%;padding:0}.evolution-title{flex-direction:row;margin:3px 0 14px}.ladder{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:6px}.level{height:auto;flex-direction:column;gap:7px}.level .portrait{width:100%;height:auto;aspect-ratio:1}.level .rank{font-size:8px}.level:after{display:none}.rotation-note{margin:13px 0 4px;font-size:9px}.rotation-note br{display:none}footer{font-size:9px;padding:18px 0;flex-direction:column;gap:7px}main{padding-bottom:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
