@import url('./fonts/fonts.css');

/* A charcoal scorebook: printed labels, handwritten scores, one coral accent.
   Design variance 3 / motion 3 / density 8. Game motion stays in dice3d.js. */
:root{color-scheme:dark;--bg:#101214;--surface:#171a1d;--raised:#202428;--line:#34393e;--ink:#eceeed;--muted:#a4abae;--coral:#efa394;--current:#efa3940b;--font:'Barlow','Segoe UI',sans-serif;--edge:66px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.4 var(--font);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{cursor:default}a{color:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{transition:background .16s,color .16s}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--coral);outline-offset:3px}button:active:not(:disabled){transform:translateY(1px)}h1,h2,h3,p{margin:0}button[hidden],[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:-60px;left:16px;z-index:10;padding:10px;background:var(--coral);color:#241713}.skip-link:focus{top:8px}
.site-header{max-width:1680px;margin:auto;height:64px;padding:0 28px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.game-identity{display:flex;align-items:center;gap:20px;min-width:0}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;font-size:19px;font-weight:600;letter-spacing:-.6px}.brand img{width:23px;height:23px}.identity-divider{height:22px;width:1px;background:var(--line)}h1{font-size:20px;font-weight:500;letter-spacing:-.5px;white-space:nowrap}nav{display:flex;align-items:center;gap:22px}.text-button,.all-games{padding:8px 0;border:0;background:none;text-decoration:none;color:var(--muted);font-size:12px;white-space:nowrap;min-height:38px}.outline-button{border:1px solid #545b60;border-radius:4px;background:none;padding:8px 13px;font-size:12px;white-space:nowrap;min-height:36px}.text-button:hover,.all-games:hover{color:var(--ink)}.outline-button:hover{background:var(--raised)}main{max-width:1680px;margin:auto;padding:0 28px}
.players-overview{display:grid;grid-template-columns:repeat(var(--players,1),minmax(0,1fr));gap:0;margin:18px 0 22px;border-bottom:1px solid var(--line)}.player-standing{position:relative;display:flex;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:12px 20px 15px;border-right:1px solid var(--line);border-top:1px solid transparent}.player-standing:last-child{border-right:0}.player-standing.is-current{background:linear-gradient(180deg,#efa3940b,transparent);border-top-color:var(--coral)}.player-standing.is-current:before{content:'';position:absolute;top:-1px;left:18px;right:18px;height:1px;background:var(--coral);box-shadow:0 0 9px 1px #efa39445;pointer-events:none}.standing-person{min-width:0}.player-name{font-size:15px;font-weight:600;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-status{font-size:11px;color:var(--muted);display:block;margin-top:3px}.is-current .player-status{color:var(--coral)}.standing-total{font-family:'Caveat',cursive;font-size:38px;font-weight:500;letter-spacing:-1px;line-height:1;font-variant-numeric:tabular-nums}.standing-total small{font-family:var(--font);font-size:10px;letter-spacing:0;color:var(--muted);font-weight:400;margin-left:5px}body[data-players="1"] .players-overview{grid-template-columns:minmax(0,300px);margin:12px 0 16px}body[data-players="1"] .player-standing{padding:8px 12px 12px}body[data-players="1"] .standing-total{font-size:28px}
.game-layout{display:grid;grid-template-columns:minmax(270px,.85fr) minmax(0,2fr);gap:26px;align-items:start}.play-column{min-width:0}.table{background:#1b2023;border:1px solid #3d4549;border-radius:12px;padding:20px 22px 18px;box-shadow:inset 0 0 0 4px #161a1d,inset 0 0 0 5px #30373c;position:relative}.table-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.table-top h2{font-size:16px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.round{color:var(--muted);font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums}.dice-tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;max-width:278px;margin:37px auto 0}.die-wrap{min-width:0;container-type:inline-size;--edge:68cqw}.die,.die.held{width:100%;aspect-ratio:1;min-width:0;perspective:650px}.die-lift{left:16%;top:16%}.die-shadow{background:#050607;bottom:0}.die-label{height:19px;text-align:center;font-size:9px;color:var(--coral);padding-top:8px;letter-spacing:.5px}.die.held .die-face{background:linear-gradient(140deg,#b57367,#805045);border-color:#a86b5e;box-shadow:inset 0 0 0 1px #ffcab733}.die.held .die-face.is-top{background:linear-gradient(140deg,#f7bcac,#dea08f);border-color:#ffd0bd;box-shadow:inset 0 0 0 1px #ffe0d588}.die.held .die-face .pip{background:#49302a;box-shadow:inset 0 1px 2px #29100c,0 1px 0 #ffd4c388}.die:not(:disabled):hover .die-face.is-top{border-color:#f5b8aa}.die:active:not(:disabled){transform:none}.hold-instruction{margin:20px 0 14px;text-align:center;font-size:11px;color:var(--muted);min-height:16px}.roll-area{text-align:center}.roll-button{display:block;width:100%;max-width:280px;margin:auto;border:1px solid #f8bdaf;border-radius:5px;background:var(--coral);color:#2b1a16;padding:11px 10px;min-height:44px;font-size:14px;font-weight:600;box-shadow:0 2px 0 #754d42}.roll-button:disabled{opacity:.5;box-shadow:none}.roll-button:hover:not(:disabled){background:#f5b7a9}.roll-count{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:12px;font-size:11px;color:var(--muted)}.roll-count>span:last-child{margin-left:6px}.roll-dot{height:4px;width:4px;border:1px solid var(--coral);border-radius:50%;background:var(--coral)}.roll-dot.used{background:none;border-color:#737c81}.dice-token-bank{margin:13px 0 0;padding-top:11px;border-top:1px solid #3c4448;text-align:center}.dice-token-bank strong{color:var(--coral);font-size:12px;font-weight:500}.dice-token-bank span{display:block;font-size:10px;line-height:1.4;color:var(--muted);margin-top:3px}
.hint-note{padding:16px 2px 0}.hint-note h3{font-size:12px;font-weight:600}.hint-note p{font-size:11px;line-height:1.5;color:var(--muted);margin-top:5px;max-width:46ch}.suggestions{display:flex;flex-wrap:wrap;gap:5px 12px;margin-top:9px}.suggestion{display:flex;gap:8px;align-items:center;font-size:11px;border:0;border-bottom:1px solid #61544e;background:none;padding:5px 0;color:var(--ink);min-height:30px}.suggestion strong{color:var(--coral);font-weight:500}.suggestion:hover{border-color:var(--coral)}

/* The two leaves share a subtle paper grain and a recessed binding. */
.score-sheet{min-width:0}
.score-panels{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:22px;padding:7px;background:#181a18;border:1px solid #373a34;border-radius:4px 9px 9px 4px;box-shadow:0 12px 26px #0003,inset 0 0 0 3px #121412;position:relative;isolation:isolate}
.score-panels:before{content:'';position:absolute;inset:7px;z-index:-1;background:linear-gradient(90deg,transparent 44%,#080a08 47%,#33362e 49%,#101210 50%,transparent 53%);pointer-events:none}
.score-panel{min-width:0;padding:12px 14px 10px;position:relative;background-color:#282a25;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='paper'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23ffffff' opacity='.045' filter='url(%23paper)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");border:1px solid #494b41;border-radius:1px 3px 3px 1px;box-shadow:1px 2px #151712,2px 3px #55564b,3px 4px #171913;color:#ede9dc;--muted:#b4b5a7}
.panel-heading{height:40px;display:flex;align-items:baseline;justify-content:space-between;gap:8px;border-bottom:3px double #77786a}
.panel-heading h2{font:italic 23px/1.2 Georgia,'Times New Roman',serif;letter-spacing:-.6px;white-space:nowrap}
.panel-heading>span{font-size:10px;color:var(--muted);text-align:right}
.score-table{width:100%;border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums}
.score-table caption{caption-side:top}.score-table th,.score-table td{padding:0;text-align:center;font-weight:400}
.score-table th:first-child{width:35%;text-align:left;padding-right:8px}
.score-table thead{height:46px}.score-table .category-heading{color:var(--muted);font-size:10px;font-weight:400}
.player-heading{font-size:12px;vertical-align:middle;position:relative}
.player-heading:not(.is-current):after{content:' ';display:block;height:17px}.player-heading>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 3px;font-weight:500}
.player-heading.is-current>span{color:#f3bcad;text-decoration:underline;text-decoration-color:#efa394;text-decoration-thickness:2px;text-underline-offset:5px}
.player-heading>small{display:block;font-size:8px;line-height:12px;margin-top:5px;color:#f3bcad;font-weight:400}
.score-table tbody th{font-size:12px;color:#d5d4c7;line-height:1.2;font-weight:400}
.target-label{font-size:9px;color:var(--muted);float:right;margin-top:2px}
.score-table .score-fixed,.score-choice{display:flex;align-items:center;justify-content:center;gap:4px;width:100%;min-height:30px;font-size:13px;font-variant-numeric:tabular-nums}
.score-fixed{color:#b3b5a5}.is-booked .score-fixed{color:#f4efdd}
.score-fixed .cell-value{font:500 23px/1 'Caveat',cursive;min-width:20px}
.score-fixed .cell-value.is-empty{height:17px;min-width:15px;width:35%;max-width:26px;border-bottom:1px solid #73756655}
.score-choice{border:0;background:none;color:#b4b5a7;padding:3px;position:relative;border-radius:50%}
.score-choice .cell-value{min-width:22px;line-height:20px;border-bottom:1px dotted #878978}
.score-choice.has-points{color:#f5b8a8}.score-choice.has-points .cell-value{border-color:#c58c7b}
.score-choice:hover{background:#efa39417;color:#ffe0d3;box-shadow:inset 0 0 0 1px #efa39466}
.score-choice:focus-visible{outline-offset:-2px}
.cell-delta{font:400 9px/1 var(--font);color:#c7cdbc;min-width:12px}.cell-delta.is-behind{color:#f5b8a8}
.upper-table .score-fixed,.upper-table .score-choice{min-height:37px}
.upper-table tbody tr:not(:last-child) th{border-bottom:1px solid #77786a21}
.score-table tfoot{border-top:3px double #77786a}
.summary-row th,.summary-row td{height:32px;font-size:12px}.summary-row td{font:500 21px/1 'Caveat',cursive}
.summary-row th{color:var(--muted)}.summary-row .out-of{color:#b4b5a7;font:400 9px var(--font);margin-left:2px}
.pace-row td{color:#f5b8a8}.grand-total th,.grand-total td{height:41px;color:#f4efdd}.grand-total td{font-size:29px}
.score-table .grand-total th{font:italic 19px Georgia,serif;color:#ede9dc}
.bonus-guidance{display:flex;align-items:center;gap:12px;padding:14px 0 8px;border-top:1px solid #77786a66;margin-top:8px}
.bonus-mark{font:500 27px/1 'Caveat',cursive;flex:0 0 44px;height:44px;display:grid;place-items:center;border:3px double #aeb49d;border-radius:50%;color:#d9ddc9;transform:rotate(-7deg)}
.bonus-mark.is-behind{color:#f5b8a8;border-color:#c18f7d}.bonus-guidance strong{font-size:12px;font-weight:500}.bonus-guidance p{font-size:11px;color:var(--muted);line-height:1.5;margin-top:4px}
.score-legend{font-size:9px;color:#b4b5a7;padding-top:8px}.score-legend span{padding-left:10px;color:#f5b8a8}
.sheet-footnote{font-size:10px;color:#a1aaaf;margin-top:13px}.score-tabs{display:none}footer{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid #292f33;padding:12px 0;margin-top:20px;color:#929ca2;font-size:10px}footer nav{gap:15px}footer a{text-decoration:none}footer a:hover{color:var(--coral)}
/* Dialogs and feedback share the same typography and restrained surfaces. */
dialog{width:min(500px,calc(100% - 28px));max-height:90dvh;overflow:auto;border:1px solid #50585d;border-radius:8px;padding:30px;color:var(--ink);background:#1b1f23;box-shadow:0 20px 70px #080a0c99}dialog::backdrop{background:#080b0ed9;backdrop-filter:blur(3px)}.close-modal{position:absolute;right:10px;top:8px;border:0;background:none;font-size:24px;line-height:32px;width:32px;color:#b5bdc2}.modal-kicker{color:var(--coral);font-size:10px;letter-spacing:1px;margin-bottom:10px}dialog h2{font-size:27px;font-weight:500;letter-spacing:-.5px;margin-bottom:14px}dialog p,dialog li{font-size:13px;line-height:1.65}dialog ol{padding-left:20px}.rules-details{font-size:12px;border-top:1px solid var(--line);padding:14px 0}.rules-details p{margin-top:8px}.rules-details summary{cursor:pointer}.rules-details dl{display:grid;grid-template-columns:1fr 2fr;gap:8px;font-size:11px}.rules-details dd{margin:0;color:var(--muted)}.modal-button{display:block;width:100%;margin-top:14px;border:1px solid transparent;border-radius:4px;background:var(--coral);color:#291b16;font-weight:600;min-height:44px;padding:10px 16px}.secondary-button{background:#2a3035;color:var(--ink);border-color:#4b545b}.player-count{display:flex;gap:8px;margin:18px 0}.player-count button{flex:1;border:1px solid #545d64;border-radius:4px;background:none;padding:10px 3px;font-size:12px}.player-count .selected{background:var(--coral);color:#291b16;border-color:var(--coral)}.name-field{display:flex;align-items:center;gap:12px;margin:10px 0}.name-field label{font-size:12px;min-width:60px}.name-field input{padding:9px;border:1px solid #556068;border-radius:4px;background:#111619;color:var(--ink);width:100%;min-width:0}.setup-note{font-size:11px!important;color:var(--muted);margin-top:14px}.token-setting{display:flex;gap:12px;align-items:flex-start;margin:20px 0;padding:14px;border:1px solid #505b62;border-radius:5px;cursor:pointer}.token-setting input{width:18px;height:18px;flex:0 0 18px;margin:2px 0;accent-color:var(--coral)}.token-setting strong{font-size:14px;font-weight:600}.token-setting small{display:block;font-size:12px;line-height:1.6;color:var(--muted);margin-top:5px}.token-setting:has(input:checked){border-color:var(--coral)}.result-row{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}.result-row strong{color:var(--coral)}.results-icon{display:none}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%,12px);opacity:0;pointer-events:none;background:#2a3034;color:var(--ink);border:1px solid #59636b;border-radius:6px;max-width:calc(100% - 24px);padding:12px 20px;font-size:13px;text-align:center;z-index:20;transition:transform .18s,opacity .18s}.toast.show{opacity:1;transform:translate(-50%,0)}.confetti{pointer-events:none;position:fixed;inset:0;overflow:hidden;z-index:19}.confetti i{position:absolute;left:50%;top:48%;width:8px;height:5px;background:var(--c);animation:confetti 1.25s ease-out forwards}@keyframes confetti{from{transform:translate(0,0) rotate(0);opacity:1}to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
@media(min-width:1101px) and (max-height:850px){.site-header{height:54px}.players-overview{margin:10px 0 14px}.player-standing{padding-top:8px;padding-bottom:10px}.standing-total{font-size:28px}.table{padding:16px 18px}.dice-tray{max-width:230px;margin-top:26px;gap:10px 16px}.hold-instruction{margin-top:12px}.hint-note{padding-top:12px}.panel-heading{height:33px}.score-table thead{height:39px}.score-table .score-fixed,.score-table .score-choice{min-height:29px}.upper-table .score-fixed,.upper-table .score-choice{min-height:34px}.bonus-guidance{padding-top:12px;margin-top:7px}.score-legend{padding-top:4px}footer{margin-top:6px;padding:9px 0}}
@media(max-width:1250px){.site-header,main{padding-left:20px;padding-right:20px}.game-layout{gap:20px;grid-template-columns:minmax(250px,.78fr) minmax(0,2fr)}.score-panels{gap:16px}.score-panel{padding-left:10px;padding-right:10px}.panel-heading h2{font-size:21px}.panel-heading>span{max-width:90px;font-size:9px}.score-table tbody th{font-size:11px}.score-table th:first-child{width:34%}.cell-delta{font-size:8px}.score-table .score-fixed,.score-choice{gap:3px}}
@media(max-width:1100px){.game-layout{grid-template-columns:minmax(260px,.8fr) minmax(0,1.25fr);gap:28px}.score-panels{grid-template-columns:1fr;gap:0}.score-panels:before{display:none}.score-panel{padding:14px 16px 12px}.score-tabs{display:flex;gap:18px;border-bottom:1px solid var(--line);margin-bottom:12px}.score-tabs button{padding:8px 0;border:0;border-bottom:2px solid transparent;color:var(--muted);background:none;font-size:12px;min-height:38px}.score-tabs button[aria-pressed="true"]{border-color:var(--coral);color:var(--ink)}body[data-score-section="upper"] .lower-panel,body[data-score-section="lower"] .upper-panel{display:none}.score-table tbody th{font-size:12px}.score-table th:first-child{width:34%}.panel-heading>span{max-width:none;font-size:10px}.score-table .score-fixed,.score-choice{min-height:33px}.upper-table .score-fixed,.upper-table .score-choice{min-height:40px}.cell-delta{font-size:9px}.all-games{display:none}}
@media(max-width:700px){.site-header{height:54px;padding:0 14px;gap:8px}.game-identity{gap:8px}.brand span,.identity-divider{display:none}.brand img{width:22px;height:22px}h1{font-size:17px}.site-header nav{gap:13px}.text-button{font-size:11px}.outline-button{font-size:11px;padding:7px 9px}.site-header #sound{font-size:0;width:24px}.site-header #sound:before{content:'♪';font-size:18px}.site-header #sound[aria-pressed="false"]:before{text-decoration:line-through}.players-overview{margin:10px 0 12px}.player-standing{padding:8px 7px 10px;display:block}.player-name{font-size:12px}.player-status{font-size:9px;line-height:1.4;min-height:25px;margin-top:3px}.standing-total{font-size:24px;margin-top:5px;display:block}.standing-total small{font-size:9px}.player-standing.is-current:before{left:4px;right:4px}body[data-players="1"] .players-overview{margin:8px 0 10px;grid-template-columns:1fr}body[data-players="1"] .player-standing{display:flex;padding:7px 10px}body[data-players="1"] .player-status{min-height:0}body[data-players="1"] .standing-total{margin:0;font-size:24px}main{padding:0 14px}.game-layout{grid-template-columns:1fr;gap:16px}.table{padding:14px 14px 12px;border-radius:8px}.table-top h2{font-size:14px}.round{font-size:10px}.dice-tray{grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;max-width:none;margin:30px 4px 0}.die-wrap{--edge:73cqw}.die-lift{left:13.5%;top:13.5%}.die-label{font-size:7px;height:15px;padding-top:7px}.hold-instruction{margin:12px 0 10px;font-size:10px}.roll-button{max-width:260px;min-height:42px;padding:9px}.roll-count{margin-top:9px;font-size:10px}.dice-token-bank{display:flex;justify-content:center;align-items:center;gap:10px;padding-top:8px;margin-top:9px}.dice-token-bank strong{font-size:11px;white-space:nowrap}.dice-token-bank span{font-size:9px;text-align:left;margin:0;max-width:180px}.hint-note{padding:10px 0 0}.hint-note h3{display:none}.hint-note p{font-size:11px;margin:0;max-width:none}.suggestions{margin-top:3px;gap:5px 13px}.suggestion{font-size:11px;min-height:30px}.score-tabs{margin-bottom:10px}.panel-heading{height:35px}.score-table thead{height:40px}.score-table th:first-child{width:31%}.score-table .score-fixed,.score-choice{min-height:38px;font-size:13px}.cell-delta{font-size:8px}.upper-table .score-fixed,.upper-table .score-choice{min-height:40px}.bonus-guidance{margin-top:6px;padding-top:12px}footer{margin-top:16px;align-items:flex-start;gap:10px}footer nav{justify-content:flex-end;flex-wrap:wrap;gap:7px 12px;font-size:9px}#save-status{font-size:9px;max-width:85px;flex-shrink:0}dialog{padding:25px 22px}}
@media(pointer:coarse){.score-choice{min-height:42px!important}}

/* A stitched felt tray and small playing tiles, lit from above. */
.table{background-color:#262c26;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='felt'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.6' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath d='M0 0h120v120H0z' fill='%23fff' opacity='.09' filter='url(%23felt)'/%3E%3C/svg%3E");border:6px solid #34352e;border-radius:18px;box-shadow:0 4px 0 #171913,0 6px 12px #0004,inset 0 2px 9px #0007;position:relative}
.table:before{content:'';position:absolute;inset:5px;border:1px dashed #93957c66;border-radius:9px;pointer-events:none}
.table-top h2{font:italic 20px Georgia,serif;color:#eee9d9}.round{color:#b8bbaa}.hold-instruction{color:#bdc1af}.roll-button{border:1px solid #f5bcaa;border-bottom-color:#936457;border-radius:7px;background:linear-gradient(#edb09e,#d69b88);color:#34251e;box-shadow:0 4px 0 #795545,0 6px 8px #0004,inset 0 1px #ffe2cc80;min-height:46px;transition:transform 150ms ease-out,background 150ms ease-out,box-shadow 150ms ease-out}
.roll-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #795545,inset 0 1px #ffe2cc80}.roll-button:disabled{box-shadow:none}
.roll-count{color:#b8bbaa}.roll-dot{height:7px;width:7px;box-shadow:0 1px 2px #0008}.dice-token-bank{border-top:1px solid #9a9d8145}.dice-token-bank strong{display:inline-block;font-size:13px;font-weight:500}.dice-token-bank span{color:#b8bbaa}
.hint-note{padding-top:18px}.hint-note h3{font:italic 17px Georgia,serif;color:#dedbcc}.hint-note p{margin-top:6px}
.suggestions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:12px;padding-bottom:4px}
.suggestion{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:70px;padding:9px 5px;border:1px solid #bcb39d;border-radius:5px;background:linear-gradient(145deg,#e1dac6,#c9c1aa);color:#38392e;text-align:center;font-size:12px;font-weight:500;line-height:1.2;box-shadow:0 4px 0 #797461,0 6px 9px #0005,inset 0 1px #fff7dd;transition:transform 150ms ease-out,box-shadow 150ms ease-out}
.suggestion strong{font:500 27px/1 'Caveat',cursive;color:#5e483c}.suggestion:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #797461,0 2px 3px #0004}.suggestion:disabled{opacity:.5;cursor:default}.suggestion:focus-visible{outline-offset:5px}
@media(hover:hover) and (pointer:fine){.suggestion:hover:not(:disabled){transform:translateY(-2px);border-color:#f2bba6;box-shadow:0 6px 0 #797461,0 8px 12px #0005,inset 0 1px #fff7dd}.suggestion:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #797461}}
.mini-stamp{display:inline-block;padding:2px 4px;border:1px solid #cfaa8d;border-radius:2px;color:#f2c2a8;font:500 19px/1 'Caveat',cursive;transform:rotate(-4deg)}.mini-stamp.no-bonus{font:500 9px/1.1 var(--font);color:#c6c4b5;border-color:#aaa994;max-width:48px}
.bonus-stamp{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;flex:0 0 116px;min-height:62px;padding:7px;border:3px double #e5b291;border-radius:3px;transform:rotate(-5deg);color:#f0c2a5;text-align:center}.bonus-stamp strong{font:italic 17px/1.1 Georgia,serif}.bonus-stamp>span{font:500 11px/1.2 var(--font)}.bonus-stamp.no-bonus{border-color:#b7b5a1;color:#d1cfbb}.bonus-guidance.is-achieved,.bonus-guidance.is-unreachable{padding-top:16px;padding-bottom:14px}.bonus-guidance.is-achieved>div,.bonus-guidance.is-unreachable>div{min-width:0}
.bonus-celebration{position:absolute;z-index:25;inset:0;display:grid;place-items:center;pointer-events:none}.bonus-award{width:min(310px,calc(100vw - 48px));padding:24px 30px 28px;display:flex;align-items:center;flex-direction:column;color:#f2e7d3;background:#303329;border:1px solid #969278;border-radius:5px;box-shadow:0 16px 70px #0009,inset 0 0 0 5px #303329,inset 0 0 0 6px #8d8c6d80;text-align:center;animation:award-arrive 260ms ease-out both}.award-player{font:italic 22px Georgia,serif;max-width:100%;overflow-wrap:anywhere}.award-points{font:500 90px/1.2 'Caveat',cursive;color:#f1b39a}.bonus-award .bonus-stamp{flex:none;min-width:210px}.bonus-award .bonus-stamp strong{font-size:23px}.bonus-award .bonus-stamp>span{font-size:12px}dialog .bonus-award{width:100%;margin:0 0 20px;box-shadow:none;padding:16px}dialog .award-points{font-size:64px}
@keyframes award-arrive{from{opacity:0;transform:translateY(-10px) scale(1.06) rotate(-3deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@media(min-width:1101px) and (max-height:850px){.table{padding:12px 16px}.dice-tray{margin-top:22px}.hint-note{padding-top:14px}.suggestions{margin-top:10px}.suggestion{min-height:64px}}
@media(min-width:1101px) and (max-height:740px){.table{padding-top:10px;padding-bottom:10px}.suggestion{min-height:60px}.hint-note h3{font-size:15px}.hint-note{padding-top:12px}}
@media(max-width:700px){.table{padding:12px 12px 10px;border-width:5px;border-radius:13px}.table-top h2{font-size:17px}.suggestions{gap:8px;margin-top:10px}.suggestion{min-height:64px;padding:8px 4px;font-size:11px}.suggestion strong{font-size:25px}.hint-note{padding-top:12px}.bonus-guidance{gap:10px}.bonus-stamp{flex-basis:105px}.bonus-stamp strong{font-size:15px}}


/* Category receipts share the bonus stamp's ink, paper and brief press motion. */
.score-award{padding:18px 26px 24px;animation:award-arrive 260ms ease-out both,award-leave 180ms ease-in var(--award-hold) forwards}
.score-emblem{order:1;display:block;width:144px;height:90px;color:#e0ba9e;margin:8px 0 0;filter:drop-shadow(0 1px #10130e)}
.score-award .award-player{font-size:15px;order:0;color:#c9c7b6}.score-award .award-points{order:3;font-size:44px;line-height:1.1;margin:14px 0 0;color:#f2ce7b;text-shadow:0 1px 1px #17190f,0 0 16px #e9b95338}.score-award .bonus-stamp{order:2;min-width:220px;max-width:100%;min-height:90px;padding:12px 8px;gap:9px;transform:rotate(-3deg)}.score-award .bonus-stamp strong{font-size:34px;line-height:1.05;text-wrap:balance;color:#f4d4b8}.score-award .bonus-stamp>span{font-size:11px}
.score-award.is-major{border-color:#d5ad8b}.score-award.is-major .award-points{font-size:44px}.score-award.is-zero .score-emblem,.score-award.is-zero .award-points,.score-award.is-zero .bonus-stamp{color:#c0c2ae;border-color:#9b9d87}
dialog .score-award{animation:award-arrive 260ms ease-out both}dialog .score-award .score-emblem{width:112px;height:70px}dialog .score-award .award-points{font-size:44px}
@keyframes award-leave{to{opacity:0;transform:translateY(5px) scale(.98)}}
@media(max-width:380px){.score-award{padding:16px 20px 22px}.score-award .bonus-stamp{min-width:0;width:100%}.score-award .bonus-stamp strong{font-size:30px}}

.score-fixed .cell-value.is-failed{font:500 10px/1.2 var(--font);color:#bdbda9;min-width:0;border-bottom:1px solid #bdbda960;transform:rotate(-4deg)}
.score-award.is-zero .award-points{font:italic 22px/1.3 Georgia,serif;margin:14px 0 0;text-shadow:none}
@media(max-width:700px){.score-fixed:has(.is-failed){flex-direction:column;gap:3px}}
.score-panel>.bonus-celebration{z-index:5}
.score-panel .score-award{width:min(310px,calc(100% - 24px))}
.score-panel .score-award .bonus-stamp{min-width:0;width:100%}

/* One tabletop resource row: unused throws and the player's saved token bank. */
.turn-resources{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:15px auto 0;max-width:280px;min-height:44px}
.turn-resources .roll-count{display:grid;grid-template-columns:repeat(3,24px) auto;gap:5px;align-items:center;margin:0;text-align:left;justify-content:start}
.resource-label{font:500 10px/1.2 var(--font);color:#c7c8b4}.roll-count>.resource-label{grid-column:1/-1;margin:0 0 1px}
.turn-resources .roll-dot{display:block;height:24px;width:24px;border:0;border-radius:0;background:none;box-shadow:none}.roll-dot svg{display:block;width:24px;height:24px;filter:drop-shadow(0 2px 1px #080b08)}
.roll-dot rect{fill:#e6ddc5;stroke:#c1b89e;stroke-width:1}.roll-dot circle{fill:#454839}.roll-dot .throw-cross{display:none}.roll-dot.used rect{fill:#34392f;stroke:#6c7360}.roll-dot.used circle{fill:#727963}.roll-dot.used .throw-cross{display:block;stroke:#a0a68f;stroke-width:1.5}.roll-dot.used svg{filter:none}
.turn-resources #roll-text{font-size:10px;color:#c7c8b4;white-space:nowrap;margin:0 0 0 3px}
.turn-resources .dice-token-bank{display:flex;align-items:center;gap:7px;border:0;padding:0;margin:0;text-align:left;flex-shrink:0}.dice-token-bank .dice-token-coin{display:grid;place-items:center;width:40px;height:40px;margin:0;border:3px double #e4aa91;border-radius:50%;background:#9b6550;box-shadow:0 3px 0 #583e31,0 4px 5px #0005,inset 0 0 0 3px #b77b60;color:#ffdfbd}
.dice-token-coin #dice-token-count{font:500 25px/1 'Caveat',cursive;color:inherit}.dice-token-bank .resource-label{margin:0;font-size:10px;color:#c7c8b4}.dice-token-bank.is-empty .dice-token-coin{background:#33382e;border-color:#8d957d;box-shadow:0 2px 0 #1c2119,inset 0 0 0 3px #414738;color:#a7af97}
.suggestion>span{font:italic 18px/1.15 Georgia,serif;text-wrap:balance}.suggestion strong{font:500 15px/1.2 var(--font);color:#695c46}.suggestion{gap:7px;min-height:74px}
@media(max-width:700px){.turn-resources{margin-top:13px;gap:10px}.suggestion>span{font-size:16px}.suggestion strong{font-size:13px}.suggestion{min-height:72px}}
@media(min-width:1101px) and (max-height:740px){.suggestion{min-height:64px}.suggestion>span{font-size:16px}.turn-resources{margin-top:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}

@media(min-width:1101px) and (max-height:740px){.site-header{height:48px}.players-overview{margin:8px 0 12px}.score-table .score-fixed,.score-table .score-choice{min-height:25px}.score-panel{padding-top:10px;padding-bottom:8px}.score-fixed .cell-value{font-size:22px}.upper-table .score-fixed,.upper-table .score-choice{min-height:32px}.grand-total th,.grand-total td{height:36px}.table{padding-top:8px;padding-bottom:8px}.dice-tray{max-width:210px;margin-top:24px}.hint-note{padding-top:10px}footer{margin-top:6px}}

/* Readable print and chalk: secondary information still has a clear voice. */
:root{--muted:#c0c6c8}
body{font-size:16px}
.text-button,.all-games,.outline-button{font-size:14px}
.player-name{font-size:17px}.player-status{font-size:13px}.standing-total small{font-size:12px}
.round,.hold-instruction{font-size:14px;color:#d7dacb}.die-label{font-size:11px}
.roll-button{font-size:18px}.hint-note p{font-size:14px;color:#c7cdcf}.hint-note h3{font-size:19px}
.score-panel{--muted:#d0d0c2}
.panel-heading>span{font-size:12px}.score-table .category-heading{font-size:12px}
.player-heading{font-size:15px}.player-heading>small{font-size:11px}
.score-table tbody th{font-size:15px;color:#eeeadd;line-height:1.2}
.target-label{font-size:11px}.score-table .score-fixed,.score-choice{font-size:16px}
.score-fixed .cell-value{font-size:27px}.cell-delta{font-size:11px;color:#dce1ce}
.score-choice{color:#d0d0c2}.score-choice.has-points{color:#ffd0be}
.summary-row th{font-size:15px}.summary-row td{font-size:25px}.summary-row .out-of{font-size:12px;color:#d0d0c2}
.bonus-guidance strong{font-size:15px}.bonus-guidance p{font-size:14px}.score-legend{font-size:12px;color:#d0d0c2}
.sheet-footnote{font-size:13px;color:#c0c6c8}footer,footer nav,#save-status{font-size:12px;color:#b9c1c5}
.resource-label,.dice-token-bank .resource-label,.turn-resources #roll-text{font-size:13px;color:#e0e1d2}
.suggestion strong{font-size:16px;color:#4d412f}.suggestion>span{font-size:19px}
.score-fixed .cell-value.is-failed{font-size:12px;color:#d8d8c9}.mini-stamp.no-bonus{font-size:11px}
.score-award .award-player{font-size:18px;color:#dedccd}.score-award .bonus-stamp>span{font-size:14px}
.score-tabs button{font-size:15px}
dialog p,dialog li,.rules-details,.rules-details dl{font-size:15px}.setup-note{font-size:14px!important}
.name-field label,.player-count button,.token-setting small{font-size:14px}.token-setting strong{font-size:16px}
@media(min-width:1101px){.score-table th:first-child{width:40%}.panel-heading{height:auto;min-height:36px;flex-wrap:wrap;padding-bottom:5px}.panel-heading>span{max-width:none}.score-table thead{height:44px}}
@media(max-width:700px){.player-name{font-size:14px}.player-status{font-size:12px}.standing-total small{font-size:11px}.text-button,.outline-button{font-size:13px}.site-header nav{gap:10px}.round{font-size:13px}.hold-instruction{font-size:13px}.die-label{font-size:9px}.hint-note p{font-size:14px}.suggestion>span{font-size:17px}.suggestion strong{font-size:15px}.score-table tbody th{font-size:14px}.score-table th:first-child{width:35%}.player-heading{font-size:14px}.cell-delta{font-size:10px}.score-legend{font-size:11px}.bonus-guidance p{font-size:13px}.panel-heading>span{font-size:11px}.turn-resources{gap:8px}.turn-resources #roll-text{font-size:12px}footer nav,#save-status{font-size:11px}}
@media(max-width:380px){.turn-resources .roll-count{grid-template-columns:repeat(3,24px);gap:4px}.turn-resources #roll-text{grid-column:1/-1;margin:3px 0 0}.player-heading{font-size:12px}.score-fixed .cell-value{font-size:24px}.score-table .score-fixed,.score-choice{gap:2px}.cell-delta{font-size:9px}.score-fixed .cell-value.is-failed{font-size:10px}.panel-heading h2{font-size:21px}}

/* A single flash of gold foil, contained on the receipt rather than the board. */
.score-award{position:relative;isolation:isolate;overflow:hidden}
.score-award:not(.is-zero):before{content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;border:1px solid #edcc83;box-shadow:inset 0 0 26px #e6bf6140;opacity:0;animation:stamp-warmth 1100ms ease-out 120ms both}
.score-award:not(.is-zero):after{content:'';position:absolute;inset:-30% -60%;pointer-events:none;background:linear-gradient(110deg,transparent 39%,#fff0c422 48%,#fff6d640 50%,#efd18a18 53%,transparent 62%);transform:translateX(-65%);opacity:0;animation:stamp-foil 850ms ease-out 160ms both}
.score-award.is-major:not(.is-zero):before{box-shadow:inset 0 0 42px #edc66a55;animation-duration:1800ms}
.score-award.is-major:not(.is-zero):after{animation-duration:1200ms}
@keyframes stamp-warmth{0%{opacity:0}22%{opacity:1}100%{opacity:0}}
@keyframes stamp-foil{0%{opacity:0;transform:translateX(-65%)}20%{opacity:1}75%{opacity:.7}100%{opacity:0;transform:translateX(65%)}}
@media(prefers-reduced-motion:reduce){.score-award:before,.score-award:after{display:none}}

/* Earned tokens settle beside the bank, labelled for the player who saved them. */
.turn-resources .dice-token-bank{position:relative}
.dice-token-bank .token-award{position:absolute;bottom:0;right:0;display:flex;align-items:center;gap:9px;width:max-content;max-width:250px;padding:8px 12px;background:#30372b;border:1px solid #c6ad79;border-radius:7px;box-shadow:0 5px 16px #0006;color:#f5e6c5;pointer-events:none;animation:token-arrive 320ms ease-out both,token-leave 220ms ease-in 2150ms forwards;z-index:3}
.token-award>span:last-child{font-size:14px;color:#f5e6c5;margin:0;overflow-wrap:anywhere}
.dice-token-bank .earned-coin{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;margin:0;border:3px double #efc6a0;border-radius:50%;background:#9b6550;color:#fff0ce;font:500 23px/1 'Caveat',cursive;box-shadow:0 2px 0 #583e31,0 0 16px #edc66a35;animation:coin-settle 550ms cubic-bezier(.2,.8,.25,1) both}
@keyframes token-arrive{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes coin-settle{from{transform:translateY(-15px) rotate(-35deg) scale(.8)}65%{transform:translateY(2px) rotate(5deg) scale(1.05)}to{transform:none}}
@keyframes token-leave{to{opacity:0;transform:translateY(5px)}}
@media(prefers-reduced-motion:reduce){.token-award,.earned-coin{animation:none!important}}

/* A discreet printed information mark opens a page from the scorebook. */
.category-label{display:inline}.category-info{display:inline-grid;place-items:center;vertical-align:middle;width:24px;height:24px;padding:0;margin-left:3px;border:0;background:none;color:#d4cbb4}.category-info span{display:grid;place-items:center;width:15px;height:15px;border:1px solid #a9a58e;border-radius:50%;font:italic 12px/1 Georgia,serif}.category-info:hover{color:#ffe0b0;background:#ffffff0a;border-radius:50%}
dialog:has(.combination-guide){background:#2b2e26;border:1px solid #969278;box-shadow:0 20px 70px #0009,inset 0 0 0 5px #2b2e26,inset 0 0 0 6px #8d8c6d60;color:#f1eddf}
.combination-guide h2{font:italic 32px/1.15 Georgia,serif;padding-bottom:16px;border-bottom:3px double #77786a}.combination-guide .modal-kicker{color:#ddc49c;font-size:11px}.combination-guide>p{font-size:17px}.rule-example{margin:22px 0;padding:18px 0;border-block:1px solid #77786a66;text-align:center}.rule-example-label{font-size:13px;color:#d0d0c2}.rule-dice{display:flex;justify-content:center;gap:7px;margin:12px 0;color:#f2e8cf;font:36px/1.2 'Segoe UI Symbol',sans-serif}.rule-example>strong{font:500 34px/1.2 'Caveat',cursive;color:#f2ce7b}.rule-example small{font:14px var(--font)}.combination-guide .rule-note{font-size:14px;color:#d0d0c2}.combination-guide .modal-button{margin-top:22px}
@media(pointer:coarse){.category-info{width:30px;height:30px}}

/* The guide borrows the table's actual six-sided ivory dice. */
.rule-dice{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;max-width:400px;margin:24px auto 16px;font:inherit;pointer-events:none}
.rule-dice .die-wrap{--edge:68cqw}.rule-dice .die-lift{left:16%;top:16%}
@media(max-width:420px){.rule-dice{grid-template-columns:repeat(3,minmax(0,1fr));max-width:220px;gap:14px 12px;margin-top:20px}}

.rule-dice{grid-template-columns:repeat(var(--example-count),minmax(0,1fr));width:min(100%,calc(var(--example-count)*64px));max-width:400px}
@media(max-width:420px){.rule-dice{grid-template-columns:repeat(min(var(--example-count),3),minmax(0,1fr));width:min(100%,calc(var(--example-count)*64px));max-width:220px}}

/* One next step on the felt; a direct route back after scoring on smaller screens. */
.hold-instruction{min-height:40px;max-width:34ch;margin-inline:auto;display:grid;place-items:center;line-height:1.4;text-wrap:pretty}
.roll-button{overflow-wrap:anywhere;line-height:1.25}
.hint-note h3{font:italic 17px/1.3 Georgia,serif}.hint-note[hidden]{display:none}
.next-turn{display:none}
.table.is-handoff{animation:turn-arrival 700ms ease-out both}
@keyframes turn-arrival{0%{outline:2px solid #efa39499;outline-offset:3px}100%{outline:2px solid transparent;outline-offset:7px}}
[data-turn-phase="score"] .roll-button{background:#e7d9ba;color:#342c20;border-color:#f4e8ce;box-shadow:0 3px 0 #85765b}
.score-choice:disabled{color:#a5a898}.score-choice:disabled:hover{background:none;box-shadow:none;color:#a5a898}
@media(max-width:1100px){.next-turn:not([hidden]){display:block;width:100%;margin-top:16px;padding:13px 16px;min-height:46px;border:1px solid #bc9280;border-radius:5px;background:#322c25;color:#f3cfb6;font-size:16px;text-align:center;overflow-wrap:anywhere}.next-turn:hover{background:#43362b}}
@media(max-width:700px){.hint-note h3{display:block;font-size:16px}.hold-instruction{min-height:38px;font-size:14px}.hint-note{padding-top:12px}}
@media(prefers-reduced-motion:reduce){.table.is-handoff{animation:none}}

.category-label{display:inline-flex;align-items:center;gap:2px;max-width:100%}.category-info{flex:0 0 24px;margin-left:0}
@media(max-width:1100px){.next-turn:not([hidden]){margin:0 0 12px}}
