:root{color-scheme:dark;--bg: #14100c;--panel: rgba(24, 19, 14, .86);--panel-border: rgba(210, 180, 140, .22);--ink: #f2e9da;--ink-dim: #b8ab96;--accent: #d1a054;--danger: #d1495b;--radius: 10px;--focus: #6fc2ff;font-family:Iowan Old Style,Palatino Linotype,Georgia,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;width:100%;height:100%;background:var(--bg);color:var(--ink);overflow:hidden;overscroll-behavior:none}#app{position:relative;width:100vw;height:100dvh}#scene{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block}button{font:inherit;color:inherit;background:#ffffff0f;border:1px solid var(--panel-border);border-radius:6px;padding:.4em .8em;cursor:pointer}button:hover:not(:disabled){background:#ffffff24}button:disabled{opacity:.4;cursor:default}.hidden{display:none!important}button.ghost{background:transparent;border-color:transparent;color:var(--ink-dim)}button.ghost:hover:not(:disabled){background:#ffffff14;color:var(--ink)}button.primary{background:var(--accent);color:#241a0c;font-weight:700;border-color:transparent}button.primary:hover:not(:disabled){filter:brightness(1.08)}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}a{color:var(--accent)}#hud{position:absolute;inset:0;pointer-events:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,320px);grid-template-rows:auto auto auto minmax(0,1fr);grid-template-areas:"topbar topbar" ".      seats" ".      minimap" "tile   log";gap:10px;padding:10px}#hud>*{pointer-events:auto}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);backdrop-filter:blur(6px);box-shadow:0 4px 18px #00000059}.hud-topbar{grid-area:topbar;display:flex;align-items:center;gap:12px;padding:8px 14px;flex-wrap:wrap}.turn-indicator{display:flex;align-items:center;gap:8px;font-weight:700;font-size:1.05rem;padding:4px 10px;border-radius:8px}.turn-indicator.mine{background:#d1a05438;box-shadow:0 0 0 2px var(--accent) inset}.seat-dot{width:14px;height:14px;border-radius:50%;border:2px solid rgba(0,0,0,.4);flex:none}.hud-topbar .spacer{flex:1}.room-code{display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums;letter-spacing:.12em}.room-code code{background:#00000059;padding:2px 8px;border-radius:5px;font-size:1rem}.hud-seats{grid-area:seats;padding:10px 12px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;min-height:0;max-height:34vh}.seat-row{display:grid;grid-template-columns:14px 1fr auto;align-items:center;gap:8px;padding:4px 6px;border-radius:6px}.seat-row.active{background:#ffffff14}.seat-row .seat-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-row .seat-meta{font-size:.78rem;color:var(--ink-dim);grid-column:2 / 4}.seat-row .seat-score{font-variant-numeric:tabular-nums;font-weight:700}.hud-tile-panel{grid-area:tile;padding:10px 12px;display:flex;align-items:center;gap:10px;align-self:end}.hud-tile-panel canvas{width:64px;height:64px;border-radius:6px;border:1px solid var(--panel-border)}.hud-tile-info{display:flex;flex-direction:column;gap:2px;font-size:.85rem;color:var(--ink-dim)}.hud-tile-info .stacks-left{font-weight:700;color:var(--ink)}.hud-instruction{font-size:.86rem;font-weight:600;color:var(--ink)}.hud-instruction:empty{display:none}.hud-actions-row{display:flex;gap:6px;flex-wrap:wrap}.hud-actions-row:empty{display:none}.rotate-btn{display:inline-flex;align-items:center;gap:6px;font-weight:700}.rotate-btn kbd{font:inherit;font-size:.72em;background:#00000059;border:1px solid var(--panel-border);border-radius:4px;padding:1px 5px}.help-btn{white-space:nowrap;font-weight:600}.hud-log{grid-area:log;padding:8px 10px;overflow-y:auto;overflow-x:hidden;font-size:.78rem;color:var(--ink-dim);min-height:0;display:flex;flex-direction:column-reverse}.hud-log ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.hud-log li{border-left:2px solid transparent;padding-left:6px;overflow-wrap:break-word;word-break:break-word}.hud-log li.mine{border-left-color:var(--accent);color:var(--ink)}.hud-minimap{grid-area:minimap;justify-self:end;align-self:start;width:140px;height:140px;border-radius:8px;overflow:hidden;cursor:pointer;pointer-events:auto}.hud-minimap canvas{width:100%;height:100%;display:block}.hud-corner-controls{position:absolute;left:14px;bottom:14px;display:flex;flex-direction:column;gap:6px;pointer-events:auto}.hud-meeple-prompt{position:absolute;left:50%;bottom:100px;transform:translate(-50%);padding:10px 16px;display:flex;align-items:center;gap:10px;pointer-events:auto}.hud-meeple-prompt.hidden{display:none}#lobby{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 30%,#241b12,#0d0a07);padding:16px}#lobby.hidden{display:none}.lobby-panel{width:min(480px,100%);max-height:92vh;overflow-y:auto;padding:26px 28px;display:flex;flex-direction:column;gap:16px}.lobby-panel h1{margin:0;font-size:1.6rem}.lobby-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.lobby-panel p.subtitle{margin:-8px 0 0;color:var(--ink-dim);font-size:.9rem}.lobby-field{display:flex;flex-direction:column;gap:6px}.lobby-field label{font-size:.82rem;color:var(--ink-dim)}.seat-config-list{display:flex;flex-direction:column;gap:6px}.seat-config-row{display:grid;grid-template-columns:20px 1fr auto;gap:8px;align-items:center}.seat-config-row input[type=text]{background:#0000004d;border:1px solid var(--panel-border);border-radius:6px;color:var(--ink);padding:6px 8px;font:inherit;min-width:0}.stepper{display:inline-flex;align-items:center;gap:8px}.stepper output{min-width:1.4em;text-align:center;font-weight:700;font-variant-numeric:tabular-nums}.lobby-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:6px}.lobby-actions .primary{background:var(--accent);color:#241a0c;font-weight:700;border-color:transparent}.lobby-actions .primary:hover{filter:brightness(1.08)}.game-over-panel h1{font-size:1.8rem}.game-over-scores{display:flex;flex-direction:column;gap:6px}.game-over-scores .row{display:grid;grid-template-columns:14px 1fr auto;gap:8px;align-items:center;padding:6px 8px;border-radius:6px}.game-over-scores .row.winner{background:#d1a05438;box-shadow:0 0 0 2px var(--accent) inset;font-weight:700}#toasts{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;z-index:50;pointer-events:none;width:min(420px,calc(100vw - 28px))}.toast{padding:10px 14px;border-radius:8px;font-size:.88rem;animation:toast-in .18s ease-out;pointer-events:auto}.toast.error{background:#411418f0;border:1px solid var(--danger)}.toast.info{background:#142841f0;border:1px solid var(--focus)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.meeple-picker-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.meeple-leader-line{stroke-width:2;stroke-linecap:round;opacity:.65}.meeple-chip{--chip-colour: var(--accent);display:inline-flex;align-items:center;gap:6px;background:#14100aeb;border:2px solid var(--chip-colour);color:var(--ink);border-radius:999px;padding:6px 12px 6px 8px;font-size:.76rem;font-weight:600;white-space:nowrap;box-shadow:0 3px 10px #00000080;cursor:pointer}.meeple-chip:hover{background:#d1a05447}.meeple-chip-dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--chip-colour);box-shadow:0 0 0 1px #00000073}.meeple-chip--emphasis{background:#d1a05447;box-shadow:0 0 0 3px var(--chip-colour),0 4px 14px #0000008c}.meeple-chip--taken{background:#14100ab8;border-style:dashed;color:#f0e8d89e;font-weight:500;cursor:not-allowed;box-shadow:0 2px 6px #0006}.meeple-chip--taken:hover,.meeple-chip--taken.meeple-chip--emphasis{background:#14100ae0;color:#f0e8d8eb;box-shadow:0 0 0 2px var(--chip-colour),0 3px 10px #00000080}.meeple-chip--taken .meeple-chip-dot{background:transparent;border:2px solid var(--chip-colour);box-shadow:none}.pass-device-overlay{position:absolute;inset:0;background:#080604eb;display:flex;align-items:center;justify-content:center;z-index:40;cursor:pointer;pointer-events:auto;text-align:center;flex-direction:column;gap:14px}.pass-device-overlay.hidden{display:none}.pass-device-overlay .big{font-size:1.5rem;font-weight:700}.pass-device-overlay .hint{color:var(--ink-dim);font-size:.9rem}@media(max-width:640px){#hud{grid-template-columns:1fr;grid-template-rows:auto auto auto auto minmax(0,1fr);grid-template-areas:"topbar" "seats" "tile" "minimap" "log"}.hud-seats{grid-area:seats;flex-direction:row;overflow-x:auto;overflow-y:hidden;max-height:none}.seat-row{flex:none;min-width:130px;grid-template-columns:12px auto}.seat-row .seat-score{grid-column:2}.seat-row .seat-meta{grid-column:1 / 3}.hud-tile-panel{align-self:auto}.hud-log{min-height:80px}.hud-minimap{justify-self:center;align-self:center;width:92px;height:92px}.hud-corner-controls{left:8px;bottom:8px}}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.play-online-btn{margin-top:.75rem;width:100%;padding:.7rem 1rem;font:inherit;font-weight:600;color:var(--ink, #e8ded4);background:transparent;border:1px solid rgba(232,222,212,.28);border-radius:10px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.play-online-btn:hover{background:#e8ded414;border-color:#e8ded480}.online-lobby{position:fixed;inset:0;display:grid;place-items:center;padding:1.25rem;background:#0e0b09db;backdrop-filter:blur(6px);z-index:40;overflow-y:auto}.online-lobby.hidden{display:none}.ol-card{width:min(30rem,100%);padding:1.5rem;border-radius:16px;background:#221c18;border:1px solid rgba(232,222,212,.14);box-shadow:0 24px 60px #00000080}.ol-body{display:flex;flex-direction:column;gap:.85rem}.ol-body h2{margin:0;font-size:1.35rem}.ol-head{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.ol-code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.5rem;letter-spacing:.22em;padding:.2rem .6rem;border-radius:8px;background:#edae4929;color:#edae49}.ol-hint{margin:0;font-size:.85rem;opacity:.75;line-height:1.45}.ol-field{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;opacity:.85;flex:1}.ol-input{padding:.6rem .7rem;font:inherit;color:inherit;background:#00000047;border:1px solid rgba(232,222,212,.2);border-radius:8px}.ol-input.code{font-family:ui-monospace,monospace;letter-spacing:.3em;text-transform:uppercase}.ol-input:focus-visible{outline:2px solid #edae49;outline-offset:1px}.ol-row{display:flex;gap:.6rem;align-items:flex-end}.ol-sep{text-align:center;font-size:.75rem;opacity:.5;text-transform:uppercase;letter-spacing:.12em}.ol-btn{padding:.6rem .9rem;font:inherit;font-weight:600;color:inherit;background:#e8ded41a;border:1px solid rgba(232,222,212,.22);border-radius:8px;cursor:pointer;white-space:nowrap}.ol-btn:hover:not(:disabled){background:#e8ded42e}.ol-btn:disabled{opacity:.4;cursor:not-allowed}.ol-btn.primary{background:#edae49;border-color:#edae49;color:#241a09}.ol-btn.primary:hover:not(:disabled){background:#f2bd66}.ol-btn.ghost{background:transparent}.ol-btn.tiny{padding:.3rem .55rem;font-size:.78rem}.ol-btn:focus-visible{outline:2px solid #edae49;outline-offset:2px}.ol-seats{display:flex;flex-direction:column;gap:.4rem}.ol-seat{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:10px;background:#00000038;border:1px solid transparent}.ol-seat.mine{border-color:#edae498c;background:#edae4914}.ol-swatch{width:.85rem;height:.85rem;border-radius:50%;flex:none}.ol-seat-name{flex:1;font-size:.9rem}.ol-seat-actions{display:flex;gap:.35rem}.ol-status{margin-top:.9rem;font-size:.85rem;opacity:.8;min-height:1.2em}.ol-status.error{color:#ff9b9b;opacity:1}@media(max-width:30rem){.ol-row{flex-direction:column;align-items:stretch}.ol-card{padding:1.1rem}}.help-overlay{position:fixed;inset:0;z-index:60;display:grid;place-items:center;padding:1rem;background:#0a0806db;backdrop-filter:blur(6px)}.help-overlay.hidden{display:none}.help-panel{width:min(640px,100%);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.help-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 20px;border-bottom:1px solid var(--panel-border);flex:none}.help-header h2{margin:0;font-size:1.3rem}.help-close{font-size:1rem;line-height:1;padding:6px 11px}.help-body{overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:18px}.help-section h3{margin:0 0 8px;font-size:1rem;color:var(--accent)}.help-section p{margin:6px 0;line-height:1.5;color:var(--ink-dim)}.help-section ol{margin:6px 0;padding-left:1.3em;line-height:1.6}.help-section li{margin-bottom:4px}.help-table-wrap{overflow-x:auto}.help-table{width:100%;border-collapse:collapse;font-size:.84rem;margin-top:8px}.help-table th,.help-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--panel-border);vertical-align:top}.help-table th{color:var(--ink-dim);font-weight:600;font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.help-footer{padding:12px 20px;border-top:1px solid var(--panel-border);flex:none;display:flex;justify-content:flex-end}@media(max-width:480px){.help-body{padding:12px 14px}.help-table{font-size:.76rem}.help-table th,.help-table td{padding:5px 6px}}.tutorial-layer{position:fixed;inset:0;z-index:55;pointer-events:none}.coach-mark{position:absolute;width:min(280px,calc(100vw - 24px));background:var(--panel);border:1px solid var(--accent);border-radius:var(--radius);backdrop-filter:blur(6px);box-shadow:0 8px 24px #00000080;padding:12px 14px;pointer-events:auto;animation:coach-in .18s ease-out}.coach-mark-counter{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim);margin-bottom:4px}.coach-mark p{margin:0 0 10px;font-size:.88rem;line-height:1.4}.coach-mark-actions{display:flex;justify-content:space-between;align-items:center;gap:8px}@keyframes coach-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.seat-tray{display:inline-flex;align-items:center;gap:5px;margin-left:auto}.tray-group{display:inline-flex;align-items:center;gap:2px}.tray-pip{width:7px;height:9px;border-radius:3px 3px 2px 2px;background:var(--pip-colour, currentColor);box-shadow:0 0 0 1px #00000073}.tray-pip.spent{background:transparent;box-shadow:inset 0 0 0 1px #f0e8d852}.tray-big .tray-pip{width:10px;height:12px}.tray-pig .tray-pip{border-radius:50%}.tray-abbot .tray-pip{border-radius:3px 3px 0 0}.tray-wagon .tray-pip{border-radius:2px;width:10px;height:7px}@media(max-width:520px){.tray-pip{width:5px;height:7px}}.seat-swatch{width:20px;height:20px;padding:0;border-radius:50%;border:2px solid rgba(0,0,0,.45);flex:none;cursor:pointer;box-shadow:0 1px 3px #0006}.seat-swatch:hover{transform:scale(1.12);border-color:var(--ink)}
