@font-face{font-family:Manrope;src:url('./vendor/manrope.woff2') format('woff2');font-display:swap;font-weight:200 800}
:root{color-scheme:dark;--bg:#102c25;--surface:#17362e;--surface2:#1c3e34;--cream:#f5f1e7;--muted:#9bb4a8;--line:rgba(196,219,195,.13);--accent:#d4e6a5;--green:#19a97c;--coral:#ed6b5b;--blue:#4b8fe2;--gold:#e2ae47;font-family:Manrope,'Segoe UI',sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 32% 44%,#214536 0%,#122f27 43%,#0d2721 100%);color:var(--cream);min-height:100vh}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{color:inherit}button:disabled{cursor:not-allowed;opacity:.58}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{transition:background .2s,transform .2s,opacity .2s}button:not(:disabled):active{transform:translateY(1px)}a{color:inherit}svg{width:19px;height:19px;display:block;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}button svg{pointer-events:none}[hidden]{display:none!important}.topbar{max-width:1450px;margin:auto;height:96px;padding:0 56px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:36px}.brand{text-decoration:none;display:flex;gap:13px;align-items:center;font-weight:800;font-size:32px;letter-spacing:-1.7px}.brand-mark{display:grid;grid-template-columns:9px 9px;gap:4px;transform:rotate(-10deg)}.brand-mark i,.footer-colors i{width:9px;height:9px;border-radius:3px;background:var(--green)}.brand-mark i:nth-child(2),.footer-colors i:nth-child(2){background:var(--coral)}.brand-mark i:nth-child(3),.footer-colors i:nth-child(3){background:var(--gold)}.brand-mark i:nth-child(4),.footer-colors i:nth-child(4){background:var(--blue)}nav{display:flex;gap:34px;height:100%;align-items:center;margin-right:auto;margin-left:56px;font-size:13px}nav .nav-active{align-self:stretch;display:flex;align-items:center;border-bottom:2px solid var(--accent)}.text-button{border:0;background:none;padding:0;color:var(--muted);font-size:12px}.text-button:hover{color:var(--cream)}nav .text-button{font-size:13px}.text-button>span{margin-left:8px}.header-actions{display:flex;gap:15px;align-items:center}.icon-button{display:inline-flex;justify-content:center;align-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;font-size:25px}.icon-button:hover{background:rgba(255,255,255,.07)}.secondary-button{display:inline-flex;align-items:center;gap:9px;padding:12px 18px;background:transparent;border:1px solid rgba(213,230,202,.3);border-radius:8px;font-weight:600;font-size:12px}.secondary-button:hover{background:rgba(213,230,202,.08)}main{max-width:1450px;margin:auto;padding:42px 56px 28px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.4px;color:var(--accent);margin:0 0 12px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:28px;align-items:start}.table-column{min-width:0}.board-shell{position:relative;border:1px solid var(--line);border-radius:16px;background:radial-gradient(ellipse at 50% 42%,#294b3b66,#122e260a 70%);overflow:hidden;box-shadow:inset 0 0 70px #071d1920}.board-topline{display:flex;align-items:center;justify-content:space-between;padding:23px 24px 0;position:absolute;top:0;left:0;right:0;z-index:1;pointer-events:none}.board-tag{display:flex;align-items:center;gap:8px;font-size:9px;font-weight:600;letter-spacing:1.8px;color:#c5d2bd}.tiny-star{font-size:19px;color:var(--accent);line-height:1}.players-label{font-size:9px;letter-spacing:1.4px;color:var(--muted)}.board-canvas{width:100%;height:550px;position:relative;touch-action:none}.board-canvas canvas{display:block;width:100%;height:100%;outline:none}.board-bottomline{position:absolute;bottom:16px;left:24px;right:18px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.board-bottomline>span{font-size:10px;color:#96ae9d;display:flex;align-items:center;gap:7px}.board-bottomline>span svg{width:15px;height:15px}.camera-controls{pointer-events:auto;display:flex;gap:5px;align-items:center;background:#102a23b8;padding:5px;border:1px solid var(--line);border-radius:8px;backdrop-filter:blur(10px)}.icon-button.small{width:29px;height:29px;border:0;border-radius:5px}.small svg{height:16px;width:16px}.view-button{border:0;background:transparent;color:var(--muted);padding:7px 10px;border-radius:5px;font-size:10px}.view-button.active{background:#cadcba;color:#20382c;font-weight:700}.player-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:15px}.player-card{border:1px solid var(--line);border-radius:9px;padding:15px 12px;background:#19392f70;position:relative;min-width:0}.player-card.is-current{border-color:color-mix(in srgb,var(--player-color) 60%,transparent);background:linear-gradient(130deg,color-mix(in srgb,var(--player-color) 14%,#17342b),#18362d);box-shadow:inset 0 3px var(--player-color)}.player-card.inactive{opacity:.36}.player-name{display:flex;gap:7px;align-items:center;font-weight:650;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.color-dot{width:8px;height:8px;background:var(--player-color);border-radius:50%;flex-shrink:0}.player-type{font-size:9px;color:var(--muted);margin-top:5px;padding-left:15px}.player-progress{display:flex;align-items:center;justify-content:space-between;margin-top:13px}.mini-pawns{display:flex;gap:5px;align-items:center}.mini-pawns i{display:block;width:7px;height:12px;background:var(--player-color);clip-path:polygon(30% 0,70% 0,90% 20%,75% 43%,80% 70%,100% 100%,0 100%,20% 70%,25% 43%,10% 20%);opacity:.23}.mini-pawns i.finished{opacity:1}.player-progress>span{font-size:9px;color:#b7cbbb}.table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:18px 2px 0;font-size:10px;color:#8ca796}.safe-mark{font-size:16px;vertical-align:middle;color:#b5c9a2;margin-right:4px}.table-foot .text-button{font-size:10px}.turn-card{padding:24px 22px 18px;background:linear-gradient(145deg,#214335,#1c3b30 75%);border:1px solid #91b18e24;border-radius:14px;box-shadow:0 15px 45px #071b181c}.turn-meta{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px;color:#b0c8a0;font-weight:600}.turn-meta>span:first-child{display:flex;align-items:center;gap:7px}.turn-meta>span:first-child:before{content:'';width:6px;height:6px;border-radius:50%;background:var(--turn-color,var(--green))}.turn-meta>span:last-child{color:#83a28d;letter-spacing:1px;font-size:8px}.turn-card h2{font-weight:600;font-size:25px;letter-spacing:-.9px;line-height:1.25;margin:16px 0 5px}.turn-card h2>span{color:var(--accent)}.turn-subtitle{font-size:11px;color:#a8bead;line-height:1.65;margin:0;min-height:36px}.dice-wrap{position:relative;margin:8px -9px 3px}.dice-wrap>div{height:180px;width:100%}.dice-wrap canvas{display:block;width:100%;height:100%}.roll-button{width:100%;display:flex;gap:10px;justify-content:center;align-items:center;min-height:48px;border:0;border-radius:7px;background:var(--accent);color:#203a29;font-weight:800;font-size:12px;box-shadow:0 4px 0 #0c241329}.roll-button:not(:disabled):hover{background:#e0efbd;transform:translateY(-1px)}.roll-button .key-hint{font-size:7px;font-weight:600;letter-spacing:.7px;border:1px solid #344b384d;border-radius:3px;padding:4px;margin-left:auto;color:#5c7047}.roll-button>svg{margin-left:5px}.game-status{font-size:10px;line-height:1.7;text-align:center;color:#a8be9b;margin:13px 0 0;min-height:34px}.dice-result{display:flex;justify-content:center;align-items:center;gap:8px;margin:0 0 10px;min-height:0;font-size:10px;color:#abc1aa}.dice-result:empty{display:none}.result-die{display:grid;grid-template-columns:repeat(3,3px);grid-template-rows:repeat(3,3px);gap:2px;padding:6px;background:#ede9db;border-radius:4px}.result-die i{width:3px;height:3px;border-radius:50%;background:transparent}.result-die i.dot{background:#243b31}.result-die.used{opacity:.3}.result-note{margin-left:4px;font-size:9px}.moves:empty{display:none}.moves{margin-top:10px;border-top:1px solid var(--line);padding-top:13px;max-height:234px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#57765b transparent}.move-row{display:flex;align-items:center;gap:7px;margin-bottom:8px}.move-piece{font-size:10px;color:#c7d5c4;min-width:44px}.move-options{display:flex;flex-wrap:wrap;gap:5px}.move-button{border:1px solid #a8c79535;background:#284e3d;color:#e5ead9;font-size:10px;border-radius:5px;padding:8px 9px}.move-button:hover{border-color:var(--accent);background:#395c42}.move-button.capture{color:#e7bd80}.move-heading{font-size:9px;letter-spacing:1px;color:var(--muted);margin:0 0 12px}.clear-selection{display:block;margin:12px auto 0}.bot-pause{border:none;background:transparent;display:block;font-size:9px;color:#9db69c;text-decoration:underline;text-underline-offset:3px;margin:9px auto 0}.activity-card{padding:20px 22px 9px;margin-top:16px;border:1px solid var(--line);border-radius:12px;background:#15352a7a}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}.section-heading h3{font-size:11px;margin:0;font-weight:600}.live-dot{width:5px;height:5px;border-radius:50%;background:#8caa79}.activity-list{padding:0;margin:0;list-style:none;max-height:143px;overflow:auto;scrollbar-width:thin;scrollbar-color:#385b48 transparent}.activity-list li{font-size:9px;line-height:1.75;color:#8faa97;padding:0 0 10px 13px;position:relative}.activity-list li:before{content:'';position:absolute;top:6px;left:0;width:4px;height:4px;background:var(--entry-color,#779a79);border-radius:50%}.activity-list li:first-child{color:#d6e1cb}.tip-card{display:flex;gap:12px;padding:19px 12px 0;color:#829e89;align-items:flex-start}.tip-icon{font-size:22px;color:#bdd09a;line-height:1.3}.tip-card p{font-size:9px;line-height:1.9;margin:0}.tip-card strong{color:#b2c7a7;font-weight:500}footer{max-width:1338px;margin:6px auto 0;padding:23px 0 30px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;color:#6e8f7d;font-size:9px}footer>span:nth-child(2){font-size:8px}footer i{font-style:normal;margin:0 7px}.footer-colors{display:flex;gap:5px}.footer-colors i{width:5px;height:5px;margin:0;border-radius:50%;opacity:.65}.loading-state{height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:15px;color:#b3c8a7;font-size:12px}.loading-dots{color:var(--accent);font-size:18px;letter-spacing:7px;animation:breathe 1.5s infinite}@keyframes breathe{50%{opacity:.3}}dialog{border:1px solid #91b18e55;border-radius:18px;background:#193b2f;color:var(--cream);padding:30px;width:min(600px,calc(100vw - 32px));max-height:90vh;box-shadow:0 30px 100px #0008;overflow:auto;scrollbar-width:thin;scrollbar-color:#5b7a60 transparent}dialog::backdrop{background:#061c16c9;backdrop-filter:blur(8px)}.dialog-top{display:flex;justify-content:space-between;align-items:center}.dialog-top .eyebrow{margin:0}.dialog-top .close-dialog{border:0;background:#294b3c;width:30px;height:30px;font-size:24px}dialog h2{font-size:28px;font-weight:600;letter-spacing:-1px;margin:14px 0 10px}.dialog-intro{font-size:12px;line-height:1.8;color:#b2c4ad;margin-bottom:24px}.setup-options{display:grid;grid-template-columns:1fr 1fr;gap:16px}.setup-options label,.select-row{font-size:11px;display:flex;flex-direction:column;gap:8px}select,input[type=text]{border:1px solid #98b09144;border-radius:6px;padding:10px;background:#102b22;color:#e6ecd9;min-width:0;font-size:12px}select{cursor:pointer}.player-fields{margin-top:18px;display:flex;flex-direction:column;gap:10px}.player-field{display:grid;grid-template-columns:14px 1fr 142px;align-items:center;gap:10px}.player-field input{width:100%}.player-field .color-dot{width:11px;height:11px}.variant-settings{margin-top:23px;border-top:1px solid var(--line);padding-top:18px}summary{cursor:pointer;font-size:12px;list-style:disclosure-closed}summary span{display:block;font-size:9px;color:var(--muted);margin:5px 0 15px}.toggle-row{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:15px 0}.toggle-row strong{font-size:11px;font-weight:600}.toggle-row small{font-size:10px;line-height:1.6;color:var(--muted);display:block;margin-top:4px}.toggle-row input{accent-color:#aaca86;width:17px;height:17px;flex-shrink:0}.select-row{margin:20px 0 10px;display:flex}.setup-warning{font-size:10px;line-height:1.6;color:#9fb594;margin:20px 0 16px}#rules-dialog{width:min(820px,calc(100vw - 32px));padding:32px}.rules-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.rules-grid article>span{font-size:10px;color:#a5bf82}.rules-grid h3{font-size:14px;font-weight:600;margin:5px 0 9px}.rules-grid p{font-size:11px;line-height:1.9;color:#a9bea5;margin:0}.rules-physics{display:flex;gap:15px;background:#254737;border-radius:9px;padding:17px;margin:25px 0 17px}.rules-physics>svg{flex-shrink:0;margin-top:3px}.rules-physics p{font-size:11px;line-height:1.8;margin:0;color:#b9cdb0}.rules-physics strong{color:#deead3}.sources{font-size:9px;line-height:1.9;color:#88a081}.sources a{text-underline-offset:3px}.rules-close{display:block;margin:20px auto 0}#winner-dialog{text-align:center;width:420px;padding:40px 32px}.winner-symbol{font-size:72px;color:#e2ae47}#winner-dialog .eyebrow{margin-top:20px}#winner-dialog p:not(.eyebrow){font-size:12px;color:var(--muted);line-height:1.7}#winner-dialog .roll-button{margin:25px 0 20px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);z-index:20;background:#d8e8b8;color:#213a2b;padding:13px 20px;border-radius:8px;font-size:12px;box-shadow:0 8px 30px #0003;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw}.toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1500px){.board-canvas{height:620px}main{padding-top:46px}.game-layout{grid-template-columns:minmax(0,1fr) 336px}.turn-card{padding:26px}.dice-wrap>div{height:195px}.player-card{padding:17px 15px}}
@media(max-width:1150px){.topbar{padding:0 30px}main{padding:30px}.game-layout{gap:18px;grid-template-columns:minmax(0,1fr) 290px}.board-canvas{height:500px}.board-topline{padding:20px 18px 0}.board-tag{font-size:8px;letter-spacing:1px}.players-label{font-size:8px}.turn-card{padding:22px 18px 16px}.player-strip{gap:7px}.player-card{padding:13px 8px}.player-name{font-size:10px}.player-type{font-size:8px}.table-foot{align-items:flex-start;line-height:1.6}.table-foot .text-button{text-align:right}footer{margin:0 30px}nav{margin-left:15px}.board-bottomline{left:16px}.board-bottomline>span{font-size:8px}}
@media(max-width:900px){.topbar{height:79px;padding:0 22px;gap:20px}.brand{font-size:29px}nav{margin-left:4px;gap:20px}.header-actions{gap:8px}.secondary-button{padding:10px 12px;font-size:11px}.header-actions .icon-button{width:35px;height:35px}.game-layout{grid-template-columns:minmax(0,1fr) 260px;gap:14px}main{padding:26px 22px}.eyebrow{font-size:9px}.board-canvas{height:430px}.board-bottomline>span{display:none}.board-bottomline{justify-content:flex-end}.board-tag{letter-spacing:.7px}.players-label{display:none}.player-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.player-card{padding:12px}.player-progress{margin-top:8px}.turn-card{padding:20px 16px}.turn-card h2{font-size:23px}.dice-wrap>div{height:166px}.roll-button .key-hint{display:none}.table-foot{flex-direction:column;gap:8px}.activity-card{padding:18px 16px 8px}.tip-card{padding-left:5px}.game-status{font-size:9px}footer{margin:0 22px}}
@media(max-width:700px){.topbar{height:74px;padding:0 18px;gap:12px}nav{display:none}.brand{font-size:30px}.brand-mark{grid-template-columns:8px 8px;gap:3px}.brand-mark i{width:8px;height:8px}.header-actions .secondary-button{font-size:10px;padding:10px}.header-actions .secondary-button svg{width:15px}main{padding:26px 15px 20px}.eyebrow{font-size:8px;letter-spacing:2px}.game-layout{display:flex;flex-direction:column;gap:22px}.table-column{width:100%}.board-canvas{height:440px}.board-topline{padding:18px 18px 0}.board-tag{font-size:8px;letter-spacing:1px}.players-label{display:block;font-size:7px}.board-bottomline{bottom:12px}.board-bottomline>span{display:flex;font-size:8px}.board-bottomline{justify-content:space-between}.player-strip{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:10px}.player-card{padding:12px 8px}.player-name{font-size:9px;gap:5px}.color-dot{width:6px;height:6px}.player-type{font-size:7px;padding-left:11px}.player-progress{flex-direction:column;gap:7px;align-items:flex-start;padding-left:11px}.mini-pawns{gap:4px}.mini-pawns i{width:5px;height:10px}.player-progress>span{font-size:8px}.table-foot{flex-direction:row;font-size:8px;margin-top:12px;gap:8px;align-items:center}.table-foot .text-button{font-size:8px;max-width:110px}.control-column{display:grid;grid-template-columns:1fr;gap:14px;width:100%}.turn-card{padding:23px}.turn-card h2{font-size:27px}.turn-subtitle{min-height:auto}.dice-wrap{margin:0 auto;max-width:330px}.dice-wrap>div{height:190px}.game-status{font-size:11px}.roll-button{font-size:13px}.turn-meta{font-size:9px}.turn-meta>span:last-child{font-size:9px}.activity-card{margin:0;padding:18px 22px 8px}.activity-list li{font-size:10px}.tip-card{display:none}footer{font-size:8px;padding:20px 0;margin:0 18px;gap:20px;align-items:flex-start}footer>span:nth-child(2){text-align:right;font-size:7px;max-width:180px;line-height:1.8}.footer-colors{display:none}.rules-grid{grid-template-columns:1fr;gap:23px}#rules-dialog{padding:24px}dialog{padding:24px}dialog h2{font-size:25px}.player-field{grid-template-columns:12px 1fr 125px;gap:7px}.player-field select,.player-field input{font-size:11px}.turn-card .moves{max-height:unset}}
@media(max-width:390px){.board-canvas{height:390px}.header-actions .secondary-button{padding:9px 8px}.header-actions .secondary-button svg{display:none}.header-actions .icon-button{width:32px;height:32px}.brand{font-size:28px}.board-bottomline>span{font-size:7px}.player-card{padding:11px 6px}.player-name{font-size:8px}.player-type{font-size:6px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Keep the available screen focused on the game. */
.brand-title{font:inherit;letter-spacing:inherit;margin:0}
.topbar{max-width:1800px;height:72px;padding:0 28px}
main{max-width:1800px;padding:20px 28px 24px}
footer{max-width:1744px}
@media(min-width:901px){.board-canvas{height:clamp(520px,calc(100dvh - 250px),900px)}}
@media(max-width:900px){.topbar{padding:0 22px}main{padding:16px 22px 20px}}
@media(max-width:700px){.topbar{height:64px;padding:0 18px}main{padding:14px 15px 20px}}

/* Player identity stays in its row while colors can be exchanged. */
.player-fields{gap:14px}
.player-field{display:block;min-width:0;margin:0;padding:12px 12px 14px;border:1px solid color-mix(in srgb,var(--player-color) 35%,transparent);border-radius:9px;background:#143227}
.player-field legend{padding:0 6px;font-size:11px;font-weight:600;color:#d8e5d0}
.player-field legend .color-dot{display:inline-block;margin-right:7px;vertical-align:middle;width:8px;height:8px}
.player-inputs{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr) minmax(0,1fr);gap:10px}
.player-inputs label{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:9px;color:var(--muted)}
.player-inputs input,.player-inputs select{width:100%;font-size:11px;padding:10px 7px}
.color-help,.color-feedback{font-size:10px;line-height:1.7;margin:12px 0 0;color:var(--muted)}
.color-feedback{color:var(--accent)}
.color-feedback:empty{display:none}
@media(max-width:500px){.player-inputs{grid-template-columns:repeat(2,minmax(0,1fr))}.player-name-label{grid-column:1/-1}.player-field{padding:10px 10px 12px}}

/* Camera controls have their own space: they never cover the board. */
.board-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:clamp(620px,calc(100dvh - 150px),1000px)}
.board-topline{position:static;padding:10px 20px 6px;min-height:32px}
.board-canvas{height:auto!important;min-height:0;cursor:grab}
.board-bottomline{position:static;padding:8px 16px 14px;gap:12px;min-height:61px}
.camera-controls{flex-shrink:0}
.reset-view{margin-right:4px}
@media(max-width:1150px){.board-bottomline>span{display:none}.board-bottomline{justify-content:flex-end}}
@media(max-width:900px){.board-shell{height:510px}}
@media(max-width:700px){.board-shell{height:clamp(405px,calc(100vw + 60px),620px)}.board-topline{padding:10px 15px 6px}.board-bottomline{padding:8px 10px 12px;justify-content:center}.camera-controls{gap:7px}.icon-button.small{width:34px;height:34px}}

/* A deeper throwing surface and enough vertical space for the dice to rise. */
.turn-subtitle{min-height:0}
.dice-wrap{margin-top:0}
.dice-wrap>div{height:240px}
.move-button.safe{color:#b9e7d9;border-color:#8ac9b77a}
@media(max-width:900px){.dice-wrap>div{height:220px}}
@media(max-width:700px){.dice-wrap>div{height:240px}}
