@font-face{font-family:Club;src:url('assets/fonts/bricolage-grotesque.woff2') format('woff2');font-weight:400 800;font-display:swap}
@font-face{font-family:DM;src:url('assets/fonts/dm-sans.woff2') format('woff2');font-weight:400 700;font-display:swap}
:root{--bg:#11261e;--surface:#1a3027;--surface-2:#243d31;--surface-3:#314c3c;--text:#f4f3e9;--muted:#a1b0a4;--green:#dcfa75;--green-strong:#cce866;--red:#ffb29c;--gold:#dcfa75;--border:#f0f4dc1c;--shadow:none;font-family:DM,Arial,sans-serif;font-synthesis:none}
html,body{background:var(--bg);color:var(--text)}body{background-image:radial-gradient(ellipse at 15% 85%,#304c312b,transparent 58%)}button,input{font-family:inherit}button,a,input{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #8da1ff}button{font-weight:600}button:disabled{cursor:not-allowed;opacity:.35}h1,h2,h3,strong,.turn-score{font-family:Club,Arial,sans-serif}a{color:inherit;text-decoration:none}[hidden]{display:none!important}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.ui-icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}.app-shell{max-width:1480px;width:100%;padding:18px 38px 26px;display:grid;grid-template-rows:52px minmax(0,1fr);gap:22px}.view{min-height:0}.card{box-shadow:none;backdrop-filter:none;border-radius:22px}.eyebrow{font-family:DM,Arial,sans-serif;font-size:9px;letter-spacing:.13em;font-weight:600}.club-nav{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding-bottom:17px;gap:16px;min-width:0}.club-home{display:flex;align-items:center;gap:9px;white-space:nowrap}.nav-brand{width:22px;height:26px}.club-home>span:first-of-type{font-family:Club,Arial,sans-serif;font-size:21px;font-weight:700;letter-spacing:-.7px}.brand-dot{color:var(--green)}.nav-divider{height:15px;width:1px;background:#87998a55;margin-inline:12px}.nav-project{font-size:8px;font-weight:600;letter-spacing:.16em;color:#bdc9b7}.club-nav-actions{display:flex;gap:23px;align-items:center}.connection-status{display:flex;gap:7px;align-items:center;font-size:8px;letter-spacing:.08em;font-weight:600;color:#c7d5be}.connection-status>span:first-child{width:5px;height:5px;display:block;border-radius:50%;background:var(--green)}.connection-status.is-offline>span:first-child{background:#edb68e}.install-button{display:flex;align-items:center;gap:8px;border:1px solid #9cae9147;border-radius:50px;color:var(--text);background:transparent;padding:8px 13px;min-height:35px;font-size:10px;cursor:pointer}.install-button:hover{background:var(--green);color:var(--bg)}.install-button .ui-icon{width:13px;height:13px}
/* An evening at the club */
.setup-view{width:100%;max-width:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(380px,.93fr);grid-template-rows:minmax(0,1fr);gap:40px}.setup-brand{position:relative;display:block;padding:23px 10px 32px;overflow:hidden;min-height:0}.club-edition{display:flex;align-items:center;gap:10px;color:#c0cfb6;font-size:9px}.little-star{font-size:21px;color:var(--green)}.setup-brand h1{font-family:Club,Arial,sans-serif;font-size:clamp(84px,9.5vw,142px);font-weight:700;line-height:.83;letter-spacing:-.065em;margin:27px 0 24px;position:relative;z-index:2}.setup-brand h1>span{color:var(--green)}.subcopy{font-size:15px;color:#b2c0ab;line-height:1.65;position:relative;z-index:2}.setup-art{position:absolute;right:-7%;bottom:-21%;width:83%;aspect-ratio:1;isolation:isolate;pointer-events:none}.setup-art>img{width:100%;height:auto;transform:rotate(-23deg);filter:drop-shadow(20px 25px 20px #0005);animation:board-entrance 1.2s ease-out both;opacity:.9}.art-ring{position:absolute;inset:-10%;border:1px solid #adc58b32;border-radius:50%;transform:scaleY(.83) rotate(-30deg)}.art-label{position:absolute;right:9%;top:-4%;width:94px;height:94px;background:var(--green);color:var(--bg);border-radius:50%;display:grid;place-content:center;transform:rotate(15deg);font-size:10px;font-weight:700;letter-spacing:.02em;line-height:1.5;text-align:center;z-index:3}.art-cross{position:absolute;left:-6%;top:25%;font-size:27px;font-weight:300;color:#9fbb83}.setup-caption{position:absolute;bottom:8px;left:10px;right:10px;display:flex;justify-content:space-between;font-size:7px;letter-spacing:.1em;color:#b8c5ac;z-index:3}.setup-form{--text:#24332a;--muted:#71806c;--border:#24332a20;--surface-2:#e9ecde;--surface-3:#dee5cb;--green:#466031;--green-strong:#cce866;background:#f1f2e7;color:var(--text);padding:30px;border-radius:26px;gap:24px;grid-template-rows:auto auto minmax(120px,1fr) auto;overflow:auto;scrollbar-width:thin;scrollbar-color:#acb599 transparent}.setup-form-intro{position:relative}.setup-form-intro .eyebrow{font-size:8px;color:#6d7a59}.setup-form-intro h2{font-size:clamp(26px,2.7vw,37px);font-weight:600;letter-spacing:-.055em;margin:7px 0 0;line-height:1.1;padding-right:20px}.form-spark{position:absolute;right:0;top:0;color:#698447;font-size:28px}.mode-picker{border:0;background:none;padding:0;border-radius:0;overflow:visible}.mode-picker legend{position:static;width:auto;height:auto;clip:auto;overflow:visible;font-size:11px;font-weight:600;padding:0;margin-bottom:12px;color:#394833}.mode-picker legend>span,.section-row h2>span{display:inline-flex;width:19px;height:19px;border:1px solid #aab39b;border-radius:50%;align-items:center;justify-content:center;font-size:7px;margin-right:7px;color:#778565;vertical-align:middle}.segmented{gap:10px}.mode-button{position:relative;text-align:left;background:#e5e9d9;border:1px solid #d6ddc6;padding:15px 18px;border-radius:13px;min-height:90px;transition:background .2s,transform .2s}.mode-button:hover{transform:translateY(-2px)}.mode-button strong{font-size:42px;font-weight:600;letter-spacing:-.06em;line-height:1;color:#31462b}.mode-button span{font-size:9px;font-weight:400;color:#617052;margin-top:5px}.mode-button i{position:absolute;right:15px;top:13px;font-style:normal;font-size:18px;color:#7b8c67}.mode-button.is-selected{background:#dafa74;border-color:#bdce72;color:#24332a}.mode-button.is-selected strong,.mode-button.is-selected i{color:#24332a}.players-setup{border:0;border-top:1px solid #cfd6c2;border-radius:0;padding:20px 0 0;background:transparent;grid-template-rows:auto minmax(0,1fr);gap:12px}.section-row h2{font-family:DM,Arial,sans-serif;font-size:11px;font-weight:600;letter-spacing:0;margin:0}.stepper{border:1px solid #c4ceb4;background:#e5e9d8;grid-template-columns:31px 28px 31px}.stepper button,.stepper output{min-height:29px;color:#374e2c;font-size:12px}.stepper button{font-size:17px}.player-inputs{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(var(--player-count,2),minmax(44px,1fr));gap:7px;align-content:start;min-height:0}.player-field{min-height:44px;max-height:67px}.player-field input{min-height:44px;background:#e8ecdf;border-color:#d7deca;border-radius:10px;font-size:13px;font-weight:500;padding-left:47px}.player-field span{width:24px;background:#d5dfc3;color:#586e42;font-size:9px;left:12px}.player-field:nth-child(2) span{background:#d6d9ed;color:#606994}.player-field:nth-child(3) span{background:#efd9c9;color:#94734f}.player-field:nth-child(4) span{background:#cce4da;color:#517e6b}.player-field:nth-child(5) span{background:#e7d7e5;color:#916c8e}.player-field input::placeholder{color:#859077;font-weight:400}.setup-footer{display:grid;grid-template-columns:1fr;gap:17px}.voice-toggle{background:transparent;border:0;border-radius:0;padding:0;min-height:36px;gap:10px}.voice-toggle .voice-icon{width:32px;height:32px;background:#e2e7d6;color:#617947;border-radius:50%}.voice-icon .ui-icon{width:16px;height:16px}.voice-toggle strong{font-family:DM,sans-serif;font-size:10px;font-weight:600}.voice-toggle small{font-size:8px;font-weight:400;margin-top:3px}.switch-track{margin-left:auto;width:31px;height:18px;flex:none;border-radius:20px;background:#bcc6ae;padding:3px;transition:background .2s}.switch-track:before{content:'';display:block;width:12px;height:12px;background:#f5f5ee;border-radius:50%;transition:transform .2s}.voice-toggle:has(input:checked) .switch-track{background:#4f6939}.voice-toggle:has(input:checked) .switch-track:before{transform:translateX(13px)}.voice-toggle:has(input:focus-visible){outline:3px solid #8da1ff;outline-offset:5px;border-radius:6px}.button{font-family:DM,sans-serif;font-weight:600;border-radius:13px}.button-primary{background:var(--green);color:#1d301d}.setup-form .button-primary{background:#243b2b;color:#f0f3e6;min-height:54px;text-align:left;padding:0 20px;font-size:13px;position:relative}.start-button:after{content:'↗';position:absolute;right:19px;top:50%;transform:translateY(-50%);font-size:23px;font-weight:400}.start-button:hover{background:#36513a}.button-primary:hover:not(:disabled){filter:brightness(1.04)}
/* Scoreboard */
.game-view{gap:18px}.game-header{min-height:52px;padding:0;gap:15px}.game-title-block{display:grid;grid-template-columns:auto auto;gap:0 13px;align-items:center}.game-wordmark{font-family:Club,sans-serif;font-size:25px;font-weight:600;letter-spacing:-1px;grid-column:1;line-height:1.2}.game-wordmark>span{color:var(--green)}.game-title-block>.eyebrow{grid-column:1;font-size:7px;color:#a9bda0;margin-top:5px}.game-header h1{grid-column:2;grid-row:1/3;align-self:center;margin:0;border:1px solid #adbf9345;border-radius:9px;font-family:DM,sans-serif;font-size:11px;letter-spacing:0;font-weight:500;padding:10px;color:var(--green)}.game-header-actions{gap:7px}.header-text-button,.small-icon{border-radius:50px;min-height:38px;height:38px;background:transparent;font-weight:500;color:#c6d2bc;font-size:10px}.small-icon{display:grid;place-items:center;width:38px}.small-icon .ui-icon{width:17px;height:17px}.header-text-button{display:flex;align-items:center;justify-content:center;gap:7px;padding:0 14px}.header-text-button .ui-icon{width:14px;height:14px}.danger-text{color:#ecb6a0;border-color:#ecb6a029}.small-icon.is-muted{opacity:.65}.game-main{grid-template-columns:minmax(0,1.1fr) minmax(330px,.9fr);grid-template-rows:minmax(0,1fr);gap:24px}.score-column{grid-template-rows:minmax(180px,1fr) auto auto;gap:12px}.turn-card{order:0;position:relative;overflow:hidden;isolation:isolate;background:#243f2d;border:1px solid #7b9a553f;border-radius:24px;padding:28px 32px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;min-height:0}.turn-player{z-index:2}.turn-player .eyebrow{display:flex;align-items:center;gap:7px;color:#c0d0a8;font-size:8px}.live-dot{width:5px;height:5px;border-radius:50%;background:#dcfa75;box-shadow:0 0 0 4px #d4f27812}.turn-card h2{font-size:29px;letter-spacing:-.03em;font-weight:500;line-height:1.1;margin-top:9px;max-width:90%}.turn-stats{flex:1;min-height:0;width:100%;align-items:center;justify-content:space-between;position:relative;z-index:2;padding-bottom:21px}.remaining-block{text-align:left;display:flex;flex-direction:column-reverse;gap:6px}.remaining-block strong{font-size:clamp(110px,12.5vw,185px);font-family:Club,sans-serif;line-height:.8;font-weight:600;letter-spacing:-.065em;color:#dcfa75;font-variant-numeric:tabular-nums}.remaining-block span{font-size:7px;letter-spacing:.13em;color:#b7ca9e;font-weight:500;margin-top:14px;padding-left:6px}.night-points-block{display:flex;flex-direction:column-reverse;gap:7px;align-items:center;margin-right:12px}.night-points-block strong{font-family:Club,sans-serif;font-size:38px;color:#e7efd9;font-weight:500}.night-points-block span{font-size:7px;color:#b7ca9e;letter-spacing:.06em}.turn-bottom{position:absolute;z-index:2;bottom:20px;left:32px;right:32px;border-top:1px solid #9ab76c3b;padding-top:13px;display:flex;align-items:center;justify-content:space-between;font-size:7px;letter-spacing:.06em;color:#b9cfa0}.turn-bottom>span:last-child{color:#cfe995}.turn-decoration{position:absolute;width:430px;height:430px;right:-245px;top:-86px;border:1px solid #bfe47829;border-radius:50%;z-index:-1}.turn-decoration:before,.turn-decoration:after,.turn-decoration span{content:'';position:absolute;inset:28px;border:1px solid #bfe47829;border-radius:50%}.turn-decoration:after{inset:65px}.turn-decoration span:nth-child(1){inset:108px}.turn-decoration span:nth-child(2){inset:140px}.turn-decoration span:nth-child(3){inset:164px;background:#dafa740b}.scoreboard-label{order:1;display:flex;justify-content:space-between;font-size:7px;font-weight:500;letter-spacing:.1em;color:#a7b99a;padding-inline:3px;margin-top:4px}.scoreboard-label>span:last-child{font-size:6px;color:#809575}.scoreboard{order:2;grid-template-columns:1fr!important;gap:7px;min-height:0;overflow:auto;max-height:280px;align-content:start}.player-card{display:grid;grid-template-columns:31px minmax(0,1fr) auto;gap:12px;min-height:57px;padding:9px 14px;border-radius:13px;background:#192f24;border-color:#c3dca317;box-shadow:none}.player-avatar{height:31px;width:31px;border-radius:50%;display:grid;place-items:center;color:var(--player-color);background:color-mix(in srgb,var(--player-color) 10%,transparent);font-family:Club,sans-serif;font-size:13px;font-weight:500}.player-card.is-active{background:#d7f7730b;border-color:#b9d27770;box-shadow:none}.player-name{font-family:DM,sans-serif;font-weight:500;font-size:11px;color:#c1cdb7}.is-active .player-name{color:#e8f0d8}.player-score{font-family:Club,sans-serif;font-size:28px;font-weight:500;letter-spacing:-.03em;color:#cfdebf}.is-active .player-score{color:var(--green)}.player-status{font-size:7px;font-weight:400;color:#829878;margin-top:4px}.player-info-icon{font-size:9px;opacity:.4}.player-progress{height:2px;position:absolute;left:0;bottom:0;width:var(--score-progress);background:var(--player-color);opacity:.55;transition:width .3s}.place-badge{background:#dcfa75;color:#243b2b;font-size:7px;top:5px;right:6px}.player-card.is-finished{opacity:.6}
/* Bright, tactile scoring console */
.scoring-card{--text:#26392a;--muted:#6a795e;--surface-2:#e6eadb;--surface-3:#d9e0c8;--green:#47672f;--border:#b7c3a340;background:#f1f2e7;border:0;border-radius:24px;padding:26px;gap:14px;color:var(--text)}.score-entry-header{align-items:center;padding:0 2px}.score-entry-header .eyebrow{color:#6f7e5a;font-size:8px}.score-hint{font-size:9px;font-weight:400;margin-top:6px;color:#79866a}.turn-score{font-size:64px;font-weight:500;line-height:1;letter-spacing:-.065em;color:#2b432c;font-variant-numeric:tabular-nums}.turn-score.is-invalid{color:#b64d35}.visit-tools{justify-content:space-between;gap:10px;padding-bottom:11px;border-bottom:1px solid #d1d9c1}.darts-picker{display:flex;align-items:center;gap:10px}.darts-picker legend{float:left;font-size:8px;font-weight:400;margin:0;color:#768469}.darts-buttons{grid-template-columns:repeat(3,32px);gap:4px}.darts-buttons button{height:30px;border-radius:7px;background:#e4e9d7;border-color:#d4dcc2;color:#82926c;font-size:11px;font-weight:500}.darts-buttons button.is-selected{background:#dafa75;border-color:#b9cc6d;color:#314429}.camera-score-button{background:transparent;border-color:#bac7a5;border-radius:7px;color:#566e3f;font-size:8px;min-height:30px;padding-inline:8px;gap:5px;font-weight:500}.camera-score-button .ui-icon{width:13px;height:13px}.beta-label{font-size:5px;font-weight:700;letter-spacing:.04em}.keypad{gap:8px}.key-button{background:#e5e9da;border:1px solid #d2dbc0;border-bottom:3px solid #cdd7b7;border-radius:12px;font-family:Club,sans-serif;font-size:33px;font-weight:500;line-height:1;color:#2d432b;box-shadow:none;transition:background .12s,transform .12s}.key-button:hover{background:#dbe5c6}.key-button:active{transform:translateY(2px);background:#dafa75;border-bottom-width:1px}.key-button.is-utility{color:#798f60;font-size:20px;background:#ebeee2}.score-actions{grid-template-columns:.36fr 1fr;gap:9px}.score-actions .button{min-height:53px;font-size:12px}.score-actions .button-primary{background:#273e2b;color:#eff3e4;position:relative;text-align:left;padding-left:22px}.score-actions .button-primary:after{content:'↗';position:absolute;right:19px;font-size:21px;top:50%;transform:translateY(-50%);font-weight:400}.score-actions .button-secondary{background:transparent;border-color:#c9d3b7;color:#60724e}
/* Finishing touches, results and installation */
.modal{background:#07160fd9;backdrop-filter:blur(9px)}.modal-card{background:#183325;border-color:#b4cf8538;box-shadow:0 25px 100px #0004;border-radius:23px;animation:dialog-in .2s ease-out}.modal-card h2{font-weight:600;letter-spacing:-.045em}.modal-copy,.stats-footnote,.camera-footnote{color:#9db492}.finish-mark{font-family:Club,sans-serif;color:#dcfa75}.finish-mark>.ui-icon{width:45px;height:45px}.result-row,.order-row,.night-row,.stat-tile{background:#233e2d;border-color:#afd37d20}.result-main strong,.night-main strong,.order-name{font-family:DM,sans-serif;font-size:13px;font-weight:500}.night-rank{background:#d4f27b1a;color:#dcfa75}.points-legend{background:#b7da6520}.button-secondary{background:#284331}.modal-card .button-primary{background:#dcfa75}.toast{background:#dcfa75;color:#183322;border:0;border-radius:13px;font-weight:500;box-shadow:0 8px 35px #0005}.toast.is-error{background:#f4b292;color:#462a1c}.install-dialog{background:#f1f2e7;color:#263a29;border:0;border-radius:26px;padding:28px;width:min(420px,calc(100% - 32px));box-shadow:0 30px 100px #0006}.install-dialog::backdrop{background:#07160fbd;backdrop-filter:blur(8px)}.install-dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.install-dialog-heading img{border-radius:15px}.install-dialog .small-icon{color:#546945;border-color:#becaaa}.install-dialog .eyebrow{color:#73845d;font-size:8px}.install-dialog h2{font-size:43px;line-height:.95;letter-spacing:-.055em;margin:12px 0 22px}.install-dialog p:not(.eyebrow){font-size:13px;line-height:1.6;color:#5a6c4c}.install-dialog .install-offline-note{font-size:11px!important;padding:13px;background:#e4ead8;border-radius:12px}.install-dialog .button{width:100%;background:#2a412d;color:#f1f2e7;margin-top:10px}.update-notice{position:fixed;z-index:90;left:50%;bottom:max(15px,env(safe-area-inset-bottom));transform:translateX(-50%);padding:12px 15px;background:#dafa75;border-radius:14px;color:#24362a;display:flex;align-items:center;gap:16px;width:max-content;max-width:calc(100% - 24px);box-shadow:0 8px 50px #0005;font-size:11px}.update-notice button{border:0;background:#273d2b;border-radius:7px;padding:8px 10px;color:#f1f2e7;cursor:pointer;font-size:10px;white-space:nowrap}.update-notice button:last-child{background:transparent;color:#314b29;padding:3px;font-size:18px}
@keyframes board-entrance{from{opacity:0;transform:translateY(30px) rotate(-35deg)}to{opacity:.9;transform:translateY(0) rotate(-23deg)}}@keyframes dialog-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1100px) and (max-height:800px){.app-shell{padding-top:12px;padding-bottom:18px;gap:15px;grid-template-rows:44px minmax(0,1fr)}.setup-form{padding:23px;gap:17px}.setup-form-intro h2{font-size:29px}.mode-button{min-height:79px;padding:12px 16px}.mode-button strong{font-size:36px}.players-setup{padding-top:14px;gap:9px}.setup-footer{gap:13px}.player-field{min-height:40px}.player-field input{min-height:40px}.player-inputs{grid-template-rows:repeat(var(--player-count,2),minmax(40px,1fr))}.game-view{gap:10px}.scoreboard{max-height:235px}.player-card{min-height:49px;padding-block:7px}.turn-card{padding:23px 26px}.turn-card h2{font-size:25px}.remaining-block strong{font-size:125px}.turn-bottom{left:26px;right:26px}.scoring-card{padding:20px;gap:10px}.turn-score{font-size:49px}.score-actions .button{min-height:47px}}
@media(max-width:1099px){.app-shell{padding:15px 24px 22px;gap:18px;grid-template-rows:44px minmax(0,1fr)}.club-nav{padding-bottom:13px}.setup-view{gap:25px;grid-template-columns:minmax(0,.92fr) minmax(330px,1fr)}.setup-form{padding:24px;gap:20px}.setup-brand h1{font-size:100px}.setup-art{width:110%;bottom:-10%;right:-29%}.setup-caption{font-size:6px}.subcopy{font-size:13px}.game-main{gap:17px}.turn-card{padding:24px}.remaining-block strong{font-size:116px}.turn-card h2{font-size:25px}.night-points-block{display:none}.turn-bottom{left:24px;right:24px}.turn-bottom>span:last-child{display:none}.scoring-card{padding:20px}.scoreboard{max-height:290px}.nav-project{font-size:7px}.connection-status{font-size:7px}}
@media(max-width:759px){.app-shell{padding:max(10px,env(safe-area-inset-top)) max(13px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(13px,env(safe-area-inset-left));grid-template-rows:38px minmax(0,1fr);gap:13px}.club-nav{padding-bottom:10px;gap:10px}.club-home{gap:6px}.club-home>span:first-of-type{font-size:18px}.nav-brand{width:18px;height:21px}.nav-divider,.nav-project{display:none}.club-nav-actions{gap:12px}.install-button{min-height:29px;padding:6px 9px;font-size:8px;gap:5px}.install-button .ui-icon{width:11px;height:11px}.connection-status{font-size:6px;gap:5px;letter-spacing:.02em}.connection-status>span:first-child{width:4px;height:4px}.setup-view{grid-template-columns:1fr;grid-template-rows:auto auto;align-content:start;gap:19px;overflow:auto;scrollbar-width:none;padding-bottom:2px}.setup-brand{min-height:173px;padding:10px 7px 0;overflow:hidden}.club-edition{font-size:7px;gap:6px;position:relative;z-index:2}.little-star{font-size:16px}.setup-brand h1{font-size:62px;line-height:.92;margin:13px 0 0;letter-spacing:-.065em}.setup-brand h1 br{display:none}.setup-brand h1 br:after{content:' '}.setup-brand h1{max-width:225px}.subcopy{font-size:11px;line-height:1.5;margin-top:10px;max-width:210px}.subcopy br{display:none}.setup-art{width:218px;right:-44px;bottom:-69px;opacity:.67}.art-label{width:56px;height:56px;right:24%;top:-1%;font-size:6px}.art-cross{display:none}.setup-caption{display:none}.setup-form{border-radius:20px;padding:23px 21px;gap:20px;overflow:visible;grid-template-rows:auto auto auto auto}.setup-form-intro h2{font-size:28px}.setup-form-intro .eyebrow{font-size:7px}.form-spark{font-size:24px}.mode-picker legend,.section-row h2{font-size:10px}.mode-button{min-height:79px;padding:12px 15px}.mode-button strong{font-size:37px}.mode-button span{font-size:8px}.players-setup{padding-top:16px;gap:12px}.player-inputs{grid-template-rows:repeat(var(--player-count,2),48px);grid-template-columns:1fr}.player-field{min-height:48px}.player-field input{font-size:14px;min-height:48px}.setup-footer{gap:16px}.voice-toggle strong{font-size:10px}.voice-toggle small{font-size:8px}.start-button{min-height:52px}.game-view{gap:11px}.game-header{min-height:39px;gap:8px}.game-wordmark{font-size:20px;letter-spacing:-.7px}.game-title-block{gap:0 8px}.game-title-block>.eyebrow{font-size:5.5px;margin-top:4px}.game-header h1{font-size:9px;border-radius:7px;padding:8px}.game-header-actions{gap:4px}.small-icon{width:31px;height:31px;min-height:31px}.small-icon .ui-icon{width:14px;height:14px}.header-text-button{height:31px;min-height:31px;padding-inline:9px;font-size:8px}.header-text-button .ui-icon{width:13px;height:13px}#nightButton>span{display:none}#nightButton{width:31px;padding:0}.game-main{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:11px}.score-column{display:grid;grid-template-rows:auto auto;gap:8px}.scoreboard-label{display:none}.turn-card{min-height:134px;border-radius:17px;padding:17px 19px;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:4px}.turn-player .eyebrow{font-size:6px;gap:6px}.turn-card h2{font-size:22px;max-width:170px;margin-top:8px}.turn-stats{padding-bottom:0;width:auto;grid-column:2;grid-row:1;align-self:center;display:block}.remaining-block{gap:0;text-align:right}.remaining-block strong{font-size:79px;font-weight:600;line-height:.8;letter-spacing:-.065em}.remaining-block span{font-size:5px;margin-top:9px;letter-spacing:.07em;padding-left:0}.turn-bottom{position:static;grid-column:1/-1;font-size:5.5px;padding-top:10px;margin-top:6px;gap:20px}.turn-bottom>span:last-child{display:block;margin-left:auto;font-size:5px}.turn-decoration{right:-290px;top:-177px}.night-points-block{display:none}.scoreboard,.scoreboard.many-players{display:flex!important;gap:6px;overflow-x:auto;overflow-y:hidden;padding-bottom:1px;scrollbar-width:none;max-height:none}.player-card,.scoreboard.many-players .player-card{flex:1 0 83px;min-width:83px;display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:1fr;padding:10px 9px;min-height:48px;border-radius:10px;gap:5px}.player-avatar{display:none}.player-card .player-details,.scoreboard.many-players .player-details{grid-row:auto}.player-name,.scoreboard.many-players .player-name{font-size:9px;max-width:95px;font-weight:500}.player-score,.scoreboard.many-players .player-score{font-size:24px;font-weight:500}.player-status,.player-info-icon{display:none}.scoring-card{padding:15px;border-radius:18px;gap:9px}.score-entry-header{min-height:39px;padding:0}.turn-score{font-size:44px}.score-entry-header .eyebrow{font-size:7px}.score-hint{display:block;font-size:7px;margin-top:4px}.visit-tools{min-height:28px;border-bottom:1px solid #d1d9c1;padding-bottom:8px;gap:7px}.darts-picker{gap:7px}.darts-picker legend{font-size:7px}.darts-buttons{grid-template-columns:repeat(3,29px);gap:4px}.darts-buttons button{height:28px;font-size:10px;border-radius:6px}.camera-score-button{min-height:28px;font-size:7px;padding:0 7px}.camera-score-button .ui-icon{width:12px;height:12px}.keypad{gap:6px}.key-button{min-height:42px;font-size:26px;border-radius:9px;border-bottom-width:2px}.key-button.is-utility{font-size:16px}.score-actions .button{min-height:48px;font-size:11px;border-radius:10px}.score-actions{grid-template-columns:.34fr 1fr;gap:7px}.score-actions .button-primary{padding-left:18px}.score-actions .button-primary:after{font-size:20px;right:16px}.modal-card{border-radius:19px}.camera-score-button span{display:inline}.voice-toggle small{display:block}.voice-toggle .voice-icon{width:30px;height:30px}.voice-toggle{padding:0;min-height:34px}.modal-copy{font-size:12px}.update-notice{font-size:9px;gap:9px;padding:10px}}
@media(max-width:759px) and (max-height:740px){.app-shell{gap:9px;grid-template-rows:35px minmax(0,1fr);padding-top:max(8px,env(safe-area-inset-top));padding-bottom:max(8px,env(safe-area-inset-bottom))}.game-view,.game-main{gap:8px}.game-header{min-height:33px}.turn-card{min-height:106px;padding:12px 16px;gap:2px}.turn-card h2{font-size:20px}.remaining-block strong{font-size:63px}.turn-bottom{padding-top:8px;margin-top:4px}.player-card,.scoreboard.many-players .player-card{min-height:41px;padding:8px}.player-score,.scoreboard.many-players .player-score{font-size:21px}.scoring-card{padding:11px;gap:6px}.score-entry-header{min-height:30px}.turn-score{font-size:35px}.visit-tools{padding-bottom:6px;min-height:27px}.darts-buttons button{height:25px}.camera-score-button{min-height:25px}.key-button{min-height:38px;font-size:24px}.score-actions .button{min-height:43px}.keypad{gap:5px}.setup-brand{min-height:150px}.setup-brand h1{font-size:56px}.setup-form{padding:20px;gap:18px}}
@media(max-width:359px){.app-shell{padding-inline:9px}.club-nav-actions{gap:7px}.connection-status{font-size:5px}.install-button{font-size:7px}.game-wordmark{font-size:18px}.game-title-block{gap:0 5px}.game-title-block>.eyebrow{font-size:5px}.header-text-button{font-size:7px;padding-inline:7px}.small-icon,#nightButton{width:29px;height:29px;min-height:29px}.game-header-actions{gap:3px}.turn-card h2{max-width:135px;font-size:20px}.remaining-block strong{font-size:66px}.setup-brand h1{font-size:53px}.setup-art{right:-65px}.camera-score-button .beta-label{display:none}.setup-form-intro h2{font-size:25px}.scoring-card{padding:10px}.score-hint{font-size:6px}}
@media(max-height:580px){.app-shell{height:auto;min-height:100dvh;grid-template-rows:38px auto}.setup-view{min-height:650px}.game-view{min-height:515px}html,body{height:auto;overflow-y:auto}.scoreboard{max-height:230px}.setup-form{overflow:visible}.setup-brand h1{font-size:95px}.turn-card{min-height:150px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

@media(max-width:759px){
  .scoreboard.many-players{display:grid!important;grid-template-columns:repeat(var(--players),minmax(0,1fr))!important;overflow:visible}
  .scoreboard.many-players .player-card{min-width:0;min-height:55px;grid-template-columns:1fr;grid-template-rows:auto auto;gap:6px;padding:8px 7px}
  .scoreboard.many-players .player-name{font-size:8px;max-width:100%}
  .scoreboard.many-players .player-score{font-size:24px}
  .scoreboard.many-players .place-badge{font-size:6px;top:2px;right:2px}
}
@media(min-width:760px){.scoreboard{max-height:none}}

/* Camera alignment: a roomy live view and touch-sized precision controls. */
#cameraModal { padding: 18px; }
.camera-card { width: min(100%, 900px); padding: 22px; }
.camera-head h2 { font-size: clamp(1.7rem, 5vw, 2.4rem); }
.camera-stage { min-height: 260px; border-radius: 20px; }
.camera-stage video { height: 52vh; height: 52dvh; max-height: none; object-fit: contain; }
.camera-alignment-panel { align-items: stretch; padding: 16px; gap: 16px; }
.camera-alignment-copy strong { font-size: 1rem; }
.camera-alignment-copy span { font-size: .84rem; line-height: 1.5; margin-top: 5px; }
.camera-alignment-panel .button { font-size: .82rem; min-height: 50px; }
.camera-status { font-size: .83rem; line-height: 1.5; }
.camera-footnote { font-size: .72rem; line-height: 1.5; }
.camera-secondary-actions .mini-button { min-height: 44px; padding: 10px 16px; font-size: .8rem; }
.camera-manual-panel { margin-top: 12px; padding: 16px; border: 1px solid #dafa703f; border-radius: 18px; background: #dafa7009; }
.camera-manual-heading strong, .camera-manual-heading span { display: block; }
.camera-manual-heading strong { font-size: 1rem; color: var(--green); }
.camera-manual-heading span { margin: 5px 0 12px; font-size: .8rem; color: var(--muted); }
.camera-targets, .camera-nudge { display: flex; gap: 8px; margin-bottom: 10px; }
.camera-targets button, .camera-nudge button, .camera-rotation button { flex: 1; min-height: 46px; min-width: 44px; border: 1px solid #dafa7045; border-radius: 12px; background: #17302a; color: #f6f1df; font: inherit; font-weight: 750; cursor: pointer; }
.camera-targets button[aria-pressed=true] { background: #def46b; color: #123026; }
.camera-nudge button, .camera-rotation button { font-size: 1.35rem; }
.camera-manual-panel > .button { width: 100%; min-height: 50px; }
.camera-rotation { display: flex; align-items: center; gap: 8px; margin-top: 10px; }
.camera-rotation span { flex: 1; font-size: .78rem; color: var(--muted); }
.camera-rotation button { flex: 0 0 46px; }
.camera-card button:focus-visible { outline: 3px solid #def46b; outline-offset: 3px; }
@media(max-width:699px) {
  #cameraModal { padding: 0; align-items: stretch; }
  #cameraModal .camera-card { width: 100%; max-height: 100dvh; border-radius: 0; padding: max(14px, env(safe-area-inset-top)) 14px max(20px, env(safe-area-inset-bottom)); }
  .camera-head { margin-bottom: 14px; }
  .camera-head .modal-copy { font-size: .8rem; }
  .camera-stage { min-height: 230px; border-radius: 16px; }
  .camera-stage video { height: 48vh; height: 48dvh; max-height: none; }
  .camera-alignment-panel { display: grid; padding: 14px; gap: 12px; }
  .camera-alignment-copy span { font-size: .8rem; }
  .camera-actions { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .camera-actions .button { min-height: 50px; font-size: .82rem; }
}

/* Let every player row contribute to the form's height before the footer. */
.setup-form { grid-template-rows: max-content max-content max-content max-content; align-content: start; }
.players-setup { grid-template-rows: max-content max-content; min-height: min-content; }
.player-inputs { grid-template-rows: repeat(var(--player-count, 2), 48px); min-height: min-content; }
.player-field, .player-field input { min-height: 48px; }
@media (max-width: 759px) {
  .setup-form { min-height: min-content; }
}
