@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-ease:initial}}}@layer theme{:root,:host{--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.grid{display:grid}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{color-scheme:light}*,:before,:after{box-sizing:border-box}body{background:var(--bg);margin:0}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ease{syntax:"*";inherits:false}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-opsz-normal-D9N6E8K1.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-opsz-normal-IcJDqblK.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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-opsz-normal-Cre6nC2_.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:Figtree;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/figtree-latin-ext-400-normal-CXAzuTZb.woff2) format("woff2"),url(/assets/figtree-latin-ext-400-normal-Gbh-3PTk.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:Figtree;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/figtree-latin-400-normal-g7Dtegnw.woff2) format("woff2"),url(/assets/figtree-latin-400-normal-BD4aNku5.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:Figtree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/figtree-latin-ext-600-normal-DJlfifZj.woff2) format("woff2"),url(/assets/figtree-latin-ext-600-normal-CQqsimlV.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:Figtree;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/figtree-latin-600-normal-Cv_xCTDl.woff2) format("woff2"),url(/assets/figtree-latin-600-normal-BM_oTo4n.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:Figtree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/figtree-latin-ext-700-normal-CS4sQkGV.woff2) format("woff2"),url(/assets/figtree-latin-ext-700-normal-BoDi4KL2.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:Figtree;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/figtree-latin-700-normal-th6qEP7c.woff2) format("woff2"),url(/assets/figtree-latin-700-normal-BCCt2T1q.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:"Noto Serif TC";font-style:normal;font-weight:700 900;font-display:swap;src:url(/assets/noto-serif-tc-tilecount-DyRYRLRJ.woff2) format("woff2");unicode-range:U+4e00,U+4e03,U+4e09,U+4e5d,U+4e8c,U+4e94,U+516b,U+516d,U+56db,U+6578,U+689d,U+7b52,U+842c}.grownup{align-self:center;position:relative;isolation:isolate;overflow:hidden;background:transparent;color:var(--muted);border:2px solid var(--tile-border);border-radius:999px;padding:8px 16px;font-weight:800;font-size:.85rem;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}.grownup .fill{position:absolute;inset:0;background:var(--tile-border);transform:scaleX(0);transform-origin:left;z-index:-1}.grownup span{position:relative}:root:has(.tile-count){--felt: #dfe9e2;--felt-deep: #c6d8cc;--ink: #17302a;--muted: #557066;--ivory: #fbf7ec;--ivory-edge: #e6dcc3;--tile-back: #1f7a5a;--pad: #ffffff;--pad-line: #b9cdc1;--good: #1f8a52;--bad: #c8372d;--accent: #c8372d;--good-bg: #dcefe2;--bad-bg: #f8e0dc;--warm: #8a5d0c;--warm-bg: #fbeccb;--font-display: "Bricolage Grotesque Variable", "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--font-body: "Figtree", system-ui, -apple-system, sans-serif;--font-han: "Noto Serif TC", "PingFang TC", "Songti TC", serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]):has(.tile-count){--felt: #0f2a22;--felt-deep: #0a1f19;--ink: #e8f1ec;--muted: #8fb0a3;--ivory: #f6f0de;--ivory-edge: #cfc3a3;--tile-back: #2c9a72;--pad: #173a2f;--pad-line: #285445;--good: #4cc68a;--bad: #ff7a6b;--accent: #ff7a6b;--good-bg: #1d3a2a;--bad-bg: #3e2420;--warm: #f2c66a;--warm-bg: #3d3119;color-scheme:dark}}:root[data-theme=dark]:has(.tile-count){--felt: #0f2a22;--felt-deep: #0a1f19;--ink: #e8f1ec;--muted: #8fb0a3;--ivory: #f6f0de;--ivory-edge: #cfc3a3;--tile-back: #2c9a72;--pad: #173a2f;--pad-line: #285445;--good: #4cc68a;--bad: #ff7a6b;--accent: #ff7a6b;--good-bg: #1d3a2a;--bad-bg: #3e2420;--warm: #f2c66a;--warm-bg: #3d3119;color-scheme:dark}body:has(.tile-count){background:radial-gradient(120% 80% at 50% 30%,var(--felt),var(--felt-deep));background-color:var(--felt);background-attachment:fixed}.tile-count{min-height:100dvh;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);color:var(--ink);font-family:var(--font-body);font-size:14px}.tile-count .app{flex:1;width:100%;box-sizing:border-box;max-width:480px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:18px 24px;display:flex;flex-direction:column;gap:16px}.tile-count header{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.tile-count h1{font-family:var(--font-display);font-weight:800;font-size:1.6rem;margin:0;letter-spacing:-.01em}.tile-count h1 span{font-family:var(--font-han);color:var(--accent);font-size:1.2rem;margin-left:6px}.tile-count .set-row{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.tile-count .dot{width:12px;height:12px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--pad-line);transition:background .2s,box-shadow .2s}.tile-count .dot.done{background:var(--muted);box-shadow:none}.tile-count .set-done{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:48px}.tile-count .resting>.set-row{visibility:hidden}.tile-count .tile-wall{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,34px));column-gap:2px;justify-content:center;width:100%;padding-top:16px}.tile-count .wall-tile{grid-row:1;position:relative;aspect-ratio:100 / 140}.tile-count .wall-tile.top{top:-22%;z-index:1}.tile-count .wall-tile .back,.tile-count .wall-tile .face{position:absolute;inset:0}.tile-count .wall-tile .back{background:var(--tile-back);border-radius:12%/9%;box-shadow:inset 0 -3px 0 var(--ivory-edge),inset 0 1px #ffffff40,0 2px 3px #0000002e}.tile-count .wall-tile .face{opacity:0}.tile-count .wall-tile .face svg{display:block;width:100%;height:auto}.tile-count .set-done .new-set{width:min(100%,320px);transition:opacity .4s}.tile-count .set-done .new-set:not(.ready){opacity:0}.tile-count .key:disabled{cursor:default}.tile-count .new-set{display:flex;align-items:center;justify-content:center;gap:10px;min-height:52px;border:none;border-radius:14px;cursor:pointer;background:var(--tile-back);color:#fff;box-shadow:0 4px #0000002e;font:800 1.15rem var(--font-display)}.tile-count .new-set:active{transform:translateY(2px);box-shadow:0 2px #0000002e}.tile-count .new-set:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.tile-count .new-set-icon{height:26px;width:auto;flex:none;display:block}.tile-count .suits{display:flex;gap:8px;flex-wrap:wrap}.tile-count .chip{font:600 .85rem var(--font-body);color:var(--ink);border:1.5px solid var(--pad-line);background:transparent;border-radius:999px;padding:6px 12px;cursor:pointer}.tile-count .chip[aria-pressed=true]{background:var(--ink);color:var(--felt);border-color:var(--ink)}.tile-count .chip:focus-visible,.tile-count .key:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.tile-count .stage{flex:1;display:grid;place-items:center;min-height:230px;position:relative}.tile-count .tile-wrap{width:min(46vw,190px);max-width:100%;transition:transform .18s ease}.tile-count .tile-wrap svg{display:block;width:100%;height:auto;filter:drop-shadow(0 10px 14px rgba(0,0,0,.22))}.tile-count .tile-wrap.deal{animation:tc-deal .28s cubic-bezier(.2,.9,.3,1.2)}.tile-count .tile-wrap.shake{animation:tc-shake .35s ease}@keyframes tc-deal{0%{transform:translateY(-18px) rotate(-6deg) scale(.92);opacity:0}to{transform:none;opacity:1}}@keyframes tc-shake{0%,to{transform:none}25%{transform:translate(-8px) rotate(-2deg)}75%{transform:translate(8px) rotate(2deg)}}.tile-count .feedback{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.tile-count .feedback.good{color:var(--good)}.tile-count .feedback.reveal{color:var(--warm)}.tile-count .pad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.tile-count .key{font-family:var(--font-display);font-weight:800;font-size:1.6rem;background:var(--pad);color:var(--ink);border:1.5px solid var(--pad-line);border-radius:14px;padding-block:14px;cursor:pointer;touch-action:manipulation;display:flex;flex-direction:column;align-items:center;line-height:1;font-variant-numeric:tabular-nums}.tile-count .key:not(:disabled):active{transform:scale(.97)}.tile-count .key.right{background:var(--good);color:#fff;border-color:var(--good)}.tile-count .key.wrong{background:var(--bad);color:#fff;border-color:var(--bad)}.tile-count .key.reveal{background:var(--warm-bg);color:var(--warm);border-color:var(--warm)}.tile-count .grownup{align-self:center;position:relative;isolation:isolate;overflow:hidden;font:700 .85rem var(--font-body);color:var(--muted);background:transparent;border:1.5px solid var(--pad-line);border-radius:999px;padding:8px 16px;cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}.tile-count .grownup .fill{position:absolute;inset:0;background:var(--pad-line);transform:scaleX(0);transform-origin:left;z-index:-1}.tile-count .grownup span{position:relative}.tile-count .grownup:focus-visible,.tile-count .btn:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.tile-count .progress{background:var(--pad);color:var(--ink);border:1.5px solid var(--pad-line);border-radius:16px;padding:16px;display:flex;flex-direction:column;gap:14px}.tile-count .prog-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.tile-count .progress h2{font-family:var(--font-display);font-weight:800;font-size:1.25rem;margin:0}.tile-count .progress h3{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:4px 0 0}.tile-count .row{display:flex;gap:8px;flex-wrap:wrap}.tile-count .btn{font:700 .9rem var(--font-body);background:var(--ink);color:var(--pad);border:none;border-radius:10px;padding:10px 16px;cursor:pointer}.tile-count .btn.ghost{background:none;color:var(--ink);border:1.5px solid var(--pad-line)}.tile-count .kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.tile-count .kpi{background:var(--felt);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:2px;min-width:0}.tile-count .kpi b{font-family:var(--font-display);font-weight:800;font-size:1.4rem;font-variant-numeric:tabular-nums}.tile-count .kpi small{font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.tile-count .kpi span{font-size:.75rem;color:var(--muted);font-variant-numeric:tabular-nums}.tile-count .grid-wrap{overflow-x:auto}.tile-count .mgrid{display:grid;grid-template-columns:30px repeat(9,minmax(28px,1fr));gap:3px;font-variant-numeric:tabular-nums}.tile-count .mgrid .h{display:grid;place-items:center;font:700 .8rem var(--font-display);color:var(--muted)}.tile-count .mgrid .h.rowh{font-family:var(--font-han);font-size:.95rem;color:var(--ink)}.tile-count .cell{aspect-ratio:1;border-radius:7px;display:grid;place-items:center;font:700 .72rem var(--font-body);border:1.5px solid var(--pad-line);background:var(--pad);color:var(--muted)}.tile-count .cell.auto{background:var(--good-bg);border-color:var(--good);color:var(--good)}.tile-count .cell.getting{background:var(--warm-bg);border-color:var(--warm);color:var(--warm)}.tile-count .cell.missed{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.tile-count .cell.off{opacity:.35}.tile-count .legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:var(--muted)}.tile-count .legend span{display:inline-flex;align-items:center;gap:6px}.tile-count .legend i{width:12px;height:12px;border-radius:3px;border:1.5px solid var(--pad-line);background:var(--pad)}.tile-count .legend i.auto{background:var(--good-bg);border-color:var(--good)}.tile-count .legend i.getting{background:var(--warm-bg);border-color:var(--warm)}.tile-count .legend i.missed{background:var(--bad-bg);border-color:var(--bad)}.tile-count .note{margin:0;font-size:.9rem;line-height:1.45;background:var(--felt);border-radius:10px;padding:10px 12px}.tile-count .fine{margin:0;font-size:.8rem;line-height:1.45;color:var(--muted);max-width:60ch}.tile-count .seg{display:inline-flex;gap:4px;background:var(--felt);border-radius:999px;padding:3px}.tile-count .seg button{font:700 .85rem var(--font-body);color:var(--muted);background:none;border:none;border-radius:999px;padding:6px 12px;cursor:pointer}.tile-count .seg button[aria-pressed=true]{background:var(--ink);color:var(--pad)}.tile-count .seg button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.tile-count .target-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:.9rem}.tile-count .back{flex:none;width:44px;height:44px;border-radius:12px;background:var(--pad);color:var(--muted);border:1.5px solid var(--pad-line);font:800 1.3rem var(--font-body);align-self:center;cursor:pointer}.tile-count .back+h1{flex:1 1 auto}.tile-count .back:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.tile-count .btn.danger{background:none;color:var(--bad);border:1.5px solid var(--bad)}.tile-count .count{transform-box:fill-box;transform-origin:center;animation:tc-pop .22s cubic-bezier(.2,.9,.3,1.3)}@keyframes tc-pop{0%{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}@media(prefers-reduced-motion:reduce){.tile-count .tile-wrap.deal,.tile-count .tile-wrap.shake,.tile-count .count{animation:none}.tile-count .dot,.tile-count .new-set{transition:none}}
