:root{color:#232428;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:linear-gradient(#f9d7c0 0%,#f4f1ea 48%,#f7e4d2 100%);font-family:Nunito,Avenir Next,Arial Rounded MT Bold,Helvetica Neue,sans-serif;font-weight:600;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100svh}body,h1,h2,h3,p{margin:0}h1,h2,h3{color:#232428;font-family:Fredoka,"Baloo 2",Nunito,Avenir Next,Arial Rounded MT Bold,sans-serif}h1{margin-top:14px;font-size:clamp(2.4rem,8vw,3.6rem);line-height:.95}h2{font-size:1.2rem}h3{font-size:1.05rem}.app-shell{width:min(100%, var(--portrait-max-width));box-sizing:border-box;flex-direction:column;gap:18px;min-height:100svh;margin:0 auto;padding:24px 16px 40px;display:flex}.main-app{display:flex!important}.main-app.hidden-for-rotate{display:none!important}.match-screen-shell{padding-top:10px}.hero-card,.panel{border:4px solid var(--color-outline);background:#fff7ef;border-radius:28px;box-shadow:0 10px #2f344026}.hero-card{text-align:left;padding:24px 20px}.status-pill{color:var(--color-charcoal);text-transform:uppercase;letter-spacing:.06em;background:#f5c13d33;border-radius:999px;align-items:center;padding:6px 12px;font-size:.82rem;font-weight:800;display:inline-flex}.hero-copy{color:#232428cc;max-width:30rem;margin-top:10px}.home-hero,.match-hero{overflow:hidden}.compact-home-hero{padding:12px 16px}.compact-home-hero h1{margin-top:0;font-size:clamp(1.9rem,7.2vw,2.6rem);line-height:1}.hero-badges{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.mode-chip{border:3px solid var(--color-outline);background:#fff;border-radius:999px;align-items:center;padding:7px 12px;font-size:.9rem;font-weight:800;display:inline-flex}.setup-grid{gap:14px;display:grid}.settings-list{gap:10px;display:grid}.compact-settings{margin-top:16px}.setting-toggle{appearance:none;border:4px solid var(--color-outline);width:100%;color:var(--color-charcoal);font:inherit;cursor:pointer;background:#fff;border-radius:18px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.setting-toggle.enabled{background:color-mix(in srgb, var(--color-p2) 22%, white)}.settings-note{color:#232428ad;margin-top:12px}.turn-banner{background:#fff;border-radius:18px;align-items:center;gap:10px;margin-bottom:16px;padding:12px 14px;display:flex}.turn-chip{border:3px solid var(--color-outline);border-radius:999px;justify-content:center;align-items:center;min-width:56px;padding:8px 12px;font-weight:900;display:inline-flex}.turn-chip.p1{background:color-mix(in srgb, var(--color-p1) 28%, white)}.turn-chip.p2{background:color-mix(in srgb, var(--color-p2) 34%, white)}.turn-copy{font-weight:800}.dice-panel{background:#fff;border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding:14px;display:flex}.dice-label{text-transform:uppercase;letter-spacing:.05em;color:#232428a6;font-size:.78rem}.dice-value{margin-top:4px;font-size:1.05rem;display:block}.dice-face{box-sizing:border-box;background:0 0;border-radius:20px;width:72px;height:72px;display:block}.dice-face.idle{opacity:.75}.dice-face img{object-fit:contain;width:100%;height:100%;display:block}.dice-star{width:100%;height:100%;display:block}.dice-placeholder{box-sizing:border-box;border:4px solid var(--color-outline);background:#fff8ea;border-radius:20px;width:100%;height:100%;display:block}.info-grid{gap:14px;display:grid}.mode-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:20px;display:grid}.mode-button,.primary-button,.secondary-button{appearance:none;border:4px solid var(--color-outline);font:inherit;color:var(--color-charcoal);cursor:pointer;background:#fff;border-radius:18px;padding:12px 14px;font-weight:800;line-height:1.15;transition:transform .12s,box-shadow .12s,opacity .12s}.mode-button{text-align:center;white-space:nowrap;place-items:center;min-height:56px;padding-inline:10px;display:grid}.mode-button:hover,.primary-button:hover,.secondary-button:hover{transform:translateY(-1px)}.mode-button.active{box-shadow:0 8px #2f344024}.mode-button.p1.active{background:color-mix(in srgb, var(--color-p1) 20%, white)}.mode-button.p2.active{background:color-mix(in srgb, var(--color-p2) 35%, white)}.mode-button.private.active{background:#daf0ca}.mode-button.tournament.active{background:#fbe9b9}.mode-description{color:#232428b8;text-align:center;margin-top:12px}.start-button{margin-top:16px}.private-actions{gap:10px;display:grid}.private-actions .start-button{margin-top:16px}.ready-button:not(:disabled){background:#7ccb43}.form-error{color:#b3261e;margin-top:12px;font-weight:800}.dialog-backdrop{z-index:40;background:#2324286b;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.dialog-card{width:min(100%,360px)}.field-label{gap:8px;margin-top:14px;font-weight:900;display:grid}.field-label input{box-sizing:border-box;border:4px solid var(--color-outline);width:100%;color:var(--color-charcoal);font:inherit;background:#fff;border-radius:16px;padding:12px 14px;font-weight:800}.dialog-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:18px;display:grid}.lobby-list{gap:10px;margin-top:14px;display:grid}.lobby-panel-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.lobby-panel-header h3{margin-bottom:0}.lobby-name-edit-button{appearance:none;color:#23242894;cursor:pointer;background:#fff8ea;border:3px solid #2f344038;border-radius:999px;flex:none;place-items:center;width:30px;height:30px;padding:0;transition:transform .12s,color .12s,background-color .12s,border-color .12s;display:grid}.lobby-name-edit-button .pencil-icon{width:16px;height:16px}.lobby-name-edit-button:hover{color:var(--color-charcoal);background:#fff;border-color:#2f344070;transform:translateY(-1px)}.lobby-player,.lobby-empty{border:4px solid var(--color-outline);background:#fff;border-radius:18px;align-items:center;gap:10px;padding:12px;display:grid}.lobby-player{grid-template-columns:42px minmax(0,1fr);padding-top:14px;position:relative}.lobby-player-name{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.lobby-player-name strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.lobby-empty{color:#232428ad;font-weight:800}.lobby-player-border-tags{align-items:center;gap:6px;display:flex;position:absolute;top:0;right:12px;transform:translateY(-50%)}.lobby-player-border-tag{color:#232428c2;text-transform:uppercase;letter-spacing:.04em;background:#fff;padding:0 6px;font-size:.66rem;font-weight:900;line-height:1}.lobby-player-border-tag.you-label{color:#2b6521}.ruleset-panel{border:4px solid var(--color-outline);background:#fff;border-radius:18px;gap:10px;margin-top:16px;padding:12px;display:grid}.ruleset-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.ruleset-header span{color:#232428a8;text-transform:uppercase;font-size:.82rem;font-weight:900}.ruleset-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.ruleset-option{appearance:none;border:3px solid var(--color-outline);min-height:86px;color:var(--color-charcoal);font:inherit;text-align:left;cursor:pointer;background:#fff8ea;border-radius:14px;gap:4px;padding:10px;display:grid}.ruleset-option span{color:#232428a8;font-size:.82rem;font-weight:800;line-height:1.2}.ruleset-option.active{background:color-mix(in srgb, var(--color-p2) 30%, white);box-shadow:inset 0 0 0 3px #ffffffb3}.ruleset-option:disabled{cursor:default;opacity:.78}.series-panel{margin-top:12px}.series-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.series-option{appearance:none;border:3px solid var(--color-outline);min-height:44px;color:var(--color-charcoal);font:inherit;cursor:pointer;background:#fff8ea;border-radius:14px;padding:8px;font-size:.88rem;font-weight:1000}.series-option.active{background:color-mix(in srgb, var(--color-p1) 24%, white);box-shadow:inset 0 0 0 3px #ffffffb8}.series-option:disabled{cursor:default;opacity:.78}.series-score{gap:6px;margin:10px 0 12px;font-weight:900;display:grid}.series-score-row{justify-content:space-between;gap:16px;display:flex}.tournament-section-title{color:#232428a8;text-transform:uppercase;margin-top:18px;font-size:.82rem;font-weight:900}.tournament-list.quiet{opacity:.86}.participation-toggle{margin-top:16px}.tournament-tree-panel{gap:16px;display:grid}.countdown-banner,.champion-banner{border:4px solid var(--color-outline);text-align:center;background:#fff;border-radius:22px;gap:6px;padding:18px;display:grid}.countdown-banner span,.champion-banner span{color:#232428a8;text-transform:uppercase;font-size:.82rem;font-weight:900}.countdown-banner strong{font-size:3.2rem;line-height:1}.countdown-banner.quiet strong,.champion-banner strong{font-size:1.7rem}.champion-banner{isolation:isolate;background:#fbe9b9;position:relative;overflow:hidden}.champion-banner.celebration{animation:.52s cubic-bezier(.2,.9,.2,1.18) champion-pop}.confetti-burst{z-index:0;pointer-events:none;position:absolute;inset:0}.champion-banner>span,.champion-banner>strong{z-index:1;position:relative}.confetti-burst i{opacity:0;background:#f45b5b;border-radius:3px;width:8px;height:13px;animation:1.25s ease-out both confetti-fall;position:absolute;top:12%;left:50%;transform:translate(-50%,-50%)rotate(0)}.confetti-burst i:nth-child(3n){background:#35b85a}.confetti-burst i:nth-child(3n+1){background:#2bb0d8}.confetti-burst i:nth-child(4n){background:#f5c13d}.confetti-burst i:first-child{--x:-128px;--y:84px;--r:120deg;animation-delay:0s}.confetti-burst i:nth-child(2){--x:-96px;--y:124px;--r:240deg;animation-delay:35ms}.confetti-burst i:nth-child(3){--x:-62px;--y:74px;--r:80deg;animation-delay:20ms}.confetti-burst i:nth-child(4){--x:-32px;--y:132px;--r:310deg;animation-delay:70ms}.confetti-burst i:nth-child(5){--x:0px;--y:92px;--r:170deg;animation-delay:10ms}.confetti-burst i:nth-child(6){--x:34px;--y:128px;--r:260deg;animation-delay:55ms}.confetti-burst i:nth-child(7){--x:62px;--y:76px;--r:110deg;animation-delay:25ms}.confetti-burst i:nth-child(8){--x:96px;--y:118px;--r:330deg;animation-delay:80ms}.confetti-burst i:nth-child(9){--x:128px;--y:86px;--r:210deg;animation-delay:45ms}.confetti-burst i:nth-child(10){--x:-146px;--y:148px;--r:400deg;animation-delay:.11s}.confetti-burst i:nth-child(11){--x:-110px;--y:68px;--r:160deg;animation-delay:95ms}.confetti-burst i:nth-child(12){--x:-78px;--y:152px;--r:280deg;animation-delay:.125s}.confetti-burst i:nth-child(13){--x:76px;--y:150px;--r:360deg;animation-delay:.115s}.confetti-burst i:nth-child(14){--x:112px;--y:64px;--r:190deg;animation-delay:90ms}.confetti-burst i:nth-child(15){--x:148px;--y:146px;--r:420deg;animation-delay:.12s}.confetti-burst i:nth-child(16){--x:-18px;--y:62px;--r:130deg;animation-delay:.145s}.confetti-burst i:nth-child(17){--x:18px;--y:64px;--r:300deg;animation-delay:.15s}.confetti-burst i:nth-child(18){--x:0px;--y:154px;--r:460deg;animation-delay:.165s}.bracket-scroll{scrollbar-color:#2f344061 transparent;padding-bottom:8px;overflow-x:auto}.bracket-rounds{grid-auto-columns:minmax(250px,1fr);grid-auto-flow:column;gap:14px;min-width:max-content;display:grid}.bracket-round{align-content:start;gap:12px;display:grid}.bracket-round h3{margin:0}.bracket-match{border:4px solid var(--color-outline);background:#fff;border-radius:18px;gap:10px;padding:14px;display:grid}.bracket-match-header span{color:#2324289e;text-transform:uppercase;font-size:.78rem;font-weight:900;display:block}.bracket-match-header p{color:#232428b3;margin:0;font-weight:800}.bracket-match-header{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;display:grid}.bracket-match-header p{grid-column:1/-1}.bracket-match-timer{border:2px solid var(--color-outline);background:#fff;border-radius:999px;padding:4px 8px;font-size:.9rem}.bracket-fixture{gap:8px;display:grid}.bracket-player{border:3px solid var(--color-outline);background:#fff8ea;border-radius:14px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;display:grid}.bracket-player strong{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:1.02rem;overflow:hidden}.bracket-player-markers{justify-content:flex-end;align-items:center;gap:8px;display:inline-flex}.bracket-trophy{font-size:1.35rem;line-height:1}.bracket-score{border:2px solid var(--color-outline);white-space:nowrap;background:#fff;border-radius:999px;padding:4px 8px;font-size:.78rem;font-weight:1000}.bracket-player.winner{background:#d0ecbb}.bracket-match.local-fixture{background:color-mix(in srgb, var(--color-p2) 22%, white);box-shadow:0 8px #2f344024}.bracket-match.local-fixture .bracket-match-header span{color:var(--color-charcoal)}@keyframes champion-pop{0%{transform:scale(.96)}to{transform:scale(1)}}@keyframes confetti-fall{0%{opacity:0;transform:translate(-50%,-50%)rotate(0)scale(.65)}12%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--x)), calc(-50% + var(--y))) rotate(var(--r)) scale(1)}}.info-grid{grid-template-columns:1fr}.match-topbar{justify-content:space-between;align-items:center;gap:14px;min-height:42px;display:flex;position:relative}.match-mode-pill,.icon-text-button{border:3px solid var(--color-outline);color:var(--color-charcoal);background:#fff7ef;border-radius:999px;font-weight:900;box-shadow:0 5px #2f34401f}.match-mode-pill{text-align:center;min-width:0;padding:8px 12px}.icon-text-button{appearance:none;font:inherit;cursor:pointer;padding:8px 12px}.invite-link-button{text-align:center;white-space:nowrap;background:#fff8ea;width:min(62vw,220px);min-height:42px;line-height:1}.invite-link-button.needs-attention{animation:1.5s ease-in-out infinite invite-link-attention}.pencil-icon{fill:currentColor;width:18px;height:18px;display:block}.online-match-topbar{justify-content:flex-start}.topbar-timer{border:3px solid var(--color-outline);min-width:74px;color:var(--color-charcoal);text-align:center;white-space:nowrap;background:#fff7ef;border-radius:999px;padding:8px 14px;font-weight:1000;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 5px #2f34401f}.topbar-timer.urgent,.topbar-timer.expired{background:color-mix(in srgb, var(--color-p1) 18%, white);color:#b3261e}.topbar-timer.urgent{animation:.95s ease-in-out infinite alternate timer-urgent-pulse}.topbar-timer.attention{animation:.62s ease-in-out timer-threshold-wiggle}.topbar-timer.urgent.attention{animation:.62s ease-in-out timer-threshold-wiggle,.95s ease-in-out .62s infinite alternate timer-urgent-pulse}.match-title{margin-top:12px;font-size:clamp(2rem,5vw,2.8rem)}.board-panel{padding:8px}.timed-match-bar{border:4px solid var(--color-outline);background:#fff;border-radius:18px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin:0 0 8px;padding:10px 12px;display:grid}.timed-match-bar span{color:#232428a8;text-transform:uppercase;font-size:.82rem;font-weight:900}.timed-match-bar strong{font-size:1.35rem}.board-stage{background:linear-gradient(#f5c13d29,#f45b5b1a),#fff7ef;border-radius:22px;padding:8px}.player-hud-row{min-height:72px;display:flex}.player-hud-row.top{justify-content:flex-end;align-items:flex-start;padding:0 0 10px}.player-hud-row.bottom{justify-content:flex-start;align-items:flex-end;padding:10px 0 0}.player-hud{--hud-dice-center-offset:41px;--hud-board-edge-offset:6px;width:calc(50% + var(--hud-dice-center-offset) + var(--hud-board-edge-offset));border:4px solid var(--color-outline);opacity:.82;background:#fff;border-radius:20px;grid-template-columns:42px minmax(0,1fr) 58px;align-items:center;gap:8px;padding:8px;display:grid;box-shadow:0 6px #2f344024}.player-hud-row.top .player-hud{margin-right:calc(var(--hud-board-edge-offset) * -1);grid-template-columns:58px minmax(0,1fr) 42px}.player-hud-row.bottom .player-hud{margin-left:calc(var(--hud-board-edge-offset) * -1)}.player-hud-row.top .hud-die{grid-area:1/1}.player-hud-row.top .player-meta{text-align:right;grid-area:1/2}.player-hud-row.top .player-avatar{grid-area:1/3}.player-hud.active{opacity:1;transform:translateY(-1px)}.player-hud.p1.active{background:color-mix(in srgb, var(--color-p1) 18%, white)}.player-hud.p2.active{background:color-mix(in srgb, var(--color-p2) 28%, white)}.player-avatar{border:3px solid var(--color-outline);background:#fff7ef;border-radius:999px;place-items:center;width:42px;height:42px;font-weight:1000;display:grid}.player-meta{min-width:0}.player-meta strong{text-overflow:ellipsis;white-space:nowrap;font-size:1rem;line-height:1.1;display:block;overflow:hidden}.player-score{color:#232428ad;margin-top:3px;font-size:.82rem;font-weight:900;display:block}.hud-die{appearance:none;isolation:isolate;background:0 0;border:0;border-radius:18px;place-items:center;width:58px;height:58px;padding:3px;display:grid;position:relative}.hud-die.timer-active:before{content:"";z-index:0;pointer-events:none;border-radius:inherit;background:conic-gradient(from 0deg, #35b85a1f var(--timer-angle), #35b85a 0);position:absolute;inset:0}.hud-die.rollable{cursor:pointer;animation:.9s ease-in-out infinite alternate roll-ready}.hud-die:disabled{cursor:default}.hud-die .dice-face{z-index:1;background:#fff8ea;border-radius:14px;place-items:center;width:52px;height:52px;display:grid;position:relative;overflow:hidden}.hud-die .dice-face img{object-fit:contain;width:48px;height:48px}.hud-die .dice-star{width:52px;height:52px}.hud-die .dice-placeholder{border-width:3px;border-radius:13px;width:48px;height:48px}.hud-die .dice-face.rolling{perspective:190px;background:0 0;place-items:center;display:grid;overflow:visible}.hud-die .dice-face.rolling-card{perspective:180px;background:0 0;place-items:center;display:grid;overflow:visible}.dice-roll-card{--card-size:48px;--card-depth:8px;--face-rotation:0deg;width:var(--card-size);height:var(--card-size);transform-origin:50%;transform-style:preserve-3d;animation:.65s cubic-bezier(.18,.76,.16,1) both dice-card-tumble;position:relative}.dice-card-front,.dice-card-back,.dice-card-edge{box-sizing:border-box;backface-visibility:hidden;display:block;position:absolute}.dice-card-front,.dice-card-back{border:2px solid var(--color-outline);border-radius:13px;inset:0;overflow:hidden}.dice-card-front{transform:translateZ(var(--card-depth));background:#fff8ea;box-shadow:inset 0 -3px #2f34401f,inset 0 2px #ffffffb3}.dice-card-back{transform:translateZ(calc(var(--card-depth) * -1)) rotateY(180deg);background:#e9d8b6}.dice-card-edge{border:2px solid var(--color-outline);background:#d9c49f;box-shadow:inset 0 2px #ffffff47}.dice-card-edge.edge-top,.dice-card-edge.edge-bottom{width:calc(var(--card-size) - 14px);height:calc(var(--card-depth) * 2);left:7px}.dice-card-edge.edge-top{top:calc(var(--card-depth) * -1);transform:rotateX(90deg) translateZ(var(--card-depth))}.dice-card-edge.edge-bottom{bottom:calc(var(--card-depth) * -1);transform:rotateX(-90deg) translateZ(var(--card-depth))}.dice-card-edge.edge-left,.dice-card-edge.edge-right{width:calc(var(--card-depth) * 2);height:calc(var(--card-size) - 14px);top:7px}.dice-card-edge.edge-left{left:calc(var(--card-depth) * -1);transform:rotateY(-90deg) translateZ(var(--card-depth))}.dice-card-edge.edge-right{right:calc(var(--card-depth) * -1);transform:rotateY(90deg) translateZ(var(--card-depth))}.dice-card-front img{object-fit:contain;width:100%;height:100%;transform:rotate(var(--face-rotation))}.dice-roll-card.frame-1{--face-rotation:90deg}.dice-roll-card.frame-2{--face-rotation:180deg}.dice-roll-card.frame-3{--face-rotation:-90deg}.dice-roll-card.frame-4{--face-rotation:45deg}.dice-roll-card.frame-5{--face-rotation:-45deg}.dice-cube{--dice-size:46px;--dice-half:23px;width:var(--dice-size);height:var(--dice-size);transform-style:preserve-3d;transform-origin:50%;animation:.65s cubic-bezier(.2,.72,.18,1) both dice-cube-roll;position:relative}.dice-cube-face{box-sizing:border-box;border:2px solid var(--color-outline);backface-visibility:hidden;background:#fff8ea;border-radius:12px;place-items:center;display:grid;position:absolute;inset:0;overflow:hidden;box-shadow:inset 0 -3px #2f344024,inset 0 2px #ffffffa3}.dice-cube-face img{object-fit:contain;width:44px;height:44px}.dice-cube-face.face-1{transform:rotateY(0deg) translateZ(var(--dice-half))}.dice-cube-face.face-2{transform:rotateY(90deg) translateZ(var(--dice-half))}.dice-cube-face.face-2 img{transform:rotate(90deg)}.dice-cube-face.face-3{transform:rotateX(90deg) translateZ(var(--dice-half))}.dice-cube-face.face-3 img{transform:rotate(-90deg)}.dice-cube-face.face-4{transform:rotateX(-90deg) translateZ(var(--dice-half))}.dice-cube-face.face-4 img{transform:rotate(180deg)}.dice-cube-face.face-5{transform:rotateY(-90deg) translateZ(var(--dice-half))}.dice-cube-face.face-5 img{transform:rotate(-90deg)}.dice-cube-face.face-6{transform:rotateY(180deg) translateZ(var(--dice-half))}.dice-cube-face.face-6 img{transform:rotate(180deg)}@keyframes roll-ready{0%{transform:translateY(0)}to{transform:translateY(-3px)}}@keyframes dice-cube-roll{0%{transform:translate(-2px)rotateX(18deg)rotateY(-22deg)rotate(-8deg)}18%{transform:translate3d(3px,-5px,6px)rotateX(146deg)rotateY(98deg)rotate(32deg)}36%{transform:translate(-3px,2px)rotateX(274deg)rotateY(204deg)rotate(-22deg)}56%{transform:translate3d(2px,-4px,5px)rotateX(408deg)rotateY(316deg)rotate(18deg)}76%{transform:translate(-2px,1px)rotateX(538deg)rotateY(438deg)rotate(-10deg)}to{transform:translate(0,0)rotateX(640deg)rotateY(540deg)rotate(0)}}@keyframes dice-card-tumble{0%{transform:translate(-2px)rotateX(0)rotateY(0)rotate(-7deg)scale(.94)}16%{transform:translate3d(3px,-5px,8px)rotateX(72deg)rotateY(36deg)rotate(24deg)scale(.9)}34%{transform:translate(-4px,2px)rotateX(142deg)rotateY(112deg)rotate(-32deg)scale(.92)}52%{transform:translate3d(3px,-4px,7px)rotateX(232deg)rotateY(178deg)rotate(18deg)scale(.88)}72%{transform:translate(-2px,1px)rotateX(318deg)rotateY(266deg)rotate(-12deg)scale(.93)}to{transform:translate(0,0)rotateX(360deg)rotateY(360deg)rotate(0)scale(1)}}@media (prefers-reduced-motion:reduce){.dice-roll-card,.dice-cube{animation:none}.dice-roll-card{transform:scale(.94)}.dice-cube{transform:rotateX(18deg)rotateY(-22deg)}}@keyframes timer-urgent-pulse{0%{box-shadow:0 5px #2f34401f,0 0 #f45b5b2e}to{box-shadow:0 5px #2f34401f,0 0 0 7px #f45b5b14}}@keyframes timer-threshold-wiggle{0%{transform:translate(-50%)rotate(0)}16%{transform:translate(-50%)rotate(-7deg)}32%{transform:translate(-50%)rotate(7deg)}48%{transform:translate(-50%)rotate(-5deg)}64%{transform:translate(-50%)rotate(5deg)}82%{transform:translate(-50%)rotate(-2deg)}to{transform:translate(-50%)rotate(0)}}.rotate-card{text-align:center}.rotate-overlay{z-index:50;background:linear-gradient(#f9d7c0 0%,#f4f1ea 48%,#f7e4d2 100%);justify-content:center;align-items:center;padding:24px 16px 40px;display:none;position:fixed;inset:0}.rotate-overlay .rotate-card{width:min(100%, var(--portrait-max-width))}.rotate-icon{place-items:center;margin-top:24px;display:grid}.rotate-phone{border:5px solid var(--color-outline);background:#fff;border-radius:22px;width:72px;height:116px;position:relative;transform:rotate(-90deg);box-shadow:0 10px #2f34401f}.rotate-phone:before{content:"";background:color-mix(in srgb, var(--color-p2) 28%, white);border-radius:14px;position:absolute;inset:10px}.panel-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px;display:flex}.subtle-copy{color:#232428b8}.board-frame{aspect-ratio:1;background:#f4f1ea;width:100%;position:relative}.board-overlay-shell{position:relative}.board-canvas{z-index:1;outline:6px solid var(--color-outline);outline-offset:0;background:0 0;border:0;border-radius:0;width:100%;height:100%;position:relative;overflow:hidden}.board-static-preview{z-index:0;object-fit:contain;outline:6px solid var(--color-outline);outline-offset:0;width:100%;height:100%;display:block;position:absolute;inset:0}.board-frame.loading .board-canvas,.board-frame.ready .board-static-preview{opacity:0}.board-canvas canvas{display:block;width:100%!important;height:100%!important}.board-token-hit{z-index:2;cursor:pointer;z-index:2;background:0 0;border:none;border-radius:999px;width:42px;height:42px;margin-top:-21px;margin-left:-21px;position:absolute}.board-base-cover{z-index:2;pointer-events:none;opacity:.92;border-radius:22%;position:absolute;transform:translate(-50%,-50%)}.board-base-score{z-index:3;aspect-ratio:1;pointer-events:none;width:clamp(62px,15%,92px);color:var(--color-outline);text-align:center;place-items:center;display:grid;position:absolute;transform:translate(-50%,-50%)}.board-base-score strong{font-size:clamp(1.8rem,6.8vw,3rem);font-weight:1000;line-height:.88;display:block}.board-base-score span{color:#2324289e;text-transform:uppercase;margin-top:4px;font-size:clamp(.62rem,2.1vw,.88rem);font-weight:1000;line-height:1;display:block}.board-base-score.p1 strong{color:color-mix(in srgb, var(--color-p1) 74%, #6f1111)}.board-base-score.p2 strong{color:color-mix(in srgb, var(--color-p2) 72%, #735800)}.board-base-score.p3 strong{color:color-mix(in srgb, var(--color-p3) 76%, #074d74)}.board-base-score.p4 strong{color:color-mix(in srgb, var(--color-p4) 78%, #255b10)}.board-winner-overlay{z-index:4;background:#fff7ef47;place-items:center;padding:20px;display:grid;position:absolute;inset:0}.panel{padding:18px}.panel h3{margin-bottom:8px}.panel-with-border-title{padding-top:30px;position:relative}.panel-border-title{border:3px solid var(--color-outline);isolation:isolate;background:#fff8ea;border-radius:999px;margin:0;padding:5px 13px 6px;line-height:1.04;position:absolute;top:0;left:16px;transform:translateY(-52%);box-shadow:0 4px #2f34401f,inset 0 0 0 2px #ffffff8c}.choose-mode-panel .mode-actions{margin-top:6px}.settings-panel{margin-top:10px}@keyframes invite-link-attention{0%,to{transform:translateY(0);box-shadow:0 5px #2f34401f}50%{background:#fcecc5;transform:translateY(-2px);box-shadow:0 8px #2f344029}}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;display:grid}.stats-grid div{background:#fff;border-radius:18px;padding:12px}.stats-grid dt{text-transform:uppercase;letter-spacing:.05em;color:#232428a6;margin-bottom:6px;font-size:.78rem}.stats-grid dd{color:var(--color-charcoal);margin:0;font-size:1.1rem;font-weight:800}.action-row,.compact-actions{margin-top:16px}.primary-button{background:var(--color-p1);width:100%}.secondary-button{background:var(--color-cream)}.primary-button:disabled,.secondary-button:disabled{opacity:.5;cursor:not-allowed;transform:none}.status-box,.event-card{background:#fff;border-radius:18px;margin-top:16px;padding:14px}.winner-card{border:4px solid var(--color-outline);background:color-mix(in srgb, var(--color-p2) 24%, white);border-radius:20px;margin-top:16px;padding:16px}.board-winner-card{width:min(88%,300px);margin-top:0;box-shadow:0 14px #2f34402e}.winner-card p{margin-top:6px}.winner-actions{margin-top:14px}.rules-card{background:#fff;border-radius:18px;margin-top:16px;padding:14px}.small-list{font-size:.95rem}.checklist{margin:0;padding-left:1.1rem}.checklist li+li{margin-top:10px}.checklist.compact{margin-top:16px}@media (width<=640px){.match-mode-pill{max-width:116px;line-height:1.1}.invite-link-button{width:min(64vw,220px)}.panel-header{flex-direction:column}.mode-actions,.stats-grid{grid-template-columns:1fr}.match-screen-shell{gap:10px;width:100%;padding:8px 0 28px}.match-screen-shell .match-topbar,.match-screen-shell .info-grid>:not(.board-panel){margin-inline:8px}.match-screen-shell .info-grid{gap:10px}.board-panel{box-shadow:none;background:0 0;border:0;border-radius:0;padding:0}.board-stage{background:0 0;border-radius:0;padding:0}.board-frame,.board-canvas{border-radius:0}.board-frame{width:calc(100% - 16px);margin-inline:auto}.board-canvas{outline-width:6px}.pass-and-play-match .player-hud-row.top .player-meta,.pass-and-play-match .player-hud-row.top .player-avatar,.pass-and-play-match .player-hud-row.top .dice-face{transform:rotate(180deg)}.pass-and-play-match .player-hud-row.top .player-meta{text-align:left}.turn-banner,.dice-panel{flex-direction:column;align-items:flex-start}}.rotate-overlay.active{display:flex}
