:root{--bg: #dbe7f3;--bg-paper: #ffffff;--bg-note: #fff9c4;--fg: #2d2d2d;--muted: #e5e0d8;--accent: #ff4d4d;--accent-2: #2d5da1;--border: #2d2d2d;--success: #2f7f3f;--warning: #c16d2a;--danger: #cc3d3d;--focus-ring: rgba(45, 93, 161, .25);--control-bg: #ffffff;--control-bg-hover: #f6f2eb;--control-border: #2d2d2d;--button-primary-hover: #ff4d4d;--button-primary-active: #e53d3d;--button-secondary-hover: #2d5da1;--button-secondary-active: #254d86;--disabled-opacity: .48;--motion-fast: .1s;--motion-base: .15s;--motion-slow: .28s;--ease-standard: cubic-bezier(.2, .7, .2, 1);--font-heading: "Kalam", "Patrick Hand", cursive;--font-body: "Patrick Hand", "Segoe UI", sans-serif;--line-tight: 1.08;--line-base: 1.38;--line-loose: 1.5;--text-xs: 13px;--text-sm: 16px;--text-base: 22px;--text-lg: 30px;--text-xl: 42px;--text-2xl: clamp(46px, 7vw, 84px);--radius-xs: 255px 15px 225px 15px / 15px 225px 15px 255px;--radius-sm: 225px 25px 215px 20px / 22px 205px 18px 210px;--radius-md: 225px 18px 255px 20px / 25px 240px 24px 235px;--radius-lg: 255px 20px 225px 25px / 22px 220px 18px 235px;--shadow-sm: 3px 3px 0 0 var(--border);--shadow-md: 4px 4px 0 0 var(--border);--shadow-lg: 8px 8px 0 0 var(--border);--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{min-height:100dvh;margin:0;font-family:var(--font-body);font-size:var(--text-base);line-height:var(--line-base);background-color:var(--bg);background-image:radial-gradient(var(--muted) 1px,transparent 1px),linear-gradient(180deg,#fff9,#fdfbf7f5);background-size:24px 24px,100% 100%;color:var(--fg);text-rendering:optimizeLegibility}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{font-family:var(--font-heading);letter-spacing:.01em}h1{font-size:var(--text-2xl);line-height:var(--line-tight)}h2{font-size:clamp(42px,5vw,62px);line-height:var(--line-tight)}h3{font-size:var(--text-lg);line-height:1.15}h4{font-size:var(--text-sm);line-height:1.2}strong{color:var(--fg);font-weight:700}small{font-size:var(--text-sm)}code{background:var(--bg-paper);border:2px dashed var(--border);border-radius:var(--radius-xs);padding:1px 8px;font-family:var(--font-body)}button,input,select,textarea{font:inherit}input:not([type=checkbox]),select,textarea{width:100%;min-height:50px;padding:10px 14px;border:2px solid var(--control-border);border-radius:var(--radius-sm);background:var(--control-bg);color:var(--fg);box-shadow:2px 2px 0 0 var(--border);transition:background-color var(--motion-base) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}input:not([type=checkbox]):hover,select:hover,textarea:hover{background:var(--control-bg-hover)}input:not([type=checkbox]):focus-visible,select:focus-visible,textarea:focus-visible{outline:none;border-color:var(--accent-2);box-shadow:2px 2px 0 0 var(--border),0 0 0 4px var(--focus-ring)}button{min-height:50px;border:3px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-paper);color:var(--fg);padding:10px 16px;font-family:var(--font-body);font-weight:700;cursor:pointer;box-shadow:var(--shadow-md);transition:transform var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}button:not(:disabled):hover{background:var(--button-primary-hover);color:#fff;box-shadow:2px 2px 0 0 var(--border);transform:translate(2px,2px) rotate(.25deg)}button:not(:disabled):active{background:var(--button-primary-active);box-shadow:0 0 0 0 var(--border);transform:translate(4px,4px)}button:focus-visible{outline:none;box-shadow:var(--shadow-sm),0 0 0 4px var(--focus-ring)}button:disabled{opacity:var(--disabled-opacity);cursor:not-allowed}.button-link{min-height:50px;border:3px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-paper);color:var(--fg);padding:10px 16px;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--shadow-md);transition:transform var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.button-link:hover{background:var(--button-primary-hover);color:#fff;box-shadow:2px 2px 0 0 var(--border);transform:translate(2px,2px) rotate(.25deg)}.button-link:active{background:var(--button-primary-active);box-shadow:0 0 0 0 var(--border);transform:translate(4px,4px)}.button-link:focus-visible{outline:none;box-shadow:var(--shadow-sm),0 0 0 4px var(--focus-ring)}.secondary{background:var(--muted);color:var(--fg)}.secondary:not(:disabled):hover{background:var(--button-secondary-hover);color:#fff}.secondary:not(:disabled):active{background:var(--button-secondary-active)}.tertiary-button{border:none;box-shadow:none;min-height:auto;background:transparent;color:var(--accent-2);text-decoration:underline;padding:4px 2px}.tertiary-button:not(:disabled):hover{background:transparent;color:var(--accent);transform:rotate(-1deg)}.danger{background:var(--accent);color:#fff}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent-2)}:focus-visible{scroll-margin:14px}@supports not (height: 100dvh){body{min-height:100vh}}:root[data-motion=reduced] *,:root[data-motion=reduced] *:before,:root[data-motion=reduced] *:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important;scroll-behavior:auto!important}@media(max-width:720px){button{width:100%}}.app-shell{box-sizing:border-box;min-height:100dvh;max-width:1380px;margin:0 auto;padding:calc(22px + var(--safe-top)) calc(20px + var(--safe-right)) calc(30px + var(--safe-bottom)) calc(20px + var(--safe-left))}.page{display:flex;flex-direction:column;gap:20px}.card,.panel{background:var(--bg-paper);border:3px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);position:relative}.card{padding:24px}.panel{padding:18px}.card:nth-child(odd),.panel:nth-child(odd){transform:rotate(-.35deg)}.card:nth-child(2n),.panel:nth-child(2n){transform:rotate(.25deg)}.panel-section{display:flex;flex-direction:column;gap:10px;padding:14px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:#fffefb}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--fg);font-size:14px;font-weight:700;font-family:var(--font-heading)}.muted{color:color-mix(in srgb,var(--fg) 70%,transparent)}.hint{color:color-mix(in srgb,var(--fg) 70%,transparent);margin-top:6px;font-size:var(--text-sm)}.actions{display:flex;gap:10px;flex-wrap:wrap}.input-row{display:flex;align-items:center;gap:10px}.pill-row{display:flex;flex-wrap:wrap;gap:10px}.pill{display:inline-flex;align-items:center;gap:4px;padding:5px 12px;border:2px solid var(--border);border-radius:var(--radius-xs);background:var(--bg-paper);color:var(--fg);font-size:15px;font-weight:700;box-shadow:2px 2px 0 0 var(--border)}.pill-green{background:#d6f0d4}.pill-yellow{background:#ffe5b4}.pill-orange{background:#ffd3a6}.pill-red{background:#ffc9c9}.pill-gray{background:var(--muted)}.text-green{color:var(--success)}.text-orange{color:var(--warning)}.status-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.stack,.form-control{display:flex;flex-direction:column;gap:8px}.toggle-row{display:flex;align-items:flex-start;gap:10px;font-size:var(--text-sm);line-height:1.35}.toggle-row input{margin-top:3px;flex:0 0 auto}.link-button{min-height:auto;border:none;box-shadow:none;background:none;color:var(--accent-2);text-decoration:underline;padding:0}.link-button:not(:disabled):hover{background:none;color:var(--accent);transform:rotate(-1deg)}.state-card{display:flex;flex-direction:column;gap:12px}.state-title{font-size:clamp(32px,5vw,48px)}.state-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.state-skeleton-block{border:2px dashed var(--border);border-radius:var(--radius-sm);background:#fffefb;min-height:120px;padding:12px;display:flex;flex-direction:column;gap:10px}.state-skeleton-line{height:12px;border-radius:var(--radius-xs);background:linear-gradient(90deg,color-mix(in srgb,var(--muted) 50%,white),#fff,color-mix(in srgb,var(--muted) 50%,white));background-size:180% 100%;animation:skeleton-wave 1.2s linear infinite}.state-skeleton-line.wide{width:85%}.state-skeleton-line.mid{width:60%}.state-skeleton-line.narrow{width:40%}@keyframes skeleton-wave{0%{background-position:0 0}to{background-position:180% 0}}@supports not (height: 100dvh){.app-shell{min-height:100vh}}@media(max-width:900px){.app-shell{padding:calc(16px + var(--safe-top)) calc(12px + var(--safe-right)) calc(20px + var(--safe-bottom)) calc(12px + var(--safe-left))}}@media(max-width:720px){.input-row{flex-direction:column;align-items:stretch}}.home-page{gap:12px;align-items:center}.home-topbar{width:min(980px,100%);padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;transform:rotate(-.18deg)}.topbar-brand{min-width:0;display:flex;align-items:center;gap:10px}.topbar-logo{width:88px;max-height:88px;object-fit:contain;border:2px solid var(--border);border-radius:var(--radius-sm);box-shadow:2px 2px 0 0 var(--border);background:#fffefb;padding:2px}.topbar-brand-text{display:flex;flex-direction:column;gap:2px}.topbar-brand-text .eyebrow{font-size:13px}.topbar-brand-text strong{font-family:var(--font-heading);font-size:34px;line-height:1}.topbar-settings-button{min-height:44px;min-width:170px}.home-lobby-card{width:min(980px,100%);padding:16px 18px;display:flex;flex-direction:column;gap:12px;background:#fbf7ee;transform:rotate(.15deg);box-shadow:0 6px #2f2a23}.resume-room-card{display:flex;flex-direction:column;gap:10px;padding:12px;border:3px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-note);box-shadow:var(--shadow-sm);transform:rotate(-.2deg)}.resume-room-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 10px}.resume-room-head .eyebrow{font-size:13px}.room-code-badge{display:inline-flex;align-items:center;width:fit-content;border:2px solid var(--border);border-radius:var(--radius-xs);background:#fff;box-shadow:2px 2px 0 0 var(--border);padding:4px 10px;color:var(--fg);line-height:1.1;letter-spacing:.1em;font-family:JetBrains Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace;transform:translateY(0) scale(1) rotate(-.2deg);animation:room-code-token-place 1.06s cubic-bezier(.1,6,0,5) .12s both;transition:transform var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard);will-change:transform,box-shadow,opacity}.room-code-badge:hover{transform:translateY(-1px) scale(1) rotate(-.2deg);box-shadow:3px 4px 0 0 var(--border)}.room-code-badge:active{transform:translateY(2px) scale(1) rotate(-.12deg);box-shadow:1px 1px 0 0 var(--border)}.resume-room-code{font-size:22px;letter-spacing:.12em}.resume-room-actions{display:flex;flex-wrap:wrap;gap:8px}.resume-room-actions button{min-height:44px}.resume-room-actions .danger{border-style:dashed}.lobby-tab-toggle{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:6px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:#fffefb}.lobby-tab-button{min-height:44px;font-size:22px;background:#e7dfd1;box-shadow:2px 2px 0 0 var(--border)}.lobby-tab-button:not(.active):hover{background:#ded6c7;color:var(--fg)}.lobby-tab-button.active,.lobby-tab-button.active:hover{background:#fbf7ee;border-color:var(--border);border-bottom-color:transparent;color:var(--fg);box-shadow:2px 2px 0 0 var(--border);transform:none}.lobby-tab-panel{min-height:220px;border:2px solid var(--border);border-radius:var(--radius-sm);background:#fff;box-shadow:var(--shadow-sm);padding:12px 14px}.lobby-panel-content{height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:12px}.lobby-panel-heading{display:flex;flex-direction:column;gap:3px}.lobby-panel-heading h2{font-size:clamp(38px,4vw,54px);line-height:1.02}.host-actions-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.host-actions-row button{min-height:46px}.host-actions-row .home-primary-action{background:#d6a84f;color:#3a2a12;box-shadow:5px 5px #2f2a23}.host-actions-row .home-primary-action:hover{background:#c99634;color:#3a2a12}.host-actions-row .home-primary-action:active{background:#c99634}.host-actions-row .secondary{background:#e8e1d4}.host-actions-row .secondary:hover{background:#ddd3c0;color:var(--fg)}.host-actions-row .tertiary-button{width:auto;min-height:auto;margin-left:4px;color:#2e6f8e}.host-actions-row .tertiary-button:hover{color:#1f5c78}.join-room-form{display:flex;flex-direction:column;gap:8px}.join-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:stretch}.join-code-input{font-family:JetBrains Mono,SFMono-Regular,Menlo,Monaco,Consolas,monospace;letter-spacing:.16em;font-weight:700;text-transform:uppercase}.join-submit-button{min-width:148px}.share-room-prefix{margin-right:4px}.share-room-code-badge{font-size:15px;padding:2px 8px;vertical-align:middle}.home-status-line{min-height:20px}@keyframes room-code-token-place{0%{opacity:0;transform:translateY(10px) scale(.98) rotate(-.6deg)}70%{opacity:1;transform:translateY(-1px) scale(1) rotate(-.28deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(-.2deg)}}@keyframes room-code-token-fade{0%{opacity:0}to{opacity:1}}:root[data-motion=reduced] .room-code-badge{animation:room-code-token-fade .18s ease-out both;transform:none}:root[data-motion=reduced] .room-code-badge:hover,:root[data-motion=reduced] .room-code-badge:active{transform:none;box-shadow:2px 2px 0 0 var(--border)}@media(prefers-reduced-motion:reduce){.room-code-badge{animation:room-code-token-fade .18s ease-out both;transform:none}.room-code-badge:hover,.room-code-badge:active{transform:none;box-shadow:2px 2px 0 0 var(--border)}}@media(max-width:900px){.home-topbar,.home-lobby-card{width:min(100%,900px)}.topbar-logo{width:76px;max-height:76px}.topbar-brand-text strong{font-size:30px}}@media(max-width:720px){.home-page{gap:10px}.home-topbar{flex-direction:column;align-items:stretch}.topbar-brand,.topbar-settings-button{width:100%}.resume-room-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.resume-room-actions .danger{grid-column:1 / -1}.lobby-tab-panel{min-height:210px}.host-actions-row{display:grid;grid-template-columns:1fr}.host-actions-row .tertiary-button{width:100%;margin-left:0}.join-input-row{grid-template-columns:1fr}.join-submit-button{min-width:0}}.room-page-lobby{padding-bottom:96px}.lobby-three-column{display:grid;grid-template-columns:minmax(250px,300px) minmax(0,1fr) minmax(290px,360px);gap:16px;align-items:start}.lobby-shell-skeleton{margin-top:-2px}.lobby-players-panel,.lobby-settings-panel{min-height:0;display:flex;flex-direction:column;gap:12px;background:#fbf7ee;border:3px solid var(--border);border-radius:var(--radius-md);box-shadow:0 6px #2f2a23}.lobby-players-panel{transform:rotate(-.45deg)}.lobby-settings-panel{transform:rotate(.2deg)}.lobby-chat-panel{min-height:0;padding:0;border:none;box-shadow:none;background:transparent}.lobby-column-header{display:flex;flex-direction:column;gap:5px}.lobby-column-header h2{display:inline-flex;align-items:center;gap:10px}.lobby-players-panel .lobby-column-header h2:before,.lobby-settings-panel .lobby-column-header h2:before{content:"";width:30px;height:30px;border-radius:var(--radius-sm);border:2px solid var(--border);background-color:#fff;background-position:center;background-repeat:no-repeat;background-size:18px 18px;box-shadow:2px 2px 0 0 var(--border)}.lobby-players-panel .lobby-column-header h2:before{background-image:url(/assets/buildings/building-settlement.png)}.lobby-settings-panel .lobby-column-header h2:before{background-image:url(/assets/pieces/piece-army.png)}.lobby-settings-panel .lobby-column-header{padding-bottom:8px;border-bottom:2px dashed var(--border)}.lobby-status-block{gap:8px;background:var(--bg-note);border:2px solid var(--border);border-radius:var(--radius-sm);box-shadow:2px 2px 0 0 var(--border)}.lobby-roster-block{display:flex;flex-direction:column;gap:8px}.lobby-settings-index{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px;margin-bottom:2px}.lobby-settings-index-item{display:inline-flex;align-items:center;gap:6px;border:2px solid var(--border);border-radius:var(--radius-xs);background:#e7dfd1;color:var(--fg);font-size:15px;font-weight:700;padding:4px 10px;box-shadow:0 3px #3a2a12;text-decoration:none;transition:transform var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.lobby-settings-index-item:hover{background:#ded6c7;color:var(--fg)}.lobby-settings-index-item.active{background:#fbf7ee;border-bottom-color:transparent}.lobby-settings-index-icon{font-size:14px;line-height:1}.lobby-settings-stack{display:flex;flex-direction:column;gap:14px}.lobby-settings-group{display:flex;flex-direction:column;gap:10px}.lobby-settings-group+.lobby-settings-group{padding-top:14px;border-top:2px dashed var(--border)}.lobby-settings-group-header{display:flex;flex-direction:column;gap:4px}.lobby-settings-group-header h3{display:inline-flex;align-items:center;gap:8px;font-size:36px}.lobby-settings-group-icon{width:32px;height:32px;border-radius:var(--radius-xs);border:2px solid var(--border);background:#fff7e8;font-size:17px;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px #3a2a12}.lobby-quick-actions{gap:12px;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);align-items:start;border:3px solid var(--border);border-radius:var(--radius-md);box-shadow:0 4px #2f2a23;background:#fbf7ee}.lobby-quick-actions-grid{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.lobby-quick-actions-block{display:flex;flex-direction:column;gap:8px}.lobby-draft-row{display:flex;flex-direction:column;gap:8px;border:2px dashed #d6a84f;border-radius:var(--radius-sm);background:#fff4d6;padding:12px}.lobby-draft-row.pending{box-shadow:0 3px #d6a84f}.lobby-draft-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.lobby-dirty-indicator{font-size:var(--text-sm);color:var(--warning);font-weight:700}.lobby-quick-actions.dirty{border-color:#d6a84f;box-shadow:0 5px #d6a84f}.action-disabled-reason{margin-top:2px}.section-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}.section-card{border:2px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:14px;display:flex;flex-direction:column;gap:10px;min-height:150px;box-shadow:var(--shadow-sm)}.section-card:nth-child(odd){transform:rotate(-.3deg)}.section-card:nth-child(2n){transform:rotate(.2deg)}.section-card h3{font-size:28px}.section-empty{display:flex;flex-direction:column;gap:6px}.resource-option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.resource-option-row{display:flex;align-items:center;justify-content:space-between;gap:8px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:#fff;padding:7px 8px}.resource-option-row select{width:76px;min-height:38px;padding:6px 8px}.players{display:flex;flex-direction:column;gap:8px}.player{display:flex;align-items:center;justify-content:space-between;gap:10px;border-radius:var(--radius-sm);border:2px solid var(--border);background:#fbf7ee;padding:12px 13px;box-shadow:0 3px #3a2a12}.player-ready{border-color:#8cbf84}.player-clickable{cursor:pointer}.player-clickable:hover{border-color:#3a2a12}.player-token-row{align-items:flex-start;transition:transform var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.player-token-row:nth-child(odd){transform:rotate(-.25deg)}.player-token-row:nth-child(2n){transform:rotate(.18deg)}.player-token-row:hover{background:#f2ebdd;transform:translateY(-1px);box-shadow:0 4px #3a2a12}.player-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.player-name-row{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.player-name{font-size:31px;line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-pill-row{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px}.player-pill-host,.player-pill-ready{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-xs);border:2px solid #3a2a12;font-size:13px;font-weight:700;line-height:1}.player-pill-host{background:#e7f4e4;color:#2e7d32}.player-pill-ready{background:#e7f4e4;color:#1b5e20}.player-subline{color:color-mix(in srgb,var(--fg) 72%,transparent);font-size:14px}.player-online{color:#2e7d32;font-weight:700}.player-offline{color:#925f2c}.player-token{width:42px;height:42px;flex:0 0 42px;border-radius:999px;border:2px solid #3a2a12;background:#d6a84f;color:#3a2a12;font-weight:800;font-size:18px;line-height:1;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 3px #3a2a12;transform:rotate(-.35deg);transition:transform var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard)}.player-token-row:nth-child(2n) .player-token{transform:rotate(.45deg)}.player-token-row:hover .player-token{transform:translateY(-1px) rotate(-.15deg);box-shadow:0 4px #3a2a12}.player-meta{display:flex;align-items:flex-start;gap:8px}.player-traits{margin-top:4px;font-size:14px;color:color-mix(in srgb,var(--fg) 75%,transparent)}.player-remove-button{width:30px;height:30px;min-height:30px;border-radius:var(--radius-xs);background:#ffd9d9;color:var(--fg);border:2px solid var(--border);box-shadow:2px 2px 0 0 var(--border);padding:0}.player-remove-button:hover{background:var(--accent)}.room-action-button{min-height:46px;border-color:#3a2a12;color:#3a2a12;box-shadow:0 3px #3a2a12}.room-action-button:not(:disabled):hover{box-shadow:0 4px #3a2a12;transform:translateY(-1px)}.room-action-button:not(:disabled):active{transform:translateY(2px);box-shadow:0 1px #3a2a12}.room-action-start{background:#d6a84f;color:#3a2a12}.room-action-start:not(:disabled):hover,.room-action-start:not(:disabled):active{background:#c99634;color:#3a2a12}.room-action-secondary{background:#e8e1d4}.room-action-secondary:not(:disabled):hover,.room-action-secondary:not(:disabled):active{background:#ddd3c0;color:#3a2a12}.room-action-danger{background:#e6c4c4;color:#5a1f1f}.room-action-danger:not(:disabled):hover,.room-action-danger:not(:disabled):active{background:#d9a8a8;color:#5a1f1f}.settings-apply-button,.settings-reset-button{min-height:44px}.settings-apply-button{border-color:#1f5a2c;box-shadow:0 3px #1f5a2c;color:#f7fbf4}.settings-reset-button{border-color:#3a2a12;box-shadow:0 3px #3a2a12;color:#3a2a12}.settings-apply-button:not(:disabled){background:linear-gradient(180deg,#5daf6b 0%,var(--success) 100%);color:#f7fbf4}.settings-apply-button:not(:disabled):hover{background:linear-gradient(180deg,#69ba77,#276a34);color:#fff;box-shadow:0 4px #1f5a2c}.settings-apply-button:not(:disabled):active{background:#276a34;color:#fff;transform:translateY(2px);box-shadow:0 1px #1f5a2c}.settings-apply-button:disabled{opacity:1;background:#dbe7dd;border-color:#8eab93;box-shadow:0 3px #8eab93;color:#6c8771}.settings-reset-button{background:#e8e1d4}.settings-reset-button:disabled{opacity:1;background:#ece6dc;border-color:#b4a68c;box-shadow:0 3px #b4a68c;color:#8a7d66}.settings-reset-button:not(:disabled):hover{background:#ddd3c0;color:#3a2a12;box-shadow:0 4px #3a2a12}.settings-reset-button:not(:disabled):active{background:#ddd3c0;color:#3a2a12;transform:translateY(2px);box-shadow:0 1px #3a2a12}.lobby-mobile-actions{position:fixed;left:calc(10px + var(--safe-left));right:calc(10px + var(--safe-right));bottom:calc(10px + var(--safe-bottom));z-index:1200;border:3px solid var(--border);border-radius:var(--radius-md);background:var(--bg-paper);box-shadow:var(--shadow-lg);padding:10px;display:none;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.bot-modal-backdrop{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:24px;background:#2d2d2d59}.bot-modal{width:min(920px,94vw);max-height:82vh;overflow:auto;border:3px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-paper);box-shadow:var(--shadow-lg);padding:18px;transform:rotate(-.2deg)}.bot-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.bot-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.bot-card{min-height:230px;border:2px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:inherit;box-shadow:var(--shadow-sm);padding:12px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative}.bot-card:hover{transform:translate(2px,2px) rotate(.4deg);box-shadow:2px 2px 0 0 var(--border)}.bot-card.selected{border-color:var(--accent-2);box-shadow:4px 4px 0 0 var(--accent-2)}.bot-card.disabled{opacity:.56;cursor:not-allowed;transform:none}.bot-card-avatar{width:76px;height:76px;border-radius:var(--radius-sm);border:2px solid var(--bot-color, var(--border));background:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;letter-spacing:.08em}.bot-card-name{font-weight:700}.bot-card-description,.bot-card-traits{color:color-mix(in srgb,var(--fg) 75%,transparent);font-size:var(--text-sm);text-align:center}.bot-card-tag{position:absolute;top:10px;right:10px;font-size:12px;letter-spacing:.02em;border:2px dashed var(--border);border-radius:var(--radius-xs);padding:2px 6px;background:var(--bg-paper);color:var(--fg)}@media(min-width:1121px){.room-page-lobby .lobby-players-panel,.room-page-lobby .lobby-settings-panel,.room-page-lobby .lobby-chat-panel{max-height:calc(100dvh - var(--safe-top) - var(--safe-bottom) - 72px);overscroll-behavior:contain}.room-page-lobby .lobby-players-panel,.room-page-lobby .lobby-settings-panel{overflow-y:auto}.room-page-lobby .lobby-chat-panel{display:flex;flex-direction:column;overflow:hidden}.room-page-lobby .lobby-chat-panel .chat-shell{flex:1 1 auto;height:auto;min-height:0}.room-page-lobby .lobby-chat-panel .chat-body{min-height:0}.room-page-lobby .lobby-chat-panel .chat-messages{min-height:0;flex:1 1 auto}}@media(max-width:1200px){.lobby-three-column{grid-template-columns:minmax(220px,260px) minmax(0,1fr) minmax(270px,320px)}}@media(max-width:1120px){.lobby-three-column{grid-template-columns:minmax(0,1fr)}.lobby-settings-panel{order:1}.lobby-players-panel{order:2}.lobby-chat-panel{order:3}.lobby-mobile-actions{display:grid}.lobby-quick-actions{grid-template-columns:1fr}}@media(max-width:900px){.resource-option-grid{grid-template-columns:1fr}}@media(max-width:720px){.lobby-quick-actions-grid{grid-template-columns:1fr}.lobby-settings-index{gap:6px}.lobby-settings-index-item{font-size:13px;padding:3px 8px}.section-grid{grid-template-columns:1fr}}.chat-shell{background:#fbf7ee;border:3px solid var(--border);border-radius:var(--radius-md);box-shadow:0 6px #2f2a23;display:flex;flex-direction:column;gap:10px;min-height:360px;height:100%;padding:14px;transform:rotate(.4deg)}.chat-shell.mobile.closed{min-height:auto;box-shadow:none;border:none;background:transparent;padding:0;transform:none}.chat-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-bottom:8px;border-bottom:2px dashed var(--border)}.chat-header-text{display:flex;flex-direction:column;gap:4px}.chat-header-text .eyebrow{display:inline-flex;align-items:center;gap:8px}.chat-header-text .eyebrow:before{content:"";width:24px;height:24px;border-radius:var(--radius-xs);border:2px solid var(--border);background:#fff url(/assets/pieces/piece-boat.png) center / 14px 14px no-repeat;box-shadow:2px 2px 0 0 var(--border)}.chat-online{display:flex;align-items:center;gap:6px;color:color-mix(in srgb,var(--fg) 70%,transparent);font-size:15px}.dot{width:8px;height:8px;border-radius:999px;background:var(--success)}.chat-body{flex:1;display:flex;flex-direction:column;gap:8px;min-height:0}.chat-messages{flex:1;min-height:220px;overflow-y:auto;border:2px solid var(--border);border-radius:var(--radius-sm);background:#fffefb;padding:12px;display:flex;flex-direction:column;gap:12px;box-shadow:2px 2px 0 0 var(--border)}.chat-empty-state{margin:auto 0;padding:10px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:var(--bg-note)}.chat-message{display:flex;flex-direction:column;gap:6px}.chat-message.self{align-items:flex-end}.chat-message.system{align-items:center}.chat-message.grouped{margin-top:-3px}.chat-meta{display:flex;justify-content:space-between;gap:8px;font-size:13px}.chat-message.self .chat-meta{justify-content:flex-end}.chat-author{display:flex;align-items:center;gap:6px}.chat-color-dot{width:10px;height:10px;border-radius:999px;background:var(--fg)}.chat-bubble{position:relative;width:fit-content;max-width:78%;border-radius:var(--radius-sm);border:2px solid var(--border);background:#fff;padding:9px 11px 10px;box-shadow:2px 2px 0 0 var(--border)}.chat-message.self .chat-bubble{background:#edf4ff}.chat-message.system .chat-text{border:2px dashed #c9a742;border-radius:var(--radius-sm);padding:6px 10px;background:#f7edc9}.chat-text{white-space:pre-wrap;word-break:break-word}.chat-reply-preview{margin-bottom:6px;border:2px dashed var(--border);border-radius:var(--radius-xs);background:#fffefb;color:color-mix(in srgb,var(--fg) 75%,transparent);font-size:13px;padding:6px 8px}.chat-message-actions{position:absolute;top:-12px;right:8px;display:flex;flex-wrap:wrap;gap:6px;opacity:0;pointer-events:none;transition:opacity var(--motion-fast) var(--ease-standard)}.chat-message:hover .chat-message-actions,.chat-message:focus-within .chat-message-actions,.chat-message-actions.always-visible{opacity:1;pointer-events:auto}.chat-action-button,.chat-reaction-chip,.chat-reply-close,.chat-emoji-button{border:2px solid var(--border);border-radius:var(--radius-xs);background:#fff;color:var(--fg);box-shadow:2px 2px 0 0 var(--border)}.chat-action-button{min-height:28px;padding:2px 7px;font-size:13px;font-weight:700}.chat-reactions{display:flex;gap:6px;flex-wrap:wrap;margin-left:10px}.chat-message.self .chat-reactions{justify-content:flex-end;margin-left:0}.chat-reaction-chip{border-radius:var(--radius-xs);min-height:28px;padding:4px 8px;font-size:13px;font-weight:700}.system-text{color:color-mix(in srgb,var(--fg) 75%,transparent);font-style:italic}.chat-new-banner{align-self:flex-end;border-radius:var(--radius-xs);padding:6px 12px;font-size:13px;font-weight:700;box-shadow:var(--shadow-sm)}.chat-typing{color:color-mix(in srgb,var(--fg) 70%,transparent);font-size:14px;min-height:16px}.chat-reply-bar{display:flex;justify-content:space-between;align-items:center;gap:10px;border:2px dashed var(--border);border-radius:var(--radius-sm);background:#fffefb;padding:10px 12px}.chat-reply-content{display:flex;flex-direction:column;gap:2px}.chat-reply-label{color:color-mix(in srgb,var(--fg) 70%,transparent);font-size:13px;font-weight:700}.chat-reply-snippet{font-size:13px}.chat-reply-close{width:26px;height:26px;min-height:26px;padding:0;font-size:14px}.chat-composer{display:flex;flex-direction:column;gap:8px}.chat-emoji-bar{display:inline-flex;gap:6px;flex-wrap:wrap;width:fit-content;border:2px solid var(--border);border-radius:6px;background:#f2ebdd;padding:4px;box-shadow:0 2px #3a2a12}.chat-emoji-button{width:30px;height:30px;min-height:30px;font-size:14px;padding:0}.chat-input{resize:none}.chat-actions{display:flex;align-items:center;justify-content:space-between}.chat-send-button{min-width:94px}.chat-toggle{width:auto}@media(max-width:900px){.chat-message-actions{position:static;margin-top:6px;opacity:1;pointer-events:auto}.chat-bubble{max-width:100%}.chat-actions{flex-wrap:wrap;gap:8px}}.settings-modal-backdrop{position:fixed;inset:0;z-index:2100;background:#2d2d2d6b;display:flex;align-items:center;justify-content:center;padding:18px}.settings-modal{width:min(680px,100%);max-height:88vh;overflow:auto;border-radius:var(--radius-lg);border:3px solid var(--border);background:var(--bg-paper);box-shadow:var(--shadow-lg);padding:18px;display:flex;flex-direction:column;gap:14px;transform:rotate(-.35deg)}.settings-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.settings-modal-body{display:flex;flex-direction:column;gap:10px}.settings-toggle-row,.settings-select-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:2px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:10px;box-shadow:2px 2px 0 0 var(--border)}.settings-toggle-row:nth-child(odd),.settings-select-row:nth-child(odd){transform:rotate(-.2deg)}.settings-toggle-row:nth-child(2n),.settings-select-row:nth-child(2n){transform:rotate(.2deg)}.settings-toggle-row input{width:18px;height:18px;flex:0 0 auto}.settings-select-row select{width:280px;flex:0 0 auto}.settings-modal-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}:root[data-density=compact] .panel,:root[data-density=compact] .card{padding:10px}:root[data-density=compact] .player{padding:8px 10px}:root[data-density=compact] .form-control{gap:6px}:root[data-density=compact] .chat-shell{gap:8px;padding:10px}:root[data-density=compact] .chat-bubble{padding:7px 9px}@media(max-width:720px){.settings-toggle-row,.settings-select-row{flex-direction:column;align-items:flex-start}.settings-select-row select{width:100%}.settings-modal-footer{flex-direction:column;align-items:stretch}}.game-container{border-radius:var(--radius-md);border:3px solid var(--border);background:#fff;width:100%;height:100%;overflow:hidden;box-shadow:var(--shadow-md)}.game-layout-square{position:fixed;inset:0;display:flex;background:radial-gradient(var(--muted) 1px,transparent 1px),var(--bg);background-size:24px 24px,100% 100%}.game-board-square{position:relative;flex:1;min-width:0;min-height:0;display:flex}.game-finished-overlay{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:20px;background:#2d2d2d61}.game-finished-card{width:min(620px,100%);border-radius:var(--radius-lg);border:3px solid var(--border);background:var(--bg-paper);box-shadow:var(--shadow-lg);padding:20px;display:flex;flex-direction:column;gap:14px;transform:rotate(-.3deg)}.game-finished-standings{display:flex;flex-direction:column;gap:8px}.game-finished-row{display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;border:2px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;box-shadow:2px 2px 0 0 var(--border)}.game-finished-row.winner{border-color:var(--accent-2);box-shadow:4px 4px 0 0 var(--accent-2);background:#edf4ff}.game-finished-player{display:flex;align-items:center;gap:10px}.game-finished-rank{color:color-mix(in srgb,var(--fg) 70%,transparent);font-weight:700;min-width:26px}.game-finished-color{width:12px;height:12px;border-radius:999px;border:2px solid var(--border);flex-shrink:0}@media(max-width:760px){.game-finished-overlay{padding:12px}.game-finished-card{padding:16px}}
