:root{font-family:var(--font-text);-webkit-text-size-adjust:100%;font-weight:500}*,:before,:after{box-sizing:border-box}html,body{background:radial-gradient(ellipse at 50% 40%, var(--felt-light), var(--felt) 70%) fixed var(--felt);height:100%;color:var(--on-felt);font-family:var(--font-text);-webkit-text-size-adjust:100%;margin:0}#app{min-height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.boot-message{line-break:strict;width:calc(100% - 2rem);max-width:32rem;word-break:auto-phrase;border-radius:var(--radius);background:var(--paper);color:var(--text);box-shadow:var(--sh-3);margin:15vh auto 0;padding:1.5rem;line-height:1.7}.boot-message h1{margin:0 0 .75rem;font-size:1.25rem}.boot-message p{color:var(--color-muted);margin:0}#app:has(>.gallery){height:100dvh}.gallery{color:var(--text);grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr) minmax(12rem,18rem);height:100%;display:grid}.gallery-header{background:var(--color-surface);flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:.5rem 1rem;padding:.5rem 1rem;display:flex}.gallery-title{margin:0;font-size:1.1rem}.gallery-tabs,.gallery-tools{flex-wrap:wrap;gap:.5rem;display:flex}.gallery-tab,.gallery-button{border:1px solid var(--color-muted);min-height:44px;color:inherit;font:inherit;cursor:pointer;background:0 0;border-radius:8px;align-items:center;padding:0 .9rem;text-decoration:none;display:inline-flex}.gallery-tab.is-active{background:var(--brass);border-color:var(--brass-dark);color:var(--on-brass)}.gallery-canvas{touch-action:none;width:100%;height:100%;min-height:0;display:block}.gallery-info{background:var(--paper);padding:.75rem 1rem;font-size:.9rem;overflow:auto}.gallery-stat{margin:0 0 .25rem}.gallery-assets{margin:.5rem 0 0;padding:0;list-style:none}.gallery-asset{border-bottom:1px solid color-mix(in srgb, var(--color-muted) 30%, transparent);justify-content:space-between;gap:.5rem;padding:.25rem 0;display:flex}.gallery-asset-name{min-height:44px;color:inherit;align-items:center;display:flex}@media (max-width:40rem){.gallery{grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr)}.gallery-info{max-height:30dvh}}@media (max-height:30rem){.gallery{grid-template-columns:minmax(0,1fr);position:relative}.gallery-header{flex-wrap:nowrap;padding:.25rem .5rem;overflow-x:auto}.gallery-title{display:none}.gallery-tabs,.gallery-tools{flex-wrap:nowrap}.gallery-tab,.gallery-button{white-space:nowrap}.gallery-info{background:color-mix(in srgb, var(--color-surface) 80%, transparent);border-top-left-radius:8px;max-width:14rem;max-height:45%;position:absolute;bottom:0;right:0}}:root{--felt:#1a2421;--felt-light:#26332e;--paper:#f6efdc;--paper-2:#ece1c4;--paper-edge:#c9b88e;--text:#2a2118;--text-muted:#685a46;--on-felt:#efe3c6;--on-felt-muted:#c2b393;--wood:#5a3a22;--wood-dark:#3b2616;--wood-light:#7d5634;--on-wood:#f6e9c8;--brass:#d4aa49;--brass-light:#f1d686;--brass-dark:#8f6d26;--on-brass:#2a1c12;--accent:#8f6d26;--accent-soft:#eddca8;--danger:#a3261c;--ok:#2e6b2e;--turn:#ffd23f;--on-danger:#fff;--on-ok:#fff;--res-wood:#2f6b2a;--res-brick:#b5522f;--res-wool:#8dbb55;--res-grain:#d9ae2f;--res-ore:#727c87;--player-blue:#0072b2;--player-orange:#e69f00;--player-ivory:#d9d0b4;--player-purple:#cc79a7;--font-text:"Zen Maru Gothic Subset", system-ui, -apple-system, "Hiragino Maru Gothic ProN", "Hiragino Sans", "Noto Sans JP", "Yu Gothic UI", sans-serif;--font-display:"Shippori Mincho Subset", "Hiragino Mincho ProN", "Yu Mincho", "Noto Serif JP", serif;--font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--fs-xs:.75rem;--fs-sm:.85rem;--fs-md:1rem;--fs-lg:1.15rem;--fs-xl:1.4rem;--fs-2xl:1.8rem;--fs-3xl:2.6rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--radius-sm:8px;--radius:12px;--radius-lg:18px;--tap:44px;--sh-1:0 1px 0 #ffffff8c inset, 0 1px 2px #28180847;--sh-2:0 1px 0 #ffffff73 inset, 0 4px 10px #140c0452;--sh-3:0 2px 0 #fff6 inset, 0 14px 32px #08040080;--t-fast:.12s;--t-med:.2s;--t-slow:.32s;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--grain:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .32 0 0 0 0 .24 0 0 0 0 .12 0 0 0 .16 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");--color-bg:var(--felt);--color-fg:var(--text);--color-muted:var(--text-muted);--color-surface:var(--paper);--line:var(--paper-edge);--panel:var(--paper);--shadow:var(--sh-3);--accent-fg:var(--on-brass);--gap:var(--sp-2);--radius-ui:var(--radius);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--paper:#35291e;--paper-2:#433426;--paper-edge:#5e4a35;--text:#f4e9cf;--text-muted:#c9b999;--accent:#e0bb5a;--accent-soft:#5a4624;--danger:#ff8a7a;--ok:#8fd08f;--on-danger:#2a1008;--on-ok:#0c2a0c;--sh-1:0 1px 0 #ffffff1f inset, 0 1px 2px #00000080;--sh-2:0 1px 0 #ffffff1a inset, 0 4px 10px #00000080;--sh-3:0 2px 0 #ffffff14 inset, 0 14px 32px #000000b3;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (prefers-reduced-motion:reduce){:root{--t-fast:0s;--t-med:0s;--t-slow:0s}}@font-face{font-family:Zen Maru Gothic Subset;font-style:normal;font-weight:500;font-display:swap;src:url(/assets/zen-maru-gothic-500-4dbIyoW9.woff2)format("woff2")}@font-face{font-family:Zen Maru Gothic Subset;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/zen-maru-gothic-700-BF9GyI0I.woff2)format("woff2")}@font-face{font-family:Shippori Mincho Subset;font-style:normal;font-weight:700;font-display:swap;src:url(/assets/shippori-mincho-700-Dk5S1MP0.woff2)format("woff2")}body{line-break:strict;word-break:auto-phrase}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:default}:focus-visible{outline:3px solid var(--turn);outline-offset:2px;box-shadow:0 0 0 5px var(--wood-dark)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700}.icon{vertical-align:middle;flex:none;display:inline-block}[data-resource=wood]{--res:var(--res-wood)}[data-resource=brick]{--res:var(--res-brick)}[data-resource=wool]{--res:var(--res-wool)}[data-resource=grain]{--res:var(--res-grain)}[data-resource=ore]{--res:var(--res-ore)}[data-color=blue]{--player:var(--player-blue)}[data-color=orange]{--player:var(--player-orange)}[data-color=ivory]{--player:var(--player-ivory)}[data-color=purple]{--player:var(--player-purple)}.game-info,.game-self,.setup,.dialog,.result,.overlay-card,.status,.toast{color:var(--text);background-color:var(--paper);background-image:var(--grain)}.action{min-height:var(--tap);min-width:var(--tap);border:1px solid var(--brass-dark);border-radius:var(--radius-sm);background:linear-gradient(var(--paper), var(--paper-2));box-shadow:var(--sh-1);color:var(--text);text-align:center;transition:transform var(--t-fast) var(--ease-out), box-shadow var(--t-fast) var(--ease-out), filter var(--t-fast) var(--ease-out);border-bottom-width:3px;flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:6px 12px;line-height:1.2;text-decoration:none;display:inline-flex}.action:hover:not(:disabled){filter:brightness(1.06);transform:translateY(-1px)}.action:active:not(:disabled){border-bottom-width:2px;margin-top:1px;transform:translateY(1px);box-shadow:inset 0 1px 2px #28180859}.action:disabled{opacity:.5;border-color:var(--paper-edge);box-shadow:none}.action.primary{background:linear-gradient(var(--brass-light), var(--brass) 55%, #b88f2f);border-color:var(--brass-dark);color:var(--on-brass);text-shadow:0 1px #fff6;font-weight:700}.action.large{min-height:56px;padding:10px 20px;font-size:1.05rem}.action small{font-size:var(--fs-xs);opacity:.85;font-weight:500}.action.is-active{background:linear-gradient(var(--accent-soft), var(--paper-2));border-color:var(--brass);box-shadow:0 0 0 2px var(--brass), 0 1px 3px #28180859 inset}.icon-button{min-width:var(--tap);min-height:var(--tap);border:1px solid var(--brass-dark);background:radial-gradient(circle at 35% 30%, var(--brass-light), var(--brass) 60%, #a07c2c);box-shadow:var(--sh-1);color:var(--on-brass);transition:transform var(--t-fast) var(--ease-out);border-radius:50%;place-items:center;font-size:1.4rem;line-height:1;display:inline-grid}.icon-button:hover{transform:scale(1.06)}.icon-button:active{transform:scale(.96)}.choice-group{border:none;min-width:0;margin:0;padding:0}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.segmented{flex-wrap:wrap;gap:6px;display:flex}.segment{min-height:var(--tap);min-width:var(--tap);border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:linear-gradient(var(--paper), var(--paper-2));box-shadow:var(--sh-1);transition:background var(--t-fast), border-color var(--t-fast);align-items:center;gap:6px;padding:4px 12px;display:inline-flex}.segment small{color:var(--text-muted)}.segment.is-on{border-color:var(--brass-dark);background:linear-gradient(var(--brass-light), var(--brass));color:var(--on-brass);font-weight:700}.segment.is-on small{color:var(--on-brass)}.segment:disabled{opacity:.4}.note{color:var(--text-muted);font-size:var(--fs-sm)}.note.error{color:var(--danger)}.resource-row{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.resource-chip{align-items:center;gap:2px;display:inline-flex}.resource-count{font-variant-numeric:tabular-nums;font-size:var(--fs-sm);font-weight:700}.steppers{gap:6px;margin:0;padding:0;list-style:none;display:grid}.stepper{grid-template-columns:auto 1fr var(--tap) 2.2em var(--tap);align-items:center;gap:8px;display:grid}.stepper.is-off{opacity:.4}.stepper-name small{color:var(--text-muted);font-size:var(--fs-xs);display:block}.stepper-value{text-align:center;font-family:var(--font-display);font-size:var(--fs-xl);font-variant-numeric:tabular-nums;font-weight:700}.step{min-width:var(--tap);min-height:var(--tap);border:1px solid var(--wood-dark);background:radial-gradient(circle at 35% 30%, var(--wood-light), var(--wood));box-shadow:var(--sh-1);color:var(--on-wood);transition:transform var(--t-fast) var(--ease-out);border-radius:50%;font-size:1.3rem}.step:active:not(:disabled){transform:scale(.92)}.step:disabled{opacity:.35}.lobby,.setup{max-width:36rem;padding:var(--sp-4);margin:0 auto}.setup{margin-block:var(--sp-4);border:1px solid var(--paper-edge);border-radius:var(--radius-lg);box-shadow:var(--sh-3)}@media (max-width:36rem){.setup{border-radius:0;min-height:100dvh;margin-block:0}}.lobby-head{text-align:center;margin:6vh 0 var(--sp-5)}.lobby-head .logo{filter:drop-shadow(0 8px 14px #0000008c)}.lobby-head h1{margin:var(--sp-3) 0 var(--sp-1);font-size:var(--fs-3xl);letter-spacing:.08em;background:linear-gradient(var(--brass-light), var(--brass) 55%, #a9801f);color:#0000;filter:drop-shadow(0 2px #4a3510);-webkit-background-clip:text;background-clip:text}.lobby-head p{color:var(--on-felt-muted);margin:0}.lobby-menu{gap:var(--sp-3);display:grid}.lobby-menu .row-buttons{justify-content:center}.lobby-menu .row-buttons .action{border-color:var(--on-felt-muted);color:var(--on-felt);box-shadow:none;background:0 0;border-bottom-width:1px}.setup-head{align-items:center;gap:var(--sp-2);display:flex}.setup-head h1{font-size:var(--fs-xl);margin:0}.saved{margin:var(--sp-3) 0;padding:var(--sp-3);border-radius:var(--radius);background:var(--accent-soft)}.saved p{margin:0 0 var(--sp-2)}.row-buttons{gap:var(--sp-2);flex-wrap:wrap;display:flex}.seats{gap:var(--sp-3);margin:var(--sp-3) 0;display:grid}.seat-list{gap:var(--sp-3);margin:0;padding:0;list-style:none;display:grid}.seat{padding:var(--sp-3);border:1px solid var(--paper-edge);border-radius:var(--radius);background:var(--paper-2);box-shadow:var(--sh-1);gap:var(--sp-2);display:grid}.seat-head{align-items:center;gap:var(--sp-2);display:flex}.seat-head strong{flex:1}.row{align-items:center;gap:var(--sp-2);flex-wrap:wrap;display:flex}.row>span:first-child{min-width:3.5em;color:var(--text-muted)}.row input[type=text],.field input:is([type=text],[type=password]){min-width:8em;min-height:var(--tap);border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:var(--paper);color:var(--text);flex:1;padding:6px 10px;box-shadow:inset 0 2px 4px #2818082e}.row input[type=text]:focus,.field input:focus{border-color:var(--brass-dark)}.row.check{min-height:var(--tap)}.row.check input{width:22px;height:22px;accent-color:var(--brass-dark)}.row input[type=range]{min-height:var(--tap);accent-color:var(--brass-dark);flex:1}.setup-details{margin:var(--sp-3) 0}.setup-details summary{min-height:var(--tap);cursor:pointer;align-items:center;gap:6px;font-weight:700;list-style:none;display:flex}.setup-details summary:before{content:"▸";color:var(--brass-dark);transition:transform var(--t-fast) var(--ease-out)}.setup-details[open] summary:before{transform:rotate(90deg)}.setup>.action.large{width:100%;margin-top:var(--sp-2)}.loading{height:100dvh;color:var(--on-felt-muted);justify-content:center;align-items:center;display:flex}.online-form{gap:14px;display:grid}.field{margin:0 0 var(--sp-3);border:none;gap:6px;padding:0;display:grid}.field>span{font-weight:700}.field legend{margin-bottom:var(--sp-1);font-weight:700}.field small{color:var(--text-muted)}.field small.error{color:var(--danger)}.online-form .field{gap:var(--sp-1);margin:0}.field input[name=room-code]{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase}.online-form>.action.large{width:100%}.waiting section{margin:var(--sp-4) 0}.waiting h2{font-size:var(--fs-md);margin:0 0 var(--sp-2)}.room-code{padding:var(--sp-3);border-radius:var(--radius);background:var(--accent-soft);border:1px dashed var(--brass-dark)}.room-code .code{margin:0 0 var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-2xl);letter-spacing:.12em;word-break:keep-all;font-weight:700}.room-code .note{margin:var(--sp-2) 0 0}.room-seat{align-items:center;gap:var(--sp-2);min-height:var(--tap);display:flex}.room-seat.is-me{border-color:var(--brass-dark);box-shadow:0 0 0 2px var(--brass)}.room-seat-name{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:700}.room-seat-tags{gap:var(--sp-1);flex-wrap:wrap;justify-content:flex-end;display:flex}.tag{background:var(--accent-soft);color:var(--text);font-size:var(--fs-xs);white-space:nowrap;border-radius:999px;padding:1px 8px;font-weight:700}.tag.ready{background:var(--ok);color:var(--on-ok)}.tag.offline,.player-stats .tag.offline{background:var(--danger);color:var(--on-danger)}.waiting>.action.large{width:100%;margin-top:var(--sp-2)}.claim-seats{gap:var(--sp-2);margin:var(--sp-3) 0;display:grid}.claim-seats .action{flex-direction:row;justify-content:flex-start;gap:10px}.host-controls{gap:6px;margin:6px 0;display:grid}.host-control{gap:2px;display:grid}.host-control small{color:var(--text-muted)}.game-self[aria-busy=true]{cursor:progress}.game{padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:var(--on-felt);grid-template-rows:auto minmax(0,1fr) auto;grid-template-areas:"info""board""self";display:grid;position:fixed;inset:0}.game-board:after{content:"";pointer-events:none;background:radial-gradient(#0000 55%,#060a098c);position:absolute;inset:0}.game-info{border-bottom:3px solid var(--wood);z-index:2;grid-area:info;gap:4px;min-width:0;padding:6px 8px 4px;display:grid;box-shadow:0 6px 14px #00000059}.game-board{grid-area:board;min-height:0;position:relative;overflow:hidden}.board-canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.game-self{border-top:3px solid var(--wood);z-index:2;grid-area:self;gap:6px;min-width:0;max-height:46dvh;padding:8px;display:grid;overflow-y:auto;box-shadow:0 -6px 14px #00000059}.game-log-inline{display:none}.panel-title{font-size:var(--fs-sm);margin:var(--sp-1) 0;color:var(--text-muted)}.players{gap:var(--sp-1);grid-template-columns:repeat(2,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.player{border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:var(--paper-2);box-shadow:var(--sh-1);font-size:var(--fs-sm);transition:box-shadow var(--t-med) var(--ease-out), border-color var(--t-med) var(--ease-out);grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"emblem name vp""stats stats awards";align-items:center;column-gap:6px;padding:4px 6px 4px 12px;display:grid;position:relative;overflow:hidden}.player:before{content:"";background:var(--player,var(--paper-edge));width:6px;position:absolute;inset:0 auto 0 0}.player .icon:first-child{grid-area:emblem}.player.is-turn{border-color:var(--brass-dark);box-shadow:0 0 0 2px var(--turn), 0 0 14px #ffd23f99}.player.is-waiting:not(.is-turn){border-style:dashed;border-color:var(--brass-dark)}.player-name{text-overflow:ellipsis;white-space:nowrap;grid-area:name;font-weight:700;overflow:hidden}.player-stats .tag{padding:0 6px}.player-vp{border:1px solid var(--brass-dark);background:radial-gradient(circle at 35% 30%, var(--brass-light), var(--brass) 65%, #a07c2c);min-width:2.3em;height:2.3em;box-shadow:var(--sh-1);color:var(--on-brass);font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);font-variant-numeric:tabular-nums;border-radius:999px;grid-area:vp;align-content:center;place-items:center;padding:0 4px;line-height:1;display:grid}.player-vp small{display:none}.player-stats>span{white-space:nowrap}.player-stats{font-size:var(--fs-xs);color:var(--text-muted);flex-wrap:wrap;grid-area:stats;gap:0 8px;display:flex}.player-awards{grid-area:awards;gap:2px;display:flex}.bank{border-radius:var(--radius-sm);background:var(--paper-2);font-size:var(--fs-sm);font-variant-numeric:tabular-nums;flex-wrap:wrap;align-items:center;gap:2px 8px;padding:4px 8px;font-weight:700;display:flex;box-shadow:inset 0 2px 4px #2818082e}.bank-title{color:var(--text-muted)}.bank-item{align-items:center;gap:2px;display:inline-flex}.bank-dice{align-items:center;gap:2px;margin-left:auto;display:inline-flex}.bank-dice strong{margin-left:var(--sp-1);font-family:var(--font-display);font-size:var(--fs-lg)}.status{border:1px solid var(--brass-dark);border-radius:var(--radius);box-shadow:var(--sh-2);pointer-events:auto;z-index:3;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;padding:6px 10px 6px 16px;display:flex;position:absolute;bottom:8px;left:8px;right:8px}.status:before{content:"";background:linear-gradient(var(--brass-light), var(--brass-dark));border-radius:2px;width:4px;position:absolute;inset:4px auto 4px 5px}.status p{font-size:var(--fs-sm);flex:12em;margin:0;font-weight:700;line-height:1.4}.status:has(p:empty):not(:has(.status-actions)){display:none}.status-actions{gap:6px;display:flex}.board-tools{justify-content:flex-end;gap:var(--sp-1);z-index:3;flex-wrap:wrap;max-width:calc(100% - 12px);display:flex;position:absolute;top:6px;right:6px}.tool{min-height:var(--tap);min-width:var(--tap);border:1px solid var(--brass-dark);background:radial-gradient(circle at 35% 30%, var(--brass-light), var(--brass) 60%, #a07c2c);box-shadow:var(--sh-2);color:var(--on-brass);font-size:var(--fs-sm);transition:transform var(--t-fast) var(--ease-out);border-radius:999px;justify-content:center;align-items:center;padding:4px 8px;font-weight:700;display:inline-flex}.tool:hover{transform:translateY(-1px)}.tool:active{transform:translateY(1px)}.tool.primary{background:linear-gradient(var(--wood-light), var(--wood));color:var(--on-wood);border-color:var(--wood-dark)}.self{gap:6px;display:grid}.hand{gap:var(--sp-1);grid-template-columns:repeat(5,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.card{border-radius:var(--radius-sm);background:linear-gradient(var(--paper), var(--paper-2));border:1px solid var(--paper-edge);box-shadow:var(--sh-1);justify-items:center;padding:9px 2px 4px;display:grid;position:relative;overflow:hidden}.card:before{content:"";background:var(--res,var(--paper-edge));height:6px;position:absolute;inset:0 0 auto}.card.is-empty{opacity:.6}.card-count{font-family:var(--font-display);font-weight:700;font-size:var(--fs-xl);font-variant-numeric:tabular-nums;line-height:1.1}.card-count.is-new{animation:count-pop var(--t-slow) var(--ease-spring)}.card-name{font-size:var(--fs-xs);color:var(--text-muted)}.self-meta{justify-content:space-between;gap:var(--sp-2);font-size:var(--fs-sm);display:flex}.self-vp strong{font-family:var(--font-display);font-size:var(--fs-lg)}.self-pieces{color:var(--text-muted)}.devcards{gap:var(--sp-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.devcards-empty{font-size:var(--fs-xs);color:var(--text-muted)}.devcard{align-items:center;gap:var(--sp-1);min-height:var(--tap);border:1px solid var(--wood-dark);border-radius:var(--radius-sm);background:linear-gradient(var(--wood-light), var(--wood));box-shadow:var(--sh-1);color:var(--on-wood);transition:transform var(--t-fast) var(--ease-out);padding:4px 8px;font-weight:700;display:inline-flex}.devcard:hover:not(:disabled){transform:translateY(-1px)}.devcard:disabled{opacity:.6}.actions{gap:var(--sp-1);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.actions .action{font-size:var(--fs-sm);white-space:nowrap;padding:4px 2px}.actions .resource-row{flex-wrap:nowrap;gap:1px}.actions .resource-count{font-size:var(--fs-xs)}.actions .action.primary{animation:call-attention calc(var(--t-slow) * 6) var(--ease-out) 1;grid-column:1/-1}@media (orientation:landscape) and (min-width:640px){.game{grid-template:"info board self"minmax(0,1fr)/minmax(210px,280px) minmax(0,1fr) minmax(230px,320px)}.game-info,.game-self{max-height:none;padding:var(--sp-2);border-top:none;border-bottom:none;align-content:start;overflow-y:auto}.game-info{border-right:3px solid var(--wood);box-shadow:6px 0 14px #00000059}.game-self{border-left:3px solid var(--wood);box-shadow:-6px 0 14px #00000059}.players{grid-template-columns:1fr}.actions{grid-template-columns:repeat(2,minmax(0,1fr))}.status{max-width:calc(100% - 236px);top:8px;bottom:auto;right:auto}.board-tools{top:auto;bottom:8px}}@media (orientation:landscape) and (min-width:640px) and (min-height:600px){.game-info{grid-template-rows:auto auto minmax(0,1fr);overflow:hidden}.game-log-inline{flex-direction:column;min-height:0;display:flex}.game-log-inline .log{flex:1;max-height:none}.log-button{display:none}}@media (orientation:landscape) and (max-height:30rem){.game{grid-template-columns:minmax(170px,200px) minmax(0,1fr) minmax(200px,240px)}.player{font-size:var(--fs-xs);padding:2px 4px 2px 10px}.player-stats{font-size:.7rem}.card-name{display:none}.hand .icon{width:24px;height:24px}.status{max-width:calc(100% - 16px)}.board-canvas{width:calc(100% - 52px)}.board-tools{flex-flow:column;top:6px;bottom:auto;right:4px}.status{right:60px}.lobby-head{margin:12px 0 16px}.lobby .logo{width:64px;height:64px}.lobby-head h1{font-size:var(--fs-2xl);margin-top:var(--sp-1)}.lobby-menu{grid-template-columns:repeat(3,minmax(0,1fr))}}.log{max-height:60dvh;font-size:var(--fs-sm);border-radius:var(--radius-sm);background:var(--paper-2);margin:0;padding:6px 10px;line-height:1.55;list-style:none;overflow-y:auto;box-shadow:inset 0 2px 6px #28180833}.log li{border-left:3px solid var(--paper-edge);padding:3px 0 3px 10px}.log li+li{margin-top:2px}.log li:last-child{border-left-color:var(--brass);font-weight:700}.log-empty{color:var(--text-muted)}.dialog-backdrop,.result-backdrop{z-index:20;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);animation:fade-in var(--t-med) var(--ease-out);background:#0806038c;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{border:1px solid var(--wood-dark);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:34rem;max-height:88dvh;box-shadow:var(--sh-3);animation:sheet-up var(--t-slow) var(--ease-out);flex-direction:column;display:flex;overflow:hidden}@media (min-width:640px){.dialog-backdrop,.result-backdrop{align-items:center}.dialog{border-radius:var(--radius-lg);animation-name:sheet-in}}.dialog-head{background:linear-gradient(var(--wood-light), var(--wood) 60%, var(--wood-dark));box-shadow:0 1px 0 #ffffff40 inset, 0 2px 0 var(--brass-dark);color:var(--on-wood);justify-content:space-between;align-items:center;padding:8px 8px 8px 18px;display:flex}.dialog-head h2{font-size:var(--fs-lg);letter-spacing:.04em;margin:0}.dialog-body{padding:var(--sp-3) var(--sp-4);overflow-y:auto}.dialog-body h3{font-size:var(--fs-md);margin:var(--sp-3) 0 6px}.dialog-actions{justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4) var(--sp-3);border-top:1px solid var(--paper-edge);background-color:var(--paper-2);flex-wrap:wrap;display:flex;box-shadow:0 -6px 12px -10px #00000059}.dialog-actions>.note{flex-basis:100%;order:-1;margin:0}.choice-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.choice{align-items:center;gap:var(--sp-2);width:100%;min-height:52px;padding:6px var(--sp-3);border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:linear-gradient(var(--paper), var(--paper-2));box-shadow:var(--sh-1);transition:transform var(--t-fast) var(--ease-out), border-color var(--t-fast);display:flex}.choice:hover:not(:disabled){border-color:var(--brass-dark);transform:translateY(-1px)}.choice small{color:var(--text-muted);margin-left:auto}.response{align-items:center;gap:var(--sp-2);min-height:var(--tap);padding:4px var(--sp-2);border-radius:var(--radius-sm);background:var(--paper-2);flex-wrap:wrap;display:flex}.response small{color:var(--text-muted)}.response.is-accepted small{color:var(--ok);font-weight:700}.response .action{margin-left:auto}.trade-terms{gap:6px var(--sp-3);grid-template-columns:auto 1fr;align-items:center;display:grid}.trade-terms dt{color:var(--text-muted)}.trade-terms dd{margin:0}.propose{gap:var(--sp-2);display:grid}@media (min-width:640px){.propose{grid-template-columns:1fr 1fr}}.card-effect{align-items:center;gap:var(--sp-3);display:flex}.summary{font-weight:700}.help ol{padding-left:1.4em}.table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.table th,.table td{border-bottom:1px solid var(--paper-edge);text-align:left;white-space:nowrap;padding:6px 8px}.table-scroll{overflow-x:auto}.card-list{gap:var(--sp-2);padding:0;list-style:none;display:grid}.card-item{align-items:flex-start;gap:10px;display:flex}.card-list p{font-size:var(--fs-sm);margin:2px 0 0}.overlay{z-index:30;padding:var(--sp-4);animation:fade-in var(--t-med) var(--ease-out);background:#08060399;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.overlay.handoff{background:var(--felt)}.overlay-card{max-width:28rem;padding:var(--sp-5);border:1px solid var(--wood-dark);border-radius:var(--radius-lg);box-shadow:var(--sh-3);text-align:center;justify-items:center;gap:var(--sp-2);animation:sheet-in var(--t-slow) var(--ease-out);display:grid}.overlay-card h2{margin:0}.toast{left:50%;top:calc(env(safe-area-inset-top) + 12px);z-index:40;max-width:calc(100% - 32px);padding:10px var(--sp-4);border:1px solid var(--wood-dark);border-radius:var(--radius-sm);background-color:var(--wood);color:var(--on-wood);box-shadow:var(--sh-3);animation:toast-in var(--t-slow) var(--ease-spring);background-image:none;font-weight:700;position:fixed;transform:translate(-50%)}.result{width:100%;max-width:46rem;max-height:92dvh;padding:0 var(--sp-4);border:1px solid var(--wood-dark);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--sh-3);animation:sheet-up var(--t-slow) var(--ease-out);overflow-y:auto}@media (min-width:640px){.result{border-radius:var(--radius-lg);animation-name:sheet-in}}.result-head{margin:0 calc(var(--sp-4) * -1) var(--sp-3);padding:var(--sp-3) var(--sp-4) var(--sp-3);background:linear-gradient(var(--wood-light), var(--wood) 60%, var(--wood-dark));box-shadow:0 2px 0 var(--brass-dark);color:var(--on-wood);text-align:center}.result-head h2{font-size:var(--fs-lg);letter-spacing:.1em;margin:0}.result-winner{margin:var(--sp-1) 0 0;font-family:var(--font-display);font-size:var(--fs-2xl);background:linear-gradient(var(--brass-light), var(--brass));color:#0000;filter:drop-shadow(0 1px #00000080);-webkit-background-clip:text;background-clip:text;font-weight:700}.ranking{gap:6px;margin:0;padding:0;list-style:none;display:grid}.rank{align-items:center;column-gap:var(--sp-2);border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:var(--paper-2);box-shadow:var(--sh-1);grid-template-columns:3em auto minmax(0,1fr) auto;grid-template-areas:"place emblem name points""place breakdown breakdown breakdown";padding:6px 10px;display:grid}.rank.is-winner{background:var(--accent-soft);border-color:var(--brass-dark);box-shadow:0 0 0 2px var(--brass), var(--sh-1)}.rank-place{font-family:var(--font-display);font-weight:700;font-size:var(--fs-lg);grid-area:place}.rank-name{text-overflow:ellipsis;white-space:nowrap;grid-area:name;font-weight:700;overflow:hidden}.rank-points{font-family:var(--font-display);font-size:var(--fs-lg);grid-area:points}.rank-breakdown{font-size:var(--fs-xs);color:var(--text-muted);grid-area:breakdown}.stat-cards{gap:var(--sp-2);grid-template-columns:repeat(auto-fill,minmax(min(100%,15rem),1fr));margin:0;padding:0;list-style:none;display:grid}.stat-card{padding:var(--sp-2) 10px;border:1px solid var(--paper-edge);border-radius:var(--radius-sm);background:var(--paper-2)}.stat-card h4{margin:0 0 var(--sp-1);align-items:center;gap:6px;display:flex}.stat-card dl{font-size:var(--fs-sm);grid-template-columns:auto 1fr;gap:2px 10px;margin:0;display:grid}.stat-card dt{color:var(--text-muted)}.stat-card dd{font-variant-numeric:tabular-nums;margin:0}.dice-chart{align-items:end;gap:var(--sp-1);grid-template-columns:repeat(11,minmax(0,1fr));height:140px;display:grid}.dice-bar{height:100%;font-size:var(--fs-xs);grid-template-rows:auto 1fr auto;justify-items:center;display:grid}.dice-bar-fill{background:linear-gradient(var(--brass-light), var(--brass-dark));border-radius:4px 4px 0 0;align-self:end;width:70%;min-height:2px}.dice-bar-label{font-weight:700}.result .dialog-actions .action{white-space:nowrap;font-size:var(--fs-sm);padding:6px}.result .dialog-actions{margin:0 calc(var(--sp-4) * -1);padding:var(--sp-2) var(--sp-4) var(--sp-3);grid-template-columns:repeat(3,minmax(0,1fr));display:grid;position:sticky;bottom:0}.result .dialog-actions>.note{grid-area:1/1/auto/-1}.ranking caption{caption-side:top;text-align:left;font-size:var(--fs-xs);color:var(--text-muted);padding-bottom:var(--sp-1)}@media (max-width:30rem){.player{padding:3px 6px 3px 12px}.player-stats{gap:0 6px;font-size:.68rem;line-height:1.3}.table th,.table td{padding:6px 4px}}@media (orientation:landscape) and (min-width:1200px) and (min-height:700px){:root{font-size:17px}.game{grid-template-columns:minmax(290px,350px) minmax(0,1fr) minmax(310px,390px)}.player{font-size:var(--fs-md)}.player-stats,.card-name{font-size:var(--fs-sm)}.actions .action{font-size:var(--fs-md);min-height:52px}.actions .resource-row .icon{width:18px;height:18px}.bank,.log{font-size:var(--fs-md)}}@media (prefers-color-scheme:dark){.player .icon,.stat-card .icon,.rank .icon,.seat .icon{filter:drop-shadow(0 0 1px #ffffffb3)}.action:disabled{opacity:.6}.game-info,.game-self,.setup,.dialog,.result,.overlay-card,.status{background-image:none}}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-up{0%{opacity:0;transform:translateY(32px)}}@keyframes sheet-in{0%{opacity:0;transform:scale(.95)translateY(8px)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-16px)}}@keyframes count-pop{40%{transform:scale(1.35)}}@keyframes call-attention{0%,to{box-shadow:var(--sh-1)}50%{box-shadow:0 0 0 4px #ffd23fb3, var(--sh-1)}}
