*{box-sizing:border-box;margin:0;padding:0}body{--paper:#f6e8c0;--paper-light:#fff7df;--ink:#18385f;--ink-dark:#10243e;--culligan-red:#d94224;--culligan-blue:#22679e;--rule:#23303e38;--shadow-paper:0 16px 34px #16304e2e;--button-bg:#fff9e7f0;--button-border:#18385f61;color:#1f2933;background-color:#7fa8c7;background-image:linear-gradient(#ffffff29 0%,#3659762e 100%),url(assets/culligan-table-texture.png);background-repeat:repeat;background-size:auto,560px 560px;flex-direction:column;justify-content:center;align-items:center;height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;position:relative}body:before{content:"";z-index:0;pointer-events:none;backdrop-filter:blur(1.5px)saturate(.92);opacity:0;background:linear-gradient(#ffffff57,#e6eff633),#f4f9fc3d;transition:opacity .28s cubic-bezier(.19,1,.22,1);position:fixed;inset:0}body.game-active:before{opacity:1}@keyframes menuIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes boardIn{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tilePlace{0%{filter:drop-shadow(0 16px 14px #1f293333);transform:translateY(-10px)scale(1.055)}72%{transform:translateY(2px)scale(.992)}to{filter:none;transform:translateY(0)scale(1)}}@keyframes selectablePulse{0%,to{box-shadow:inset 0 0 0 2px #ffd64fe6,0 0 #183f6300}50%{box-shadow:inset 0 0 0 3px #ffd64f,0 0 0 2px #235f9f61,0 0 10px #ecc94b57}}@keyframes tokenPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.45)}70%{opacity:1;transform:translate(-50%,-50%)scale(1.16)}to{transform:translate(-50%,-50%)scale(1)}}@keyframes currentTokenPop{0%{opacity:0;transform:translate(-50%,-50%)scale(.45)}70%{opacity:1;transform:translate(-50%,-50%)scale(1.28)}to{transform:translate(-50%,-50%)scale(1.16)}}@keyframes currentTokenPulse{0%,to{box-shadow:0 0 0 2px #ffda5894,0 0 6px #ecc94b5c}50%{box-shadow:0 0 0 3px #ffda58b8,0 0 10px #ecc94b7a}}@keyframes dicePop{0%{filter:drop-shadow(0 1px #40516324);transform:translateY(2px)rotate(-2deg)scale(.96)}62%{filter:drop-shadow(0 5px 3px #40516329);transform:translateY(-2px)rotate(1deg)scale(1.04)}to{filter:drop-shadow(0 2px #40516324);transform:translateY(0)rotate(0)scale(1)}}@keyframes diceTumble{0%{transform:translateY(0)rotate(-4deg)scale(.98)}28%{transform:translateY(-5px)rotate(5deg)scale(1.03)}58%{transform:translateY(1px)rotate(-3deg)scale(.99)}82%{transform:translateY(-2px)rotate(2deg)scale(1.01)}to{transform:translateY(0)rotate(0)scale(1)}}@keyframes messageIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.hidden{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.banner-graphic{object-fit:contain;pointer-events:none;user-select:none;filter:drop-shadow(0 8px 9px #16304e2e);display:block}.menu-banner{width:min(735px,100vw - 3rem);max-height:330px;margin:-.55rem auto .45rem;transform:translate(-2.2%)}#main-menu{z-index:1;text-align:center;border:1px solid var(--rule);width:min(850px,100vw - 2rem);box-shadow:var(--shadow-paper), inset 0 1px 0 #ffffff9e;background:linear-gradient(#fffaebfb,#f1e0b8f9);border-radius:8px;padding:1.05rem 1.4rem 1.35rem;transition:min-height .28s cubic-bezier(.22,1,.36,1),padding .28s cubic-bezier(.22,1,.36,1);animation:.34s ease-out both menuIn;position:relative}.menu-version{color:var(--ink);opacity:.35;text-align:right;letter-spacing:.03em;margin-top:.5rem;font-size:.7rem}#main-menu h1{color:#172033;letter-spacing:0;margin-bottom:1rem;font-size:2.5rem}.setup-panel{gap:.85rem;width:min(500px,100%);margin:0 auto;transition:width .28s cubic-bezier(.22,1,.36,1),gap .28s cubic-bezier(.22,1,.36,1);display:grid}.setup-section{gap:.45rem;display:grid}.setup-section-label{color:#18385fb8;letter-spacing:.08em;text-align:left;text-transform:uppercase;font-size:.72rem;font-weight:900}.mode-tabs{background:#fff9e780;border:1px solid #18385f38;border-radius:7px;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;padding:.25rem;display:grid;box-shadow:inset 0 1px #ffffff94}.mode-btn{color:var(--ink);font:inherit;white-space:normal;text-align:center;cursor:pointer;box-shadow:none;background:0 0;border:1px solid #0000;border-radius:5px;padding:.58rem .3rem;font-size:.88rem;font-weight:850;line-height:1.2;transition:transform .14s cubic-bezier(.19,1,.22,1),box-shadow .14s cubic-bezier(.19,1,.22,1),border-color .14s,color .14s,filter .18s}.mode-btn[data-mode=online]{opacity:.45;cursor:default;position:relative}.mode-btn[data-mode=online]:after{content:"Coming Soon";letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap;opacity:.7;font-size:.52rem;font-weight:900;position:absolute;bottom:-.05rem;left:50%;transform:translate(-50%)}.mode-btn.active{color:var(--ink-dark);background:#fff9e7fa;border-color:#18385f57;box-shadow:0 2px #10243e29,0 7px 14px #16304e1f,inset 0 1px #ffffffb8}.mode-btn:hover{color:var(--ink-dark);background:#fff9e7b3;transform:none}.mode-btn:active{transform:none}.setup-inputs{transform-origin:top;grid-template-columns:repeat(2,72px);justify-content:center;align-items:end;gap:.85rem;transition:opacity .18s,transform .24s cubic-bezier(.22,1,.36,1);display:grid}.name-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;width:min(420px,100%);margin:.05rem auto 0;display:grid}.name-field{min-width:0;color:var(--ink);pointer-events:none;gap:.28rem;font-weight:900;display:grid;position:relative}.name-field span{text-transform:uppercase;letter-spacing:.065em;color:#18385fbd;font-size:.68rem}.name-field input{width:100%;min-width:0;min-height:2.45rem;color:var(--ink-dark);cursor:text;font:inherit;pointer-events:auto;background:linear-gradient(#fffcf2fa,#f8eed2f0);border:2px solid #18385f57;border-radius:6px;padding:.32rem .7rem;font-size:.96rem;font-weight:800;transition:border-color .14s,box-shadow .14s,background .14s;box-shadow:inset 0 2px 5px #16304e1f,inset 0 -1px #ffffffad,0 1px #ffffff8c}.name-field input:hover{background:linear-gradient(#fffdf6,#faf0d7fa);border-color:#215b9a94;box-shadow:inset 0 2px 5px #16304e24,inset 0 -1px #ffffffb8,0 0 0 2px #2f649914}.name-field input:focus{border-color:#215b9ae6;outline:0;box-shadow:inset 0 2px 5px #16304e24,0 0 0 3px #ffdd616b,0 5px 14px #18385f1f}.name-field:focus-within span,.setup-field:focus-within span{color:#18385feb}.cpu-name-field input{color:#315071}.name-field-row{pointer-events:auto;align-items:stretch;gap:.4rem;min-width:0;display:flex}.name-field-row>input{flex:auto;min-width:0}.token-chooser-btn{cursor:pointer;width:2.55rem;min-width:2.55rem;height:2.55rem;box-shadow:none;pointer-events:auto;background:0 0;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-self:center;align-items:center;padding:0;transition:transform .12s;display:flex}.token-chooser-btn:hover{transform:translateY(-1px)}.token-chooser-btn:focus-visible{border-radius:50%;outline:none;box-shadow:0 0 0 3px #ffdd6199}.token-chooser-icon{aspect-ratio:1;background-color:var(--chooser-colour,#888);outline-offset:1px;border-radius:50%;outline:2px solid #18385f40;width:78%;display:block;position:relative;overflow:hidden;box-shadow:0 2px 4px #00000047,0 4px 10px #00000029}.token-chooser-icon:after{content:"";-webkit-mask-image:var(--chooser-icon);mask-image:var(--chooser-icon);background-color:#ffffffe0;border-radius:50%;position:absolute;inset:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:82% 82%;mask-size:82% 82%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.token-popup-modal{background:var(--paper,#f8efce);text-align:center;border:2px solid #18385f2e;border-radius:14px;max-width:min(440px,92vw);padding:1.1rem 1.2rem 1.25rem;box-shadow:0 22px 50px #16304e52}.token-popup-modal h3{letter-spacing:.02em;color:var(--ink-dark,#1c2c44);margin:0 0 .85rem;font-size:1.05rem}.token-popup-grid{grid-template-columns:repeat(5,1fr);gap:.45rem;margin-bottom:.85rem;display:grid}.token-popup-cell{aspect-ratio:1;cursor:pointer;background:#ffffff80;border:2px solid #18385f2e;border-radius:8px;justify-content:center;align-items:center;width:100%;padding:0;transition:transform .1s,border-color .14s,background .14s;display:flex;position:relative}.token-popup-cell:hover{background:#ffffffd9;border-color:#18385f8c;transform:scale(1.06)}.token-popup-cell{outline-offset:2px;outline:3px solid #0000}.token-popup-cell.selected{outline-color:var(--ink);background:#ffda5859}.token-popup-icon{background-color:var(--cell-colour,#888);width:90%;height:90%;-webkit-mask-image:var(--cell-icon);mask-image:var(--cell-icon);display:block;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.token-popup-preview{border:3px solid #2d3748;border-radius:50%;width:72px;height:72px;margin:0 auto .9rem;transition:background-color .18s;position:relative;overflow:hidden;box-shadow:0 4px 14px #16304e38}.token-popup-preview[data-skin]:after{content:"";-webkit-mask-image:var(--token-icon);mask-image:var(--token-icon);background-color:#ffffffe0;position:absolute;inset:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:74% 74%;mask-size:74% 74%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.token-popup-actions{justify-content:center;gap:.6rem;margin-top:.2rem;display:flex}.token-randomize-btn{cursor:pointer;background-color:var(--ink);opacity:.65;pointer-events:auto;border:none;flex-shrink:0;align-self:center;width:1.1rem;min-width:1.1rem;height:1.1rem;padding:0;transition:opacity .12s;-webkit-mask-image:url(assets/shuffle.png);mask-image:url(assets/shuffle.png);-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.token-randomize-btn:hover{opacity:1}.token-popup-section-label{text-transform:uppercase;letter-spacing:.07em;color:#18385f99;margin:.7rem 0 .45rem;font-size:.72rem;font-weight:800}.token-color-swatches{flex-wrap:wrap;justify-content:center;gap:6px;margin-bottom:.8rem;display:flex}.token-color-swatch{cursor:pointer;outline-offset:2px;border:2px solid #0000;border-radius:50%;outline:3px solid #0000;width:28px;height:28px;transition:transform .1s,outline-color .12s}.token-color-swatch:hover{transform:scale(1.14)}.token-color-swatch.selected{outline-color:#18385fd9;transform:scale(1.1)}.menu-actions{justify-items:center;gap:.52rem;margin-top:.1rem;display:grid}.secondary-menu-actions{flex-wrap:wrap;justify-content:center;gap:.45rem;display:flex}.primary-start{width:min(300px,100%);min-height:3.35rem;font-size:1.16rem}.menu-secondary{width:auto;min-height:0;box-shadow:none;color:#18385fd1;background:0 0;border-color:#0000;padding:.36rem .7rem;font-size:.9rem}.menu-secondary:hover{background:#fff9e794}.online-menu-actions{transform-origin:top;flex-wrap:wrap;justify-content:center;gap:.7rem;transition:opacity .18s,transform .24s cubic-bezier(.22,1,.36,1);display:flex}.setup-panel:not([data-mode=online]) .online-section{display:none}.setup-panel[data-mode=online] .settings-section,.setup-panel[data-mode=online] .primary-start{opacity:0;visibility:hidden;pointer-events:none;position:absolute;transform:translateY(-8px)scale(.98)}.setup-panel[data-mode=online]{width:min(500px,100%)}.setup-panel[data-mode=online] .online-menu-actions{grid-template-columns:repeat(2,minmax(140px,1fr));width:min(390px,100%);margin:0 auto;display:grid}.setup-field{text-align:left;color:var(--ink);pointer-events:none;gap:.35rem;font-weight:900;display:grid;position:relative}.setup-field span{text-transform:uppercase;letter-spacing:.06em;font-size:.78rem}.setup-field input{width:100%;min-height:3rem;color:var(--ink-dark);cursor:text;font:inherit;pointer-events:auto;background:linear-gradient(90deg,#fffcf2fa 0 calc(100% - 1.68rem),#e6d9b8d1 calc(100% - 1.68rem) 100%),linear-gradient(#fffaecfa,#f2e2bceb);border:2px solid #18385f5c;border-radius:6px;padding:.3rem 2rem .3rem .58rem;font-size:1.35rem;font-weight:900;transition:border-color .14s,box-shadow .14s,background .14s;box-shadow:inset 0 2px 5px #16304e21,inset 0 -1px #ffffffb3,0 1px #ffffff8c}.number-control{pointer-events:auto;width:100%;position:relative}.number-control input::-webkit-outer-spin-button,.number-control input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.number-control input[type=number]{-moz-appearance:textfield;appearance:textfield}.setup-field input:disabled{opacity:.72;cursor:not-allowed}.setup-field input:hover{border-color:#215b9a9e;box-shadow:inset 0 2px 5px #16304e26,inset 0 -1px #ffffffb8,0 0 0 2px #2f649914}.setup-field input:focus{border-color:#215b9aeb;outline:0;box-shadow:inset 0 2px 5px #16304e24,0 0 0 3px #ffdd6170,0 5px 14px #18385f1f}.number-stepper{z-index:2;grid-template-rows:1fr 1fr;gap:3px;width:1.38rem;display:grid;position:absolute;top:.26rem;bottom:.26rem;right:.26rem}.number-step{appearance:none;cursor:pointer;background:linear-gradient(#fff9e7fa,#e8dab7eb);border:1px solid #18385f57;border-radius:4px;padding:0;transition:transform .1s,border-color .14s,background .14s;position:relative;box-shadow:inset 0 1px #ffffffa6,0 1px 2px #18385f29}.number-step:before{content:"";width:0;height:0;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.number-step-up:before{border-bottom:.38rem solid #18385fe6;border-left:.28rem solid #0000;border-right:.28rem solid #0000}.number-step-down:before{border-top:.38rem solid #18385fe6;border-left:.28rem solid #0000;border-right:.28rem solid #0000}.number-step:hover{background:linear-gradient(#fffdf2,#e9dcb8f2);border-color:#215b9aad}.number-step:active{transform:translateY(1px)}.setup-field:has(input:disabled) .number-step{opacity:.35;cursor:not-allowed}.menu-btn,.info-btn,.control-btn,#overlay .modal button{background:var(--button-bg);color:var(--ink);border:1px solid var(--button-border);cursor:pointer;text-shadow:none;border-radius:6px;padding:.74rem 1.12rem;font-size:1rem;font-weight:850;transition:transform .14s cubic-bezier(.19,1,.22,1),box-shadow .14s cubic-bezier(.19,1,.22,1),border-color .14s,color .14s,filter .18s;position:relative;overflow:hidden;box-shadow:0 2px #10243e2e,0 7px 15px #16304e1f,inset 0 1px #ffffffa3}.menu-btn:before,.info-btn:before,.control-btn:before,#overlay .modal button:before{display:none}.menu-btn:hover,.info-btn:hover,.control-btn:hover,#overlay .modal button:hover{color:var(--ink-dark);filter:saturate(1.03);border-color:#18385f94;transform:translateY(-1px);box-shadow:0 3px #10243e33,0 10px 18px #16304e29,inset 0 1px #ffffffb8}.menu-btn:active,.info-btn:active,.control-btn:active,#overlay .modal button:active{transform:translateY(1px);box-shadow:0 1px #10243e33,0 4px 10px #16304e1f,inset 0 1px 2px #10243e14}@media (width<=760px){.setup-panel{width:100%}.mode-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.mode-btn{padding:.52rem .25rem;font-size:clamp(.72rem,2.6vw,.85rem)}.setup-panel .menu-btn,.setup-panel .info-btn{width:min(300px,100%)}.setup-panel[data-mode=online] .online-menu-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.setup-inputs{grid-template-columns:repeat(2,72px);justify-content:center}.name-fields{grid-template-columns:1fr;width:min(300px,100%)}}@media (width<=480px){#main-menu{width:calc(100vw - 1.2rem);padding:.8rem .85rem 1rem}.menu-banner{max-height:130px}.setup-panel{gap:.65rem}.mode-btn{padding:.48rem .2rem;font-size:clamp(.68rem,3.2vw,.8rem)}.name-fields{grid-template-columns:1fr;width:100%}.name-field-row>input{font-size:.95rem}.primary-start{width:100%}.secondary-menu-actions{gap:.25rem}}.online-code{min-width:7.25rem;color:var(--ink-dark);letter-spacing:.08em;background:#fff9e7b8;border:1px solid #18385f3d;border-radius:6px;justify-content:center;align-items:center;margin:.85rem auto 0;padding:.55rem .95rem;font-size:1.7rem;font-weight:900;display:inline-flex}.online-form{gap:.75rem;margin-top:1rem;display:grid}.online-form input{border:1px solid var(--button-border);width:100%;min-height:3rem;color:var(--ink-dark);font:inherit;text-align:center;text-transform:uppercase;background:#fff9e7db;border-radius:6px;padding:.45rem .7rem;font-size:1.2rem;font-weight:850}.online-status{color:#344a60;margin-top:.8rem;font-weight:700}#game-ui{z-index:1;flex-direction:column;align-items:center;width:100%;max-width:1240px;height:100%;display:flex;position:relative}#top-panel{border-bottom:1px solid var(--rule);backdrop-filter:blur(10px);background:#f6e8c0d1;grid-template-columns:1fr auto 1fr;justify-content:center;align-items:center;gap:1rem;width:100%;padding:.35rem 1rem .25rem;display:grid}#turn-indicator{max-width:13rem;color:var(--ink);border:1px solid var(--active-player-color,#18385f33);box-shadow:0 1px 0 #ffffff8a, 0 0 0 1px color-mix(in srgb, var(--active-player-color,#ecc94b) 20%, transparent);white-space:nowrap;text-overflow:ellipsis;background:#fff9e7c7;border-radius:6px;justify-self:end;padding:.34rem .62rem;font-size:.88rem;font-weight:850;line-height:1.1;transition:border-color .32s cubic-bezier(.22,1,.36,1),box-shadow .32s cubic-bezier(.22,1,.36,1);overflow:hidden}.top-left-actions{justify-self:start;align-items:center;gap:.45rem;display:flex}.top-icon-btn,.top-settings-btn{width:2.1rem;height:2.1rem;box-shadow:none;cursor:pointer;opacity:.76;background-color:#0000;background-position:50%;background-repeat:no-repeat;background-size:contain;border:0;padding:0;transition:opacity .14s,transform .14s cubic-bezier(.19,1,.22,1),filter .14s,background-color .14s}.top-icon-btn:hover,.top-settings-btn:hover{opacity:1;transform:translateY(-1px)}.top-icon-btn:active,.top-settings-btn:active{transform:translateY(1px)}.top-help-btn{background-image:url(assets/help.png);background-size:78%}.top-settings-btn{background-image:url(assets/settings.png);background-size:78%}.top-exit-btn{background-image:url(assets/exit.png);background-size:78%}.game-banner{grid-column:2;max-width:min(540px,56vw);height:clamp(54px,9vh,84px)}#dice-container{align-items:center;gap:.5rem;display:flex}.control-btn{min-height:2.25rem;font-size:.9rem}.control-btn:disabled{opacity:.55;cursor:default;transform:none;box-shadow:0 1px #10243e1f}.control-btn.cpu-active-control,.control-btn.cpu-active-control:disabled{opacity:1;box-shadow:0 3px 0 #10243e33, 0 0 0 3px color-mix(in srgb, var(--active-player-color,#ecc94b) 28%, transparent), 0 10px 18px #16304e29, inset 0 1px 0 #ffffffb8;color:var(--ink-dark);border-color:#18385f9e}#dice-display{color:#2d3748;opacity:0;transform-origin:0;justify-content:center;align-items:center;gap:.42rem;width:0;min-width:0;max-width:0;min-height:42px;font-size:1rem;transition:width .42s cubic-bezier(.19,1,.22,1),max-width .42s cubic-bezier(.19,1,.22,1),opacity .24s,transform .42s cubic-bezier(.19,1,.22,1);display:flex;overflow:hidden;transform:translate(-.35rem)scale(.98)}#dice-display.has-dice{opacity:1;width:128px;max-width:128px;transform:translate(0)scale(1)}.dice-pair{perspective:220px;align-items:center;gap:.38rem;display:inline-flex}#dice-display .die{--die-size:34px;width:var(--die-size);height:var(--die-size);transform-origin:50% 58%;background:radial-gradient(circle at 28% 24%,#ffffffe6,#fff0 34%),linear-gradient(145deg,#fff7df 0%,#f1dba6 58%,#d4ad63 100%);border:1px solid #1d2f4461;border-radius:8px;flex:none;display:inline-block;position:relative;box-shadow:inset 0 1px #ffffffb8,inset 0 -2px #694a1f29,0 2px #2b41562e}#dice-display .die:before{content:"";pointer-events:none;border:1px solid #ffffff47;border-radius:6px;position:absolute;inset:2px}#dice-display .pip{opacity:0;background:radial-gradient(circle at 35% 28%,#5e7186 0 18%,#27394f 55%,#14253a 100%);border-radius:50%;width:6px;height:6px;position:absolute;transform:translate(-50%,-50%)scale(1);box-shadow:inset 0 1px #ffffff29}#dice-display .pip.active{opacity:1}#dice-display .top-left{top:27%;left:27%}#dice-display .top-right{top:27%;left:73%}#dice-display .middle-left{top:50%;left:27%}#dice-display .middle-right{top:50%;left:73%}#dice-display .center{top:50%;left:50%}#dice-display .bottom-left{top:73%;left:27%}#dice-display .bottom-right{top:73%;left:73%}#dice-display.rolled .die{animation:.38s cubic-bezier(.2,.85,.28,1.18) both dicePop}#dice-display.rolled .die:nth-child(2){animation-delay:60ms}#dice-display.rolling .die{animation:.72s cubic-bezier(.18,.78,.18,1) both diceTumble}#dice-display.rolling .die:nth-child(2){animation-delay:40ms}#dice-display .dice-sum{color:#26364c;opacity:0;min-width:2rem;margin-left:.18rem;font-size:.95rem;font-weight:800;transform:translate(0)}#dice-display .dice-sum.visible{opacity:1;transform:translate(0)}#board-container{touch-action:none;flex:1;width:100%;padding:0;display:block;position:relative;overflow:hidden}.board-camera{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}.board-grid{grid-template-rows:repeat(var(--rows), var(--tile-size));grid-template-columns:repeat(var(--cols), var(--tile-size));transform-origin:0 0;will-change:filter;background-color:#0000;border-radius:0;gap:0;padding:0;display:grid}.tile{will-change:transform;background-color:#f6e8c4;border:0;border-radius:0;width:100%;height:100%;transition:filter .18s cubic-bezier(.22,1,.36,1),transform .18s cubic-bezier(.22,1,.36,1),box-shadow .18s cubic-bezier(.22,1,.36,1);display:block;position:relative;overflow:hidden}.tile-art{z-index:0;transform-origin:50%;position:absolute;inset:0;overflow:hidden}.tile-art-slice{image-rendering:auto;position:absolute;overflow:hidden}.tile-art-slice-inner{image-rendering:auto;background-repeat:no-repeat;background-size:100% 100%;position:absolute}.tile-wrapper{width:100%;height:100%;position:relative}.tile-wrapper:has(.tile.selectable),.tile-wrapper:has(.tile.placement),.tile-wrapper:has(.tile.cpu-target){z-index:50}.tile.empty{background-color:#0000;border:0;border-radius:0;transition:background-color .16s,border-color .16s,transform .16s}.space{box-sizing:border-box;z-index:1;background-image:url(assets/tile-segments/blank.png);background-position:50%;background-size:cover;border:2px solid #1f1f1f;justify-content:center;align-items:center;transition:box-shadow .16s,transform .16s,filter .16s;display:flex;position:absolute;overflow:hidden}.tile.image-backed .space{border:0;background:0 0!important}.tile-num-overlay{z-index:4;pointer-events:none;background:50%/contain no-repeat;width:29%;height:16.5%;padding:0;display:block;position:absolute;bottom:4.1%;right:-.7%}.pipe-segment{color:#161616}.soft{background-image:url(assets/tile-segments/soft.png)}.hard{background-image:url(assets/tile-segments/hard.png)}.neutral{background-image:url(assets/tile-segments/neutral.png)}.selectable{cursor:pointer;animation:1.15s ease-in-out infinite selectablePulse;box-shadow:inset 0 0 0 3px #ffd64ff2,0 0 0 2px #235f9f6b}.tile.selectable{outline-offset:1px;cursor:pointer;z-index:60;border-color:#ecc94b;outline:2px solid #ffd64ffa;animation:1.15s ease-in-out infinite selectablePulse;box-shadow:0 0 0 2px #ffffff47,0 0 10px #ecc94b80}.tile.selectable:before,.tile.placement:before{content:"";z-index:3;pointer-events:none;opacity:.82;background:linear-gradient(#fffad23d,#ffdd5d33),radial-gradient(circle,#fff5aa61,#ffe6682e 68%,#ffc52d47);animation:1.15s cubic-bezier(.45,0,.55,1) infinite tileHighlightWash;position:absolute;inset:0;box-shadow:inset 0 0 0 3px #fff5ae8c,inset 0 0 26px #ffcd3838}.space.selectable{z-index:65;box-shadow:none;transform:none}.space.selectable:before,.space.cpu-choice:before{content:"";box-sizing:border-box;z-index:2;pointer-events:none;opacity:.92;background:linear-gradient(#fffad242,#ffdd5d38),radial-gradient(circle,#fff5aa6b,#ffe66833 68%,#ffc52d4d);animation:1.15s cubic-bezier(.45,0,.55,1) infinite tileHighlightWash;position:absolute;inset:9%;box-shadow:inset 0 0 0 2px #fff5aeb8,0 0 0 1px #235f9f38,0 0 14px #ffcd3847}.space.cpu-choice{--cpu-target-color:var(--active-player-color,#ecc94b);animation:1.05s ease-in-out infinite cpuChoicePulse}.space.cpu-choice:before{background:linear-gradient(180deg, #ffffff38, color-mix(in srgb, var(--cpu-target-color) 22%, transparent)), radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--cpu-target-color) 38%, transparent), transparent 70%);box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--cpu-target-color) 42%, transparent)}@keyframes cpuChoicePulse{0%,to{box-shadow:inset 0 0 0 3px var(--cpu-target-color), 0 0 0 2px #ffffff85, 0 0 14px color-mix(in srgb, var(--cpu-target-color) 52%, transparent)}50%{box-shadow:inset 0 0 0 4px var(--cpu-target-color), 0 0 0 3px #ffffff94, 0 0 22px color-mix(in srgb, var(--cpu-target-color) 72%, transparent)}}.tile.selectable:after,.tile.placement:after{content:none}.tile.cpu-target{--cpu-target-color:var(--active-player-color,#ff5a3c);outline:2px solid var(--cpu-target-color);outline-offset:1px;box-shadow:0 0 0 2px #ffffff80, 0 0 14px color-mix(in srgb, var(--cpu-target-color) 68%, transparent);z-index:70;animation:.52s cubic-bezier(.4,0,.6,1) both cpuTargetFlash}.tile.cpu-target:after{content:none}.tile.cpu-target:before{content:"";z-index:3;pointer-events:none;background:linear-gradient(180deg, #fff3, color-mix(in srgb, var(--cpu-target-color) 18%, transparent)), radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--cpu-target-color) 34%, transparent), transparent 70%);box-shadow:inset 0 0 0 3px color-mix(in srgb, var(--cpu-target-color) 38%, transparent);opacity:.9;position:absolute;inset:0}@keyframes tileHighlightWash{0%,to{opacity:.76}50%{opacity:.94}}@keyframes cpuTargetFlash{0%{filter:brightness();transform:scale(1)}35%{filter:brightness(1.18);transform:scale(1.08)}to{filter:brightness();transform:scale(1)}}.tile.selectable:hover,.placement:hover{z-index:8;transform:scale(1.012)}.space.selectable:hover{transform:none}.tile.placed{z-index:7;animation:.42s cubic-bezier(.16,1,.3,1) both tilePlace}.placement{outline-offset:-3px;cursor:pointer;z-index:60;background-color:#ffe97a2e;outline:2px solid #ffd64ffa;animation:1.15s ease-in-out infinite selectablePulse;box-shadow:inset 0 0 0 1px #ffffff5c,0 0 10px #ecc94b6b}.space.corner-br{justify-content:center;align-items:center;padding:0;display:flex}.tile-num{color:#1f2937;font-size:.7rem;font-weight:600;line-height:1}.token{width:calc(var(--tile-size,80px) * .22);height:calc(var(--tile-size,80px) * .22);will-change:transform;border:2px solid #2d3748;border-radius:50%;transition:box-shadow .2s cubic-bezier(.22,1,.36,1),transform .2s cubic-bezier(.22,1,.36,1);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.token-skin-overlay{pointer-events:none;-webkit-mask-image:var(--token-icon);mask-image:var(--token-icon);background-color:#ffffffe0;border-radius:50%;position:absolute;inset:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:82% 82%;mask-size:82% 82%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.token.pop{animation:.24s cubic-bezier(.16,1,.3,1.28) both tokenPop}.token.bump-impact{z-index:12;animation:.34s cubic-bezier(.5,0,.5,1.6) both bumpImpact!important}.token.bump-victim{z-index:11;animation:.34s cubic-bezier(.36,0,.66,1) both bumpShake!important}@keyframes bumpImpact{0%{filter:none;transform:translate(-50%,-50%)scale(1)}30%{filter:brightness(1.35);transform:translate(-50%,-50%)scale(1.32)}55%{transform:translate(-50%,-50%)scale(.92)}to{filter:none;transform:translate(-50%,-50%)scale(1)}}@keyframes bumpShake{0%{filter:none;transform:translate(-50%,-50%)scale(1)rotate(0)}15%{filter:brightness(1.6)saturate(1.6)drop-shadow(0 0 6px #ff3b2f);transform:translate(-50%,-50%)translate(-4px,1px)scale(1.12)rotate(-14deg)}30%{filter:brightness(1.6)saturate(1.6)drop-shadow(0 0 6px #ff3b2f);transform:translate(-50%,-50%)translate(4px,-1px)scale(1.12)rotate(14deg)}45%{filter:brightness(1.4)drop-shadow(0 0 4px #ff3b2f);transform:translate(-50%,-50%)translate(-3px,1px)scale(1.08)rotate(-10deg)}60%{filter:brightness(1.2);transform:translate(-50%,-50%)translate(3px)scale(1.06)rotate(8deg)}to{filter:none;transform:translate(-50%,-50%)scale(1)rotate(0)}}.token.current{z-index:10;animation:1.45s ease-in-out infinite currentTokenPulse;transform:translate(-50%,-50%)scale(1.16);box-shadow:0 0 0 2px #ffda589e,0 0 7px #ecc94b61}.token.current.pop{animation:.24s cubic-bezier(.16,1,.3,1.28) both currentTokenPop,1.45s ease-in-out .24s infinite currentTokenPulse}.token.path-runner{z-index:1000;pointer-events:none;will-change:transform;animation:none;position:fixed;top:0;left:0}.token.off-board-token{z-index:18;box-shadow:0 0 0 2px #f4e5c3e6,0 8px 10px #1f293329}.tile-cursor .cursor-queue-token{z-index:2;animation:none;box-shadow:0 0 0 2px #f4e5c3eb,0 5px 8px #1f29332e}.tile.finish{box-shadow:none;border-color:#cbd5e0;position:relative}.finish-space{background-image:url(assets/tile-segments/finish.png)!important}#action-panel{border-top:1px solid var(--rule);backdrop-filter:blur(10px);background:#f6e8c0db;flex-direction:column;align-items:center;gap:.5rem;width:100%;padding:.7rem 1rem;display:flex;position:relative}#action-panel:before{content:"";background:var(--active-player-color,transparent);pointer-events:none;height:4px;transition:background .32s cubic-bezier(.22,1,.36,1);position:absolute;top:0;left:0;right:0}#action-info{justify-content:center;align-items:center;gap:.65rem;width:100%;display:flex}#turn-token{background-color:var(--active-player-color,#aaa);border:2px solid #2d3748;border-radius:50%;flex-shrink:0;width:2rem;height:2rem;transition:background-color .32s cubic-bezier(.22,1,.36,1);position:relative;box-shadow:0 2px 6px #16304e38}#turn-token .token-skin-overlay{border-radius:50%}#action-text{color:var(--ink-dark);text-align:center;min-height:1.5rem;font-size:1rem;font-weight:600;animation:.22s ease-out both messageIn}#controls-container{flex-wrap:wrap;justify-content:center;align-items:center;gap:.5rem;display:flex}#controls-container .control-btn{margin:0}#overlay{backdrop-filter:blur(5px)saturate(.95);z-index:2000;background:radial-gradient(circle at 50% 42%,#fff4be38,#0d20341a 34%,#0918278a 100%);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}#overlay .modal{border:1px solid var(--rule);width:min(92vw,620px);max-width:620px;color:var(--ink-dark);background:linear-gradient(#fff9e7fa,#efddb2f5);border-radius:8px;padding:1.15rem 1.25rem 1.2rem;animation:.24s cubic-bezier(.19,1,.22,1) both menuIn;box-shadow:0 24px 58px #09182757,inset 0 1px #ffffffbf}#overlay .modal.compact{max-width:430px}#overlay .modal-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem;display:flex}#overlay .modal h2{color:var(--ink);letter-spacing:0;font-size:clamp(1.35rem,3vw,2rem);line-height:1.05}#overlay .modal p{color:#344a60;font-weight:600;line-height:1.45}#overlay .instruction-grid{text-align:left;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;margin-top:.9rem;display:grid}#overlay .instruction-item{background:#fff9e78f;border:1px solid #18385f29;border-radius:7px;padding:.75rem;box-shadow:inset 0 1px #ffffff7a}#overlay .instruction-item strong{color:#173f71;margin-bottom:.22rem;display:block}#overlay .modal-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.85rem;margin-top:1.5rem;display:flex}#overlay .modal button{margin-top:0;padding:.62rem 1rem}#overlay .modal button.secondary{color:var(--ink)}.settings-form{gap:.72rem;margin-top:.65rem;display:grid}.settings-row,.settings-check{background:#fff9e785;border:1px solid #18385f29;border-radius:7px;grid-template-columns:1fr minmax(112px,140px);align-items:center;gap:.85rem;padding:.68rem;display:grid;box-shadow:inset 0 1px #ffffff7a}.settings-check{grid-template-columns:auto 1fr;align-items:start}.settings-row strong,.settings-check strong{color:var(--ink);font-size:.95rem;line-height:1.15;display:block}.settings-row small,.settings-check small{color:#41566c;margin-top:.16rem;font-size:.78rem;font-weight:650;line-height:1.25;display:block}.settings-row select{border:1px solid var(--button-border);width:100%;min-height:2.35rem;color:var(--ink-dark);font:inherit;background:#fff9e7eb;border-radius:6px;padding:.35rem .5rem;font-weight:850}.settings-check input{width:1.2rem;height:1.2rem;accent-color:var(--culligan-blue);margin-top:.1rem}.settings-actions{justify-content:flex-end!important;margin-top:.5rem!important}#overlay .close-modal{width:2rem;height:2rem;line-height:1;border-radius:50%!important;padding:0!important}#overlay .close-modal:before{display:none}.first-tip-panel{background:var(--paper-light,#fff7df);width:min(92vw,720px);color:var(--ink-dark,#10243e);opacity:1;border:1px solid #18385f52;border-radius:8px;align-items:center;gap:.85rem;margin:0 auto .55rem;padding:.68rem .9rem .68rem 1rem;transition:opacity .22s,transform .22s;animation:.32s cubic-bezier(.16,1,.3,1) both tipPop;display:flex;box-shadow:0 8px 20px #16304e2e,0 2px 6px #16304e29}.first-tip-panel.hidden{display:none}.first-tip-panel:before{content:"";background:var(--active-player-color,var(--culligan-blue,#22679e));border-radius:999px;flex:none;align-self:stretch;width:4px}.first-tip-panel>div{flex:1;min-width:0}.first-tip-title{color:var(--ink-dark,#10243e);letter-spacing:.055em;text-transform:uppercase;margin-bottom:.12rem;font-size:.82rem;font-weight:900;line-height:1.1}#tip-text{text-align:left;flex:1;font-size:.98rem;font-weight:650;line-height:1.32}.tip-dismiss{letter-spacing:.04em;text-transform:uppercase;flex-shrink:0;padding:.42rem .82rem;font-size:.88rem}@keyframes tipPop{0%{opacity:0;transform:translateY(8px)scale(.985)}to{opacity:1;transform:translateY(0)scale(1)}}@media (width<=600px){.settings-row{grid-template-columns:1fr}.settings-actions{justify-content:center!important}.first-tip-panel{gap:.6rem;width:calc(100vw - 1rem);padding:.58rem .68rem .58rem .75rem}#tip-text{font-size:.88rem}.tip-dismiss{padding:.36rem .62rem;font-size:.78rem}}.winner-token{border:3px solid #253142;border-radius:50%;width:66px;height:66px;margin:1.2rem auto;position:relative;box-shadow:0 0 0 4px #ffda58b3,0 12px 22px #16304e38}.winner-token[data-skin]:after{content:"";-webkit-mask-image:var(--token-icon);mask-image:var(--token-icon);background-color:#ffffffe0;border-radius:50%;position:absolute;inset:0;-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:74% 74%;mask-size:74% 74%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}#overlay .win-copy{text-align:center;padding:.5rem 0 .25rem}.tile-cursor{pointer-events:none;z-index:1000;opacity:.96;will-change:left, top, transform;border-radius:3px;animation:.22s cubic-bezier(.16,1,.3,1) both tile-lift;position:fixed;transform:translate(-50%,-50%)scale(1.08);box-shadow:0 10px 30px #00000073,0 2px 8px #00000040}.tile-cursor.lifting{transition:left .22s cubic-bezier(.18,.9,.2,1),top .22s cubic-bezier(.18,.9,.2,1)}.tile-cursor-art{border-radius:inherit;transform-origin:50%;will-change:transform;background-position:50%;background-size:cover;animation:.62s ease-in-out .12s infinite alternate tile-wiggle;position:absolute;inset:0}@keyframes tile-lift{0%{filter:drop-shadow(0 2px 4px #1f293329);transform:translate(-50%,-50%)scale(.94)}to{filter:drop-shadow(0 18px 24px #1f293347);transform:translate(-50%,-50%)scale(1.08)}}@keyframes tile-wiggle{0%{transform:rotate(calc(var(--cursor-rotation,0deg) - 3.2deg))}to{transform:rotate(calc(var(--cursor-rotation,0deg) + 3.2deg))}}@media (width<=640px){.game-banner{display:none}#top-panel{grid-template-columns:auto 1fr;gap:.45rem;padding-inline:.55rem}#turn-indicator{max-width:7.9rem;padding:.32rem .46rem;font-size:.76rem}#overlay .instruction-grid{grid-template-columns:1fr}}