/* Isolated game UI: never inherit the legacy site's 28pt button rule. */
.game-shell{--gp-ink:#083442;--gp-paper:#E8E3D1;--gp-soft:#f7f3e7;--gp-line:#A9ADB6;--gp-muted:#52676a;--gp-white:#fffdf6;width:94%;max-width:1040px;margin:16px auto 34px;box-sizing:border-box;color:var(--gp-ink);text-align:left;font-size:16px;line-height:1.55;overflow-wrap:break-word}
.game-shell *, .game-shell *::before,.game-shell *::after{box-sizing:border-box}
.game-shell [hidden]{display:none!important}
.game-shell button,.game-shell input,.game-shell select,.game-shell textarea{font-family:Arial,Helvetica,sans-serif;font-size:16px;font-style:normal;line-height:1.25;letter-spacing:normal;text-transform:none;color:var(--gp-ink);margin:0;border-radius:0;max-width:100%}
.game-shell button{height:auto;min-height:44px;padding:9px 12px;border:1px solid #7b817f;background:var(--gp-soft);cursor:pointer;white-space:normal;overflow-wrap:anywhere;vertical-align:middle;text-align:center}
.game-shell button:disabled{opacity:.48;cursor:default}
.game-shell :is(button,input,select,a,summary):focus-visible{outline:3px solid #317b91;outline-offset:3px}
.game-shell input:not([type=checkbox]),.game-shell select{width:100%;min-width:0;min-height:44px;padding:8px;border:1px solid #7b817f;background:var(--gp-white)}
.game-shell h1,.game-shell h2,.game-shell h3{color:var(--gp-ink);text-align:left;font-style:normal;line-height:1.2}
.game-shell h1{font-size:clamp(1.6rem,3.4vw,2.3rem);margin:8px 0 10px}.game-shell h2{font-size:1.3rem;margin:1.2em 0 .5em}.game-shell h3{font-size:1.05rem;margin:.3em 0}
.game-shell p{margin:.65em 0;text-align:left}.game-shell a{color:var(--gp-ink)}
.game-shell .game-back{font-size:.88rem;margin-bottom:10px}.game-shell .game-back a{text-decoration:none;border-bottom:1px dotted}
.game-shell .game-hero{border:1px solid var(--gp-line);padding:16px}.game-shell .game-hero p{max-width:80ch;margin:.3em 0}
.game-shell .game-kicker{font:700 12px/1.4 Arial,sans-serif;letter-spacing:.065em;text-transform:uppercase;color:var(--gp-muted)}
.game-shell .game-roller{margin:14px 0;border:1px dashed #7b817f;background:#dde5df;padding:14px}
.game-shell .game-roller-head{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.game-shell .game-mini{font-size:13px;line-height:1.45;color:var(--gp-muted)}
.game-shell .sound-control{display:inline-flex;align-items:center;gap:8px;cursor:pointer;padding:7px;min-height:44px;white-space:nowrap;font:16px/1.25 Arial,sans-serif}
.game-shell .sound-control input{width:19px;height:19px;accent-color:#083442}
.game-shell .game-presets{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0 8px}.game-shell .game-preset{font-size:15px;font-weight:700}
.game-shell .game-preset[aria-pressed=true],.game-shell .roll-all{background:var(--gp-ink);color:#fffdf6;border-color:var(--gp-ink)}
.game-shell .game-preset-note{margin:7px 0;color:var(--gp-muted);font-size:13px;max-width:90ch}
.game-shell .dice-stage{min-height:110px;margin:12px 0;padding:16px 10px;display:flex;align-items:center;justify-content:center;gap:14px 12px;flex-wrap:wrap;border:1px dashed #8d9e98;background:#edf0e8;user-select:none}
.game-shell .visual-die{position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;flex:0 0 auto;width:76px;height:86px;min-height:0;padding:4px 4px 16px;border:1px solid #083442;background:#DBD8C5;font:500 30px/1 Arial,sans-serif;transform-origin:50% 50%;box-shadow:none;overflow:visible;animation:none;cursor:pointer}
.game-shell .visual-die .gp-face{width:62px;height:62px;display:flex;align-items:center;justify-content:center}.game-shell .visual-die img{width:62px;height:62px;max-width:100%;object-fit:contain;display:block;pointer-events:none;border:0;margin:0;padding:0}
.game-shell .visual-die .die-type{position:absolute;bottom:3px;left:2px;right:2px;font:10px/1 Arial,sans-serif;opacity:.75;text-align:center}
.game-shell .visual-die.special-face{width:98px;font-size:15px}.game-shell .visual-die.special-face .gp-face{width:90px;line-height:1.2;overflow-wrap:normal}
.game-shell .visual-die:has(.keep-state){margin-bottom:17px}.game-shell .keep-state{position:absolute;bottom:-20px;left:0;right:0;font:11px/1.1 Arial,sans-serif;text-align:center}.game-shell .visual-die.held{outline:3px solid #246875;outline-offset:2px}
.game-shell .visual-die.rolling{animation:gp4-shake 1600ms ease-in-out 1;will-change:transform}
.game-shell .visual-die.rolling:nth-child(even){animation-name:gp4-shake-rot}
.game-shell .stage-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;margin:-3px 0 12px;font-size:13px;color:var(--gp-muted)}
.game-shell .tray{border-top:1px dashed #8d9e98;padding-top:9px}.game-shell .tray-header{display:grid;grid-template-columns:minmax(0,1fr) 78px 135px 44px;gap:7px;font:12px/1.3 Arial,sans-serif;color:var(--gp-muted)}
.game-shell .tray-row{display:grid;grid-template-columns:minmax(0,1fr) 78px 135px 44px;gap:7px;align-items:center;margin:7px 0}.game-shell .tray-name{min-width:0}.game-shell .tray-remove{padding:4px;font-size:24px}
.game-shell .game-modifiers{margin:12px 0;padding:10px;border:1px dashed #86918a;background:#ece8d8}
.game-shell .modifier-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font:13px/1.4 Arial,sans-serif}.game-shell .modifier-head strong{letter-spacing:.05em}.game-shell .modifier-head span{color:var(--gp-muted);max-width:62ch}
.game-shell .game-mod-row{display:grid;grid-template-columns:1fr 1fr 44px;gap:7px;max-width:330px;margin:8px auto}.game-shell .game-mod-row button{font-size:22px;padding:4px}
.game-shell .modifier-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 44px;gap:7px;width:100%;max-width:330px;margin:8px auto 0}.game-shell .modifier-actions button{font-size:14px;font-weight:600;min-height:44px;height:auto;padding:8px 6px;border:1px dashed #7b817f;line-height:1.2}
.game-shell .tray-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px;align-items:center}.game-shell .tray-actions button{font-size:16px}.game-shell .roll-all{font-size:18px!important;font-weight:700;min-width:136px}.game-shell .preset-copy{margin-left:auto}
.game-shell .game-status{min-height:1.5em;font-size:13px;color:var(--gp-muted);margin-top:6px}
.game-shell .game-result{margin-top:12px;border:1px dashed #7b817f;background:var(--gp-white);padding:13px}
.game-shell .result-title{font:700 12px/1.3 Arial,sans-serif;letter-spacing:.06em;color:var(--gp-muted)}.game-shell .result-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:9px 0}.game-shell .result-group strong{font-size:14px}.game-shell .result-dice{display:flex;flex-wrap:wrap;gap:5px}.game-shell .die-chip{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;border:1px solid #53717a;padding:4px 7px;font:16px/1.25 Consolas,monospace;background:#f7f3e7}
.game-shell .result-total{font:700 18px/1.45 Consolas,'Courier New',monospace;overflow-wrap:anywhere}.game-shell .result-note,.game-shell .share-hint{font-size:13px;line-height:1.5;color:var(--gp-muted);margin:6px 0}.game-shell .result-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:12px}.game-shell .result-actions button{font-size:15px}.game-shell button.copied{background:#c6e0cf}
.game-shell .game-copy{border:1px solid var(--gp-line);padding:18px;margin-top:14px}.game-shell .game-copy>*{max-width:88ch}.game-shell .game-copy h2:first-child{margin-top:0}.game-shell .game-copy ul{padding-left:1.25em}.game-shell .game-copy li{margin:.5em 0}
.game-shell .game-copy .note{padding:12px;border-left:3px solid #7c807c;background:#f7f3e7;margin:18px 0;font-size:14px}.game-shell .game-copy .noodle{font-size:13px;color:var(--gp-muted);border-top:1px dashed var(--gp-line);padding-top:12px}
.game-shell .preset-reference{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:10px;margin:14px 0;max-width:none}.game-shell .preset-reference article{border:1px solid #a9adb6;padding:12px;background:#f7f3e7}.game-shell .preset-reference p{font-size:14px}.game-shell .preset-reference button{font-size:14px}
.game-shell .game-faq details{border-top:1px solid var(--gp-line);padding:10px 0}.game-shell .game-faq summary{cursor:pointer;font-weight:700;min-height:36px}.game-shell .game-faq p{font-size:15px}.game-shell .game-sources{font-size:13px;color:var(--gp-muted);border-top:1px solid var(--gp-line);padding-top:12px}.game-shell .game-sources a{overflow-wrap:anywhere}
.game-shell .related-games{display:flex;flex-wrap:wrap;gap:7px;margin-top:16px}.game-shell .related-games a{border:1px solid #a9adb6;padding:7px 10px;text-decoration:none;font-size:14px}
.game-shell .game-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:10px;margin:14px 0}.game-shell .game-card{display:flex;flex-direction:column;border:1px solid #a9adb6;padding:14px;text-decoration:none;background:#f7f3e7;min-width:0}.game-shell .game-card strong{font-size:17px}.game-shell .game-card span{font-size:14px;margin-top:7px}.game-shell .game-card small{font-size:12px;margin:8px 0 0;color:var(--gp-muted)}
.game-shell .catalog-search{margin:16px 0;max-width:540px}.game-shell .catalog-search label{display:block;margin-bottom:6px;font-weight:700}
.game-shell .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}
@media(hover:hover){.game-shell button:not(:disabled):hover{background:#fff9ee;color:#083442}.game-shell .game-card:hover{background:#fffdf6}}
@media(max-width:600px){.game-shell{width:calc(100% - 20px)}.game-shell .game-roller{padding:10px}.game-shell .tray-header{display:none}.game-shell .tray-row{grid-template-columns:minmax(60px,1fr) minmax(110px,1.5fr) 44px}.game-shell .tray-name{grid-column:1/-1}.game-shell .game-hero,.game-shell .game-copy{padding:13px}.game-shell .preset-copy{margin-left:0}.game-shell .tray-actions button{flex:1 1 130px}.game-shell .dice-stage{gap:14px 8px}.game-shell .visual-die{width:64px;height:74px}.game-shell .visual-die .gp-face,.game-shell .visual-die img{width:52px;height:52px}.game-shell .visual-die.special-face{width:85px}.game-shell .visual-die.special-face .gp-face{width:77px}.game-shell .game-mod-row{grid-template-columns:minmax(55px,1fr) minmax(65px,1fr) 44px}.game-shell .modifier-actions{width:100%;max-width:330px}}
@media(prefers-reduced-motion:reduce){.game-shell .visual-die.rolling{animation:none!important;transform:none!important}}
@keyframes gp4-shake {2%{transform:translate(0, 0) rotate(0.5deg)}4%{transform:translate(0, 0) rotate(-4.5deg)}6%{transform:translate(0, 0) rotate(7.5deg)}8%{transform:translate(0, 0) rotate(-2.5deg)}10%{transform:translate(0, 0) rotate(0.5deg)}12%{transform:translate(0, 0) rotate(3.5deg)}14%{transform:translate(0, 0) rotate(5.5deg)}16%{transform:translate(0, 0) rotate(1.5deg)}18%{transform:translate(0, 0) rotate(4.5deg)}20%{transform:translate(0, 0) rotate(4.5deg)}22%{transform:translate(0, 0) rotate(-6.5deg)}24%{transform:translate(0, 0) rotate(5.5deg)}26%{transform:translate(0, 0) rotate(5.5deg)}28%{transform:translate(0, 0) rotate(-4.5deg)}30%{transform:translate(0, 0) rotate(6.5deg)}32%{transform:translate(0, 0) rotate(-0.5deg)}34%{transform:translate(0, 0) rotate(-2.5deg)}36%{transform:translate(0, 0) rotate(0.5deg)}38%{transform:translate(0, 0) rotate(2.5deg)}40%{transform:translate(0, 0) rotate(-3.5deg)}42%{transform:translate(0, 0) rotate(6.5deg)}44%{transform:translate(0, 0) rotate(1.5deg)}46%{transform:translate(0, 0) rotate(2.5deg)}48%{transform:translate(0, 0) rotate(-5.5deg)}50%{transform:translate(0, 0) rotate(-4.5deg)}52%{transform:translate(0, 0) rotate(0.5deg)}54%{transform:translate(0, 0) rotate(6.5deg)}56%{transform:translate(0, 0) rotate(6.5deg)}58%{transform:translate(0, 0) rotate(3.5deg)}60%{transform:translate(0, 0) rotate(-1.5deg)}62%{transform:translate(0, 0) rotate(-2.5deg)}64%{transform:translate(0, 0) rotate(1.5deg)}66%{transform:translate(0, 0) rotate(-1.5deg)}68%{transform:translate(0, 0) rotate(-3.5deg)}70%{transform:translate(0, 0) rotate(3.5deg)}72%{transform:translate(0, 0) rotate(0.5deg)}74%{transform:translate(0, 0) rotate(4.5deg)}76%{transform:translate(0, 0) rotate(2.5deg)}78%{transform:translate(0, 0) rotate(5.5deg)}80%{transform:translate(0, 0) rotate(4.5deg)}82%{transform:translate(0, 0) rotate(-0.5deg)}84%{transform:translate(0, 0) rotate(-5.5deg)}86%{transform:translate(0, 0) rotate(-0.5deg)}88%{transform:translate(0, 0) rotate(0.5deg)}90%{transform:translate(0, 0) rotate(3.5deg)}92%{transform:translate(0, 0) rotate(-3.5deg)}94%{transform:translate(0, 0) rotate(7.5deg)}96%{transform:translate(0, 0) rotate(2.5deg)}98%{transform:translate(0, 0) rotate(3.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}
@keyframes gp4-shake-rot{2%{transform:translate(0, 0) rotate(-0.7deg)}4%{transform:translate(0, 0) rotate(-2.5deg)}6%{transform:translate(0, 0) rotate(3.5deg)}8%{transform:translate(0, 0) rotate(7.5deg)}10%{transform:translate(0, 0) rotate(1.5deg)}12%{transform:translate(0, 0) rotate(6.5deg)}14%{transform:translate(0, 0) rotate(-2.5deg)}16%{transform:translate(0, 0) rotate(2.5deg)}18%{transform:translate(0, 0) rotate(7.5deg)}20%{transform:translate(0, 0) rotate(-0.5deg)}22%{transform:translate(0, 0) rotate(6.5deg)}24%{transform:translate(0, 0) rotate(6.5deg)}26%{transform:translate(0, 0) rotate(-3.5deg)}28%{transform:translate(0, 0) rotate(3.5deg)}30%{transform:translate(0, 0) rotate(-1.5deg)}32%{transform:translate(0, 0) rotate(0.5deg)}34%{transform:translate(0, 0) rotate(4.5deg)}36%{transform:translate(0, 0) rotate(4.5deg)}38%{transform:translate(0, 0) rotate(-1.5deg)}40%{transform:translate(0, 0) rotate(-7.5deg)}42%{transform:translate(0, 0) rotate(5.5deg)}44%{transform:translate(0, 0) rotate(4.5deg)}46%{transform:translate(0, 0) rotate(7.5deg)}48%{transform:translate(0, 0) rotate(-2.5deg)}50%{transform:translate(0, 0) rotate(3.5deg)}52%{transform:translate(0, 0) rotate(7.5deg)}54%{transform:translate(0, 0) rotate(-2.5deg)}56%{transform:translate(0, 0) rotate(4.5deg)}58%{transform:translate(0, 0) rotate(-4.5deg)}60%{transform:translate(0, 0) rotate(-1.5deg)}62%{transform:translate(0, 0) rotate(-5.5deg)}64%{transform:translate(0, 0) rotate(0.5deg)}66%{transform:translate(0, 0) rotate(5.5deg)}68%{transform:translate(0, 0) rotate(5.5deg)}70%{transform:translate(0, 0) rotate(7.5deg)}72%{transform:translate(0, 0) rotate(-4.5deg)}74%{transform:translate(0, 0) rotate(-4.5deg)}76%{transform:translate(0, 0) rotate(-2.5deg)}78%{transform:translate(0, 0) rotate(7.5deg)}80%{transform:translate(0, 0) rotate(-3.5deg)}82%{transform:translate(0, 0) rotate(2.5deg)}84%{transform:translate(0, 0) rotate(6.5deg)}86%{transform:translate(0, 0) rotate(1.5deg)}88%{transform:translate(0, 0) rotate(1.5deg)}90%{transform:translate(0, 0) rotate(6.5deg)}92%{transform:translate(0, 0) rotate(-5.5deg)}94%{transform:translate(0, 0) rotate(-7.5deg)}96%{transform:translate(0, 0) rotate(-3.5deg)}98%{transform:translate(0, 0) rotate(-2.5deg)}0%,100%{transform:translate(0, 0) rotate(0)}}