:root{--felt:#12352a;--felt-dark:#0b261e;--cream:#f7f0df;--paper:#fffaf0;--ink:#17251f;--gold:#d9ac5b;--red:#d65d4b;--line:rgba(23,37,31,.14);--shadow:0 24px 70px rgba(2,17,12,.28)}
*{box-sizing:border-box}html{min-height:100%;background:var(--felt)}body{margin:0;min-height:100vh;color:var(--cream);font-family:"DM Sans",sans-serif;background:radial-gradient(circle at 10% 10%,#1b4a3b 0,transparent 32%),radial-gradient(circle at 90% 85%,#071c16 0,transparent 38%),var(--felt);overflow-x:hidden}.felt-noise{position:fixed;inset:0;pointer-events:none;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}.topbar{height:92px;max-width:1240px;margin:auto;padding:0 32px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:3}.brand{display:flex;align-items:center;gap:12px;color:var(--cream);background:none;border:0;cursor:pointer;text-align:left}.brand-mark{width:44px;height:54px;background:var(--cream);color:var(--felt);border-radius:8px;box-shadow:0 8px 20px #071c16;display:grid;place-items:center;font-family:serif;font-size:18px;line-height:.7;transform:rotate(-4deg)}.brand-mark span:last-child{color:var(--red)}.brand strong,.brand em{display:block}.brand strong{letter-spacing:.28em;font-size:10px}.brand em{font:700 24px/1 "Fraunces",serif;text-transform:uppercase;font-style:normal}.view{max-width:1160px;margin:0 auto;padding:64px 32px 90px;position:relative}.hidden{display:none!important}.setup-view{display:grid;grid-template-columns:1.08fr .92fr;gap:90px;align-items:center;min-height:calc(100vh - 92px);padding-top:20px}.hero-copy{max-width:640px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.23em;color:var(--gold);margin:0 0 15px}.hero-copy h1,.game-header h1{font:700 clamp(48px,6vw,82px)/.98 "Fraunces",serif;letter-spacing:-.035em;margin:0}.hero-copy h1 span{color:var(--gold);font-style:italic}.lead{font-size:18px;line-height:1.65;color:rgba(247,240,223,.72);max-width:530px;margin:28px 0 0}.card{background:var(--paper);color:var(--ink);border-radius:20px;box-shadow:var(--shadow);position:relative}.setup-card{padding:38px;transform:rotate(1deg)}.card-corner{position:absolute;right:24px;top:18px;font:700 25px "Fraunces",serif;color:var(--red)}.step-head{display:flex;gap:16px;align-items:center;margin-bottom:30px}.step-number{width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;font-size:11px;font-weight:700;color:var(--red)}h2{font:700 28px/1.1 "Fraunces",serif;margin:0}.step-head p{margin:5px 0 0;color:#718078;font-size:13px}.setup-card label{display:block;font-size:12px;font-weight:700;margin:20px 0 9px}.count-picker{display:flex;gap:8px}.count-picker button{width:48px;height:42px;border:1px solid var(--line);background:white;border-radius:9px;font:600 14px inherit;color:var(--ink);cursor:pointer}.count-picker button.active{background:var(--felt);color:white;border-color:var(--felt)}.player-inputs{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:22px 0}.field{position:relative}.field span{position:absolute;left:13px;top:50%;transform:translateY(-50%);font-size:11px;color:#87928c}.field input,.score-input{width:100%;height:48px;border:1px solid var(--line);border-radius:10px;background:#fffdf8;padding:0 13px 0 38px;font:600 14px inherit;color:var(--ink);outline:none}.field input:focus,.score-input:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(217,172,91,.18)}.primary-button,.ghost-button,.text-button{border:0;font:700 13px inherit;cursor:pointer}.primary-button{width:100%;height:52px;border-radius:11px;background:var(--red);color:white;display:flex;justify-content:center;align-items:center;gap:12px;box-shadow:0 8px 20px rgba(214,93,75,.3)}.primary-button span:last-child{font-size:19px}.ghost-button{padding:12px 18px;border:1px solid rgba(247,240,223,.25);border-radius:10px;background:rgba(255,255,255,.06);color:var(--cream)}.saved-note{text-align:center;color:#8b958f;font-size:11px;margin:13px 0 -10px}.dealer-view{display:grid;place-items:center;min-height:calc(100vh - 92px)}.dealer-card{width:min(530px,100%);padding:60px;text-align:center}.shuffle-deck{height:135px;position:relative;margin:10px auto 28px;width:100px}.shuffle-deck span{position:absolute;inset:10px;background:white;border:2px solid var(--ink);border-radius:11px;display:grid;place-items:center;font:700 40px serif;color:var(--ink);transition:.6s}.shuffle-deck span:nth-child(1){transform:rotate(-16deg) translateX(-24px)}.shuffle-deck span:nth-child(2){transform:rotate(14deg) translateX(23px)}.shuffle-deck span:nth-child(3){color:var(--red)}.shuffle-deck.shuffling span:nth-child(1){animation:shuffleLeft .45s infinite alternate}.shuffle-deck.shuffling span:nth-child(2){animation:shuffleRight .4s infinite alternate}.dealer-status{color:#718078;font-size:13px}.dealer-card h1{font:700 48px "Fraunces",serif;margin:5px 0;color:var(--felt)}#dealerHint{margin:0 0 28px;color:#718078}.game-view{padding-top:30px}.game-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px}.game-header h1{font-size:54px}.round-pill{border:1px solid rgba(247,240,223,.2);border-radius:99px;padding:12px 18px;color:rgba(247,240,223,.7);font-size:13px}.round-pill strong{color:white;margin-left:4px}.scoreboard-wrap{overflow:hidden}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:560px}th,td{text-align:center;padding:18px 14px;border-bottom:1px solid var(--line)}th{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#738078;background:#f3ebda}th:first-child,td:first-child{text-align:left;width:105px}tbody td:first-child{color:#8a958f;font-size:12px}.winner-cell{color:var(--red);font-weight:800}.total-row td{font:700 23px "Fraunces",serif;border-bottom:0;background:#fffdf8}.total-row td:first-child{font:700 12px "DM Sans",sans-serif;color:#738078}.leader{position:relative;color:var(--felt)!important}.leader:after{content:"LIDER";display:block;font:700 8px "DM Sans",sans-serif;letter-spacing:.15em;color:var(--red);margin-top:3px}.game-actions{display:flex;gap:12px;align-items:center;margin-top:22px}.game-actions .primary-button{width:auto;padding:0 24px}.text-button{margin-left:auto;color:rgba(247,240,223,.65);background:none;padding:12px}.rules-note{display:flex;gap:14px;align-items:center;margin:45px auto 0;width:max-content;max-width:100%;color:rgba(247,240,223,.65);font-size:12px;line-height:1.55}.rules-note p{margin:0}.rules-note strong{color:var(--cream)}.mini-card{width:38px;height:48px;background:var(--cream);color:var(--red);border-radius:5px;display:grid;place-items:center;font:700 19px serif;transform:rotate(-7deg)}.modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px}.modal-backdrop{position:absolute;inset:0;background:rgba(3,18,13,.78);backdrop-filter:blur(7px)}.modal-card{z-index:1;width:min(560px,100%);padding:38px;max-height:90vh;overflow:auto}.modal-close{position:absolute;right:18px;top:15px;border:0;background:none;font-size:27px;color:#77837d;cursor:pointer}.modal-help{color:#75827c;font-size:13px;line-height:1.5}.round-inputs{display:grid;gap:9px;margin:23px 0}.round-player{display:grid;grid-template-columns:1fr 135px;gap:10px;align-items:center;border:1px solid var(--line);border-radius:11px;padding:9px 10px}.winner-pick{display:flex;align-items:center;gap:10px;font-weight:700;cursor:pointer}.winner-pick input{accent-color:var(--red);width:18px;height:18px}.score-input{padding:0 12px;text-align:center;height:41px}.score-input:disabled{background:#e7efe9;color:var(--felt);font-weight:800}.form-error{min-height:17px;color:var(--red);font-size:12px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,30px);opacity:0;background:#0a211a;color:white;border:1px solid rgba(255,255,255,.13);padding:12px 19px;border-radius:99px;z-index:30;font-size:12px;transition:.25s}.toast.show{opacity:1;transform:translate(-50%,0)}
@keyframes shuffleLeft{to{transform:rotate(-25deg) translate(-45px,-10px)}}@keyframes shuffleRight{to{transform:rotate(24deg) translate(43px,7px)}}
@media(max-width:800px){.topbar{height:76px;padding:0 20px}.view{padding-left:20px;padding-right:20px}.setup-view{grid-template-columns:1fr;gap:38px;align-items:start;padding-top:45px}.hero-copy{text-align:center;margin:auto}.hero-copy h1{font-size:48px}.lead{font-size:15px;margin-top:18px}.setup-card{transform:none;padding:26px}.game-header h1{font-size:40px}.game-actions{flex-wrap:wrap}.text-button{width:100%;margin:0}.dealer-card{padding:40px 25px}}
@media(max-width:480px){.brand em{font-size:20px}.brand-mark{width:37px;height:46px}.topbar .ghost-button{font-size:0}.topbar .ghost-button:first-letter{font-size:16px}.player-inputs{grid-template-columns:1fr}.hero-copy h1{font-size:40px}.setup-view{padding-top:25px}.game-header{align-items:center}.game-header h1{font-size:34px}.round-pill{padding:9px 12px}.scoreboard-wrap{margin-left:-8px;margin-right:-8px}.round-player{grid-template-columns:1fr 105px}.modal-card{padding:30px 20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
