:root{--paper:#f4ecd8;--ink:#1f2a44;--teal:#2f6f73;--red:#b5452f;--mustard:#d9a441;--water:#cfe0da;--land:#f8f2e2;--border:#8a93a6;--font-head:"Bebas Neue", Impact, sans-serif;--font-body:"Josefin Sans", system-ui, sans-serif;--font-code:"Courier Prime", "Courier New", monospace;--right:#3f7d46;--navy:#26385f;--dim:#c3c1b8;--dim-bg:#e4e2d9;--dim-text:#8e8c84;--wrong:#b5452f;--gap:12px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#141b2e;--ink:#f4ecd8;--teal:#4c9ea3;--red:#d96a52;--mustard:#e8b85a;--water:#1b2a42;--land:#24314d;--border:#5d6a86;--right:#6db577;--wrong:#d96a52;--navy:#2f4577;--dim:#59627c;--dim-bg:#2c3856;--dim-text:#8791ad}}:root[data-theme=dark]{--paper:#141b2e;--ink:#f4ecd8;--teal:#4c9ea3;--red:#d96a52;--mustard:#e8b85a;--water:#1b2a42;--land:#24314d;--border:#5d6a86;--right:#6db577;--wrong:#d96a52;--navy:#2f4577;--dim:#59627c;--dim-bg:#2c3856;--dim-text:#8791ad}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--paper) radial-gradient(#1f2a440b 1px, transparent 1px) 0 0 / 5px 5px;color:var(--ink);font-family:var(--font-body)}html,body{overflow-x:hidden}.map{aspect-ratio:16/10;border:2px solid var(--ink);background:var(--water);border-radius:6px;width:100%;position:relative;overflow:hidden}.map svg{touch-action:none;-webkit-user-select:none;user-select:none;display:block}.map-water{fill:var(--water)}.map-land{fill:var(--land);stroke:var(--ink);stroke-width:.6px;vector-effect:non-scaling-stroke}.map-context{fill:var(--land);opacity:.45;stroke:var(--border);stroke-width:.6px;vector-effect:non-scaling-stroke}.map-border{fill:none;stroke:var(--border);stroke-width:.8px;stroke-dasharray:3 2;vector-effect:non-scaling-stroke}.hit{fill:#0000;cursor:pointer}.rivet,.cluster-bg{fill:var(--mustard);stroke:var(--ink);stroke-width:1.5px}.cluster-n{fill:var(--ink);font:700 13px var(--font-body);text-anchor:middle;pointer-events:none}.ring{fill:none;stroke:var(--mustard);stroke-width:2.5px;pointer-events:none}.dot.correct .rivet{fill:var(--right);stroke:var(--ink);stroke-width:2px}.dot.correct .ring{stroke:var(--right)}.dot.wrong .rivet{fill:var(--wrong);stroke:var(--ink);stroke-width:2px}.dot.wrong .ring{stroke:var(--wrong)}.lbl{font:700 12px var(--font-code);text-anchor:middle;fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:3px;pointer-events:none}.map-ctl{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.map-ctl button{border:2px solid var(--ink);background:var(--paper);width:44px;height:44px;color:var(--ink);font:700 22px var(--font-body);cursor:pointer;border-radius:50%}@media (width>=800px){.map{aspect-ratio:auto;height:calc(100vh - 230px);min-height:360px}}.dot:active .rivet{fill:var(--teal);stroke:var(--ink);stroke-width:2px}@media (hover:hover){.dot:hover .rivet{fill:var(--teal)}}.grow{fill:none;stroke:var(--right);stroke-width:3px;transform-box:fill-box;transform-origin:50%;pointer-events:none;animation:.7s ease-out both grow}@keyframes grow{0%{opacity:.95;transform:scale(.8)}to{opacity:0;transform:scale(3.4)}}@media (prefers-reduced-motion:reduce){.grow{opacity:.7;animation:none;transform:scale(1.5)}}.cluster.correct .cluster-bg{fill:var(--right)}.cluster.correct .cluster-n{fill:#fff}.cluster.correct .ring{stroke:var(--right)}.dot.dim .rivet{fill:var(--dim);stroke:var(--paper);stroke-width:1px}.cluster.dim .cluster-bg{fill:var(--dim-bg);stroke:var(--dim)}.cluster.dim .cluster-n{fill:var(--dim-text)}.game{gap:var(--gap);grid-template-columns:minmax(0,1fr);display:grid}.game-map,.game-side{min-width:0}.game-side{gap:var(--gap);align-content:start;display:grid}.scorebar{justify-content:space-between;font-weight:700;display:flex}.pass{color:#1f2a44;border:2px solid var(--ink);background:#fffaf0;border-radius:10px;display:flex;position:relative;overflow:hidden}.pass-stub{background:var(--mustard);color:#1f2a44;font:700 16px var(--font-code);writing-mode:vertical-rl;border-right:3px dashed #1f2a44;flex:0 0 64px;place-items:center;padding:8px 0;display:grid;transform:rotate(180deg)}.pass-main{flex:1;min-width:0;padding:14px 16px 16px}.pass-label{letter-spacing:.08em;text-transform:uppercase;opacity:.75;margin:0;font-size:13px}.pass-city{font:400 clamp(32px, 8vw, 48px)/1 var(--font-head);letter-spacing:.02em;overflow-wrap:anywhere;margin:2px 0 0}.pass-region{margin:2px 0 12px;font-size:16px}.choices{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.choice{color:#1f2a44;min-height:64px;font:700 clamp(20px, 5.4vw, 26px) var(--font-code);letter-spacing:.12em;cursor:pointer;background:#f4ecd8;border:2px solid #1f2a44;border-radius:6px;padding:0}.choice:active:not(:disabled){transform:translateY(1px)}.choice i{letter-spacing:0;font-style:normal}.choice.right{background:var(--right);color:#fff;border-color:#1f2a44}.choice.wrong{background:var(--wrong);color:#fff;border-color:#1f2a44}.choice.dim{opacity:.45}.choice:disabled{cursor:default}.stamp{z-index:2;font:400 34px var(--font-head);letter-spacing:.08em;cursor:pointer;background:#fffaf0d9;border:4px solid;border-radius:8px;padding:6px 14px;animation:.3s cubic-bezier(.2,1.4,.4,1) both thunk;position:absolute;top:40%;right:12px;transform:rotate(-9deg)}.stamp.ok{color:#3f7d46;border-color:#3f7d46}.stamp.no{color:#b5452f;border-color:#b5452f}@keyframes thunk{0%{opacity:0;transform:rotate(-9deg)scale(2.4)}to{opacity:1;transform:rotate(-9deg)scale(1)}}.tag{color:#1f2a44;border:2px solid var(--ink);background:#fffaf0;border-radius:8px 24px 24px 8px;align-items:center;gap:12px;padding:10px 16px;display:flex}.tag-hole{background:var(--paper);border:2px solid #1f2a44;border-radius:50%;flex:none;width:16px;height:16px}.tag p{margin:0}.tag-city{font-weight:700}.tag-name{font-size:14px}.pressure{border:2px solid var(--ink);border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:14px;font-weight:700;transition:background-color .3s;display:flex}.pressure.p1{background:var(--mustard);color:#1f2a44}.pressure.p2{background:var(--red);color:#fff}.gauge{gap:3px;display:inline-flex}.gauge i{border:2px solid;border-radius:3px;width:12px;height:12px}.gauge i.on{background:currentColor}@media (prefers-reduced-motion:reduce){.pressure{transition:none}}.tag-story{border-top:1px dashed #1f2a4459;padding-top:6px;font-size:14px;font-style:italic;margin-top:4px!important}.missed{gap:8px;display:grid}.missed small{opacity:.8;font-size:13px;font-style:italic;display:block}.tag-code{font:700 28px var(--font-code);letter-spacing:.2em;color:#2f6f73}.next{border:2px solid var(--ink);background:var(--teal);color:#fff;min-height:48px;font:700 18px var(--font-body);cursor:pointer;border-radius:6px;padding:0 24px}.next.alt{color:var(--ink);background:0 0}.row{flex-wrap:wrap;gap:10px;display:flex}.mono{font-family:var(--font-code);letter-spacing:.1em}.summary{max-width:520px;margin:0 auto;position:relative}.summary h2{font:400 40px var(--font-head);margin:0}.summary .big{font:400 72px var(--font-head);color:var(--teal);margin:0}@media (width>=900px){.game{grid-template-columns:minmax(0,1.7fr) minmax(340px,1fr);align-items:start}.game-map .map{height:calc(100vh - 210px)}}@media (prefers-reduced-motion:reduce){.stamp{animation:none}}.pass-code{font:700 clamp(48px, 16vw, 76px)/1 var(--font-code);letter-spacing:.22em;margin:4px 0 6px}.pass-result{margin:4px 0 0;font-weight:700}.mapmode .map{aspect-ratio:4/3}@media (width>=900px){.mapmode .map{aspect-ratio:auto}}.clock{align-items:center;gap:12px;display:flex}.clock-n{font:700 34px var(--font-code);letter-spacing:.08em;min-width:90px}.clock-n.low{color:var(--wrong)}.clock-bar{border:2px solid var(--ink);background:0 0;border-radius:8px;flex:1;height:12px;overflow:hidden}.clock-bar i{background:var(--teal);height:100%;display:block}.clock-bar i.low{background:var(--wrong)}.scorebar small{opacity:.7;font-weight:400}.tag-skip{text-align:left;cursor:pointer;width:100%;font:inherit}.page{padding:12px}.topbar{border-bottom:2px solid var(--ink);align-items:center;gap:10px;padding:8px 12px;display:flex}.brand{border:3px double var(--red);width:48px;height:48px;color:var(--red);font:400 20px var(--font-head);letter-spacing:.05em;cursor:pointer;background:0 0;border-radius:50%;transform:rotate(-6deg)}.who{flex-wrap:wrap;flex:1;align-items:center;column-gap:6px;font-weight:700;display:flex}.icon-btn{border:2px solid var(--ink);min-width:44px;min-height:44px;color:var(--ink);font:700 20px var(--font-body);cursor:pointer;background:0 0;border-radius:8px}.poster{background:var(--teal);color:#f4ecd8;text-align:center;border:2px solid var(--ink);border-radius:10px;margin-bottom:14px;padding:24px 12px}.poster h1{font:400 clamp(44px, 12vw, 84px)/1 var(--font-head);letter-spacing:.04em;margin:0}.poster p{letter-spacing:.08em;margin:6px 0 0;font-size:clamp(15px,3.6vw,20px)}.panels{grid-template-columns:1fr;gap:12px;display:grid}.panel{border:3px solid var(--ink);cursor:pointer;min-height:180px;font-family:var(--font-body);color:var(--ink);border-radius:12px;justify-items:center;gap:4px;padding:22px 12px;display:grid}.panel b{font:400 34px var(--font-head);letter-spacing:.04em}.panel span{font-size:15px}.ladder-note{text-align:center;margin:0 0 12px;font-size:15px}.step{font:700 13px var(--font-body);letter-spacing:.12em;text-transform:uppercase;opacity:.8;font-style:normal}.panel-codes{background:var(--mustard)}.panel-map{background:var(--land)}.panel-type{background:var(--navy);color:#f4ecd8}.panel-type b,.panel-type span{color:#f4ecd8}.extras{gap:10px;margin-top:14px;display:grid}.wide{border:2px solid var(--ink);background:var(--teal);color:#fff;min-height:52px;font:700 17px var(--font-body);cursor:pointer;border-radius:8px;padding:0 16px}.wide.alt{color:var(--ink);background:0 0}.levels-top{align-items:center;gap:10px;margin-bottom:14px;display:flex}.seg{border:2px solid var(--ink);border-radius:8px;flex:1;display:flex;overflow:hidden}.seg button{min-height:44px;color:var(--ink);font:700 15px var(--font-body);cursor:pointer;background:0 0;border:0;flex:1}.seg button.on{background:var(--ink);color:var(--paper)}.stamps{grid-template-columns:1fr 1fr;gap:14px;display:grid}.stampcard{text-align:center;cursor:pointer;min-height:190px;font-family:var(--font-body);opacity:.95;background:0 0;border:4px double;border-radius:50%/38%;align-content:center;justify-items:center;gap:3px;padding:14px 10px;display:grid;transform:rotate(-2deg)}.stampcard:nth-child(2n){transform:rotate(2deg)}.stampcard.teal{color:var(--teal)}.stampcard.red{color:var(--red)}.stampcard.mustard{color:#8a6210}.stampcard.ink{color:var(--ink)}.stampcard.final{border-radius:48px;grid-column:1/-1;min-height:150px;transform:rotate(-1deg)}.stampcard-title{font:400 28px var(--font-head);letter-spacing:.06em;align-items:center;gap:4px;display:inline-flex}.stampcard-sub{color:var(--ink);font-size:13px}.banner{background:var(--mustard);color:#1f2a44;border:2px solid var(--ink);text-align:center;border-radius:8px;margin:0 0 8px;padding:8px 12px;font-weight:700}.badge{border:2px dashed var(--teal);border-radius:20px;margin:4px 0;padding:4px 12px;font-weight:700;display:inline-block}.badge.gold{border-color:var(--mustard);background:var(--mustard);color:#1f2a44}.record{z-index:10;cursor:pointer;background:#141b2e8c;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.record-stamp{text-align:center;background:var(--mustard);color:#1f2a44;border:6px double #1f2a44;border-radius:10px;padding:14px 26px;animation:.38s cubic-bezier(.2,1.4,.4,1) both thunk2;display:grid;transform:rotate(-8deg)}.record-stamp b{font:400 clamp(44px, 12vw, 72px)/1 var(--font-head);letter-spacing:.08em}.record-stamp span{font:700 20px var(--font-body)}.paper-plane{color:var(--paper);font-size:40px;animation:1.5s linear both fly;position:absolute;left:-60px}.p1{top:18%}.p2{animation-delay:.15s;top:70%}.p3{font-size:28px;animation-delay:.3s;top:42%}@keyframes fly{to{transform:translate(calc(100vw + 120px))translateY(-40px)rotate(-8deg)}}@keyframes thunk2{0%{opacity:0;transform:rotate(-8deg)scale(2.6)}to{opacity:1;transform:rotate(-8deg)scale(1)}}@media (prefers-reduced-motion:reduce){.record-stamp{animation:none}.paper-plane{display:none}}@media (width>=700px){.panels{grid-template-columns:1fr 1fr 1fr}.stamps{grid-template-columns:repeat(4,1fr)}.extras{grid-template-columns:1fr 1fr}}.levels-total{text-align:center;margin:0 0 12px;font-weight:700}.stampcard-count{font:700 13px var(--font-body);color:var(--ink);letter-spacing:.04em}.best{color:var(--ink);justify-items:center;gap:3px;margin-top:4px;display:grid}.best b{font:700 15px var(--font-code)}.best em{font:italic 13px var(--font-body);opacity:.7}.pips{gap:2px;display:flex}.pips i{opacity:.45;border:1.5px solid;border-radius:2px;width:8px;height:12px}.pips i.on{background:var(--right);border-color:var(--right);opacity:1}.best.played .pips i:not(.on){opacity:.3}.stamp-at{opacity:.75;font-size:12px}.stampcard{position:relative}.stampcard.next{box-shadow:0 0 0 4px var(--paper), 0 0 0 7px currentColor;border-style:solid}.next-tag{background:var(--ink);color:var(--paper);font:700 12px var(--font-body);white-space:nowrap;border-radius:12px;padding:3px 10px;position:absolute;top:-12px;left:50%;transform:translate(-50%)rotate(2deg)}.stamped{border:3px solid var(--red);color:var(--red);font:400 20px var(--font-head);letter-spacing:.08em;opacity:.85;pointer-events:none;border-radius:6px;padding:2px 8px;position:absolute;bottom:2px;right:0;transform:rotate(-14deg)}.linkish{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;min-height:44px;padding:0;font-weight:700;text-decoration:underline;display:inline-flex}.auth{gap:12px;max-width:460px;margin:0 auto;display:grid}.page-title{font:400 40px var(--font-head);margin:0}.field{gap:4px;font-weight:700;display:grid}.field input,.field select{border:2px solid var(--ink);color:#1f2a44;min-height:48px;font:400 18px var(--font-body);background:#fffaf0;border-radius:8px;padding:0 12px}.field input[type=password]{letter-spacing:.4em;font-family:var(--font-code)}.check{align-items:center;gap:10px;min-height:44px;display:flex}.check input{width:22px;height:22px}.warning{border:2px solid var(--red);background:#b5452f1a;border-radius:8px;margin:0;padding:10px 12px;font-weight:700}.form-error{color:var(--red);margin:0;font-weight:700}.danger{border:2px dashed var(--red);border-radius:8px;gap:8px;margin-top:16px;padding:12px;display:grid}.danger h3,.danger p{margin:0}.danger-btn{background:var(--red)}.plain{gap:10px;padding-left:20px;display:grid}.footer{text-align:center;padding:20px 12px 28px;font-size:14px}.footer a{color:inherit;font-weight:700}#root:empty{min-height:100vh}body[data-view]:not([data-view=home]) .about{display:none}.about{max-width:760px;margin:12px auto 0;padding:0 16px;font-size:16px;line-height:1.55}.about h2{font:400 32px/1.1 var(--font-head);letter-spacing:.03em;margin:28px 0 6px}.about h3{margin:18px 0 4px;font-size:18px}.about p{margin:0 0 10px}.about ul{gap:6px;margin:0;padding-left:20px;display:grid}.about details{border-top:1px dashed var(--border)}.about details:last-of-type{border-bottom:1px dashed var(--border)}.about summary{cursor:pointer;align-items:center;min-height:44px;font-weight:700;display:flex}.about details p{margin:0 0 12px}.lb{gap:10px;max-width:640px;margin:0 auto;display:grid}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips button{border:2px solid var(--ink);min-height:44px;color:var(--ink);font:700 15px var(--font-body);cursor:pointer;background:0 0;border-radius:22px;padding:0 16px}.chips button.on{background:var(--mustard);color:#1f2a44}.lb-note{opacity:.8;margin:0;font-size:14px}.board{color:#f4ecd8;border:3px solid var(--ink);background:#1f2a44;border-radius:10px;margin:0;padding:0;list-style:none;overflow:hidden}.board li{font-family:var(--font-code);letter-spacing:.04em;border-bottom:1px dashed #f4ecd84d;grid-template-columns:40px 1fr auto;align-items:center;gap:8px;padding:12px 14px;font-weight:700;display:grid}.board li:last-child{border-bottom:0}.board li.me{background:var(--mustard);color:#1f2a44}.board .rk{font-size:22px}.board .nm small{opacity:.75;margin-left:6px;font-weight:400}.board .sc{white-space:nowrap}.ad-slot{min-height:100px;margin:32px 12px 0}@media (width>=1280px){.layout{grid-template-columns:minmax(0,1fr) 300px;gap:16px;padding-right:12px;display:grid}.layout .ad-slot{align-self:start;min-height:600px;margin:12px 0 0;position:sticky;top:12px}}.best b.pts{font-size:20px}.marks{word-break:break-all}.type-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.type-box{text-align:center;color:#1f2a44;min-width:0;min-height:56px;font:700 30px var(--font-code);letter-spacing:.3em;text-transform:uppercase;background:#f4ecd8;border:2px solid #1f2a44;border-radius:6px;flex:130px}.type-box.right{background:var(--right);color:#fff}.type-box.wrong{background:var(--wrong);color:#fff}.type-box.pass{opacity:.7}.type-answer{margin:8px 0 0;font-weight:700}.type-answer b{font:700 24px var(--font-code);letter-spacing:.2em;color:var(--right)}.type-row .next{min-height:56px}.homeboard{gap:8px;margin:20px 0 14px;display:grid}.homeboard h2{font:400 32px var(--font-head);letter-spacing:.03em;margin:0}.homeboard .board{color:#1f2a44;background:#fffaf0}.homeboard .board li{border-bottom-color:#1f2a444d;padding:8px 14px}.homeboard .board li:last-child{border-bottom:0}.homeboard .board .rk{color:var(--red);font-size:20px}.homeboard .board li.me .rk{color:#1f2a44}.homeboard .linkish{justify-self:start}.menu-btn{background:var(--ink);color:var(--paper);justify-content:center;align-items:center;display:inline-flex}.practice-btn{width:100%;margin-top:16px}.practice-btn:disabled{opacity:.5;cursor:default}.practice-hint{opacity:.75;text-align:center;margin:6px 0 0;font-size:14px}
