:root{--color-bg:#10151c;--color-bg-deep:#0a0e13;--color-felt:#15402f;--color-felt-deep:#0f2f22;--color-surface:#18222e;--color-surface-raised:#1f2b39;--color-surface-hover:#273548;--color-border:#2c3a4b;--color-border-strong:#3d5168;--color-text:#dce6f0;--color-text-muted:#8ca0b5;--color-text-faint:#63768a;--color-accent:#f0a53a;--color-accent-strong:#ffbe5c;--color-accent-text:#1a1206;--color-good:#5ec98f;--color-bad:#e8695f;--color-card-back:#2f4f78;--color-die-face:#f4f1e8;--color-die-pip:#1d242c;--font-family:system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-size-small:11px;--font-size-base:13px;--font-size-large:15px;--radius:6px;--radius-small:4px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--card-width:76px;--card-height:106px;--card-reveal-face-up:.3;--card-reveal-face-down:.15;--shadow:0 8px 24px #00000073}*{box-sizing:border-box}html,body{background:var(--color-bg);min-height:100%;color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-base);-webkit-font-smoothing:antialiased;margin:0;line-height:1.45}#root{min-height:100vh}button{font:inherit;color:inherit}h1,h2{margin:0;font-weight:600}.button{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-small);background:var(--color-surface-raised);color:var(--color-text);cursor:pointer;white-space:nowrap}.button:hover:not(:disabled){background:var(--color-surface-hover)}.button:disabled{opacity:.4;cursor:default}.button--accent{background:var(--color-accent);border-color:var(--color-accent-strong);color:var(--color-accent-text);font-weight:600}.button--accent:hover:not(:disabled){background:var(--color-accent-strong)}.button--quiet{border-color:var(--color-border);color:var(--color-text-muted);background:0 0}.segmented{border:1px solid var(--color-border-strong);border-radius:var(--radius-small);display:inline-flex;overflow:hidden}.segmented__option{padding:var(--space-2) var(--space-3);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;white-space:nowrap;border:0}.segmented__option:hover{background:var(--color-surface-hover)}.segmented__option--active{background:var(--color-accent);color:var(--color-accent-text);font-weight:600}.games-app{min-height:100vh}.games-app--loading{color:var(--color-text-muted);place-items:center;display:grid}.sign-in{place-content:center;justify-items:center;gap:var(--space-3);text-align:center;min-height:100vh;display:grid}.sign-in__title{letter-spacing:.04em;font-size:32px}.sign-in__message{color:var(--color-text-muted);margin:0}.sign-in__error{color:var(--color-bad);margin:0}.home{max-width:1080px;padding:var(--space-5) var(--space-4);margin:0 auto}.home__header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.home__header h1{letter-spacing:.02em;font-size:28px}.home__subtitle{margin:var(--space-1) 0 0;color:var(--color-text-muted);max-width:60ch}.home__grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.game-card{padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);text-align:left;cursor:pointer;display:block}.game-card:hover{background:var(--color-surface-raised);border-color:var(--color-border-strong)}.game-card__name{font-size:var(--font-size-large);margin-bottom:var(--space-2)}.game-card__tagline{margin:0 0 var(--space-3);color:var(--color-text-muted)}.game-card__origin{color:var(--color-text-faint);font-size:var(--font-size-small);margin:0}.frame{flex-direction:column;min-height:100vh;display:flex}.frame__bar{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-surface);flex-wrap:wrap;display:flex}.frame__title h1{font-size:var(--font-size-large)}.frame__status{color:var(--color-text-muted);font-size:var(--font-size-small);margin:0}.frame__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.frame__banner{padding:var(--space-2) var(--space-4);background:var(--color-accent);color:var(--color-accent-text);text-align:center;font-weight:600}.frame__body{padding:var(--space-4);background:linear-gradient(var(--color-felt), var(--color-felt-deep));flex:1;overflow:auto}.card{width:var(--card-width);height:var(--card-height);cursor:pointer;background:0 0;border:0;border-radius:5%;place-items:center;padding:0;display:grid;position:relative;overflow:hidden;box-shadow:0 1px 2px #00000059}.card:disabled{cursor:default}.card:not(:disabled):hover:not(.card--selected){filter:brightness(1.05)}.card__art{width:100%;height:100%;display:block}.card--empty{box-shadow:none;color:#ffffff52;background:#ffffff0b;border:1px dashed #ffffff3d}.card--empty:not(:disabled):hover{background:#ffffff17;border-color:#fff6}.card--face-down{background:var(--color-card-back);border:1px solid #00000047;padding:4%}.card__back{background-image:repeating-linear-gradient(45deg,#ffffff29 0 1px,#0000 1px 6px),repeating-linear-gradient(-45deg,#ffffff29 0 1px,#0000 1px 6px);border:1px solid #ffffff4d;border-radius:3%;width:100%;height:100%;display:block}.card--selected{z-index:2;outline:2px solid var(--color-accent-strong);outline-offset:1px;transform:translateY(-5px);box-shadow:0 6px 16px #00000080}.card--highlighted:not(.card--selected){outline:1px solid #f0a53a8c}.card__placeholder{font-size:calc(var(--card-width) / 5)}.pile{justify-items:center;gap:var(--space-1);display:grid}.pile__label{color:#ffffff8c;font-size:var(--font-size-small)}.column{min-height:var(--card-height);flex-direction:column;display:flex}.column__slot{position:relative}.column__slot--covering-face-up .card,.column__slot--covering-face-down .card{box-shadow:0 -1px 3px #00000047,0 1px 2px #00000059}.column__slot--covering-face-up{margin-top:calc(var(--card-height) * (var(--card-reveal-face-up) - 1))}.column__slot--covering-face-down{margin-top:calc(var(--card-height) * (var(--card-reveal-face-down) - 1))}.klondike,.freecell{gap:var(--space-5);justify-content:center;display:grid}.klondike__top,.freecell__top{gap:var(--space-2);align-items:flex-start;display:flex}.klondike__spacer,.freecell__spacer{width:var(--card-width)}.klondike__tableau,.freecell__tableau,.spider{gap:var(--space-2);justify-content:center;align-items:flex-start;display:flex}.spider{--card-reveal-face-up:.26}.pyramid{gap:var(--space-5);justify-items:center;display:grid}.pyramid__rows{justify-items:center;display:grid}.pyramid__row{gap:var(--space-1);justify-content:center;display:flex}.pyramid__row:not(:first-child){margin-top:calc(var(--card-height) * -.48)}.pyramid__stock{gap:var(--space-4);display:flex}.landlord{gap:var(--space-4);flex-wrap:wrap;justify-content:center;align-items:flex-start;display:flex}.board{aspect-ratio:1;border:1px solid var(--color-border-strong);border-radius:var(--radius);background:var(--color-bg-deep);gap:2px;width:min(74vh,100%);padding:2px;display:grid}.board__space{background:var(--color-surface);border-radius:2px;flex-direction:column;min-width:0;display:flex;position:relative;overflow:hidden}.board__space[data-kind=MotherEarth],.board__space[data-kind=PublicPark],.board__space[data-kind=Jail],.board__space[data-kind=GoToJail]{background:var(--color-surface-raised)}.board__space[data-kind=Railroad],.board__space[data-kind=Franchise]{background:#1c2a3a}.board__space[data-kind=AbsoluteNecessity]{background:#2a2320}.board__space[data-kind=Luxury],.board__space[data-kind=Legacy]{background:#1f2a24}.board__space--buildable{outline:1px solid var(--color-accent)}.board__owner{width:100%;height:4px;display:block}.board__hit{text-align:left;cursor:default;background:0 0;border:0;flex-direction:column;flex:1;gap:1px;padding:2px;display:flex;overflow:hidden}.board__hit:not(:disabled){cursor:pointer}.board__hit:not(:disabled):hover{background:var(--color-surface-hover)}.board__name{color:var(--color-text);font-size:9px;line-height:1.15}.board__price{color:var(--color-text-faint);font-size:9px}.board__buildings{color:var(--color-good);letter-spacing:1px;font-size:8px}.board__tokens{gap:2px;padding:0 2px 2px;display:flex}.board__token{border:1px solid #00000080;border-radius:50%;width:8px;height:8px}.board__centre{align-content:center;justify-items:center;gap:var(--space-2);padding:var(--space-4);text-align:center;background:linear-gradient(var(--color-felt), var(--color-felt-deep));border-radius:var(--radius);display:grid}.board__centre h2{letter-spacing:.04em;font-size:20px}.board__rule-set,.board__treasury,.board__motto{color:#ffffffb3;margin:0}.board__motto{color:#ffffff73;font-style:italic;font-size:var(--font-size-small);max-width:24ch}.board__dice{gap:var(--space-2);margin:0;display:flex}.board__die{border-radius:var(--radius-small);background:var(--color-die-face);width:28px;height:28px;color:var(--color-die-pip);place-items:center;font-weight:700;display:grid}.landlord__side{gap:var(--space-3);flex:0 0 300px;width:300px;display:grid}.players{gap:var(--space-2);display:grid}.player{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-surface)}.player--active{border-color:var(--color-accent)}.player--bankrupt{opacity:.5}.player--winner{border-color:var(--color-good)}.player__head{align-items:center;gap:var(--space-2);display:flex}.player__swatch,.log__swatch{border-radius:2px;flex:none;width:10px;height:10px}.player__name{font-weight:600}.player__cash{color:var(--color-accent);margin-left:auto}.player__detail{gap:0 var(--space-3);color:var(--color-text-faint);font-size:var(--font-size-small);flex-wrap:wrap;display:flex}.player__flag{color:var(--color-bad)}.landlord__actions{gap:var(--space-2);padding:var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-small);background:var(--color-surface-raised);display:grid}.landlord__prompt{color:var(--color-text-muted);margin:0}.landlord__choices{gap:var(--space-2);display:flex}.log{gap:var(--space-1);max-height:260px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-small);background:var(--color-surface);display:grid;overflow:auto}.log__entry{align-items:baseline;gap:var(--space-2);color:var(--color-text-muted);font-size:var(--font-size-small);margin:0;display:flex}.landlord__rules{color:var(--color-text-faint);font-size:var(--font-size-small);margin:0}@media (width<=900px){.landlord__side{flex:100%;width:100%}.board{width:100%}}
