@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(./fonts/Geist-Variable.woff2) format("woff2")}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(./fonts/GeistMono-Variable.woff2) format("woff2")}:root{color-scheme:dark;--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs: 12px;--fs-sm: 13px;--fs-base: 14px;--fs-md: 15px;--fs-lg: 18px;--fs-xl: 22px;--fs-2xl: 28px;--lh-tight: 1.25;--lh-normal: 1.5;--fw-regular: 400;--fw-medium: 500;--fw-semibold: 600;--fw-bold: 700;--tracking-tight: -.01em;--tracking-wide: .04em;--bg: #0f1115;--surface-1: #14161b;--surface-2: #1a1d24;--surface-3: #22262f;--surface-4: #2b303a;--glass: rgba(17, 19, 24, .82);--glass-strong: rgba(17, 19, 24, .92);--scrim: rgba(6, 7, 10, .62);--border: #262a33;--border-subtle: #1e222a;--border-strong: #363c48;--text: #e7ecf3;--text-muted: #9aa4b2;--text-faint: #6b7481;--text-on-accent: #ffffff;--link: #8b93ff;--link-hover: #a5abff;--accent: #6366f1;--accent-hover: #5559e6;--accent-active: #484bd1;--accent-soft: rgba(99, 102, 241, .14);--accent-border: rgba(99, 102, 241, .55);--success: #34d399;--success-soft: rgba(52, 211, 153, .13);--success-border: rgba(52, 211, 153, .45);--danger: #f0616d;--danger-hover: #e64c59;--danger-active: #cf3d4a;--danger-soft: rgba(240, 97, 109, .12);--danger-border: rgba(240, 97, 109, .45);--danger-text: #ff9ea6;--warning: #f5c451;--warning-soft: rgba(245, 196, 81, .12);--warning-border: rgba(245, 196, 81, .5);--warning-text: #f6d488;--focus-ring: #8b93ff;--r-xs: 4px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 6px 20px rgba(0, 0, 0, .4);--shadow-lg: 0 16px 44px rgba(0, 0, 0, .55);--shadow-pop: 0 10px 30px rgba(0, 0, 0, .5);--dur-fast: .11s;--dur: .15s;--ease: cubic-bezier(.2, 0, 0, 1)}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}html{height:100%}body{font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh-normal);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.game{height:100%;overflow:hidden}canvas{display:block}*,*:before,*:after{box-sizing:border-box}a{color:var(--link);text-decoration:none;transition:color var(--dur) var(--ease)}a:hover{color:var(--link-hover);text-decoration:underline;text-underline-offset:2px}h1,h2,h3{letter-spacing:var(--tracking-tight)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;border-radius:var(--r-xs)}::selection{background:var(--accent-soft)}*{scrollbar-width:thin;scrollbar-color:var(--surface-4) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--surface-4);border-radius:var(--r-pill);border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:padding-box}#err{position:fixed;top:var(--sp-2);left:var(--sp-2);color:var(--danger-text);font:var(--fs-base) / 1.4 var(--font-sans);pointer-events:none}#help{position:fixed;bottom:var(--sp-2);left:var(--sp-2);color:var(--text-muted);font:var(--fs-xs) / 1.4 var(--font-sans);pointer-events:none}button,input,select,textarea{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--text)}button{transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur-fast) var(--ease)}button:not(:disabled){cursor:pointer}.auth-actions button,.lobby-library,.lobby-logout,.lobby-toolbar button,.lobby-session-actions button,.lobby-invite-copy,.manage-actions button,.table-seat-switch,.table-chat-send,.table-recenter,.editor-testplay,.editor-export,.editor-palette button,.editor-seats-add,.deck-build-btn,.library-rename,.library-edit,.editor-publish-actions button,.join-submit{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:8px 14px;min-height:34px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-3);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1}.auth-actions button:hover:not(:disabled),.lobby-library:hover:not(:disabled),.lobby-logout:hover:not(:disabled),.lobby-toolbar button:hover:not(:disabled),.lobby-session-actions button:hover:not(:disabled),.lobby-invite-copy:hover:not(:disabled),.manage-actions button:hover:not(:disabled),.table-seat-switch:hover:not(:disabled),.table-chat-send:hover:not(:disabled),.table-recenter:hover:not(:disabled),.editor-testplay:hover:not(:disabled),.editor-export:hover:not(:disabled),.editor-palette button:hover:not(:disabled),.editor-seats-add:hover:not(:disabled),.deck-build-btn:hover:not(:disabled),.library-rename:hover:not(:disabled),.library-edit:hover:not(:disabled),.editor-publish-actions button:hover:not(:disabled){background:var(--surface-4);border-color:var(--border-strong)}.auth-actions button:active:not(:disabled),.lobby-library:active:not(:disabled),.lobby-logout:active:not(:disabled),.lobby-toolbar button:active:not(:disabled),.lobby-session-actions button:active:not(:disabled),.lobby-invite-copy:active:not(:disabled),.manage-actions button:active:not(:disabled),.table-seat-switch:active:not(:disabled),.table-chat-send:active:not(:disabled),.table-recenter:active:not(:disabled),.editor-testplay:active:not(:disabled),.editor-export:active:not(:disabled),.editor-palette button:active:not(:disabled),.editor-seats-add:active:not(:disabled),.deck-build-btn:active:not(:disabled),.library-rename:active:not(:disabled),.library-edit:active:not(:disabled),.editor-publish-actions button:active:not(:disabled){transform:translateY(1px);background:var(--surface-2)}.auth-actions button[data-action=login],.lobby-toolbar .lobby-new,.manage-open,.library-play,.editor-publish-open,.publish-submit,.publish-close,.join-submit{background:var(--accent);border-color:var(--accent);color:var(--text-on-accent);font-weight:var(--fw-semibold)}.auth-actions button[data-action=login]:hover:not(:disabled),.lobby-toolbar .lobby-new:hover:not(:disabled),.manage-open:hover:not(:disabled),.library-play:hover:not(:disabled),.editor-publish-open:hover:not(:disabled),.publish-submit:hover:not(:disabled),.publish-close:hover:not(:disabled),.join-submit:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 0 0 3px var(--accent-soft)}.auth-actions button[data-action=login]:active:not(:disabled),.lobby-toolbar .lobby-new:active:not(:disabled),.manage-open:active:not(:disabled),.library-play:active:not(:disabled),.editor-publish-open:active:not(:disabled),.publish-submit:active:not(:disabled),.publish-close:active:not(:disabled),.join-submit:active:not(:disabled){background:var(--accent-active);border-color:var(--accent-active);box-shadow:none;transform:translateY(1px)}.manage-kick,.manage-ban,.manage-end,.manage-reset-game,.library-delete,.table-reconnect{padding:8px 14px;min-height:34px;border:1px solid var(--danger-border);border-radius:var(--r-sm);background:transparent;color:var(--danger-text);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1}.manage-kick:hover:not(:disabled),.manage-ban:hover:not(:disabled),.manage-end:hover:not(:disabled),.manage-reset-game:hover:not(:disabled),.library-delete:hover:not(:disabled),.table-reconnect:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger);color:#ffc3c8}.manage-kick:active:not(:disabled),.manage-ban:active:not(:disabled),.manage-end:active:not(:disabled),.manage-reset-game:active:not(:disabled),.library-delete:active:not(:disabled),.table-reconnect:active:not(:disabled){transform:translateY(1px)}.manage-end.is-armed,.library-delete.is-armed{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:var(--fw-semibold);box-shadow:0 0 0 3px var(--danger-soft)}.manage-end.is-armed:hover:not(:disabled),.library-delete.is-armed:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover);color:#fff}.manage-end.is-armed:active:not(:disabled),.library-delete.is-armed:active:not(:disabled){background:var(--danger-active)}button:disabled{opacity:.45;cursor:default;box-shadow:none;transform:none}.auth-form input,.lobby-invite-link,.join-name,.editor-field input[type=text],.editor-field input[type=number],.editor-field select,.editor-field textarea,.table-chat-input,.table-chat-target{box-sizing:border-box;width:100%;padding:8px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);font-size:var(--fs-base);line-height:1.4;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background var(--dur) var(--ease)}.auth-form input::placeholder,.join-name::placeholder,.editor-field input::placeholder,.editor-field textarea::placeholder,.table-chat-input::placeholder{color:var(--text-faint)}.auth-form input:hover,.join-name:hover,.editor-field input:hover,.editor-field select:hover,.editor-field textarea:hover,.table-chat-input:hover,.table-chat-target:hover{border-color:var(--border-strong)}.auth-form input:focus,.join-name:focus,.editor-field input:focus,.editor-field select:focus,.editor-field textarea:focus,.table-chat-input:focus,.table-chat-target:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}#screen{min-height:100vh;display:flex;align-items:center;justify-content:center;box-sizing:border-box;padding:var(--sp-6)}.auth-screen,.lobby-screen{width:320px;max-width:100%;padding:var(--sp-8);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg)}.auth-screen h1{margin:0 0 var(--sp-5);font-size:var(--fs-xl);font-weight:var(--fw-semibold)}.auth-form label{display:block;margin-bottom:var(--sp-4);font-size:var(--fs-sm);font-weight:var(--fw-medium);color:var(--text-muted)}.auth-form input{margin-top:var(--sp-2)}.auth-error{min-height:18px;margin:var(--sp-1) 0 0;color:var(--danger-text);font-size:var(--fs-sm)}.auth-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-4)}.auth-actions button{flex:1}.lobby-screen{width:420px;text-align:center}.lobby-screen h1{margin:0 0 var(--sp-3);font-size:var(--fs-xl);font-weight:var(--fw-semibold)}.lobby-note{color:var(--text-muted);font-size:var(--fs-sm)}.lobby-error{color:var(--danger-text);font-size:var(--fs-sm)}.placeholder{color:var(--text-muted);font-size:var(--fs-base);text-align:center}.lobby-library,.lobby-logout{margin-top:var(--sp-4)}.lobby-screen--wide{width:640px;text-align:left}.lobby-toolbar{display:flex;gap:var(--sp-2);margin:var(--sp-4) 0}.lobby-back-link{color:var(--link)}.lobby-sessions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-3)}.lobby-session{padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.lobby-session:hover{border-color:var(--border-strong);background:var(--surface-3)}.lobby-session-main{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-3)}.lobby-session-name{font-weight:var(--fw-semibold);font-size:var(--fs-md)}.lobby-session-meta{color:var(--text-muted);font-size:var(--fs-sm);white-space:nowrap}.lobby-session-actions{margin-top:var(--sp-3);display:flex;gap:var(--sp-2)}.lobby-invite{display:flex;gap:var(--sp-2);margin-top:var(--sp-2)}.lobby-invite-link{flex:1;min-width:0;padding:6px 10px;background:var(--bg);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--fs-xs)}.lobby-invite-copy{flex:0 0 auto}.lobby-picker-overlay{position:fixed;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);background:var(--scrim);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.lobby-picker-overlay[hidden]{display:none}.lobby-picker{width:100%;max-width:440px;max-height:80vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-6);border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--border);box-shadow:var(--shadow-lg)}.lobby-picker h2,.lobby-picker-title{margin:0 0 var(--sp-1);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.lobby-picker-game{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-1);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.lobby-picker-game:hover{border-color:var(--border-strong);background:var(--surface-3)}.library-game{display:flex;align-items:center;gap:var(--sp-3);list-style:none;padding:var(--sp-3);border:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);margin-bottom:var(--sp-2);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.library-game:hover{border-color:var(--border-strong);background:var(--surface-3)}.library-game-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.library-game-cover{width:52px;height:52px;border-radius:var(--r-sm);object-fit:cover;background:var(--surface-4);border:1px solid var(--border);flex-shrink:0}.library-game-actions{display:flex;gap:var(--sp-2);flex-shrink:0}.manage-topbar{margin-bottom:var(--sp-2)}.manage-count{margin:0 0 var(--sp-3);color:var(--text-muted);font-size:var(--fs-sm)}.manage-roster{list-style:none;margin:0 0 var(--sp-2);padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.manage-seat{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}.manage-seat-main{display:flex;align-items:baseline;gap:var(--sp-3);min-width:0}.manage-seat-id{flex:0 0 auto;color:var(--text-muted);font-family:var(--font-mono);font-size:var(--fs-xs);padding:2px 8px;background:var(--surface-3);border:1px solid var(--border);border-radius:var(--r-pill)}.manage-seat-name{font-weight:var(--fw-semibold)}.manage-seat-empty{color:var(--text-faint);font-weight:var(--fw-regular);font-style:italic}.manage-seat-actions{display:flex;gap:var(--sp-2);flex-shrink:0}.manage-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-5)}body.game #screen{min-height:0;height:100%;padding:0;display:block}.table-screen{position:relative;width:100%;height:100%}.table-topbar{position:fixed;top:var(--sp-3);left:var(--sp-3);z-index:1;display:flex;align-items:center;gap:var(--sp-2);padding:6px;background:var(--glass);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-md);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%);max-width:calc(100vw - 2 * var(--sp-3))}.table-back{color:var(--text);background:var(--surface-3);border:1px solid var(--border);padding:6px 12px;border-radius:var(--r-sm);font-size:var(--fs-sm);font-weight:var(--fw-medium);text-decoration:none;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease)}.table-back:hover{background:var(--surface-4);border-color:var(--border-strong);color:var(--text);text-decoration:none}.table-testplay-badge{color:var(--warning-text);background:var(--warning-soft);border:1px solid var(--warning-border);padding:5px 10px;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:var(--fw-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.table-turn{position:fixed;top:var(--sp-3);left:50%;transform:translate(-50%);z-index:2;padding:6px 14px;background:var(--glass);border:1px solid var(--border);border-radius:var(--r-pill);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-semibold);box-shadow:var(--shadow-md);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%)}.table-turn[hidden]{display:none}.table-turn.is-you{border-color:var(--accent-border);background:var(--accent-soft);color:#cfd2ff}.table-banner{position:fixed;top:var(--sp-3);left:50%;transform:translate(-50%);z-index:2;display:flex;align-items:center;gap:var(--sp-3);padding:10px 16px;background:var(--glass-strong);border:1px solid var(--danger-border);border-radius:var(--r-md);color:var(--danger-text);font-size:var(--fs-sm);font-weight:var(--fw-medium);box-shadow:var(--shadow-md);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%)}.table-banner[hidden]{display:none}.table-error{position:fixed;top:64px;left:var(--sp-3);z-index:1;padding:6px 12px;background:var(--glass);border:1px solid var(--danger-border);border-radius:var(--r-sm);color:var(--danger-text);font-size:var(--fs-sm);pointer-events:none;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.table-error:empty{display:none}.table-roster{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;margin-left:var(--sp-2);padding-left:var(--sp-2);border-left:1px solid var(--border)}.table-roster-chip{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);background:var(--surface-3);border:1px solid var(--border);border-radius:var(--r-pill);padding:3px 10px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-roster-chip.is-you{border-color:var(--accent-border);background:var(--accent-soft);color:#cfd2ff}.table-recenter{position:fixed;top:var(--sp-3);right:var(--sp-3);z-index:2;background:var(--glass);border:1px solid var(--border);box-shadow:var(--shadow-md);backdrop-filter:blur(12px) saturate(140%);-webkit-backdrop-filter:blur(12px) saturate(140%)}.table-chat{position:fixed;right:var(--sp-3);bottom:var(--sp-3);z-index:1;width:320px;max-width:calc(100vw - 2 * var(--sp-3));display:flex;flex-direction:column;gap:var(--sp-2);background:var(--glass);border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3);box-shadow:var(--shadow-lg);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%)}.table-chat-messages{height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-sm);line-height:1.45;color:var(--text)}.table-chat-msg{word-wrap:break-word;white-space:pre-wrap}.table-chat-msg-from{font-weight:var(--fw-semibold);color:var(--text)}.table-chat-msg--whisper{color:var(--warning-text);font-style:italic}.table-chat-msg--system{color:var(--text-muted);font-style:italic}.table-chat-controls{display:flex;gap:var(--sp-2)}.table-chat-target{flex:0 0 auto;width:auto;max-width:96px;padding:6px 8px;font-size:var(--fs-xs)}.table-chat-input{flex:1 1 auto;min-width:0;padding:6px 10px;font-size:var(--fs-sm)}.table-chat-send{flex:0 0 auto;padding:6px 12px}.table-handbar{position:fixed;left:var(--sp-3);bottom:var(--sp-3);right:344px;z-index:2;display:flex;align-items:center;gap:var(--sp-3);height:168px;padding:var(--sp-2) var(--sp-3);background:var(--glass);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-lg);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%)}.table-handbar-label{color:var(--text-muted);font-size:var(--fs-xs);font-weight:var(--fw-medium);writing-mode:vertical-rl;transform:rotate(180deg);align-self:stretch;display:flex;align-items:center;letter-spacing:var(--tracking-wide);text-transform:uppercase}.table-handbar-cards{display:flex;align-items:center;gap:var(--sp-2);overflow-x:auto;height:100%;flex:1}.table-handbar-empty{color:var(--text-faint);font-size:var(--fs-sm)}.table-handcard{height:146px;min-width:100px;border-radius:var(--r-sm);border:2px solid transparent;cursor:grab;flex:0 0 auto;background:#0d0f12;box-shadow:var(--shadow-sm);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;transition:border-color var(--dur) var(--ease),transform var(--dur-fast) var(--ease),box-shadow var(--dur) var(--ease)}.table-handcard:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.table-handcard.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),var(--shadow-md)}.table-handcard[data-face-down="1"]{border-color:var(--warning-border)}.table-handcard-ghost{position:fixed;height:150px;transform:translate(-50%,-50%);border-radius:var(--r-sm);box-shadow:var(--shadow-pop);opacity:.9;pointer-events:none;z-index:70}.table-cardpreview{position:fixed;top:64px;left:var(--sp-3);z-index:3;pointer-events:none}.table-cardpreview img{width:300px;max-width:32vw;border-radius:var(--r-lg);box-shadow:var(--shadow-pop);border:1px solid var(--border);display:block}.table-ctxmenu{position:fixed;z-index:4;min-width:168px;background:var(--glass-strong);border:1px solid var(--border-strong);border-radius:var(--r-md);padding:var(--sp-1);box-shadow:var(--shadow-pop);backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%)}.table-ctxmenu button{display:block;width:100%;text-align:left;padding:8px 12px;background:none;border:none;border-radius:var(--r-sm);color:var(--text);font-size:var(--fs-sm)}.table-ctxmenu button:hover{background:var(--accent-soft);color:#cfd2ff}.table-note-editor{position:fixed;z-index:5;box-sizing:border-box;min-width:120px;min-height:80px;padding:8px;border:2px solid var(--accent-border);border-radius:var(--r-sm);background:#f5f2e8;color:#1a1a1a;font:15px/1.35 var(--font-sans);resize:none;box-shadow:var(--shadow-pop);outline:none}.table-bookreader{position:fixed;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;background:#000000b8}.table-bookreader-panel{display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}.table-bookreader-page canvas{display:block;border-radius:var(--r-sm);box-shadow:var(--shadow-pop);background:#fff}.table-bookreader-loading{color:var(--text);font-size:var(--fs-md);padding:40px 60px}.table-bookreader-bar{display:flex;align-items:center;gap:var(--sp-2)}.table-bookreader-bar button{padding:6px 14px;border:none;border-radius:var(--r-sm);background:var(--panel);color:var(--text);font-size:var(--fs-md);cursor:pointer}.table-bookreader-bar button:hover{background:var(--accent-soft);color:#cfd2ff}.table-bookreader-count{color:var(--text);font-size:var(--fs-sm);min-width:64px;text-align:center}.join-screen{max-width:380px;margin:12vh auto 0;text-align:center}.join-screen h1{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);margin-bottom:var(--sp-2)}.join-sub{color:var(--text-muted);margin-bottom:var(--sp-5)}.join-form{display:flex;gap:var(--sp-2)}.join-name{flex:1;padding:10px 12px;font-size:var(--fs-md)}.join-submit{flex:0 0 auto;padding:10px 20px;font-size:var(--fs-md)}.join-error{min-height:1.2em;margin-top:var(--sp-3);color:var(--danger-text);font-size:var(--fs-sm)}.editor-screen{width:100%;max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:var(--sp-3)}.editor-topbar{display:flex;align-items:center;gap:var(--sp-3);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}.editor-back{color:var(--link)}.editor-name{font-weight:var(--fw-semibold);font-size:var(--fs-md);flex:1;min-width:0}.editor-save-indicator{font-size:var(--fs-xs);font-weight:var(--fw-medium);color:var(--text-muted);padding:3px 10px;border-radius:var(--r-pill);background:var(--surface-3);border:1px solid var(--border)}.editor-save-indicator[data-state=error]{color:var(--danger-text);background:var(--danger-soft);border-color:var(--danger-border)}.editor-publish-modal{position:fixed;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:var(--sp-4);background:var(--scrim);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.editor-publish-modal[hidden]{display:none}.editor-publish-dialog{width:100%;max-width:420px;display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-6);border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--border);box-shadow:var(--shadow-lg);color:var(--text)}.editor-publish-dialog h2{margin:0 0 var(--sp-1);font-size:var(--fs-lg);font-weight:var(--fw-semibold)}.editor-publish-actions{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-2)}.editor-palette{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-md)}.editor-palette button:disabled{opacity:.4}.editor-delete{margin-left:auto;background:transparent;border-color:var(--danger-border);color:var(--danger-text)}.editor-delete:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger);color:#ffc3c8}.editor-seats{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}.editor-seats-label{color:var(--text-muted);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.editor-seats-list{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.editor-seat-chip{display:inline-flex;align-items:center;gap:var(--sp-1);padding:4px 6px 4px 12px;background:var(--surface-3);border:1px solid var(--border);border-radius:var(--r-pill);font-size:var(--fs-sm)}.editor-seat-remove{border:none;background:none;color:var(--text-muted);cursor:pointer;font-size:var(--fs-md);line-height:1;padding:2px 4px;border-radius:var(--r-xs);transition:color var(--dur) var(--ease),background var(--dur) var(--ease)}.editor-seat-remove:hover{color:var(--danger-text);background:var(--danger-soft)}.editor-seats-error{width:100%;color:var(--danger-text);font-size:var(--fs-sm);margin:0}.editor-tabs{display:flex;gap:var(--sp-1);border-bottom:1px solid var(--border)}.editor-tab{padding:8px 14px;border:none;border-bottom:2px solid transparent;background:none;color:var(--text-muted);font-size:var(--fs-sm);font-weight:var(--fw-medium);cursor:pointer;transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease)}.editor-tab:hover{color:var(--text)}.editor-tab[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.editor-body{display:flex;gap:var(--sp-3);align-items:flex-start}.editor-panel-table[hidden]{display:none}.editor-panel-script{display:flex;flex-direction:column;gap:var(--sp-2);flex:1;min-width:0}.editor-panel-script[hidden]{display:none}.editor-script-host{height:70vh;min-height:420px;background:#1e1e1e;border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.editor-script-error{color:var(--danger-text);font-size:var(--fs-sm);margin:0}.editor-canvas{position:relative;flex:1;min-width:0;height:70vh;min-height:420px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden}.editor-inspector{width:260px;flex-shrink:0;padding:var(--sp-3);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-md);display:flex;flex-direction:column;gap:var(--sp-2);max-height:70vh;overflow-y:auto}.editor-inspector-empty{color:var(--text-muted);font-size:var(--fs-sm);margin:0}.editor-inspector-title{margin:0 0 var(--sp-1);font-size:var(--fs-base);font-weight:var(--fw-semibold);word-break:break-all}.editor-field{display:flex;flex-direction:column;gap:var(--sp-1);font-size:var(--fs-sm);color:var(--text-muted)}.editor-field textarea{resize:vertical;font-family:var(--font-mono);font-size:var(--fs-sm)}.editor-field input[type=file]{color:var(--text-muted);font-size:var(--fs-xs)}.editor-field--checkbox{flex-direction:row;align-items:center;gap:var(--sp-2)}.editor-field input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent)}.editor-field-error{color:var(--danger-text);font-size:var(--fs-xs);margin:-2px 0 0}.insp-grid-fields{display:flex;flex-direction:column;gap:var(--sp-2);padding-left:var(--sp-2);border-left:2px solid var(--border)}.editor-deck-summary{margin:0;font-size:var(--fs-sm);color:var(--text-muted)}.deck-build-btn{align-self:flex-start}@media(pointer:coarse){button,.table-back,.auth-form input,.join-name,.table-chat-input,.table-chat-target,.table-chat-send,.editor-seat-remove,.table-ctxmenu button{min-height:44px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}@media(max-width:720px){#screen{padding:var(--sp-4)}.table-chat{left:var(--sp-2);right:var(--sp-2);width:auto;max-width:none}.table-chat-messages{height:150px}.table-handbar{left:var(--sp-2);right:var(--sp-2);bottom:232px;height:140px}.table-handcard{height:118px;min-width:84px}.table-topbar{right:var(--sp-2);left:var(--sp-2);flex-wrap:wrap;max-width:none}.table-roster{width:100%;margin-left:0;padding-left:0;border-left:none}.editor-body{flex-direction:column}.editor-inspector{width:100%;max-height:none}.editor-canvas,.editor-script-host{width:100%;height:52vh}}@media(max-width:460px){.auth-screen,.lobby-screen,.lobby-screen--wide{width:100%;padding:var(--sp-6)}.lobby-session-main,.manage-seat,.library-game{flex-wrap:wrap}.library-game-actions{width:100%}}.manage-screen,.library-screen{width:640px;max-width:100%;margin:0 auto;padding:var(--sp-8);background:var(--surface-1);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);text-align:left}.manage-screen h1,.library-screen h1{margin:0 0 var(--sp-3);font-size:var(--fs-xl);font-weight:var(--fw-semibold)}.library-topbar{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-4)}.library-back{color:var(--link);margin-right:auto}.lobby-draft-open,.lobby-draft-rename,.lobby-manage,.manage-reset,.manage-invite-copy,.editor-add,.publish-cancel,.lobby-picker-close{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:8px 14px;min-height:34px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-3);color:var(--text);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1}.lobby-draft-open:hover:not(:disabled),.lobby-draft-rename:hover:not(:disabled),.lobby-manage:hover:not(:disabled),.manage-reset:hover:not(:disabled),.manage-invite-copy:hover:not(:disabled),.editor-add:hover:not(:disabled),.publish-cancel:hover:not(:disabled),.lobby-picker-close:hover:not(:disabled){background:var(--surface-4);border-color:var(--border-strong)}.lobby-picker-start{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);padding:8px 14px;min-height:34px;border:1px solid var(--accent);border-radius:var(--r-sm);background:var(--accent);color:var(--text-on-accent);font-size:var(--fs-sm);font-weight:var(--fw-semibold);line-height:1}.lobby-picker-start:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 0 0 3px var(--accent-soft)}.lobby-draft-delete{padding:8px 14px;min-height:34px;border:1px solid var(--danger-border);border-radius:var(--r-sm);background:transparent;color:var(--danger-text);font-size:var(--fs-sm);font-weight:var(--fw-medium);line-height:1}.lobby-draft-delete:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger);color:#ffc3c8}.editor-error,.deck-build-error,.deck-face-status,.publish-error{color:var(--danger-text);font-size:var(--fs-sm);margin:var(--sp-1) 0 0}.lobby-drafts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.lobby-draft{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.lobby-draft:hover{border-color:var(--border-strong);background:var(--surface-3)}.lobby-draft-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.lobby-draft-name{font-weight:var(--fw-semibold)}.lobby-draft-actions{display:flex;gap:var(--sp-2);flex-shrink:0}.library-games{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.library-game-name{font-weight:var(--fw-semibold)}.library-game-meta{color:var(--text-muted);font-size:var(--fs-sm)}.library-game-cover--empty{display:flex;align-items:center;justify-content:center;color:var(--text-faint);font-size:var(--fs-xs);text-align:center}.manage-invite{display:flex;gap:var(--sp-2);margin:var(--sp-3) 0}.manage-invite-link{flex:1;min-width:0;padding:6px 10px;background:var(--bg);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-muted);font-family:var(--font-mono);font-size:var(--fs-xs)}.manage-invite-copy,.manage-reset{flex:0 0 auto}.lobby-picker-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--sp-2)}.lobby-picker-item{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-1);transition:border-color var(--dur) var(--ease),background var(--dur) var(--ease)}.lobby-picker-item:hover{border-color:var(--border-strong);background:var(--surface-3)}.editor-deck-builder{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-1)}.deck-csv{box-sizing:border-box;width:100%;min-height:120px;padding:8px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);font-family:var(--font-mono);font-size:var(--fs-sm);resize:vertical}.deck-face-files,.editor-field--upload input[type=file]{color:var(--text-muted);font-size:var(--fs-xs)}.editor-publish-library-link{color:var(--link);font-size:var(--fs-sm)}.editor-inspector input[type=text],.editor-inspector input[type=number],.editor-inspector select,.publish-cover,.publish-description,.publish-min,.publish-max{box-sizing:border-box;width:100%;padding:8px 10px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text);font-size:var(--fs-base);transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}.editor-inspector input:focus,.editor-inspector select:focus,.publish-cover:focus,.publish-description:focus,.publish-min:focus,.publish-max:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.publish-description{min-height:72px;resize:vertical}.publish-min,.publish-max{width:auto}
