:root{color-scheme:dark;--paper:#080808;--ink:#f5f0e5;--muted:#c2b9a5;--gold:#d9bc78;--gold-soft:#f3dda4;--line:#51452d;--panel:#13120f;--spring:cubic-bezier(.22,1.35,.42,1);font-family:system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;min-height:100svh;background:radial-gradient(circle at 50% 21%,#4435174f,transparent 34%),#080808;-webkit-tap-highlight-color:transparent}button,a,input{touch-action:manipulation}button,input{font:inherit}button{color:inherit;cursor:pointer}button:disabled{cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid var(--gold-soft);outline-offset:3px}
.home-bar{position:sticky;top:0;z-index:30;display:flex;width:100%;min-height:calc(52px + env(safe-area-inset-top));align-items:center;justify-content:center;gap:10px;border-bottom:1px solid #f4dfa5;background:linear-gradient(110deg,#b18a38,#f0d98e 48%,#b18a38);color:#090806;padding-top:env(safe-area-inset-top);box-shadow:0 8px 28px #0009,inset 0 1px #fff8;font-size:.88rem;font-weight:850;letter-spacing:.16em;text-transform:uppercase}.home-bar:before{content:"\2190";font-size:1.15rem}.home-bar:focus-visible{outline:3px solid #fff;outline-offset:-5px}
.preview-capture .home-bar{display:none}.preview-capture .game-shell{min-height:100svh}
.game-shell{width:min(100%,480px);min-height:calc(100svh - 52px - env(safe-area-inset-top));margin:auto;padding:14px 18px calc(9px + env(safe-area-inset-bottom));display:flex;flex-direction:column}.topbar{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:11px}.game-identity{min-width:0;display:flex;flex-direction:column;gap:3px}.game-identity h1{margin:0;color:var(--gold);font:500 34px/1 Georgia,serif;letter-spacing:-1.4px}.player-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.player-name:empty{display:none}.top-actions{display:flex;gap:5px}.icon-button{width:40px;height:40px;border:1px solid #554625;background:#15130e;color:#ecd59c;border-radius:50%;display:grid;place-items:center;flex-shrink:0;font-size:23px;line-height:1;transition:background .2s,transform .3s var(--spring)}.icon-button:hover{background:#272218}.icon-button:active{transform:scale(.92)}.icon-button:disabled{opacity:.45}.info-icon{font:italic bold 21px Georgia,serif}
.scorebar{display:grid;grid-template-columns:repeat(3,1fr);margin-bottom:9px;padding-bottom:9px;border-bottom:1px solid var(--line)}.scorebar>div{text-align:center;border-right:1px solid var(--line)}.scorebar>div:last-child{border:0}.scorebar span{display:block;color:var(--muted);font-size:10px;letter-spacing:1.3px}.scorebar strong{display:flex;align-items:baseline;justify-content:center;font-size:24px;line-height:1.15;font-weight:550;font-variant-numeric:tabular-nums}.scorebar strong b{font:inherit}.scorebar small{color:var(--muted);font-size:13px;font-weight:500}
.play-area{display:flex;flex:1;min-height:0;flex-direction:column}.message{min-height:20px;margin:0 0 8px;color:#ddd3bd;text-align:center;font-size:13px;line-height:1.35}.dice{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;max-width:440px;width:100%;margin:auto}.die{position:relative;aspect-ratio:1;border:1px solid #806a39;border-radius:16px;background:linear-gradient(145deg,#f4ead0,#cdb983);box-shadow:0 7px 0 #6b5528,0 12px 22px #0009;color:#15120b;transition:transform .25s var(--spring),box-shadow .25s,border-color .25s;will-change:transform}.die:hover{border-color:#f0d98e}.die.is-held{transform:translateY(-5px);border-color:#fff0b2;box-shadow:0 4px 0 #99783a,0 0 0 3px #d9bc7844,0 10px 22px #0009}.die-face{position:absolute;inset:0;overflow:hidden;border-radius:inherit}.die.is-spinning{animation:reel-body .16s linear infinite;box-shadow:0 9px 0 #6b5528,0 16px 30px #000b}.die.is-spinning .die-face{animation:reel-face .13s linear infinite;filter:blur(.45px)}.die.is-settling{animation:die-lock .3s var(--spring)}.pip{position:absolute;width:14%;aspect-ratio:1;border-radius:50%;background:#18140c;box-shadow:inset 0 1px 1px #0008}.pip[data-position='tl']{left:22%;top:22%}.pip[data-position='tr']{right:22%;top:22%}.pip[data-position='ml']{left:22%;top:43%}.pip[data-position='mc']{left:43%;top:43%}.pip[data-position='mr']{right:22%;top:43%}.pip[data-position='bl']{left:22%;bottom:22%}.pip[data-position='br']{right:22%;bottom:22%}.hold-label{position:absolute;left:50%;bottom:-5px;transform:translate(-50%,100%);padding:2px 7px;border:1px solid #806a39;border-radius:999px;background:#111;color:var(--gold-soft);font-size:8px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;opacity:0}.die.is-held .hold-label{opacity:1}
.roll-button{display:flex;align-items:center;justify-content:center;gap:10px;width:min(100%,260px);min-height:45px;margin:16px auto 10px;border:1px solid var(--gold);border-radius:12px;background:var(--gold);color:#0c0b08;font-weight:850}.roll-button:hover{background:var(--gold-soft)}.roll-button:active{transform:scale(.98)}.roll-button:disabled{opacity:.45}.roll-button span:first-child{font-size:13px}.scorecard-heading,.bonus-row{display:flex;justify-content:space-between;align-items:center}.scorecard-heading{margin:0 2px 5px;color:var(--muted);font-size:10px;font-weight:800;letter-spacing:1.3px}.scorecard-heading span:last-child{color:var(--gold-soft);letter-spacing:.2px}.scorecard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 7px}.category{min-width:0;min-height:36px;padding:5px 8px;border:1px solid #554625;border-radius:9px;background:#12110e;display:flex;align-items:center;justify-content:space-between;gap:7px;color:#e7ddc8;text-align:left;font-size:12px;transition:border-color .2s,background .2s,color .2s,box-shadow .2s}.category:hover:not(:disabled){background:#282216;border-color:#b99a52}.category.is-available{border-color:#554625;background:#12110e}.category.is-scored{border-color:#f0d98e;background:linear-gradient(125deg,#b89243,#e0c277 55%,#a87e31);box-shadow:inset 0 1px #fff5bd99,0 2px 8px #0008;color:#0b0905}.category.is-scored .category-name:before{content:"✓ ";font-weight:950}.category-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.category-score{flex:0 0 28px;color:var(--gold-soft);font-size:14px;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}.category.is-scored .category-score{color:#0b0905}.category.is-just-scored{animation:score-lock .62s var(--spring)}.bonus-row{min-height:27px;margin-top:5px;padding:3px 8px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.bonus-row strong{color:var(--gold-soft)}.ad-reservation{display:grid;min-height:31px;place-items:center;margin-top:5px;border:1px dashed #41371f;border-radius:9px;color:#6e6759;font-size:8px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}
dialog{width:min(calc(100% - 28px),430px);max-height:calc(100dvh - 28px);margin:auto;overflow:auto;border:1px solid #9a7b3b;border-radius:20px;background:linear-gradient(145deg,#191713,#090909 70%);color:var(--ink);padding:22px;box-shadow:0 32px 110px #000e}dialog::backdrop{background:#000c;backdrop-filter:blur(8px)}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}.dialog-top h2,dialog h2{margin:0;color:var(--gold-soft);font:400 31px/1.05 Georgia,serif}.dialog-top .eyebrow{margin:0}.dialog-top .icon-button{width:38px;height:38px;font-size:17px}.switch-row{display:flex;min-height:52px;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line);cursor:pointer}.switch-row span{display:grid;gap:3px;font-size:14px}.switch-row small{color:var(--muted);font-size:11px;font-weight:400}.switch-row input{appearance:none;width:40px;height:24px;margin:0;flex:0 0 40px;border:1px solid #8e836d;border-radius:20px;background:#39372f;position:relative}.switch-row input:before{content:"";position:absolute;width:16px;height:16px;top:3px;left:3px;border-radius:50%;background:#f5f0e5;transition:transform .2s}.switch-row input:checked{background:var(--gold);border-color:var(--gold)}.switch-row input:checked:before{transform:translateX(16px);background:#111}.primary-button{display:flex;width:100%;min-height:49px;align-items:center;justify-content:center;border:1px solid var(--gold);border-radius:11px;background:var(--gold);color:#0a0906;font-weight:800}.primary-button:hover{background:var(--gold-soft)}#settings-form>.primary-button{margin-top:16px}.secondary-button{min-height:48px;border:1px solid #8f7543;border-radius:10px;background:transparent;padding:8px 12px}.dialog-buttons{display:flex;gap:8px;margin-top:22px}.dialog-buttons .primary-button{flex:1}.eyebrow{margin:0 0 9px;color:var(--gold);font-size:12px;font-weight:800;letter-spacing:1.5px}.record-panel{padding:14px;border:1px solid #4e422a;border-radius:12px;background:#090909}.record-grid{display:grid;grid-template-columns:1fr auto;gap:9px;color:#c9c0ae;font-size:13px}.record-grid strong{color:var(--gold-soft);font-size:14px;text-align:right}.dialog-note{margin:10px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.rules h3{margin:22px 0 8px;color:var(--gold-soft);font:400 24px/1.1 Georgia,serif}.rules p,dialog>p{color:#d6cebd;font-size:14px;line-height:1.55}.control-rule{display:flex;align-items:flex-start;gap:12px;margin:12px 0}.control-rule p{margin:5px 0}.control-symbol{flex:0 0 36px;height:36px;display:grid;place-items:center;border:1px solid #554625;border-radius:50%;background:#15130e;color:#ecd59c;font-size:22px}.sound-muted{opacity:.55}.result-dialog{text-align:center}.result-die{display:grid;width:70px;height:70px;place-items:center;margin:8px auto 16px;border:1px solid var(--gold);border-radius:17px;color:var(--gold);font-size:54px;line-height:1;box-shadow:0 0 35px #d9bc7844}.final-score{display:block;margin:12px 0;color:var(--gold-soft);font:400 58px/1 Georgia,serif}.result-best{padding:12px;border-radius:10px;background:#292318;color:var(--gold-soft)!important}.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation:none!important;transition-duration:.01ms!important}
@keyframes reel-body{0%{transform:translateY(-3px) rotate(var(--roll-start)) scale(1.015)}50%{transform:translateY(4px) rotate(var(--roll-end)) scale(.985)}100%{transform:translateY(-3px) rotate(var(--roll-start)) scale(1.015)}}
@keyframes reel-face{0%{transform:translateY(-13%);opacity:.72}50%{transform:translateY(13%);opacity:1}100%{transform:translateY(-13%);opacity:.72}}
@keyframes die-lock{0%{transform:translateY(-8px) scale(.92)}55%{transform:translateY(3px) scale(1.07)}78%{transform:translateY(-1px) scale(.985)}100%{transform:translateY(0) scale(1)}}
@keyframes score-lock{0%{transform:scale(.94);filter:brightness(1.55)}45%{transform:scale(1.035);box-shadow:0 0 22px #e8c86c88}100%{transform:scale(1);filter:brightness(1)}}
@media(max-width:370px){.game-shell{padding-inline:11px}.top-actions{gap:3px}.icon-button{width:36px;height:40px}.game-identity h1{font-size:29px}.dice{gap:6px}.category{padding-inline:6px;font-size:11px}.message{font-size:12px}}
@media(max-height:730px){.game-shell{padding-top:8px}.topbar{margin-bottom:7px}.scorebar{margin-bottom:6px;padding-bottom:6px}.message{margin-bottom:5px}.roll-button{min-height:40px;margin:12px auto 7px}.category{min-height:32px}.ad-reservation{min-height:24px}}
@media(min-width:700px) and (orientation:portrait){.game-shell{width:min(100%,744px);padding-inline:28px}.game-identity h1{font-size:42px}.dice{max-width:620px;gap:16px}.roll-button{margin-block:26px 18px}.scorecard{gap:9px 13px}.category{min-height:48px;padding:8px 13px;font-size:15px}.category-score{font-size:18px}.message{font-size:16px;margin-bottom:18px}.ad-reservation{min-height:42px;margin-top:12px}}
@media(min-width:800px) and (orientation:landscape){.game-shell{width:min(100%,900px);display:grid;grid-template-columns:1fr 1.2fr;grid-template-rows:auto auto 1fr auto;column-gap:24px}.topbar,.scorebar,.play-area,.ad-reservation{grid-column:1/-1}.play-area{display:grid;grid-template-columns:1fr 1.25fr;grid-template-rows:auto auto 1fr auto;column-gap:22px}.message,.dice,.roll-button{grid-column:1}.scorecard-heading,.scorecard,.bonus-row{grid-column:2}.scorecard-heading{grid-row:1}.scorecard{grid-row:2/4}.bonus-row{grid-row:4}.dice{align-self:start;margin-top:20px}.roll-button{align-self:start}.message{align-self:end}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}}
