.login-page{position:relative;min-height:100%;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 30%,rgba(201,164,74,.08),transparent 60%),radial-gradient(ellipse at 20% 80%,rgba(90,60,30,.15),transparent 50%),var(--bg-deep);padding:24px}.login-vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;box-shadow:inset 0 0 180px #000000d9}.login-card{position:relative;width:100%;max-width:420px;padding:36px 32px}.login-title{margin:0;font-size:34px;text-align:center;color:var(--accent-strong);text-shadow:0 2px 12px rgba(201,164,74,.35);font-variant:small-caps;letter-spacing:.12em}.login-subtitle{text-align:center;margin:4px 0 24px}.login-form button.primary{width:100%;margin-top:4px}.login-divider{display:flex;align-items:center;gap:12px;margin:24px 0 16px;color:var(--text-dim);font-size:12px;text-transform:uppercase;letter-spacing:.1em}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--border)}.picker-hint{font-size:12px;margin:6px 0 0}.changepw-page{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.changepw-card{width:100%;max-width:400px;padding:28px}.changepw-card h2{margin-top:0}.admin-page{max-width:1000px;margin:0 auto;padding:24px}.page-header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;margin-bottom:20px}.page-header h1{margin:0;font-size:22px;font-variant:small-caps;letter-spacing:.08em;color:var(--accent-strong)}.admin-grid{display:grid;grid-template-columns:320px 1fr;gap:20px;align-items:start}.admin-section{padding:20px}.admin-section h2{margin-top:0;font-size:16px}.notice-text{color:var(--ok);font-size:13px;margin:8px 0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{width:100%;max-width:380px;padding:24px}.modal h3{margin-top:0}.gm-page{max-width:1200px;margin:0 auto;padding:24px}.gm-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.gm-section{padding:20px}.gm-section h2{margin-top:0;font-size:16px}.create-form{margin:12px 0 16px}.create-form input{flex:1}.add-player-form{display:grid;grid-template-columns:1fr 1fr;gap:0 12px;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.add-player-form button{grid-column:1 / -1;justify-self:start}.session-name{font-size:14px;color:var(--text)}.selected-row{background:#c9a44a14}.status-live{color:var(--ok)}.status-stopped{color:var(--text-dim)}.workspace{position:relative;flex:1;min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:radial-gradient(ellipse at 50% 0%,rgba(201,164,74,.05),transparent 55%),repeating-linear-gradient(0deg,transparent,transparent 39px,rgba(255,255,255,.02) 40px),repeating-linear-gradient(90deg,transparent,transparent 39px,rgba(255,255,255,.02) 40px),var(--bg-deep)}.workspace-toolbar{position:absolute;top:8px;right:8px;z-index:100;display:flex;align-items:center;gap:2px;background:var(--bg-panel-2);border:1px solid var(--border-strong);border-radius:var(--radius);padding:3px 6px;box-shadow:var(--shadow)}.workspace-toolbar button{background:transparent;border:none;color:var(--text-dim);padding:3px 7px;font-size:13px;line-height:1;border-radius:3px;cursor:pointer}.workspace-toolbar button:hover{color:var(--text);background:#ffffff14}.workspace-toolbar button.active{color:var(--accent-strong);background:#c9a44a26}.workspace-zoom-label{font-size:11px;color:var(--text-dim);min-width:38px;text-align:center;-webkit-user-select:none;user-select:none}.workspace-frame{position:absolute;top:0;right:0;bottom:0;left:0;will-change:transform}.workspace-frame.hand-tool{cursor:grab}.workspace-frame.hand-tool.panning{cursor:grabbing}.workspace-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;text-align:center;line-height:1.8;pointer-events:none}.ws-window{position:absolute;background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;transform-origin:top left}.ws-window.pinned{border-color:var(--accent)}.ws-window.ws-selected{outline:2px solid var(--accent-strong);outline-offset:2px}.ws-minimize{background:transparent;border:none;color:var(--text-dim);padding:2px 4px;font-size:11px;line-height:1}.ws-minimize:hover{color:var(--text)}.ws-resize-handle{position:absolute;right:-6px;bottom:-6px;width:14px;height:14px;background:var(--accent-strong);border:2px solid var(--bg-deep);border-radius:3px;cursor:nwse-resize;touch-action:none;z-index:5}.ws-titlebar{display:flex;align-items:center;gap:6px;padding:5px 8px;background:var(--bg-panel-2);border-bottom:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.ws-window.pinned .ws-titlebar{cursor:default}.ws-titlebar:active{cursor:grabbing}.ws-title{flex:1;font-size:12px;font-weight:600;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ws-controls{display:flex;align-items:center;gap:2px}.ws-controls button{background:transparent;border:none;color:var(--text-dim);padding:2px 5px;font-size:12px;line-height:1}.ws-controls button:hover{color:var(--text);background:#ffffff14}.ws-controls button.pinned-on{color:var(--accent-strong)}.ws-scale-label{font-size:10px;color:var(--text-dim);min-width:34px;text-align:center}.ws-body{flex:1 1 auto;overflow:auto;position:relative;min-height:0}.sheet-canvas{position:relative;height:100%}.sheet-canvas.editing{background:repeating-linear-gradient(0deg,transparent,transparent 19px,rgba(255,255,255,.03) 20px),repeating-linear-gradient(90deg,transparent,transparent 19px,rgba(255,255,255,.03) 20px)}.sheet-edit-hint{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-size:12px}.sheet-el-wrap{position:absolute}.sheet-el-wrap.editing{cursor:grab;touch-action:none;border:1px dashed transparent}.sheet-el-wrap.editing:hover{border-color:var(--border-strong)}.sheet-el-wrap.selected{border:1px solid var(--accent-strong);box-shadow:0 0 0 1px #e0b95c59}.sheet-el-wrap.multi-selected{border:1px solid var(--accent);box-shadow:0 0 0 1px #c9a44a40;background:#c9a44a0f}.sheet-el-wrap input,.sheet-el-wrap textarea{width:100%;height:100%;resize:none}.sheet-el-wrap.editing input,.sheet-el-wrap.editing textarea{pointer-events:none}.sheet-el-panel{border:1px solid var(--border-strong);border-radius:4px;background:#ffffff08}.sheet-el-panel .sheet-panel-label{position:absolute;top:-9px;left:8px;background:var(--bg-panel);padding:0 6px;font-size:11px;color:var(--accent);text-transform:uppercase;letter-spacing:.08em}.sheet-el-label{font-size:12px;color:var(--text-dim);display:flex;align-items:center}.sheet-el-separator{background:var(--border-strong);border-radius:1px}.sheet-el-checkbox{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim)}.el-resize-handle{position:absolute;right:-5px;bottom:-5px;width:10px;height:10px;background:var(--accent-strong);border:1px solid var(--bg-deep);border-radius:2px;cursor:nwse-resize;touch-action:none;z-index:4}.el-toolbar{position:absolute;display:flex;align-items:center;gap:2px;background:var(--bg-panel-2);border:1px solid var(--border-strong);border-radius:4px;padding:2px 4px;z-index:6;box-shadow:var(--shadow)}.el-toolbar-type{font-size:10px;color:var(--text-dim);text-transform:uppercase;padding:0 4px}.el-toolbar button{background:transparent;border:none;color:var(--text-dim);padding:2px 5px;font-size:11px;line-height:1}.el-toolbar button:hover{color:var(--text);background:#ffffff14}.el-toolbar button.danger:hover{color:#f0b3a8}.sheet-flipped{display:flex;flex-direction:column;height:100%;gap:8px}.sheet-js-editor{flex:1;min-height:120px;font-family:Consolas,Courier New,monospace;font-size:12px;line-height:1.5;resize:none;-moz-tab-size:2;tab-size:2}.sheet-hook-info{font-size:11px;padding:4px 8px;background:#c9a44a14;border:1px solid var(--border);border-radius:4px}.sheet-el-frame{display:block;background:var(--bg-input);border:1px solid var(--border);border-radius:4px}.notes-body{display:flex;flex-direction:column;height:100%;padding:8px;gap:6px}.notes-body input{font-weight:600}.notes-body textarea{flex:1;min-height:120px;resize:none;line-height:1.5}.sheet-el-tabbed-panel{display:flex;flex-direction:column;border:1px solid var(--border-strong);border-radius:4px;background:#ffffff08;overflow:hidden}.tabbed-panel-tabs{display:flex;gap:0;background:var(--bg-panel-2);border-bottom:1px solid var(--border-strong);flex-shrink:0}.tabbed-panel-tab{background:transparent;border:none;color:var(--text-dim);font-size:11px;padding:5px 12px;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s}.tabbed-panel-tab:hover{color:var(--text)}.tabbed-panel-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tabbed-panel-body{flex:1;position:relative;overflow:auto;min-height:0}.tabbed-panel-child{position:absolute}.sheet-el-wrap select{width:100%;height:100%;background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:2px 6px;font-size:12px;cursor:pointer}.sheet-el-wrap select:disabled{opacity:.7;cursor:default}.sheet-el-wrap.editing select{pointer-events:none}.sheet-el-radio-group{display:flex;flex-direction:column;gap:4px;padding:4px 0;overflow-y:auto}.sheet-el-radio{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);cursor:pointer}.sheet-el-radio input[type=radio]{width:auto;height:auto;accent-color:var(--accent)}.sheet-el-table{width:100%;height:100%;border-collapse:collapse;font-size:12px}.sheet-el-table td{border:1px solid var(--border);padding:4px 8px;text-align:center;vertical-align:middle;min-width:40px}.table-cell-input{width:100%;background:transparent;border:1px solid transparent;border-radius:3px;color:inherit;font:inherit;font-size:inherit;padding:2px 4px;text-align:center}.table-cell-input:hover{border-color:var(--border)}.table-cell-input:focus{border-color:var(--accent);background:var(--bg-input);outline:none}.sheet-el-list{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--border-strong);border-radius:4px;background:#ffffff05}.sheet-el-list-table{width:100%;border-collapse:collapse;font-size:12px}.sheet-el-list-table thead{position:sticky;top:0;z-index:1}.sheet-el-list-table th{background:var(--bg-panel-2);border-bottom:1px solid var(--border-strong);padding:5px 8px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);font-weight:600}.sheet-el-list-table td{border-bottom:1px solid var(--border);padding:3px 8px;vertical-align:middle}.sheet-el-list-table td input{width:100%;font-size:12px;padding:3px 5px;background:transparent;border:1px solid transparent;border-radius:3px;color:var(--text)}.sheet-el-list-table td input:hover{border-color:var(--border)}.sheet-el-list-table td input:focus{border-color:var(--accent);background:var(--bg-input)}.list-actions-col{width:28px;text-align:center}.list-row-remove{background:transparent;border:none;color:var(--text-dim);font-size:12px;padding:2px 4px;cursor:pointer;line-height:1}.list-row-remove:hover{color:#f0b3a8}.list-add-row{font-size:11px;padding:5px 10px;margin:4px;align-self:flex-start;background:var(--bg-panel-2);border:1px dashed var(--border);color:var(--text-dim);border-radius:var(--radius);cursor:pointer}.list-add-row:hover{border-color:var(--accent);color:var(--accent)}.sheet-el-image{display:block;border-radius:4px;border:1px solid var(--border)}.sheet-el-image-placeholder{display:flex;align-items:center;justify-content:center;border:1px dashed var(--border);border-radius:4px;background:#ffffff05;font-size:12px}.sheet-el-progress{position:relative;background:var(--bg-input);border:1px solid var(--border);border-radius:4px;overflow:hidden}.sheet-el-progress-fill{height:100%;background:var(--accent);border-radius:3px;transition:width .3s ease;min-width:0}.sheet-el-progress-label{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text);text-shadow:0 0 4px rgba(0,0,0,.7)}.sheet-el-group{position:relative;border:1px dashed var(--border-strong);border-radius:4px;background:#ffffff05;overflow:hidden}.sheet-group-label{position:absolute;top:-9px;left:8px;background:var(--bg-panel);padding:0 6px;font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em;z-index:1}.sheet-el-group-child,.sheet-el-panel-child{position:absolute}.sheet-el-panel-child.editing{cursor:grab;touch-action:none;border:1px dashed transparent}.sheet-el-panel-child.editing:hover{border-color:var(--border-strong)}.sheet-el-panel-child.selected{border:1px solid var(--accent-strong);box-shadow:0 0 0 1px #e0b95c59}.panel-child-remove{position:absolute;top:-8px;right:-8px;width:16px;height:16px;background:var(--bg-panel-2);border:1px solid var(--border-strong);border-radius:50%;color:var(--text-dim);font-size:9px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:5;padding:0}.panel-child-remove:hover{color:#f0b3a8;border-color:#c0503f}.tabbed-panel-child.editing{cursor:grab;touch-action:none;border:1px dashed transparent}.tabbed-panel-child.editing:hover{border-color:var(--border-strong)}.tabbed-panel-child.selected{border:1px solid var(--accent-strong);box-shadow:0 0 0 1px #e0b95c59}.el-toolbar-multi{position:absolute;display:flex;align-items:center;gap:2px;background:var(--bg-panel-2);border:1px solid var(--accent);border-radius:4px;padding:2px 4px;z-index:7;box-shadow:var(--shadow)}.checkbox-label{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer;color:var(--text-dim)}.checkbox-label input[type=checkbox]{width:auto;height:auto;accent-color:var(--accent)}.tools{width:320px;flex-shrink:0;padding:14px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;position:relative}.tools-resize-handle{position:absolute;left:0;top:0;bottom:0;width:6px;cursor:col-resize;z-index:10;background:transparent;transition:background .15s}.tools-resize-handle:hover{background:var(--accent);opacity:.4}.tools-header h2{margin:0;font-size:16px}.tools-notice{background:#6faa5e1f;border:1px solid var(--ok);color:var(--ok);border-radius:var(--radius);font-size:12px;padding:6px 10px;margin-bottom:6px}.tools-section{border-top:1px solid var(--border);padding:10px 0}.tools-section:first-of-type{border-top:none;padding-top:4px}.tools-section h3{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.tools-hint{font-size:12px;line-height:1.5;margin:6px 0 0}.tools-palette{display:flex;flex-wrap:wrap;gap:6px}.tools-palette button{font-size:12px;padding:4px 10px}.props-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}.tools-library{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.tools-library li{display:flex;align-items:center;justify-content:space-between;gap:6px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:6px 8px}.tools-library-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tools-library .row button{font-size:12px;padding:3px 8px}.tools-files{display:flex;flex-direction:column;gap:6px}.tools-files button{text-align:left}.tools-section .spread select{font-size:12px;padding:3px 6px;max-width:140px}.tabs-bar{display:flex;gap:4px;margin:8px 0 4px;flex-wrap:wrap}.tabs-bar .tab{font-size:11px;padding:3px 10px;border-radius:var(--radius);background:var(--bg-panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer}.tabs-bar .tab.active{background:var(--accent);color:#0f0d0a;border-color:var(--accent)}.tab-el-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.tab-el-list li{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;background:var(--bg-panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:4px 8px}.tab-el-list li button{font-size:11px;padding:2px 6px}.color-row{display:flex;gap:4px;align-items:center}.color-row input[type=color]{width:28px;height:28px;padding:1px;border:1px solid var(--border);border-radius:4px;cursor:pointer;flex-shrink:0}.color-row input[type=text]{flex:1;min-width:0}.table-editor{display:flex;flex-direction:column;gap:3px;margin-top:4px}.table-editor-row{display:flex;gap:3px}.table-editor-cell{display:flex;gap:2px;flex:1;min-width:0}.table-editor-cell input[type=color]{width:22px;height:22px;padding:1px;border:1px solid var(--border);border-radius:3px;cursor:pointer;flex-shrink:0}.table-editor-cell input[type=text]{flex:1;min-width:0;font-size:11px;padding:3px 5px}.list-editor{display:flex;flex-direction:column;gap:4px;margin-top:4px}.list-editor-header{display:flex;gap:4px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);padding:0 2px}.list-editor-col-label{flex:1;min-width:0}.list-editor-actions{width:24px;flex-shrink:0}.list-editor-row{display:flex;gap:4px;align-items:center}.list-editor-row input{flex:1;min-width:0;font-size:11px;padding:3px 5px}.list-editor-row button{font-size:11px;padding:2px 6px;flex-shrink:0}.list-editor>button{font-size:11px;padding:4px 8px;align-self:flex-start}.session-page{height:100%;display:flex;flex-direction:column}.session-toolbar{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;margin:10px 12px 0;border-radius:var(--radius);z-index:10}.session-title{margin:0;font-size:18px;font-variant:small-caps;letter-spacing:.08em;color:var(--accent-strong)}.session-status.active{color:var(--ok);font-size:12px}.session-status.stopped{color:var(--text-dim);font-size:12px}.save-indicator{font-size:12px;color:var(--ok)}.session-body{flex:1;display:flex;min-height:0;gap:10px;padding:10px 12px 12px}.session-error{text-align:center}.session-disconnected{position:fixed;bottom:16px;left:50%;transform:translate(-50%);background:var(--danger);color:#fff;padding:6px 16px;border-radius:var(--radius)}:root{--bg-deep: #12100e;--bg-panel: #1e1a16;--bg-panel-2: #262119;--bg-input: #15120f;--border: #3d342a;--border-strong: #5a4c3a;--text: #e8dcc8;--text-dim: #a2937c;--accent: #c9a44a;--accent-strong: #e0b95c;--danger: #c0503f;--ok: #6faa5e;--shadow: 0 6px 24px rgba(0, 0, 0, .55);--radius: 6px;--font: "Segoe UI", "Trebuchet MS", Verdana, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg-deep);color:var(--text);font-family:var(--font);font-size:14px}h1,h2,h3{font-weight:600;letter-spacing:.02em}a{color:var(--accent)}button,.btn{background:var(--bg-panel-2);color:var(--text);border:1px solid var(--border-strong);border-radius:var(--radius);padding:6px 14px;font-family:inherit;font-size:13px;cursor:pointer;transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#332b20;border-color:var(--accent)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:linear-gradient(180deg,#8a6d2f,#6d5524);border-color:var(--accent);color:#fff8e6}button.primary:hover:not(:disabled){background:linear-gradient(180deg,#9c7c37,#7a5f29)}button.danger{border-color:var(--danger);color:#f0b3a8}button.danger:hover:not(:disabled){background:#3a201c}button.ghost{background:transparent;border-color:transparent;color:var(--text-dim);padding:4px 8px}button.ghost:hover:not(:disabled){color:var(--text);background:#ffffff0f}input,textarea,select{background:var(--bg-input);color:var(--text);border:1px solid var(--border);border-radius:var(--radius);padding:7px 10px;font-family:inherit;font-size:13px;outline:none}input:focus,textarea:focus,select:focus{border-color:var(--accent)}label{display:block;color:var(--text-dim);font-size:12px;margin-bottom:4px;text-transform:uppercase;letter-spacing:.06em}.field{margin-bottom:12px}.panel{background:var(--bg-panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.app-loading{height:100%;display:flex;align-items:center;justify-content:center;color:var(--text-dim)}.error-text{color:var(--danger);font-size:13px;margin:8px 0}.muted{color:var(--text-dim)}.row{display:flex;gap:8px;align-items:center}.spread{display:flex;justify-content:space-between;align-items:center}table.list{width:100%;border-collapse:collapse}table.list th,table.list td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border)}table.list th{color:var(--text-dim);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
