:root{--bg:#fff;--surface:#fff;--surface-2:#f7f7f7;--line:#e5e5e5;--line-strong:#d7d7d7;--ink:#4b4b4b;--ink-soft:#777;--ink-faint:#afafaf;--green:#58cc02;--green-dark:#58a700;--blue:#1cb0f6;--blue-dark:#1899d6;--blue-soft:#ddf4ff;--red:#ff4b4b;--red-dark:#ea2b2b;--yellow:#ffc800;--purple:#ce82ff;--sq-light:#fff;--sq-dark:#f0f2f5;--sq-last:#d4dde7;--sq-sel:#c3e6fb;--dot:#c7d0da;--coord:#b4bcc6;--board-frame:#e3e7ec;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--radius:16px;--tab-h:64px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#131f24;--surface:#131f24;--surface-2:#1f2f37;--line:#37464f;--line-strong:#46565f;--ink:#f1f7fb;--ink-soft:#a6b5bd;--ink-faint:#6f8089;--blue-soft:#193b4d;--sq-light:#e9edf1;--sq-dark:#cdd5dd;--sq-last:#a9bccd;--sq-sel:#8fcdf2;--dot:#8796a5;--coord:#7f8c99;--board-frame:#37464f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;margin:0;font-family:Nunito,ui-rounded,system-ui,-apple-system,Apple SD Gothic Neo,sans-serif;font-weight:700}button{font:inherit;color:inherit;cursor:pointer}h1,h2{letter-spacing:-.01em;margin:0;font-weight:900}.btn{border:2px solid var(--line);background:var(--surface);min-height:46px;box-shadow:0 4px 0 var(--line);letter-spacing:.02em;color:var(--blue);border-radius:14px;justify-content:center;align-items:center;gap:6px;padding:0 20px;font-size:15px;font-weight:800;transition:transform 80ms,box-shadow 80ms,filter .12s;display:inline-flex}.btn:hover{filter:brightness(1.04)}.btn:active:not(:disabled){box-shadow:0 0 0 var(--line);transform:translateY(4px)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--green);border-color:var(--green);box-shadow:0 4px 0 var(--green-dark);color:#fff}.btn.primary:active:not(:disabled){box-shadow:0 0 0 var(--green-dark)}.btn.danger{color:var(--red)}.btn.small{min-height:40px;padding:0 14px;font-size:14px}.btn.big{width:100%;min-height:54px;font-size:17px}.icon-btn{width:42px;height:42px;color:var(--ink-faint);transition:background .12s ease, color .12s ease, transform .12s var(--ease-spring);background:0 0;border:none;border-radius:12px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--surface-2);color:var(--ink-soft)}.icon-btn:active{transform:scale(.9)}.link{color:var(--blue);background:0 0;border:none;padding:6px 4px;font-weight:800}.shell{min-height:100%}.shell.with-tabs{padding-bottom:calc(var(--tab-h) + env(safe-area-inset-bottom))}.shell-content{animation:page-in .32s var(--ease-out)}.tabs{z-index:20;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);border-top:2px solid var(--line);background:var(--bg);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.tabs .brand{display:none}.tab{color:var(--ink-faint);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;font-size:12px;font-weight:800;display:flex}.tab.active{color:var(--blue)}.tab.active svg{animation:pop .36s var(--ease-spring)}@media (width>=900px){.shell.with-tabs{padding:0 0 0 240px}.tabs{border-top:none;border-right:2px solid var(--line);flex-direction:column;justify-content:flex-start;gap:6px;width:240px;height:auto;padding:24px 16px;top:0;right:auto}.tabs .brand{color:var(--green);cursor:pointer;align-items:center;gap:8px;margin:0 8px 20px;font-size:24px;font-weight:900;display:flex}.brand-mark{font-size:28px}.tab{border:2px solid #0000;border-radius:12px;flex-direction:row;flex:none;justify-content:flex-start;gap:16px;padding:12px 16px;font-size:15px}.tab:hover{background:var(--surface-2)}.tab.active{background:var(--blue-soft);border-color:#84d8ff}}.page{max-width:640px;margin:0 auto;padding:20px 16px 32px}.page-header{align-items:center;gap:8px;margin-bottom:20px;display:flex}.page-header h1{flex:1;font-size:24px}.header-note{color:var(--ink-soft);font-size:14px}.card{border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);animation:rise .42s var(--ease-out) both;margin-bottom:16px;padding:18px}.card:nth-of-type(2){animation-delay:60ms}.card:nth-of-type(3){animation-delay:.12s}.hint-text{color:var(--ink-soft);margin:8px 0 0;font-size:14px;line-height:1.45}.hint-text.faint{color:var(--ink-faint);font-size:12.5px}.loading,.empty-state{min-height:60vh;color:var(--ink-soft);place-items:center;gap:16px;display:grid}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg, var(--surface-2) 25%, var(--line) 50%, var(--surface-2) 75%);background-size:200% 100%;height:160px;animation:1.2s linear infinite shimmer}.error-banner{color:var(--red-dark);background:#ffdfe0;border-radius:12px;margin-bottom:12px;padding:12px 14px;font-size:14px}.hero{text-align:center;padding:36px 8px 24px;position:relative}.hero h1{color:var(--green);font-size:32px}.hero p{color:var(--ink-soft);margin:10px 0 0;font-size:15px;line-height:1.5}.hero-pieces{height:96px;margin-bottom:8px;position:relative}.hp{width:72px;height:72px;animation:3.2s ease-in-out infinite bob;position:absolute}.hp1{animation-delay:-.4s;top:18px;left:calc(50% - 150px)}.hp2{width:88px;height:88px;animation-delay:-1.2s;top:0;left:calc(50% - 64px)}.hp3{width:84px;height:84px;animation-delay:-2s;top:4px;left:calc(50% + 2px)}.hp4{animation-delay:-2.6s;top:20px;left:calc(50% + 86px)}.mode-cards{gap:14px;display:grid}@media (width>=560px){.mode-cards{grid-template-columns:1fr 1fr}}.mode-card{text-align:left;color:#fff;animation:rise .46s var(--ease-out) both;border:none;border-radius:18px;align-items:center;gap:14px;padding:18px;transition:transform 90ms,box-shadow 90ms;display:flex}.mode-card:nth-child(2){animation-delay:70ms}.mode-card.green{background:var(--green);box-shadow:0 5px 0 var(--green-dark)}.mode-card.blue{background:var(--blue);box-shadow:0 5px 0 var(--blue-dark)}.mode-card:active{box-shadow:none;transform:translateY(5px)}.mode-card strong{font-size:19px;font-weight:900;display:block}.mode-card small{opacity:.9;margin-top:2px;font-size:13.5px;display:block}.mode-icon{background:#ffffff38;border-radius:14px;flex:none;place-items:center;width:52px;height:52px;display:grid}.mode-icon svg{width:30px;height:30px}.list-section{margin-top:28px}.list-section h2{margin-bottom:12px;font-size:19px}.section-head{justify-content:space-between;align-items:center;display:flex}.section-head h2{margin-bottom:0}.game-list{gap:10px;margin-top:12px;display:grid}.game-row{border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;transition:transform .16s var(--ease-out), border-color .16s ease;animation:rise .38s var(--ease-out) both;align-items:center;gap:12px;padding:12px 14px;display:flex}.game-row:hover{border-color:var(--line-strong);transform:translateY(-1px)}.row-avatars{display:flex}.row-avatars .avatar+.avatar{box-shadow:0 0 0 2px var(--surface);margin-left:-10px}.row-main{flex:1;min-width:0}.row-main strong{white-space:nowrap;text-overflow:ellipsis;font-size:15px;display:block;overflow:hidden}.row-main .vs{color:var(--ink-faint);font-size:12px}.row-main>span{color:var(--ink-faint);margin-top:2px;font-size:12.5px;display:block}.row-side{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.row-cost{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-size:12px}.icon-btn.ghost{width:34px;height:34px}.badge{border-radius:8px;padding:2px 8px;font-size:12px;font-weight:900}.badge.w{color:#4b4b4b;background:#f0f2f5;border:2px solid #dfe3e8}.badge.b{color:#fff;background:#4b4f56}.badge.d{background:var(--surface-2);color:var(--ink-soft)}.badge.x{background:var(--surface-2);color:var(--ink-faint)}.badge.live{background:var(--red);color:#fff;animation:1.6s ease-in-out infinite pulse}.field-label{color:var(--ink);margin:4px 0 10px;font-size:15px;font-weight:800}.field-label strong{color:var(--blue)}.card .field-label:not(:first-child){margin-top:20px}.engine-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.engine-card{border:2px solid var(--line);background:var(--surface);box-shadow:0 4px 0 var(--line);border-radius:14px;flex-direction:column;align-items:center;gap:6px;padding:14px 6px 12px;transition:transform 90ms,box-shadow 90ms,border-color .12s,background .12s;display:flex;position:relative}.engine-card strong{font-size:15px}.engine-card>span{color:var(--ink-faint);text-align:center;font-size:11px}.engine-card em{color:var(--red);font-size:11px;font-style:normal}.engine-card.active{border-color:var(--accent);box-shadow:0 4px 0 var(--accent);background:color-mix(in srgb, var(--accent) 9%, var(--surface))}.engine-card.active .avatar{animation:pop .38s var(--ease-spring)}.engine-card:active:not(:disabled){box-shadow:none;transform:translateY(4px)}.engine-card:disabled{opacity:.45;cursor:not-allowed}.segmented{background:var(--surface-2);border:2px solid var(--line);border-radius:14px;gap:4px;margin-top:14px;padding:4px;display:flex}.segmented button{height:40px;color:var(--ink-soft);transition:background .16s var(--ease-out), color .16s ease, box-shadow .16s ease;background:0 0;border:none;border-radius:10px;flex:1;font-weight:800}.segmented button.active{background:var(--surface);color:var(--blue);box-shadow:0 2px 0 var(--line)}.side-pick{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.side-option{border:2px solid var(--line);background:var(--surface);box-shadow:0 4px 0 var(--line);color:var(--ink-soft);border-radius:14px;flex-direction:column;align-items:center;gap:2px;padding:8px 0 10px;font-weight:800;display:flex}.side-option svg{width:56px;height:56px}.side-option.active{background:var(--blue-soft);color:var(--blue);border-color:#84d8ff;box-shadow:0 4px #84d8ff}.random-piece{width:56px;height:56px;display:block;position:relative}.random-piece svg{width:44px;height:44px;position:absolute}.random-piece svg:first-child{top:0;left:0}.random-piece svg:last-child{bottom:0;right:0}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{border:2px solid var(--line);background:var(--surface);min-width:58px;height:40px;box-shadow:0 3px 0 var(--line);color:var(--ink-soft);border-radius:12px;padding:0 12px;font-weight:800;transition:transform 80ms}.chip.active{background:var(--blue-soft);color:var(--blue);border-color:#84d8ff;box-shadow:0 3px #84d8ff}.chip:active{box-shadow:none;transform:translateY(3px)}input[type=range]{width:100%;height:6px;accent-color:var(--blue);margin:16px 0 4px}.vs-badge{background:var(--yellow);color:#fff;width:52px;height:52px;animation:pop .5s var(--ease-spring) .12s both;border-radius:50%;place-items:center;margin:-6px auto 10px;font-weight:900;display:grid;box-shadow:0 4px #e0a800}.sticky-cta{padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 30%);position:sticky;bottom:0}.avatar{color:#fff;border-radius:30%;flex:none;place-items:center;font-weight:900;display:grid;position:relative;box-shadow:inset 0 -4px #00000024}.avatar span{line-height:1;transform:translateY(-1px)}.avatar.human{background:var(--blue)}.avatar.human svg{width:58%;height:58%}.avatar-badge{white-space:nowrap;background:var(--yellow);color:#7a5b00;box-shadow:0 0 0 2px var(--surface);border-radius:6px;padding:0 4px;font-size:8.5px;font-style:normal;font-weight:900;line-height:13px;position:absolute;bottom:-5px;left:50%;transform:translate(-50%)}.game-page{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.game-header{flex:none;align-items:center;gap:4px;height:56px;padding:0 8px;display:flex}.game-title{text-align:center;flex:1;min-width:0}.game-title strong{white-space:nowrap;text-overflow:ellipsis;font-size:16px;display:block;overflow:hidden}.game-title span{color:var(--ink-faint);font-size:12px;display:block}.game-main{--board:min(100vw - 16px, 100dvh - 56px - 152px - 128px, 640px);flex-direction:column;flex:1;align-items:center;min-height:0;display:flex}.board-col{width:var(--board);flex-direction:column;margin:auto 0;display:flex}.board-wrap{width:var(--board);height:var(--board);position:relative}.side-col{display:none}.mobile-panel{width:100%;max-width:640px;padding:4px 8px calc(8px + env(safe-area-inset-bottom))}@media (width>=900px) and (aspect-ratio>=5/4){.game-main{--board:min(100dvh - 56px - 24px - 136px, 100vw - 48px - 24px - 360px, 820px);flex-direction:row;justify-content:center;align-items:stretch;gap:24px;padding:0 24px 24px}.board-col{justify-content:center}.mobile-panel{display:none}.side-col{flex-direction:column;gap:12px;width:340px;min-height:0;padding:8px 0;display:flex}.side-card{border:2px solid var(--line);border-radius:var(--radius);flex-direction:column;min-height:0;display:flex;overflow:hidden}.side-card:first-child{flex:1}.side-card .nav-buttons{border-top:2px solid var(--line);padding:6px}.side-col .game-actions{justify-content:stretch}.side-col .game-actions .btn{flex:1}}.player-bar{align-items:center;gap:10px;height:68px;padding:0 4px;display:flex;position:relative}.player-meta{flex:1;min-width:0}.player-name{align-items:center;gap:6px;font-size:16px;font-weight:900;display:flex}.side-dot{border:2px solid #a4b4c7;border-radius:50%;width:10px;height:10px}.side-dot.w{background:#fff}.side-dot.b{background:#50555d;border-color:#3c4047}.player-sub{color:var(--ink-faint);white-space:nowrap;align-items:center;gap:6px;font-size:12px;display:flex;overflow:hidden}@media (width<=480px){.player-sub .vendor{display:none}}.cost-chip{background:var(--surface-2);color:var(--ink-soft);font-variant-numeric:tabular-nums;border-radius:6px;padding:0 6px}.captured{align-items:center;height:18px;margin-top:1px;display:flex}.captured .cap{width:18px;height:18px;animation:pop .3s var(--ease-spring);margin-right:-7px}.captured .cap-p+.cap:not(.cap-p),.captured .cap-n+.cap-b,.captured .cap-b+.cap-r,.captured .cap-n+.cap-r,.captured .cap-r+.cap-q{margin-left:6px}.captured .lead{color:var(--ink-soft);margin-left:12px;font-size:12px}.clock{background:var(--surface-2);border:2px solid var(--line);min-width:96px;color:var(--ink-faint);font-variant-numeric:tabular-nums;transition:background .2s ease, color .2s ease, transform .3s var(--ease-spring), border-color .2s ease;border-radius:12px;justify-content:flex-end;align-items:center;gap:6px;padding:8px 14px;font-size:22px;font-weight:900;display:flex;position:relative}.clock.running{background:var(--ink);border-color:var(--ink);color:var(--bg);transform:scale(1.04)}.clock.low{background:var(--red);border-color:var(--red);color:#fff;animation:1s ease-in-out infinite pulse}.thinking-dots{gap:3px;display:inline-flex}.thinking-dots i{opacity:.6;background:currentColor;border-radius:50%;width:5px;height:5px;animation:1s ease-in-out infinite dot}.thinking-dots i:nth-child(2){animation-delay:.15s}.thinking-dots i:nth-child(3){animation-delay:.3s}.bubble{z-index:15;border:2px solid var(--line);background:var(--surface);pointer-events:none;max-width:min(86%,420px);animation:bubble-in .42s var(--ease-spring) both, bubble-out .4s ease 7s forwards;border-radius:16px;padding:10px 14px;font-size:14px;line-height:1.4;position:absolute;left:2px;box-shadow:0 6px 18px #00000014}.bubble.error{animation:bubble-in .42s var(--ease-spring) both}.bubble:before{content:"";background:inherit;border:inherit;border-width:2px 0 0 2px;width:12px;height:12px;position:absolute;left:16px;transform:rotate(45deg)}.player-bar.top .bubble{transform-origin:22px 0;top:62px}.player-bar.top .bubble:before{top:-8px}.player-bar.bottom .bubble{transform-origin:22px 100%;bottom:62px}.player-bar.bottom .bubble:before{bottom:-8px;transform:rotate(225deg)}.bubble.error{color:var(--red-dark);background:#fff1f1;border-color:#ffc1c1}.move-strip{scrollbar-width:none;align-items:center;gap:2px;height:46px;padding:0 4px;display:flex;overflow-x:auto}.move-strip::-webkit-scrollbar{display:none}.strip-item{animation:slide-in .26s var(--ease-out);flex:none;align-items:center;display:inline-flex}.move-strip .no{color:var(--ink-faint);margin:0 2px 0 8px;font-size:13px}.mv{color:var(--ink);background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:baseline;gap:4px;padding:6px 8px;font-size:15px;font-weight:800;display:inline-flex}.mv:hover{background:var(--surface-2)}.mv.current{background:var(--blue-soft);color:var(--blue)}.mv.fallback .san{-webkit-text-decoration:underline wavy var(--red);text-decoration:underline wavy var(--red)}.move-empty{color:var(--ink-faint);padding:0 8px;font-size:14px}.move-table{flex:1;padding:6px 0;overflow-y:auto}.move-row{animation:slide-in .26s var(--ease-out);grid-template-columns:40px 1fr 1fr;align-items:center;padding:0 8px;display:grid}.move-row:nth-child(odd){background:color-mix(in srgb, var(--surface-2) 70%, transparent)}.move-row .no{color:var(--ink-faint);text-align:center;font-size:13px}.move-row .mv{width:100%;margin:2px 0}.move-meta{color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:11px;font-weight:700}.move-row .mv.empty{display:block}.nav-buttons{justify-content:center;gap:4px;display:flex}.nav-buttons .icon-btn{max-width:72px;color:var(--ink-soft);flex:1}.mobile-controls{justify-content:space-between;align-items:center;gap:8px;display:flex}.mobile-controls .nav-buttons{flex:1;justify-content:flex-start}.game-actions{justify-content:flex-end;gap:8px;display:flex}.live-usage.compact{background:var(--surface-2);color:var(--ink-soft);border-radius:12px;justify-content:space-between;margin-top:8px;padding:8px 12px;font-size:13px;display:flex}.live-usage.compact strong{color:var(--ink);font-variant-numeric:tabular-nums}.usage-card{gap:10px;padding:14px}.usage-title{color:var(--ink-faint);font-size:13px}.usage-line{align-items:center;gap:10px;font-size:14px;display:flex}.usage-name{flex:1}.usage-num{color:var(--ink-faint);font-variant-numeric:tabular-nums;font-size:12px}.usage-line strong,.usage-total strong{text-align:right;font-variant-numeric:tabular-nums;min-width:70px}.usage-total{border-top:2px solid var(--line);justify-content:space-between;padding-top:10px;font-size:15px;display:flex}.back-to-live{z-index:12;background:var(--blue);color:#fff;box-shadow:0 4px 0 var(--blue-dark);animation:bubble-in .36s var(--ease-spring);border:none;border-radius:999px;align-items:center;gap:4px;padding:8px 14px;font-size:13px;font-weight:800;display:inline-flex;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.back-to-live svg{width:16px;height:16px}.toast{z-index:60;background:var(--ink);color:var(--bg);animation:toast-in .38s var(--ease-spring);border-radius:14px;padding:12px 18px;font-size:14px;position:fixed;top:16px;left:50%;transform:translate(-50%)}.board{width:100%;height:100%;box-shadow:0 0 0 2px var(--board-frame);touch-action:none;-webkit-user-select:none;user-select:none;border-radius:14px;position:relative;overflow:hidden}.board.movable{cursor:pointer}.squares{grid-template-rows:repeat(8,1fr);grid-template-columns:repeat(8,1fr);display:grid;position:absolute;inset:0}.sq{transition:background-color .18s;position:relative}.sq.light{background:var(--sq-light)}.sq.dark{background:var(--sq-dark)}.sq.last{background:var(--sq-last)}.sq.selected{background:var(--sq-sel)}.sq.check{background-image:radial-gradient(circle,#ff4b4bbf 0%,#ff4b4b59 40%,#0000 72%)}.coord{color:var(--coord);pointer-events:none;font-size:clamp(8px,1.6vmin,12px);font-weight:800;position:absolute}.coord.rank{top:3px;left:4px}.coord.file{bottom:2px;right:4px}.hint{background:var(--dot);width:26%;height:26%;animation:hint-in .22s var(--ease-spring);border-radius:50%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.hint.capture{border:clamp(3px, .8vmin, 6px) solid var(--dot);background:0 0;width:86%;height:86%}.pieces{pointer-events:none;position:absolute;inset:0}.piece{width:12.5%;height:12.5%;transition:transform .24s var(--ease-out);will-change:transform;position:absolute;top:0;left:0}.piece svg{width:100%;height:100%;display:block}.no-anim .piece{transition:none}.piece.dragging{z-index:10;transition:none}.piece.dragging svg{filter:drop-shadow(0 8px 10px #0000002e)}.piece.dying{z-index:0}.piece.dying svg{animation:.24s ease-in forwards capture-out}.piece.in-check svg{animation:.42s shake}.promo-backdrop{z-index:20;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#ffffff8c;position:absolute;inset:0}.promo{width:12.5%;box-shadow:0 10px 28px #0000002e, 0 0 0 2px var(--board-frame);animation:pop .3s var(--ease-spring);background:#fff;border-radius:12px;flex-direction:column;display:flex;position:absolute;overflow:hidden}.promo-option{aspect-ratio:1;background:#fff;border:none;padding:4%}.promo-option:hover{background:var(--blue-soft)}.sheet-backdrop{z-index:50;background:#0000006b;justify-content:center;align-items:flex-end;animation:.22s fade-in;display:flex;position:fixed;inset:0}.sheet{width:100%;max-width:520px;max-height:92dvh;padding:10px 20px calc(20px + env(safe-area-inset-bottom));background:var(--surface);text-align:center;animation:sheet-up .52s var(--ease-spring);border-radius:24px 24px 0 0;overflow-y:auto}@media (width>=640px){.sheet-backdrop{align-items:center}.sheet{animation:modal-in .46s var(--ease-spring);border-radius:24px}}.sheet-handle{background:var(--line);border-radius:3px;width:40px;height:5px;margin:0 auto 10px}.result-emoji{animation:trophy .8s var(--ease-spring) .12s both;font-size:56px;line-height:1.1}.result h2{font-size:30px}.result.win h2{color:var(--green)}.result.lose h2{color:var(--red)}.result.draw h2{color:var(--ink-soft)}.result-reason{color:var(--ink-faint);margin:4px 0 16px}.cost-hero{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:14px;display:grid}.cost-hero>div{border:2px solid var(--line);animation:rise .42s var(--ease-out) .18s both;border-radius:14px;padding:12px}.cost-hero>div:last-child{animation-delay:.24s}.cost-label{color:var(--ink-faint);font-size:12px;display:block}.cost-hero strong{color:var(--blue);font-variant-numeric:tabular-nums;font-size:24px;font-weight:900}.usage-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}.usage-table td,.usage-table th{padding:8px 4px}.usage-table tbody tr+tr{border-top:1px solid var(--line)}.usage-table th{color:var(--ink-faint);white-space:nowrap;font-size:12px;font-weight:800}.usage-table td{width:40%}.usage-table td.hi{color:var(--ink);font-weight:900}.usage-table tbody td{color:var(--ink-soft)}.usage-head{flex-direction:column;align-items:center;gap:4px;font-weight:900;display:flex}.usage-head small{color:var(--ink-faint);font-weight:700}.sheet-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:18px;display:grid}.sheet-actions.minor{justify-content:center;gap:18px;margin-top:10px;display:flex}.confetti{pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti i{border-radius:2px;width:9px;height:14px;animation:1.8s cubic-bezier(.2,.7,.4,1) forwards confetti;position:absolute;top:-12px}.leaderboard{gap:10px;display:grid}.lb-row{border:2px solid var(--line);border-radius:var(--radius);animation:rise .42s var(--ease-out) both;align-items:center;gap:12px;padding:12px 14px;display:flex}.lb-rank{text-align:center;width:22px;color:var(--ink-faint);font-size:18px;font-weight:900}.lb-row:first-child .lb-rank{color:#f5b400}.lb-row:nth-child(2) .lb-rank{color:#a0aab4}.lb-row:nth-child(3) .lb-rank{color:#cd7f32}.lb-main{flex:1;min-width:0}.lb-main small{color:var(--ink-faint);font-size:12px}.lb-bar{background:var(--surface-2);border-radius:5px;height:10px;margin:6px 0 4px;display:flex;overflow:hidden}.lb-bar i{height:100%;animation:grow .7s var(--ease-out) both;transform-origin:0}.lb-bar .w{background:var(--green)}.lb-bar .d{background:var(--ink-faint)}.lb-bar .l{background:var(--red)}.lb-sub{color:var(--ink-faint);font-size:12px;line-height:1.4;display:block}.lb-score{color:var(--green);font-size:20px;font-weight:900}.lb-score.low{color:var(--ink-faint)}.empty-card{text-align:center}.empty-card p{color:var(--ink-soft)}.matchups{gap:10px;display:grid}.matchup{border:2px solid var(--line);border-radius:var(--radius);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:10px 12px;font-size:13px;display:grid}.mu-side{align-items:center;gap:8px;display:flex}.mu-side.right{text-align:right;justify-content:flex-end}.mu-score{align-items:baseline;gap:8px;display:flex}.mu-score strong{font-size:20px}.mu-score span{color:var(--ink-faint);font-size:12px}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}@keyframes pop{0%{transform:scale(.6)}to{transform:scale(1)}}@keyframes bob{0%,to{transform:translateY(0)rotate(-3deg)}50%{transform:translateY(-10px)rotate(3deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.72}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes dot{0%,to{opacity:.4;transform:translateY(0)}40%{opacity:1;transform:translateY(-4px)}}@keyframes bubble-in{0%{opacity:0;transform:scale(.7)}}@keyframes bubble-out{to{opacity:0;visibility:hidden;transform:scale(.92)}}@keyframes slide-in{0%{opacity:0;transform:translate(-6px)}}@keyframes hint-in{0%{transform:translate(-50%,-50%)scale(0)}}@keyframes capture-out{to{opacity:0;transform:scale(.4)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6%)}40%{transform:translate(6%)}60%{transform:translate(-4%)}80%{transform:translate(3%)}}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(100%)}}@keyframes modal-in{0%{opacity:0;transform:translateY(40px)scale(.92)}}@keyframes trophy{0%{transform:scale(0)rotate(-30deg)}to{transform:scale(1)rotate(0)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-20px)scale(.9)}}@keyframes grow{0%{transform:scaleX(0)}}@keyframes confetti{0%{opacity:1;transform:translate(0)rotate(0)}to{transform:translate(var(--dx), 105vh) rotate(calc(var(--rot) + 540deg));opacity:.9}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}.mode-card.purple{background:#a560e8;box-shadow:0 5px #8644c7}.mode-card:nth-child(3){animation-delay:.14s}@media (width>=560px){.mode-cards.three>:first-child{grid-column:1/-1}}.quota-line{text-align:center;color:var(--ink-soft);margin:14px 0 0;font-size:13.5px}.quota-line strong{color:var(--green-dark);font-size:15px}.nickname{justify-content:center;margin-top:14px;display:flex}.nickname-chip{border:2px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;align-items:center;gap:6px;padding:6px 12px;font-size:14px;display:inline-flex}.nickname-chip span{color:var(--ink-faint);font-size:12.5px}.nickname-chip svg{width:15px;height:15px;color:var(--ink-faint)}.nickname input{border:2px solid var(--blue);background:var(--surface);width:200px;color:var(--ink);font:inherit;text-align:center;border-radius:999px;outline:none;padding:8px 14px;font-size:15px}.open-room{border:2px solid var(--line);border-radius:var(--radius);background:var(--surface);animation:rise .38s var(--ease-out) both;align-items:center;gap:12px;padding:10px 12px 10px 14px;display:flex}.open-room-piece{flex:none;width:36px;height:36px}.board-overlay{z-index:25;background:color-mix(in srgb, var(--bg) 55%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);place-items:center;padding:16px;animation:.24s fade-in;display:grid;position:absolute;inset:0}.waiting-card{border:2px solid var(--line);background:var(--surface);text-align:center;width:min(100%,360px);animation:modal-in .38s var(--ease-spring);border-radius:20px;flex-direction:column;align-items:center;gap:10px;padding:20px 18px 14px;display:flex;box-shadow:0 10px 30px #0000001f}.waiting-card strong{font-size:18px;font-weight:900}.waiting-card p{color:var(--ink-soft);margin:0;font-size:13.5px;line-height:1.5}.waiting-card .btn.big{width:100%}.waiting-dots{gap:6px;display:flex}.waiting-dots i{background:var(--green);border-radius:50%;width:10px;height:10px;animation:1.2s ease-in-out infinite dot}.waiting-dots i:nth-child(2){animation-delay:.15s}.waiting-dots i:nth-child(3){animation-delay:.3s}.share-link{background:var(--surface-2);text-overflow:ellipsis;white-space:nowrap;border-radius:10px;width:100%;padding:8px 10px;font-size:12.5px;overflow:hidden}.share-link code{color:var(--ink-soft);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.waiting-actions{gap:8px;width:100%;display:flex}.waiting-actions .btn{flex:1}.offer-banner{border:2px solid var(--yellow);background:color-mix(in srgb, var(--yellow) 14%, var(--surface));animation:rise .3s var(--ease-spring) both;border-radius:14px;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.offer-banner span{flex:1}.mobile-panel .offer-banner{z-index:40;position:fixed;top:60px;left:8px;right:8px;box-shadow:0 8px 24px #00000024}.you-tag{background:var(--blue-soft);color:var(--blue-dark);border-radius:6px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.offline-tag{background:color-mix(in srgb, var(--red) 15%, var(--surface));color:var(--red-dark);border-radius:6px;flex:none;padding:0 6px;font-size:11px;line-height:18px}.player-name-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.side-actions{align-items:center;gap:8px;display:flex}.side-actions .game-actions{flex:1}.emote-picker{flex:none;position:relative}.emote-toggle{color:var(--ink-soft)}.emote-toggle.active{background:var(--blue-soft);color:var(--blue)}.emote-toggle:disabled{opacity:.4}.emote-menu{z-index:45;border:2px solid var(--line);background:var(--surface);transform-origin:50% 100%;width:min(310px,100vw - 16px);animation:bubble-in .3s var(--ease-spring) both;border-radius:18px;grid-template-columns:1fr 1fr;gap:6px;padding:10px;display:grid;position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%);box-shadow:0 12px 32px #00000029}.emote-option{border:2px solid var(--line);background:var(--surface);box-shadow:0 3px 0 var(--line);text-align:left;border-radius:12px;align-items:center;gap:6px;padding:8px;font-size:13px;transition:transform 80ms,box-shadow 80ms;display:flex}.emote-option:active{box-shadow:none;transform:translateY(3px)}.emote-emoji{font-size:20px}.emote-mute{color:var(--ink-faint);background:0 0;border:none;grid-column:1/-1;padding:4px;font-size:12px}.bubble.emote{background:var(--blue-soft);animation:bubble-in .42s var(--ease-spring) both, bubble-out .3s ease 2.8s forwards;border-color:#84d8ff;font-size:15px}@media (width>=900px) and (aspect-ratio>=5/4){.side-col .emote-menu{transform-origin:0 100%;left:0;transform:none}}.game-actions .btn.small{white-space:nowrap}.mobile-controls .nav-buttons{gap:0;min-width:0}.mobile-controls .nav-buttons .icon-btn{min-width:30px}@media (width<=440px){.mobile-controls{gap:4px}.mobile-controls .btn.small{padding:0 10px}.mobile-controls .btn.small svg{display:none}}
