:root{color-scheme:light;--green:#12382e;--cream:#f7f1df;--paper:#fffdf7;--red:#e7443c;--gold:#e5b84b;--ink:#18312a;--muted:#687b73;--line:rgba(18,56,46,.16);--shadow:0 20px 55px rgba(18,56,46,.14)}
*{box-sizing:border-box}html{min-height:100%;background:var(--cream)}body{margin:0;min-height:100vh;color:var(--ink);background:var(--cream);font-family:"Hiragino Kaku Gothic ProN","Yu Gothic",system-ui,sans-serif;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}.app-shell{width:min(100%,760px);min-height:100vh;margin:0 auto;padding:max(20px,env(safe-area-inset-top)) 20px max(34px,env(safe-area-inset-bottom));position:relative}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:40px}.brand{color:var(--green);text-decoration:none;display:flex;align-items:center;gap:10px;font-size:.75rem;font-weight:700;line-height:1.08}.brand strong{font-size:.96rem}.brand-heart{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--green);color:var(--red);font-size:1.45rem}.round-button{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.5);color:var(--green);font-size:1.05rem;font-weight:900}.screen{display:none;animation:enter .38s ease both}.screen.is-active{display:block}@keyframes enter{from{opacity:0;transform:translateY(10px)}}
.eyebrow,.section-heading span,.table-heading span,.modal-head>span{display:block;margin:0 0 8px;color:var(--red);font-size:.72rem;font-weight:900;letter-spacing:.16em}h1,h2,p{margin-top:0}.intro h1,.finish-screen h1{margin:0 0 20px;color:var(--green);font-family:Georgia,"Yu Mincho",serif;font-size:clamp(2.8rem,12vw,5.2rem);line-height:1.02;letter-spacing:-.055em}h1 em{color:var(--red);font-style:normal}.intro-copy{max-width:31rem;margin-bottom:32px;color:#51655e;font-size:1rem;line-height:1.8}.setup-card{padding:22px;border:1px solid var(--line);border-radius:24px;background:rgba(255,253,247,.86);box-shadow:var(--shadow)}.section-heading,.table-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.section-heading h2,.table-heading h2{margin:0;font-size:1.28rem;letter-spacing:-.04em}.section-heading>b{padding:7px 12px;border:1px solid var(--line);border-radius:99px;color:var(--muted);font-size:.78rem}.section-heading>b strong{color:var(--green);font-size:1rem}.player-inputs{display:grid;gap:9px;margin-top:20px}.player-input-row{display:grid;grid-template-columns:42px 1fr 42px;gap:8px}.player-index{display:grid;place-items:center;border-radius:12px;color:var(--paper);background:var(--green);font-size:.8rem;font-weight:900}.player-input-row input{width:100%;min-width:0;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);outline:none;font-size:1rem}.player-input-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(18,56,46,.08)}.remove-player{border:1px solid var(--line);border-radius:12px;background:transparent;color:var(--muted);font-size:1.1rem}.add-button{width:100%;margin:10px 0 20px;padding:12px;border:1px dashed rgba(18,56,46,.35);border-radius:12px;color:var(--green);background:transparent;font-weight:900}.primary-button{width:100%;min-height:58px;padding:0 20px;border:0;border-radius:14px;color:var(--paper);background:var(--red);font-size:1rem;font-weight:900;box-shadow:0 8px 24px rgba(231,68,60,.2)}.primary-button:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.primary-button:active,.roll-button:active{transform:scale(.985)}.safe-note{margin:14px 0 0;color:var(--muted);text-align:center;font-size:.75rem;line-height:1.5}
.turn-banner{margin:-8px 0 20px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.turn-banner span{color:var(--red);font-size:.68rem;font-weight:900;letter-spacing:.15em}.turn-banner h1{margin:6px 0 0;color:var(--green);font-size:clamp(2rem,8vw,3.25rem);line-height:1;letter-spacing:-.055em}.turn-banner h1 strong{color:var(--red)}.history-button{flex:none;border:0;border-bottom:1px solid var(--green);background:transparent;color:var(--green);padding:6px 2px;font-weight:800}.table-area{padding:20px;border-radius:26px;color:var(--paper);background:radial-gradient(circle at 50% 0,#266252,var(--green) 68%);box-shadow:0 18px 50px rgba(18,56,46,.22)}.table-heading span{margin-bottom:4px;color:var(--gold)}.table-heading h2{color:inherit}.table-heading>b{align-self:center;font-size:.8rem;color:rgba(255,255,255,.7)}.table-heading>b strong{color:var(--paper);font-size:1rem}.card-row{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin-top:18px}.playing-card{aspect-ratio:.7;min-width:0;padding:5px;border:0;border-radius:8px;color:var(--red);background:var(--paper);box-shadow:0 3px 8px rgba(0,0,0,.16);font-family:Georgia,serif;font-weight:900;position:relative;animation:cardIn .28s ease both}.playing-card strong{display:block;font-size:clamp(.85rem,4vw,1.15rem);line-height:.9}.playing-card i{font-style:normal;font-size:clamp(.8rem,4vw,1.15rem)}.playing-card.is-gone{visibility:hidden;pointer-events:none}@keyframes cardIn{from{opacity:0;transform:translateY(8px) rotate(3deg)}}
.dice-area{margin:16px 0;padding:22px;border:1px solid var(--line);border-radius:24px;background:var(--paper);display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;box-shadow:var(--shadow)}.dice-pair{display:flex;gap:8px;align-items:center}.die{width:64px;height:64px;display:grid;place-items:center;border-radius:15px;color:var(--green);background:#efe8d5;font-size:2.15rem;line-height:1;font-family:serif}.die.is-rolling{animation:roll .22s linear infinite}@keyframes roll{50%{transform:rotate(12deg) scale(.92)}}.plus{color:var(--muted);font-weight:900}.sum-display{text-align:center;min-width:58px}.sum-display span{display:block;color:var(--muted);font-size:.7rem;font-weight:800}.sum-display strong{display:block;color:var(--red);font-size:2.15rem;line-height:1}.roll-button{grid-column:1/-1;min-height:64px;display:flex;justify-content:center;align-items:center;gap:12px;border:0;border-radius:16px;color:var(--paper);background:var(--green);font-weight:900;font-size:1.08rem;box-shadow:0 8px 22px rgba(18,56,46,.2)}.dice-icon{font-size:1.45rem}.roll-button:disabled{opacity:.45}.players-area{padding-top:10px}.table-heading.compact{margin-bottom:12px;color:var(--green)}.player-boards{display:grid;gap:9px}.player-board{padding:13px 14px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.48);display:grid;grid-template-columns:minmax(90px,1fr) 2fr auto;align-items:center;gap:10px;transition:.2s ease}.player-board.is-current{border-color:var(--red);background:var(--paper);box-shadow:0 7px 22px rgba(18,56,46,.08)}.player-name{min-width:0;font-weight:900;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-name small{display:block;color:var(--red);font-size:.64rem;letter-spacing:.1em}.mini-hand{display:flex;min-width:0}.mini-card{width:28px;height:39px;margin-left:-7px;display:grid;place-items:center;border:1px solid rgba(231,68,60,.3);border-radius:5px;background:var(--paper);color:var(--red);font-family:Georgia,serif;font-size:.72rem;font-weight:900;box-shadow:0 2px 5px rgba(18,56,46,.08)}.mini-card:first-child{margin-left:0}.empty-hand{color:var(--muted);font-size:.75rem}.drink-count{color:var(--muted);font-size:.72rem;white-space:nowrap}.drink-count strong{color:var(--red);font-size:1rem}
.modal{width:min(calc(100% - 28px),560px);max-height:calc(100vh - 28px);padding:0;border:0;border-radius:24px;color:var(--ink);background:var(--paper);box-shadow:0 25px 80px rgba(0,0,0,.3)}.modal::backdrop{background:rgba(8,30,24,.76);backdrop-filter:blur(4px)}.modal-body{padding:24px}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal-head>span{margin:0}.modal-head button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--green);font-size:1.2rem}.modal h2{margin:18px 0 12px;color:var(--green);font-size:2rem;letter-spacing:-.055em}.modal p{color:var(--muted);line-height:1.7}.rules-list{list-style:none;padding:0;margin:24px 0;display:grid;gap:16px}.rules-list li{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start}.rules-list b{width:36px;height:36px;display:grid;place-items:center;border-radius:50%;color:var(--paper);background:var(--green)}.rules-list p{margin:5px 0 0;color:var(--ink)}.modal-note{padding:12px 14px;border-radius:10px;background:#f5edda;font-size:.82rem}.action-modal{text-align:center}.action-symbol{width:90px;height:90px;margin:4px auto 20px;display:grid;place-items:center;border:3px solid var(--red);border-radius:50%;color:var(--red);font-size:2.6rem;font-weight:900;transform:rotate(-6deg)}.action-modal .eyebrow{margin-top:0}.action-modal h2{font-size:2.25rem}fieldset{min-width:0;margin:20px 0;padding:0;border:0}legend{margin-bottom:10px;color:var(--green);font-size:.78rem;font-weight:900}.choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.choice-button{min-height:50px;padding:8px;border:1px solid var(--line);border-radius:12px;color:var(--green);background:#faf6eb;font-weight:800}.choice-button.is-selected{border-color:var(--red);color:var(--paper);background:var(--red)}.cards-choice{grid-template-columns:repeat(5,1fr)}.cards-choice .choice-button{color:var(--red);font-family:Georgia,serif;font-size:1.1rem}.cards-choice .choice-button.is-selected{color:var(--paper)}.history-list{max-height:44vh;overflow:auto;display:grid;gap:8px;margin:20px 0}.history-item{display:grid;grid-template-columns:30px 1fr;gap:10px;padding:11px;border-radius:10px;background:#f8f3e6}.history-item span{color:var(--red);font-size:.75rem;font-weight:900}.history-item p{margin:0;color:var(--ink);font-size:.86rem;line-height:1.5}.empty-history{padding:30px;text-align:center;color:var(--muted)}.danger-button,.text-button{width:100%;padding:13px;border:0;background:transparent;color:var(--red);font-weight:800;text-decoration:underline;text-underline-offset:4px}
.confirm-modal{text-align:center}.confirm-modal h2{font-size:clamp(1.7rem,7vw,2rem)}.confirm-actions{margin-top:24px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.secondary-button{width:100%;min-height:58px;padding:0 18px;border:1px solid var(--line);border-radius:14px;color:var(--green);background:transparent;font-weight:900}
.finish-screen{padding-top:20px;text-align:center}.finish-screen>p:not(.eyebrow){color:var(--muted);line-height:1.8}.glass-mark{width:150px;height:150px;margin:22px auto;display:grid;place-items:center;border-radius:50%;color:var(--paper);background:var(--red);font-family:Georgia,"Yu Mincho",serif;font-size:2.1rem;font-weight:900;box-shadow:0 15px 35px rgba(231,68,60,.25);transform:rotate(-5deg)}.final-stats{margin:24px 0;display:grid;gap:7px;text-align:left}.final-stat{display:flex;justify-content:space-between;padding:12px 15px;border-radius:10px;background:rgba(255,255,255,.55)}.final-stat b{color:var(--red)}.celebration{position:absolute;inset:70px 10px auto;height:130px;pointer-events:none}.celebration i{position:absolute;left:var(--x);top:var(--y);color:var(--c,var(--red));font-size:var(--s,1.2rem);font-style:normal;transform:rotate(var(--r))}.celebration i:nth-child(1){--x:5%;--y:10px;--r:-20deg}.celebration i:nth-child(2){--x:21%;--y:90px;--r:30deg;--c:var(--gold)}.celebration i:nth-child(3){--x:70%;--y:20px;--r:-12deg;--c:var(--green);--s:1.6rem}.celebration i:nth-child(4){--x:90%;--y:80px;--r:25deg}.celebration i:nth-child(5){--x:95%;--y:4px;--r:-40deg;--c:var(--gold)}
@media(min-width:760px){.setup-screen.is-active{display:grid;grid-template-columns:.9fr 1.1fr;gap:34px;align-items:center}.intro-copy{margin-bottom:0}.card-row{grid-template-columns:repeat(11,1fr)}.dice-area{grid-template-columns:1fr auto 1.2fr}.roll-button{grid-column:auto}}@media(max-width:420px){.topbar{margin-bottom:30px}.table-area,.dice-area,.setup-card{padding:18px}.die{width:58px;height:58px}.player-board{grid-template-columns:minmax(80px,1fr) 1.5fr auto;padding:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* Three-dimensional dice */
.dice-pair{min-height:92px;perspective:700px;perspective-origin:50% 36%}
.die-stage{--die-size:62px;width:var(--die-size);height:var(--die-size);position:relative;transform-style:preserve-3d;will-change:transform}
.die-cube{width:100%;height:100%;position:relative;transform-style:preserve-3d;transition:transform .32s cubic-bezier(.2,.8,.25,1);will-change:transform}
.die-face{position:absolute;inset:0;padding:9px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center;border:1px solid rgba(18,56,46,.12);border-radius:13px;background:linear-gradient(145deg,#fffdf7 3%,#f4eddc 78%);box-shadow:inset -5px -6px 12px rgba(18,56,46,.1),inset 3px 3px 6px rgba(255,255,255,.9);backface-visibility:hidden}
.die-face i{width:9px;height:9px;border-radius:50%;background:var(--green);box-shadow:inset 1px 1px 2px rgba(0,0,0,.24)}
.face-1{transform:translateZ(31px)}.face-6{transform:rotateY(180deg) translateZ(31px)}.face-3{transform:rotateY(90deg) translateZ(31px)}.face-4{transform:rotateY(-90deg) translateZ(31px)}.face-2{transform:rotateX(90deg) translateZ(31px)}.face-5{transform:rotateX(-90deg) translateZ(31px)}
.die-face i{visibility:hidden}.face-1 i:nth-child(5),.face-2 i:nth-child(1),.face-2 i:nth-child(9),.face-3 i:nth-child(1),.face-3 i:nth-child(5),.face-3 i:nth-child(9),.face-4 i:nth-child(1),.face-4 i:nth-child(3),.face-4 i:nth-child(7),.face-4 i:nth-child(9),.face-5 i:nth-child(1),.face-5 i:nth-child(3),.face-5 i:nth-child(5),.face-5 i:nth-child(7),.face-5 i:nth-child(9),.face-6 i:nth-child(1),.face-6 i:nth-child(3),.face-6 i:nth-child(4),.face-6 i:nth-child(6),.face-6 i:nth-child(7),.face-6 i:nth-child(9){visibility:visible}
.face-1 i:nth-child(5){background:var(--red);width:11px;height:11px}
.die-shadow{position:absolute;z-index:-1;left:6px;right:6px;bottom:-11px;height:12px;border-radius:50%;background:rgba(18,56,46,.2);filter:blur(5px);transform:scale(.9);transform-origin:center}
.die-stage.is-idle .die-cube{opacity:.62;filter:saturate(.4)}.die-stage.is-idle .die-shadow{opacity:.45}
.random-start-option{margin:-8px 0 18px;padding:13px 14px;display:grid;grid-template-columns:auto 1fr;gap:0 12px;align-items:center;border:1px solid var(--line);border-radius:13px;background:#faf6eb;cursor:pointer}.random-start-option input{position:absolute;opacity:0;pointer-events:none}.toggle-track{grid-row:1;width:46px;height:26px;padding:3px;border-radius:99px;background:#b8c1bd;transition:background .2s ease}.toggle-track i{display:block;width:20px;height:20px;border-radius:50%;background:var(--paper);box-shadow:0 2px 5px rgba(18,56,46,.2);transition:transform .2s ease}.random-start-option input:checked+.toggle-track{background:var(--green)}.random-start-option input:checked+.toggle-track i{transform:translateX(20px)}.random-start-option input:focus-visible+.toggle-track{outline:3px solid rgba(231,68,60,.28);outline-offset:2px}.random-start-option>span:last-child{grid-column:2;grid-row:1}.random-start-option strong,.random-start-option small{display:block}.random-start-option strong{font-size:.88rem}.random-start-option small{margin-top:3px;color:var(--muted);font-size:.72rem}.modal.needs-action{animation:requiredAction .28s ease}@keyframes requiredAction{25%{transform:translateX(-7px)}50%{transform:translateX(7px)}75%{transform:translateX(-3px)}}
@media(max-width:420px){.die-stage{--die-size:58px}.face-1{transform:translateZ(29px)}.face-6{transform:rotateY(180deg) translateZ(29px)}.face-3{transform:rotateY(90deg) translateZ(29px)}.face-4{transform:rotateY(-90deg) translateZ(29px)}.face-2{transform:rotateX(90deg) translateZ(29px)}.face-5{transform:rotateX(-90deg) translateZ(29px)}}
@media(prefers-reduced-motion:reduce){.die-cube{transition:none}}
