:root{--bg: #f5f6f8;--surface: #ffffff;--surface-soft: #f8fafc;--surface-raised: #ffffff;--text: #1f2937;--muted: #6b7280;--border: #d1d5db;--accent: #2563eb;--active-bg: #eff6ff;--active-text: #1d4ed8;--menu-hover: #eef2ff;--bg-gradient-start: #ffffff;--bg-gradient-end: #eef2f7;--scrollbar-track: rgba(148, 163, 184, .18);--scrollbar-thumb: rgba(100, 116, 139, .52);--scrollbar-thumb-hover: rgba(71, 85, 105, .72)}:root[data-theme=dark]{--bg: #0f172a;--surface: #111827;--surface-soft: #1f2937;--surface-raised: #0b1220;--text: #e5e7eb;--muted: #9ca3af;--border: #374151;--accent: #60a5fa;--active-bg: #1e3a8a;--active-text: #dbeafe;--menu-hover: #312e81;--bg-gradient-start: #0f172a;--bg-gradient-end: #1f2937;--scrollbar-track: rgba(30, 41, 59, .72);--scrollbar-thumb: rgba(100, 116, 139, .62);--scrollbar-thumb-hover: rgba(148, 163, 184, .82)}*{box-sizing:border-box}html,body{min-height:100%;margin:0;background-color:var(--bg-gradient-end);background:radial-gradient(circle at top left,var(--bg-gradient-start),var(--bg-gradient-end) 65%);background-attachment:fixed;background-repeat:no-repeat;color:var(--text);font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}html{scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);scrollbar-width:thin}html::-webkit-scrollbar,body::-webkit-scrollbar,*::-webkit-scrollbar{width:12px;height:12px}html::-webkit-scrollbar-track,body::-webkit-scrollbar-track,*::-webkit-scrollbar-track{background:var(--scrollbar-track)}html::-webkit-scrollbar-thumb,body::-webkit-scrollbar-thumb,*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:999px;border:3px solid transparent;background-clip:padding-box}html::-webkit-scrollbar-thumb:hover,body::-webkit-scrollbar-thumb:hover,*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover);border:3px solid transparent;background-clip:padding-box}html::-webkit-scrollbar-corner,body::-webkit-scrollbar-corner,*::-webkit-scrollbar-corner{background:transparent}#app{display:grid;grid-template-rows:auto 1fr;min-height:100%}.app-alert-root{position:fixed;right:18px;bottom:18px;z-index:1400;display:grid;gap:10px;width:min(360px,calc(100vw - 24px))}.app-modal-root{position:fixed;inset:0;z-index:1300;pointer-events:none}.app-modal-backdrop{position:absolute;inset:0;display:grid;place-items:center;padding:20px;background:#0f172a94;backdrop-filter:blur(10px);pointer-events:auto}.app-modal-backdrop.app-modal-backdrop-drag-hidden{opacity:0;pointer-events:none}.app-drawer-backdrop{position:absolute;inset:0;display:flex;padding:0;background:#0f172a7a;backdrop-filter:blur(8px);pointer-events:auto}.app-drawer-backdrop-right{justify-content:flex-end}.app-drawer-backdrop-left{justify-content:flex-start}.app-drawer{width:min(840px,calc(100vw - 48px));height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;border-left:1px solid var(--border);background:color-mix(in srgb,var(--surface) 94%,var(--surface-raised) 6%);color:var(--text);box-shadow:-24px 0 60px #0f172a47;animation:app-drawer-enter-right .22s cubic-bezier(.22,1,.36,1)}.app-drawer-backdrop-left .app-drawer{border-right:1px solid var(--border);border-left:0;box-shadow:24px 0 60px #0f172a47;animation-name:app-drawer-enter-left}.app-drawer:focus{outline:none}.app-drawer-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--border)}.app-drawer-title{margin:0;color:var(--text);font-size:24px;line-height:1.1}.app-drawer-close{border:1px solid var(--border);border-radius:8px;padding:7px 10px;background:var(--surface-soft);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.app-drawer-close:hover{border-color:var(--accent)}.app-drawer-body{min-height:0;overflow:auto;padding:18px 24px 24px;color:var(--text)}.app-drawer-actions{display:flex;justify-content:flex-end;gap:10px;padding:14px 24px 18px;border-top:1px solid var(--border);background:color-mix(in srgb,var(--surface) 92%,transparent)}.app-modal{width:min(560px,calc(100vw - 32px));display:grid;gap:16px;padding:24px;border:1px solid var(--border);border-radius:18px;background:color-mix(in srgb,var(--surface) 92%,var(--surface-raised) 8%);color:var(--text);box-shadow:0 24px 60px #0f172a47;animation:app-modal-enter .22s cubic-bezier(.22,1,.36,1)}.app-modal:focus{outline:none}.app-modal.app-modal-wide{width:min(1120px,calc(100vw - 32px));max-height:min(92vh,980px)}.app-modal-title{margin:0;font-size:24px;line-height:1.1}.app-modal-body{display:grid;gap:10px;color:var(--muted);font-size:15px;line-height:1.5}.app-modal-body p{margin:0}.app-modal-body.character-sheet-modal-body{color:var(--text);max-height:min(72vh,780px);overflow:auto;padding-right:4px}.app-modal-actions{display:flex;justify-content:flex-end;gap:10px}.app-modal-button{border:1px solid var(--border);border-radius:10px;padding:9px 14px;font:inherit;cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}.app-modal-button-primary{background:var(--accent);border-color:var(--accent);color:#f8fafc}.app-modal-button-primary:hover{filter:brightness(1.05)}.app-modal-button-secondary{background:var(--surface-soft);color:var(--text)}.app-modal-button-secondary:hover{border-color:var(--accent)}.app-modal-text-input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-size:14px;box-sizing:border-box;transition:border-color .12s ease}.app-modal-text-input:focus{outline:none;border-color:var(--accent)}.player-name-modal-body{display:flex;flex-direction:column;gap:10px}.player-name-modal-hint{margin:0;font-size:13px;color:var(--muted);line-height:1.5}@keyframes app-modal-enter{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes app-drawer-enter-right{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes app-drawer-enter-left{0%{opacity:0;transform:translate(-28px)}to{opacity:1;transform:translate(0)}}.character-sheet{display:grid;gap:18px}.character-sheet-banner{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding:18px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 12%,transparent),transparent 58%),color-mix(in srgb,var(--surface-soft) 92%,var(--surface) 8%)}.character-sheet-banner-title{margin:0;font-size:20px;line-height:1.1}.character-sheet-banner-copy{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.character-sheet-derived-pill{display:grid;gap:4px;justify-items:end;min-width:110px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 88%,var(--surface-soft) 12%)}.character-sheet-derived-pill-inline{min-width:148px}.character-sheet-derived-input{width:100%;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);color:var(--text);padding:8px 10px;text-align:right;font:inherit;font-size:20px;font-weight:700}.character-sheet-derived-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-derived-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.character-sheet-derived-pill strong{font-size:22px;line-height:1}.character-sheet-panel{display:grid;gap:14px;padding:18px;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface) 94%,var(--surface-soft) 6%)}.character-sheet-panel-title,.character-sheet-subtitle{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.character-sheet-panel-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.character-sheet-workspace{display:grid;gap:16px;align-items:start}.character-sheet-workspace.is-showing-character-menu .character-sheet-workspace-editor,.character-sheet-workspace.is-showing-character-sheet .character-sheet-browser{display:none}.character-sheet-browser{display:grid;gap:12px;align-content:start;padding:14px;border:1px solid var(--border);border-radius:14px;background:color-mix(in srgb,var(--surface-soft) 86%,var(--surface) 14%)}.character-sheet-browser-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.character-sheet-browser-title{margin:0;font-size:16px}.character-sheet-browser-copy{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.4}.character-sheet-browser-add-button{border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;font-weight:700;padding:7px 14px;cursor:pointer}.character-sheet-browser-add-button:hover,.character-sheet-browser-add-button:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-browser-list{display:grid;gap:8px}.character-sheet-browser-item{display:grid;gap:4px;width:100%;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-align:left;cursor:pointer}.character-sheet-browser-item:hover,.character-sheet-browser-item:focus-visible{border-color:var(--accent);outline:none}.character-sheet-browser-item.is-active{border-color:color-mix(in srgb,var(--accent) 42%,var(--border) 58%);background:color-mix(in srgb,var(--accent) 10%,var(--surface) 90%);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-browser-item-name{font-size:13px;font-weight:700;line-height:1.35}.character-sheet-browser-item-meta{color:var(--muted);font-size:11px;line-height:1.3}.character-sheet-workspace-editor{display:grid;gap:12px;min-width:0}.character-sheet-workspace-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.character-sheet-workspace-back-button{border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;font-weight:700;padding:7px 14px;cursor:pointer}.character-sheet-workspace-back-button:hover,.character-sheet-workspace-back-button:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-workspace-current{min-width:0;color:var(--muted);font-size:12px;font-weight:700;text-align:right}.character-sheet-top-resources{display:grid;grid-template-columns:minmax(260px,1.1fr) minmax(220px,.95fr) minmax(220px,.95fr);gap:12px;align-items:stretch}.character-sheet-identity-grid,.character-sheet-notes-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.character-sheet-notes-grid{grid-template-columns:minmax(0,1fr)}.character-sheet-identity-layout{display:grid;grid-template-columns:156px minmax(0,1fr);gap:12px;align-items:stretch}.character-sheet-identity-image-card{display:grid;gap:7px;align-content:start;justify-items:center;min-width:0}.character-sheet-identity-image-button{position:relative;display:grid;place-items:center;width:min(100%,148px);aspect-ratio:1;padding:0;border:1px dashed color-mix(in srgb,var(--accent) 28%,var(--border) 72%);border-radius:999px;background:color-mix(in srgb,var(--surface-soft) 92%,var(--surface) 8%);overflow:hidden;cursor:grab}.character-sheet-identity-image-button:hover,.character-sheet-identity-image-button:focus-visible,.character-sheet-identity-image-button.is-drag-over{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent)}.character-sheet-identity-image-button:focus-visible{outline:none}.character-sheet-identity-image-button:disabled{cursor:wait}.character-sheet-identity-image-button:active{cursor:grabbing}.character-sheet-identity-image-button.is-loading:after{content:"Uploading...";position:absolute;inset:0;display:grid;place-items:center;background:color-mix(in srgb,var(--surface) 72%,transparent);color:var(--text);font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.character-sheet-identity-image{width:100%;height:100%;object-fit:cover;display:block}.character-sheet-identity-image-frame{display:block;width:100%;height:100%}.character-sheet-identity-image-empty{display:grid;place-items:center;width:100%;height:100%;color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}.character-sheet-identity-image-help{color:var(--muted);font-size:11px;text-align:center}.character-sheet-field{display:grid;gap:7px;min-width:0}.character-sheet-field-stack{align-self:stretch}.character-sheet-notes-field{min-height:0}.character-sheet-field-label{font-size:12px;font-weight:600;color:var(--muted)}.character-sheet-field input,.character-sheet-field select,.character-sheet-field textarea,.character-sheet-number-input{width:100%;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);color:var(--text);padding:10px 12px;font:inherit}.character-sheet input[type=number]{appearance:textfield;-moz-appearance:textfield}.character-sheet input[type=number]::-webkit-outer-spin-button,.character-sheet input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.character-sheet-field input:focus,.character-sheet-field select:focus,.character-sheet-field textarea:focus,.character-sheet-number-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-field textarea{min-height:190px;resize:vertical;line-height:1.45}.character-sheet-note-display{min-height:190px;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);color:var(--text);line-height:1.55;white-space:pre-wrap;overflow-wrap:anywhere}.character-sheet-note-empty{color:var(--muted)}.character-sheet-notes-edit-button{border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font:inherit;font-size:12px;font-weight:700;padding:7px 14px;cursor:pointer}.character-sheet-notes-edit-button:hover,.character-sheet-notes-edit-button:focus-visible{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-abilities-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.character-sheet-ability-card{display:grid;grid-template-rows:auto auto auto 1fr;gap:10px;justify-items:stretch;align-items:start;padding:12px 10px 10px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface-soft) 82%,var(--surface) 18%);min-height:0}.character-sheet-ability-head{display:grid;gap:1px;justify-items:center;text-align:center}.character-sheet-ability-label{font-size:14px;font-weight:800;letter-spacing:.08em}.character-sheet-ability-name{color:var(--muted);font-size:10px;line-height:1.2;text-transform:uppercase;letter-spacing:.08em}.character-sheet-number-input{text-align:center;font-size:20px;font-weight:700}.character-sheet-ability-stat-pair{display:grid;grid-template-columns:auto auto;gap:0;align-items:center;justify-content:center;width:fit-content;margin-inline:auto}.character-sheet-ability-stat-block{display:grid;gap:4px;justify-items:center;position:relative;z-index:2}.character-sheet-ability-modifier{display:inline-flex;align-items:center;justify-content:center;min-width:78px;min-height:78px;padding:8px;border:2px solid color-mix(in srgb,var(--accent) 18%,var(--border) 82%);border-radius:999px;background:color-mix(in srgb,var(--surface) 92%,var(--surface-soft) 8%);color:var(--text);font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.character-sheet-ability-score-wrap{display:grid;gap:4px;justify-items:center;width:82px;margin-left:-16px;align-self:center}.character-sheet-ability-score-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.character-sheet-ability-score-wrap .character-sheet-number-input{width:82px;min-height:46px;padding:8px 10px 8px 4px;border-left-width:0;border-radius:0 12px 12px 0;margin-left:14px}.character-sheet-ability-skills{display:grid;gap:8px;position:relative;padding-top:10px}.character-sheet-ability-skills:before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:color-mix(in srgb,var(--border) 86%,transparent)}.character-sheet-ability-skill-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface) 88%,var(--surface-soft) 12%)}.character-sheet-skill-toggle{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font:inherit;cursor:pointer}.character-sheet-skill-toggle:hover{border-color:var(--accent)}.character-sheet-skill-toggle.is-active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--active-text)}.character-sheet-ability-skill-name{font-size:12px;font-weight:600;line-height:1.3}.character-sheet-skill-modifier{font-weight:700;font-variant-numeric:tabular-nums}.character-sheet-roll-hint{appearance:none;border:0;background:transparent;color:inherit;font:inherit;padding:0;margin:0;cursor:pointer}.character-sheet-roll-hint:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:2px;border-radius:6px}.character-sheet-ability-roll-hint{display:inline-flex;align-items:center;justify-content:center;min-width:100%;min-height:100%}.character-sheet-resources-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.character-sheet-resource-card{display:grid;gap:12px;padding:14px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface-soft) 84%,var(--surface) 16%);min-height:0}.character-sheet-hp-card{grid-column:3;grid-row:1}.character-sheet-proficiency-card{grid-column:3;grid-row:2;align-content:center}.character-sheet-proficiency-card .character-sheet-derived-input{text-align:center}.character-sheet-hit-dice-card{grid-column:2;grid-row:1 / span 2}.character-sheet-core-combat-card{grid-column:1;grid-row:1 / span 2}.character-sheet-hp-grid,.character-sheet-two-column{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.character-sheet-hp-inline{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center}.character-sheet-hp-inline input{width:100%;min-width:0;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);color:var(--text);padding:12px 10px;text-align:center;font:inherit;font-size:20px;font-weight:700}.character-sheet-hp-inline input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-hp-separator{font-size:20px;font-weight:700;color:var(--muted)}.character-sheet-hp-inline-labels{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:4px;color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;text-align:center}.character-sheet-hit-dice-labels{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px}.character-sheet-hit-dice-inline{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px}.character-sheet-hit-dice-roll-row{display:grid;grid-template-columns:64px auto auto;gap:10px;align-items:center;border-top:1px solid color-mix(in srgb,var(--border) 86%,transparent);padding-top:20px;margin-top:10px}.character-sheet-hit-dice-roll-field,.character-sheet-hit-dice-roll-type{display:grid;gap:0}.character-sheet-hit-dice-roll-field input,.character-sheet-hit-dice-roll-type-value{min-height:34px;color:var(--text);text-align:center;font:inherit;font-size:15px;font-weight:700}.character-sheet-hit-dice-roll-field input{width:100%;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);padding:6px 8px}.character-sheet-hit-dice-roll-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-hit-dice-roll-type-value{display:inline-flex;align-items:center;justify-content:center;min-width:38px;color:var(--muted);letter-spacing:.04em}.character-sheet-hit-dice-roll-button{position:relative;min-height:34px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--border) 72%);border-radius:8px;background:color-mix(in srgb,var(--accent) 12%,var(--surface) 88%);color:var(--text);padding:0 10px;font:inherit;font-weight:700;font-size:14px;cursor:pointer}.character-sheet-hit-dice-roll-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:1001}.character-sheet-hit-dice-roll-button:hover{border-color:var(--accent)}.character-sheet-hit-dice-roll-button:hover:after,.character-sheet-hit-dice-roll-button:focus-visible:after{opacity:1}.character-sheet-hit-dice-roll-button:not([data-tooltip]):after,.character-sheet-hit-dice-roll-button[data-tooltip=""]:after{content:none}.character-sheet-hit-dice-roll-button:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:2px}.character-sheet-two-column{grid-template-columns:repeat(2,minmax(0,1fr))}.character-sheet-core-combat-stack{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:10px;align-items:stretch}.character-sheet-hit-dice-card,.character-sheet-core-combat-card{align-content:start}.character-sheet-hit-dice-card .character-sheet-field{margin-top:auto}.character-sheet-core-combat-field{display:grid;gap:7px;justify-items:center;text-align:center}.character-sheet-core-combat-field input{width:100%;border:1px solid var(--border);border-radius:10px;background:color-mix(in srgb,var(--surface-soft) 94%,var(--surface) 6%);color:var(--text);padding:12px 10px;text-align:center;font:inherit;font-size:20px;font-weight:700}.character-sheet-core-combat-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.character-sheet-core-combat-field-ac input{font-size:20px}.character-sheet-core-combat-derived{display:grid;gap:10px;margin-top:auto}.character-sheet-core-combat-card .character-sheet-derived-row{margin-top:0}.character-sheet-derived-row{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:10px;background:color-mix(in srgb,var(--accent) 10%,transparent);font-size:13px}.character-sheet-derived-row strong{font-size:18px}@media (max-width: 980px){.app-modal.app-modal-wide{width:min(920px,calc(100vw - 24px))}.character-sheet-resources-grid,.character-sheet-top-resources,.character-sheet-notes-grid{grid-template-columns:minmax(0,1fr)}.character-sheet-hp-card,.character-sheet-proficiency-card,.character-sheet-hit-dice-card,.character-sheet-core-combat-card{grid-column:auto;grid-row:auto}.character-sheet-identity-layout{grid-template-columns:132px minmax(0,1fr)}.character-sheet-identity-grid,.character-sheet-abilities-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 640px){.app-modal-backdrop{padding:12px}.app-drawer{width:100vw}.app-drawer-header{padding:18px 16px 14px}.app-drawer-body{padding:16px}.app-drawer-actions{padding:12px 16px 16px}.app-drawer-title{font-size:21px}.library-creator-drawer{width:100vw}.library-creator-drawer-shell{padding:16px}.library-creator-grid,.library-creator-abilities{grid-template-columns:repeat(2,minmax(0,1fr))}.library-creator-wide-field{grid-column:span 2}.library-creator-section-header{grid-template-columns:minmax(0,1fr)}.library-creator-image-drop{min-height:150px}.app-modal.app-modal-wide{width:calc(100vw - 16px);padding:18px}.app-modal-body.character-sheet-modal-body{max-height:74vh}.character-sheet-banner{grid-template-columns:minmax(0,1fr);display:grid}.character-sheet-derived-pill{justify-items:start;min-width:0}.character-sheet-panel-header{display:grid}.character-sheet-identity-layout,.character-sheet-identity-grid,.character-sheet-abilities-grid,.character-sheet-ability-card,.character-sheet-ability-stat-pair,.character-sheet-core-combat-stack,.character-sheet-hp-inline,.character-sheet-hp-inline-labels,.character-sheet-hp-grid,.character-sheet-two-column{grid-template-columns:minmax(0,1fr)}.character-sheet-ability-card{min-height:0}.character-sheet-hp-separator{display:none}}.app-alert{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:start;padding:14px 14px 12px;border:1px solid transparent;border-radius:14px;box-shadow:0 16px 40px #0f172a2e;backdrop-filter:blur(12px);animation:app-alert-enter .26s cubic-bezier(.22,1,.36,1)}.app-alert.is-closing{animation:app-alert-exit .22s ease forwards}.app-alert-copy{display:grid;gap:4px}.app-alert-title{font-size:13px;line-height:1.2}.app-alert-message{margin:0;font-size:14px;line-height:1.35}.app-alert-close{width:28px;height:28px;border:none;border-radius:999px;background:transparent;color:inherit;font:inherit;font-size:18px;line-height:1;cursor:pointer;opacity:.72}.app-alert-close:hover{opacity:1}.app-alert-success{background:#dcfce7;border-color:#16a34a;color:#166534}.app-alert-info{background:#1e40aff0;border-color:#93c5fd42;color:#eff6ff}.app-alert-warning{background:#854d0ef0;border-color:#fde0473d;color:#fffbeb}.app-alert-error{background:#991b1bf2;border-color:#fca5a53d;color:#fef2f2}:root[data-theme=dark] .app-alert-success{background:#14532d;border-color:#4ade80;color:#dcfce7;box-shadow:0 16px 40px #03071257}@keyframes app-alert-enter{0%{opacity:0;transform:translate3d(28px,0,0) scale(.98)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes app-alert-exit{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(18px,0,0) scale(.98)}}.top-nav{display:flex;gap:8px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface)}.top-nav-spacer{flex:1 1 auto}.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;margin-right:8px}.brand-logo{width:36px;height:36px;object-fit:contain;flex:0 0 auto}.brand-label{line-height:1}.nav-link{text-decoration:none;color:var(--text);border:1px solid transparent;border-radius:8px;padding:6px 10px}.nav-link-button{background:transparent;font:inherit;cursor:pointer}.nav-link:hover,.nav-link.active{border-color:var(--accent);color:var(--accent)}.page{padding:16px}body.map-fullscreen-mode{overflow:hidden}body.map-fullscreen-mode .top-nav{display:none}body.map-fullscreen-mode #app{grid-template-rows:1fr}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}.hint{color:var(--muted);margin:0}.nav-user-menu{position:relative;flex:0 0 auto}.nav-avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;border:none;background:var(--accent);color:#fff;font-size:14px;font-weight:700;cursor:pointer;transition:filter .15s;flex-shrink:0}.nav-avatar:hover{filter:brightness(1.1)}.nav-user-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:190px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 20px #0000001f;z-index:200;overflow:hidden}:root[data-theme=dark] .nav-user-dropdown{box-shadow:0 4px 20px #0006}.nav-user-dropdown-header{display:flex;flex-direction:column;gap:2px;padding:12px 14px}.nav-user-dropdown-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.nav-user-dropdown-name{font-size:14px;font-weight:600;color:var(--text)}.nav-user-dropdown-divider{margin:0;border:none;border-top:1px solid var(--border)}.nav-user-dropdown-item{display:flex;align-items:center;width:100%;padding:10px 14px;border:none;background:transparent;color:var(--text);font:inherit;font-size:14px;text-align:left;text-decoration:none;cursor:pointer;transition:background .1s,color .1s}.nav-user-dropdown-item:hover{background:var(--surface-soft)}.nav-user-dropdown-item--danger:hover{color:var(--error, #ef4444);background:color-mix(in srgb,var(--error, #ef4444) 8%,transparent)}a.brand{text-decoration:none;color:var(--text)}.auth-card{max-width:520px;margin:24px auto}.dashboard-page{padding:24px}.dashboard-card{max-width:1180px;width:100%;margin:24px auto;padding:0;border:none;background:transparent;box-shadow:none}.dashboard-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:20px}.dashboard-hero h1{margin:0 0 6px;color:var(--text);font-size:26px;line-height:1.15}.dashboard-hero .hint{max-width:620px;margin:0}.dashboard-hero-action{flex:0 0 auto}.dashboard-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,340px);align-items:start;gap:18px}.dashboard-shell-player{grid-template-columns:minmax(0,1fr) minmax(260px,320px)}.dashboard-main,.dashboard-sidebar{display:grid;gap:18px;min-width:0}.dashboard-sidebar{align-content:start}.dashboard-sidebar .email-verify-banner{align-items:flex-start}.dashboard-sidebar .email-verify-actions{margin-left:0}.dashboard-sidebar .subscription-section{margin-top:0}.room-create-section{display:grid}.room-join-form{margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}.room-hub{display:grid;gap:18px;margin:0}.auth-copy{display:grid;gap:8px;margin-bottom:18px}.auth-copy h1{margin:0}.auth-kicker{margin:0;color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.auth-form{display:grid;gap:14px}.auth-field{display:grid;gap:6px;font-size:14px;color:var(--muted)}.auth-field input{width:100%;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft);color:var(--text);padding:10px 12px;font:inherit}.auth-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #2563eb29}.room-system-selector{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.room-system-button{display:grid;gap:4px;width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft);color:var(--text);text-align:left;cursor:pointer;transition:border-color .14s ease,box-shadow .14s ease,background .14s ease,transform .14s ease}.room-system-button:hover{border-color:var(--accent);box-shadow:0 0 0 1px #2563eb2e}.room-system-button:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #2563eb29}.room-system-button.is-selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface-soft));box-shadow:0 0 0 1px #2563eb33}.room-system-button-label{font-size:14px;font-weight:700}.auth-checkbox-field{gap:8px}.auth-checkbox-option{display:inline-flex;align-items:center;gap:10px;color:var(--text)}.auth-checkbox-option input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.auth-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.home-auth-actions{display:grid;gap:16px;margin-top:24px}.auth-submit-button,.auth-submit-link{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 14px;border:1px solid var(--accent);border-radius:10px;background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}.auth-submit-button:hover,.auth-submit-link:hover{filter:brightness(1.03)}.auth-submit-button:disabled{cursor:wait;opacity:.7}.auth-secondary-link{color:var(--accent);text-decoration:none;font-weight:600}.home-auth-button{width:100%;min-height:44px}.home-auth-actions .auth-secondary-link{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft);text-decoration:none}.auth-secondary-link:hover{text-decoration:underline}.auth-tertiary-link{color:var(--text-muted, #888);text-decoration:none;font-size:13px;margin-left:auto}.auth-tertiary-link:hover{text-decoration:underline;color:var(--accent)}.home-auth-actions .auth-secondary-link:hover{border-color:var(--accent);text-decoration:none}.marketing-page{width:100%}.marketing-inner{max-width:1120px;margin:0 auto;padding:0 24px}.marketing-hero{padding:76px 0 54px;background:linear-gradient(160deg,var(--bg-gradient-start) 0%,var(--bg-gradient-end) 100%);border-bottom:1px solid var(--border)}.marketing-hero-grid{display:grid;grid-template-columns:minmax(360px,.72fr) minmax(620px,1.28fr);gap:44px;align-items:center;max-width:1440px}.marketing-hero-copy{min-width:0}.marketing-kicker{display:inline-block;margin:0 0 20px;padding:5px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:13px;font-weight:500;letter-spacing:.02em}.marketing-headline{margin:0 0 20px;max-width:620px;font-size:clamp(2.25rem,5vw,4.4rem);font-weight:800;line-height:1.02;color:var(--text)}.marketing-sub{max-width:610px;margin:0 0 28px;font-size:1.0625rem;line-height:1.65;color:var(--muted)}.marketing-hero-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.marketing-hero-note{margin:14px 0 0;color:var(--muted);font-size:13px}.marketing-cta-btn{display:inline-flex;align-items:center;justify-content:center;padding:0 22px;height:44px;border-radius:10px;border:1px solid var(--accent);background:var(--accent);color:#fff;font:inherit;font-size:.9375rem;font-weight:600;text-decoration:none;cursor:pointer;transition:filter .15s}.marketing-cta-btn:hover{filter:brightness(1.08)}.marketing-ghost-btn{display:inline-flex;align-items:center;justify-content:center;padding:0 22px;height:44px;border-radius:10px;border:1px solid var(--border);background:transparent;color:var(--text);font:inherit;font-size:.9375rem;font-weight:500;text-decoration:none;transition:border-color .15s,background .15s}.marketing-ghost-btn:hover{border-color:var(--accent);background:var(--surface)}.marketing-product-frame{overflow:hidden;border:1px solid var(--border);border-radius:18px;background:var(--surface);box-shadow:0 28px 80px #0f172a2e}.marketing-product-stage{position:relative;overflow:hidden;aspect-ratio:16 / 9;background:var(--surface-soft)}.marketing-product-caption{min-height:52px;margin:0;padding:15px 20px 16px;border-top:1px solid var(--border);color:var(--muted);font-size:.9375rem;font-weight:600;line-height:1.4;text-align:center;opacity:0;transform:translateY(7px);transition:opacity .22s ease,transform .22s ease}.marketing-product-caption.is-visible{opacity:1;transform:translateY(0)}.marketing-product-animation{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;background:var(--surface-soft);opacity:0;pointer-events:none;will-change:clip-path,opacity}.marketing-product-animation.is-active,.marketing-product-animation.is-outgoing{z-index:1;opacity:1}.marketing-product-animation.is-incoming{z-index:2;opacity:1}.marketing-product-stage[data-transition=crossfade] .is-outgoing{animation:marketing-fade-out .7s ease-in-out forwards}.marketing-product-stage[data-transition=crossfade] .is-incoming{animation:marketing-fade-in .7s ease-in-out forwards}.marketing-product-stage[data-transition=wipe-left] .is-incoming{animation:marketing-wipe-left .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=wipe-right] .is-incoming{animation:marketing-wipe-right .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=wipe-up] .is-incoming{animation:marketing-wipe-up .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=wipe-down] .is-incoming{animation:marketing-wipe-down .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=diagonal-left] .is-incoming{animation:marketing-diagonal-left .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=diagonal-right] .is-incoming{animation:marketing-diagonal-right .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=iris] .is-incoming{animation:marketing-iris .7s cubic-bezier(.65,0,.35,1) forwards}.marketing-product-stage[data-transition=diamond] .is-incoming{animation:marketing-diamond .7s cubic-bezier(.65,0,.35,1) forwards}@keyframes marketing-fade-out{to{opacity:0}}@keyframes marketing-fade-in{0%{opacity:0}to{opacity:1}}@keyframes marketing-wipe-left{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}@keyframes marketing-wipe-right{0%{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}@keyframes marketing-wipe-up{0%{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0)}}@keyframes marketing-wipe-down{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}@keyframes marketing-diagonal-left{0%{clip-path:polygon(0 0,0 0,0 0,0 0)}to{clip-path:polygon(0 0,200% 0,100% 100%,0 100%)}}@keyframes marketing-diagonal-right{0%{clip-path:polygon(100% 0,100% 0,100% 0,100% 0)}to{clip-path:polygon(-100% 0,100% 0,100% 100%,0 100%)}}@keyframes marketing-iris{0%{clip-path:circle(0 at 50% 50%)}to{clip-path:circle(150% at 50% 50%)}}@keyframes marketing-diamond{0%{clip-path:polygon(50% 50%,50% 50%,50% 50%,50% 50%)}to{clip-path:polygon(50% -50%,150% 50%,50% 150%,-50% 50%)}}@media (prefers-reduced-motion: reduce){.marketing-product-stage .is-outgoing,.marketing-product-stage .is-incoming{animation-duration:1ms!important}.marketing-product-caption{transition-duration:1ms}}.marketing-product-placeholder,.marketing-media-placeholder{display:grid;place-items:center;min-height:360px;padding:28px;text-align:center;background:linear-gradient(90deg,color-mix(in srgb,var(--border) 45%,transparent) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--border) 45%,transparent) 1px,transparent 1px),var(--surface-soft);background-size:28px 28px;color:var(--muted)}.marketing-product-placeholder strong,.marketing-media-placeholder strong{display:block;margin-top:8px;color:var(--text);font-size:18px}.marketing-product-placeholder p{max-width:360px;margin:8px auto 0;line-height:1.5}.marketing-placeholder-label{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--muted);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.marketing-section-heading{margin:0 0 48px;font-size:1.5rem;font-weight:700;letter-spacing:-.01em;color:var(--text);text-align:center}.marketing-features{padding:72px 0}.marketing-features-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.marketing-feature-card{padding:24px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.marketing-feature-icon{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:12px;background:var(--active-bg);color:var(--accent);margin-bottom:18px}.marketing-feature-card h3{margin:0 0 10px;font-size:1rem;font-weight:700;color:var(--text)}.marketing-feature-card p{margin:0;font-size:.9375rem;line-height:1.6;color:var(--muted)}.marketing-showcase{padding:76px 0;border-top:1px solid var(--border)}.marketing-showcase-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.82fr);gap:44px;align-items:center;padding:42px 0;border-bottom:1px solid var(--border)}.marketing-showcase-row:first-child{padding-top:0}.marketing-showcase-row:last-child{padding-bottom:0;border-bottom:0}.marketing-showcase-row-reverse{grid-template-columns:minmax(320px,.82fr) minmax(0,1fr)}.marketing-showcase-row-reverse .marketing-media-placeholder{order:2}.marketing-showcase-copy h2{margin:0 0 14px;color:var(--text);font-size:clamp(1.5rem,3vw,2.15rem);line-height:1.12}.marketing-showcase-copy p{margin:0 0 18px;color:var(--muted);line-height:1.65}.marketing-media-placeholder{min-height:320px;border:1px solid var(--border);border-radius:14px}.marketing-check-list{display:grid;gap:9px;margin:0;padding:0;list-style:none}.marketing-check-list li{position:relative;padding-left:24px;color:var(--text);font-size:14px;line-height:1.45}.marketing-check-list li:before{content:"";position:absolute;left:0;top:.48em;width:8px;height:8px;border-radius:999px;background:var(--accent)}.marketing-roles{padding:76px 0;background:var(--surface-soft);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.marketing-role-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.marketing-role-card{padding:26px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.marketing-role-card h3{margin:0 0 18px;color:var(--text);font-size:1.25rem}.marketing-how{padding:76px 0;border-bottom:1px solid var(--border)}.marketing-steps{list-style:none;padding:0;display:grid;gap:0;max-width:600px;margin:0 auto}.marketing-step{display:flex;align-items:flex-start;gap:20px;padding:28px 0;border-bottom:1px solid var(--border)}.marketing-step:last-child{border-bottom:none}.marketing-step-num{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--accent);color:#fff;font-size:.875rem;font-weight:700}.marketing-step-body{padding-top:4px}.marketing-step-body strong{display:block;margin-bottom:6px;font-size:1rem;font-weight:700;color:var(--text)}.marketing-step-body p{margin:0;font-size:.9375rem;line-height:1.6;color:var(--muted)}.marketing-faq{padding:76px 0;background:var(--surface-soft);border-bottom:1px solid var(--border)}.marketing-faq-inner{max-width:820px}.marketing-faq-list{display:grid;gap:12px}.marketing-faq-item{border:1px solid var(--border);border-radius:10px;background:var(--surface)}.marketing-faq-item summary{padding:18px 48px 18px 20px;color:var(--text);font-size:.9375rem;font-weight:700;line-height:1.45;cursor:pointer}.marketing-faq-item p{margin:0;padding:0 20px 18px;color:var(--muted);font-size:.9375rem;line-height:1.65}.marketing-faq-item p+p{padding-top:0}.marketing-faq-item a{color:var(--accent)}.marketing-feature-list-section{padding:76px 0}.marketing-feature-list{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.marketing-feature-list span{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text);font-size:13px;font-weight:600}.marketing-bottom-cta{padding:76px 0;text-align:center;background:var(--surface-soft);border-top:1px solid var(--border)}.marketing-bottom-cta-inner{display:flex;flex-direction:column;align-items:center;gap:12px}.marketing-bottom-cta h2{margin:0;font-size:1.625rem;font-weight:800;letter-spacing:-.01em;color:var(--text)}.marketing-bottom-cta p{margin:0 0 8px;font-size:1rem;color:var(--muted)}.marketing-footer{padding:24px 0;border-top:1px solid var(--border);background:var(--surface)}.marketing-footer-inner{display:flex;align-items:center;justify-content:space-between;gap:20px}.marketing-footer p{margin:0;color:var(--muted);font-size:13px}.marketing-footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 20px}.marketing-footer-links a{color:var(--muted);font-size:13px;text-decoration:none}.marketing-footer-links a:hover{color:var(--accent);text-decoration:underline}@media (max-width: 1180px){.marketing-hero-grid{grid-template-columns:1fr;max-width:1040px}.marketing-hero-copy{max-width:760px}}@media (max-width: 640px){.marketing-hero{padding:56px 0 44px}.marketing-hero-grid,.marketing-role-grid{grid-template-columns:1fr}.marketing-roles,.marketing-how,.marketing-faq,.marketing-bottom-cta{padding:56px 0}.marketing-footer-inner{flex-direction:column;align-items:flex-start}.marketing-footer-links{justify-content:flex-start}.marketing-section-heading{margin-bottom:32px}}.room-hub-header{margin-bottom:18px;display:grid;gap:12px}.dashboard-section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.dashboard-section-header h2,.room-form h2,.upload-usage-header h2{margin:0}.dashboard-section-kicker{margin:0 0 4px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dashboard-count-pill{display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}.room-panel{padding:16px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.dashboard-primary-panel{min-height:260px}.room-list{display:grid;gap:10px}.room-card{display:grid;gap:10px;width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft);color:var(--text);text-align:left;cursor:pointer}.room-card-header{display:flex;align-items:start;justify-content:space-between;gap:16px;min-width:0}.room-card:hover,.room-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 1px #2563eb2e}.room-card-name{font-weight:700;min-width:0}.room-edit-label{display:block}.room-card-name-input{width:100%;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 10px;font:inherit;font-weight:700}.room-card-name-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #2563eb1f}.room-card-title-block{display:grid;gap:2px;min-width:0}.room-card-meta{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.room-card-meta .room-card-subtitle+.room-card-subtitle:before{content:"";display:inline-block;width:4px;height:4px;margin-right:8px;border-radius:999px;background:color-mix(in srgb,var(--muted) 72%,transparent 28%);vertical-align:middle}.room-card-subtitle{color:var(--muted);font-size:12px}.room-card-player-name{color:var(--accent);font-style:italic}.room-card-warning{margin:6px 0 0;padding:8px 10px;border:1px solid #dc2626;border-radius:8px;background:#fef2f2;box-shadow:inset 0 0 0 1px #dc26262e;color:#7f1d1d;font-size:12px;line-height:1.4}:root[data-theme=dark] .room-card-warning{background:#7f1d1d;border-color:#f87171;box-shadow:inset 0 0 0 1px #f8717159;color:#fee2e2}.room-card-link-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.room-card-url{width:100%;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--muted);padding:8px 10px;font:inherit;font-size:12px}.room-card-url:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #2563eb1f}.room-row-actions{display:inline-flex;gap:8px;align-items:center;flex:0 0 auto;flex-wrap:wrap;justify-content:flex-end}.room-row-action{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:0 14px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;appearance:none}.room-row-action:hover{filter:brightness(1.03);text-decoration:none}.room-row-action-icon{font-size:14px;line-height:1}.room-row-delete{border-color:#dc2626;background:#dc2626}.room-row-secondary{border-color:var(--border);background:var(--surface);color:var(--text)}.room-row-secondary:hover{border-color:var(--accent);color:var(--accent)}.room-copy-icon-button{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-color:var(--border);border-style:solid;border-width:1px;border-radius:8px;background:var(--surface);color:var(--text);cursor:pointer;font:inherit}.room-copy-icon-button:hover{border-color:var(--accent);color:var(--accent)}.room-form{display:grid;gap:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.room-join-field{gap:8px}.room-join-inline{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}.room-join-button{min-width:108px}.room-summary{margin-top:0}.upload-usage-card{display:grid;gap:10px}.upload-usage-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.upload-usage-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.upload-usage-percent{font-size:20px;font-weight:700;color:var(--accent)}.upload-usage-bar{position:relative;height:12px;overflow:hidden;border-radius:999px;background:var(--surface-soft)}.upload-usage-bar-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#2563eb,#38bdf8)}.upload-usage-copy{margin:0}.upload-manage-button{min-height:32px;padding:0 12px}.media-manager{display:grid;gap:10px;padding-top:8px;border-top:1px solid var(--border)}.media-manager-drawer-shell{padding:18px 24px 24px}.media-manager-drawer-content{min-width:0;border-top:0;padding-top:0}.media-manager-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.media-manager-toolbar{display:flex;gap:8px;flex-wrap:wrap}.media-search-input{flex:1 1 160px;min-width:0;height:34px;padding:0 10px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:inherit;font-size:14px}.media-search-input:focus{outline:2px solid var(--accent);outline-offset:1px}.media-search-input::-webkit-search-cancel-button{cursor:pointer}.media-sort-select{height:34px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:inherit;font-size:14px;cursor:pointer}.media-room-badge{display:inline-block;padding:1px 6px;border-radius:4px;background:var(--surface-soft);border:1px solid var(--border);font-size:11px;font-weight:500;vertical-align:middle}.media-room-link{color:inherit;text-decoration:none;transition:border-color .15s ease,background-color .15s ease,color .15s ease}.media-room-link:hover{border-color:var(--accent);background:var(--active-bg);color:var(--active-text)}.media-room-link:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.media-list{display:grid;gap:8px}.media-list-item{display:flex;align-items:center;justify-content:space-between;gap:12px;position:relative;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.media-manager-drawer-content .media-list-item{align-items:flex-start}.media-list-thumb{width:48px;height:48px;flex:0 0 48px;border:1px solid var(--border);border-radius:6px;background:var(--surface);object-fit:cover}.media-list-thumb-placeholder{display:block;background:linear-gradient(135deg,var(--surface),var(--surface-raised))}.media-list-copy{display:grid;gap:4px;min-width:0;flex:1 1 0;overflow:hidden}.media-list-name{font-weight:600;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.media-list-actions{display:inline-flex;align-items:center;flex-shrink:0;gap:8px;flex-wrap:wrap;justify-content:flex-end}.media-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.media-pagination-range{margin:0}.media-pagination-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.media-pagination-page{min-width:92px;text-align:center;color:var(--muted);font-size:13px;font-weight:600}.media-view-wrap{position:relative;display:inline-flex}.media-view-button{min-height:32px}.media-preview-popover{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);z-index:1200;max-width:calc(100vw - 48px);padding:10px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:0 28px 90px #0f172a57;display:none}.media-preview-link{display:inline-block}.media-preview-image{display:block;width:auto;height:auto;max-width:min(720px,calc(100vw - 68px));max-height:min(72vh,620px);object-fit:contain;border-radius:8px;background:var(--surface-soft);cursor:zoom-in}.media-view-wrap:hover .media-preview-popover{display:block}@media (max-width: 820px){.app-alert-root{right:12px;bottom:12px;width:min(360px,calc(100vw - 24px))}.dashboard-card{margin:16px auto}.dashboard-page{padding:16px}.dashboard-hero{align-items:stretch;flex-direction:column}.dashboard-hero-action{width:100%}.dashboard-shell,.dashboard-shell-player,.room-join-inline{grid-template-columns:1fr}.room-join-button{width:100%}.room-card{align-items:stretch}.room-card-header{flex-direction:column}.room-row-actions{width:100%;flex:none}.room-card-link-row{grid-template-columns:minmax(0,1fr) 36px}.room-row-action{width:100%}}.editor-layout{height:calc(100vh - 92px)}.page.is-map-fullscreen{padding:0}.page.is-map-fullscreen .editor-layout{height:100vh}.editor-content{display:grid;grid-template-columns:260px 1fr 320px;gap:12px;min-height:0;height:100%}.editor-center-column{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:12px;min-height:0}.page.is-map-fullscreen .editor-content{grid-template-columns:minmax(0,1fr);gap:0}.page.is-map-fullscreen .editor-side-panel,.page.is-map-fullscreen .editor-chat-panel{display:none}.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel{display:grid;position:fixed;min-height:0;z-index:35;box-shadow:0 18px 40px #0f172a38;background:color-mix(in srgb,var(--surface) 94%,transparent);backdrop-filter:blur(10px);overflow:visible}.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel{left:12px;top:12px;width:min(312px,calc(100vw - 24px));height:calc(100vh - 104px)}.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel{left:auto;right:12px;top:12px;width:min(312px,calc(100vw - 24px));height:calc(100vh - 104px)}.page.is-map-fullscreen .editor-center-column{grid-template-rows:minmax(0,1fr);gap:0}.editor-toolbar-shell{display:block}.editor-toolbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--muted);font-size:14px}.editor-toolbar-shell>.fullscreen-panel-toggle{display:none!important}.page.is-map-fullscreen .editor-toolbar-shell{position:fixed;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom,0px) + 12px);margin-inline:auto;z-index:40;width:min(calc(100vw - 24px),1220px);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px}.page.is-map-fullscreen .editor-toolbar{position:static;width:100%;justify-content:center;box-shadow:0 18px 40px #0f172a3d;background:color-mix(in srgb,var(--surface) 92%,transparent)}.page.is-map-fullscreen .editor-toolbar.gm-toolbar{flex-wrap:nowrap}.page.is-map-fullscreen .editor-toolbar-shell>.fullscreen-panel-toggle{display:inline-flex!important;align-items:center;justify-content:center;align-self:center;height:40px;box-shadow:0 14px 28px #0f172a2e;background:color-mix(in srgb,var(--surface) 94%,transparent)}.page.is-map-fullscreen .fullscreen-panel-toggle-left{border-radius:16px 0 0 16px;border-right:0;transform:translate(12px);padding-left:15px}.page.is-map-fullscreen .fullscreen-panel-toggle-right{border-radius:0 16px 16px 0;border-left:0;transform:translate(-12px);padding-right:15px}.page.is-map-fullscreen .fullscreen-panel-toggle .toolbar-button-label,.page.is-map-fullscreen .fullscreen-panel-toggle .shortcut-key{display:none}.page.is-map-fullscreen .fullscreen-panel-toggle span[aria-hidden=true]{font-size:20px;line-height:1}.page.is-map-fullscreen .fullscreen-panel-toggle.active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.tool-group{display:inline-flex;gap:6px;margin-right:6px}.toolbar-spacer{flex:1 1 auto}.toolbar-overflow-control{order:100}.background-control,.toolbar-overflow-control{position:relative}.toolbar-overflow-menu{position:absolute;right:0;bottom:calc(100% + 8px);min-width:210px;width:min(240px,calc(100vw - 16px));display:grid;gap:8px;padding:10px;z-index:1000}.toolbar-overflow-item{position:relative}.toolbar-overflow-item>.background-button{display:inline-flex;width:100%;justify-content:flex-start;border:1px solid var(--border);background:var(--surface-soft);text-align:left;padding:5px 10px}.toolbar-overflow-menu .background-button:hover{background:var(--surface-soft)}.toolbar-overflow-menu .scene-toggle-button{padding-right:10px}.grid-toolbar-button{min-width:58px;justify-content:center;padding-left:8px;padding-right:42px}.grid-toolbar-button .toolbar-button-icon{font-size:18px;line-height:1}.toolbar-overflow-button{justify-content:center;min-width:42px;padding-left:10px;padding-right:10px}.toolbar-overflow-icon{font-size:18px;line-height:1}.token-color-control,.fog-control,.pointer-control,.blindfold-control{position:relative}.blindfold-button-row{display:flex;align-items:stretch;gap:4px}.blindfold-menu-button{justify-content:center;min-width:34px;padding:5px 8px}.grid-control{position:relative}.grid-enabled-checkbox{position:absolute;top:50%;right:39px;transform:translateY(-50%);margin:0;width:15px;height:14px;cursor:pointer;accent-color:var(--accent)}.scene-toggle-button{padding-right:10px}.scene-toggle-shortcut{margin-left:auto}.sync-view-button{justify-content:center;min-width:58px;padding-left:8px;padding-right:8px}.sync-view-icon{font-size:18px;line-height:1}.background-button{position:relative;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface-soft);color:var(--text);border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer}.background-button:hover{border-color:var(--accent)}.background-button.active{border-color:var(--accent);background:var(--active-bg);color:var(--active-text)}.background-button.active .shortcut-key{border-color:color-mix(in srgb,var(--accent) 35%,var(--border) 65%);background:color-mix(in srgb,var(--accent) 10%,transparent);color:inherit}.background-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:1001}.background-button:hover:after,.background-button:focus-visible:after{opacity:1}.background-button:not([data-tooltip]):after,.background-button[data-tooltip=""]:after{content:none}.background-swatch{width:14px;height:14px;border:1px solid #9ca3af;border-radius:3px;background:#fff}.help-control{position:relative}.help-button{border:1px solid var(--border);background:var(--surface-soft);color:var(--text);border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer}.help-button:hover{border-color:var(--accent)}.tool-button{position:relative;display:inline-flex;align-items:center;gap:8px;border:1px solid var(--border);background:var(--surface-soft);color:var(--text);border-radius:8px;padding:5px 10px;font-size:13px;cursor:pointer}.tool-button:hover{border-color:var(--accent)}.tool-button:disabled{opacity:.42;cursor:not-allowed;border-color:var(--border)}.tool-button:disabled:hover{border-color:var(--border)}.tool-button.active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.tool-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:1001}.tool-button:hover:after,.tool-button:focus-visible:after{opacity:1}.tool-button:not([data-tooltip]):after,.tool-button[data-tooltip=""]:after{content:none}.toolbar-button-icon{display:inline-flex;align-items:center;justify-content:center;font-size:18px;line-height:1}.toolbar-button-label{display:inline-flex;align-items:center;gap:6px}.editor-toolbar.gm-toolbar .tool-button{justify-content:center;min-width:58px;padding-left:8px;padding-right:8px}.editor-toolbar.gm-toolbar .tool-button .toolbar-button-label,.editor-toolbar.gm-toolbar .scene-toggle-button .toolbar-button-label{display:none}.shortcut-key,kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.6em;min-height:1.6em;padding:0 .45em;border:1px solid color-mix(in srgb,var(--border) 88%,#ffffff 12%);border-bottom-width:2px;border-radius:6px;background:color-mix(in srgb,var(--surface-raised) 92%,#ffffff 8%);color:var(--text);box-shadow:inset 0 -1px #ffffff4d;font-size:11px;font-weight:700;line-height:1;white-space:nowrap}.tool-button.active .shortcut-key{border-color:color-mix(in srgb,var(--accent) 55%,var(--border) 45%);background:color-mix(in srgb,var(--surface) 70%,#ffffff 30%)}.fog-menu{position:absolute;right:0;bottom:calc(100% + 8px);width:265px;display:grid;gap:8px;padding:8px;z-index:1000}.fog-tool-list{display:grid;grid-template-columns:repeat(4,minmax(0,max-content));justify-content:start;gap:6px}.fog-tool-option{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);padding:6px 7px;font-size:12px;text-align:left;position:relative}.fog-tool-option:hover{border-color:var(--accent)}.fog-tool-option:disabled{opacity:.5;cursor:default}.fog-tool-option:disabled:hover{border-color:var(--border)}.fog-tool-option.is-active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.fog-tool-option:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;transition:opacity 0ms;z-index:1001}.fog-tool-option:hover:after,.fog-tool-option:focus-visible:after{opacity:1}.fog-tool-option:not([data-tooltip]):after,.fog-tool-option[data-tooltip=""]:after{content:none}.fog-tool-option-icon{font-weight:600;font-size:14px;line-height:1}.fog-mode-toggle{display:grid;grid-template-columns:1fr 1fr;justify-content:start;gap:6px}.fog-mode-toggle-button{display:inline-flex;align-items:center;justify-content:space-between;gap:6px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);padding:6px 8px;font-size:12px;cursor:pointer}.fog-mode-toggle-button:hover{border-color:var(--accent)}.fog-mode-toggle-button.is-active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.fog-menu-hint{margin:0;font-size:12px;color:var(--muted-text)}.theme-switch{display:inline-flex;align-items:center;flex:0 0 auto;gap:2px;padding:3px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft)}.theme-switch-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:26px;padding:0;border:none;border-radius:7px;background:transparent;color:var(--muted);cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.theme-switch-btn:hover{color:var(--text)}.theme-switch-btn.is-active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}:root[data-theme=dark] .theme-switch-btn.is-active{box-shadow:0 1px 3px #0006}.nav-sign-in{display:inline-flex;align-items:center;padding:0 10px;height:34px;color:var(--text);text-decoration:none;font-size:14px;border-radius:8px;border:1px solid transparent}.nav-sign-in:hover{color:var(--accent);border-color:var(--accent)}.nav-cta{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 14px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}.nav-cta:hover{filter:brightness(1.08)}.editor-canvas-wrap{position:relative;border:1px solid var(--border);border-radius:10px;background:var(--surface);overflow:hidden;min-height:420px;min-width:0}.page.is-map-fullscreen .editor-canvas-wrap{min-height:100vh;height:100vh;border:0;border-radius:0}.realtime-connection-indicator{position:absolute;top:12px;right:12px;z-index:13;display:inline-flex;align-items:center;gap:8px;max-width:min(320px,calc(100% - 24px));padding:9px 12px;border:1px solid rgba(180,83,9,.45);border-radius:999px;background:#78350feb;color:#fff7ed;box-shadow:0 10px 28px #0f172a3d;font-size:12px;font-weight:700;line-height:1.2;pointer-events:none}.realtime-connection-indicator[hidden]{display:none}.realtime-connection-indicator.is-error{border-color:#b91c1c73;background:#7f1d1df0;color:#fff5f5}.realtime-connection-indicator-dot{width:10px;height:10px;flex:0 0 auto;border-radius:999px;background:currentColor;box-shadow:0 0 0 4px #ffffff1f}.realtime-connection-indicator-text{min-width:0}.blindfold-overlay{position:absolute;inset:0;z-index:12;display:none;place-items:center;background:#111827;color:#e5e7eb;opacity:1}.blindfold-overlay.is-visible{display:grid}.blindfold-overlay.is-fading-out{display:grid;pointer-events:none;animation:blindfold-overlay-fade-out 3s ease forwards}.token-damage-request-layer,.token-spawn-request-layer{position:absolute;inset:0;z-index:11;pointer-events:none}.token-damage-request-card,.token-spawn-request-card{position:absolute;min-width:132px;max-width:180px;padding:8px 10px;border-radius:12px;box-shadow:0 14px 30px #0f172a47;transform:translate(-50%,-100%)}.token-damage-request-card{border:1px solid rgba(127,29,29,.5);background:#7f1d1deb;color:#fff7f7}.token-spawn-request-card{z-index:2;border:1px solid rgba(30,64,175,.42);background:#1e40afeb;color:#eff6ff}.token-damage-request-card.is-healing{border-color:#05966973;background:#065f46eb;color:#ecfdf5}.token-damage-request-title,.token-spawn-request-title{display:flex;align-items:baseline;gap:6px;font-size:13px;font-weight:700}.token-damage-request-amount{font-size:18px;line-height:1}.token-damage-request-subtitle,.token-damage-request-meta,.token-spawn-request-subtitle,.token-spawn-request-meta{margin-top:4px;font-size:11px;line-height:1.25;color:#ffffffd1}.token-spawn-request-subtitle{font-weight:700}.token-damage-request-actions,.token-spawn-request-actions{display:flex;gap:6px;margin-top:8px;pointer-events:auto}.token-damage-request-button,.token-spawn-request-button{flex:1 1 0;border:1px solid rgba(255,255,255,.2);border-radius:8px;padding:5px 8px;background:#ffffff1f;color:inherit;font-size:11px;font-weight:700;cursor:pointer}.token-damage-request-button:hover:not(:disabled),.token-spawn-request-button:hover:not(:disabled){background:#fff3}.token-damage-request-button:disabled,.token-spawn-request-button:disabled{opacity:.55;cursor:wait}.token-damage-request-button.apply,.token-spawn-request-button.apply{background:#ffffff2e}.token-spawn-request-preview.library-drag-ghost{position:absolute;z-index:1}.token-spawn-request-preview.library-drag-ghost .library-drag-ghost-token{opacity:.88}.token-spawn-request-preview.library-drag-ghost .library-drag-ghost-label{background:#1e40afe0}@keyframes blindfold-overlay-fade-out{0%{opacity:1}to{opacity:0}}.blindfold-overlay-copy{display:grid;gap:12px;justify-items:center;text-align:center}.blindfold-overlay-icon{font-size:clamp(52px,9vw,88px);line-height:1}.blindfold-overlay-text{margin:0;font-size:clamp(18px,2vw,24px);font-weight:700;letter-spacing:.01em}.blindfold-status-card{position:absolute;top:12px;left:12px;z-index:13;display:grid;justify-items:center;gap:8px;width:min(250px,calc(100% - 24px));padding:14px 16px 12px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--surface) 88%,var(--surface-raised) 12%);color:var(--text);box-shadow:0 10px 30px #0f172a38;font:inherit;cursor:pointer;text-align:center}.blindfold-status-card[hidden]{display:none}.blindfold-status-card-icon{font-size:34px;line-height:1}.blindfold-status-card:hover{border-color:var(--accent)}.blindfold-status-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.blindfold-status-card-copy{display:grid;gap:4px;justify-items:center}.blindfold-status-card-title{font-size:14px;line-height:1.2;font-weight:700}.blindfold-status-card-subtitle{font-size:11px;line-height:1.25;color:var(--muted)}.blindfold-menu{position:absolute;right:0;bottom:calc(100% + 8px);min-width:210px;width:min(260px,calc(100vw - 16px));padding:8px;display:grid;gap:6px;z-index:1000}.blindfold-menu-list{display:grid;gap:4px;max-height:min(240px,calc(100vh - 160px));overflow-y:auto;overflow-x:hidden}.blindfold-menu-option{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:8px;color:var(--text);font-size:13px;cursor:pointer}.blindfold-menu-option:hover{background:var(--menu-hover)}.blindfold-menu-option input{margin:0;width:14px;height:14px;accent-color:var(--accent)}.blindfold-menu-option input:disabled+span{opacity:.68}.blindfold-menu-empty{padding:6px 8px;color:var(--muted);font-size:12px}.damage-drag-ghost{position:fixed;z-index:60;pointer-events:none;display:grid;gap:2px;min-width:64px;padding:7px 10px;border-radius:10px;border:1px solid rgba(127,29,29,.92);background:#7f1d1de6;color:#fff;box-shadow:0 10px 26px #00000047;transform:translateZ(0);user-select:none}.damage-drag-ghost[hidden]{display:none!important}.library-drag-ghost{position:fixed;z-index:61;pointer-events:none;width:var(--library-drag-ghost-token-size, 40px);height:var(--library-drag-ghost-token-size, 40px);overflow:visible;transform:translate3d(-50%,-50%,0);user-select:none}.library-drag-ghost[hidden]{display:none!important}.library-drag-ghost-token{width:100%;height:100%;border-radius:50%;overflow:hidden;border:2px solid rgba(255,255,255,.9);background:var(--surface);box-shadow:0 10px 22px #00000047}.library-drag-ghost-token.is-hidden{opacity:.6}.library-drag-ghost-token.placeholder{display:grid;place-items:center;background:#e5e7eb;color:#374151;font-size:clamp(14px,calc(var(--library-drag-ghost-token-size, 40px) * .38),28px);font-weight:700}.library-drag-ghost-token-image{width:100%;height:100%;display:block;object-fit:cover;transform-origin:center}.library-drag-ghost-label{position:absolute;top:calc(100% + 8px);left:50%;transform:translate(-50%);max-width:160px;padding:4px 8px;border-radius:999px;background:#0f172ae0;color:#fff;font-size:11px;font-weight:700;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 8px 20px #0003}.damage-drag-ghost.is-healing{border-color:#057400eb;background:#057400e0}.damage-drag-ghost.is-initiative{border-color:#2563ebf0;background:#2563ebe6}.damage-drag-ghost-value{font-size:18px;font-weight:800;line-height:1}.damage-drag-ghost-label{font-size:11px;font-weight:700;line-height:1.1;opacity:.92;text-transform:uppercase;letter-spacing:.04em}.editor-side-panel{position:relative;z-index:20;display:grid;grid-template-rows:auto 1fr auto;border:1px solid var(--border);border-radius:10px;background:var(--surface);min-height:420px}.editor-chat-panel{display:grid;grid-template-rows:auto 1fr auto;border:1px solid var(--border);border-radius:10px;background:var(--surface);min-height:420px;min-width:0;overflow-x:hidden;overflow-y:hidden}.fullscreen-panel-drag-handle,.fullscreen-panel-resize-handle{display:none}.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel .fullscreen-panel-drag-handle,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel .fullscreen-panel-drag-handle{position:absolute;top:-10px;left:50%;transform:translate(-50%);z-index:2;display:inline-flex;align-items:center;justify-content:center;width:44px;height:20px;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface) 96%,transparent);color:var(--muted);cursor:move;box-shadow:0 8px 16px #0f172a29;opacity:0;pointer-events:none;transition:opacity .14s ease,color .14s ease}.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel .fullscreen-panel-resize-handle,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel .fullscreen-panel-resize-handle{position:absolute;right:6px;bottom:6px;z-index:2;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:0;border-radius:8px;background:color-mix(in srgb,var(--surface) 92%,transparent);color:var(--muted);cursor:nwse-resize;opacity:0;pointer-events:none;transition:opacity .14s ease,color .14s ease}.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel:hover .fullscreen-panel-drag-handle,.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel:hover .fullscreen-panel-resize-handle,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel:hover .fullscreen-panel-drag-handle,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel:hover .fullscreen-panel-resize-handle,.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel .fullscreen-panel-drag-handle:focus-visible,.page.is-map-fullscreen.is-fullscreen-left-panel-open .editor-side-panel .fullscreen-panel-resize-handle:focus-visible,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel .fullscreen-panel-drag-handle:focus-visible,.page.is-map-fullscreen.is-fullscreen-right-panel-open .editor-chat-panel .fullscreen-panel-resize-handle:focus-visible{opacity:1;pointer-events:auto}.fullscreen-panel-drag-handle:hover,.fullscreen-panel-drag-handle:focus-visible,.fullscreen-panel-resize-handle:hover,.fullscreen-panel-resize-handle:focus-visible{color:var(--accent);outline:none}.chat-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px;border-bottom:1px solid var(--border);font-size:13px;font-weight:600}.chat-header-actions{display:inline-flex;align-items:center;gap:8px}.chat-clear-button{border:1px solid var(--border);background:var(--surface-raised);color:var(--muted);border-radius:7px;padding:4px 8px;font-size:11px;cursor:pointer}.chat-clear-button:hover{border-color:var(--accent);color:var(--text)}.chat-presence-indicator{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:4px 9px;border:1px solid var(--border);border-radius:999px;background:color-mix(in srgb,var(--surface-raised) 80%,transparent);color:var(--text);font-size:11px;font-weight:700;line-height:1;cursor:pointer}.chat-presence-dot{width:9px;height:9px;border-radius:999px;background:#38d67a;box-shadow:0 0 0 4px color-mix(in srgb,#38d67a 14%,transparent);flex:0 0 auto}.chat-presence-count{min-width:1ch;text-align:left}.chat-presence-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:25;min-width:180px;max-width:240px;padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);box-shadow:0 14px 28px #0f172a2e;display:none}.chat-presence-indicator:hover .chat-presence-popover,.chat-presence-indicator:focus-visible .chat-presence-popover,.chat-presence-indicator:focus-within .chat-presence-popover{display:block}.chat-presence-popover-title{margin:0 0 8px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.chat-presence-popover-list{display:grid;gap:6px}.chat-presence-popover-item,.chat-presence-popover-empty{font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;display:flex;align-items:center;gap:6px}.chat-presence-popover-empty{color:var(--muted);font-weight:500}.chat-presence-rename-btn{flex-shrink:0;background:none;border:none;padding:0 2px;cursor:pointer;font-size:13px;color:var(--muted);line-height:1;opacity:.6;transition:opacity .12s ease,color .12s ease}.chat-presence-rename-btn:hover{opacity:1;color:var(--accent)}.chat-body{min-height:0;overflow-y:auto;overflow-x:hidden;padding:10px;display:grid;align-content:start;gap:10px}.chat-message{border:1px solid var(--border);border-radius:8px;padding:8px;background:var(--surface-soft);min-width:0;overflow-wrap:anywhere}.chat-message.is-removing{pointer-events:none;animation:chat-message-remove .22s cubic-bezier(.4,0,1,1) forwards}.chat-system-message-wrap{display:flex;align-items:center;justify-content:center;gap:8px}.chat-system-message{margin:0;padding:2px 4px;text-align:center;font-size:11px;color:var(--muted);opacity:.86;cursor:default}.chat-message p{margin:4px 0 0;font-size:13px}.chat-roll-row{margin-top:6px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chat-roll-terms{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.chat-roll-op{color:var(--muted);font-size:12px;font-weight:600}.chat-roll-equals{font-size:13px}.chat-roll-cell{border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);min-width:48px;padding:5px 7px;display:grid;justify-items:center;gap:2px}.chat-roll-cell[data-damage-value]{cursor:pointer;-webkit-user-drag:none;user-drag:none}.chat-roll-total-cell{background:var(--active-bg);border-color:#93c5fd}.chat-roll-cell-nat20{background:#ecfdf3;border-color:#16a34a;box-shadow:inset 0 0 0 1px #16a34a33}.chat-roll-cell-nat1{background:#fef2f2;border-color:#dc2626;box-shadow:inset 0 0 0 1px #dc26262e}:root[data-theme=dark] .chat-roll-cell-nat20{background:#14532d;border-color:#4ade80;box-shadow:inset 0 0 0 1px #4ade8059}:root[data-theme=dark] .chat-roll-cell-nat20 .chat-roll-label{color:#86efac}:root[data-theme=dark] .chat-roll-cell-nat20 .chat-roll-value{color:#dcfce7}:root[data-theme=dark] .chat-roll-cell-nat1{background:#7f1d1d;border-color:#f87171;box-shadow:inset 0 0 0 1px #f8717159}:root[data-theme=dark] .chat-roll-cell-nat1 .chat-roll-label{color:#fca5a5}:root[data-theme=dark] .chat-roll-cell-nat1 .chat-roll-value{color:#fee2e2}.chat-roll-label{font-size:10px;color:var(--muted);line-height:1;text-transform:uppercase}.chat-roll-values{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.chat-roll-value-sep{color:var(--muted);font-size:12px}.chat-roll-value{font-size:14px;font-weight:600;color:var(--text)}.chat-roll-value.pending{color:#9ca3af}.chat-roll-anim-value.pending{letter-spacing:.02em}.chat-roll-value.discarded{text-decoration:line-through;text-decoration-thickness:2px;color:#6b7280}.chat-roll-note{margin:6px 0 0;color:var(--muted);font-size:12px}.chat-message-meta{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.chat-message-meta-actions{display:inline-flex;align-items:center;gap:6px}.chat-author{font-size:11px;font-weight:600;color:var(--muted)}.chat-time{font-size:10px;color:var(--muted);white-space:nowrap}.chat-message-add-roll-button,.chat-message-delete-button{position:relative;border:1px solid var(--border);background:var(--surface-raised);color:var(--muted);border-radius:999px;width:20px;height:20px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:11px;line-height:1;cursor:pointer}.chat-message-add-roll-button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.chat-message-add-roll-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;transition:opacity 0ms;z-index:1001}.chat-message-add-roll-button:hover:after,.chat-message-add-roll-button:focus-visible:after{opacity:1}.chat-message-add-roll-button:not([data-tooltip]):after,.chat-message-add-roll-button[data-tooltip=""]:after{content:none;display:none}.chat-message-delete-button:hover:not(:disabled){border-color:#dc2626;color:#dc2626}.chat-message-add-roll-button:disabled,.chat-message-delete-button:disabled{opacity:.45;cursor:wait}.chat-empty{margin:0;font-size:13px;color:var(--muted)}@keyframes chat-message-remove{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(28px) scale(.98)}}.chat-roll-tools{position:relative}.chat-roll-text-tag{position:absolute;top:-8px;right:10px;transform:translateY(-55%);z-index:2;border:1px solid var(--border);border-bottom:0;border-radius:8px 8px 0 0;padding:4px 9px 3px;background:var(--surface-soft);color:var(--muted);font-size:11px;line-height:1;cursor:pointer}.chat-roll-text-tag:hover,.chat-roll-text-tag:focus-visible{border-color:var(--accent);color:var(--text);outline:none}.chat-roll-text-row{padding:4px 10px 0;min-width:0}.chat-roll-text-display,.chat-roll-text-input{width:100%;min-width:0;box-sizing:border-box;border:0;border-radius:0;padding:4px 0 6px;background:transparent;color:var(--text);font-size:13px;line-height:1.5}.chat-roll-text-display{cursor:text}.chat-roll-text-display:hover,.chat-roll-text-display:focus-visible,.chat-roll-text-input:focus{outline:none}.chat-dice-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:10px;border-top:1px solid var(--border);min-width:0}.chat-die-shortcut-button{width:100%;min-width:0;border:1px solid var(--border);border-radius:12px;padding:6px 10px;background:var(--surface-raised);color:var(--text);font-size:12px;font-weight:600;cursor:pointer}.chat-die-shortcut-button:hover{border-color:var(--accent)}.chat-die-shortcut-duality{background:linear-gradient(135deg,#eff6ff,#fef3c7);border-color:#d97706;color:#7c2d12}.chat-duality-wrap{display:grid;grid-template-columns:minmax(0,1fr);justify-items:center;min-width:0;gap:0;padding:0 10px 10px}.chat-duality-button{position:relative;min-width:0;border:1px solid var(--border);border-radius:12px;padding:10px 12px;background:var(--surface-raised);color:var(--text);font-size:12px;font-weight:700;cursor:pointer;width:100%;z-index:1}.chat-duality-button:hover:not(.active):not(.adv-active):not(.dis-active){border-color:var(--accent)}.chat-duality-button.active{box-shadow:inset 0 0 0 1px #d4a01729,0 0 0 2px #d4a0171f;border-color:#d4a017;background:linear-gradient(135deg,#f59e0b3d,#3b82f633);color:#1f2937}.chat-duality-button.adv-active{background:linear-gradient(135deg,#f59e0b3d,#3b82f633);color:#1f2937;box-shadow:inset 0 0 0 1px #16a34a38,0 0 0 2px #16a34a24}.chat-duality-button.dis-active{background:linear-gradient(135deg,#f59e0b3d,#3b82f633);color:#1f2937;box-shadow:inset 0 0 0 1px #dc262638,0 0 0 2px #dc262624}.chat-duality-attach-button{border:1px solid var(--border);background:var(--surface-raised);color:var(--muted);font-size:9px;font-weight:700;line-height:1;padding:3px 7px;cursor:pointer}.chat-duality-ribbon{width:75%;display:flex;gap:0;align-items:stretch}.chat-duality-attach-button:hover{border-color:var(--accent)}.chat-duality-ribbon .chat-duality-attach-button{flex:1 1 0;min-width:0}.chat-duality-attach-button-left{border-radius:0 0 0 12px;border-top:0;border-right:0;color:#166534}.chat-duality-attach-button-right{border-radius:0 0 12px;border-top:0;border-left:0;color:#7f1d1d}.chat-duality-ribbon:not(.has-counter) .chat-duality-attach-button-right{border-left:1px solid var(--border)}.chat-duality-counter{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;min-width:28px;padding:0 8px;border-top:0;border-bottom:1px solid var(--border);border-left:1px solid var(--border);border-right:1px solid var(--border);background:var(--surface-raised);color:var(--text);font-size:11px;font-weight:700;line-height:1}.chat-duality-counter[hidden]{display:none}.chat-duality-counter.active-adv{background:#dcfce7;border-color:#16a34a;color:#166534}.chat-duality-counter.active-dis{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}:root[data-theme=dark] .chat-duality-counter.active-adv{background:#14532d;border-color:#4ade80;color:#dcfce7}:root[data-theme=dark] .chat-duality-counter.active-dis{background:#7f1d1d;border-color:#f87171;color:#fee2e2}.chat-duality-attach-button-left.active{background:#dcfce7;border-color:#16a34a;color:#166534}.chat-duality-attach-button-right.active{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}.chat-die-wrap{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto auto;gap:0;min-width:0}.chat-die-button{position:relative;grid-column:1;grid-row:2;width:100%;border:1px solid var(--border);border-radius:12px;padding:6px 10px;background:var(--surface-raised);color:var(--text);font-size:12px;cursor:pointer;z-index:1}.chat-die-button:hover{border-color:var(--accent)}.chat-die-button.adv-active{background:#dcfce7;border-color:#16a34a;color:#166534}.chat-die-button.dis-active{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}.chat-attach-button{grid-column:1;width:50%;justify-self:center;border:1px solid var(--border);border-radius:0;background:var(--surface-raised);color:var(--muted);font-size:9px;font-weight:700;line-height:1;padding:3px 5px;cursor:pointer}.chat-attach-button[data-attach=adv]{grid-row:1;border-radius:8px 8px 0 0;border-bottom:0;color:#166534}.chat-attach-button[data-attach=dis]{grid-row:3;border-radius:0 0 8px 8px;border-top:0;color:#7f1d1d}.chat-attach-button:hover{border-color:var(--accent)}.chat-attach-button[data-attach=adv].active{background:#dcfce7;border-color:#16a34a;color:#166534}.chat-attach-button[data-attach=dis].active{background:#fee2e2;border-color:#dc2626;color:#7f1d1d}.chat-die-pill{position:absolute;top:-6px;left:-6px;width:24px;height:18px;padding:0;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#1f2937;color:#fff;font-size:11px;line-height:1;border:1px solid #ffffff}.chat-modifier-row{display:grid;grid-template-columns:auto auto 1fr auto auto;gap:6px;padding:0 10px 10px;min-width:0}.chat-modifier-step{border:1px solid var(--border);border-radius:8px;padding:6px 8px;background:var(--surface-raised);color:var(--text);font-size:12px;cursor:pointer}.chat-modifier-step:hover{border-color:var(--accent)}.chat-modifier-input{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:12px;text-align:center;min-width:0;background:var(--surface-raised);color:var(--text)}.chat-input-row{display:grid;grid-template-columns:1fr auto;gap:8px;padding:10px;border-top:1px solid var(--border);min-width:0}.chat-input-row input{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;min-width:0;background:var(--surface-raised);color:var(--text)}.chat-input-row button{border:1px solid var(--border);border-radius:8px;padding:8px 12px;background:var(--active-bg);border-color:var(--accent);color:var(--active-text);font-size:13px;cursor:pointer;width:85px}.panel-tabs{display:flex;gap:0;padding:0 4px;border-bottom:1px solid var(--border);flex-shrink:0}.panel-tab{flex:1 1 0;position:relative;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;background:transparent;color:var(--muted);border-radius:0;padding:8px 4px;font:inherit;font-size:16px;line-height:1;cursor:pointer;transition:color .15s,border-color .15s}.panel-tab:after{content:attr(data-tooltip);position:absolute;left:50%;top:calc(100% + 8px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:200}.panel-tab:hover:after{opacity:1}.panel-tab:not([data-tooltip]):after,.panel-tab[data-tooltip=""]:after{content:none}.panel-tab:hover:not(.active){color:var(--text)}.panel-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.panel-body{min-height:0;padding:10px;overflow-y:auto;overflow-x:hidden}.panel-body.panel-body-initiative{padding-top:12px;padding-bottom:10px;display:flex;flex-direction:column;overflow:visible}.room-settings-panel{display:flex;flex-direction:column;gap:0;height:100%}.room-settings-section{display:flex;flex-direction:column;gap:16px;flex:1 1 auto}.room-settings-section-heading{margin:0;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.room-settings-section-hint{margin:-8px 0 0;font-size:12px}.room-settings-group{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft)}.room-settings-group-label{margin:0;font-size:12px;font-weight:700;color:var(--text);text-transform:uppercase;letter-spacing:.05em}.room-setting-row{display:flex;flex-direction:column;gap:6px}.room-setting-row-label{font-size:12px;color:var(--muted)}.room-setting-selector{display:flex;gap:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--surface)}.room-setting-option{flex:1 1 0;padding:6px 4px;border:none;border-right:1px solid var(--border);background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:500;cursor:pointer;transition:background .1s,color .1s;white-space:nowrap}.room-setting-option:last-child{border-right:none}.room-setting-option:hover:not(.is-active){background:var(--menu-hover);color:var(--text)}.room-setting-option.is-active{background:var(--accent);color:#fff}.room-settings-footer{padding-top:16px;margin-top:auto}.room-settings-save-btn{width:100%;padding:9px 14px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;font:inherit;font-size:13px;font-weight:600;cursor:pointer;transition:filter .15s}.room-settings-save-btn:hover:not(:disabled){filter:brightness(1.08)}.room-settings-save-btn:disabled{opacity:.7;cursor:default}.room-setting-checkbox-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px;color:var(--text);cursor:pointer}.room-setting-checkbox-row input[type=checkbox]{width:15px;height:15px;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.profile-settings-page{max-width:680px;margin:0 auto;padding:40px 24px}.profile-settings-page h1{font-size:22px;font-weight:700;margin:0 0 32px;color:var(--text)}.profile-settings-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;margin-bottom:20px}.profile-settings-card-heading{font-size:15px;font-weight:600;color:var(--text);margin:0 0 4px}.profile-settings-card-hint{font-size:13px;color:var(--muted);margin:0 0 20px}.profile-email-form{display:grid;gap:14px}.profile-email-field{margin:0}.profile-email-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.profile-email-status{margin:0}.profile-settings-group{margin-bottom:16px}.profile-settings-group:last-of-type{margin-bottom:0}.profile-settings-group-label{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 10px}.profile-setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0}.profile-setting-row-label{font-size:13px;color:var(--text);flex-shrink:0}.profile-setting-row-label-sub{font-size:11px;color:var(--muted);font-weight:400}.profile-setting-checkbox-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:13px;color:var(--text);cursor:pointer}.profile-setting-checkbox-row input[type=checkbox]{width:15px;height:15px;flex-shrink:0;accent-color:var(--accent);cursor:pointer}.profile-settings-footer{display:flex;justify-content:flex-end;padding-top:20px;border-top:1px solid var(--border);margin-top:24px}.profile-settings-save-btn{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 20px;font-size:14px;font-weight:500;cursor:pointer;transition:opacity .15s}.profile-settings-save-btn:hover:not(:disabled){opacity:.88}.profile-settings-save-btn:disabled{opacity:.7;cursor:default}.panel-add-button{border:1px solid var(--border);background:var(--surface-soft);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px;cursor:pointer}.panel-add-button:hover{border-color:var(--accent)}.panel-action-row{display:flex;gap:8px;padding:10px}.panel-action-button{flex:1 1 0;min-width:0}.panel-import-button{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px;cursor:pointer}.panel-import-button:hover{border-color:var(--accent)}.library-empty,.initiative-empty{margin:0;color:var(--muted);font-size:14px}.panel-room-list{display:grid;gap:10px}.panel-room-card{display:grid;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface-soft)}.panel-room-copy{min-width:0}.panel-room-name{margin:0 0 4px;font-size:14px;line-height:1.25;color:var(--text)}.panel-room-meta{margin:0;display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12px;line-height:1.35;color:var(--muted)}.panel-room-actions{display:grid;gap:8px;margin-top:10px}.panel-room-join{display:inline-flex;align-items:center;justify-content:center;width:100%;padding:8px 12px;border:1px solid var(--accent);border-radius:9px;background:var(--active-bg);color:var(--active-text);text-decoration:none;font-size:13px;font-weight:600}.panel-room-join:hover{filter:brightness(1.04)}.resource-user-list,.resource-user-card{gap:12px}.resource-user-card.is-current-user{border-color:color-mix(in srgb,var(--accent) 42%,var(--border));background:color-mix(in srgb,var(--surface-soft) 78%,var(--active-bg))}.resource-user-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.resource-user-subtitle{margin:0;font-size:12px;color:var(--muted)}.resource-add-tracker-button{flex-shrink:0}.resource-tracker-list{display:grid;gap:10px}.resource-tracker-empty{margin:0;color:var(--muted);font-size:13px}.resource-tracker{display:grid;gap:8px;padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-raised)}.resource-tracker-main{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}.resource-tracker-name-input,.resource-tracker-value-input{width:100%;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);padding:8px 10px;font:inherit}.resource-tracker-name-display{display:block;width:100%;min-width:0;padding:2px 0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text);font:inherit;text-align:left;cursor:text;transition:border-color .12s ease,background-color .12s ease}.resource-tracker-name-display:hover,.resource-tracker-name-display:focus-visible{background:var(--surface-soft);border-color:var(--accent);outline:none}.resource-tracker-value-input{text-align:center}.resource-tracker-value-input::-webkit-outer-spin-button,.resource-tracker-value-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.resource-tracker-value-input[type=number]{-moz-appearance:textfield}.resource-tracker-value-row{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;gap:8px;align-items:center}.resource-tracker-step{display:inline-flex;align-items:center;justify-content:center;min-height:38px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);font:inherit;font-size:18px;cursor:pointer}.resource-tracker-step:hover{border-color:var(--accent)}.resource-tracker-readonly-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.resource-tracker-readonly-name{font-size:14px;font-weight:600;color:var(--text)}.resource-tracker-readonly-value{font-size:24px;font-weight:700;line-height:1;color:var(--text)}.panel-room-join.is-current{border-color:var(--border);background:var(--surface);color:var(--muted)}.panel-room-open-tab{border-color:var(--border);background:var(--surface);color:var(--text)}.panel-room-invite-all{border-color:var(--border);background:var(--surface);color:var(--text);cursor:pointer;gap:10px;justify-content:space-between;min-width:0;padding-right:10px}.panel-room-invite-toggle{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 5px;border:1px solid color-mix(in srgb,var(--border) 85%,#ffffff 15%);border-radius:999px;background:color-mix(in srgb,var(--surface) 88%,var(--surface-raised) 12%);cursor:pointer;flex:0 0 auto}.panel-room-invite-toggle:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:1001}.panel-room-invite-toggle:hover:after,.panel-room-invite-toggle:focus-visible:after{opacity:1}.panel-room-invite-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.panel-room-invite-check{width:12px;height:12px;border:1px solid var(--border);border-radius:3px;background:transparent}.panel-room-invite-toggle.is-checked .panel-room-invite-check{background:var(--accent);border-color:var(--accent);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--surface) 88%,white 12%)}.panel-room-invite-icon{font-size:14px;line-height:1}.initiative-view-options{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin-bottom:8px;width:100%}.initiative-view-option{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text);cursor:pointer;user-select:none;border:1px solid var(--border);background:var(--surface-raised);border-radius:8px;padding:6px 10px;min-height:28px;width:100%}.initiative-view-option:hover{border-color:var(--accent);color:var(--active-text)}.initiative-view-option input{margin:0;width:14px;height:14px}.initiative-panel-controls{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px;width:100%}.initiative-panel-controls-turn{grid-template-columns:repeat(3,minmax(0,1fr))}.initiative-panel-controls-primary{grid-template-columns:36px minmax(0,1fr) 36px}.initiative-settings-button,.initiative-highlight-button{width:36px;min-width:36px;padding:0}.initiative-clear-button{grid-column:1 / -1;width:100%;min-width:0;padding-inline:12px}.initiative-highlight-button.is-active{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b73;color:var(--active-text)}.initiative-end-combat-button{width:100%}.initiative-controls-divider{height:1px;background:var(--border);margin-bottom:8px}.initiative-rows{position:relative;min-height:0;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;padding:12px 4px 4px}.initiative-row{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:stretch;gap:8px;border:1px solid var(--border);border-radius:10px;padding:8px;background:var(--surface-soft);cursor:pointer;min-width:0;transform-origin:center;will-change:transform,opacity}.initiative-row-exit-clone{position:absolute;margin:0;pointer-events:none;z-index:3}.initiative-row.is-drag-source,.initiative-row.is-hidden-token{opacity:.6}.initiative-row.is-removing{pointer-events:none;animation:initiative-row-remove .22s cubic-bezier(.4,0,1,1) forwards}.initiative-row.is-drop-target{border-color:#0f766e;box-shadow:0 0 0 2px #0f766e38}.initiative-row.is-score-drop-target{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb3d}.initiative-score-request-card{grid-column:1 / -1;margin-top:2px;padding:8px;border:1px solid rgba(37,99,235,.38);border-radius:8px;background:#eff6fff2;color:#1e3a8a}.initiative-score-request-title{display:flex;align-items:baseline;gap:6px;font-size:12px;font-weight:700}.initiative-score-request-value{font-size:18px;line-height:1}.initiative-score-request-meta{margin-top:3px;font-size:11px;line-height:1.25;color:#475569}.initiative-score-request-actions{display:flex;gap:6px;margin-top:7px}.initiative-score-request-button{flex:1 1 0;border:1px solid rgba(37,99,235,.24);border-radius:8px;padding:5px 8px;background:#fff;color:#1d4ed8;font-size:11px;font-weight:700;cursor:pointer}.initiative-score-request-button:hover:not(:disabled){background:#dbeafe}.initiative-score-request-button:disabled{opacity:.6;cursor:wait}.initiative-score-request-button.apply{background:#dbeafe}.initiative-row+.initiative-row{margin-top:8px}.initiative-row:hover,.initiative-row.is-hovered{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b73}.initiative-row.is-current-turn{border-color:var(--active-text);box-shadow:0 0 0 1px var(--active-text)}.initiative-row.is-current-turn:hover,.initiative-row.is-current-turn.is-hovered{border-color:#f59e0b;box-shadow:0 0 0 1px #f59e0b,0 0 0 3px #f59e0b59}@keyframes initiative-row-remove{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(28px) scale(.98)}}.initiative-current-turn-label{position:absolute;top:-9px;left:10px;display:inline-flex;align-items:center;border:1px solid var(--active-text);border-radius:999px;background:var(--surface);color:var(--active-text);font-size:10px;font-weight:700;line-height:1;padding:2px 7px;letter-spacing:.01em;pointer-events:none}.initiative-avatar{width:64px;min-width:64px;height:64px;min-height:64px;border-radius:50%;overflow:hidden;border:1px solid var(--border);display:block;align-self:center;position:relative;background:transparent}.initiative-avatar-image,.initiative-avatar-color{width:100%;height:100%;display:block;position:absolute;inset:0}.initiative-avatar-image{object-fit:cover;transform-origin:center;z-index:1}.initiative-avatar-color{z-index:0}.initiative-avatar-dead{position:absolute;inset:0;z-index:2;display:grid;place-items:center;background:#0000008c;font-size:28px;font-family:"Segoe UI Emoji","Apple Color Emoji","Noto Color Emoji",sans-serif;line-height:1}.initiative-avatar-dead-icon{opacity:.85}.initiative-score-input{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:6px 8px;font-size:13px;flex:1 1 auto;min-width:0}.initiative-score-readonly{display:inline-flex;align-items:center;justify-content:center;min-height:33px;padding:6px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);color:var(--text);font-size:13px;font-weight:700;flex:1 1 auto;min-width:0}.initiative-row-content{min-width:0;display:grid;grid-template-rows:auto auto;gap:8px}.initiative-row-top,.initiative-row-bottom{min-width:0;display:flex;align-items:center;flex-wrap:wrap;justify-content:space-between}.initiative-row-top{flex-wrap:nowrap;gap:4px}.initiative-row-bottom{padding-top:2px}.initiative-roll-button{position:relative;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;width:28px;height:28px;padding:0;font-size:15px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.initiative-highlight-token-button,.initiative-library-button{position:relative;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;width:28px;height:28px;padding:0;font-size:14px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.initiative-library-slot{width:28px;height:28px;display:inline-flex}.initiative-order-indicator{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;width:44px;height:28px;padding:0 6px;font-size:12px;font-weight:700;line-height:1;display:inline-flex;align-items:center;justify-content:center;user-select:none;cursor:pointer}.initiative-highlight-token-button:hover,.initiative-library-button:hover{border-color:var(--accent);color:var(--active-text)}.initiative-highlight-token-button:focus-visible,.initiative-library-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.initiative-roll-button:hover{border-color:var(--accent);color:var(--active-text)}.initiative-roll-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.initiative-action-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;transition:opacity 0ms;z-index:1001}.initiative-action-button:hover:after,.initiative-action-button:focus-visible:after{opacity:1}.initiative-action-button:not([data-tooltip]):after,.initiative-action-button[data-tooltip=""]:after{content:none;display:none}.initiative-turn-button{position:relative;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;height:28px;padding:0;font-size:14px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.initiative-turn-button:hover{border-color:var(--accent);color:var(--active-text)}.initiative-turn-button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.initiative-turn-button.initiative-action-button:after{left:50%;right:auto;bottom:calc(100% + 6px);top:auto;transform:translate(-50%)}.initiative-combat-footer{margin-top:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);padding:6px 8px;display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--text)}.initiative-remove-button{position:relative;border:1px solid #b91c1c;background:#fef2f2;color:#991b1b;border-radius:8px;width:28px;height:28px;font-size:12px;font-weight:700;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.initiative-remove-button:hover{background:#fee2e2;border-color:#991b1b;color:#7f1d1d}.initiative-remove-button:focus-visible{outline:2px solid #ef4444;outline-offset:1px}:root[data-theme=dark] .initiative-remove-button{border-color:#f87171;background:#7f1d1d59;color:#fecaca}:root[data-theme=dark] .initiative-remove-button:hover{background:#991b1b85;border-color:#fca5a5;color:#fee2e2}:root[data-theme=dark] .initiative-remove-button:focus-visible{outline-color:#f87171}.library-list{display:grid;gap:8px}.library-search-bar{display:grid;gap:8px;margin-bottom:10px}.library-controls-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.library-control-field{display:grid;gap:4px;min-width:0;font-size:12px;color:var(--muted)}.library-control-select{width:100%;min-width:0;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px}.library-control-select:focus{outline:2px solid var(--accent);outline-offset:1px}.library-search-input{width:100%;min-width:0;border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:8px 10px;font-size:13px}.library-search-input:focus{outline:2px solid var(--accent);outline-offset:1px}.library-search-input::-webkit-search-cancel-button{cursor:pointer}.library-item{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;border:1px solid var(--border);border-radius:10px;padding:8px;background:var(--surface-soft);user-select:none}.chat-roll-cell-duality{min-width:132px}.chat-roll-cell-duality-hope{background:linear-gradient(180deg,#f59e0b1f,#fffffff0);border-color:#d4a017;box-shadow:inset 0 0 0 1px #d4a0172e}.chat-roll-cell-duality-fear{background:linear-gradient(180deg,#3b82f61f,#fffffff0);border-color:#3b82f6;box-shadow:inset 0 0 0 1px #3b82f62e}.chat-roll-cell-duality-crit{background:#ecfdf3;border-color:#16a34a;box-shadow:inset 0 0 0 1px #16a34a33}.chat-roll-duality-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;width:100%}.chat-roll-duality-face{display:grid;justify-items:center;gap:2px;border-radius:8px;padding:4px 6px;background:#ffffffb8}.chat-roll-duality-face-hope{border:1px solid rgba(212,160,23,.28)}.chat-roll-duality-face-fear{border:1px solid rgba(59,130,246,.26)}.chat-roll-duality-tone{font-size:9px;font-weight:700;letter-spacing:.04em}.chat-roll-duality-face-hope .chat-roll-duality-tone{color:#a16207}.chat-roll-duality-face-fear .chat-roll-duality-tone{color:#1d4ed8}.chat-roll-duality-value-hope{color:#a16207}.chat-roll-duality-value-fear{color:#1d4ed8}:root[data-theme=dark] .chat-roll-cell-duality-hope{background:linear-gradient(180deg,#f59e0b33,#111827f5);border-color:#fbbf24;box-shadow:inset 0 0 0 1px #fbbf244d}:root[data-theme=dark] .chat-duality-button{border-color:var(--border);background:var(--surface-raised);color:var(--text)}:root[data-theme=dark] .chat-duality-attach-button-left{color:#86efac}:root[data-theme=dark] .chat-duality-attach-button-right{color:#fca5a5}:root[data-theme=dark] .chat-duality-attach-button-left.active{background:#14532d;border-color:#4ade80;color:#dcfce7}:root[data-theme=dark] .chat-duality-attach-button-right.active{background:#7f1d1d;border-color:#f87171;color:#fee2e2}:root[data-theme=dark] .chat-duality-button.active{border-color:#fbbf24;background:linear-gradient(135deg,#f59e0b4d,#3b82f642);color:#e5e7eb;box-shadow:inset 0 0 0 1px #fbbf242e,0 0 0 2px #fbbf241f}:root[data-theme=dark] .chat-duality-button.adv-active{background:linear-gradient(135deg,#f59e0b4d,#3b82f642);color:#e5e7eb}:root[data-theme=dark] .chat-duality-button.dis-active{background:linear-gradient(135deg,#f59e0b4d,#3b82f642);color:#e5e7eb}:root[data-theme=dark] .chat-roll-cell-duality-fear{background:linear-gradient(180deg,#3b82f638,#111827f5);border-color:#60a5fa;box-shadow:inset 0 0 0 1px #60a5fa47}:root[data-theme=dark] .chat-roll-cell-duality-crit{background:#14532d;border-color:#4ade80;box-shadow:inset 0 0 0 1px #4ade8059}:root[data-theme=dark] .chat-roll-cell-duality .chat-roll-label{color:#cbd5e1}:root[data-theme=dark] .chat-roll-duality-face{background:#0f172a6b}:root[data-theme=dark] .chat-roll-duality-face-hope{border-color:#fbbf2457}:root[data-theme=dark] .chat-roll-duality-face-fear{border-color:#60a5fa57}:root[data-theme=dark] .chat-roll-duality-face-hope .chat-roll-duality-tone,:root[data-theme=dark] .chat-roll-duality-value-hope{color:#fde68a}:root[data-theme=dark] .chat-roll-duality-face-fear .chat-roll-duality-tone,:root[data-theme=dark] .chat-roll-duality-value-fear{color:#dbeafe}.library-item:hover{cursor:pointer}.library-item.is-image-drop-target,.library-stat-card.is-image-drop-target{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 16%,transparent)}.library-item-main{display:flex;align-items:flex-start;gap:8px;min-width:0}.library-item-copy{display:grid;gap:2px;min-width:0;flex:1}.library-item-image{width:30px;height:30px;border-radius:50%;flex-shrink:0;border:1px solid var(--border);overflow:hidden;display:block;background:var(--surface)}.library-item-image.placeholder{display:grid;place-items:center;background:#e5e7eb;color:#374151;font-weight:600}.library-item-image-content{width:100%;height:100%;display:block;object-fit:cover;transform-origin:center;-webkit-user-drag:none;user-drag:none}.library-item-image-content[data-library-draggable=false]{cursor:default}.library-item-name{font-size:13px;line-height:1.3;white-space:normal;overflow-wrap:anywhere}.library-item-subtitle{display:block;font-size:11px;line-height:1.25;color:var(--muted)}.library-item-edit{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:5px 8px;font-size:12px;cursor:pointer}.library-item-edit:hover{border-color:var(--accent)}.library-item-actions{display:inline-flex;gap:6px}.library-item-show{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:5px 8px;font-size:12px;cursor:pointer}.library-item-show:hover{border-color:var(--accent)}.library-item-details{margin:0;font-size:12px;color:var(--muted);line-height:1.3}.library-item-details-wrap{grid-column:1 / -1;margin-top:2px;display:grid;gap:6px}.library-stat-card{display:grid;gap:8px;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised)}.library-stat-header{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start}.library-stat-head-text h3{margin:0;color:var(--text);font-size:14px;line-height:1.2}.library-stat-head-text p{margin:2px 0 0;color:var(--muted);font-size:12px;line-height:1.3}.library-stat-head-text a{color:var(--active-text);text-decoration:underline;text-underline-offset:2px}.library-stat-image{width:48px;height:48px;border-radius:8px;border:1px solid var(--border);overflow:hidden;display:block;background:var(--surface)}.library-stat-image-content{width:100%;height:100%;display:block;object-fit:cover;transform-origin:center;cursor:grab;-webkit-user-drag:none;user-drag:none}.library-stat-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:34px}.library-stat-navigation,.library-stat-item-actions{display:inline-flex;align-items:center;gap:6px}.library-detail-back{display:inline-flex;align-items:center;gap:6px;border:0;padding:5px 2px;background:transparent;color:var(--muted);font:inherit;font-size:12px;cursor:pointer}.library-detail-back:hover{color:var(--active-text)}.library-detail-back:focus-visible,.library-detail-edit:focus-visible,.library-detail-overflow summary:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}.library-detail-edit{display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:5px 9px}.library-detail-overflow{position:relative}.library-detail-overflow summary{position:relative;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);color:var(--text);font-size:18px;line-height:1;cursor:pointer;list-style:none}.library-detail-overflow summary::-webkit-details-marker{display:none}.library-detail-overflow summary:hover,.library-detail-overflow[open] summary{border-color:var(--accent);background:var(--active-bg)}.library-detail-overflow summary:after{content:attr(data-tooltip);position:absolute;right:0;bottom:calc(100% + 7px);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;padding:4px 6px;background:var(--surface-raised);color:var(--text);box-shadow:0 4px 12px #0003;font-size:11px;line-height:1.2;z-index:4}.library-detail-overflow summary:hover:after,.library-detail-overflow summary:focus-visible:after{opacity:1}.library-detail-overflow-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:5;min-width:150px;padding:5px;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);box-shadow:0 12px 30px #0f172a38}.library-detail-delete{width:100%;display:flex;align-items:center;gap:7px;border-color:transparent;background:transparent;padding:7px 8px;text-align:left}.library-item-delete{border:1px solid #b91c1c;background:#fef2f2;color:#991b1b;border-radius:8px;padding:5px 8px;font-size:12px;font-weight:600;cursor:pointer}.library-item-delete:hover{background:#fee2e2;border-color:#991b1b;color:#7f1d1d}.library-item-delete:focus-visible{outline:2px solid #ef4444;outline-offset:1px}:root[data-theme=dark] .library-item-delete{border-color:#f87171;background:#7f1d1d59;color:#fecaca}:root[data-theme=dark] .library-item-delete:hover{background:#991b1b85;border-color:#fca5a5;color:#fee2e2}:root[data-theme=dark] .library-item-delete:focus-visible{outline-color:#f87171}:root[data-theme=dark] .library-detail-delete{border-color:transparent;background:transparent;color:#fecaca}.library-stat-core{display:grid;gap:4px}.library-stat-row{display:grid;grid-template-columns:96px 1fr;gap:6px;align-items:start}.library-stat-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.library-stat-value{color:var(--text);font-size:12px;line-height:1.35}.library-abilities-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.library-ability-cell{display:grid;grid-template-columns:auto auto auto auto;align-items:baseline;gap:4px;padding:5px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface-soft);font-size:11px}.library-ability-name{color:var(--muted);font-weight:700}.library-ability-score{color:var(--text);font-weight:700}.library-ability-mod,.library-ability-save{color:var(--text)}.library-section-block{display:grid;gap:4px}.library-section-block h4{margin:2px 0 0;color:var(--text);font-size:12px}.library-section-entry{margin:0;color:var(--text);font-size:12px;line-height:1.4}.library-tag-list{display:flex;flex-wrap:wrap;gap:6px}.library-tag{display:inline-flex;align-items:center;min-height:20px;padding:0 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-soft);color:var(--muted);font-size:11px;font-weight:600}.library-raw-json{margin:0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft);color:var(--text);font-size:12px;line-height:1.4;white-space:pre-wrap;overflow-x:auto}@media (max-width: 360px){.library-abilities-grid{grid-template-columns:1fr}}.library-dice-hint{text-decoration-line:underline;text-decoration-style:dotted;text-underline-offset:2px;cursor:pointer}.library-form{display:grid;gap:8px}.library-import-intro{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.library-import-input{min-height:300px}.library-form-image-section{display:grid;gap:8px}.library-form-image-preview{display:flex;align-items:center;justify-content:center;min-height:120px;padding:12px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(135deg,color-mix(in srgb,var(--surface-soft) 88%,var(--accent) 12%),var(--surface));overflow:hidden}.library-form-image-preview.is-empty{background:var(--surface-soft)}.library-form-image-preview-content{display:block;max-width:100%;max-height:180px;object-fit:contain;transform-origin:center center}.library-form-image-placeholder{color:var(--muted);font-size:12px}.library-form-image-actions{display:flex;gap:8px}.library-image-picker-button,.library-image-clear-button{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:13px;cursor:pointer}.library-image-picker-button{background:var(--surface-raised);color:var(--text)}.library-image-clear-button{background:var(--surface-soft);color:var(--muted)}.library-image-clear-button:disabled{cursor:default;opacity:.6}.library-creator-drawer{width:min(780px,calc(100vw - 48px))}.library-creator-drawer-shell{padding:18px 24px 24px}.library-creator-drawer-content{min-width:0}.library-creator-form{display:grid;gap:14px}.library-creator-primary,.library-creator-card{display:grid;gap:12px}.library-creator-card{padding-top:14px;border-top:1px solid var(--border)}.library-creator-card h3{margin:0;color:var(--text);font-size:14px;line-height:1.2}.library-creator-card-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.library-creator-card-heading h3,.library-creator-card-heading h4{margin:0;color:var(--text);font-size:14px;line-height:1.2}.library-creator-card-heading h4{font-size:13px}.library-creator-soon{flex-shrink:0;border:1px solid var(--border);border-radius:999px;padding:2px 7px;background:var(--surface-soft);color:var(--muted);font-size:11px;font-weight:700;line-height:1.2}.library-creator-parser-card{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:8px;background:color-mix(in srgb,var(--surface-soft) 78%,var(--surface-raised) 22%)}.library-creator-parser-card[hidden]{display:none}.library-creator-parser-launcher{gap:10px}.library-creator-parser-launcher-heading{justify-content:flex-end}.library-creator-section-parser{display:grid;gap:10px;padding:10px;border:1px dashed var(--border);border-radius:8px;background:var(--surface)}.library-creator-section-parser[hidden]{display:none}.library-creator-paste-toggle{position:relative;width:34px;height:34px;display:grid;place-items:center;flex-shrink:0;border:1px solid var(--border);border-radius:8px;padding:0;background:var(--surface-raised);color:var(--text);font:inherit;font-size:16px;line-height:1;cursor:pointer}.library-creator-paste-toggle:hover,.library-creator-paste-toggle[aria-expanded=true]{border-color:var(--accent);background:var(--active-bg)}.library-creator-paste-toggle:after{content:attr(data-tooltip);position:absolute;right:0;bottom:calc(100% + 8px);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;z-index:1001}.library-creator-paste-toggle:hover:after,.library-creator-paste-toggle:focus-visible:after{opacity:1}.library-creator-paste-toggle:not([data-tooltip]):after,.library-creator-paste-toggle[data-tooltip=""]:after{content:none}.library-creator-parser-actions{display:flex;gap:8px;flex-wrap:wrap}.library-creator-parser-button{border:1px solid var(--border);border-radius:8px;padding:7px 10px;background:var(--surface-raised);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.library-creator-parser-button:disabled{cursor:default;opacity:.55}.library-creator-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.library-creator-field,.library-creator-image-field{display:grid;gap:5px;min-width:0}.library-creator-field span,.library-creator-label{color:var(--muted);font-size:11px;font-weight:700;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}.library-creator-field input,.library-creator-field select,.library-creator-field textarea{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;padding:8px 10px;background:var(--surface-raised);color:var(--text);font:inherit;font-size:13px}.library-creator-field textarea{resize:vertical;min-height:76px;line-height:1.4}.library-creator-wide-field{grid-column:span 3}.library-creator-secondary-fields{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-creator-field input:focus,.library-creator-field select:focus,.library-creator-field textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 34%,transparent);border-color:var(--accent)}.library-creator-image-drop{min-height:180px;display:grid;place-items:center;overflow:hidden;border:1px dashed var(--border);border-radius:8px;background:var(--surface-soft);color:var(--muted);cursor:pointer}.library-creator-image-drop:hover,.library-creator-image-drop.is-image-drop-target{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 16%,transparent)}.library-creator-image-drop.is-uploading{opacity:.72;cursor:progress}.library-creator-token-preview{width:132px;height:132px;display:block;overflow:hidden;border:2px solid var(--border);border-radius:50%;background:var(--surface);box-shadow:0 10px 28px #0f172a2e}.library-creator-image-preview-content{display:block;width:100%;height:100%;object-fit:cover;transform-origin:center}.library-creator-image-placeholder{font-size:13px}.library-creator-image-actions,.library-creator-actions{display:flex;gap:8px;flex-wrap:wrap}.library-creator-scale-field{display:grid;gap:6px}.library-creator-scale-field[hidden]{display:none}.library-creator-scale-field span{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--muted);font-size:11px;font-weight:700;line-height:1.2;text-transform:uppercase;letter-spacing:.04em}.library-creator-scale-field strong{color:var(--text);font-size:12px}.library-creator-scale-controls{display:grid;grid-template-columns:84px minmax(0,1fr);gap:8px;align-items:center}.library-creator-scale-controls input[type=number]{width:100%;min-width:0;box-sizing:border-box;border:1px solid var(--border);border-radius:8px;padding:7px 8px;background:var(--surface-raised);color:var(--text);font:inherit;font-size:13px}.library-creator-scale-controls input[type=range]{width:100%;margin:0}.library-creator-abilities{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}.library-creator-sections{display:grid;gap:12px}.library-creator-section{display:grid;gap:10px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-soft)}.library-creator-section-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.library-creator-section-entries{display:grid;gap:10px}.library-creator-entry{display:grid;gap:8px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface)}.library-creator-entry-header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end}.library-creator-icon-button,.library-creator-add-entry,.library-creator-add-section{border:1px solid var(--border);border-radius:8px;padding:7px 10px;background:var(--surface-raised);color:var(--text);font:inherit;font-size:12px;cursor:pointer}.library-creator-icon-button:hover,.library-creator-add-entry:hover,.library-creator-add-section:hover{border-color:var(--accent)}.library-creator-entry-remove{width:34px;height:34px;display:grid;place-items:center;border:1px solid var(--border);border-radius:8px;background:var(--surface-raised);color:var(--muted);font:inherit;font-size:20px;line-height:1;cursor:pointer}.library-creator-entry-remove:hover{border-color:#ef4444;color:#b91c1c;background:#fef2f2}:root[data-theme=dark] .library-creator-entry-remove:hover{border-color:#f87171;color:#fecaca;background:#7f1d1d59}.library-creator-actions{padding-top:4px}.daggerheart-feature-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.daggerheart-experience-entry{grid-template-columns:minmax(0,1fr) 110px;align-items:end}.daggerheart-experience-entry .library-creator-entry-header{min-width:0}.daggerheart-direct-damage{align-self:end;min-height:34px}@media (max-width: 640px){.library-creator-secondary-fields{grid-template-columns:minmax(0,1fr)}.daggerheart-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.daggerheart-experience-entry{grid-template-columns:minmax(0,1fr)}}.library-form-mode-toggle{display:inline-flex;gap:6px}.library-mode-button{border:1px solid var(--border);background:var(--surface-raised);color:var(--text);border-radius:8px;padding:6px 10px;font-size:12px;cursor:pointer}.library-mode-button.active{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.library-form label{display:grid;gap:4px;font-size:12px;color:var(--muted)}.library-checkbox-field{display:inline-flex;align-items:center;gap:8px;color:var(--text)}.library-checkbox-field input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.library-form input{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:13px;background:var(--surface-raised);color:var(--text)}.library-form textarea{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font-size:13px;resize:vertical;min-height:84px;font-family:inherit;background:var(--surface-raised);color:var(--text)}.library-json-input{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.library-form-actions{display:flex;gap:8px;margin-top:4px}.library-submit,.library-cancel{border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:13px;cursor:pointer}.library-submit{background:var(--active-bg);border-color:var(--accent);color:var(--active-text)}.library-cancel{background:var(--surface-raised);color:var(--text)}.editor-canvas{width:100%;height:100%;display:block;cursor:default;outline:none}@media (max-width: 900px){.editor-content{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr) auto}.editor-center-column{grid-template-rows:minmax(420px,1fr) auto}.editor-side-panel{min-height:200px}.editor-chat-panel{min-height:220px}}.canvas-context-menu{position:absolute;z-index:1000;background:var(--surface-raised);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #00000029;padding:6px;min-width:248px}.canvas-context-menu[hidden]{display:none}.canvas-context-menu button{display:block;width:100%;border:0;background:transparent;text-align:left;padding:8px 10px;border-radius:8px;color:var(--text);cursor:pointer}.canvas-context-menu button:hover{background:var(--menu-hover)}.image-source-dialog-backdrop{position:fixed;inset:0;z-index:1350;display:grid;place-items:center;background:#0f172a8c;padding:16px}.image-source-dialog-backdrop[hidden]{display:none}.image-source-dialog{width:min(460px,100%);display:grid;gap:12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:12px;box-shadow:0 16px 30px #00000047;padding:14px}.image-source-dialog-title{margin:0;font-size:16px;color:var(--text)}.image-source-panel{display:grid;gap:10px}.image-source-divider{position:relative;display:grid;place-items:center;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin:2px 0}.image-source-divider:before{content:"";position:absolute;left:0;right:0;top:50%;border-top:1px solid var(--border)}.image-source-divider span{position:relative;z-index:1;padding:0 10px;background:var(--surface-raised)}.image-source-field-label{display:grid;gap:6px;color:var(--muted);font-size:12px}.image-source-field-label input{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:13px;background:var(--surface-raised);color:var(--text)}.image-source-dropzone{position:relative;border:2px dashed var(--border);border-radius:10px;background:var(--surface-soft);min-height:120px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:13px;padding:12px;cursor:pointer}.image-source-loader{position:absolute;width:22px;height:22px;border:2px solid color-mix(in srgb,var(--accent) 28%,transparent);border-top-color:var(--accent);border-radius:50%;opacity:0;pointer-events:none}.image-source-dropzone.is-uploading .image-source-dropzone-label{opacity:0}.image-source-dropzone.is-uploading .image-source-loader{opacity:1;animation:image-source-loader-spin .8s linear infinite}@keyframes image-source-loader-spin{to{transform:rotate(360deg)}}.image-source-dropzone.drag-over{border-color:var(--accent);color:var(--text);background:var(--active-bg)}.image-source-file-name{margin:0;font-size:12px;color:var(--muted)}.image-source-dialog-actions{display:flex;justify-content:flex-end;gap:8px}.image-source-dialog-actions button{border:1px solid var(--border);background:var(--surface-soft);color:var(--text);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}.image-source-dialog-actions button:hover{border-color:var(--accent)}.image-source-dialog-actions button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.image-source-dialog-actions button.primary:disabled{opacity:.65;cursor:wait}.background-color-menu{position:fixed;min-width:auto;padding:8px}.token-color-menu{min-width:238px;display:grid;gap:8px}.token-color-option-row{display:grid;gap:6px}.token-color-option-row label{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--text)}.token-color-custom-row{display:grid;grid-template-columns:44px 1fr;align-items:center;gap:8px}.grid-color-menu{min-width:176px;display:grid;gap:8px}.grid-color-custom-row{display:grid;grid-template-columns:44px 1fr;align-items:center;gap:8px}.token-color-input[disabled],.token-color-alpha-input[disabled]{opacity:.45;pointer-events:none}.background-color-input{width:42px;height:30px;border:1px solid var(--border);border-radius:6px;padding:0;background:var(--surface-raised);cursor:pointer}.help-menu{position:fixed;width:min(420px,calc(100vw - 24px));max-height:min(420px,calc(100vh - 24px));overflow:auto;display:grid;gap:4px}.help-line{margin:0;padding:6px 8px;border-radius:6px;background:var(--surface-soft);font-size:12px;color:var(--text);line-height:1.35}.context-damage-row{display:block;padding:4px}.context-top-actions{display:grid;grid-template-columns:repeat(var(--context-top-action-count, 4),minmax(0,1fr));gap:6px;padding:4px;margin-bottom:4px}.context-row-label{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.context-damage-row input{width:100%;display:block;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--surface-raised);color:var(--text)}.context-hp-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;padding:4px;margin-bottom:4px}.context-hp-row .context-row-label{grid-column:1 / -1;margin-bottom:0}.context-hp-row .context-row-head{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:8px}.context-hp-row .context-row-head .context-row-label{margin-bottom:0}.canvas-context-menu .context-icon-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;min-width:34px;min-height:30px;border:1px solid var(--border);background:var(--surface-soft);color:var(--muted);font-size:14px;line-height:1;padding:6px;border-radius:6px;transition:none}.canvas-context-menu .context-icon-button:hover{border-color:var(--accent);cursor:pointer}.context-top-actions .context-icon-button{width:100%;min-width:0}.context-top-actions .context-edit-button{order:999}.context-initiative-button:after,.context-visibility-button:after,.context-edit-button:after,.context-hp-roll-button:after,.context-library-button:after{content:attr(data-tooltip);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-50%);opacity:0;pointer-events:none;white-space:nowrap;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);color:var(--text);font-size:11px;line-height:1.2;padding:4px 6px;box-shadow:0 4px 12px #0003;transition:opacity 0ms;z-index:1001}.context-initiative-button:hover:after,.context-initiative-button:focus-visible:after,.context-visibility-button:hover:after,.context-visibility-button:focus-visible:after,.context-edit-button:hover:after,.context-edit-button:focus-visible:after,.context-hp-roll-button:hover:after,.context-hp-roll-button:focus-visible:after,.context-library-button:hover:after,.context-library-button:focus-visible:after{opacity:1}.context-hp-roll-icon{display:inline-block;transform-origin:50% 55%;transform:translateZ(0) scale(1) rotate(0);transition:transform .14s cubic-bezier(.2,.8,.2,1)}.context-hp-roll-button:hover .context-hp-roll-icon{transform:translateZ(0) scale(1.14) rotate(0)}.context-initiative-icon,.context-visibility-icon,.context-edit-icon,.context-library-icon{display:inline-block;transform-origin:50% 55%;transform:translateZ(0) scale(1) rotate(0);transition:transform .14s cubic-bezier(.2,.8,.2,1)}.context-initiative-button:hover .context-initiative-icon,.context-visibility-button:hover .context-visibility-icon,.context-edit-button:hover .context-edit-icon,.context-library-button:hover .context-library-icon{transform:translateZ(0) scale(1.14) rotate(0)}.context-hp-roll-icon.is-rolling{animation:hp-roll-spin .7s linear}@keyframes hp-roll-spin{0%{transform:translateZ(0) rotate(0)}to{transform:translateZ(0) rotate(720deg)}}.context-hp-row input{width:100%;min-width:0;max-width:100px;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--surface-raised);color:var(--text)}.context-hp-row .context-hp-sep{color:var(--muted);font-size:12px;text-align:center}.context-ac-init-row .context-field-label{color:var(--muted);font-size:12px;margin-bottom:0}.context-ac-init-row .context-field-label:nth-of-type(1){grid-column:1}.context-ac-init-row .context-field-label:nth-of-type(2){grid-column:3}.context-ac-init-row input[data-field=ac]{grid-column:1}.context-ac-init-row input[data-field=initiative]{grid-column:3}.context-ac-init-row .context-ac-init-spacer{grid-column:2}.context-system-tracks,.context-system-fields{display:grid;gap:8px;padding:4px;margin-bottom:4px}.context-system-track-group,.context-system-field-group{display:grid;gap:6px}.context-system-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.context-system-field{display:grid;gap:4px}.context-system-field-readonly{gap:2px}.context-system-field input{width:100%;min-width:0;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--surface-raised);color:var(--text)}.context-system-field-value{display:block;min-height:28px;border:1px solid var(--border);border-radius:6px;padding:5px 6px;font-size:12px;background:var(--surface-soft);color:var(--text)}.context-track-row{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;align-items:center;gap:6px}.context-track-head{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:8px}.context-track-value{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.context-track-row .context-row-label{grid-column:1 / -1;margin-bottom:0}.canvas-context-menu .context-track-adjust{display:inline-flex;align-items:center;justify-content:center;width:28px;min-width:28px;min-height:28px;padding:0;border:1px solid var(--border);border-radius:6px;background:var(--surface-soft);color:var(--text);text-align:center}.context-track-cells{display:flex;flex-wrap:wrap;gap:4px;min-height:22px;width:100%;align-items:center;justify-content:center;justify-self:center}.context-track-input{width:100%;min-width:0;max-width:none;justify-self:center;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;text-align:center;background:var(--surface-raised);color:var(--text);appearance:textfield;-moz-appearance:textfield}.context-track-input::-webkit-outer-spin-button,.context-track-input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.context-track-cell{width:14px;height:14px;border:1px solid var(--border);border-radius:4px;background:var(--surface)}.context-track-cell.is-filled{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 18%,var(--surface-soft));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 28%,transparent)}.context-track-empty{color:var(--muted);font-size:11px;white-space:nowrap}.context-thresholds-readonly{display:flex;align-items:center;flex-wrap:wrap;gap:6px;justify-content:space-between}.context-threshold-name{color:var(--text);font-size:12px;font-weight:700;white-space:nowrap}.context-threshold-amount{display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:24px;padding:0 8px;border:1px solid var(--border);border-radius:6px;background:var(--surface-soft);color:var(--text);font-size:12px;font-variant-numeric:tabular-nums}.context-image-scale-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;margin-bottom:4px}.context-image-scale-actions button{width:100%;text-align:center}.context-label-row{display:block;padding:4px;margin-bottom:4px}.context-label-row input{width:100%;display:block;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--surface-raised);color:var(--text)}.context-color-row{display:grid;grid-template-columns:74px 1fr;align-items:center;gap:6px;padding:4px;margin-bottom:4px}.context-color-row .context-row-label{grid-column:1 / -1;margin-bottom:0}.context-color-row input[type=color]{width:100%;max-width:74px;min-height:30px;border:1px solid var(--border);border-radius:6px;background:var(--surface-raised);padding:0;cursor:pointer;justify-self:start}.context-color-row input[type=range]{width:100%;margin:0;grid-column:2}.context-scale-row{display:grid;grid-template-columns:74px 1fr;align-items:center;gap:6px;padding:4px;margin-bottom:4px}.context-scale-row .context-row-label{grid-column:1 / -1;margin-bottom:0}.context-scale-row input[type=range]{grid-column:2;width:100%;margin:0}.context-scale-row input[type=number]{grid-column:1;width:100%;border:1px solid var(--border);border-radius:6px;padding:4px 6px;font-size:12px;background:var(--surface-raised);color:var(--text)}.import-layout{display:grid;gap:12px}.import-title{margin:0;font-size:24px;color:var(--text)}.import-subtitle{margin:0;font-size:13px;color:var(--muted)}.import-controls{display:grid;gap:8px}.import-input{width:100%;min-height:200px;border:1px solid var(--border);border-radius:10px;padding:10px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;resize:vertical;background:var(--surface-raised);color:var(--text)}.chat-input-row input::placeholder,.library-form input::placeholder,.library-form textarea::placeholder,.context-damage-row input::placeholder,.context-hp-row input::placeholder,.context-track-input::placeholder,.context-system-field input::placeholder,.context-label-row input::placeholder,.context-scale-row input[type=number]::placeholder,.import-input::placeholder{color:var(--muted)}.chat-modifier-input:focus,.chat-input-row input:focus,.library-form input:focus,.library-form textarea:focus,.context-damage-row input:focus,.context-hp-row input:focus,.context-track-input:focus,.context-system-field input:focus,.context-label-row input:focus,.context-color-row input[type=color]:focus,.context-scale-row input[type=number]:focus,.import-input:focus{outline:2px solid var(--accent);outline-offset:1px}.image-source-field-label input:focus,.image-source-dropzone:focus-visible{outline:2px solid var(--accent);outline-offset:1px}:root[data-theme=dark] .chat-die-button.adv-active{background:#14532d;border-color:#4ade80;color:#dcfce7;box-shadow:inset 0 0 0 1px #4ade8059}:root[data-theme=dark] .chat-die-button.dis-active{background:#7f1d1d;border-color:#f87171;color:#fee2e2;box-shadow:inset 0 0 0 1px #f8717159}:root[data-theme=dark] .chat-attach-button[data-attach=adv]{color:#86efac}:root[data-theme=dark] .chat-attach-button[data-attach=dis]{color:#fca5a5}:root[data-theme=dark] .chat-attach-button[data-attach=adv].active{background:#14532d;border-color:#4ade80;color:#dcfce7}:root[data-theme=dark] .chat-attach-button[data-attach=dis].active{background:#7f1d1d;border-color:#f87171;color:#fee2e2}.import-actions{display:flex;justify-content:flex-start;gap:8px}.import-parse-button{border:1px solid var(--accent);background:#eff6ff;color:#1d4ed8;border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}.import-json-button{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}.import-json-button:hover{border-color:var(--accent)}.import-columns{display:grid;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.import-pane{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:10px;min-height:360px;display:grid;grid-template-rows:auto 1fr;gap:8px}.import-pane h2{margin:0;font-size:14px;color:var(--text)}.import-raw-output{margin:0;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#0f172a;color:#e2e8f0;font-size:12px;line-height:1.35;padding:10px}.import-rendered-output{overflow:auto;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-size:13px;line-height:1.4;padding:10px}.import-json-output{margin:0;overflow:auto;border:1px solid var(--border);border-radius:8px;background:#0b1020;color:#dbe7ff;font-size:12px;line-height:1.35;padding:10px}.import-rendered-output table{width:100%;border-collapse:collapse;margin:8px 0}.import-rendered-output th,.import-rendered-output td{border:1px solid #e5e7eb;padding:6px 8px;vertical-align:top}.import-rendered-output img{max-width:100%;height:auto;border-radius:8px}.import-rendered-output a{color:#1d4ed8;text-decoration:underline;text-underline-offset:2px}.import-rendered-output .entry-title-inner,.import-rendered-output .import-entry-title{font-weight:700}.import-rendered-output .import-stat-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.import-rendered-output .import-stat-name{margin:0;font-size:20px;line-height:1.2;color:var(--text)}.import-rendered-output .import-stat-image{display:block;max-width:150px;width:100%;height:auto;border-radius:8px}@media (max-width: 900px){.import-columns{grid-template-columns:1fr}}.admin-page{max-width:960px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.admin-header{margin-bottom:16px}.admin-header h1{margin:0;font-size:22px}.admin-section{padding:0;overflow:hidden}.admin-section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px;border-bottom:1px solid var(--border)}.admin-section-header h2{margin:0;font-size:16px;font-weight:600}.admin-search-input{padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:13px;width:220px;outline:none}.admin-search-input:focus{border-color:var(--accent)}.admin-empty{padding:16px}.admin-user-list{display:flex;flex-direction:column}.admin-user-row{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border)}.admin-user-row:last-child{border-bottom:none}.admin-user-main{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.admin-user-info{display:flex;flex-direction:column;gap:2px;flex:1 1 140px;min-width:0}.admin-username{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-user-meta{font-size:12px;color:var(--muted)}.admin-user-badges{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.admin-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}.admin-badge--active{background:#dcfce7;color:#166534}.admin-badge--expired{background:#fee2e2;color:#991b1b}.admin-badge--inactive{background:var(--border);color:var(--muted)}.admin-badge--admin{background:#ede9fe;color:#5b21b6}.admin-user-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.admin-gm-controls{display:flex;align-items:center;gap:4px;flex-wrap:wrap;flex:1 1 auto}.admin-gm-label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;margin-right:2px}.admin-date-input{padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:12px;outline:none;cursor:pointer;color-scheme:light}.admin-date-input:focus{border-color:var(--accent)}.admin-days-tag{font-size:11px;font-weight:600;white-space:nowrap;padding:2px 7px;border-radius:999px}.admin-days-tag--ok{background:#dcfce7;color:#166534}.admin-days-tag--warning{background:#fef9c3;color:#854d0e}.admin-days-tag--expired{background:#fee2e2;color:#991b1b}.admin-action-btn{padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:12px;cursor:pointer;white-space:nowrap;transition:background .12s,border-color .12s,color .12s}.admin-action-btn:hover:not(:disabled){background:var(--bg);border-color:var(--muted)}.admin-action-btn:disabled{opacity:.4;cursor:not-allowed}.admin-action-btn--nudge{color:var(--muted)}.admin-action-btn--nudge:hover:not(:disabled){color:var(--text)}.admin-action-btn--primary{border-color:#6366f1;color:#4f46e5}.admin-action-btn--primary:hover:not(:disabled){background:#eef2ff;border-color:#4f46e5;color:#4338ca}.admin-action-btn--danger{border-color:#f87171;color:#dc2626}.admin-action-btn--danger:hover:not(:disabled){background:#fee2e2;border-color:#ef4444}.admin-action-btn--muted{border-color:var(--border);color:var(--muted)}.admin-action-btn--muted:hover:not(:disabled){border-color:var(--muted);color:var(--text)}.admin-pagination{display:flex;align-items:center;gap:8px;padding:10px 16px;border-top:1px solid var(--border);font-size:13px}.admin-pagination-info{color:var(--muted);flex:1 1 auto}.admin-pagination-page{color:var(--muted);white-space:nowrap}@media (max-width: 640px){.admin-search-input{width:100%}}:root[data-theme=dark] .admin-date-input{color-scheme:dark}:root[data-theme=dark] .admin-badge--active{background:#14532d;color:#86efac}:root[data-theme=dark] .admin-badge--expired{background:#450a0a;color:#fca5a5}:root[data-theme=dark] .admin-badge--admin{background:#2e1065;color:#c4b5fd}:root[data-theme=dark] .admin-days-tag--ok{background:#14532d;color:#86efac}:root[data-theme=dark] .admin-days-tag--warning{background:#422006;color:#fcd34d}:root[data-theme=dark] .admin-days-tag--expired{background:#450a0a;color:#fca5a5}:root[data-theme=dark] .admin-action-btn--primary{border-color:#818cf8;color:#a5b4fc}:root[data-theme=dark] .admin-action-btn--primary:hover:not(:disabled){background:#1e1b4b;border-color:#a5b4fc;color:#c7d2fe}:root[data-theme=dark] .admin-action-btn--danger{border-color:#7f1d1d;color:#fca5a5}:root[data-theme=dark] .admin-action-btn--danger:hover:not(:disabled){background:#450a0a;border-color:#b91c1c}.admin-setting-row{display:flex;align-items:center;gap:16px;padding:14px 16px;flex-wrap:wrap}.admin-setting-info{display:flex;flex-direction:column;gap:3px;flex:1 1 200px;min-width:0}.admin-setting-label{font-size:14px;font-weight:600}.admin-setting-desc{font-size:12px;color:var(--muted)}.admin-setting-control{display:flex;align-items:center;gap:6px;flex-shrink:0}.admin-number-input{width:72px;padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:13px;outline:none;text-align:right}.admin-number-input:focus{border-color:var(--accent)}.admin-setting-unit{font-size:12px;color:var(--muted);white-space:nowrap}.admin-setting-meta{font-size:11px;color:var(--muted);font-family:monospace;opacity:.7}.subscription-section{margin-top:16px}.billing-panel{display:flex;flex-direction:column;gap:10px}.billing-panel-header{display:flex;align-items:center;gap:10px}.billing-panel-header h2{margin:0;font-size:15px;font-weight:600}.billing-hint{margin:0;font-size:13px}.billing-days-remaining{color:var(--text-muted, #888);font-size:12px}.billing-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.billing-subscribe-btn{padding:8px 20px;font-size:14px}.billing-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:100px;font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}.billing-badge--active{background:color-mix(in srgb,var(--success, #22c55e) 18%,transparent);color:var(--success, #22c55e)}.billing-badge--canceling{background:color-mix(in srgb,var(--warning, #f59e0b) 18%,transparent);color:var(--warning, #f59e0b)}.billing-badge--error{background:color-mix(in srgb,var(--danger, #ef4444) 18%,transparent);color:var(--danger, #ef4444)}.email-verify-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:8px;background:color-mix(in srgb,var(--warning, #f59e0b) 12%,transparent);border:1px solid color-mix(in srgb,var(--warning, #f59e0b) 35%,transparent);font-size:13px;flex-wrap:wrap}.email-verify-banner-body{display:flex;flex-direction:column;gap:2px}.email-verify-banner-detail{color:var(--text-muted, #888)}.email-verify-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap;margin-left:auto}.email-verify-resend-btn{flex-shrink:0;padding:5px 12px;font-size:12px;border-radius:5px;background:transparent;border:1px solid var(--warning, #f59e0b);color:var(--warning, #f59e0b);cursor:pointer;white-space:nowrap}.email-verify-settings-link{color:var(--warning, #f59e0b);font-size:12px;font-weight:600;text-decoration:none;white-space:nowrap}.email-verify-resend-btn:hover:not(:disabled){background:color-mix(in srgb,var(--warning, #f59e0b) 15%,transparent)}.email-verify-settings-link:hover{text-decoration:underline}.email-verify-resend-btn:disabled{opacity:.5;cursor:not-allowed}
