:root{--domino-width:72px;--domino-row-height:125px;--domino-shadow:-3px 3px 0 #a087649e, -5px 5px 0 #2823194d;--ink:#29261f;--gold:#d7aa4b;--muted:#b9c9c2;--panel-border:#ffffff1f;--selected:#f0c85b;--surface-inset:#00000024;--domino-face-background:linear-gradient(145deg, #fffdf4, #ded5bb);--pip-depth:inset -3px 3px 3px #fff3, inset 1px -3px 3px #0003;--pip-depth-flipped:inset 3px -3px 3px #fff3, inset -3px 1px 3px #0003;--pip-1:#cc2f2f;--pip-2:#498c25;--pip-3:#ff7716;--pip-4:#0a57b5;--pip-5:#f0d004;--pip-6:#6f2bb7;--pip-7:#96c63d;--pip-8:#b34e8c;--pip-9:#37ac9e;--pip-10:#e32a00;--pip-11:#482ade;--pip-12:#d49f0f}*{box-sizing:border-box}html,body{color:#fff;min-height:100%;margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{background:radial-gradient(circle at 50% 20%, #ffffff0f, transparent 40%), repeating-linear-gradient(45deg, #ffffff03 0 2px, transparent 2px 7px), var(--felt-dark);transition:background-color var(--motion-theme-transition) var(--motion-standard)}button{font:inherit}#app{flex-direction:column;min-height:100vh;display:flex}.topbar{z-index:60;background:var(--chrome);border-bottom:1px solid var(--panel-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:18px;min-height:74px;padding:12px 24px;display:flex;position:relative}.topbar-brand{flex:none}.topbar-actions{align-items:center;gap:14px;margin-left:auto;display:flex}.topbar-button{width:auto;min-height:42px;margin:0;padding:8px 6px!important}.topbar-new-game{box-shadow:0 5px 14px #00000029}.logo{color:#fff;letter-spacing:.08em;text-transform:uppercase;border-radius:6px;padding:5px 8px;font-size:19px;font-weight:900;display:inline-flex}.logo-letter{-webkit-text-stroke:1px #fff;paint-order:stroke fill}.logo-word-start{margin-left:.4em}.logo-letter-white{color:#fff}.logo-pip-1{color:var(--pip-1)}.logo-pip-2{color:var(--pip-2)}.logo-pip-3{color:var(--pip-3)}.logo-pip-4{color:var(--pip-4)}.logo-pip-5{color:var(--pip-5)}.logo-pip-6{color:var(--pip-6)}.logo-pip-7{color:var(--pip-7)}.logo-pip-8{color:var(--pip-8)}.logo-pip-9{color:var(--pip-9)}.logo-pip-10{color:var(--pip-10)}.logo-pip-11{color:var(--pip-11)}.logo-pip-12{color:var(--pip-12)}.theme-picker{color:var(--muted);flex-direction:column;align-items:flex-start;gap:4px;font-size:12px;font-weight:700;display:flex}.theme-picker select{color:#fff;font:inherit;background:#ffffff14;border:1px solid #ffffff29;border-radius:8px;padding:7px 10px}.theme-picker option{color:#222}main{flex:1;width:min(1040px,100%);margin:0 auto}.center-panel{box-shadow:none;background:0 0;border:0;border-radius:0}.section-label{color:#9fb8af;text-transform:uppercase;letter-spacing:.12em;margin-bottom:10px;font-size:11px;font-weight:800}.status-strip{background:#00000024;border-radius:14px;align-items:stretch;gap:12px;margin-bottom:14px;padding:12px;display:flex;overflow:hidden}.players-status{flex:auto;min-width:0}.players-strip{scrollbar-width:thin;gap:8px;padding:2px 2px 5px;display:flex;overflow-x:auto}.player-card{width:auto;min-width:148px;color:inherit;text-align:left;cursor:pointer;background:#ffffff0b;border:1px solid #0000;border-radius:12px;flex:1 0 148px;margin:0;padding:12px}.player-card.current{background:#d7aa4b14;border-color:#d7aa4b99}.player-card:hover{background:#ffffff17;transform:translateY(-1px)}.player-name{font-weight:800}.bot-badge{color:#e5c878;text-transform:uppercase;letter-spacing:.08em;margin-top:3px;font-size:10px;display:block}.player-meta{color:var(--muted);margin-top:4px;font-size:12px}.bone-pile-status{border-left:1px solid #ffffff1a;flex:0 0 142px;padding:12px}.center-panel{min-width:0;padding:20px}.market-head,.tableau-head{justify-content:space-between;align-items:end;gap:12px;display:flex}h1,h2,p{margin:0}.market{background:#0000002b;border:1px dashed #ffffff1f;border-radius:16px;flex-wrap:wrap;place-content:flex-start center;gap:10px 12px;min-height:178px;margin-top:14px;padding:16px 18px 18px;display:flex}.market-head{flex:0 0 100%}.market-head .section-label{margin-bottom:0}.empty-market{text-align:center;color:#89a79e;width:100%}.domino{width:var(--domino-width,72px);flex:0 0 var(--domino-width,72px);aspect-ratio:.58;background:var(--domino-face-background);color:var(--ink);box-shadow:var(--domino-shadow);cursor:default;transition:transform var(--motion-domino-transition) var(--motion-standard), box-shadow var(--motion-domino-transition) var(--motion-standard);border:none;border-radius:10px;outline:none;padding:4px 6px;position:relative}button.domino:not(:disabled){cursor:pointer}button.domino:not(:disabled):hover{box-shadow:var(--domino-shadow);transform:translateY(-4px)}.domino.selected{outline:3px solid var(--selected);transform:translateY(-5px)}.domino.disabled{opacity:.45;cursor:default}.domino.eligible:not(.selected){outline-offset:2px;outline:2px solid #f0c85bb3}.domino-face{border-radius:7px;flex-direction:column;height:100%;display:flex;overflow:hidden}.half{flex:1;justify-content:center;align-items:center;display:flex;position:relative}.half+.half{border-top:4px solid #2c2c2c}.half.matching-suit{z-index:1;box-shadow:inset 0 0 0 3px var(--selected), 0 0 16px #f0c85bbf;background:#f0c85b4d;border-radius:6px}.pips{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);gap:2px;width:min(50px,100%);height:46px;display:grid}.pip{width:12px;height:12px;box-shadow:var(--pip-depth);background:#2b2924;border-radius:50%;place-self:center;position:relative;overflow:hidden}.pip:after{content:"";border-radius:inherit;pointer-events:none;position:absolute;inset:1px}.pip.off{visibility:hidden}.pips-1 .pip{background:var(--pip-1)}.pips-2 .pip{background:var(--pip-2)}.pips-3 .pip{background:var(--pip-3)}.pips-4 .pip{background:var(--pip-4)}.pips-5 .pip{background:var(--pip-5)}.pips-6 .pip{background:var(--pip-6)}.pips-7 .pip{background:var(--pip-7)}.pips-8 .pip{background:var(--pip-8)}.pips-9 .pip{background:var(--pip-9)}.pips-extended{grid-template-rows:repeat(4,1fr)}.pips-extended .pip{width:10px;height:10px}.pips-10 .pip{background:var(--pip-10)}.pips-11 .pip{background:var(--pip-11)}.pips-11 .pip-11-center{transform:translateY(-6px)}.pips-12 .pip{background:var(--pip-12)}.selection-tag{z-index:4;white-space:nowrap;background:var(--selected);color:#312711;text-transform:uppercase;border-radius:5px;padding:3px 6px;font-size:9px;font-weight:900;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)}.hand-area{background:#0000001f;border-radius:16px;margin-top:20px;padding:16px}.hand{min-height:var(--domino-row-height);flex-wrap:wrap;align-items:center;gap:12px;display:flex}.hand .domino{width:var(--domino-width,72px);flex-basis:var(--domino-width,72px)}.hand.bot-hand-visible .domino.disabled{opacity:1;cursor:default}.hand.bot-hand-visible button.domino:hover{transform:none}.hand .domino.domino-departing,.domino.domino-motion-hidden{visibility:hidden;pointer-events:none}.market.bot-turn .domino.disabled{opacity:1}.hidden-bot-hand{border:1px dashed #ffffff24;border-radius:12px;padding:10px}.domino-back{cursor:default;background:var(--domino-face-background);padding:6px}.action-bar{border-top:1px solid #ffffff1a;flex-wrap:wrap;align-items:center;gap:8px;margin-top:18px;padding:16px 0 0;display:flex}.action-bar.action-feedback{animation:action-feedback var(--motion-action-feedback) var(--motion-standard) both}.action-title{text-transform:uppercase;letter-spacing:.12em;color:#9fb8af;width:100%;font-size:11px;font-weight:800}button.action,button.primary,button.secondary{cursor:pointer;border:0;border-radius:9px;padding:10px 14px;font-weight:800}button.action{color:#fff;background:#ffffff17;border:1px solid #ffffff1a}button.action.active{background:var(--gold);color:#30260f}button.primary{color:#29261f;background:#eee5ce}button.secondary{color:#cbd8d3;background:0 0;border:1px solid #ffffff29}button:not(:disabled):active{transform:translateY(1px)scale(.98)}button:disabled{opacity:.4;cursor:default}.instruction{box-sizing:border-box;color:#e8d8a7;background:#d7aa4b14;border-radius:9px;flex:0 0 100%;align-items:center;min-height:42px;margin-top:12px;padding:10px 12px;font-size:13px;display:flex}.tableau{margin-top:18px}.houses{min-height:calc(var(--domino-row-height) + 55px);background:#0000001f;border-radius:16px;flex-wrap:wrap;align-items:flex-start;gap:10px 14px;margin-top:12px;padding:16px;display:flex}.houses .tableau-head{flex:0 0 100%}.houses .tableau-head .section-label{margin-bottom:0}.house-card{width:var(--domino-width);position:relative}.house-card:before{content:"";z-index:0;opacity:0;box-shadow:var(--domino-shadow);pointer-events:none;border-radius:10px;position:absolute;inset:0}.house-card.flipped-house-card:before{opacity:1}.house-card.flipped-house-card:has(.house-flipped):before{opacity:0}.house{z-index:1;overflow:visible}.house[role=button]:not(.disabled){cursor:pointer}.house .half{min-height:0}.house .domino-face{position:relative}.house.flipped{box-shadow:none;transform:rotate(180deg)}.house.flipped .pip{box-shadow:var(--pip-depth-flipped)}.house.flipped.house-flipped{box-shadow:var(--domino-shadow)}.house.house-purchased{animation:house-purchased var(--motion-house) var(--motion-spring) both}.house.house-flipped{animation:house-flipped var(--motion-house) var(--motion-spring) both}.house.house-sold{animation:house-sold var(--motion-domino-enter) var(--motion-standard) both}.house.flipped.house-sold{animation-name:house-sold-flipped}.sold-house{opacity:.52;filter:saturate(.55)}.sold-stamp{color:#7e5149;letter-spacing:.1em;border:2px solid #7e5149;border-radius:5px;padding:5px 9px;font-size:14px;font-weight:1000;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)rotate(-12deg)}.house.flipped .sold-stamp{transform:translate(-50%,-50%)rotate(-192deg)}.draw-action,.bot-skip{margin-left:auto}.final-score-panel{border-top:1px solid #ffffff17;margin-top:18px;padding-top:16px}.final-score-panel h2{margin-top:4px;font-size:22px}.final-winner{color:#f2d487;margin-top:6px;font-size:13px}.final-scores{gap:7px;margin:12px 0 14px;display:grid}.final-score-row{text-align:left;background:#ffffff0f;border-radius:8px;padding:8px 10px;font-size:13px}.final-score-row.winner{background:#d7aa4b33;box-shadow:inset 0 0 0 1px #d7aa4b6b}.final-score-row.winner strong{color:#f2d487}.app-dialog{color:#fff;background:linear-gradient(145deg, var(--dialog-surface-start), var(--dialog-surface-end));border:1px solid #ffffff2e;border-radius:18px;padding:0;box-shadow:0 30px 80px #00000073}.app-dialog::backdrop{background:var(--modal-backdrop);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.player-houses-dialog{width:min(620px,100% - 32px)}.player-houses-content{padding:24px}.player-houses-content h2{margin:0;font-size:24px}.dialog-hint{color:var(--muted);margin-top:6px;font-size:12px}.player-houses-grid{min-height:calc(var(--domino-row-height) + 32px);background:var(--surface-inset);border-radius:14px;flex-wrap:wrap;gap:14px;margin-top:18px;padding:16px;display:flex}.rules-dialog{width:min(680px,100% - 32px);max-height:min(760px,100vh - 32px)}.rules-content{max-height:min(760px,100vh - 32px);padding:26px;overflow:auto}.rules-content h2{margin:0 0 8px}.rules-content p,.rules-content li{color:#c6d3ce;font-size:13px;line-height:1.5}.rules-content ul,.rules-content ol{padding-left:22px}.rules-content li+li{margin-top:7px}.tutorial{margin-top:18px}.tutorial-progress{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;justify-content:center;align-items:center;gap:16px;font-size:11px;font-weight:800;display:flex}.tutorial-dots{gap:5px;width:100%;max-width:280px;display:flex}.tutorial-dots i{background:#ffffff1f;border-radius:5px;flex:1;height:5px}.tutorial-dots i.complete{background:#d7aa4b7a}.tutorial-dots i.current{background:var(--gold)}.tutorial-card{background:var(--surface-inset);border-radius:14px;grid-template-columns:minmax(0,.9fr) minmax(300px,1.1fr);align-items:center;gap:24px;min-height:360px;margin-top:12px;padding:20px;display:grid}.tutorial-card h3{margin:0 0 9px;font-size:22px}.tutorial-card .section-label{color:#e5c878;margin-bottom:7px}.tutorial-card p{font-size:14px}.tutorial-domino-sequence{justify-content:center;align-items:center;gap:14px;min-height:180px;display:flex}.tutorial-piece{--domino-width:68px;min-width:76px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;justify-items:center;gap:12px;font-size:10px;font-weight:800;display:grid}.tutorial-piece .domino.disabled{opacity:1}.tutorial-piece button.domino:hover{transform:none}.tutorial-symbol{color:#e8d8a7;text-transform:uppercase;letter-spacing:.08em;font-size:10px;font-weight:900}.tutorial-action-row{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.tutorial-action{background:#ffffff14;border:1px solid #ffffff24;border-radius:9px;padding:10px 12px;font-size:12px;font-weight:800}.tutorial-draw{color:#29261f;background:#eee5ce}.tutorial-swap-symbol{color:var(--gold);font-size:24px}.tutorial-scoring{justify-items:center;gap:12px;display:grid}.tutorial-scoring .tutorial-domino-sequence{min-height:150px}.tutorial-scoring strong{color:#f2d487;background:#d7aa4b29;border-radius:8px;padding:8px 13px;font-size:14px}.tutorial-controls{grid-template-columns:1fr 1.4fr;gap:8px;margin-top:14px;display:grid}.tutorial-controls button{min-height:43px}.dialog-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.dialog-heading button{flex:none;width:auto}.rules-dialog-actions{justify-content:space-between;align-items:center;gap:8px;margin-top:20px;display:flex}.rules-dialog-actions button{flex:none;width:auto}.game-log-dialog{width:min(620px,100% - 32px);max-height:min(760px,100vh - 32px)}.game-log-content{padding:24px}.game-log-list{color:#d7e1dd;max-height:min(560px,100vh - 180px);margin:18px 0 0;padding:0;list-style:none;overflow-y:auto}.game-log-list li{border-radius:7px;padding:7px 10px;font-size:13px;line-height:1.4}.game-log-list li:nth-child(odd){background:#ffffff0d}.game-log-empty{text-align:center;color:var(--muted);background:var(--surface-inset);border-radius:10px;margin-top:18px;padding:24px}.floating-game-buttons{z-index:40;gap:8px;display:flex;position:fixed;bottom:22px;right:22px}.floating-game-buttons button{width:auto;box-shadow:0 8px 24px #00000052}.final-results-dialog{width:min(920px,100% - 32px);max-height:calc(100vh - 32px);overflow:hidden}.final-results-content{max-height:calc(100vh - 32px);padding:26px;overflow-y:auto}.final-board-section,.final-board-player{background:var(--surface-inset);border-radius:14px;margin-top:18px;padding:16px}.final-board-section h3,.final-board-player h3,.final-board-player h4{margin:0 0 12px}.final-board-player h4{color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-top:16px;font-size:11px}.final-board-dominoes{flex-wrap:wrap;align-items:flex-start;gap:12px;min-height:40px;display:flex}.final-board-dominoes .domino.disabled{opacity:1}.final-board-dominoes button.domino:hover{transform:none}.final-board-empty{color:var(--muted);font-size:13px}.setup-dialog{width:min(500px,100% - 32px)}.setup-content{padding:28px}.setup-content h2{margin:0 0 8px}.setup-content p{color:#c6d3ce;font-size:13px;line-height:1.5}.player-count{color:#d9e5e0;gap:7px;margin:20px 0;font-size:13px;font-weight:800;display:grid}.player-setups{gap:8px;margin:-6px 0 20px;display:grid}.player-setup{background:var(--surface-inset);border-radius:9px;grid-template-columns:minmax(68px,1fr) minmax(118px,1.25fr) minmax(174px,2fr);align-items:center;gap:8px;padding:9px 10px;font-size:13px;font-weight:700;display:grid}.segmented-toggle{background:#0003;border:1px solid #ffffff29;border-radius:8px;min-width:0;margin:0;padding:2px;display:grid}.player-count-toggle,.difficulty-toggle{grid-template-columns:repeat(3,1fr)}.controller-toggle{grid-template-columns:repeat(2,1fr)}.toggle-option{cursor:pointer;min-width:0}.toggle-option input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.toggle-option span{min-height:29px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;transition:background-color var(--motion-control-transition) var(--motion-standard), color var(--motion-control-transition) var(--motion-standard);border-radius:6px;place-items:center;padding:6px 4px;font-size:10px;display:grid}.toggle-option input:checked+span{background:var(--gold);color:#30260f}.toggle-option input:focus-visible+span{outline-offset:1px;outline:2px solid #fff}.player-count-toggle .toggle-option span{font-size:12px}.difficulty-placeholder{color:var(--muted);font-size:11px;font-weight:500}.setup-actions{grid-template-columns:1fr 1.35fr;gap:8px;display:grid}.setup-actions button{min-height:44px}.setup-submit{width:100%}#overlay{z-index:50;background:var(--privacy-backdrop);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-content:center;align-items:center;padding:24px;display:none;position:fixed;inset:0}#overlay.show{display:flex}.overlay-card{text-align:center;background:linear-gradient(145deg, var(--dialog-surface-start), var(--dialog-surface-end));border:1px solid #ffffff26;border-radius:22px;width:min(560px,100%);padding:40px;box-shadow:0 30px 80px #00000073}.overlay-kicker{color:#d9bb67;text-transform:uppercase;letter-spacing:.18em;font-size:12px;font-weight:900}.overlay-card h2{letter-spacing:-.05em;margin:10px 0;font-size:clamp(34px,7vw,56px)}.overlay-card p{color:#b9ccc5;margin-bottom:24px;line-height:1.5}.overlay-card{animation:overlay-in var(--motion-overlay-enter) var(--motion-standard) both}.hidden{display:none!important}@keyframes action-feedback{0%,to{box-shadow:0 0 #d7aa4b00}45%{box-shadow:0 0 0 4px #d7aa4b2e}}@keyframes house-purchased{0%{opacity:0;transform:translateY(16px)scale(.86)}70%{transform:translateY(-5px)scale(1.03)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes house-flipped{0%{transform:rotate(0)}to{transform:rotate(180deg)}}@keyframes house-sold{0%{transform:scale(1)}55%{transform:scale(1.08)rotate(-2deg)}to{transform:scale(1)}}@keyframes house-sold-flipped{0%{transform:rotate(180deg)scale(1)}55%{transform:rotate(178deg)scale(1.08)}to{transform:rotate(180deg)scale(1)}}@keyframes domino-enter{0%{opacity:0;transform:translateY(-12px)rotate(-4deg)scale(.88)}70%{transform:translateY(3px)rotate(1deg)scale(1.03)}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}@keyframes domino-nudge{0%{opacity:.3;transform:scale(.86)rotate(-4deg)}55%{opacity:1;transform:scale(1.06)rotate(2deg)}to{transform:scale(1)rotate(0)}}@keyframes market-domino-enter{0%{opacity:0;transform:translateY(-8px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes hand-slide{0%{transform:translate(var(--hand-slide-x), var(--hand-slide-y))}to{transform:translate(0)}}@keyframes overlay-in{0%{opacity:0;transform:translateY(12px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.domino.domino-enter{animation:domino-enter var(--motion-domino-enter) var(--motion-spring) both}.domino.domino-swapped{animation:var(--motion-domino-nudge)}.domino.market-domino-enter{animation:market-domino-enter var(--motion-market-enter) var(--motion-out) both}.hand .domino.hand-slide{animation:hand-slide var(--motion-hand-slide) var(--motion-spring) both}.floating-domino{z-index:100;pointer-events:none;transform-origin:50%;transition:transform var(--motion-floating-transform) var(--motion-spring), opacity var(--motion-floating-opacity) var(--motion-standard);margin:0;position:fixed;visibility:visible!important;animation:none!important}.floating-domino.floating-domino-pickup{animation:var(--motion-domino-nudge)!important}.floating-domino .selection-tag{display:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=760px){.topbar{flex-wrap:wrap;align-items:flex-start;gap:10px;padding:12px 14px}.topbar-actions{order:3;grid-template-columns:1fr 1fr;width:100%;display:grid}.topbar-actions .theme-picker{grid-column:1/-1}main{padding:10px;display:block}.status-strip{gap:8px;padding:10px}.player-card{flex-basis:132px;min-width:132px}.bone-pile-status{flex-basis:124px}.center-panel{--domino-width:60px;--domino-row-height:104px}.market{gap:8px;padding:12px}.market-head,.tableau-head{flex-wrap:wrap;align-items:flex-start}.center-panel{padding:12px}.draw-action{margin-left:0}.action-bar>button{flex:calc(50% - 8px);min-height:44px}.action-bar .action-title,.action-bar .instruction,.action-bar .draw-action{flex-basis:100%}.hand-area,.houses{padding:12px}.player-houses-content{padding:20px}.hand{gap:8px}.hand .domino{width:var(--domino-width);flex-basis:var(--domino-width)}.setup-content,.rules-content{padding:20px}.rules-intro{flex-direction:column;align-items:stretch}.tutorial-card{grid-template-columns:1fr;gap:16px;min-height:390px;padding:16px}.tutorial-domino-sequence{gap:8px;min-height:160px}.tutorial-piece{--domino-width:58px;gap:9px;min-width:62px}.tutorial-symbol{font-size:8px}.game-log-content{padding:20px}.floating-game-buttons{bottom:12px;right:12px}.final-results-content{padding:20px}.player-setup{grid-template-columns:minmax(96px,1fr) minmax(138px,1.4fr);padding-inline:8px}.player-setup>span:first-child{grid-column:1/-1}.toggle-option span{padding-inline:2px;font-size:9px}}
