@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/karla-latin-ext-400-normal-DQe2ZdED.woff2) format("woff2"),url(/assets/karla-latin-ext-400-normal-CMxStcnq.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/karla-latin-400-normal-C_jajTY_.woff2) format("woff2"),url(/assets/karla-latin-400-normal-iWRxgclR.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/karla-latin-ext-500-normal-BQGx_UZ6.woff2) format("woff2"),url(/assets/karla-latin-ext-500-normal-BR9CgtUN.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/karla-latin-500-normal-6wzn_4WC.woff2) format("woff2"),url(/assets/karla-latin-500-normal-BWjg-GL4.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/karla-latin-ext-600-normal-CIPY_Mp5.woff2) format("woff2"),url(/assets/karla-latin-ext-600-normal-Cf-uwXr_.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/karla-latin-600-normal-BH_u9dis.woff2) format("woff2"),url(/assets/karla-latin-600-normal-BAoyHYuk.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/karla-latin-ext-700-normal-DnPH2EDB.woff2) format("woff2"),url(/assets/karla-latin-ext-700-normal-eTNnM7bB.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Karla;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/karla-latin-700-normal-DFuMffT3.woff2) format("woff2"),url(/assets/karla-latin-700-normal-CospC10L.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Karla fallback;src:local("Arial"),local("ArialMT");font-weight:400 500;size-adjust:103.91%;ascent-override:88.25%;descent-override:24.25%;line-gap-override:0%}@font-face{font-family:Karla fallback;src:local("Arial Bold"),local("Arial-BoldMT");font-weight:600 700;size-adjust:100.22%;ascent-override:91.49%;descent-override:25.14%;line-gap-override:0%}:root{color-scheme:light;--bg0: #f4ede0;--bg0-rgb: 244, 237, 224;--bg1: #fbf7ef;--bg2: #ece2d0;--panel: #fbf7ef;--panel-2: #f2e7d5;--line: rgba(42, 36, 28, .14);--line-strong: rgba(42, 36, 28, .3);--text: #2a241c;--brand: var(--text);--muted: #6b5f4e;--accent: #7a3b32;--accent-2: #8c473c;--accent-ink: #fbf7ef;--green: #2f6b3c;--red: #b03a2e;--check-miss: #b0215e;--scan-check: #197651;--scan-capture: #1975b3;--scan-threat: #5d127d;--amber: #7f5411;--sq-light: #f0e1c4;--sq-dark: #b98a5a;--blue: #2f6ba8;--panel-3: #e8dcc6;--felt: #3e5641;--felt-2: #4a6550;--felt-rgb: 62, 86, 65;--mount: clamp(4px, 1.3vw, 9px);--frame: #fbf7ef;--brass: #b08442;--brass-rgb: 176, 132, 66;--card-nback: #7c92ee;--card-hops: #f3be2c;--card-chase: #dba42a;--card-rays: #72c088;--card-spotcheck: #f9b19a;--card-tactics: #c2a9ee;--card-mates: #88cdbf;--card-endgame: #f2a7b4;--card-openings: #a2cdef;--card-drills: #d4b483;--card-zone: #449f60;--card-hanging: #f4825e;--card-worth: #d95b36;--card-check: #df6aa0;--card-cctv: #d8558f;--card-ink: #16130f;--bevel: rgba(255, 255, 255, .6);--bevel-strong: rgba(255, 255, 255, .85);--mark: rgba(91, 81, 66, .62);--ink-rgb: 42, 36, 28;--green-rgb: 47, 107, 60;--red-rgb: 176, 58, 46;--amber-rgb: 127, 84, 17;--blue-rgb: 47, 107, 168;--mark-rgb: 91, 81, 66;--cream-rgb: 255, 250, 240;--reach-rgb: 58, 50, 40;--reach-ink-rgb: 38, 32, 24;--accent-ink-soft: rgba(251, 247, 239, .82);--veil: rgba(251, 247, 239, .88);--accent-rgb: 122, 59, 50;--accent-grad: linear-gradient(180deg, var(--accent-2), var(--accent) 52%, #6b3229);--accent-grad-2: linear-gradient(180deg, var(--accent-2), var(--accent));--accent-tint: rgba(var(--accent-rgb), .12);--shadow-1: 0 6px 18px rgba(42, 36, 28, .14);--shadow-2-soft: 0 10px 26px rgba(42, 36, 28, .1);--shadow-2: 0 18px 44px rgba(42, 36, 28, .24);--shadow-piece: drop-shadow(0 2px 2px rgba(42, 36, 28, .38));--font-display: "Fraunces Variable", Fraunces, Georgia, serif;--font-body: "Karla", "Karla fallback", system-ui, -apple-system, sans-serif;--dur-1: .14s;--dur-2: .24s;--dur-3: .32s;--ease-spring: cubic-bezier(.22, 1.1, .36, 1);--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--r-sm: 10px;--r-md: 14px;--r-lg: 18px;--fs-caption: 12px;--fs-body: 14px;--fs-control: 16px;--fs-section: 20px;--fs-title: 28px;--fs-hero: 44px;--touch: 44px;--content: 520px;--root-max: var(--content);--gutter-l: calc(var(--s4) + env(safe-area-inset-left));--gutter-r: calc(var(--s4) + env(safe-area-inset-right))}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg0)}:root:has(.game){overscroll-behavior-y:none}body{touch-action:manipulation;background:var(--bg0);background-image:repeating-linear-gradient(97deg,rgba(var(--ink-rgb),.016) 0 1px,transparent 1px 5px),repeating-linear-gradient(8deg,rgba(var(--ink-rgb),.013) 0 1px,transparent 1px 7px),radial-gradient(130% 115% at 50% -8%,var(--bg1) 0%,var(--bg0) 45%,var(--bg2) 100%);background-repeat:repeat,repeat,no-repeat;background-size:100% 100%,100% 100%,cover;color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,.hero-title,.btn,.row-label{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.015em}.btn{font-weight:600;font-variant-numeric:lining-nums tabular-nums}.group-title,.section-title,.eyebrow{font-family:var(--font-body);letter-spacing:.1em}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;background:none;border:none;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}:focus:not(:focus-visible){outline:none}#root{max-width:var(--root-max);margin:0 auto;padding:calc(var(--s4) + env(safe-area-inset-top)) var(--gutter-r) calc(var(--s5) + env(safe-area-inset-bottom)) var(--gutter-l);min-height:100dvh;display:flex;flex-direction:column}.app-main{display:flex;flex-direction:column;flex:1 0 auto;min-width:0}.screen,.game{animation:screen-in var(--dur-1) ease-out both}@keyframes screen-in{0%{opacity:0;transform:translateY(4px)}}.screen{display:flex;flex-direction:column;gap:var(--s4)}.screen-header,.brand{display:grid;grid-template-columns:var(--touch) 1fr var(--touch);align-items:center;min-height:var(--touch)}.hdr-title,.screen-title{margin:0;text-align:center;font-size:var(--fs-section);font-weight:800;letter-spacing:-.2px}.hdr-spacer{width:var(--touch)}.hdr-btn{width:var(--touch);height:var(--touch);border-radius:var(--r-md);font-size:var(--fs-section);color:var(--muted);display:inline-flex;align-items:center;justify-content:center;transition:color .15s,background .15s}.hdr-btn:hover{color:var(--text);background:var(--panel)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:var(--touch);padding:var(--s3) var(--s4);border-radius:var(--r-md);border:1px solid var(--line);background:var(--panel);box-shadow:inset 0 1px 0 var(--bevel);font-size:var(--fs-control);font-weight:700;text-decoration:none;transition:border-color .15s,background .15s,transform .06s}.btn:hover{border-color:var(--line-strong)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:default}.btn.block{width:100%}.btn.primary{background:var(--accent-grad);border-color:transparent;color:var(--accent-ink);box-shadow:0 8px 24px rgba(var(--accent-rgb),.22),inset 0 1px 0 var(--bevel-strong)}.btn.on{background:var(--panel-2);color:var(--text);border-color:var(--line);box-shadow:inset 0 -2px 0 var(--accent)}.btn.quiet{background:none;border-color:transparent;box-shadow:none;color:var(--muted);font-weight:700;font-size:var(--fs-body)}.btn.quiet:hover{color:var(--text)}.link-row{display:flex;justify-content:center;gap:var(--s2);flex-wrap:wrap}.btn-row{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:var(--s2)}.landing,.nback-home{gap:var(--s5)}.brand h1{margin:0;text-align:center;font-size:var(--fs-title);font-weight:800;letter-spacing:-.5px;color:var(--brand)}.brand .knight{flex:none;width:.64em;height:.8em;margin-right:var(--s1)}.greeting{display:flex;flex-direction:column;gap:2px;text-align:center}.greeting p{margin:0;font-family:var(--font-display);line-height:1.3}.greeting-hello{font-weight:700;font-size:21px}.greeting-line{font-weight:400;font-size:20px;text-wrap:balance}.home-count{margin:calc(var(--s2) - var(--s5)) 0 0;text-align:center;color:var(--muted);font-size:var(--fs-body);font-weight:600}.home-head{margin:0 0 calc(var(--s2) - var(--s5));font-family:var(--font-display);font-size:var(--fs-section);font-weight:700}.brand .home-streak{justify-self:start;padding:0}.trainer-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.trainer-cards .card-drills{grid-column:1 / -1}.card{display:flex;flex-direction:column;justify-content:space-between;gap:18px;min-height:184px;padding:22px 20px 20px 22px;border:0;border-radius:20px;color:var(--card-ink);text-align:left;font:inherit;cursor:pointer;transition:transform .06s,filter .15s}.card:hover{filter:brightness(1.04)}.card:active{transform:scale(.99)}.card:focus-visible{outline:3px solid var(--text);outline-offset:3px}.card-done{position:absolute;top:8px;right:8px;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--card-ink);color:var(--bg1)}.card-start{align-self:flex-start;max-width:100%;padding:2px var(--s1);text-wrap:balance;border-radius:var(--s2);background:var(--card-ink);color:var(--bg1);font-size:var(--fs-caption);font-weight:700}.card-nback{background:var(--card-nback)}.card-hops{background:var(--card-hops)}.card-chase{background:var(--card-chase)}.card-rays{background:var(--card-rays)}.card-zone{background:var(--card-zone)}.card-spotcheck{background:var(--card-spotcheck)}.card-hanging{background:var(--card-hanging)}.card-worth{background:var(--card-worth)}.card-check{background:var(--card-check)}.card-cctv{background:var(--card-cctv)}.card-tactics{background:var(--card-tactics)}.card-mates{background:var(--card-mates)}.card-endgame{background:var(--card-endgame)}.card-openings{background:var(--card-openings)}.card-drills{background:var(--card-drills)}.card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.card-words{display:flex;flex-direction:column;gap:6px;min-width:0}.card-name{font-family:var(--font-display);font-weight:800;font-size:30px;line-height:1.05;letter-spacing:-.5px}.card-line{font-weight:500;font-size:17px;line-height:1.3;text-wrap:pretty}.card-bottom{font-weight:700;font-size:16px;line-height:1.2;text-wrap:balance}.home-icon{display:block;flex-shrink:0}.card-top .card-name{white-space:nowrap;font-size:clamp(24px,7.4vw,30px)}.card-top .home-icon{width:clamp(64px,20vw,84px);height:auto}.house-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"nback nback" "chase hops" "cctv hops" "cctv spotcheck" "check hanging" "worth worth" "rays zone";grid-template-rows:minmax(212px,auto) minmax(128px,auto) minmax(58px,auto) minmax(198px,auto) minmax(128px,auto) minmax(212px,auto) minmax(128px,auto);gap:12px}.house-cards .card-nback{grid-area:nback}.house-cards .card-chase{grid-area:chase}.house-cards .card-hops{grid-area:hops}.house-cards .card-cctv{grid-area:cctv}.house-cards .card-spotcheck{grid-area:spotcheck}.house-cards .card-check{grid-area:check}.house-cards .card-hanging{grid-area:hanging}.house-cards .card-worth{grid-area:worth}.house-cards .card-rays{grid-area:rays}.house-cards .card-zone{grid-area:zone}.house-cards .card{position:relative;min-height:0}.card.big{gap:18px;padding:22px 20px 20px 22px}.card.big .card-top .home-icon{width:clamp(64px,calc(43.6vw - 75.6px),96px)}.card.tall,.card.medium,.house-cards .card.small{justify-content:space-between;align-items:flex-start}.card.tall{gap:12px;padding:18px 14px 16px 16px}.card.medium{gap:10px;padding:16px 12px 16px 14px}.house-cards .card.small{gap:8px;min-height:0;padding:14px 12px 14px 14px;border-radius:18px}.card.tall .card-words,.card.medium .card-words,.house-cards .card.small .card-words{gap:4px;margin-top:auto}.card.tall .card-name{font-size:clamp(22px,6.9vw,26px)}.card.tall .card-line{font-size:15px}.card.tall .card-bottom{font-size:14px}.card.tall .home-icon{width:clamp(64px,21.3vw,80px);height:auto}.card.medium .card-name{font-size:clamp(19px,5.9vw,22px)}.card.medium .card-line{font-size:14px}.card.medium .card-bottom{font-size:13px}.card.medium .home-icon{width:clamp(48px,15vw,56px);height:auto}.house-cards .card.small .card-name{font-size:clamp(16px,4.8vw,18px);letter-spacing:-.4px}.house-cards .card.small .card-bottom{font-size:13px}.house-cards .card.small .home-icon{width:clamp(48px,15vw,56px);height:auto}.card.small{justify-content:flex-start;gap:12px;min-height:164px;padding:16px;border-radius:18px}.card.small .card-words{gap:4px;margin-top:auto}.card.small .card-name{font-size:22px;letter-spacing:-.3px}.card.small .card-bottom{font-size:14px;line-height:1.25}.home-foot{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding-top:var(--s2);text-align:center}.home-closing{margin:0;font-family:var(--font-display);font-weight:700;font-size:19px;line-height:1.3;text-wrap:balance}.tagline{margin:calc(-1 * var(--s3)) 0 0;text-align:center;color:var(--muted);font-size:var(--fs-control)}.mode-desc{margin:var(--s2) 0 0;text-align:center;color:var(--muted);font-size:var(--fs-body);min-height:1.5em}.mode-desc .best{color:var(--accent);font-weight:700}.hero-btn{width:100%;display:flex;flex-direction:column;align-items:center;gap:var(--s1);padding:var(--s4);min-height:72px;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow-1),inset 0 1px 0 var(--bevel);transition:border-color .15s,transform .06s}.hero-btn:hover{border-color:var(--line-strong)}.hero-btn:active{transform:translateY(1px)}.hero-btn.primary{background:var(--accent-grad);border-color:transparent;color:var(--accent-ink);box-shadow:0 10px 28px rgba(var(--accent-rgb),.24),inset 0 1px 0 var(--bevel-strong)}.hero-title{font-size:var(--fs-section);font-weight:800;display:inline-flex;align-items:center;gap:var(--s2)}.hero-sub{font-size:var(--fs-body);color:var(--muted);font-weight:500}.hero-btn.primary .hero-sub{color:var(--accent-ink-soft)}.stepper{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--panel)}.stepper button{width:var(--touch);height:var(--touch);font-size:var(--fs-section);color:var(--muted);transition:background .15s,color .15s}.stepper button+button{border-left:1px solid var(--line)}.stepper button:hover{background:var(--panel-2);color:var(--text)}.game-theme,.home-layer{display:contents}.theme-nback{--game: var(--card-nback);--game-rgb: 124, 146, 238}.theme-hops{--game: var(--card-hops);--game-rgb: 243, 190, 44}.theme-chase{--game: var(--card-chase);--game-rgb: 219, 164, 42}.theme-rays{--game: var(--card-rays);--game-rgb: 114, 192, 136}.theme-spotcheck{--game: var(--card-spotcheck);--game-rgb: 249, 177, 154}.theme-tactics{--game: var(--card-tactics);--game-rgb: 194, 169, 238}.theme-mates{--game: var(--card-mates);--game-rgb: 136, 205, 191}.theme-endgame{--game: var(--card-endgame);--game-rgb: 242, 167, 180}.theme-openings{--game: var(--card-openings);--game-rgb: 162, 205, 239}.theme-drills{--game: var(--card-drills);--game-rgb: 212, 180, 131}.theme-zone{--game: var(--card-zone);--game-rgb: 68, 159, 96}.theme-hanging{--game: var(--card-hanging);--game-rgb: 244, 130, 94}.theme-worth{--game: var(--card-worth);--game-rgb: 217, 91, 54}.theme-check{--game: var(--card-check);--game-rgb: 223, 106, 160}.theme-cctv{--game: var(--card-cctv);--game-rgb: 216, 85, 143}.game-theme .screen-header{border-bottom:3px solid var(--game);padding-bottom:var(--s2)}.game-theme .btn.primary,.game-theme .hero-btn.primary{background:var(--game);color:var(--card-ink);box-shadow:0 8px 24px rgba(var(--game-rgb),.35),inset 0 1px 0 var(--bevel-strong)}.game-theme .hero-btn.primary .hero-sub{color:var(--card-ink)}.game-theme .btn.primary:focus-visible,.game-theme .hero-btn.primary:focus-visible{outline-color:var(--card-ink)}.game-theme .segmented button.on,.game-theme .btn.on{background:rgba(var(--game-rgb),.16);box-shadow:inset 0 -3px 0 var(--game)}.game-theme .group-body{border-top:3px solid var(--game)}.gcard{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5;display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;background:var(--game);color:var(--card-ink);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);animation:card-up var(--dur-3) cubic-bezier(.22,1,.36,1) both}.gcard.still{animation:none}.gcard.leaving{animation:card-down var(--dur-2) ease-in both;pointer-events:none}@keyframes card-up{0%{transform:translateY(100%)}}@keyframes card-down{to{transform:translateY(100%)}}:root:has(.gcard){overflow:hidden}.gcard-top{display:flex;align-items:center;min-height:56px;padding:var(--s2) var(--s3) 0}.gcard-close{width:var(--touch);height:var(--touch);display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:var(--card-ink)}.gcard-close:focus-visible{outline-color:var(--card-ink)}.gcard-body{flex-grow:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;max-width:var(--content);margin:0 auto;padding:0 28px 64px;text-align:center}.gcard-name{margin:18px 0 0;font-size:40px;font-weight:800;line-height:1.05;letter-spacing:-.01em}.gcard-name:focus{outline:none}.gcard-sub{margin:10px 0 0;font-family:var(--font-display);font-size:24px;line-height:1.25;text-wrap:balance}.gcard-lead{margin:22px 0 0;max-width:300px;font-family:var(--font-display);font-size:21px;line-height:1.35;text-wrap:balance}.gcard-pills{display:flex;flex-direction:column;align-items:center;gap:var(--s3);margin-top:30px}.gcard-dare{margin:22px 0 0;max-width:300px;padding:var(--s2) var(--s4);border-radius:var(--r-md);background:var(--bg1);color:var(--card-ink);font-weight:700;font-size:var(--fs-control);text-wrap:balance}.gcard-notes{display:flex;flex-direction:column;gap:2px;margin-top:14px;font-weight:600;font-size:var(--fs-body)}.gcard-notes p{margin:0}.gcard-pair{display:flex;gap:10px}.gcard-foot{display:flex;flex-direction:column;gap:var(--s1);margin-top:30px}.gcard-foot p{margin:0;line-height:1.3}.gcard-date{font-size:var(--fs-control);font-weight:700}.gcard-byline{font-size:var(--fs-body)}.gcard .switch-row{width:100%;max-width:288px;margin:var(--s4) auto 0;padding:var(--s2) var(--s3);gap:var(--s3);color:var(--card-ink)}.gcard .switch-row+.switch-row{margin-top:0}.gcard .switch-row .row-sub{color:var(--card-ink);font-size:var(--fs-body)}.gcard .switch{background:transparent;border:2px solid var(--card-ink)}.gcard .switch:after{top:2px;left:2px;background:var(--card-ink)}.gcard .switch.on{background:var(--card-ink);border-color:var(--card-ink)}.gcard .switch.on:after{background:var(--game)}.pill{display:inline-flex;align-items:center;justify-content:center;min-width:111px;min-height:46px;padding:0 var(--s4);border:2px solid var(--card-ink);border-radius:999px;color:var(--card-ink);font-family:var(--font-body);font-size:var(--fs-control);font-weight:700;line-height:1;white-space:nowrap;transition:transform .06s,background .15s}.pill:hover{background:rgba(var(--ink-rgb),.08)}.pill:active{transform:scale(.98)}.pill:disabled{opacity:.55;cursor:default}.pill:focus-visible{outline:3px solid var(--card-ink);outline-offset:3px}.pill.wide{width:232px}.pill.primary{width:232px;min-height:54px;background:var(--card-ink);color:var(--bg1);font-size:17px}.pill.primary:hover{background:var(--card-ink)}.howto{gap:0;padding-bottom:var(--s6);animation:howto-in var(--dur-3) ease-out both}@keyframes howto-in{0%{opacity:0;transform:translateY(24px)}}.howto-top{display:flex;justify-content:flex-end}.howto-close{width:var(--touch);height:var(--touch);display:inline-flex;align-items:center;justify-content:center;color:var(--text)}.howto-title{margin:0;font-size:30px;font-weight:800;line-height:1.1}.howto-goal{margin:var(--s2) 0 0;font-family:var(--font-display);font-size:var(--fs-section);line-height:1.35}.howto-list{margin:18px 0 0;padding-left:20px;font-size:var(--fs-control);line-height:1.45}.howto-list li+li{margin-top:10px}.howto-part{margin-top:22px;padding-top:var(--s4);border-top:1px solid var(--line)}.howto-head{margin:0;font-family:var(--font-body);font-size:15px;font-weight:700;letter-spacing:0}.howto-part .howto-list{margin-top:var(--s3)}.howto-examples{display:flex;flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:18px;margin-top:14px}.howto-example{display:flex;flex-direction:column;gap:var(--s2);width:min-content;margin:0}.howto-example figcaption{font-size:var(--fs-body);line-height:1.4}.howto-watch{margin:22px 0 0;font-size:var(--fs-body);line-height:1.4}.howto-watch a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.howto-done{align-self:center;margin-top:22px}.mini-board{position:relative;display:grid;grid-template-columns:repeat(var(--cols),var(--cell));width:max-content;border:3px solid var(--felt);border-radius:6px;overflow:hidden}.mb-sq{position:relative;width:var(--cell);height:var(--cell)}.mb-sq.light{background:var(--sq-light)}.mb-sq.dark{background:var(--sq-dark)}.mb-dot{position:absolute;top:35%;right:35%;bottom:35%;left:35%;border-radius:50%;background:rgba(var(--reach-rgb),.42)}.mb-piece{position:absolute;left:9%;top:9%;width:82%;height:82%;pointer-events:none}.mb-arrows{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.mb-arrow{opacity:.88}.mb-arrow line{stroke:var(--green);stroke-width:.18;stroke-linecap:round}.mb-arrow path{fill:var(--green)}.mb-line{fill:none;stroke:var(--text);stroke-width:.085;stroke-dasharray:.17 .13;opacity:.9}.mb-case .mb-line{stroke:rgb(var(--cream-rgb));stroke-width:.2;stroke-dasharray:none;stroke-linecap:round}.mb-case .mb-arrow line{stroke:rgb(var(--cream-rgb));stroke-width:.29}.mb-case .mb-arrow path{fill:rgb(var(--cream-rgb));stroke:rgb(var(--cream-rgb));stroke-width:.11;stroke-linejoin:round}.mb-last{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(var(--accent-rgb),.3)}.mb-arrows>.mb-arrow.scan-check line{stroke:var(--scan-check)}.mb-arrows>.mb-arrow.scan-check path{fill:var(--scan-check)}.mb-arrows>.mb-arrow.scan-capture line{stroke:var(--scan-capture)}.mb-arrows>.mb-arrow.scan-capture path{fill:var(--scan-capture)}.mb-arrows>.mb-arrow.scan-threat line{stroke:var(--scan-threat)}.mb-arrows>.mb-arrow.scan-threat path{fill:var(--scan-threat)}.mb-arrows>.mb-arrow.win line{stroke:var(--brass)}.mb-arrows>.mb-arrow.win path{fill:var(--brass)}.segmented button{font-family:var(--font-display);font-optical-sizing:auto;letter-spacing:-.01em}.segmented{display:inline-flex;border:1px solid var(--line);border-radius:var(--r-md);overflow:hidden;background:var(--panel)}.segmented.block{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;width:100%}.segmented button{min-height:var(--touch);padding:0 var(--s3);color:var(--muted);font-weight:700;font-size:var(--fs-body);white-space:nowrap;transition:background .15s,color .15s}.segmented.block button{padding:0 var(--s1);letter-spacing:-.2px;white-space:normal;line-height:1.15}.segmented button+button{border-left:1px solid var(--line)}.segmented button.on{background:var(--panel-2);color:var(--text);box-shadow:inset 0 -2px 0 var(--accent)}.group{display:flex;flex-direction:column;gap:var(--s2)}.group-title{margin:0 var(--s1);color:var(--muted);font-size:var(--fs-caption);font-weight:700;text-transform:uppercase;letter-spacing:1.2px}.group-body{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--shadow-2-soft),inset 0 1px 0 var(--bevel);display:flex;flex-direction:column}.group-body>*+*{border-top:1px solid var(--line)}.row{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);min-height:var(--touch);padding:var(--s3) var(--s4);width:100%;text-align:left;color:inherit;text-decoration:none}.row.stack{flex-direction:column;align-items:stretch;gap:var(--s2)}.row.link{cursor:pointer;transition:background .15s}.row.link:hover{background:var(--panel-2)}.row-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.row-label{font-size:var(--fs-control);font-weight:600}.row-sub{display:block;color:var(--muted);font-size:var(--fs-caption);font-weight:500}.row-chevron{color:var(--muted);font-size:var(--fs-section)}.group-note{margin:0;padding:var(--s3) var(--s4);color:var(--muted);font-size:var(--fs-caption)}.row-mark{flex:none;color:var(--muted);font-size:var(--fs-caption);font-weight:700;text-transform:uppercase;letter-spacing:.6px;white-space:nowrap}.row-mark.done{color:var(--green);text-transform:none;letter-spacing:0}.row-tools{display:flex;gap:var(--s2);flex:none}.row-open{flex:1;display:flex;align-items:center;min-width:0;min-height:var(--touch);text-align:left;color:inherit;cursor:pointer}.row-open:hover{color:var(--fg)}.row-sub b{color:var(--green);font-weight:700}.home-note{margin:0;text-align:center;color:var(--muted);font-size:var(--fs-caption)}.vignette{position:relative;flex:none;display:block;border-radius:var(--r-sm);overflow:hidden;background:repeating-conic-gradient(var(--sq-dark) 0 25%,var(--sq-light) 0 50%) 0 0 / 50% 50%}.vig-piece{position:absolute;width:25%;height:25%;pointer-events:none}.switch-row{cursor:pointer}.switch{flex:none;width:48px;height:28px;border-radius:999px;background:var(--panel-2);border:1px solid var(--line-strong);position:relative;transition:background .15s,border-color .15s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--muted);transition:transform .15s,background .15s}.switch.on{background:var(--accent);border-color:var(--accent)}.switch.on:after{transform:translate(20px);background:var(--accent-ink)}.swatch-row{display:flex;gap:var(--s2);flex-wrap:wrap}.swatch{width:var(--touch);height:var(--touch);border-radius:var(--r-sm);overflow:hidden;position:relative;flex:none;border:2px solid transparent}.swatch:before,.swatch:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0}.swatch:before{background:var(--sw-light);clip-path:polygon(0 0,100% 0,0 100%)}.swatch:after{background:var(--sw-dark);clip-path:polygon(100% 0,100% 100%,0 100%)}.swatch.on{border-color:var(--accent)}.field{display:flex;flex-direction:column;gap:var(--s2);padding:var(--s3) var(--s4)}.field input,.input{width:100%;min-height:var(--touch);padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--bg0);color:var(--text);font-size:var(--fs-control)}.field input:focus,.input:focus{outline:none;border-color:var(--accent)}textarea.input{padding:var(--s3);min-height:132px;line-height:1.5;resize:vertical}.field input[type=file]{padding:var(--s2) var(--s3);min-height:var(--touch)}.verified-chip{color:var(--green);font-weight:700;font-size:var(--fs-caption)}.verify-box{display:flex;flex-direction:column;gap:var(--s3);padding:var(--s4);color:var(--muted);border-left:3px solid var(--accent)}.verify-box p{margin:0}.verify-box a{color:var(--accent)}.verify-box b{color:var(--text)}.verify-code{align-self:center;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:var(--fs-section);font-weight:700;letter-spacing:2px;color:var(--accent);background:var(--panel-2);border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:var(--s2) var(--s4);user-select:all;-webkit-user-select:all}.verify-error{color:var(--red);font-weight:600}.prose{color:var(--muted);font-size:var(--fs-control);line-height:1.6}.prose p{margin:0 0 var(--s4)}.prose b{color:var(--text)}.game{display:flex;flex-direction:column;align-items:center;gap:var(--s4);flex:1;justify-content:center}.hud{display:flex;align-items:center;gap:var(--s2);width:100%;max-width:480px;justify-content:space-between}.chip{background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:var(--s1) var(--s3);font-size:var(--fs-body);color:var(--muted);font-weight:700;white-space:nowrap}.chip.nback{color:var(--accent);font-size:var(--fs-control);font-weight:800}.chip.count{font-variant-numeric:tabular-nums}.chip.alert{color:var(--red)}.chip.side{display:inline-flex;align-items:center;gap:var(--s1);color:var(--text)}.chip.side .side-pawn{width:21px;height:21px}.game>.side-row,.screen>.side-row{align-self:center;margin-bottom:calc(var(--s1) - var(--s4))}.replay-open>.side-row{margin-bottom:calc(var(--s1) - var(--s3))}.hdr-side{display:flex;align-items:center;justify-content:center;gap:var(--s2);min-width:0}.hdr-side .chip.side{padding:var(--s1)}.hdr-side .chip.side .side-words{display:none}@media(min-width:360px){.hdr-side .chip.side{padding:var(--s1) var(--s3)}.hdr-side .chip.side .side-words{display:inline}}.board-frame{padding:calc(var(--s2) + var(--mount));border-radius:var(--r-lg);background:var(--felt);background-image:radial-gradient(120% 90% at 50% 26%,var(--felt-2) 0%,var(--felt) 72%);box-shadow:var(--shadow-2),inset 0 1px 0 var(--bevel);position:relative}.board{--sz: min(10.4vw, 56px);position:relative;display:grid;grid-template-columns:repeat(8,var(--sz));grid-template-rows:repeat(8,var(--sz));box-shadow:0 0 0 var(--mount) var(--frame),0 4px 14px rgba(var(--ink-rgb),.26);border-radius:3px;overflow:hidden;user-select:none;-webkit-user-select:none}.tutorial .board{--sz: min(9.6vw, 50px)}@media(max-width:448px){.board-frame.edge{width:100vw;margin-inline:calc(-1 * var(--gutter-l)) calc(-1 * var(--gutter-r));padding:0;border-radius:0;background:none;box-shadow:none;overflow-x:clip}.board-frame.edge .board{--sz: 12.5vw ;border-radius:0;box-shadow:none}.board-frame.edge .board-msg{top:0;right:0;bottom:0;left:0;border-radius:0}.board-frame.edge~:is(.tb-start,.nt-promo,.nt-overlay,.nt-skip){inset:0 calc(-1 * var(--gutter-r)) 0 calc(-1 * var(--gutter-l));border-radius:0}.board-frame.edge~.cp-promo{--sz: 12.5vw ;top:0;left:calc(-1 * var(--gutter-l))}.drill-peek>.board-frame.edge{margin-inline:calc(-1 * var(--gutter-l) - 1px) calc(-1 * var(--gutter-r) - 1px)}.board-frame.edge+.progress{margin-top:calc(-1 * var(--s2))}}.sq{position:relative;width:var(--sz);height:var(--sz)}.sq.light{background:var(--sq-light)}.sq.dark{background:var(--sq-dark)}.coord{position:absolute;font-size:max(10px,calc(var(--sz) * .24));font-weight:700;pointer-events:none}.coord.rank{top:2px;left:4px}.coord.file{right:4px;bottom:2px}.sq.light .coord{color:rgba(var(--ink-rgb),.7)}.sq.dark .coord{color:rgb(var(--ink-rgb))}.attack{position:absolute;pointer-events:none;top:0;right:0;bottom:0;left:0;background:rgba(var(--cream-rgb),.8);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='black' stroke-linecap='round' stroke-width='4.2'%3E%3Ccircle cx='16' cy='16' r='10'/%3E%3Cpath d='M16 2V11M16 21V30M2 16H11M21 16H30'/%3E%3C/svg%3E") center / 100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='black' stroke-linecap='round' stroke-width='4.2'%3E%3Ccircle cx='16' cy='16' r='10'/%3E%3Cpath d='M16 2V11M16 21V30M2 16H11M21 16H30'/%3E%3C/svg%3E") center / 100% 100% no-repeat;animation:attack-in .24s both;animation-delay:calc(var(--d, 0) * 40ms)}.attack:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:var(--red);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='black' stroke-linecap='round' stroke-width='2'%3E%3Ccircle cx='16' cy='16' r='10'/%3E%3Cpath d='M16 2V11M16 21V30M2 16H11M21 16H30'/%3E%3C/svg%3E") center / 100% 100% no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32' fill='none' stroke='black' stroke-linecap='round' stroke-width='2'%3E%3Ccircle cx='16' cy='16' r='10'/%3E%3Cpath d='M16 2V11M16 21V30M2 16H11M21 16H30'/%3E%3C/svg%3E") center / 100% 100% no-repeat}@keyframes attack-in{0%{opacity:0;transform:scale(.25)}to{opacity:1;transform:scale(1)}}.ring{position:absolute;top:5%;right:5%;bottom:5%;left:5%;border:3px dashed rgba(var(--brass-rgb),.85);border-radius:22%;pointer-events:none}.board-lines{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none;overflow:visible}.board-lines .line{stroke-width:1.1;stroke-linecap:round;opacity:.85;animation:line-in .22s ease-out both}.board-lines .line.mine{stroke:var(--green)}.board-lines .line.theirs{stroke:var(--red)}.piece-img.mine{filter:drop-shadow(0 0 2px var(--green)) drop-shadow(0 0 7px rgba(var(--green-rgb),.7))}.piece-img.theirs{filter:drop-shadow(0 0 2px var(--red)) drop-shadow(0 0 7px rgba(var(--red-rgb),.7))}.board-lines .line.arrow{stroke:var(--brass);stroke-width:1.6;opacity:1;stroke-opacity:.95}.board-lines .line.found,.board-lines .line.missed,.board-lines .line.wrong{stroke-width:2;opacity:1}.board-lines .line.found{stroke:var(--green)}.board-lines .line.wrong{stroke:var(--red)}.board-lines .line.missed{stroke:var(--check-miss);stroke-dasharray:2.4 1.8;stroke-linecap:butt}.board-lines .line.opened{stroke:var(--check-miss);stroke-width:1;stroke-dasharray:1.8 1.4;stroke-linecap:butt}.board-lines .line.scan-check,.board-lines .line.scan-capture,.board-lines .line.scan-threat,.board-lines .line.win{stroke-width:2;opacity:1}.board-lines .line.scan-check{stroke:var(--scan-check)}.board-lines .line.scan-capture{stroke:var(--scan-capture)}.board-lines .line.scan-threat{stroke:var(--scan-threat)}.board-lines .line.win{stroke:var(--brass)}.board-lines .line.dashed{stroke-dasharray:2.4 1.8;stroke-linecap:butt}.board-lines .line.faint,.board-lines .line-case.faint{stroke-opacity:.5}.board-lines marker .faint{fill-opacity:.5;stroke-opacity:.5}.board-lines .line-case{stroke:rgb(var(--cream-rgb));stroke-width:3.4;stroke-linecap:round;animation:line-in .22s ease-out both}.board-lines .line-case.opened{stroke-width:2.2}.board-lines .arrow-case{fill:rgb(var(--cream-rgb));stroke:rgb(var(--cream-rgb));stroke-width:3;stroke-linejoin:round}@keyframes line-in{0%{opacity:0}}.verdict-chip{align-self:center;padding:4px 12px;border-radius:999px;font-weight:800;font-size:var(--fs-control);animation:pop .26s var(--ease-spring) both}.verdict-chip.safe{background:rgba(var(--red-rgb),.14);color:var(--red)}.verdict-chip.hanging{background:rgba(var(--green-rgb),.14);color:var(--green)}.why-line{margin:0;text-align:center;color:var(--muted);font-size:var(--fs-body);min-height:1.4em}.storm-timer.low{color:var(--red)}.replay-row{display:flex;gap:var(--s3);align-items:center;width:100%;min-height:48px;padding:var(--s2) var(--s4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);color:var(--text);font:inherit;text-align:left}.replay-row .tag{margin-left:auto;font-weight:700;color:var(--muted)}.replay-open{display:grid;gap:var(--s3)}.board-links{margin:0;text-align:center;font-size:var(--fs-caption);color:var(--muted)}.board-links a{display:inline-flex;align-items:center;min-height:var(--touch);padding-inline:var(--s1);color:var(--muted)}.board-finish{margin:0;text-align:center;font-size:var(--fs-caption)}.board-finish-btn{display:inline-flex;align-items:center;min-height:var(--touch);padding-inline:var(--s1);color:var(--muted);font-size:var(--fs-caption);text-decoration:underline}.fsheet-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:6}.fsheet-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(var(--ink-rgb),.32)}.fsheet{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:var(--s3);max-width:var(--content);max-height:92dvh;margin:0 auto;overflow-y:auto;overscroll-behavior:contain;padding:var(--s5) var(--s4) calc(var(--s5) + env(safe-area-inset-bottom));border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--bg1);color:var(--text);box-shadow:0 -8px 32px rgba(var(--ink-rgb),.18);animation:card-up var(--dur-3) cubic-bezier(.22,1,.36,1) both}:root:has(.fsheet){overflow:hidden}.fsheet-title{margin:0;font-size:var(--fs-section);font-weight:800}.fsheet-title:focus{outline:none}.fsheet-cap{margin:calc(-1 * var(--s2)) 0 0;color:var(--muted);font-size:var(--fs-caption)}.fsheet-rule{width:100%;margin:var(--s1) 0;border:0;border-top:1px solid var(--line)}.fsheet-link{display:grid;grid-template-columns:1fr auto;column-gap:var(--s2);min-height:var(--touch);padding:var(--s2) 0;color:var(--text);text-decoration:none}.fsheet-name{font-weight:700}.fsheet-arrow{color:var(--muted)}.fsheet-sub{grid-column:1 / -1;color:var(--muted);font-size:var(--fs-caption)}.strength{display:flex;flex-direction:column;gap:var(--s1)}.strength-label{margin:0;font-weight:700}.strength-note{margin:0;color:var(--muted);font-size:var(--fs-caption)}.cp-promo{--sz: min(10.4vw, 56px);position:absolute;top:calc(var(--s2) + var(--mount));left:calc(var(--s2) + var(--mount));width:calc(8 * var(--sz));height:calc(8 * var(--sz));z-index:30}.cp-promo-col{position:absolute;top:0;width:12.5%;display:flex;flex-direction:column;border-radius:var(--r-sm);background:var(--bg1);box-shadow:0 6px 18px rgba(var(--ink-rgb),.28)}.cp-promo-piece{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1}.cp-promo-piece img{width:88%;height:88%}.game.computer{justify-content:flex-start}.computer>.screen-header{align-self:stretch}.cp-from{margin:calc(-1 * var(--s3)) 0 0;color:var(--muted);font-size:var(--fs-caption);text-align:center}.cp-board{position:relative}.cp-failed{display:flex;flex-direction:column;gap:var(--s2);width:100%;max-width:480px}.cp-ask{align-self:center;font-weight:700}.cp-foot{min-height:var(--touch);padding-inline:var(--s2);color:var(--muted);font-size:var(--fs-caption)}.cp-end{display:flex;flex-direction:column;align-items:center;gap:var(--s2);width:100%;max-width:480px;text-align:center}.cp-end-title{margin:0;font-size:var(--fs-section);font-weight:800}.cp-end-sub{margin:var(--s1) 0 0;color:var(--muted);font-size:var(--fs-caption)}.cp-end .strength{align-self:stretch;text-align:left}.cp-back{display:inline-flex;align-items:center;min-height:var(--touch);padding-inline:var(--s1);color:var(--muted);font-size:var(--fs-caption);text-decoration:underline}.game.closings{justify-content:flex-start}.closings>.screen-header{align-self:stretch}.hdr-btn.cl-load{font-size:var(--fs-control);font-weight:700}.cl-caption{margin:calc(-1 * var(--s3)) 0 0;color:var(--muted);font-size:var(--fs-caption);text-align:center;line-height:calc(var(--fs-control) * 1.5);height:calc(var(--fs-control) * 1.5)}.cl-pick{align-self:stretch;color:var(--text)}.cl-choose{-moz-appearance:none;appearance:none;-webkit-appearance:none;max-width:calc(100% - var(--s4));margin:calc(-1 * var(--s2)) 0;padding:var(--s2) 0;border:0;border-radius:0;background:transparent;color:inherit;font:inherit;font-size:var(--fs-control);font-weight:700;text-align:center;text-align-last:center;text-overflow:ellipsis;cursor:pointer}.cl-chevron{margin-left:var(--s1);color:var(--muted)}.cl-steps{position:relative;display:flex;flex-wrap:nowrap;align-items:center;align-self:stretch;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;margin:0;padding:0;list-style:none;color:var(--muted);font-size:var(--fs-caption);font-weight:700}.cl-steps::-webkit-scrollbar{display:none}.cl-step:first-child{margin-left:auto}.cl-step:last-child{margin-right:auto}.cl-step{position:relative;display:inline-flex;align-items:center;gap:3px;padding-bottom:2px;border-bottom:2px solid transparent;white-space:nowrap}.cl-step+.cl-step{margin-left:var(--s4)}.cl-step+.cl-step:before{content:"·";position:absolute;left:calc(-1 * var(--s4));width:var(--s4);text-align:center;color:var(--muted)}.cl-step.now{color:var(--text);border-bottom-color:var(--accent)}.cl-tick{color:var(--green)}.cl-board{position:relative}.cl-done{display:flex;flex-direction:column;align-items:center;gap:var(--s2);width:100%;max-width:480px;text-align:center}.cl-done-title{margin:0;font-size:var(--fs-section);font-weight:800}.cl-line{margin:0 0 var(--s2);font-size:var(--fs-body);font-weight:700}.cl-link{display:inline-flex;align-items:center;min-height:var(--touch);padding-inline:var(--s1);color:var(--muted);font-size:var(--fs-caption);text-decoration:underline}.replay-open .board{--sz: min(10.4vw, 56px, calc((min(100vw, var(--root-max)) - var(--gutter-l) - var(--gutter-r) - 2 * (var(--s2) + var(--mount))) / 8))}td>.replay-open .board{--sz: min(10.4vw, 56px, calc((min(100vw, var(--root-max)) - var(--gutter-l) - var(--gutter-r) - 2 * (var(--s2) + var(--mount)) - var(--s3) - var(--s1) - 2px) / 8))}.ring .tally{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);font-size:12px;font-weight:800;color:var(--accent-ink);background:rgba(var(--ink-rgb),.82);padding:1px 6px;border-radius:6px;white-space:nowrap}.piece-img.attacker{filter:drop-shadow(0 0 2px var(--red)) drop-shadow(0 0 7px rgba(var(--red-rgb),.7))}.piece-img.defender{filter:drop-shadow(0 0 2px var(--green)) drop-shadow(0 0 7px rgba(var(--green-rgb),.7))}.controls.idle .ctl{opacity:.4}.ring.asked{border-style:solid;border-color:var(--accent);box-shadow:inset 0 0 0 2px rgba(var(--accent-rgb),.35);animation:pop .26s var(--ease-spring) both}.piece-img{position:absolute;top:3%;right:3%;bottom:3%;left:3%;width:94%;height:94%;filter:drop-shadow(0 3px 4px rgba(var(--ink-rgb),.34));animation:piece-in .16s cubic-bezier(.3,1.4,.6,1) both;pointer-events:none}@keyframes piece-in{0%{opacity:0;transform:scale(.55) translateY(4%)}to{opacity:1;transform:scale(1) translateY(0)}}.board-msg{position:absolute;inset:var(--s2);display:flex;align-items:center;justify-content:center;padding:0 var(--s2);font-size:var(--fs-title);font-weight:800;letter-spacing:1px;text-align:center;overflow-wrap:anywhere;color:var(--accent);text-shadow:0 6px 24px rgba(var(--ink-rgb),.28);background:var(--veil);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);border-radius:var(--r-sm);animation:pop var(--dur-3) var(--ease-spring) both}.board-msg.beat{font-family:var(--font-display);font-size:min(72px,18vw)}@keyframes pop{0%{opacity:0;transform:scale(.5)}}.progress{width:100%;max-width:480px;height:4px;background:var(--panel-2);border-radius:2px;overflow:hidden}.progress>div{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .3s}.controls{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);width:100%;max-width:480px}.ctl{padding:var(--s3) var(--s2);min-height:96px;border-radius:var(--r-lg);border:2px solid var(--line);background:var(--panel);box-shadow:inset 0 1px 0 var(--bevel);text-align:center;touch-action:manipulation;transition:border-color .15s,background .15s,transform .06s}.ctl:active{transform:translateY(1px)}.ctl,.ti-bar{position:relative;-webkit-user-select:none;user-select:none}.haptic-tap{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;z-index:1;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.haptic-switch{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.ctl .glyph{height:34px;display:flex;align-items:center;justify-content:center;margin-bottom:var(--s1);font-size:26px}.ctl .glyph img{width:32px;height:32px;filter:var(--shadow-piece)}.ctl .glyph img+img{margin-left:-10px}.ink-glyph{display:inline-block;width:1.2em;height:1.2em;vertical-align:-.25em;flex:none}.ctl .glyph .ink-glyph{width:30px;height:30px}.controls.compact .glyph .ink-glyph,.climb-strip .ink-glyph{width:22px;height:22px}.ctl .label{font-weight:700;font-size:var(--fs-control)}.ctl .hint{display:block;color:var(--muted);font-size:var(--fs-caption);margin-top:2px;font-weight:500}@media(hover:none)and (pointer:coarse){.ctl .hint,.kbd-only{display:none}}.ctl.armed{border-color:var(--accent);background:linear-gradient(180deg,rgba(var(--accent-rgb),.12),rgba(var(--accent-rgb),.03)),var(--panel-2)}.ctl.fb-hit{animation:flash-green .5s}.ctl.fb-wrong{animation:flash-red .5s}.ctl.fb-miss{animation:flash-amber .7s}@keyframes flash-green{0%,60%{border-color:var(--green);box-shadow:0 0 0 4px rgba(var(--green-rgb),.22)}}@keyframes flash-red{0%,60%{border-color:var(--red);box-shadow:0 0 0 4px rgba(var(--red-rgb),.22)}15%{transform:translate(-3px)}30%{transform:translate(3px)}45%{transform:translate(-2px)}}@keyframes flash-amber{0%,55%{border-color:var(--amber);box-shadow:0 0 0 4px rgba(var(--amber-rgb),.2)}}@keyframes flash-red-still{0%,60%{border-color:var(--red);box-shadow:0 0 0 4px rgba(var(--red-rgb),.22)}}.results{align-items:stretch;padding-top:var(--s2)}.hero-number{text-align:center;font-size:var(--fs-hero);font-weight:800;line-height:1;background:var(--accent-grad-2);-webkit-background-clip:text;background-clip:text;color:transparent}.verdict{margin:0;text-align:center;font-size:var(--fs-control);font-weight:600}.results-top{display:flex;flex-direction:column;align-items:center;gap:var(--s2);text-align:center}.results-top .hero-number{font-size:clamp(var(--fs-hero),16vw,64px)}.results-lines{display:flex;flex-direction:column;gap:2px;color:var(--muted);font-size:var(--fs-body);text-wrap:balance}.results-lines p{margin:0}.hero-wrap{position:relative;isolation:isolate}.hero-number.earned{animation:earned-in var(--dur-3) var(--ease-spring) both}@keyframes earned-in{0%{transform:scale(.6)}}.flecks{position:absolute;left:50%;top:50%;width:0;height:0;z-index:-1;pointer-events:none}.flecks i{position:absolute;left:-4px;top:-3px;width:8px;height:6px;border-radius:2px;background:var(--game, var(--accent));opacity:0;animation:fleck .9s cubic-bezier(.2,.7,.3,1) both}.flecks i:nth-child(2n){background:var(--brass)}@keyframes fleck{0%{opacity:1;transform:rotate(var(--a)) translateY(0)}to{opacity:0;transform:rotate(var(--a)) translateY(calc(-1 * var(--d)))}}.results-note{margin:0;color:var(--text);font-weight:600;font-size:var(--fs-body);text-wrap:balance}.verdict.up{color:var(--green)}.verdict.down{color:var(--red)}.verdict.stay{color:var(--muted)}.pb-chip{display:inline-block;margin:0 auto;padding:var(--s2) var(--s4);border-radius:999px;background:var(--accent-grad-2);color:var(--accent-ink);font-weight:800;font-size:var(--fs-control);animation:pop .42s var(--ease-spring) both}.pb-chip.still{animation:none}.climb-strip{display:flex;gap:var(--s1);justify-content:center;font-size:var(--fs-section)}.climb-stairs{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.1}.stats-table{width:100%;border-collapse:collapse;font-size:var(--fs-body);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}.stats-table th,.stats-table td{padding:var(--s2) var(--s1);text-align:center;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums}.stats-table tr:last-child td{border-bottom:none}.stats-table th{color:var(--muted);font-weight:700;font-size:var(--fs-caption);text-transform:uppercase;letter-spacing:.6px}.stats-table td:first-child,.stats-table th:first-child{text-align:left;padding-left:var(--s3);font-weight:600}.rr-head{margin:0;font-size:var(--fs-caption);font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.6px}.rr-board{display:grid;gap:var(--s1);justify-items:start}.rr-san,.rr-theme{max-width:62px;font-size:var(--fs-caption);font-weight:400;overflow-wrap:anywhere}.rr-theme{color:var(--muted);-webkit-hyphens:auto;hyphens:auto}.stats-table tr.rr-links td{padding-top:0;text-align:center}.actions{display:flex;flex-direction:column;gap:var(--s2)}.train-nudge{display:flex;flex-direction:column;gap:var(--s1)}.train-nudge .group-note{text-align:center;text-wrap:balance;padding-bottom:0}.lb-row{display:flex;align-items:center;gap:var(--s3);min-height:56px;padding:var(--s2) var(--s4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);box-shadow:inset 0 1px 0 var(--bevel)}.lb-row.me{border-color:var(--accent);background:linear-gradient(180deg,rgba(var(--accent-rgb),.1),rgba(var(--accent-rgb),.02)),var(--panel-2)}.lb-row .rank{width:28px;color:var(--muted);font-variant-numeric:tabular-nums;font-weight:700}.lb-row .who{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.lb-row .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;font-size:var(--fs-control)}.lb-row .side{color:var(--muted);font-weight:400}.lb-row .cc{font-size:var(--fs-caption);color:var(--muted);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-row .cc:hover{color:var(--accent)}.lb-row .score{font-weight:800;color:var(--accent);white-space:nowrap;font-size:var(--fs-control)}.lb-row .acc{color:var(--muted);font-size:var(--fs-body);font-variant-numeric:tabular-nums}.lb-empty{color:var(--muted);text-align:center;padding:var(--s6) 0;display:flex;flex-direction:column;align-items:center;gap:var(--s3)}.lb-empty p{margin:0}.lb-loading{display:flex;flex-direction:column;gap:var(--s2)}.lb-row.skeleton span{display:block;height:12px;border-radius:6px;background:var(--line)}.lb-row.skeleton .rank{width:20px}.lb-row.skeleton .who{flex:1;max-width:55%}.lb-row.skeleton .score{width:48px;margin-left:auto}.tut-card{width:100%;max-width:480px;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-lg);background:var(--panel);padding:var(--s3) var(--s4);display:flex;flex-direction:column;gap:var(--s2)}.tut-title{font-weight:800;font-size:var(--fs-control)}.tut-text{color:var(--muted);font-size:var(--fs-body)}.tut-msg{font-weight:700;font-size:var(--fs-body)}.tut-msg.ok{color:var(--green)}.tut-msg.wrong{color:var(--red)}.tut-msg.hint{color:var(--amber)}.tut-actions{display:flex;flex-direction:column;gap:var(--s2)}.toast{position:fixed;bottom:calc(var(--s5) + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);max-width:min(92vw,480px);text-align:center;background:var(--panel-2);border:1px solid var(--line-strong);padding:var(--s3) var(--s4);border-radius:var(--r-md);font-size:var(--fs-body);font-weight:600;box-shadow:var(--shadow-2);animation:toast-in .2s;z-index:10}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}}.field .row-label{display:flex;flex-direction:column;gap:2px}.field .row-sub,.field .verified-chip{display:block}.verify-steps{margin:0;padding-left:var(--s5);display:flex;flex-direction:column;gap:var(--s2)}.verify-steps li{padding-left:var(--s1)}.verify-steps .verify-code{display:block;margin-top:var(--s2);align-self:flex-start}.voice-row{display:grid;grid-template-columns:1fr auto;gap:var(--s2)}.select{min-width:0;min-height:var(--touch);padding:0 var(--s3);border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--bg0);color:var(--text);font:inherit;font-size:var(--fs-control)}.select:focus{outline:none;border-color:var(--accent)}.table-note{margin:calc(-1 * var(--s2)) 0 0;text-align:center;color:var(--muted);font-size:var(--fs-caption)}.prose h3{margin:var(--s5) 0 var(--s2);font-size:var(--fs-section);font-weight:800;color:var(--text)}.prose h3:first-child{margin-top:0}.first-visit{display:flex;flex-direction:column;gap:var(--s2)}.why-teaser{margin:0;text-align:center;color:var(--muted);font-size:var(--fs-body)}.link-inline{color:var(--accent);font-weight:700;font-size:inherit;padding:var(--s2) var(--s1);margin:calc(-1 * var(--s2)) 0}.link-inline:hover{text-decoration:underline;text-underline-offset:3px}.link-inline:disabled{color:var(--muted);cursor:default;text-decoration:none}.rank-strip{display:flex;justify-content:center;gap:var(--s4);flex-wrap:wrap;color:var(--muted);font-size:var(--fs-body)}.rank-strip b{color:var(--accent);font-weight:800}.lb-row .flag{font-size:var(--fs-section);line-height:1;width:28px;text-align:center;flex:none}.lb-row .cc-rating{color:var(--muted);font-weight:500}.hero-btn:disabled{opacity:.7;cursor:default}.streak-hdr{min-width:var(--touch);height:var(--touch);padding:0 var(--s2);border-radius:999px;display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);color:var(--accent);font-weight:800;font-size:var(--fs-body);white-space:nowrap}.play-block{display:flex;flex-direction:column;gap:var(--s2)}.stepper-value{display:inline-flex;align-items:center;padding:0 var(--s3);font-weight:700;white-space:nowrap;border-left:1px solid var(--line);border-right:1px solid var(--line)}.prose .quick{padding:var(--s3) var(--s4);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--r-md);background:var(--panel);color:var(--text)}.prose a{color:var(--accent)}.prose .status{color:var(--muted);font-size:var(--fs-body)}.board.tactics{cursor:default}.board.tactics:not(.locked){touch-action:none}.board.tactics.tap-only:not(.locked){touch-action:manipulation}.board.tactics .sq.own{cursor:grab}.board.tactics.tap-only .sq.own,.board.tactics .sq.target{cursor:pointer}.board.tactics.dragging,.board.tactics.dragging .sq.own{cursor:grabbing}.board.tactics.locked,.board.tactics.locked .sq.own,.board.tactics.locked .sq.target{cursor:default}.sq.selected:before,.sq.last:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(var(--accent-rgb),.3);pointer-events:none}.sq.selected:before{background:rgba(var(--accent-rgb),.46);box-shadow:inset 0 0 0 3px var(--accent)}.sq.over:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(var(--accent-rgb),.22);box-shadow:inset 0 0 0 4px rgba(var(--accent-rgb),.9);pointer-events:none}.sq.hint:after{content:"";position:absolute;top:4%;right:4%;bottom:4%;left:4%;border-radius:22%;box-shadow:inset 0 0 0 3px var(--accent);animation:tb-pulse .8s ease-in-out infinite alternate;pointer-events:none;z-index:1}@keyframes tb-pulse{0%{opacity:.4}to{opacity:1}}.sq .dot{position:absolute;left:50%;top:50%;width:32%;height:32%;transform:translate(-50%,-50%);border-radius:50%;background:rgba(var(--ink-rgb),.46);pointer-events:none;z-index:1}.sq .dot.capture{width:90%;height:90%;background:none;border:5px solid rgba(var(--ink-rgb),.46)}.sq .dot.done{width:22%;height:22%;background:none;border:2px solid rgba(var(--ink-rgb),.4)}.piece-img.lifted{opacity:.35;animation:none}.piece-img.slide{animation:tb-slide .3s cubic-bezier(.2,.8,.2,1) both;z-index:2}.piece-img.snap{animation:tb-slide .15s ease-out both;z-index:2}@keyframes tb-slide{0%{transform:translate(calc(var(--dx) * var(--sz)),calc(var(--dy) * var(--sz)))}to{transform:none}}.piece-img.slide.quick{animation:tb-slide .13s cubic-bezier(.2,.8,.2,1) both}.piece-img.snap.out{animation:tb-snap-out .26s ease-out both}@keyframes tb-snap-out{0%{transform:none}50%{transform:translate(calc(var(--dx) * var(--sz)),calc(var(--dy) * var(--sz)))}to{transform:none}}.piece-img.settled{animation:none}.piece-img.hop{animation:tb-hop .18s cubic-bezier(.3,.7,.4,1) both;z-index:2}@keyframes tb-hop{0%{transform:translate(calc(var(--dx) * var(--sz)),calc(var(--dy) * var(--sz)))}50%{transform:translate(calc(var(--dx) * var(--sz) / 2),calc(var(--dy) * var(--sz) / 2 - var(--sz) * .3)) scale(1.15);filter:drop-shadow(0 8px 6px rgba(var(--ink-rgb),.38))}to{transform:none}}.tb-ghost{position:absolute;left:0;top:0;pointer-events:none;z-index:20;filter:drop-shadow(0 10px 12px rgba(var(--ink-rgb),.4))}.tb-ghost.up{will-change:transform}.tb-start{position:absolute;inset:var(--s2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1);border-radius:var(--r-sm);background:var(--veil);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);color:var(--accent);font-size:var(--fs-title);font-weight:800;animation:pop var(--dur-3) var(--ease-spring) both}.tb-start small{font-size:var(--fs-body);font-weight:600;color:var(--text)}.hud.tactics{flex-wrap:wrap;justify-content:center;gap:var(--s1) var(--s2)}.hud.tactics .chip{font-size:var(--fs-body)}.chip.clock{font-variant-numeric:tabular-nums}.chip.clock.over{color:var(--red)}.tb-actions{display:flex;gap:var(--s3)}.game.run-pinned{justify-content:flex-start;gap:var(--s2)}.game.run-pinned>.side-row{margin-bottom:calc(var(--s1) - var(--s2))}.run-pinned>.tb-actions{align-items:center;min-height:calc(2 * var(--s3) + 2px + var(--fs-control) * 1.5)}.game.still{animation:none}.run-pinned>.hud{flex-wrap:nowrap}.run-pinned>.hud .chip{flex:none}.run-pinned>.hud .chip.nback{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.run-slot{--line: calc(var(--fs-body) * 1.5);flex:1 1 0;min-height:calc(3 * var(--line));max-height:calc(10 * var(--line));width:100%;max-width:480px;overflow-y:auto;overscroll-behavior:contain}.run-slot>:not(:first-child){margin-top:var(--s1)}.run-pinned>.tb-actions:has(>:nth-child(3)){gap:var(--s1)}.run-pinned>.tb-actions:has(>:nth-child(3))>.btn{font-size:var(--fs-body);padding-inline:var(--s3)}.run-pinned>.tb-actions:has(>:nth-child(3))>.btn.quiet{padding-inline:var(--s2)}.alpha-tag{display:inline-block;margin-left:var(--s2);padding:1px 8px;border-radius:999px;background:var(--panel-3);color:var(--muted);font-size:var(--fs-caption);font-weight:700;text-transform:uppercase;letter-spacing:.6px;vertical-align:middle}.level-map{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--s2);padding:var(--s3)}.tile{position:relative;aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--panel-2);color:var(--text);font-weight:800;font-size:var(--fs-control);transition:transform .12s ease}.tile:not(:disabled):active{transform:scale(.96)}.tile:disabled{cursor:default}.tile.locked{opacity:.35;background:var(--panel)}.tile.available{background:var(--panel-3)}.tile.amber{background:rgba(var(--amber-rgb),.2);border-color:var(--amber);color:var(--amber)}.tile.green{background:rgba(var(--green-rgb),.18);border-color:var(--green);color:var(--green)}.tile.next{box-shadow:0 0 0 2px var(--accent)}.tile.green:before{content:"✓";position:absolute;top:3px;left:6px;font-size:var(--fs-caption);font-weight:800;opacity:.85}.tile.just{animation:pop var(--dur-2) var(--ease-spring) both}.tile .pb{font-size:var(--fs-caption);font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}.tile.green .pb,.tile.amber .pb{color:inherit;opacity:.85}.tile.due:after{content:"";position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--red)}.motif-list{display:grid;gap:var(--s2)}.motif-row{display:flex;align-items:center;gap:var(--s2);padding:var(--s1) var(--s1) var(--s1) var(--s3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel)}.motif-open{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-height:var(--touch);padding:var(--s1) 0;text-align:left}.motif-name{font-weight:700;font-size:var(--fs-control)}.motif-prog{color:var(--muted);font-size:var(--fs-caption);font-variant-numeric:tabular-nums}.motif-prog b{color:var(--green)}.mini{width:var(--touch);height:var(--touch);border-radius:var(--r-sm);border:1px solid var(--line-strong);background:var(--panel-2);font-weight:700}.mini:disabled{opacity:.3}.gate-card .group-body{border-color:rgba(var(--accent-rgb),.5)}.chip.clock .best{color:var(--muted);font-weight:600}.chip.clock.over .best{color:inherit}.chip.count.low{color:var(--red)}.mini.wide{width:auto;min-width:64px;padding:0 var(--s3);font-size:var(--fs-caption)}.motif-row .motif-name{flex:1;display:flex;flex-direction:column;gap:2px}.btn.quiet.danger{color:var(--red);font-weight:700}.stats-table tr.tappable{cursor:pointer}.stats-table tr.tappable:hover td,.stats-table tr.tappable:focus-visible td{background:var(--panel-2)}.stats-table td.chev{width:1.5em;padding-right:var(--s3);text-align:right;color:var(--muted);font-weight:700}.op-strip{display:flex;align-items:center;gap:var(--s1);width:100%;max-width:480px;min-height:var(--touch);padding:0 var(--s2);overflow-x:auto;overflow-y:hidden;scrollbar-width:none;white-space:nowrap}.op-strip::-webkit-scrollbar{display:none}.op-chip{position:relative;display:inline-flex;align-items:center;flex:0 0 auto;height:var(--touch);padding:0 var(--s2);color:var(--text);font-size:var(--fs-body);font-weight:700;font-variant-numeric:tabular-nums}.op-chip.cursor:before{content:"";position:absolute;top:8px;right:0;bottom:8px;left:0;border:1px solid var(--line-strong);border-radius:var(--r-sm)}.op-chip.muted{color:var(--muted)}.op-chip.note:after{content:"";position:absolute;top:9px;right:2px;width:4px;height:4px;border-radius:50%;background:var(--accent)}.op-note-line{margin:0;width:100%;max-width:480px;text-align:center;color:var(--text);font-size:var(--fs-body)}.dr-text{margin:0;padding:var(--s2) var(--s4);font-size:var(--fs-body)}.dr-example{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding-top:var(--s3)}.dr-block{margin:var(--s2) var(--s4) var(--s3);padding:var(--s3);border-radius:var(--r-sm);background:var(--panel-2);font:13px/1.5 ui-monospace,Menlo,Consolas,monospace;align-self:stretch;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text;-webkit-user-select:text}.why-line.dr-caption{color:var(--text);font-weight:600}.op-banner{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);width:100%;padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel);color:var(--red);font-size:var(--fs-body);font-weight:700}.op-banner.fixed{position:fixed;left:50%;bottom:calc(var(--s3) + env(safe-area-inset-bottom));transform:translate(-50%);width:min(92vw,480px);z-index:11;box-shadow:var(--shadow-2)}.op-banner.fixed.tip{flex-wrap:wrap;color:var(--text)}.op-banner.fixed.tip .op-banner-text{flex:1 0 100%}.empty-state{display:flex;flex-direction:column;align-items:center;gap:var(--s3);padding:var(--s5) var(--s2) 0;text-align:center}.empty-line{margin:0;max-width:320px;font-size:var(--fs-control);text-wrap:balance}.op-banner.home-tip{flex-direction:column;align-items:stretch;gap:var(--s1);color:var(--text)}.op-banner.home-tip p{margin:0}.op-banner.home-tip .op-banner-hint{white-space:normal}.op-banner.home-tip .btn{align-self:flex-end}.op-banner-text{flex:1 1 auto;min-width:0}.op-banner-hint{color:var(--muted);font-weight:600;white-space:nowrap}.toast.above-banner{bottom:calc(var(--s5) + 56px + env(safe-area-inset-bottom))}.toast.above-banner.tip{bottom:calc(var(--s3) + 94px + var(--s2) + env(safe-area-inset-bottom))}.stats-table tr.op-again td{color:var(--muted)}.op-map .board{--sz: min(9.6vw, 36px)}.op-map .board-frame{align-self:center}.op-tabs{display:flex;align-items:center;gap:var(--s2);width:100%;min-height:var(--touch)}.op-handle{display:flex;align-items:center;justify-content:center;width:var(--touch);height:var(--touch);flex:0 0 auto}.op-handle span{display:block;width:24px;height:4px;border-radius:2px;background:var(--line-strong)}.op-handle[aria-pressed=true] span{background:var(--muted)}.op-tab{flex:1 1 auto;height:var(--touch);border-radius:var(--r-sm);color:var(--muted);font-size:var(--fs-body);font-weight:700}.op-tab.on{background:var(--panel-2);color:var(--text)}.op-pane{width:100%;flex:1 1 auto;min-height:175px;max-height:175px;overflow-y:auto;padding:var(--s3);border:1px solid var(--line);border-radius:var(--r-md);background:var(--panel)}.op-pane.tall{min-height:0;max-height:none}.op-pane-in{animation:screen-in var(--dur-2) ease-out both}.icicle{display:flex;flex-direction:column}.icicle.dragging{touch-action:none}.icicle-row{position:relative;height:44px}.op-bar{position:absolute;top:0;height:44px;display:flex;align-items:center;padding:0 var(--s2);border:1px solid var(--line);border-right:2px solid transparent;border-bottom:4px solid transparent;border-radius:var(--r-sm);background:var(--panel-3);background-clip:padding-box;color:var(--text);font-size:var(--fs-caption);font-weight:700;text-align:left;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}.op-bar-text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.op-bar.live{background:rgba(var(--blue-rgb),.28)}.op-bar.mastered{background:rgba(var(--green-rgb),.18);border-color:var(--green);color:var(--green)}.op-bar.due:after{content:"";position:absolute;top:4px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--red)}.op-bar.gap{border-style:dashed;background:none;color:var(--muted)}.op-bar.trans{background:none;color:var(--muted)}.op-bar.fold,.op-bar.more{background:var(--panel-2);color:var(--muted);justify-content:center}.op-bar.sliver{pointer-events:none;padding:0;overflow:hidden;border-radius:1px}.op-bar.sliver.due:after{top:2px;right:2px;width:4px;height:4px}.op-bar.lit{opacity:1;border-color:var(--line-strong)}.op-bar.cursor{opacity:1;box-shadow:inset 0 0 0 2px var(--text)}.op-bar.sel{opacity:1;background:var(--accent-tint);box-shadow:inset 0 0 0 2px var(--accent)}.op-selrow{display:flex;align-items:flex-start;gap:var(--s2);width:100%}.op-selrow .op-select{flex:1 1 auto;min-width:0}.op-select{display:flex;flex-direction:column;gap:var(--s2);width:100%}.op-select-row{display:flex;align-items:center;gap:var(--s2);min-height:var(--touch)}.op-select-count{flex:1 1 auto;color:var(--muted);font-size:var(--fs-body);font-weight:700}.op-select-row .btn{padding:0 var(--s3)}.op-panel,.op-sheet{margin:0}.op-reply-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2);margin:0 0 var(--s2);padding:0 var(--s1)}.op-reply-name{min-width:0;overflow:hidden;color:var(--muted);font-size:var(--fs-caption);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.op-eval{flex:none;color:var(--text);font-size:var(--fs-caption);font-variant-numeric:tabular-nums;font-weight:700}.op-share{flex:none;margin-left:auto;padding-right:var(--s2);color:var(--muted);font-size:var(--fs-caption);font-variant-numeric:tabular-nums;font-weight:600}.op-reply-where{font-weight:700}.op-caption{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);padding:0 var(--s4)}.op-caption .home-note{padding:0}.op-warm{flex:none}.op-note-move{margin:0 0 var(--s2);color:var(--muted);font-size:var(--fs-body);font-weight:700}.op-note-field{width:100%;min-height:96px;resize:vertical}.op-prompt{position:sticky;bottom:0;display:flex;flex-direction:column;gap:var(--s2);width:100%;padding:var(--s3);border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--panel-2);box-shadow:var(--shadow-1)}.op-prompt-text{margin:0;font-size:var(--fs-body)}@media(max-height:620px){.op-map .board{--sz: min(8.5vw, 32px)}.op-pane{max-height:none}}.rush-lengths .rush-length{flex-direction:column;gap:2px;padding:var(--s2);line-height:1.2}.rush-min{font-weight:800}.rush-best{color:var(--muted);font-size:var(--fs-caption);font-weight:600}.chip.clock.low{color:var(--red);border-color:var(--red);box-shadow:inset 0 0 0 1px var(--red);animation:clock-low 1s ease-in-out infinite}@keyframes clock-low{50%{transform:scale(1.08)}}.chip.strikes{display:inline-flex;align-items:center;gap:var(--s2)}.chip.strikes .rush-score{display:inline-block;min-width:2ch}.chip.strikes .marks{display:inline-flex;align-items:center;gap:5px}.chip.strikes .mark{width:9px;height:9px;border-radius:999px;border:1.5px solid var(--line-strong)}.chip.strikes .mark.spent{background:var(--red);border-color:var(--red)}.why-line.strike{color:var(--red);font-weight:700;animation:pop var(--dur-2) var(--ease-spring) both}@media(min-width:900px){:root{--root-max: 1120px}.landing,.nback-home{width:100%;max-width:640px;margin:0 auto}.nback-home .tagline{font-size:var(--fs-control)}.nback-home .house-line{display:block}.drills-root>.screen{width:100%;max-width:720px;margin:0 auto}.drills-root .import-bar{margin-inline:0;padding-inline:var(--s4)}.group-body.cols{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--s4)}.group-body.cols>.row:nth-last-child(2){border-bottom:none}}@media(min-width:1180px){.group-body.cols{grid-template-columns:repeat(3,minmax(0,1fr))}}.landing .brand h1{display:flex;align-items:center;justify-content:center;gap:var(--s3)}.landing .brand h1:before,.landing .brand h1:after{content:"";flex:1;height:1px;background:var(--line-strong)}@media(max-width:420px){.landing .brand h1:before,.landing .brand h1:after{display:none}}.dateline{margin:var(--s2) 0 0;text-align:center;font-family:var(--font-body);font-size:var(--fs-caption);font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.nback-home .play-block .practice{background:rgba(var(--felt-rgb),.07);border-color:rgba(var(--felt-rgb),.22);border-left:3px solid var(--felt);box-shadow:none}.nback-home .play-block .practice:hover{background:rgba(var(--felt-rgb),.12);border-color:rgba(var(--felt-rgb),.38);border-left-color:var(--felt)}.nback-home .play-block .practice .hero-title{font-weight:600}.house-line{display:none;margin:var(--s4) 0 0;font-family:var(--font-display);font-style:italic;font-size:var(--fs-control);line-height:1.6;color:var(--muted)}.mt-mastered{color:var(--amber);font-weight:700}.mt-preview{width:100%;max-width:360px;margin:0 auto}.mt-preview .board{--sz: min(10.4vw, 40px)}.mt-line{margin:var(--s2) 0 0;text-align:center;font-variant-numeric:tabular-nums;color:var(--muted)}.mt-deck .vignette{flex:none}.row.link.on{background:var(--panel-2)}.nt-headline{margin:0;text-align:center;font-family:var(--font-display);font-size:var(--fs-section);font-weight:700;color:var(--text)}.nt-tiles{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s3)}.nt-tile{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding:var(--s3) var(--s2);min-height:var(--touch);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--panel);box-shadow:var(--shadow-2-soft),inset 0 1px 0 var(--bevel);color:inherit;transition:border-color .15s,transform .06s}.nt-tile:hover{border-color:var(--line-strong)}.nt-tile:active{transform:translateY(1px)}.nt-tile-label{font-size:var(--fs-control);font-weight:700;text-align:center}.nt-pips{display:flex;gap:6px}.nt-pip{flex:none;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--line-strong);background:transparent}.nt-pip.started{border-color:var(--muted);background:rgba(var(--mark-rgb),.35)}.nt-pip.cleared{border-color:var(--green);background:var(--green)}.nt-pip.held{border-color:var(--brass);background:var(--brass)}.nt-pip.amber{border-color:var(--amber);background:rgba(var(--amber-rgb),.55)}.nt-blurb{padding:0 var(--s1);font-size:var(--fs-body);text-align:center}.nt-rung>*+*{border-top:1px solid var(--line)}.nt-step .nt-pip{width:12px;height:12px}.row-sub.nt-progress{color:var(--text)}.row-sub.nt-proof{color:var(--brass);font-weight:700}.nt-proof-row{padding-left:calc(var(--s4) + 12px + var(--s3));background:rgba(var(--brass-rgb),.08)}.nt-pictures{display:flex;justify-content:center;gap:var(--s4);flex-wrap:wrap}.nt-picture{margin:0;width:84px;display:flex;flex-direction:column;align-items:center;gap:var(--s1)}.nt-picture figcaption{color:var(--muted);font-size:var(--fs-caption);text-align:center;line-height:1.3}.nt-banner{margin:0;text-align:center;font-family:var(--font-display);font-size:var(--fs-section);font-weight:700;color:var(--text)}.nt-board{position:relative}.nt-overlay,.nt-skip{position:absolute;top:0;right:0;bottom:0;left:0;background:transparent;cursor:pointer}.nt-banner.nt-named{color:var(--accent);animation:pop var(--dur-3) var(--ease-spring) both}.why-line.nt-walked{color:var(--red);font-weight:700}.why-line.nt-caption{color:var(--text)}.sq-mark{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;animation:line-in var(--dur-2) ease-out both}.sq-mark.covered{background:rgba(var(--red-rgb),.38)}.sq-mark.own{top:10%;right:10%;bottom:10%;left:10%;border:2px dashed rgba(var(--mark-rgb),.9);border-radius:22%}.sq-mark.checker{top:6%;right:6%;bottom:6%;left:6%;border:3px solid var(--brass);border-radius:22%}.sq-mark.free{top:10%;right:10%;bottom:10%;left:10%;border:2px solid var(--green);border-radius:50%}.board-lines .line.cover{stroke:var(--red);stroke-width:.8;stroke-dasharray:1.6 1.2}.board-lines .line.check{stroke:var(--brass);stroke-width:1.4}.nt-mark.firstTry{color:var(--green);font-weight:700}.nt-mark.walkedIn,.nt-mark.missed{color:var(--red)}@media(min-width:480px){.nt-tiles{grid-template-columns:repeat(3,1fr)}}.nt-promo{position:absolute;inset:var(--s2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s2);border-radius:var(--r-sm);background:var(--veil);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:30}.nt-promo-title{margin:0;font-weight:800;color:var(--text)}.nt-promo-pieces{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s2)}.nt-promo-hint{border-color:var(--brass);box-shadow:0 0 0 2px var(--brass)}.nt-revisit{padding-left:calc(var(--s4) + 12px + var(--s3));background:rgba(var(--amber-rgb),.1)}.kr-banner{margin:0;text-align:center;font-family:var(--font-display);font-size:var(--fs-section);font-weight:700;color:var(--text)}.kr-banner.kr-solved{color:var(--accent)}.kr-board{position:relative}.chip.kr-points{animation:kr-points .32s var(--ease-spring) both}@keyframes kr-points{0%{transform:scale(1.3)}}.sq-mark.goal{top:8%;right:8%;bottom:8%;left:8%;border:3px solid var(--brass);border-radius:50%;background:rgba(var(--cream-rgb),.16);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85)}.kr-reached .sq-mark.goal{animation:kr-ring-out .52s ease-out both}@keyframes kr-ring-out{0%{transform:scale(1);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85),0 0 rgba(var(--brass-rgb),.7)}40%{transform:scale(1.1);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85),0 0 0 8px rgba(var(--brass-rgb),.35)}to{transform:scale(1);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85),0 0 0 14px rgba(var(--brass-rgb),0)}}.sq-mark.attacked{top:0;right:0;bottom:0;left:0;background:rgba(var(--red-rgb),.28);animation:attack-in .24s both;animation-delay:calc(var(--d, 0) * 40ms)}.sq-mark.attacked:before,.sq-mark.attacked:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background-repeat:no-repeat;background-position:center}.sq-mark.attacked:before{width:calc(30% + 2px);height:calc(30% + 2px);background-image:linear-gradient(rgba(var(--cream-rgb),.75),rgba(var(--cream-rgb),.75)),linear-gradient(rgba(var(--cream-rgb),.75),rgba(var(--cream-rgb),.75));background-size:4px 100%,100% 4px}.sq-mark.attacked:after{width:30%;height:30%;background-image:linear-gradient(var(--red),var(--red)),linear-gradient(var(--red),var(--red));background-size:2px 100%,100% 2px}.kr-ready{flex-direction:column;gap:2px;max-width:480px}.kr-ready small{font-size:var(--fs-caption);font-weight:600}.kr-ready-spent{visibility:hidden}.chip.lives{color:var(--text);letter-spacing:2px}.chip.lives .spent{color:var(--line-strong)}.kr-cost,.kr-best{text-align:center;margin:0}.kr-best{color:var(--accent);font-weight:600}.kr-mark.in{color:var(--green);font-weight:700}.kr-mark.over{color:var(--muted)}.kr-mark.taken{color:var(--red);font-weight:700}.kr-banner.kr-taken{color:var(--red)}.sq-mark.taken{top:6%;right:6%;bottom:6%;left:6%;border:3px solid var(--red);border-radius:50%;background:rgba(var(--red-rgb),.16);animation:kr-taken-in .42s ease-out both}@keyframes kr-taken-in{0%{opacity:0;transform:scale(.6);box-shadow:0 0 rgba(var(--red-rgb),.55)}45%{opacity:1;transform:scale(1.08);box-shadow:0 0 0 6px rgba(var(--red-rgb),.25)}to{opacity:1;transform:scale(1);box-shadow:0 0 rgba(var(--red-rgb),0)}}.sq-mark.taker{box-shadow:inset 0 0 0 3px var(--red)}.kr-mode{margin:0;text-align:center;color:var(--muted);font-size:var(--fs-caption);font-weight:700;text-transform:uppercase;letter-spacing:1.2px}.kr-cleared{text-align:center;margin:0;color:var(--green);font-weight:700}.kn-intro{padding:0 var(--s1);font-size:var(--fs-body);text-align:center}.row.link.kn-step:disabled{cursor:default}.row.link.kn-step:disabled .row-label{color:var(--muted)}.kn-step .ink-glyph.lock{margin-right:var(--s1)}.row.link.kn-step:disabled:hover{background:none}.row-sub.kn-best{color:var(--text)}.drills-root{display:contents}.drills-root.room-full{--banner-room: calc(56px + var(--s3))}.drills-root.room-tip{--banner-room: calc(94px + var(--s3) + var(--s2))}.drills-root>.screen,.drills-root>.game{padding-bottom:var(--banner-room, 0px)}.drills-root .op-prompt{bottom:var(--banner-room, 0px)}.drill-thumb{flex:none;display:flex}.row-mark.drill-mark{text-transform:none;letter-spacing:0}.row-mark.drill-mark.miss{color:var(--red)}.drill-row.marked{background:var(--accent-tint)}.drill-shared{margin:0;padding:var(--s2) var(--s4);font-size:var(--fs-body);font-weight:600;overflow-wrap:anywhere}.drill-peek{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding:var(--s3) 0}.drill-peek>.side-row{margin-bottom:calc(var(--s1) - var(--s2))}.drill-peek-actions{display:flex;justify-content:center;gap:var(--s2)}.import-line{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:var(--s1);margin:0;color:var(--muted);font-size:var(--fs-body)}.drop-zone{display:flex;flex-direction:column;align-items:center;gap:var(--s2);padding:var(--s4);text-align:center}.drop-zone p{margin:0}.drop-line{font-family:var(--font-display);font-size:var(--fs-section)}.drop-or,.drop-caption{color:var(--muted);font-size:var(--fs-caption)}textarea.input.pgn{font-family:ui-monospace,SF Mono,Menlo,monospace}.paste-tools{display:flex;gap:var(--s2);padding:var(--s3) var(--s4)}.fine-only{display:none}@media(hover:hover)and (pointer:fine){.fine-only{display:revert}.coarse-only{display:none}.drop-zone{min-height:160px;justify-content:center;margin:var(--s3);border:2px dashed var(--line-strong);border-radius:var(--r-md)}.drills-root.dragging .drop-zone{border-color:var(--accent);background:var(--accent-tint)}textarea.input.pgn{font-size:13px}}.import-note{margin:0;color:var(--red);font-size:var(--fs-body);font-weight:600}.review-head{display:flex;flex-direction:column;gap:var(--s1)}.review-title{margin:0;font-family:var(--font-display);font-size:var(--fs-section);font-weight:600}.review-sub{margin:0;color:var(--muted);font-size:var(--fs-body)}.file-card{display:flex;flex-direction:column;gap:var(--s2)}.file-card-head{display:flex;align-items:center;gap:var(--s2);min-height:var(--touch);padding:0 var(--s1);color:inherit;text-align:left}.file-caret{flex:none;width:1em;color:var(--muted)}.file-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-body);font-weight:600}.change-chip{flex:none;color:var(--muted);font-size:var(--fs-caption);font-weight:700}.change-chip.added{color:var(--felt)}.change-chip.removed{color:var(--red)}.file-skips summary{padding:var(--s3) var(--s4);color:var(--muted);font-size:var(--fs-caption);cursor:pointer;list-style:none}.file-skips summary::-webkit-details-marker{display:none}.skel-chip{flex:none;width:48px;height:12px;border-radius:6px;background:var(--line)}@media(prefers-reduced-motion:no-preference){.file-card.skeleton .skel-chip{animation:skel 1.2s ease-in-out infinite alternate}}@keyframes skel{to{background:var(--line-strong)}}.import-bar{position:sticky;bottom:var(--banner-room, 0px);z-index:2;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-inline:calc(-1 * var(--gutter-l)) calc(-1 * var(--gutter-r));padding:var(--s3) var(--gutter-r) calc(var(--s3) + env(safe-area-inset-bottom)) var(--gutter-l);border-top:1px solid var(--line);background:var(--panel)}.drop-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9;padding:var(--s4);background:rgba(var(--bg0-rgb),.9);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none}.drills-root:has(.drop-zone) .drop-overlay{display:none}.drop-frame{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s3);height:100%;border:2px dashed var(--accent);border-radius:var(--r-lg);text-align:center}.drop-title{margin:0;font-family:var(--font-display);font-size:var(--fs-title)}.drop-sub{margin:0;color:var(--muted)}@media(prefers-reduced-motion:no-preference){.drop-overlay{animation:drop-in .12s ease-out}}@keyframes drop-in{0%{opacity:0}}.group-head{display:flex;align-items:center;justify-content:space-between;gap:var(--s2)}.btn.import-pill{padding:var(--s1) var(--s4);border-color:transparent;border-radius:999px;background:var(--card-drills);color:var(--text);font-size:var(--fs-body)}.file-row-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ladder{display:flex;gap:2px;max-width:240px;height:4px;margin-top:var(--s1)}.ladder-part{flex:0 0 8px;border-radius:2px;background:var(--line)}.ladder.bar .ladder-part{flex:1 1 0}.ladder-part.miss{background:rgba(var(--red-rgb),.6)}.ladder-part.climb{background:var(--card-drills)}.ladder-part.known{background:var(--felt)}.file-row.fresh{background:var(--accent-tint)}@media(prefers-reduced-motion:no-preference){.file-row.fresh{animation:fresh 2s ease-in forwards}}@keyframes fresh{to{background:transparent}}.drop-anywhere{margin:0;padding:var(--s2) var(--s4);border:1px dashed var(--line-strong);border-radius:var(--r-md);color:var(--muted);font-size:var(--fs-caption)}.link-pair{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s2)}.hdr-title.clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.file-caption{margin:calc(-1 * var(--s3)) 0 0;color:var(--muted);font-size:var(--fs-caption);text-align:center;overflow-wrap:anywhere}.file-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--s2)}.rename-row{display:flex;align-items:center;gap:var(--s2)}.rename-row .input{flex:1;min-width:0}.btn.danger:not(.quiet){border-color:rgba(var(--red-rgb),.4);background:var(--panel);color:var(--red)}.browse{display:flex;flex-direction:column;gap:var(--s2)}.browse-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s2)}.select.sort-chip{border-radius:999px}.set-section,.no-match{display:flex;flex-direction:column;gap:var(--s2)}.no-match{align-items:center}.sq-mark.aim,.sq-mark.aim-miss{top:6%;right:6%;bottom:6%;left:6%;border:3px solid var(--scan-threat);border-radius:50%;box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85)}.sq-mark.aim-miss{border-style:dashed}.ti-bar.cctv-off{visibility:hidden}.cctv-run .cctv-line{min-height:42px;display:flex;align-items:center;justify-content:center}.tb-start .cctv-step{font-size:var(--fs-control);font-weight:700;color:var(--text)}.captcha:empty{display:none}.captcha{margin-top:var(--s2)}.trainer-note{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s1)}.trainer-note-text{flex:1 1 auto;min-width:0}.trainer-note>.hdr-btn{flex:none;margin:calc(-1 * var(--s3)) calc(-1 * var(--s2)) calc(-1 * var(--s3)) 0}.code-input{letter-spacing:.3em;font-variant-numeric:tabular-nums}.ti-board{position:relative}.ti-board .board{--sz: min(11.6vw, 56px, calc((100vw - 2 * (var(--s2) + var(--mount))) / 8))}.sq-mark.target{top:6%;right:6%;bottom:6%;left:6%;border:3px solid var(--accent);border-radius:22%;box-shadow:inset 0 0 0 2px rgba(var(--accent-rgb),.35)}.sq-mark.picked{top:12%;right:12%;bottom:12%;left:12%;border:3px solid var(--green);border-radius:50%;box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85);animation:pop var(--dur-1) var(--ease-spring) both}.sq-mark.right{top:12%;right:12%;bottom:12%;left:12%;border:3px solid var(--green);border-radius:50%;background:rgba(var(--green-rgb),.26);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85);animation:ti-right .22s ease-out both}.sq-mark.pulse{top:8%;right:8%;bottom:8%;left:8%;border:3px solid var(--red);border-radius:50%;background:rgba(var(--red-rgb),.2);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85);animation:ti-pulse .45s ease-out both}@keyframes ti-right{0%{background:rgba(var(--green-rgb),0);transform:scale(1)}35%{background:rgba(var(--green-rgb),.5);transform:scale(1.08)}to{background:rgba(var(--green-rgb),.26);transform:scale(1)}}@keyframes ti-pulse{0%{opacity:0;background:rgba(var(--red-rgb),.2)}20%{opacity:1;background:rgba(var(--red-rgb),.55)}45%{opacity:1;background:rgba(var(--red-rgb),.15)}65%{opacity:1;background:rgba(var(--red-rgb),.5)}to{opacity:1;background:rgba(var(--red-rgb),.2)}}.board-lines .line.attacker,.board-lines .line.defender,.board-lines .line.pin{stroke-width:1.2}.board-lines .line.attacker{stroke:var(--red)}.board-lines .line.defender{stroke:var(--green)}.board-lines .line.pin{stroke:var(--amber);stroke-dasharray:2.2 1.4}.ti-board .board-lines .line.attacker,.ti-board .board-lines .line.defender,.ti-board .board-lines .line.pin{animation:ti-ray .45s ease-out both}.ti-board.long-proof .board-lines .line.attacker,.ti-board.long-proof .board-lines .line.defender,.ti-board.long-proof .board-lines .line.pin{animation-duration:var(--ti-hold, 2s)}@keyframes ti-ray{0%{opacity:0}13%{opacity:.9}70%{opacity:.9}to{opacity:0}}.board-lines .line.trade-att,.board-lines .line.trade-def{stroke-width:2;opacity:1}.board-lines .line.trade-att{stroke:var(--red)}.board-lines .line.trade-def{stroke:var(--green)}.board-lines .line-badge circle{stroke:rgb(var(--cream-rgb));stroke-width:.8}.board-lines .line-badge.trade-att circle{fill:var(--red)}.board-lines .line-badge.trade-def circle{fill:var(--green)}.board-lines .line-badge.wrong circle{fill:var(--red)}.board-lines .line-badge text{fill:rgb(var(--cream-rgb));font-family:var(--font-body);font-size:3.6px;font-weight:800;text-anchor:middle}.board.tactics.paint:not(.locked),.board.tactics.paint:not(.locked) .sq{cursor:cell}.board.tactics.paint{-webkit-touch-callout:none}.sq.region{box-shadow:inset 0 0 0 2px rgba(var(--reach-ink-rgb),.4),inset 0 0 0 999px rgba(var(--accent-rgb),.12)}.sq-mark.painted{top:3%;right:3%;bottom:3%;left:3%;border-radius:12%;background:rgba(var(--green-rgb),.38);box-shadow:inset 0 0 0 2px var(--green),inset 0 0 0 4px rgba(var(--cream-rgb),.85);animation:pop var(--dur-1) var(--ease-spring) both}.board.paint .sq-mark.right{top:3%;right:3%;bottom:3%;left:3%;border:0;border-radius:12%;box-shadow:inset 0 0 0 2px var(--green),inset 0 0 0 4px rgba(var(--cream-rgb),.85);background:rgba(var(--green-rgb),.5);animation:ti-paint-right .22s ease-out both}@keyframes ti-paint-right{0%{background:rgba(var(--green-rgb),.38)}40%{background:rgba(var(--green-rgb),.62)}to{background:rgba(var(--green-rgb),.5)}}.sq-mark.extra{top:6%;right:6%;bottom:6%;left:6%;border:3px solid var(--red);border-radius:12%;background:rgba(var(--red-rgb),.2);box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85);animation:ti-pulse .45s ease-out both}.sq-mark.extra:after{content:"✕";position:absolute;top:1px;right:3px;color:var(--red);font-size:calc(var(--sz) * .24);font-weight:700;line-height:1;text-shadow:0 0 2px rgba(var(--cream-rgb),.95)}.sq-mark.missed{top:6%;right:6%;bottom:6%;left:6%;border:3px dashed var(--red);border-radius:12%;box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85);animation:ti-missed .45s ease-out both}@keyframes ti-missed{0%{opacity:0}20%{opacity:1}45%{opacity:.3}65%{opacity:1}to{opacity:1}}.sq-mark.att,.sq-mark.def,.sq-mark.att-missed,.sq-mark.def-missed{top:12%;right:12%;bottom:12%;left:12%;border:3px solid var(--red);border-radius:50%;box-shadow:0 0 0 2px rgba(var(--cream-rgb),.85),inset 0 0 0 2px rgba(var(--cream-rgb),.85)}.sq-mark.def,.sq-mark.def-missed{border-color:var(--green)}.sq-mark.att-missed,.sq-mark.def-missed{border-style:dashed}.board-lines .line.control{stroke:rgba(var(--reach-ink-rgb),.85);stroke-width:1.2}.ti-board .board-lines .line.control,.ti-board .board.paint .board-lines .line{animation:ti-ray 1.2s ease-out both}.ti-board.long-proof .board-lines .line.control,.ti-board.long-proof .board.paint .board-lines .line{animation-duration:var(--ti-hold, 2s)}.ti-bar{width:100%;max-width:480px;min-height:var(--touch)}.ti-run{--ti-control: 50px}.ti-run .ti-bar{height:var(--ti-control)}.controls.compact .ctl{height:var(--ti-control);min-height:0;padding:0 var(--s2);display:flex;align-items:center;justify-content:center;gap:var(--s2)}.controls.compact .glyph{height:24px;margin:0;font-size:20px}.controls.compact .hint{display:none}.ti-none-hint{margin:0;color:var(--muted);font-size:var(--fs-caption);text-align:center}.ti-run .hud{flex-wrap:wrap;justify-content:center;gap:var(--s1) var(--s2)}.ti-run .hud .chip{font-size:var(--fs-body)}.ti-pace,.ti-rule{margin:0;color:var(--muted);font-size:var(--fs-body)}.level-map.ti-map{grid-template-columns:repeat(3,minmax(0,132px));justify-content:center}.ti-retry{align-self:center}.ti-results .group-note{text-align:center;margin:0}.pin-show .pin-case,.pin-show .pin-draw{stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:0;animation:ti-pin-draw .34s ease-out both}.pin-show .pin-case{stroke:rgba(var(--cream-rgb),.9);stroke-width:2.8}.pin-show .pin-draw{stroke:var(--amber);stroke-width:1.3}.pin-show .pin-king{fill:rgba(var(--amber-rgb),.14);stroke:var(--amber);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:ti-pin-king .42s .28s var(--ease-spring) both}@keyframes ti-pin-draw{0%{stroke-dashoffset:100}to{stroke-dashoffset:0}}@keyframes ti-pin-king{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.14)}to{opacity:1;transform:scale(1)}}.piece-img.tug{z-index:2;animation:ti-tug .9s .32s ease-in-out both}@keyframes ti-tug{0%,to{transform:translate(0) rotate(0)}20%{transform:translate(calc(var(--tx) * 17%),calc(var(--ty) * 17%)) rotate(calc(var(--tx) * 7deg))}38%{transform:translate(calc(var(--tx) * -3%),calc(var(--ty) * -3%)) rotate(calc(var(--tx) * -2deg))}58%{transform:translate(calc(var(--tx) * 11%),calc(var(--ty) * 11%)) rotate(calc(var(--tx) * 4deg))}76%{transform:translate(calc(var(--tx) * -1.5%),calc(var(--ty) * -1.5%))}}.ti-prompt{margin:0;text-align:center;font-family:var(--font-display);font-size:var(--fs-section);font-weight:700;color:var(--text)}.ti-run .ti-why{min-height:42px;display:flex;align-items:center;justify-content:center}.ti-run .ti-why.ti-call{flex-direction:column}.ti-call-q{font-family:var(--font-display);font-size:var(--fs-section);font-weight:700;line-height:21px;color:var(--text)}.ti-call-count{line-height:21px}.ti-why.ti-proof{font-weight:700;color:var(--text)}.ti-why.ti-proof.right{color:var(--green)}.ti-why.ti-proof.wrong{color:var(--red)}.check-replay{justify-items:center}.stats-table tr.tappable[aria-pressed=true] td{background:var(--panel-2)}.stats-table td.ti-check-miss{color:var(--check-miss);font-weight:700}@media(prefers-reduced-motion:reduce){.attack,.piece-img,.piece-img.slide,.piece-img.snap,.piece-img.slide.quick,.piece-img.snap.out,.piece-img.hop,.screen,.game,.gcard,.gcard.leaving,.fsheet,.howto,.board-msg,.pb-chip,.hero-number.earned,.flecks i,.chip.clock.low,.chip.kr-points,.verdict-chip,.ring.asked,.toast,.board-lines .line,.board-lines .line-case,.sq.hint:after,.tb-start,.tile.just,.why-line.strike,.op-pane-in,.nt-banner.nt-named,.sq-mark,.sq-mark.attacked,.sq-mark.taken,.kr-reached .sq-mark.goal,.sq-mark.picked,.sq-mark.right,.sq-mark.pulse,.ti-board .board-lines .line.attacker,.ti-board .board-lines .line.defender,.ti-board .board-lines .line.pin,.piece-img.tug,.pin-show .pin-case,.pin-show .pin-draw,.pin-show .pin-king,.sq-mark.painted,.board.paint .sq-mark.right,.sq-mark.extra,.sq-mark.missed,.ti-board .board-lines .line.control,.ti-board .board.paint .board-lines .line{animation:none}.ctl.fb-wrong{animation-name:flash-red-still}}
