body,html{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background-color:#111;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;color:#fff}.player-setup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:6500;display:none;align-items:center;justify-content:center;padding:clamp(18px,4vw,48px);background:radial-gradient(circle at 50% 12%,rgba(96,165,250,.24),transparent 36rem),#070a12eb;color:#fff;text-align:center}.player-setup-overlay.is-visible{display:flex}.player-setup-panel{width:min(980px,100%);padding:clamp(22px,4vw,44px);background:#080c16d1;border:1px solid rgba(255,255,255,.22);border-radius:10px;box-shadow:0 28px 70px #00000075;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.player-setup-kicker{margin:0 0 8px;color:#60a5fa;font-size:clamp(14px,1.9vw,20px);font-weight:800;text-transform:uppercase}.player-setup-panel h2{margin:0 0 16px;font-size:clamp(28px,5.6vw,50px);line-height:1.03}.player-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:16px}.player-slot-btn{--hold-progress: 0%;min-height:62px;padding:10px 14px;border:2px solid rgba(255,255,255,.74);border-radius:8px;background:linear-gradient(90deg,rgba(96,165,250,.88) var(--hold-progress),transparent var(--hold-progress)),#ffffff14;color:#fff;cursor:pointer;font:inherit;font-size:clamp(18px,2.6vw,26px);font-weight:800;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.player-slot-btn:hover,.player-slot-btn.is-hovered{border-color:#60a5fa;background-color:#ffffff29;transform:translateY(-2px)}.player-slot-btn.is-active{border-color:#4ade80;box-shadow:inset 0 0 0 2px #4ade8094}.player-editing-line{margin:0;color:#cbd5e1;font-size:clamp(14px,1.8vw,20px);font-weight:700}.name-preview{margin:8px 0 16px;min-height:40px;color:#f8fafc;font-size:clamp(26px,4.8vw,44px);font-weight:900;letter-spacing:1px}.name-keypad{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:8px}.name-key{--hold-progress: 0%;min-height:48px;border:2px solid rgba(255,255,255,.72);border-radius:8px;background:linear-gradient(90deg,rgba(74,222,128,.88) var(--hold-progress),transparent var(--hold-progress)),#ffffff14;color:#fff;cursor:pointer;font:inherit;font-size:clamp(15px,2vw,22px);font-weight:800;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.name-key:hover,.name-key.is-hovered{border-color:#4ade80;background-color:#ffffff29;transform:translateY(-2px)}.name-key.name-key--wide{grid-column:span 2}.player-setup-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:14px}.setup-btn{--hold-progress: 0%;min-height:54px;border:2px solid rgba(255,255,255,.76);border-radius:8px;background:linear-gradient(90deg,rgba(74,222,128,.9) var(--hold-progress),transparent var(--hold-progress)),#ffffff14;color:#fff;cursor:pointer;font:inherit;font-size:clamp(16px,2vw,22px);font-weight:800;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.setup-btn:hover,.setup-btn.is-hovered{border-color:#4ade80;background-color:#ffffff29;transform:translateY(-2px)}.setup-btn--primary{border-color:#fbbf24;color:#fde68a}.setup-btn.is-disabled{opacity:.42;pointer-events:none}.player-setup-help{margin:14px 0 0;color:#94a3b8;font-size:clamp(13px,1.6vw,18px);font-weight:700}.mode-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:6000;display:none;align-items:center;justify-content:center;padding:clamp(18px,4vw,48px);background:radial-gradient(circle at 50% 15%,rgba(251,191,36,.22),transparent 36rem),#070a12e6;color:#fff;text-align:center}.mode-overlay.is-visible{display:flex}.mode-panel{width:min(940px,100%);padding:clamp(22px,4vw,44px);background:#080c16cc;border:1px solid rgba(255,255,255,.22);border-radius:10px;box-shadow:0 26px 66px #0000006b;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.mode-kicker{margin:0 0 8px;color:#fbbf24;font-size:clamp(15px,2vw,20px);font-weight:800;text-transform:uppercase}.mode-panel h2{margin:0 0 clamp(20px,4vw,30px);font-size:clamp(28px,5.8vw,52px);line-height:1.05}.mode-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,2.2vw,18px)}.mode-option{--hold-progress: 0%;min-height:clamp(72px,10vw,94px);padding:14px clamp(14px,3vw,28px);border:2px solid rgba(255,255,255,.82);border-radius:8px;background:linear-gradient(90deg,rgba(74,222,128,.84) var(--hold-progress),transparent var(--hold-progress)),#ffffff1a;color:#fff;cursor:pointer;font:inherit;font-size:clamp(22px,4vw,36px);font-weight:800;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.mode-option:hover,.mode-option.is-hovered{border-color:#4ade80;background-color:#ffffff2e;transform:translateY(-2px)}.mode-option:focus-visible{outline:3px solid #4ade80;outline-offset:4px}.mode-help{margin:clamp(18px,3.2vw,26px) 0 0;color:#cbd5e1;font-size:clamp(15px,2vw,22px);font-weight:700}.spelling-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5000;display:none;align-items:center;justify-content:center;padding:clamp(18px,4vw,48px);background:radial-gradient(circle at 50% 20%,rgba(74,222,128,.18),transparent 34rem),#070a12e0;color:#fff;text-align:center;pointer-events:auto}.spelling-overlay.is-visible{display:flex}.spelling-panel{width:min(900px,100%);padding:clamp(22px,4vw,42px);background:#080c16c7;border:1px solid rgba(255,255,255,.2);border-radius:8px;box-shadow:0 22px 60px #0000005c;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.spelling-kicker{margin:0 0 8px;color:#fbbf24;font-size:clamp(15px,2vw,20px);font-weight:800;letter-spacing:0;text-transform:uppercase}.spelling-panel h2{margin:0 0 clamp(22px,4vw,36px);font-size:clamp(30px,6vw,56px);line-height:1.02;letter-spacing:0}.spelling-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,2.4vw,20px)}.spell-option{--hold-progress: 0%;min-height:clamp(68px,12vw,96px);padding:12px clamp(14px,3vw,28px);border:2px solid rgba(255,255,255,.82);border-radius:8px;background:linear-gradient(90deg,rgba(74,222,128,.84) var(--hold-progress),transparent var(--hold-progress)),#ffffff1a;color:#fff;cursor:pointer;font:inherit;font-size:clamp(24px,5vw,40px);font-weight:800;letter-spacing:0;transition:transform .16s ease,border-color .16s ease,background-color .16s ease}.spell-option:hover,.spell-option.is-hovered{border-color:#4ade80;background-color:#ffffff2e;transform:translateY(-2px)}.spell-option:focus-visible{outline:3px solid #fbbf24;outline-offset:4px}.spelling-feedback{min-height:42px;margin:clamp(20px,4vw,34px) 0 0;font-size:clamp(22px,4vw,34px);font-weight:800}.hand-cursor{position:fixed;width:40px;height:40px;z-index:9999;display:none;pointer-events:none;background:#4ade80d1;border:4px solid white;border-radius:50%;box-shadow:0 0 16px #0000008c;transform:translate(-50%,-50%)}#ui-container{position:absolute;top:16px;left:16px;width:min(980px,calc(100vw - 304px));z-index:10;pointer-events:none;text-shadow:0 2px 4px rgba(0,0,0,.8)}h1{margin:0;color:#f8fafc;font-size:clamp(28px,4vw,46px);line-height:.95;letter-spacing:0;text-transform:uppercase}.scoreboard{overflow:hidden;max-height:360px;background:linear-gradient(180deg,#131c2ef2,#070a12f2),#101827;border:2px solid rgba(251,191,36,.78);border-radius:8px;box-shadow:0 18px 48px #00000073;opacity:1;transform:translateY(0);transition:max-height .3s ease,opacity .2s ease,transform .3s ease,border-width .3s ease}.scoreboard.is-hidden{max-height:0;border-width:0;opacity:0;pointer-events:none;transform:translateY(-14px)}.scoreboard-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:16px 18px 14px;background:linear-gradient(90deg,#b91c1ce6,#d97706d1);border-bottom:2px solid rgba(251,191,36,.72)}.lane-label{margin:0 0 4px;color:#fffbeb;font-size:13px;font-weight:800;letter-spacing:0;text-transform:uppercase}.score-summary{display:grid;grid-template-columns:repeat(4,minmax(72px,1fr));gap:8px;min-width:360px}.score-summary span{display:grid;gap:2px;padding:8px 10px;background:#00000052;border:1px solid rgba(255,255,255,.22);border-radius:6px;color:#fde68a;font-size:11px;font-weight:800;text-transform:uppercase}.score-summary strong{color:#fff;font-size:26px;line-height:1}.players-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:8px;padding:10px 12px 8px;background:#0000004d;border-bottom:1px solid rgba(255,255,255,.1)}.player-chip{padding:8px 10px;border:1px solid rgba(255,255,255,.24);border-radius:7px;background:#0f172adb;text-align:left}.player-chip.is-active{border-color:#4ade80e6;box-shadow:inset 0 0 0 1px #4ade8080}.player-chip-name{color:#f8fafc;font-size:13px;font-weight:800;text-transform:uppercase}.player-chip-score{margin-top:4px;color:#fde68a;font-size:19px;font-weight:900}#game-message{margin:0;padding:12px 18px 14px;background:#00000047;border-top:1px solid rgba(255,255,255,.12);font-size:clamp(18px,2.4vw,26px);font-weight:700;color:#fbbf24;text-transform:uppercase}.frame-scores-container{display:grid;grid-template-columns:repeat(10,minmax(58px,1fr));padding:12px;background:linear-gradient(90deg,rgba(255,255,255,.04) 1px,transparent 1px),#07111f;background-size:12px 100%;overflow-x:auto}.frame-box{min-width:58px;border:1px solid rgba(148,163,184,.8);border-left:0;background:#0f172ad1;text-align:center}.frame-box:first-child{border-left:1px solid rgba(148,163,184,.8);border-radius:6px 0 0 6px}.frame-box:last-child{border-radius:0 6px 6px 0}.frame-box.is-active{background:#1c314ef5;box-shadow:inset 0 0 0 2px #fbbf24e6}.frame-title{padding:5px 4px;background:#030712d1;border-bottom:1px solid rgba(148,163,184,.52);color:#fde68a;font-size:11px;font-weight:900}.frame-rolls{display:grid;grid-template-columns:repeat(2,1fr);min-height:28px;border-bottom:1px solid rgba(148,163,184,.52)}.frame-box.is-tenth .frame-rolls{grid-template-columns:repeat(3,1fr)}.roll-cell{display:grid;place-items:center;min-height:28px;border-left:1px solid rgba(148,163,184,.42);color:#e0f2fe;font-size:18px;font-weight:900}.roll-cell:first-child{border-left:0}.frame-total{display:grid;place-items:center;min-height:34px;color:#fff;font-size:22px;font-weight:700}.lane-dashboard{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:10px;margin-top:10px}.stats,.controls{background:#080c16bd;padding:12px;border:1px solid rgba(255,255,255,.18);border-radius:8px}.stats{display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));gap:6px}.stats p,.controls p{margin:0;font-size:12px}.stats p{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;background:#ffffff0f;border-radius:5px}.stats span{color:#94a3b8;font-weight:700}.stats strong{color:#f8fafc}.controls{display:grid;align-content:center;gap:5px;color:#cbd5e1}.controls strong{color:#86efac;text-transform:uppercase}.webcam-container{position:absolute;top:20px;right:20px;width:240px;height:180px;border:2px solid rgba(255,255,255,.5);border-radius:8px;overflow:hidden;z-index:10;background:#000;transform:scaleX(-1)}video{position:absolute;width:100%;height:100%;object-fit:cover}#hands-canvas{position:absolute;width:100%;height:100%;z-index:2}.preview-ball{position:absolute;left:50%;top:86%;width:22px;height:22px;border-radius:50%;z-index:4;pointer-events:none;opacity:0;--preview-scale: 1;transform:translate(-50%,-50%) scale(var(--preview-scale));background:radial-gradient(circle at 30% 30%,#f8fafc 0 12%,#ccdcff 13% 24%,transparent 25%),radial-gradient(circle at 72% 74%,rgba(255,255,255,.12),transparent 38%),#7c3aed;border:1px solid rgba(255,255,255,.92);box-shadow:0 0 10px #7c3aeda6;transition:left .08s linear,top .08s linear,transform .12s ease,box-shadow .12s ease,background-color .12s ease,opacity .12s ease}.preview-ball.is-visible{opacity:1}.preview-ball.is-holding{--preview-scale: 1.04;box-shadow:0 0 14px #4ade80d1}.preview-ball.is-backswing{--preview-scale: 1.1;box-shadow:0 0 16px #fbbf24d9}.preview-ball.is-forward{--preview-scale: 1.16;box-shadow:0 0 18px #ef476fe0}.preview-ball.is-released{--preview-scale: .92;box-shadow:0 0 10px #7dd3fce6}canvas{display:block}@media(max-width:640px){#ui-container{top:10px;left:10px;width:calc(100vw - 20px)}.scoreboard-header,.lane-dashboard{grid-template-columns:1fr}.scoreboard-header{display:grid}.score-summary{min-width:0}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.webcam-container{top:auto;right:10px;bottom:10px;width:160px;height:120px}.preview-ball{width:16px;height:16px}.spelling-options,.player-slots,.mode-options{grid-template-columns:1fr}.name-keypad{grid-template-columns:repeat(6,minmax(0,1fr))}.player-setup-actions{grid-template-columns:1fr}.spell-option{min-height:62px}.players-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
