:root{--paper: #fff8ea;--ink: #143d2b;--line: rgba(20, 61, 43, .18);--card: #ffffff;--row-alt: rgba(20, 61, 43, .04);--green: #0e5a3c;--green-soft: #dcefe2;--orange: #ff6b1a;--orange-ink: #cc4e00;--orange-soft: #ffe7d2;--yellow: #ffc53d;--red: #e5484d;--error: #9c2b22;--amber: #d97706;--dim: #6e7f73;--shadow: 4px 4px 0 rgba(20, 61, 43, .16);--shadow-sm: 2px 2px 0 rgba(20, 61, 43, .16);--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--display: "Racing Sans One", system-ui, -apple-system, "Segoe UI", sans-serif}@media(prefers-color-scheme:dark){:root{--paper: #0a2e22;--ink: #f2ead3;--line: rgba(242, 234, 211, .18);--card: #0e3a2b;--row-alt: rgba(242, 234, 211, .05);--green: #3fa877;--green-soft: #0c4634;--orange: #ff8a45;--orange-ink: #ffa068;--orange-soft: #4a2410;--yellow: #e8b53a;--dim: #9db3a6;--error: #ff9b8f;--shadow: 4px 4px 0 rgba(0, 0, 0, .35);--shadow-sm: 2px 2px 0 rgba(0, 0, 0, .35)}}*{box-sizing:border-box;margin:0}.approot{min-height:100vh;min-height:100dvh;background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif}html,body{-webkit-text-size-adjust:100%}button{font:inherit;cursor:pointer;border:none;background:none;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--orange);outline-offset:2px}input,textarea{font:inherit}.loading{padding:48px 20px;text-align:center;color:var(--dim);letter-spacing:.1em;text-transform:uppercase;font-size:13px;font-weight:700}.masthead{padding:14px 16px 10px;background:var(--paper)}.edge-guard{display:none}@media(display-mode:standalone){.edge-guard{display:block;position:fixed;top:0;left:0;right:0;height:12px;background:var(--paper);z-index:50}body:has(.sheet-back) .edge-guard{z-index:56;pointer-events:none;background:color-mix(in srgb,var(--paper) 45%,rgb(10,46,34))}html{scroll-padding-top:12px}}.title-row{display:flex;align-items:center;justify-content:space-between;max-width:560px;margin:0 auto}.crest-lockup{display:flex;align-items:center;gap:12px}.crest-img{width:48px;height:48px;object-fit:contain;display:block}.masthead-title{display:flex;flex-direction:column;font-style:italic;font-weight:900;text-transform:uppercase;color:var(--ink);line-height:1.02;letter-spacing:.03em}.masthead-title span:first-child{font-size:15px;color:var(--orange-ink)}.masthead-title span:last-child{font-size:21px}.gear{font-size:22px;color:var(--ink);padding:8px;min-width:44px;min-height:44px;line-height:1;opacity:.75}.gear:hover{opacity:1}.gear-icon{display:block;width:1em;height:1em;margin:auto}.chequer{height:20px;background:repeating-conic-gradient(var(--ink) 0% 25%,var(--paper) 0% 50%) 0 0/16px 16px;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}.flash{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--yellow);color:#143d2b;font-weight:800;padding:12px 16px;font-size:14px;border-bottom:2px solid var(--ink)}.flash-x{font-weight:900;min-width:44px;min-height:32px}.warnbar{background:#fbe2e0;color:#9c2b22;padding:8px 16px;font-size:12.5px;font-weight:600}.warn-offline{background:var(--yellow);color:#143d2b}.content{padding:18px 14px 104px;max-width:560px;margin:0 auto}.section-label{font-size:12px;font-weight:900;letter-spacing:.18em;text-transform:uppercase;font-style:italic;color:var(--ink);margin:4px 0 10px}.hint{font-size:13px;color:var(--dim);margin-bottom:12px;line-height:1.45}.empty{font-size:13.5px;color:var(--dim);padding:14px 2px;line-height:1.5}.name-a,.who-a{color:var(--green)}.name-b,.who-b{color:var(--orange-ink)}.card{background:var(--card);border:2px solid var(--ink);border-radius:14px;box-shadow:var(--shadow);padding:14px;margin-bottom:18px}.tower{padding:0;overflow:hidden}.tower-head{display:grid;grid-template-columns:1fr 88px 88px;padding:12px 14px 8px;background:var(--green-soft);border-bottom:2px solid var(--ink)}.tower-player{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.roundel{width:28px;height:28px;border-radius:50%;border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:13px;font-style:italic}.roundel-a{background:#0e5a3c;color:#fff8ea}.roundel-b{background:#ff6b1a;color:#2b1503}.tower-name{font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tower-row{display:grid;grid-template-columns:1fr 88px 88px;align-items:baseline;padding:11px 14px;border-top:1px solid var(--line)}.tower-row:first-of-type{border-top:none}.tower-tier{font-size:12.5px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;font-style:italic;color:var(--ink)}.tower-tier em{display:block;font-style:normal;font-weight:500;letter-spacing:.01em;text-transform:none;color:var(--dim);font-size:11px;margin-top:2px}.digit{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:40px;font-weight:700;text-align:right;color:var(--ink);line-height:1;opacity:.45}.lead-a{color:var(--green);opacity:1}.lead-b{color:var(--orange-ink);opacity:1}.tower-row .digit:not(.lead-a):not(.lead-b){opacity:1}.tower-row:has(.lead-a) .digit:not(.lead-a),.tower-row:has(.lead-b) .digit:not(.lead-b){opacity:.45}.zone-hot{color:var(--amber);opacity:1!important}.zone-bust{color:var(--red);opacity:1!important}.zone-win{color:var(--green);opacity:1!important}.tower-note{padding:10px 14px;border-top:2px solid var(--ink);font-size:13px;color:#143d2b;font-weight:800;background:var(--yellow)}.formstrip{display:flex;align-items:center;gap:7px;margin:-6px 2px 14px}.formstrip-label{font-size:10.5px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;font-style:italic;color:var(--dim);margin-right:2px}.btn{min-height:50px;padding:12px 16px;border-radius:12px;font-weight:800;font-size:15px;flex:1;border:2px solid var(--ink);box-shadow:var(--shadow);transition:transform .06s ease,box-shadow .06s ease}.btn:active{transform:translate(2px,2px);box-shadow:var(--shadow-sm)}.btn-primary{background:var(--yellow);color:#143d2b}.btn-a{background:#0e5a3c;color:#fff8ea}.btn-b{background:#ff6b1a;color:#2b1503}.btn-ghost{background:var(--card);color:var(--ink)}.btn-small{min-height:44px;font-size:13px;flex:0 1 auto;padding:8px 14px;box-shadow:var(--shadow-sm)}.btn-row{display:flex;gap:10px;margin:14px 0;flex-wrap:wrap}.stage .field{margin-bottom:10px}.stage-title{font-weight:900;font-size:16px;margin-bottom:12px;font-style:italic}.chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.chip{border:2px solid var(--ink);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:700;color:var(--ink);background:var(--card);min-height:44px}.chip-on{background:var(--ink);color:var(--paper)}.chip-big{border-color:var(--orange-ink);color:var(--orange-ink)}.chip-big.chip-on{background:var(--orange);color:#2b1503;border-color:var(--ink)}.field{width:100%;background:var(--paper);border:2px solid var(--ink);border-radius:10px;color:var(--ink);padding:12px;font-size:16px;min-height:50px}.field::placeholder{color:var(--dim)}.field-num{font-family:var(--mono);font-variant-numeric:tabular-nums}.csvbox{font-family:var(--mono);font-size:12px;line-height:1.4;min-height:120px}.recent{margin-top:8px}.ledger-row{padding:11px 2px;border-bottom:1px solid var(--line)}.ledger-main{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ledger-who{font-weight:900;font-size:14.5px}.ledger-src{font-size:11.5px;color:var(--dim);letter-spacing:.08em;text-transform:uppercase;font-weight:700}.ledger-big{color:var(--orange-ink)}.badge{font-size:10px;font-weight:900;letter-spacing:.12em;border:2px solid var(--ink);padding:2px 7px;border-radius:5px;background:var(--green-soft)}.badge-match{background:var(--yellow);color:#143d2b}.ledger-sub{font-size:12.5px;color:var(--dim);margin-top:3px}.row-x{margin-left:auto;color:var(--dim);font-weight:800;min-width:36px;min-height:32px;font-size:14px}.row-x:hover{color:var(--red)}.game-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:8px;gap:12px}.dealer{border:2px solid var(--ink);background:var(--yellow);color:#143d2b;border-radius:12px;padding:8px 12px;font-size:13px;font-weight:800;text-align:right;min-height:44px;box-shadow:var(--shadow-sm)}.dealer em{display:block;font-style:normal;font-weight:600;color:#143d2b99;font-size:10.5px;margin-top:2px}.gamecard{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:3px;border:2px solid var(--ink);background:var(--card);padding:14px 14px 14px 18px;margin-bottom:12px;border-radius:14px;text-align:left;min-height:62px;box-shadow:var(--shadow);border-left:10px solid var(--orange);transition:transform .06s ease}.gamecard:nth-of-type(odd){border-left-color:var(--green)}.gamecard:active{transform:translate(2px,2px);box-shadow:var(--shadow-sm)}.gamecard-name{font-weight:900;font-size:17px;font-style:italic;letter-spacing:.02em}.gamecard-meta{font-size:12.5px;color:var(--dim);font-weight:600}.hands{padding:0;overflow:hidden}.hands-head{display:grid;grid-template-columns:44px 1fr 1fr;padding:9px 12px;border-bottom:2px solid var(--ink);background:var(--green-soft);font-size:11px;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.hands-head span:nth-child(n+2){text-align:right}.hands-scroll{max-height:30vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.hands-row{display:grid;grid-template-columns:44px 1fr 1fr;padding:7px 12px;border-bottom:1px solid var(--line)}.hands-row:nth-child(2n){background:var(--row-alt)}.hands-n{color:var(--dim);font-family:var(--mono);font-size:13px;display:flex;align-items:center}.dealdot{display:inline-block;width:9px;height:9px;border-radius:50%;border:1.5px solid var(--ink);margin-right:6px;flex:0 0 auto}.deal-a{background:#0e5a3c}.deal-b{background:#ff6b1a}.hands-cell{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:15px;color:var(--ink)}.hands-cell em{font-style:normal;font-size:12px;margin-right:8px;font-weight:700}.cell-a em{color:var(--green)}.cell-b em{color:var(--orange-ink)}.addhand{display:grid;grid-template-columns:1fr 1fr;gap:10px}.btn-add{grid-column:1 / -1}.racepad{display:grid;grid-template-columns:1fr 1fr;gap:12px}.racebtn{min-height:96px;font-size:19px;border-radius:16px}.gameover{background:var(--orange-soft);border-color:var(--ink)}.gameover .stage-title{color:var(--ink)}.trace{padding:12px 12px 4px}.trace-title{font-size:12px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;font-style:italic;margin-bottom:6px}.trace-title em{font-style:normal;font-weight:600;letter-spacing:.02em;text-transform:none;color:var(--dim);font-size:11px;margin-left:8px}.trace-box{margin-left:-4px}.ticket{background:var(--card);border:2px dashed var(--ink);border-radius:14px;padding:12px 14px;margin-bottom:14px;box-shadow:var(--shadow);position:relative}.ticket-done{box-shadow:none;opacity:.85;border-style:solid;border-color:var(--line)}.ticket-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.ticket-stamp{font-size:10.5px;font-weight:900;letter-spacing:.16em;font-style:italic;border:2px solid var(--ink);border-radius:6px;padding:3px 8px;background:var(--yellow);color:#143d2b;transform:rotate(-2deg)}.stamp-a{background:#0e5a3c;color:#fff8ea}.stamp-b{background:#ff6b1a;color:#2b1503}.stamp-void{background:var(--row-alt);color:var(--dim);border-color:var(--dim)}.ticket-date{font-size:11.5px;color:var(--dim);font-weight:600}.ticket-text{font-size:15px;font-weight:700;line-height:1.4}.ticket-perf{border-top:2px dashed var(--line);margin:12px -14px 0}.ticket-actions{margin-bottom:0}.ticket-reopen{font-size:12px;font-weight:700;color:var(--dim);text-decoration:underline;padding:8px 0 0;min-height:32px}.ticket-picks{display:flex;flex-direction:column;gap:2px;margin-top:8px;font-size:13px;font-weight:800}.pickgrid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}.chip-friendly{width:100%;justify-content:center;display:flex}.friendly-tag{font-size:9px;font-weight:900;letter-spacing:.14em;border:2px solid var(--ink);border-radius:5px;padding:2px 6px;margin-left:8px;background:var(--yellow);color:#143d2b;vertical-align:2px}.badge-friendly{background:var(--row-alt);color:var(--dim);border-color:var(--dim)}.signfield{display:grid;grid-template-columns:44px 1fr;gap:6px}.signbtn{border:2px solid var(--ink);border-radius:10px;font-weight:900;font-size:20px;min-height:50px;background:var(--card);color:var(--ink)}.sign-neg{background:var(--red);color:#fff8ea}.gamerow-btn{display:block;width:100%;text-align:left;padding:0}.gamerow-chev{margin-left:auto;color:var(--dim);font-size:12px}.gamedetail{margin-top:12px}.ledger-line{display:flex;align-items:flex-start;gap:6px}.ledger-line>.gamerow-btn,.ledger-body{flex:1;min-width:0}.honour-open{width:100%;text-align:left}.honour-open .gamerow-chev{align-self:center}.hands-scroll .hands-hit{background:var(--orange-soft);box-shadow:inset 4px 0 0 var(--orange)}.sheet-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:#0a2e228c;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:560px;max-height:88vh;max-height:88dvh;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--paper);color:var(--ink);border:2px solid var(--ink);border-bottom:none;border-radius:18px 18px 0 0;padding:16px 14px calc(16px + env(safe-area-inset-bottom))}.sheet-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.sheet-head .badge{margin-left:8px}.sheet-title{font-family:var(--display);font-style:italic;font-size:24px;margin-top:2px}.sheet-score{font-family:var(--mono);font-weight:800;font-size:15px;margin-top:2px}.sheet-x{flex-shrink:0}.sheet .hands-scroll{max-height:none}.formchips{margin-bottom:14px}.formstrip .formchips{margin-bottom:0}.formchips-small{display:flex;align-items:center;gap:8px}.formchips-wide{display:flex;flex-direction:column;gap:4px;width:fit-content;max-width:100%}.formchips-ends{display:flex;justify-content:space-between}.formchips-row{display:flex;gap:5px;margin:0;padding:4px;list-style:none;min-width:0}.formchips-key{font-size:10.5px;font-weight:900;letter-spacing:.12em;text-transform:uppercase;font-style:italic;color:var(--dim);white-space:nowrap}.formchip{flex:0 1 auto;width:30px;min-width:20px;aspect-ratio:1 / 1;border-radius:50%;border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:900;font-style:italic}.form-a.formchip{background:#0e5a3c;color:#fff8ea}.form-b.formchip{background:#ff6b1a;color:#2b1503}.rec-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.rec-cell{display:flex;flex-direction:column;gap:2px}.rec-num{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.rec-sep{color:var(--line);margin:0 3px}.rec-label{font-size:10.5px;color:var(--dim);font-weight:700;letter-spacing:.04em;text-transform:uppercase;line-height:1.3}.h2h-row{padding:9px 0;border-bottom:1px solid var(--line)}.h2h-row:last-child{border-bottom:none}.h2h-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.h2h-src{font-weight:800;font-size:14px}.h2h-score{font-family:var(--mono);font-weight:700;font-size:15px}.h2h-bar{display:flex;height:12px;border:2px solid var(--ink);border-radius:99px;overflow:hidden;background:var(--paper)}.h2h-a{background:#0e5a3c}.h2h-b{background:#ff6b1a}.honour-row{display:flex;gap:12px;align-items:flex-start;padding:9px 0;border-bottom:1px solid var(--line)}.honour-row:last-child{border-bottom:none}.honour-icon{font-size:20px;line-height:1.2}.honour-body{display:flex;flex-direction:column;gap:2px}.honour-name{font-weight:900;font-size:14px;font-style:italic;letter-spacing:.03em;text-transform:uppercase}.season{padding:12px 14px}.season-top{display:flex;align-items:baseline;gap:10px}.season-cup{font-size:18px}.season-title{font-weight:900;font-style:italic;font-size:15px;letter-spacing:.04em;text-transform:uppercase}.season-score{margin-left:auto;font-family:var(--mono);font-weight:700;font-size:20px}.season-winner{font-weight:900;font-size:16px;margin:4px 0 2px}.takeover{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:var(--orange);display:flex;flex-direction:column;justify-content:space-between}.takeover-band{border-color:#143d2b;background:repeating-conic-gradient(#143d2b,#143d2b 25%,#fff8ea 0%,#fff8ea 50%) 0 0/16px 16px;height:20px}.takeover-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;color:#2b1503}.takeover-flag{font-size:64px;line-height:1}.takeover-title{font-size:26px;font-weight:900;font-style:italic;text-transform:uppercase;letter-spacing:.02em;margin:14px 0 6px;max-width:24ch}.masthead-title,.stage-title,.gamecard-name,.honour-name,.season-title,.takeover-title{font-family:var(--display);font-style:normal;font-weight:400;letter-spacing:.01em}.takeover-sub{font-size:14px;font-weight:700;opacity:.85;margin-top:4px}.takeover-btns{justify-content:center;margin-top:22px;width:100%;max-width:420px}.takeover .btn{border-color:#143d2b;box-shadow:4px 4px #14150340}.takeover .btn-ghost{background:#fff8ea;color:#143d2b}.takeover-set{cursor:pointer}.set-a{background:#0e5a3c}.set-a .takeover-body{color:#fff8ea}.set-b{background:#ff6b1a}.set-b .takeover-body{color:#2b1503}.takeover-tap{opacity:.6;font-size:12px;margin-top:18px;letter-spacing:.08em;text-transform:uppercase}.takeover-eyebrow{font-size:13px;font-weight:900;letter-spacing:.22em;text-transform:uppercase;font-style:italic;opacity:.85;margin-top:10px}.takeover-medal{font-size:84px;line-height:1}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.cf{position:absolute;top:-6vh;border-radius:2px;opacity:.95;animation-name:cf-fall;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes cf-fall{0%{transform:translateY(0) translate(0) rotate(0)}to{transform:translateY(116vh) translate(var(--drift)) rotate(var(--rot))}}.bub{position:absolute;bottom:-6vh;border-radius:50%;border:2px solid rgba(255,248,234,.85);animation-name:bub-rise;animation-timing-function:ease-in;animation-fill-mode:forwards}@keyframes bub-rise{0%{transform:translateY(0);opacity:.9}to{transform:translateY(-118vh);opacity:0}}.pop-in{animation:pop .55s cubic-bezier(.2,1.6,.4,1) both}@keyframes pop{0%{transform:scale(0) rotate(-18deg)}70%{transform:scale(1.25)}to{transform:scale(1)}}.bottle-tilt{display:inline-block;animation:tilt .9s ease both}@keyframes tilt{0%{transform:rotate(0) scale(.4)}55%{transform:rotate(-24deg) scale(1.15)}to{transform:rotate(-14deg) scale(1)}}.medal-drop{animation:drop .9s cubic-bezier(.3,1.4,.4,1) both}@keyframes drop{0%{transform:translateY(-60vh)}62%{transform:translateY(0)}78%{transform:translateY(-3vh)}to{transform:translateY(0)}}.band-sweep{animation:sweep 1.4s linear infinite;background-size:16px 16px}@keyframes sweep{to{background-position:160px 0}}.basegrid{display:grid;grid-template-columns:84px 1fr 1fr;gap:10px;align-items:center;margin-bottom:10px}.basegrid-label{font-size:11px;font-weight:900;letter-spacing:.14em;text-transform:uppercase;font-style:italic;color:var(--ink)}.tabbar{position:fixed;bottom:0;left:0;right:0;display:flex;gap:6px;background:var(--paper);border-top:2px solid var(--ink);padding:8px 10px calc(8px + env(safe-area-inset-bottom))}.tab{flex:1;padding:11px 0;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;font-style:italic;color:var(--ink);min-height:48px;border-radius:10px;border:2px solid transparent;opacity:.55}.tab-on{opacity:1;background:var(--green);color:var(--paper);border-color:var(--ink);box-shadow:var(--shadow-sm)}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.cf,.bub{display:none}}.hint-mono{font-family:var(--mono)}.spacer{height:10px}.section-gap{margin-top:24px}.btn-row-tight{margin:8px 0 2px}.hint-gap{margin-top:28px}.hint-error{color:var(--error)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.formchips-small .formchip{width:24px;font-size:11px}.formchip-latest{outline:2px solid var(--ink);outline-offset:1px}
