@font-face{font-family:Gabarito;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/gabarito-latin.woff2) format("woff2");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:Gabarito;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/gabarito-latin-ext.woff2) format("woff2");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:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/nunito-latin.woff2) format("woff2");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:Nunito;font-style:normal;font-weight:200 1000;font-display:swap;src:url(/fonts/nunito-latin-ext.woff2) format("woff2");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}*{margin:0;padding:0;box-sizing:border-box}button,input,select,textarea{font:inherit}:root{--paper: #fff6dc;--card: #fffdf2;--card-deep: #fbf3d8;--ink: #7a6a52;--ink-deep: #4e4130;--ink-soft: #a79878;--leaf: #8cc63e;--leaf-deep: #62a73b;--teal: #46c3ac;--teal-deep: #2fa391;--sun: #ffd64f;--sun-deep: #dfaf28;--coral: #f2836b;--coral-deep: #e06a51;--sky: #a6dee6;--line: #eadfbe;--midnight: #241d14;--shadow: 0 6px 0 rgba(122, 106, 82, .12);--shadow-lift: 0 10px 0 rgba(122, 106, 82, .14);--wob: 26px 30px 28px 32px / 30px 26px 32px 28px;--wob-sm: 14px 17px 15px 18px / 17px 14px 18px 15px;--bounce: cubic-bezier(.34, 1.56, .64, 1);--font-display: "Gabarito", ui-rounded, "Arial Rounded MT Bold", sans-serif;--font-body: "Nunito", "Gabarito", ui-rounded, sans-serif;--bg: var(--paper);--panel: var(--card);--panel-2: var(--card-deep);--text: var(--ink);--muted: var(--ink-soft);--accent: var(--teal-deep);--accent-2: var(--teal)}html,body,#root{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-body);font-weight:700;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;touch-action:manipulation;overscroll-behavior:none}::selection{background:var(--sun);color:var(--ink-deep)}h1,h2,h3{font-family:var(--font-display);font-weight:800}.fullscreen-note{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;color:#f6ecd8;text-shadow:0 1px 3px rgba(0,0,0,.55);font-size:18px;font-weight:800}.spinner{display:inline-flex;gap:7px}.spinner i{width:13px;height:13px;border-radius:50%;background:var(--leaf-deep);animation:spinner-hop .9s var(--bounce) infinite}.spinner i:nth-child(2){background:var(--sun);animation-delay:.12s}.spinner i:nth-child(3){background:var(--teal);animation-delay:.24s}@keyframes spinner-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-11px)}}.button{font-family:var(--font-display);font-weight:600;font-size:15px;letter-spacing:.3px;border:3px solid var(--ink);border-radius:999px;padding:9px 20px;background:var(--card);color:var(--ink);box-shadow:var(--shadow);cursor:pointer;transition:transform .22s var(--bounce),box-shadow .22s,background .2s,filter .2s}.button:hover:not(:disabled){transform:translateY(-3px) rotate(-.6deg);box-shadow:var(--shadow-lift)}.button:active:not(:disabled){transform:translateY(2px) scale(.95);box-shadow:0 2px #7a6a5224}.button:focus-visible{outline:3px dashed var(--ink);outline-offset:3px}.button:disabled{opacity:.45;cursor:default;transform:none}.button.ghost{background:#fffdf2d9;border-style:dashed;box-shadow:none}.button.small{padding:6px 14px;font-size:13px;border-width:2.5px}.button.active{background:var(--sun);border-color:var(--sun-deep);color:#6b4e10}.button.rank{min-width:44px;background:#fff;color:var(--ink-deep);font-size:17px;border-radius:14px 16px 15px 17px;padding:6px 10px}.menus{--grad-cards: linear-gradient(140deg, #f6a58d, #f2836b);--grad-solitaire: linear-gradient(140deg, #a5d65e, #8cc63e);--grad-dice: linear-gradient(140deg, #a6dee6, #6fc6d4);--grad-board: linear-gradient(140deg, #ffe082, #ffd64f);position:relative;z-index:1;height:100%;display:flex;flex-direction:column;color:var(--ink)}.menus:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-color:var(--paper);background-image:radial-gradient(rgba(122,106,82,.055) 1.6px,transparent 1.7px),radial-gradient(rgba(122,106,82,.055) 1.6px,transparent 1.7px);background-size:34px 34px;background-position:0 0,17px 17px}@media(orientation:landscape){.menus:before{right:auto;width:min(calc(620px + env(safe-area-inset-left,0px)),78vw);border-right:3px solid var(--ink);box-shadow:6px 0 #241d142e}.menus .tab-page{margin:0;max-width:min(560px,calc(78vw - 80px))}}.menus .tab-content{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:calc(28px + env(safe-area-inset-top,0px)) calc(20px + env(safe-area-inset-right,0px)) calc(128px + env(safe-area-inset-bottom,0px)) calc(20px + env(safe-area-inset-left,0px))}.menus .text-input{background-color:#fff}@keyframes menu-page-in{0%{opacity:0;transform:translateY(12px)}}.tab-page{animation:menu-page-in .35s var(--bounce)}.tab-page{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:22px}.greeting{position:relative}.greeting h1{font-size:30px;letter-spacing:.3px;color:var(--ink-deep)}.greeting p{color:var(--ink-soft);margin-top:4px}.greeting:before,.greeting:after{position:absolute;font-size:17px;pointer-events:none;animation:twinkle 2.4s ease-in-out infinite}.greeting:before{content:"✦";top:-8px;right:14%;color:var(--teal)}.greeting:after{content:"✧";bottom:-4px;right:4%;color:var(--coral);animation-delay:1.1s}@keyframes twinkle{0%,to{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1.15)}}.tab-dock{position:fixed;left:50%;transform:translate(-50%);bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:10}.dock-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;font-family:var(--font-display);font-size:11px;font-weight:700;color:var(--ink-soft);text-decoration:none;border-radius:999px;padding:4px 12px;transition:background .2s,color .2s,transform .22s var(--bounce)}.dock-item:hover{transform:translateY(-2px)}.dock-item.active{color:var(--ink-deep);background:var(--sun)}.tab-emoji{font-size:20px}.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-head h2{display:inline-flex;align-items:center;gap:8px;background:var(--sun);border:3px solid var(--ink);border-radius:var(--wob-sm);padding:5px 16px;font-size:16px;font-weight:600;letter-spacing:.4px;color:var(--ink-deep);box-shadow:var(--shadow);transform:rotate(-1.2deg)}.section-head h2:before{content:"";width:9px;height:9px;border-radius:50%;background:var(--ink);opacity:.85}.see-all{color:var(--teal-deep);background:#46c3ac29;border:2px solid rgba(47,163,145,.35);padding:4px 12px;border-radius:999px;font-family:var(--font-display);font-size:13px;font-weight:700;text-decoration:none}.active-strip{display:flex;gap:12px;overflow-x:auto;padding:4px 2px 12px;scrollbar-width:thin}.active-card{cursor:pointer;position:relative;flex:0 0 auto;width:150px;background:var(--card);border:3px solid var(--ink);border-radius:var(--wob-sm);padding:14px 14px 12px;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;color:var(--ink);box-shadow:var(--shadow);transition:transform .22s var(--bounce),box-shadow .22s}.active-card:hover{transform:translateY(-3px) rotate(-.6deg);box-shadow:var(--shadow-lift)}.active-card:active{transform:scale(.96)}.active-emoji{font-size:30px}.active-title{font-family:var(--font-display);font-weight:700;font-size:15px;color:var(--ink-deep)}.active-sub{color:var(--ink-soft);font-size:12px}.active-badge{position:absolute;top:8px;right:8px;border:2px solid var(--ink);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800;background:var(--card)}.active-badge.your-turn{background:var(--sun);color:#6b4e10;animation:badge-bob 1.6s ease-in-out infinite}.active-badge.unseen{background:var(--coral);color:#6b2314;border-color:var(--coral-deep)}.active-badge.finished{background:var(--card-deep);color:var(--ink-soft)}@keyframes badge-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.active-strip-empty{height:96px}.join-card h2{font-size:19px;color:var(--ink-deep)}.join-sub{color:var(--ink-soft);font-size:13.5px;margin:4px 0 14px}.code-input{position:relative;display:flex;gap:8px;cursor:text;max-width:340px}.code-hidden-input{position:absolute;inset:0;opacity:0;border:none;width:100%;height:100%;font-size:16px}.code-cell{flex:1;aspect-ratio:4 / 5;max-width:52px;border:3px solid var(--ink);border-radius:12px 14px 13px 15px;background:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:24px;font-weight:800;color:var(--ink-deep);pointer-events:none;transition:background .2s}.code-cell.filled{background:var(--sun)}.code-cell.caret:after{content:"";width:2px;height:1.1em;background:var(--teal-deep);animation:caret-blink 1.1s steps(2) infinite}@keyframes caret-blink{to{visibility:hidden}}.search-input{width:100%}.chip-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.chip-row-label{color:var(--ink-soft);font-size:13px;margin-right:2px}.filter-chip{cursor:pointer;border:2.5px solid var(--ink);border-radius:999px;padding:5px 14px;font-family:var(--font-display);font-size:13.5px;font-weight:600;background:var(--card);color:var(--ink-soft);transition:transform .22s var(--bounce),background .2s,color .2s}.filter-chip:hover{transform:translateY(-2px)}.filter-chip.active{background:var(--sun);color:#6b4e10;border-color:var(--sun-deep)}@media(max-width:460px){.chip-row{gap:6px}.filter-chip{padding:4px 10px;font-size:12.5px}}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:14px}.games-tab{height:100%;gap:14px}.panel-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:4px 2px}.game-tile{cursor:pointer;position:relative;aspect-ratio:1;border:3px solid var(--ink);border-radius:var(--wob-sm);padding:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--ink-deep);background:var(--grad-cards);box-shadow:var(--shadow);transition:transform .22s var(--bounce),box-shadow .22s}.game-tile:hover{transform:translateY(-4px) rotate(-.8deg);box-shadow:var(--shadow-lift)}.game-tile:active{transform:scale(.96)}.game-tile[data-category=solitaire],.detail-hero[data-category=solitaire]{background:var(--grad-solitaire)}.game-tile[data-category=dice],.detail-hero[data-category=dice]{background:var(--grad-dice)}.game-tile[data-category=board],.detail-hero[data-category=board]{background:var(--grad-board)}.tile-emoji{font-size:44px;filter:drop-shadow(0 3px 0 rgba(78,65,48,.2))}.tile-name{font-family:var(--font-display);font-weight:700;font-size:15px}.tile-seats{position:absolute;top:8px;left:8px;background:var(--card);color:var(--ink);border:2px solid var(--ink);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:800}.back-link{color:var(--teal-deep);text-decoration:none;font-family:var(--font-display);font-weight:700;font-size:14px}.detail-card{max-width:520px}.detail-head{display:flex;align-items:center;gap:14px}.detail-hero{border:3px solid var(--ink);border-radius:16px 19px 17px 20px/19px 16px 20px 17px;background:var(--grad-cards);display:grid;place-items:center;width:72px;height:72px;flex:0 0 auto}.detail-emoji{font-size:40px;filter:drop-shadow(0 3px 0 rgba(78,65,48,.2))}.game-detail h1{font-size:26px;color:var(--ink-deep)}.detail-seats{color:var(--ink-soft);font-size:14px;text-transform:capitalize}.detail-blurb{color:var(--ink-soft);font-size:15px}.detail-rule{border:none;border-top:3px dashed var(--line);width:100%;margin:8px 0;position:relative;overflow:visible}.detail-rule:after{content:"❀";position:absolute;top:-13px;left:50%;transform:translate(-50%);background:var(--card);padding:0 10px;color:var(--ink-soft)}.detail-actions{display:flex;flex-direction:column;gap:14px}.detail-actions h2{font-size:15px;margin-bottom:8px;color:var(--ink-deep)}.action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.action-row+.action-row{margin-top:10px}.detail-error{color:var(--coral-deep);font-size:14px;margin-top:8px}.friends-list{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.profile-row{display:flex;gap:16px;align-items:flex-end}.profile-field{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:800;color:var(--ink)}.avatar-chip.big{width:64px;height:64px;font-size:24px}.account-section{max-width:360px}.account-section .text-input{font-size:16px}.account-status{color:var(--ink);font-size:14px;line-height:1.45}.account-status strong{color:var(--teal-deep)}.account-notice{color:var(--leaf-deep);font-size:14px}.account-or{color:var(--ink-soft);font-size:12px;text-transform:uppercase;letter-spacing:.08em;margin:2px 0}.forgot-link{background:none;border:none;color:var(--ink-soft);font-size:13px;font-weight:700;text-decoration:underline;cursor:pointer;padding:4px 2px}.forgot-link:disabled{opacity:.5;cursor:default}.empty-note{color:var(--ink-soft);font-size:15px}.empty-note a{color:var(--teal-deep)}.empty{text-align:center;padding:26px 16px;display:flex;flex-direction:column;align-items:center;gap:4px}.empty .art{font-size:44px;display:inline-block;animation:empty-bob 2s ease-in-out infinite}.empty h4{font-family:var(--font-display);font-weight:600;font-size:19px;margin-top:8px;color:var(--ink-deep)}.empty p{color:var(--ink-soft);font-weight:700;font-size:14px;margin-bottom:12px}@keyframes empty-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.panel-scroll .empty-note{text-align:center;padding:26px 0;font-weight:700}.panel-scroll .empty-note:before{content:"🔍";display:block;font-size:36px;margin-bottom:8px;animation:empty-bob 2s ease-in-out infinite}.scene-layer{position:fixed;inset:0;z-index:0}.game-screen{position:fixed;inset:0;z-index:1;pointer-events:none}.hud{position:absolute;inset:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);pointer-events:none}.hud>*{pointer-events:auto}.gfa-dock{pointer-events:none!important}.gfa-dock>*{pointer-events:auto}.topbar{position:relative;display:flex;align-items:center;gap:14px;--topbar-pad-y: 12px;--topbar-pad-x: 16px;padding:var(--topbar-pad-y) var(--topbar-pad-x)}.topbar-spacer{flex:1}.version-chip{font-size:12px;font-weight:800;color:var(--ink);background:#fffdf2eb;border:2px solid var(--ink);padding:3px 10px;border-radius:999px;font-variant-numeric:tabular-nums}.banner{position:absolute;top:22%;left:50%;transform:translate(-50%);font-family:var(--font-display);font-size:44px;font-weight:900;letter-spacing:1px;color:var(--sun);text-shadow:3px 0 0 var(--midnight),-3px 0 0 var(--midnight),0 3px 0 var(--midnight),0 -3px 0 var(--midnight),2px 2px 0 var(--midnight),-2px 2px 0 var(--midnight),2px -2px 0 var(--midnight),-2px -2px 0 var(--midnight),0 8px 22px rgba(0,0,0,.5);animation:banner-pop .35s var(--bounce);pointer-events:none!important}@keyframes banner-pop{0%{transform:translate(-50%) scale(.6) rotate(-3deg);opacity:0}to{transform:translate(-50%) scale(1) rotate(0);opacity:1}}.toast{position:absolute;bottom:130px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--coral-deep);color:#fff3ee;border-radius:16px 19px 17px 20px/19px 16px 20px 17px;padding:10px 18px;font-weight:800;font-size:14px;box-shadow:0 6px #3c301e4d;animation:toast-in .45s var(--bounce);pointer-events:none}@keyframes toast-in{0%{transform:translate(-50%) translateY(24px) scale(.8);opacity:0}to{transform:translate(-50%) translateY(0) scale(1);opacity:1}}.skip{position:absolute;top:64px;right:16px;background:var(--sun);border-color:var(--sun-deep);color:#6b4e10;box-shadow:0 6px #dfaf2859}.choice-prompt{position:absolute;bottom:178px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:10px 16px;border-radius:var(--wob-sm);background:var(--card);border:3px solid var(--ink);box-shadow:var(--shadow);max-width:min(92vw,620px);flex-wrap:wrap;justify-content:center;animation:toast-in .35s var(--bounce);z-index:7}.choice-prompt.waiting{opacity:.94}.choice-text{color:var(--ink-deep);font-size:14.5px;font-weight:800;text-align:center}.choice-count{color:var(--teal-deep);font-family:var(--font-display);font-weight:800;font-size:15px;min-width:2.2em;text-align:center}.choice-ring{border-radius:50%;border:3px solid rgba(255,214,79,.95);box-shadow:0 0 14px #ffd64f8c,inset 0 0 10px #ffd64f4d;animation:choice-ring-pulse 1.4s ease-in-out infinite}.choice-ring.selected{border-color:var(--leaf);box-shadow:0 0 16px #8cc63eb3,inset 0 0 12px #8cc63e66;animation:none}@keyframes choice-ring-pulse{0%,to{opacity:1}50%{opacity:.55}}.dom-card-face{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:6% 4%;gap:2%;color:#4e4130;text-align:center;container-type:size}.dom-card-value{position:absolute;top:4%;left:6%;min-width:1.5em;padding:.08em .3em;border-radius:50%;color:#fffdf2;font-weight:800;font-size:clamp(9px,16cqw,15px)}.dom-card-name{margin-top:2%;font-family:var(--font-display);font-weight:800;font-size:clamp(8px,13cqw,13px);line-height:1.05;max-width:92%}.dom-card-glyph{font-size:clamp(18px,42cqw,42px);line-height:1;margin-top:auto;margin-bottom:auto}.inspect-overlay{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;background:#5a4c3673}.inspect-card{width:min(78vw,300px);min-height:380px;background:var(--card);border:3px solid var(--ink);border-radius:var(--wob);padding:20px 18px;display:flex;flex-direction:column;align-items:center;gap:12px;color:var(--ink-deep);box-shadow:0 12px #3c301e40;animation:modal-pop .35s var(--bounce)}@keyframes modal-pop{0%{transform:scale(.6) rotate(3deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.inspect-head{display:flex;align-items:center;gap:10px}.inspect-value{min-width:1.7em;height:1.7em;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;color:#fffdf2;font-weight:800;font-size:19px}.inspect-name{font-family:var(--font-display);font-weight:800;font-size:21px}.inspect-glyph{font-size:84px;line-height:1.1}.inspect-type{font-style:italic;font-weight:700;font-size:14px;color:var(--ink-soft)}.inspect-rules{font-size:16px;font-weight:700;line-height:1.45;text-align:center}.controls-label{color:var(--ink-soft);font-size:14px;font-weight:800;margin-right:6px}.bet-slider{flex:1;min-width:120px;max-width:260px}.bet-presets{gap:6px}.volume-slider,.bet-slider{-webkit-appearance:none;appearance:none;height:14px;border:3px solid var(--ink);border-radius:999px;background:linear-gradient(90deg,var(--teal) var(--val, 60%),#efe6c6 var(--val, 60%));cursor:pointer}.volume-slider::-webkit-slider-thumb,.bet-slider::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:var(--sun);border:3px solid var(--ink);box-shadow:0 3px #7a6a5233;transition:transform .2s var(--bounce)}.volume-slider::-webkit-slider-thumb:hover,.bet-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.volume-slider::-moz-range-thumb,.bet-slider::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:var(--sun);border:3px solid var(--ink)}.gfa-dock .movelog{margin:0 12px 16px 64px}.movelog-head{display:flex;align-items:center;gap:6px}.movelog-head .panel-title{flex:1}.movelog-list{display:flex;flex-direction:column;gap:2px;overflow-y:auto;max-height:min(44vh,380px);overscroll-behavior:contain}.movelog-entry{display:flex;align-items:baseline;justify-content:space-between;gap:10px;background:none;border:none;border-radius:8px;padding:6px 8px;cursor:pointer;text-align:left}.movelog-entry:hover{background:#7a6a5214}.movelog-entry.viewed{background:#ffd64f73}.movelog-msg{flex:1;font-size:13px;color:var(--ink)}.movelog-entry.viewed .movelog-msg{color:var(--ink-deep);font-weight:800}.movelog-time{flex:0 0 auto;font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.movelog-more .movelog-msg{color:var(--ink-soft);font-style:italic}.gfa-dock .chatpanel{margin:0 12px 16px 64px}.chat-head{display:flex;align-items:center}.chat-list{display:flex;flex-direction:column;overflow-y:auto;max-height:min(48vh,420px);min-height:140px;overscroll-behavior:contain}.chat-list>:first-child{margin-top:auto}.chat-timestamp{text-align:center;font-size:11px;color:var(--ink-soft);margin:10px 0 4px;font-variant-numeric:tabular-nums}.chat-empty{text-align:center;color:var(--ink-soft);font-size:13px;padding:22px 0}.chat-empty:before{content:"💬";display:block;font-size:28px;margin-bottom:6px;animation:empty-bob 2s ease-in-out infinite}.chat-earlier{background:none;border:none;color:var(--ink-soft);font-style:italic;font-size:12px;padding:6px;cursor:pointer;text-align:center}.chat-row{display:flex;flex-direction:column;margin-top:2px}.chat-row.first{margin-top:8px}.chat-row.mine{align-items:flex-end}.chat-row.theirs{align-items:flex-start}.chat-name{font-size:11px;color:var(--ink-soft);margin:0 0 2px 36px}.chat-line{display:flex;align-items:flex-end;gap:6px;max-width:86%}.chat-avatar{flex:0 0 auto;width:24px;height:24px;border-radius:50%;object-fit:cover;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff}.chat-avatar-gap{flex:0 0 auto;width:24px}.chat-bubble{min-width:0;padding:7px 12px;border-radius:18px;font-size:14px;line-height:1.3;white-space:pre-wrap;overflow-wrap:anywhere}.chat-row.theirs .chat-bubble{background:#fff;border:2px solid var(--line);color:var(--ink-deep)}.chat-row.mine .chat-bubble{background:var(--sun);border:2px solid var(--sun-deep);color:#6b4e10;font-weight:700}.chat-row.theirs:not(.first) .chat-bubble{border-top-left-radius:5px}.chat-row.theirs:not(.last) .chat-bubble{border-bottom-left-radius:5px}.chat-row.mine:not(.first) .chat-bubble{border-top-right-radius:5px}.chat-row.mine:not(.last) .chat-bubble{border-bottom-right-radius:5px}.chat-error{font-size:12px;color:var(--coral-deep)}.chat-inputrow{display:flex;align-items:center;gap:8px}.chat-input{flex:1;min-width:0;background:#fff;border:2.5px solid var(--ink);border-radius:999px;padding:7px 14px;color:var(--ink-deep);font-weight:700;font-size:16px;outline:none;transition:box-shadow .2s}.chat-input:focus{box-shadow:0 0 0 4px #8cc63e66}.chat-input::placeholder{color:#c9bc9c}.pass-overlay{position:absolute;inset:calc(-1*env(safe-area-inset-top,0px)) calc(-1*env(safe-area-inset-right,0px)) calc(-1*env(safe-area-inset-bottom,0px)) calc(-1*env(safe-area-inset-left,0px));background-color:#fffdf2;background-image:linear-gradient(rgba(140,198,62,.22) 50%,transparent 50%),linear-gradient(90deg,rgba(140,198,62,.22) 50%,transparent 50%);background-size:36px 36px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;z-index:10}.pass-overlay h2{font-size:24px;color:var(--ink-deep)}.pass-overlay p{color:var(--ink)}.pass-overlay:before,.pass-overlay:after{position:absolute;font-size:22px;pointer-events:none;animation:twinkle 2.4s ease-in-out infinite}.pass-overlay:before{content:"✦";top:18%;left:22%;color:var(--teal)}.pass-overlay:after{content:"✧";bottom:20%;right:20%;color:var(--coral);animation-delay:1.2s}.pass-card{max-width:min(440px,92vw)}.hud .gameover-panel{position:absolute;top:30%;left:50%;transform:translate(-50%);max-width:min(480px,90vw)}.gameover-panel h2{color:var(--ink-deep)}.gameover-panel .hint{color:var(--ink-soft);font-size:13px}.gameover-actions{display:flex;gap:10px;justify-content:center}.controls-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center}.text-input{font-family:var(--font-body);font-weight:700;border:3px solid var(--ink);border-radius:var(--wob-sm);padding:9px 14px;font-size:15px;background:#fff;color:var(--ink-deep);outline:none;min-width:160px;transition:box-shadow .2s,transform .2s var(--bounce)}.text-input:focus{box-shadow:0 0 0 4px #8cc63e66;transform:scale(1.012)}.text-input::placeholder{color:#c9bc9c}select.text-input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%237A6A52' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;cursor:pointer}.search-input{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18'%3E%3Ccircle cx='7.5' cy='7.5' r='5' fill='none' stroke='%23A79878' stroke-width='2.6'/%3E%3Cpath d='M11.5 11.5l4.5 4.5' stroke='%23A79878' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:13px center;padding-left:42px}.lobby{position:relative;z-index:1;height:100%;overflow-y:auto;padding:calc(48px + env(safe-area-inset-top,0px)) calc(24px + env(safe-area-inset-right,0px)) calc(48px + env(safe-area-inset-bottom,0px)) calc(24px + env(safe-area-inset-left,0px));display:flex;flex-direction:column;align-items:center;gap:16px}.lobby{animation:menu-page-in .35s var(--bounce)}.lobby h1{letter-spacing:3px;color:#fff6dc;text-shadow:0 2px 6px rgba(0,0,0,.55)}.lobby-sub{color:#fff6dccc;text-shadow:0 1px 3px rgba(0,0,0,.6)}.lobby-code{font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:3px;color:var(--ink-deep)}.lobby-seats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;width:min(860px,94vw);margin-top:12px}.ui-panel.seat-card{min-height:96px}.seat-num{color:var(--ink-soft);font-size:13px}.seat-name{font-family:var(--font-display);font-weight:700;font-size:17px;color:var(--ink-deep)}.friend-pill{display:inline-flex;align-items:center;gap:7px;padding:3px 10px 3px 3px;border:2.5px solid var(--ink);border-radius:999px;background:var(--card);color:var(--ink-deep);font-size:14px;font-weight:700}.friend-pill img,.friend-initial{width:26px;height:26px;border-radius:50%;object-fit:cover;background:var(--sky);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--ink-deep)}.friend-remove{border:none;background:none;color:var(--ink-soft);cursor:pointer;font-size:15px;padding:0 2px}.friend-remove:hover{color:var(--coral-deep)}.friend-note{color:var(--ink-soft);font-size:13.5px;align-self:center}.avatar-chip{width:44px;height:44px;border-radius:50%;border:3px solid var(--ink);background:var(--sky);color:var(--ink-deep);font-weight:800;font-size:18px;cursor:pointer;overflow:hidden;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:0;box-shadow:var(--shadow)}.avatar-chip img{width:100%;height:100%;object-fit:cover}.online-dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--leaf);margin-left:7px;vertical-align:middle;box-shadow:0 0 6px #8cc63eb3}.seat-actions{display:flex;gap:8px;flex-wrap:wrap}.lobby-actions{display:flex;gap:12px;margin-top:10px}.lobby-error,.lobby-error-line{color:#ffb4a4;text-shadow:0 1px 3px rgba(0,0,0,.5);text-align:center;display:flex;flex-direction:column;gap:12px;align-items:center}.die-toggle{min-width:42px;font-variant-numeric:tabular-nums}.suit-red{color:#d6453d}.suit-black{color:var(--midnight)}.scorepad{position:absolute;top:64px;right:12px;bottom:120px;overflow-y:auto;background:var(--card);border:3px solid var(--ink);border-radius:var(--wob-sm);box-shadow:var(--shadow);padding:10px}.scorepad table{border-collapse:collapse;font-size:13px}.scorepad th,.scorepad td{padding:3px 8px;text-align:right;min-width:44px}.scorepad th.current{color:var(--teal-deep)}.scorepad td.cat{text-align:left;color:var(--ink-soft)}.scorepad tr.total td{border-top:2px dashed var(--line);font-weight:800}.pad-pick{border:2px dashed var(--teal-deep);background:transparent;color:var(--teal-deep);border-radius:8px;padding:2px 8px;cursor:pointer;font-weight:800}.pad-pick:hover{background:var(--teal);border-style:solid;color:#0e4a40}.roll-dots{display:inline-flex;gap:4px}.roll-dots .dot{width:7px;height:7px;border-radius:50%;background:#6b4e1040}.roll-dots .dot.on{background:#6b4e10}.history-toggle,.explore-toggle,.speed-toggle,.rules-toggle,.chat-toggle,.room-toggle{position:absolute;left:12px;width:44px;height:44px;border-radius:14px 16px 15px 17px/16px 14px 17px 15px;padding:0;background:var(--card);border-style:solid;box-shadow:var(--shadow);opacity:.88}.history-toggle{bottom:16px;font-size:20px}.explore-toggle{bottom:70px;font-size:20px}.speed-toggle{bottom:124px;font-size:15px}.rules-toggle{bottom:178px;font-size:20px}.room-toggle{bottom:232px;font-size:20px}.chat-toggle{bottom:286px;font-size:18px}.history-toggle.active,.explore-toggle.active,.speed-toggle.active,.rules-toggle.active,.room-toggle.active,.chat-toggle.active{opacity:1;background:var(--sun);border-color:var(--sun-deep)}.chat-toggle .chat-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;border-radius:9px;padding:0 5px;background:var(--coral-deep);border:2px solid var(--ink);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;pointer-events:none}.rules-body h2{margin:0 0 10px;font-size:18px;color:var(--ink-deep)}.rules-body p{margin:0 0 10px;font-size:14px;line-height:1.5;color:var(--ink)}.explore-hint{position:absolute;top:64px;left:50%;transform:translate(-50%);background:var(--card);border:2.5px solid var(--ink);border-radius:999px;padding:5px 14px;font-size:13px;font-weight:800;color:var(--ink-deep);pointer-events:none;white-space:nowrap}.chip-strip{display:flex;gap:8px;overflow-x:auto;max-width:min(560px,92vw);padding:2px 4px 6px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.chip-strip::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;border:2.5px solid var(--ink);border-radius:12px 14px 13px 15px;padding:6px 12px;background:var(--card);color:var(--ink);cursor:pointer;min-width:64px}.chip:active{transform:scale(.95)}.chip .chip-label{font-size:11px;color:var(--ink-soft);white-space:nowrap}.chip .chip-pts{font-family:var(--font-display);font-size:18px;font-weight:800;color:var(--teal-deep)}.chip.zero .chip-pts{color:var(--ink-soft)}.sheet-toggle{position:absolute;top:58px;right:12px}.sheet{position:absolute;inset:calc(-1*env(safe-area-inset-top,0px)) calc(-1*env(safe-area-inset-right,0px)) calc(-1*env(safe-area-inset-bottom,0px)) calc(-1*env(safe-area-inset-left,0px));background:#5a4c3673;display:flex;align-items:flex-end;justify-content:center;z-index:8}.sheet-body{background:var(--card);border:3px solid var(--ink);border-bottom:none;border-radius:30px 34px 0 0/34px 30px 0 0;box-shadow:0 -8px #7a6a521f;padding:16px 20px calc(20px + env(safe-area-inset-bottom,0px));max-height:70vh;overflow-y:auto;width:min(480px,100vw);animation:sheet-up .4s var(--bounce)}@keyframes sheet-up{0%{transform:translateY(60%)}}.sheet-body:before{content:"";display:block;width:56px;height:8px;border-radius:999px;background:var(--line);margin:0 auto 14px}.sheet-body table{border-collapse:collapse;width:100%;font-size:14px}.sheet-body th,.sheet-body td{padding:5px 10px;text-align:right}.sheet-body th.current{color:var(--teal-deep)}.sheet-body td.cat{text-align:left;color:var(--ink-soft)}.sheet-body tr.total td{border-top:2px dashed var(--line);font-weight:800}@media(max-width:640px){.topbar{--topbar-pad-y: 8px;--topbar-pad-x: 10px}.banner{font-size:32px}}.quality-picker{gap:8px}.quality-picker select{width:auto;align-self:flex-start}.volume-row{display:flex;align-items:center;gap:10px}.volume-slider{width:200px;max-width:60vw}.volume-value{min-width:4ch;font-variant-numeric:tabular-nums;color:var(--ink-soft)}.bid-row{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 10px}.enemy-hud{position:absolute;top:56px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:3px;background:var(--card);border:3px solid var(--ink);border-radius:var(--wob-sm);box-shadow:var(--shadow);padding:8px 18px;pointer-events:none!important}.enemy-name{font-family:var(--font-display);font-size:20px;font-weight:800;color:var(--ink-deep)}.enemy-hp-bar{width:160px;height:10px;border-radius:5px;border:2px solid var(--ink);background:#efe6c6;overflow:hidden}.enemy-hp-fill{display:block;height:100%;background:linear-gradient(90deg,var(--coral-deep),var(--coral));transition:width .3s ease}.enemy-stats{font-size:12.5px;color:var(--ink)}.enemy-progress{font-size:11px;color:var(--ink-soft);opacity:.9}.undo-button{position:absolute;bottom:16px;right:12px;opacity:.85}.turn-chip{font-size:13px;font-weight:800;color:var(--ink);background:#fffdf2eb;border:2px solid var(--ink);padding:3px 10px;border-radius:999px;font-variant-numeric:tabular-nums;white-space:nowrap}.turn-chip.urgent{color:#fff3ee;background:var(--coral-deep);border-color:var(--midnight)}.room-sheet h2,.profile-sheet h2{margin:0 0 2px;font-size:18px;color:var(--ink-deep)}.profile-sheet .hint{margin:0 0 14px;font-size:13px;color:var(--ink-soft)}.profile-sheet .profile-row{align-items:center}.profile-sheet .profile-field{flex:1}.profile-sheet .text-input{font-size:16px}.profile-sheet .lobby-error-line{margin:10px 0 0;color:var(--coral-deep);text-shadow:none}.room-code-line{margin:0 0 14px;font-size:13px;color:var(--ink-soft)}.room-field{display:flex;flex-direction:column;gap:6px;margin:0 0 14px}.room-field-label{font-size:13px;font-weight:800;color:var(--ink)}.room-name-row{display:flex;gap:8px}.room-name-row .text-input{flex:1}.segmented{display:flex;gap:6px}.segment{flex:1;border:2.5px solid var(--ink);border-radius:12px 14px 13px 15px;background:var(--card-deep);color:var(--ink-soft);padding:7px 0;font-family:var(--font-display);font-size:13px;font-weight:600;cursor:pointer;transition:background .2s,color .2s,transform .22s var(--bounce)}.segment.active{background:var(--sun);border-color:var(--sun-deep);color:#6b4e10;font-weight:700}.segment:disabled{opacity:.5;cursor:default}.option-blurb{font-size:12px;font-weight:600;color:var(--muted)}.option-stepper .segment{flex:0 0 44px}.option-value{flex:1;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-size:15px;font-weight:700;color:var(--ink)}.room-bot-row{display:flex;align-items:center;gap:10px}.room-bot-row .segmented{flex:1}.room-bot-name{min-width:72px;font-size:13px;font-weight:700;color:var(--ink-soft)}.lobby-options{align-self:stretch}.toggle-row{display:flex;flex-direction:row;align-items:center;gap:12px;font-size:14px;font-weight:800;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-row input{position:absolute;opacity:0;pointer-events:none}.toggle-row .track{width:58px;height:32px;background:#e4d8b4;border:3px solid var(--ink);border-radius:999px;position:relative;transition:background .25s;flex:none}.toggle-row .track:after{content:"";position:absolute;top:2px;left:2px;width:22px;height:22px;background:#fff;border:2.5px solid var(--ink);border-radius:50%;transition:transform .3s var(--bounce),background .25s}.toggle-row input:checked+.track{background:var(--leaf)}.toggle-row input:checked+.track:after{transform:translate(26px);background:var(--sun)}.toggle-row input:focus-visible+.track{outline:3px dashed var(--ink);outline-offset:3px}.toggle-row input:disabled+.track{opacity:.5}.leave-row{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:6px;padding-top:12px;border-top:3px dashed var(--line)}.leave-note{flex:1 1 100%;font-size:13px;color:var(--ink-soft)}.button.ghost.danger{background:transparent;border-style:dashed;border-color:var(--coral-deep);color:var(--coral-deep);box-shadow:none}.lobby-rename{display:flex;gap:8px;align-items:center;justify-content:center;margin:0 0 6px}.lobby-rename .text-input{max-width:260px}.rename-button{margin-left:8px;vertical-align:middle;font-size:14px}.room-name-input{display:block;width:min(320px,100%);margin:0 0 10px}.ui-panel{--panel-scale: 1;position:relative;display:flex;flex-direction:column;width:fit-content}.ui-panel-chrome{position:absolute;inset:0;pointer-events:none;background:var(--card);border:max(2.5px,calc(3px * var(--panel-scale))) solid var(--ink);border-radius:var(--wob);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #3c301e38}.ui-panel-body{position:relative;flex:1;--panel-pad-y: calc(24px * var(--panel-scale));--panel-pad-x: calc(30px * var(--panel-scale));padding:var(--panel-pad-y) var(--panel-pad-x);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center}.ui-panel.v-slate .ui-panel-chrome{background:var(--card-deep)}.ui-panel.v-scrim .ui-panel-chrome{background:#fffdf2eb}.ui-panel.v-pill .ui-panel-chrome{border-radius:999px}.ui-panel.v-confetti .ui-panel-chrome{background-color:var(--card);background-image:radial-gradient(rgba(242,131,107,.55) 3px,transparent 3.5px),radial-gradient(rgba(255,214,79,.65) 3px,transparent 3.5px),radial-gradient(rgba(140,198,62,.5) 2.5px,transparent 3px),radial-gradient(rgba(70,195,172,.5) 2.5px,transparent 3px);background-size:60px 60px;background-position:6px 8px,34px 40px,48px 14px,18px 46px}.ui-bubble{position:absolute;width:fit-content;height:calc(65px * var(--panel-scale));min-width:calc(96px * var(--panel-scale));display:flex;align-items:center;justify-content:center}.ui-bubble-chrome{position:absolute;inset:0;pointer-events:none;background:var(--card);border:max(2px,calc(3px * var(--panel-scale))) solid var(--ink);border-radius:var(--wob-sm);box-shadow:0 max(2px,calc(4px * var(--panel-scale))) 0 #3c301e38}.ui-bubble-chrome:after{content:"";position:absolute;right:18%;bottom:calc(-8px * var(--panel-scale) - 2px);width:calc(16px * var(--panel-scale) + 4px);height:calc(16px * var(--panel-scale) + 4px);transform:rotate(45deg);background:var(--card);border-right:max(2px,calc(3px * var(--panel-scale))) solid var(--ink);border-bottom:max(2px,calc(3px * var(--panel-scale))) solid var(--ink);border-bottom-right-radius:5px}.ui-bubble-chrome.flip{transform:scaleX(-1)}.ui-bubble-body{position:relative;text-align:center}@keyframes seat-ring-pulse{0%,to{filter:drop-shadow(0 0 2px rgba(255,214,79,.35))}50%{filter:drop-shadow(0 0 9px rgba(255,214,79,.95))}}.seat-ring-pulse{animation:seat-ring-pulse 1.5s ease-in-out infinite}.panel-title{font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--ink-deep)}.panel-text{font-size:13px;color:var(--ink)}.ui-button{--panel-scale: 1;--button-pad-y: calc(16px * var(--panel-scale));--button-pad-x: calc(34px * var(--panel-scale));position:relative;display:inline-flex;align-items:center;justify-content:center;pointer-events:auto;cursor:pointer;background:var(--sun);border:3px solid var(--sun-deep);border-radius:999px;padding:var(--button-pad-y) var(--button-pad-x);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #dfaf2859;transition:transform .22s var(--bounce),box-shadow .22s,background .2s,filter .2s}.ui-button:hover:not(:disabled){transform:translateY(-3px) rotate(-.6deg);filter:brightness(1.04)}.ui-button:active:not(:disabled){transform:translateY(2px) scale(.95);box-shadow:0 1px #3c301e40}.ui-button:focus-visible{outline:3px dashed var(--ink);outline-offset:3px}.ui-button:disabled{opacity:.45;cursor:default}.ui-button-label{position:relative;font-family:var(--font-display);font-size:calc(17px * var(--panel-scale));font-weight:700;letter-spacing:.3px;color:#6b4e10;white-space:nowrap}.ui-button.v-green{background:var(--leaf);border-color:var(--leaf-deep);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #62a73b59}.ui-button.v-green:hover:not(:disabled){background:#98d14c}.ui-button.v-green .ui-button-label{color:#2e5216}.ui-button.v-blue{background:var(--teal);border-color:var(--teal-deep);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #2fa39159}.ui-button.v-blue .ui-button-label{color:#0e4a40}.ui-button.v-red{background:var(--coral);border-color:var(--coral-deep);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #e06a5159}.ui-button.v-red .ui-button-label{color:#6b2314}.ui-button.v-ghost{background:#fffdf2d9;border-style:dashed;border-color:var(--ink);box-shadow:none}.ui-button.v-ghost .ui-button-label{color:var(--ink)}.ui-button.v-plain{background:var(--card);border-color:var(--ink);box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #7a6a521f}.ui-button.v-plain .ui-button-label{color:var(--ink)}.ui-button.v-black{background:#111;border-color:#111;box-shadow:0 max(4px,calc(6px * var(--panel-scale))) 0 #0000004d}.ui-button.v-black .ui-button-label{color:#fff}.ui-button.v-white{background:#fff;border-color:var(--ink);box-shadow:var(--shadow)}.ui-button.v-white .ui-button-label{color:#1d1d1f}.uikit-debug .ui-panel,.uikit-debug .ui-button{outline:1px solid #ff00e5}.uikit-debug .ui-button-label{background:#00e5ff2e;outline:1px dashed #00e5ff}.uikit-debug .ui-panel-body{background:#00e5ff2e;background-clip:content-box}@media(prefers-reduced-motion:reduce){.tab-page,.lobby,.banner,.toast,.choice-prompt,.inspect-card,.sheet-body,.active-badge.your-turn,.seat-ring-pulse,.greeting:before,.greeting:after,.pass-overlay:before,.pass-overlay:after,.empty .art,.panel-scroll .empty-note:before,.spinner i{animation:none}.button,.ui-button,.active-card,.game-tile,.filter-chip,.dock-item,.segment,.text-input{transition-duration:1ms}}
