:root{--ink-0: #171310;--ink-1: #211b16;--ink-2: #2a231c;--line: #3a322a;--text: #ece5d8;--muted: #a89e8c;--brass: #d9a441;--brass-hi: #eec05e;--brass-ink: #241a06;--paper: #efe3c8;--paper-2: #e6d6b4;--paper-ink: #2b2118;--ember: #c94f3d;--green: #7fb069;--violet: #9d7bd8;--font-display: "Cinzel", Georgia, serif;--font-ui: system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-ui);background:var(--ink-0);color:var(--text);font-size:14px}code{background:var(--ink-2);padding:1px 5px;border-radius:4px;font-size:.9em;word-break:break-all}button{background:var(--brass);color:var(--brass-ink);border:0;border-radius:6px;padding:7px 14px;cursor:pointer;font-size:14px}button:hover:not(:disabled):not(.content-open){background:var(--brass-hi)}button:disabled{background:var(--ink-2);color:var(--muted);cursor:default;opacity:.7}input,select{background:var(--ink-1);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:7px 10px;font-size:14px}.landing{max-width:560px;margin:60px auto;padding:0 20px}.landing h1{margin-bottom:4px;font-family:var(--font-display);font-weight:700}.badge{display:inline-block;margin-left:.35rem;padding:.1rem .45rem;font-size:.7rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--brass-ink);background:linear-gradient(120deg,var(--brass-hi),var(--brass));border-radius:999px;vertical-align:middle}.tagline{color:var(--muted);margin-top:0}.card{background:var(--ink-1);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:16px 0}.card h2{margin-top:0;font-size:16px;font-family:var(--font-display);font-weight:600}.row{display:flex;gap:8px}.row input{flex:1}.error{color:var(--ember)}.tabletop{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;padding:8px 14px;background:var(--ink-1);border-bottom:1px solid var(--line);flex-wrap:wrap}.brand{font-family:var(--font-display);font-weight:700}.campaign-id{color:var(--muted)}.campaign-id code{color:var(--brass-hi);font-weight:700}.player{color:var(--muted)}.token-picker{display:flex;align-items:center;gap:6px;color:var(--muted)}.map-file-input{display:none}.map-label{color:var(--muted);font-size:13px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar button.active{background:var(--violet);border-color:var(--violet)}.topbar-menu{position:relative}.topbar-menu .menu-items{position:absolute;top:calc(100% + 4px);left:0;z-index:20;display:flex;flex-direction:column;gap:6px;min-width:160px;padding:8px;background:var(--ink-1);border:1px solid var(--line);border-radius:6px}.topbar-menu .menu-items button{text-align:left;white-space:nowrap}.menu-sub-items{display:flex;flex-direction:column;gap:6px;padding-left:12px}.ruler-readout{background:var(--ink-1);border:1px solid var(--line);border-radius:6px;padding:4px 10px;color:var(--brass-hi);font-size:13px;font-weight:600}.canvas-host.ruler-mode,.canvas-host.ruler-mode canvas{cursor:crosshair}.dice-stage{width:100%;height:140px;background:var(--ink-0);border:1px solid var(--line);border-radius:6px;margin-bottom:8px;overflow:hidden}.dice-hint{font-size:11px;color:var(--muted);margin:0 0 8px}.content-library{width:100%;flex-shrink:0;border-right:1px solid var(--line);background:var(--ink-1);padding:12px;display:flex;flex-direction:column;min-height:0;gap:8px}.content-library h2{font-size:15px;margin:0;font-family:var(--font-display);font-weight:600}.content-search{width:100%;box-sizing:border-box}.content-filters{display:flex;flex-wrap:wrap;gap:4px}.content-filters button{font-size:12px;padding:2px 8px}.content-results{list-style:none;margin:0;padding:0;overflow:auto;flex:1}.content-results li{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.content-type{display:block;color:var(--muted);font-size:11px;text-transform:uppercase}.content-error{color:var(--ember);font-size:12px}.content-meta{color:var(--muted);font-size:12px}.content-open{background:none;border:none;color:inherit;text-align:left;padding:0;cursor:pointer;flex:1}.content-row-actions{display:flex;flex-direction:column;gap:4px}.content-detail{overflow:auto;flex:1;font-size:13px}.content-detail h3{margin:8px 0 4px}.content-flavor,.content-look{margin:0 0 8px;font-size:12px;color:var(--ink-2)}.content-statblock{background:var(--ink-0);border:1px solid var(--line);border-radius:4px;padding:8px;font-size:11px;overflow:auto;max-height:240px;color:var(--muted)}.content-markdown{font-size:13px;line-height:1.5;overflow-wrap:break-word}.content-markdown h1,.content-markdown h2,.content-markdown h3{margin:10px 0 4px;line-height:1.3}.content-markdown h1{font-size:18px}.content-markdown h2{font-size:16px}.content-markdown h3{font-size:14px}.content-markdown p{margin:6px 0}.content-markdown ul,.content-markdown ol{margin:6px 0;padding-left:22px}.content-markdown a{color:var(--brass)}.content-markdown pre{background:var(--ink-0);border:1px solid var(--line);border-radius:4px;padding:8px;overflow:auto}.content-markdown code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.content-markdown pre code{background:none;padding:0}.content-detail-actions{display:flex;gap:6px;margin-top:8px}.content-back{font-size:12px;margin-bottom:4px}.main-area{flex:1;display:flex;min-height:0}.canvas-host{flex:1;position:relative;min-width:0;background:var(--ink-0);overflow:hidden}.canvas-host canvas{display:block}.loading{position:absolute;top:40%;width:100%;text-align:center;color:var(--muted);pointer-events:none}.error-boundary{display:flex;flex-direction:column;align-items:center;gap:12px;padding:48px 16px;color:var(--text)}.side-panel{width:280px;flex-shrink:0;border-right:1px solid var(--line);background:var(--ink-1);padding:12px;display:flex;flex-direction:column;gap:8px;min-height:0;overflow-y:auto;font-size:13px}.side-panel h2{font-size:15px;margin:0 0 4px;font-family:var(--font-display);font-weight:600}.hp-unset{color:var(--brass-hi, var(--brass));font-style:italic}.pace-option{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.travel-char-exhaustion{display:inline-flex;align-items:center;gap:6px}.side-panel .row-fields{display:flex;flex-wrap:wrap;gap:6px}.side-panel label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.side-panel ul{list-style:none;margin:0;padding:0}.side-panel li{padding:6px 0;border-bottom:1px solid var(--line)}.sheet-fields{display:flex;flex-direction:column;gap:8px}.sheet-fields h3{font-size:13px;margin:6px 0 0;color:var(--text)}.sheet-ability-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.sheet-ability-row{display:flex;align-items:center;gap:4px}.sheet-ability input{width:56px}.sheet-mod{color:var(--brass-hi);font-variant-numeric:tabular-nums}.sheet-check-grid{display:flex;flex-direction:column;gap:4px}.sheet-fields .sheet-check{display:flex;flex-direction:row;align-items:center;gap:6px}.sheet-derived{margin:0;color:var(--muted)}.sheet-legacy-notice{margin:0;color:var(--brass-hi)}.sheet-legacy-json{margin:0;padding:6px;background:var(--ink-0);border:1px solid var(--line);border-radius:6px;font-size:11px;white-space:pre-wrap;word-break:break-word}.sheet-edit-gate{display:flex;flex-direction:column;gap:8px;border:none;padding:0;margin:0;min-width:0}.sheet-readonly-note{margin:0;font-size:12px;font-style:italic;color:var(--brass-hi)}.sheet-inventory summary{cursor:pointer;color:var(--muted)}.sheet-inventory-empty{margin:4px 0 0;color:var(--muted)}.chat-panel{width:280px;border-left:1px solid var(--line);border-right:0}.combatant-active{background:var(--ink-2);border-left:3px solid var(--brass-hi);padding-left:6px}.combatant-list{list-style:none;margin:0;padding:0}.stat-block-editor textarea{width:100%;font-family:var(--font-ui);font-size:13px;line-height:1.4;background:var(--ink-1);color:var(--text);border:1px solid var(--line);border-radius:6px;padding:7px 10px;resize:vertical}.stat-block-editor textarea.sb-json{font-family:ui-monospace,monospace;font-size:12px;background:var(--ink-0)}.stat-block-editor input:focus,.stat-block-editor select:focus,.stat-block-editor textarea:focus{border-color:color-mix(in srgb,var(--brass) 55%,var(--line))}.init-edit{width:56px}.death-bubbles.ok .filled{color:var(--green)}.death-bubbles.fail .filled{color:var(--ember)}button.active{outline:2px solid var(--brass-hi)}.dice-panel{width:300px;flex-shrink:0;border-left:1px solid var(--line);background:var(--ink-1);padding:12px;display:flex;flex-direction:column;min-height:0}.dice-panel h2{font-size:15px;margin:0 0 8px;font-family:var(--font-display);font-weight:600}.dice-controls{display:flex;gap:6px}.dice-controls input{width:90px;min-width:0}.roll-log{list-style:none;margin:10px 0 0;padding:0;overflow-y:auto;flex:1;font-size:13px}.roll-log li{padding:6px 8px;border-bottom:1px solid var(--line);line-height:1.45}.roll-log .empty{color:var(--muted);border:0}.statusbar{display:flex;gap:18px;padding:6px 14px;background:var(--ink-1);border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);align-items:center;flex-wrap:wrap}.notice{color:var(--brass-hi)}.hint{margin-left:auto}.landing{max-width:none;margin:0;padding:0;min-height:100vh;display:flex;flex-direction:column;align-items:center;background:radial-gradient(ellipse 55% 42% at 50% 26%,color-mix(in srgb,var(--brass) 14%,transparent),color-mix(in srgb,var(--brass) 4%,transparent) 45%,transparent 72%),var(--ink-0)}.landing .hero{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;gap:14px;padding:72px 24px 32px}.landing .d20mark{color:var(--brass);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--brass) 35%,transparent))}.landing .wordmark{margin:6px 0 0;font-family:var(--font-display);font-size:48px;font-weight:700;letter-spacing:.16em;background:linear-gradient(180deg,var(--brass-hi),var(--brass));-webkit-background-clip:text;background-clip:text;color:transparent}.landing .tagline{margin:0 0 14px;color:var(--muted);font-size:15px}.landing .card{width:100%;margin:0;box-shadow:0 8px 24px #00000073,0 2px 6px #00000059}.landing .signed-in{margin:0;color:var(--muted);font-size:13px;text-align:center}.landing .auth-card,.landing .setup-card{overflow:hidden;padding:0 0 20px}.landing .auth-card:before{content:"";display:block;height:4px;background:linear-gradient(90deg,transparent,var(--paper) 22%,var(--paper) 78%,transparent);opacity:.85}.landing .auth-tabs{display:flex;margin:16px 20px 0;border-bottom:1px solid var(--line)}.landing .auth-tab{flex:1;background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:10px 4px;cursor:pointer}.landing .auth-tab:hover:not(:disabled){background:none;color:var(--text)}.landing .auth-tab.active{color:var(--brass);border-bottom-color:var(--brass);outline:none}.landing .field{display:flex;flex-direction:column;gap:6px;margin:14px 20px 0}.landing .field>span{font-size:12px;color:var(--muted)}.landing .input{background:var(--ink-0);border:1px solid var(--line);border-radius:8px;padding:8px 12px;color:var(--text);outline:none}.landing .input::placeholder{color:var(--muted)}.landing .input:focus{border-color:var(--brass);box-shadow:0 0 0 3px color-mix(in srgb,var(--brass) 15%,transparent)}.landing .btn-brass{background:linear-gradient(180deg,var(--brass-hi),var(--brass));color:var(--brass-ink);border:1px solid transparent;border-radius:8px;padding:9px 16px;font-weight:600;box-shadow:0 2px 8px color-mix(in srgb,var(--brass) 25%,transparent),inset 0 1px #ffffff40}.landing .btn-brass:hover:not(:disabled){background:linear-gradient(180deg,var(--brass-hi),var(--brass));filter:brightness(1.06)}.landing .btn-ghost{background:none;border:1px solid var(--line);border-radius:8px;padding:9px 16px;color:var(--muted);font-weight:600}.landing .btn-ghost:hover:not(:disabled){background:none;color:var(--brass);border-color:color-mix(in srgb,var(--brass) 55%,transparent)}.landing .btn-block{width:calc(100% - 40px);margin:18px 20px 0}.landing .btn-sm{padding:6px 12px;font-size:13px}.landing .tables{width:100%;margin-top:28px}.landing .tables>h2{margin:0 0 10px;font-family:var(--font-display);font-size:13px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.landing .table-cards{display:flex;flex-direction:column;gap:8px}.landing .table-card{padding:14px 16px;transition:background .12s ease}.landing .table-card:hover{background:var(--ink-2)}.landing .table-card.archived:hover{background:var(--ink-1)}.landing .table-card-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.landing .table-card h3{margin:0;font-family:var(--font-display);font-size:16px;font-weight:600}.landing .table-card .meta{margin:4px 0 0;font-size:12px;color:var(--muted)}.landing .table-card-top .meta{margin:0;font-family:var(--font-ui);font-size:11px;font-weight:400}.landing .table-card-actions{display:flex;gap:8px;margin-top:10px}.landing .archived-toggle{margin-top:10px}.landing .table-cards.archived{margin-top:8px}.landing .pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;flex:none}.landing .pill-brass{background:color-mix(in srgb,var(--brass) 16%,transparent);color:var(--brass-hi);border:1px solid color-mix(in srgb,var(--brass) 45%,transparent)}.landing .pill-violet{background:color-mix(in srgb,var(--violet) 14%,transparent);color:var(--violet);border:1px solid color-mix(in srgb,var(--violet) 45%,transparent)}.landing .pill-muted{background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted);border:1px solid var(--line)}.landing .setup-card h2{margin:16px 20px 0}.landing .invite-preview{margin:10px 20px 0}.landing .error{width:100%;margin:0}.landing .landing-foot{margin-top:auto;padding:28px 0;font-size:12px;color:var(--muted)}.tabletop{display:grid;grid-template-rows:44px minmax(0,1fr) 28px;height:100%}.topbar{gap:16px;padding:0 12px;flex-wrap:nowrap;position:relative;z-index:30}.topbar-brand{display:flex;align-items:center;gap:9px;color:var(--brass);flex:none}.brand-name{font-family:var(--font-display);font-size:15px;font-weight:600;letter-spacing:.06em;color:var(--text);white-space:nowrap}.menus{display:flex;gap:4px;flex:none}.topbar-menu>button{background:transparent;color:var(--muted);font-size:13px;padding:6px 12px;border-radius:8px}.topbar-menu>button:hover:not(:disabled),.topbar-menu>button.active{background:var(--ink-2);color:var(--brass)}.topbar-menu>button.active{outline:none}.topbar-menu .menu-items{top:calc(100% + 8px);min-width:184px;padding:6px;gap:2px;border-radius:10px;box-shadow:0 8px 24px #00000073,0 2px 6px #00000059}.topbar-menu .menu-items button{width:100%;background:transparent;color:var(--text);font-size:13px;padding:8px 10px;border-radius:6px}.topbar-menu .menu-items button:hover:not(:disabled){background:var(--ink-2);color:var(--text)}.topbar-menu .menu-items button:disabled{background:transparent;color:var(--muted)}.topbar-menu .menu-items button.active{outline:none;color:var(--brass);box-shadow:inset 2px 0 0 var(--brass)}.topbar-menu .menu-sub-items{gap:2px}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:10px;min-width:0}.topbar-right .token-picker{font-size:12px;white-space:nowrap}.topbar-right .token-picker select{padding:3px 6px;font-size:12px;max-width:132px;background:var(--ink-0)}.topbar-right .map-label{flex:none;max-width:120px}.topbar-right .ruler-readout{padding:2px 10px;white-space:nowrap;font-variant-numeric:tabular-nums}.tabletop .pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;flex:none}.tabletop .pill-brass{background:color-mix(in srgb,var(--brass) 16%,transparent);color:var(--brass-hi);border:1px solid color-mix(in srgb,var(--brass) 45%,transparent)}.tabletop .pill-violet{background:color-mix(in srgb,var(--violet) 14%,transparent);color:var(--violet);border:1px solid color-mix(in srgb,var(--violet) 45%,transparent)}.tabletop .pill-muted{background:color-mix(in srgb,var(--muted) 12%,transparent);color:var(--muted);border:1px solid var(--line)}.tabletop .dot{width:8px;height:8px;border-radius:50%;flex:none}.tabletop .dot-green{background:var(--green);box-shadow:0 0 6px color-mix(in srgb,var(--green) 80%,transparent)}.tabletop .dot-brass{background:var(--brass);box-shadow:0 0 6px color-mix(in srgb,var(--brass) 70%,transparent)}.tabletop .dot-ember{background:var(--ember);box-shadow:0 0 6px color-mix(in srgb,var(--ember) 70%,transparent)}.dock{background:var(--ink-1);display:flex;flex-direction:column;min-height:0;flex:none}.dock[hidden]{display:none}.dock-left{width:var(--dock-left-w, 240px);border-right:1px solid var(--line);padding:12px;gap:12px;display:flex;flex-direction:column;position:relative;container-type:inline-size}.dock-left .dock-resizer{position:absolute;right:0;top:0;bottom:0;width:5px;cursor:col-resize;z-index:30;background:transparent;transition:background .12s ease}.dock-left .dock-resizer:hover,body.resizing-dock .dock-left .dock-resizer{background:color-mix(in srgb,var(--brass) 45%,transparent)}.dock-right{width:var(--dock-right-w, 280px);border-left:1px solid var(--line);position:relative;container-type:inline-size}.dock-right .dock-resizer{position:absolute;left:0;top:0;bottom:0;width:5px;cursor:col-resize;z-index:30;background:transparent;transition:background .12s ease}.dock-right .dock-resizer:hover,body.resizing-dock .dock-right .dock-resizer{background:color-mix(in srgb,var(--brass) 45%,transparent)}body.resizing-dock{cursor:col-resize;-webkit-user-select:none;user-select:none}.dock-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.dock-title{font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.dock .dock-toggle{width:24px;height:24px;padding:0;background:var(--ink-2);border:1px solid var(--line);color:var(--muted);border-radius:6px;line-height:1;flex:none}.dock .dock-toggle:hover:not(:disabled){background:var(--ink-2);color:var(--brass)}.dock-rail{width:36px;flex:none;background:var(--ink-1);display:flex;flex-direction:column;align-items:center;padding-top:8px}.dock-rail-left{border-right:1px solid var(--line)}.dock-rail-right{border-left:1px solid var(--line)}.dock-rail .rail-handle{width:24px;height:24px;padding:0;background:var(--ink-2);border:1px solid var(--line);color:var(--muted);border-radius:6px;line-height:1}.dock-rail .rail-handle:hover:not(:disabled){background:var(--ink-2);color:var(--brass)}.dock-right-head{display:flex;align-items:center;gap:4px;border-bottom:1px solid var(--line);padding-right:6px;flex:none}.tabs{display:flex;flex:1;min-width:0}.dock-right .tab{flex:1;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);font-size:12.5px;padding:10px 4px}.dock-right .tab:hover:not(:disabled){background:transparent;color:var(--text)}.dock-right .tab.active{outline:none;background:transparent;color:var(--brass);border-bottom-color:var(--brass)}.dock-body{flex:1;min-height:0;overflow-y:auto;padding:12px}.tab-page[hidden]{display:none}.tab-page>*+*{margin-top:14px}.dock-empty{margin:2px 0 0;color:var(--muted);font-size:12.5px;line-height:1.5}.dock .side-panel,.dock .dice-panel,.dock .content-library{width:auto;border:0;background:transparent;padding:0;overflow:visible}.stat-block-editor{overflow-y:auto;max-height:100%;min-height:0;flex:1;display:flex;flex-direction:column;gap:8px}.dock .content-library:has(.stat-block-editor){overflow:hidden;display:flex;flex-direction:column}.dock .content-library>.stat-block-editor{overflow-y:auto}.sb-llm-generate{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--brass) 30%,var(--line));border-radius:10px;background:color-mix(in srgb,var(--brass) 6%,var(--ink-1))}.sb-llm-generate h4{margin:0}.sb-llm-generate textarea{width:100%;font-size:14px;background:var(--ink-0)}.sb-llm-generate .hint{font-size:12px;color:var(--muted);margin:0}@keyframes sb-flash{0%{background-color:color-mix(in srgb,var(--brass) 32%,transparent)}to{background-color:transparent}}.stat-block-editor .sb-filled{animation:sb-flash 1.6s ease-out;border-radius:6px}.sb-gen-summary{margin:0;font-size:12px;color:var(--brass-hi)}.stat-block-editor .btn-primary{background:linear-gradient(180deg,var(--brass-hi),var(--brass));color:var(--brass-ink);font-weight:600;box-shadow:0 2px 8px color-mix(in srgb,var(--brass) 25%,transparent),inset 0 1px #ffffff40}.stat-block-editor .btn-primary:hover:not(:disabled){background:linear-gradient(180deg,var(--brass-hi),var(--brass));filter:brightness(1.06)}.stat-block-editor .btn-ghost{background:none;border:1px solid var(--line);color:var(--muted)}.stat-block-editor .btn-ghost:hover:not(:disabled){background:none;color:var(--brass);border-color:color-mix(in srgb,var(--brass) 55%,transparent)}.sb-gen-toggle{align-self:flex-start}.sb-editor-fields{display:flex;flex-direction:column;gap:8px}.sb-editor-fields>button{align-self:flex-start}.stat-block-editor .sheet-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 8px}.stat-block-editor .sheet-check{display:flex;flex-direction:row;align-items:center;gap:6px}.stat-block-editor .sheet-ability-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-block-editor .sheet-ability input{width:100%;min-width:0}.sb-attack-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:6px;align-items:center}.sb-attack-row input{width:100%;min-width:0}.sb-attack-row .sb-attack-remove{grid-column:3;grid-row:1 / span 2;align-self:center;padding:4px 8px}.sb-preview{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:8px}.sb-preview h4{margin:0}.sb-preview-invalid{margin:0;font-size:12px;font-style:italic;color:var(--muted)}.dock-left .content-library{flex:1;min-height:0;gap:8px;overflow-y:auto}.stat-block-view{overflow:auto;width:100%;flex-shrink:0}@container (min-width: 420px){.content-library .stat-block-view .sb-abilities{gap:10px}.content-library .stat-block-view .sb-ability{min-width:52px}.content-library .stat-block-editor .row-fields{flex-wrap:nowrap}}@container (min-width: 520px){.content-library .stat-block-view .sb-chip-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}.content-library .stat-block-editor .sheet-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:2px 12px}.content-library .stat-block-editor .sb-editor-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;align-items:start}}@container (min-width: 640px){.content-library .stat-block-view .sb-abilities{gap:12px}.content-library .stat-block-view .sb-ability{min-width:58px}}.dock .content-library>h2,.dock .dice-panel>h2,.dock .chat-panel>h2{display:none}.dock .dice-stage{height:170px;background:color-mix(in srgb,var(--violet) 8%,transparent);border:1px solid color-mix(in srgb,var(--violet) 25%,transparent);border-radius:10px;box-shadow:inset 0 2px 12px #0000008c;margin-bottom:10px}.dice-tray{display:flex;align-items:center;gap:6px;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--ink-1);flex-shrink:0}.dice-tray-formula{flex:1;min-width:0;padding:4px 8px;font-size:12px;font-family:var(--font-mono);background:var(--ink-2);color:var(--text);border:1px solid var(--line);border-radius:4px}.dice-tray-mode{padding:4px 6px;font-size:11px;background:var(--ink-2);color:var(--text);border:1px solid var(--line);border-radius:4px;max-width:90px}.dice-tray-target{width:56px;padding:4px 6px;font-size:12px;background:var(--ink-2);color:var(--text);border:1px solid var(--line);border-radius:4px;text-align:center}.dice-tray-mode-static{padding:4px 8px;font-size:11px;font-weight:600;color:var(--brass);background:var(--ink-2);border:1px solid var(--line);border-radius:4px;text-transform:uppercase}.dice-tray-quick{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px}.dice-tray-quick-btn{padding:2px 8px;font-size:11px;font-family:var(--font-mono);background:var(--ink-2);color:var(--text);border:1px solid var(--line);border-radius:4px;cursor:pointer}.dice-tray-quick-btn:hover:not(:disabled){background:var(--ink-3);color:var(--brass)}.dice-tray-roll{padding:4px 12px;font-size:12px;font-weight:600;background:var(--brass);color:var(--ink-0);border:none;border-radius:4px;cursor:pointer;flex-shrink:0}.dice-tray-roll:hover:not(:disabled){background:var(--brass-hi)}.dice-tray-roll:disabled{opacity:.5;cursor:not-allowed}.dock .dice-controls{flex-wrap:wrap}.dock .dice-controls input{flex:1;width:auto;min-width:72px}.dock .dice-controls select{padding:7px 6px;font-size:12.5px}.dock .roll-log{font-size:12.5px}.dice-results .dice-stage{height:150px}.dice-results.compact .dice-stage{height:110px}.dice-results.compact{margin-bottom:10px;padding:8px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--ink-2) 60%,transparent)}.dice-results.compact .roll-log{margin-top:6px;max-height:120px;overflow-y:auto}.dock .roll-log li{border-bottom:0;border-radius:8px;padding:7px 10px}.dock .roll-log li:hover{background:var(--ink-2)}.statusbar{gap:14px;padding:0 12px;font-size:12px;flex-wrap:nowrap;overflow:hidden;white-space:nowrap}.statusbar .status-item{display:inline-flex;align-items:center;gap:7px;flex:none}.statusbar button{padding:1px 10px;font-size:12px}.statusbar .hint{margin-left:0}.status-right{margin-left:auto;display:inline-flex;align-items:center;gap:14px;min-width:0}.status-right .cmd-hint{display:inline-flex;align-items:center;gap:6px;flex:none}.tabletop .kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;background:var(--ink-2);color:var(--muted);font-size:11px;line-height:1}.tabletop>.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;background:color-mix(in srgb,var(--ink-0) 70%,transparent)}.tabletop>.modal-backdrop .modal{background:var(--ink-1);border:1px solid var(--line);border-radius:10px;box-shadow:0 24px 70px #0009,0 4px 16px #0006;padding:16px 18px;max-width:min(520px,calc(100vw - 48px));max-height:80vh;overflow:auto}.tabletop>.modal-backdrop .modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.6rem}.tabletop>.modal-backdrop .modal-header h3{margin:0;font-size:1.05rem}.tabletop>.modal-backdrop .close-btn{background:none;border:none;color:var(--ink-3, #8a847a);font-size:1.3rem;line-height:1;cursor:pointer;padding:2px 6px}.tabletop>.modal-backdrop .close-btn:hover{color:var(--brass, #d9a441)}.tabletop>.modal-backdrop .modal-footer{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.8rem}.tabletop>.modal-backdrop .cast-spell-list{margin-bottom:.8rem;max-height:260px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:.3rem}.cast-spell-search{width:100%;margin:.25rem 0 .4rem}.cast-level-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:.4rem}.cast-level-chips button{font-size:11px;padding:2px 6px}.tabletop>.modal-backdrop .spell-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.tabletop>.modal-backdrop .spell-list .spell-name{flex:1 1 auto;min-width:0}.tabletop>.modal-backdrop .spell-list .content-meta{flex:0 0 auto;white-space:nowrap}.tabletop>.modal-backdrop .spell-list button{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;width:100%;text-align:left;background:none;border:1px solid transparent;border-radius:4px;padding:4px 6px;cursor:pointer;color:var(--ink-4, #efe9dc);font-size:.85rem}.tabletop>.modal-backdrop .spell-list button:hover{border-color:var(--line);background:var(--ink-2, #2a231c)}.tabletop>.modal-backdrop .spell-list button.active{border-color:var(--brass, #d9a441)}.tabletop>.modal-backdrop .cast-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem .6rem;margin:.6rem 0}.tabletop>.modal-backdrop .cast-fields label{display:flex;flex-direction:column;gap:.2rem;font-size:.78rem;color:var(--ink-3, #8a847a)}.tabletop>.modal-backdrop .cast-fields input,.tabletop>.modal-backdrop .cast-fields select{background:var(--ink-0, #171310);color:var(--ink-4, #efe9dc);border:1px solid var(--line);border-radius:4px;padding:4px 6px;font-size:.85rem}.tabletop>.modal-backdrop .form-error{color:#e07060;font-size:.82rem;margin:.3rem 0 0}.mesh-progress{display:flex;flex-direction:column;gap:.3rem;margin:.5rem 0;min-width:200px}.mesh-progress-track{height:6px;border-radius:3px;background:var(--ink-2, #2a231c);overflow:hidden}.mesh-progress-fill{height:100%;border-radius:3px;background:var(--brass, #d9a441);transition:width .6s ease}.mesh-progress-label{font-size:.8rem;color:var(--muted, #a89e8c)}@media (prefers-reduced-motion: reduce){.mesh-progress-fill{transition:none}}.character-sheet{width:100%;flex-shrink:0}.character-sheet,.journal-panel,.handout-panel{--ink-soft: color-mix(in srgb, var(--paper-ink) 65%, var(--paper));--ink-line: color-mix(in srgb, var(--paper-ink) 35%, var(--paper-2));--paper-edge: color-mix(in srgb, var(--paper-2) 82%, var(--paper-ink));--brass-deep: color-mix(in srgb, var(--brass) 55%, var(--paper-ink));--ink-rule: color-mix(in srgb, var(--paper-ink) 35%, transparent);background:var(--paper);color:var(--paper-ink);border-color:var(--paper-edge);box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass-deep) 16%,transparent)}@container (min-width: 540px){.character-sheet .sheet-ability-grid{grid-template-columns:repeat(6,1fr)}.character-sheet .sheet-check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}}@container (min-width: 700px){.character-sheet .sheet-fields{flex-direction:row;flex-wrap:wrap;align-items:flex-start}.character-sheet .sheet-fields h3,.character-sheet .sheet-fields .row-fields,.character-sheet .sheet-fields .sheet-ability-grid,.character-sheet .sheet-fields .sheet-check-grid,.character-sheet .sheet-fields .sheet-derived{flex:1 1 100%}.character-sheet .sheet-fields>label{flex:1 1 45%;min-width:200px}.character-sheet .sheet-check-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.character-sheet h2,.journal-panel h2,.handout-panel h2{color:var(--paper-ink);font-size:18px;font-weight:700;letter-spacing:.04em;border-bottom:2px solid var(--ink-rule);padding-bottom:6px}.character-sheet h3,.journal-panel>h3,.handout-panel>h3{font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--ember);margin:10px 0 2px}.character-sheet label,.journal-panel label,.handout-panel label{color:var(--ink-soft)}.character-sheet input,.character-sheet select,.character-sheet textarea,.journal-panel input,.journal-panel textarea,.handout-panel input,.handout-panel textarea{background:var(--paper-2);color:var(--paper-ink);border:1px solid var(--ink-line)}.character-sheet input::placeholder,.character-sheet textarea::placeholder,.journal-panel input::placeholder,.journal-panel textarea::placeholder,.handout-panel input::placeholder,.handout-panel textarea::placeholder{color:var(--ink-soft)}.character-sheet input:focus,.character-sheet select:focus,.character-sheet textarea:focus,.journal-panel input:focus,.journal-panel textarea:focus,.handout-panel input:focus,.handout-panel textarea:focus{outline:none;border-color:var(--brass-deep);box-shadow:0 0 0 2px color-mix(in srgb,var(--brass) 30%,transparent)}.character-sheet input[type=number]{font-variant-numeric:tabular-nums}.character-sheet input[type=checkbox]{accent-color:var(--paper-ink);width:14px;height:14px}.character-sheet textarea,.journal-panel textarea,.handout-panel textarea{padding:8px 10px;line-height:1.55;resize:vertical}.character-sheet button,.journal-panel button,.handout-panel button{background:transparent;color:var(--paper-ink);border:1.5px solid var(--paper-ink);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600}.character-sheet button:hover:not(:disabled),.journal-panel button:hover:not(:disabled),.handout-panel button:hover:not(:disabled){background:var(--paper-2)}.character-sheet button:focus-visible,.journal-panel button:focus-visible,.handout-panel button:focus-visible{outline:2px solid var(--brass-deep);outline-offset:1px}.character-sheet button:disabled,.journal-panel button:disabled,.handout-panel button:disabled{background:transparent;color:var(--ink-soft);border-color:var(--ink-line);opacity:1}.journal-panel .content-open{background:none;border:0;border-radius:0;padding:0;font-size:inherit;font-weight:400;color:var(--paper-ink)}.journal-panel .content-open:hover:not(:disabled){background:none;color:var(--brass-deep)}.character-sheet li,.journal-panel li,.handout-panel li{border-bottom-color:var(--ink-line)}.character-sheet .content-type,.character-sheet .content-meta,.journal-panel .content-type,.journal-panel .content-meta,.handout-panel .content-type,.handout-panel .content-meta{color:var(--ink-soft)}.death-save-history{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.death-save-history h4{margin:0 0 4px;font-family:var(--font-display);font-size:12px;color:var(--brass)}.death-save-history ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.death-save-history li{font-size:12px;display:flex;align-items:center;gap:6px}.death-save-roll{font-weight:700;font-family:var(--font-mono);min-width:24px}.death-save-outcome{font-size:11px;font-style:italic}.death-save-outcome.revive{color:var(--green)}.death-save-outcome.crit-fail{color:var(--ember)}.death-save-outcome.success{color:var(--green)}.death-save-outcome.fail{color:var(--ember)}.character-sheet .hp-row,.character-sheet .stat-row{gap:8px;flex-wrap:nowrap}.character-sheet .hp-row label,.character-sheet .stat-row label{flex:1 1 0;flex-direction:column-reverse;gap:2px;border:1.5px solid var(--paper-ink);border-radius:8px;background:var(--paper-2);padding:6px 4px 5px;font-size:9.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-align:center;color:var(--ink-soft)}.character-sheet .hp-row label:focus-within,.character-sheet .stat-row label:focus-within{border-color:var(--brass-deep)}.character-sheet .hp-row input,.character-sheet .stat-row input{width:100%;background:transparent;border:0;border-radius:0;padding:0;text-align:center;font-size:16px;font-weight:700;color:var(--paper-ink)}.character-sheet .hp-row input:focus,.character-sheet .stat-row input:focus{box-shadow:none}.character-sheet .xp-meter-row{display:flex;justify-content:space-between;margin-bottom:4px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.character-sheet .xp-meter-nums{font-variant-numeric:tabular-nums;letter-spacing:0;text-transform:none;color:var(--paper-ink)}.character-sheet .xp-meter-bar{height:8px;border:1px solid var(--ink-line);border-radius:999px;background:var(--paper-2);overflow:hidden}.character-sheet .xp-meter-fill{height:100%;background:linear-gradient(90deg,var(--brass),var(--brass-hi))}.character-sheet .sheet-ability-grid{gap:8px}.character-sheet .sheet-ability{align-items:center;text-align:center;border:1.5px solid var(--paper-ink);border-radius:8px;background:var(--paper);padding:8px 4px;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.character-sheet .sheet-ability-row{justify-content:center}.character-sheet .sheet-ability input{width:44px;padding:2px 4px;text-align:center;font-size:15px;font-weight:700}.character-sheet .sheet-ability .sheet-mod{color:var(--brass-deep);font-size:15px;font-weight:700}.character-sheet .sheet-check{color:var(--paper-ink);font-size:12.5px}.character-sheet .sheet-check .sheet-mod{margin-left:auto;color:var(--paper-ink);font-weight:700}.character-sheet .sheet-total-input{width:48px;padding:2px 4px;font-size:12px;text-align:center;background:var(--paper-2);color:var(--paper-ink);border:1px solid var(--ink-line);border-radius:4px;margin-left:4px;flex-shrink:0}.character-sheet .sheet-derived{color:var(--ink-soft)}.character-sheet .sheet-legacy-notice{color:var(--brass-deep);font-weight:600}.character-sheet .sheet-legacy summary,.character-sheet .sheet-inventory summary{color:var(--ink-soft)}.character-sheet .sheet-legacy-json{background:var(--paper-2);border-color:var(--ink-line);color:var(--paper-ink)}.character-sheet .sheet-inventory-empty{color:var(--ink-soft)}.journal-panel .content-detail{border-top:2px solid var(--ink-rule);padding-top:8px}.journal-panel .content-detail h3{font-family:var(--font-display);color:var(--paper-ink);font-size:16px}.journal-panel .content-markdown,.handout-panel .content-markdown{color:var(--paper-ink)}.journal-panel .content-markdown h1,.journal-panel .content-markdown h2,.journal-panel .content-markdown h3,.handout-panel .content-markdown h1,.handout-panel .content-markdown h2,.handout-panel .content-markdown h3{font-family:var(--font-display);color:var(--paper-ink)}.journal-panel .content-markdown a,.handout-panel .content-markdown a{color:var(--ember)}.journal-panel .content-markdown a:hover,.handout-panel .content-markdown a:hover{color:var(--brass-deep)}.journal-panel .content-markdown code,.handout-panel .content-markdown code{background:var(--paper-2);border:1px solid var(--ink-line);color:var(--paper-ink)}.journal-panel .content-markdown pre,.handout-panel .content-markdown pre{background:var(--paper-2);border-color:var(--ink-line);color:var(--paper-ink)}.journal-panel .content-markdown pre code,.handout-panel .content-markdown pre code{background:none;border:0}.journal-panel .content-markdown blockquote,.handout-panel .content-markdown blockquote{margin:6px 0;padding:2px 10px;border-left:3px solid var(--ink-line);color:var(--ink-soft)}.journal-panel .content-markdown hr,.handout-panel .content-markdown hr{border:0;border-top:1px solid var(--ink-line)}.palette-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ink-0) 70%,transparent);z-index:40}.palette-wrap{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;z-index:50;pointer-events:none}.palette{pointer-events:auto;width:480px;max-width:calc(100vw - 48px);background:var(--ink-1);border:1px solid var(--line);border-radius:12px;box-shadow:0 24px 70px #0009,0 4px 16px #0006;overflow:hidden}.palette-input{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line)}.palette-input svg{color:var(--muted);flex:none}.palette-input input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--text);font-size:15px}.palette-input input::placeholder{color:var(--muted)}.palette-list{padding:6px;max-height:322px;overflow:auto}.p-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:8px;border-left:2px solid transparent;font-size:13.5px;cursor:pointer}.p-item svg{color:var(--muted);flex:none}.p-item:hover{background:var(--ink-2)}.p-item.selected{background:var(--ink-2);border-left-color:var(--brass)}.p-item.selected svg{color:var(--brass)}.p-item .hint{margin-left:auto;font-size:11px;color:var(--muted)}.p-empty{padding:14px;color:var(--muted);font-size:13px;text-align:center}.palette-foot{padding:10px 14px 6px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.palette-keys{display:flex;gap:14px;padding:8px 14px 12px;color:var(--muted);font-size:12px}.key-chip{display:inline-flex;align-items:center;gap:6px}.view-toggle{display:flex;gap:2px;flex:none;background:var(--ink-0);border:1px solid var(--line);border-radius:8px;padding:2px}.view-toggle button{background:transparent;color:var(--muted);font-size:12px;padding:3px 10px;border-radius:6px}.view-toggle button:hover:not(.on):not(:disabled){background:var(--ink-2);color:var(--text)}.view-toggle button.on{background:var(--brass);color:var(--brass-ink);font-weight:600}.dock .character-sheet,.dock .journal-panel,.dock .handout-panel{background:var(--paper);border:1px solid var(--paper-edge);border-radius:10px;padding:12px}.tabletop{grid-template-columns:minmax(0,100%)}@media (max-width: 900px){.tabletop{grid-template-rows:auto minmax(0,1fr) 28px}.topbar{flex-wrap:wrap;row-gap:4px;padding-top:6px;padding-bottom:6px}.statusbar .hint,.statusbar .campaign-id{display:none}}.roll-btn{display:inline-flex;align-items:center;justify-content:center;padding:1px 3px;margin-left:2px;border:1px solid var(--brass-deep, #8a6d3b);border-radius:3px;background:transparent;color:var(--brass-hi, #c9a227);cursor:pointer;line-height:1}.roll-btn:hover{background:var(--brass-hi, #c9a227);color:#1a1a1a}.stat-block-view .sb-line{margin:0 0 4px}.stat-block-view .sb-identity{color:var(--muted, #888);font-style:italic}.stat-block-view .sb-vitals{display:flex;gap:12px;font-weight:700}.stat-block-view .sb-abilities{display:flex;gap:8px;margin:6px 0}.stat-block-view .sb-ability{display:flex;flex-direction:column;align-items:center;min-width:44px}.stat-block-view .sb-ability-label{font-size:11px;font-weight:700}.stat-block-view .sb-ability-mod{color:var(--brass-hi, #c9a227);font-variant-numeric:tabular-nums}.stat-block-view .sb-section h4{margin:8px 0 4px}.stat-block-view .sb-chip-row{display:flex;flex-wrap:wrap;gap:4px}.stat-block-view .sb-chip{display:inline-flex;align-items:center;gap:3px;padding:1px 6px;border:1px solid var(--muted, #888);border-radius:10px;font-size:12px}.stat-block-view .sb-chip-prof{border-color:var(--brass-hi, #c9a227);font-weight:700}.stat-block-view .sb-attacks{border-collapse:collapse;width:100%;font-size:12.5px}.stat-block-view .sb-attacks th,.stat-block-view .sb-attacks td{text-align:left;padding:2px 8px 2px 0}.stat-block-view .sb-attacks th{border-bottom:1px solid var(--muted, #888)}.crit-flag{color:#c0392b}.toast-stack{position:fixed;top:12px;right:12px;z-index:1000;display:flex;flex-direction:column;gap:8px;width:min(320px,calc(100vw - 24px));pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--ink-1);color:var(--text);border:1px solid var(--line);border-left:4px solid var(--brass);border-radius:8px;font-size:13.5px;line-height:1.35;box-shadow:0 6px 18px #00000073;animation:toast-in .16s ease-out}.toast-kind-info{border-left-color:var(--brass)}.toast-kind-turn{border-left-color:var(--violet)}.toast-kind-damage{border-left-color:var(--brass-hi)}.toast-kind-danger{border-left-color:var(--ember);background:#2a1712}.toast-msg{flex:1;min-width:0}.toast-dismiss{flex:none;padding:0 2px;background:none;border:0;color:var(--muted);font-size:16px;line-height:1;cursor:pointer}.toast-stack .toast .toast-dismiss:hover{background:none;color:var(--text)}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.token-picker-hint{color:var(--muted);font-style:italic;font-size:13px}.landing .invite-preview strong{color:var(--text);font-weight:600}.landing .invite-preview-preauth{margin:0 20px 16px;padding:10px 14px;border:1px solid var(--line);border-radius:8px;background:var(--ink-1);font-size:13px;text-align:center}.landing .join-id-hint{margin:0 0 10px}.map-empty-state{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px;background:var(--ink-0);text-align:center;pointer-events:none}.map-empty-state-title{margin:0;font-family:var(--font-display);font-size:17px;color:var(--text)}.map-empty-state-sub{margin:0;font-size:13px;color:var(--muted)}.nomap-banner{position:absolute;top:10px;left:50%;transform:translate(-50%);z-index:4;display:flex;align-items:center;gap:10px;max-width:min(520px,calc(100% - 24px));padding:8px 12px;background:var(--ink-1, #1c1814);border:1px solid var(--brass, #b08d57);color:var(--text);font-size:13px;pointer-events:auto}.nomap-banner button{flex-shrink:0}.mobile-dock-toggles,.topbar-more{display:none}.topbar-more-wrap,.topbar-more-panel{display:contents}.dock-scrim{display:none}@media (max-width: 767px){.main-area{position:relative}.dock-scrim{display:block;position:absolute;top:0;right:0;bottom:0;left:0;z-index:15;background:#00000073}.dock-left,.dock-right{position:absolute;top:0;bottom:0;z-index:20;width:min(320px,85vw);box-shadow:0 0 28px #0000008c}.dock-left{left:0}.dock-right{right:0}.dock-rail,.dock-right .dock-resizer,.dock-left .dock-resizer{display:none}.topbar{gap:8px;padding:6px 8px}.brand-name{max-width:40vw;overflow:hidden;text-overflow:ellipsis}.topbar-right{position:relative;flex-wrap:wrap;justify-content:flex-end;row-gap:6px}.mobile-dock-toggles{display:inline-flex;gap:4px}.mobile-dock-toggles button{padding:5px 10px;font-size:12.5px;border-radius:8px;background:var(--ink-2);color:var(--muted)}.mobile-dock-toggles button.active{outline:none;color:var(--brass)}.topbar-more-wrap{display:inline-flex}.topbar-more{display:inline-flex;align-items:center;justify-content:center;padding:4px 11px;font-size:16px;line-height:1;border-radius:8px;background:var(--ink-2);color:var(--muted)}.topbar-more-panel{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:40;flex-direction:column;align-items:stretch;gap:8px;min-width:232px;max-width:calc(100vw - 16px);padding:10px;background:var(--ink-1);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000073,0 2px 6px #00000059}.topbar-more-panel.open{display:flex}.topbar-more-panel .map-label{max-width:none}.topbar-more-panel .token-picker{justify-content:space-between}}.admin-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--ink-0, #141210);color:var(--text, #e8e2d6)}.admin-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 20px;border-bottom:1px solid var(--border, #2a2620);background:var(--ink-1, #1a1714)}.admin-brand{display:flex;align-items:center;gap:12px}.admin-mark{font-size:22px;color:var(--brass, #c4a35a)}.admin-title{font-family:var(--font-display, Cinzel, serif);font-size:16px;letter-spacing:.04em}.admin-sub{font-size:12px;color:var(--muted, #9a9286)}.admin-body{display:grid;grid-template-columns:200px 1fr;flex:1;min-height:0}.admin-nav{display:flex;flex-direction:column;gap:2px;padding:12px 8px;border-right:1px solid var(--border, #2a2620);background:var(--ink-1, #1a1714)}.admin-nav-item{text-align:left;border:0;background:transparent;color:var(--muted, #9a9286);padding:8px 12px;border-radius:6px;cursor:pointer;font:inherit}.admin-nav-item:hover{background:#c4a35a14;color:var(--text, #e8e2d6)}.admin-nav-item.active{background:#c4a35a29;color:var(--brass, #c4a35a);font-weight:600}.admin-main{padding:24px 28px;overflow:auto}.admin-panel h1{margin:0 0 16px;font-family:var(--font-display, Cinzel, serif);font-size:22px}.admin-muted{color:var(--muted, #9a9286)}.admin-error{color:#e07070}.admin-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin:16px 0 24px}.admin-card{background:var(--ink-1, #1a1714);border:1px solid var(--border, #2a2620);border-radius:10px;padding:16px}.admin-card-num{font-size:28px;font-weight:700;color:var(--brass, #c4a35a)}.admin-card-lbl{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #9a9286)}.admin-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:0}.admin-meta dt{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #9a9286)}.admin-meta dd{margin:2px 0 0}.admin-meta dd.ok{color:#6dca8c}.admin-meta dd.bad{color:#e07070}.admin-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:14px}.admin-table th,.admin-table td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border, #2a2620)}.admin-table th{color:var(--muted, #9a9286);font-size:11px;text-transform:uppercase;letter-spacing:.05em}.admin-table tr{cursor:pointer}.admin-table tr:hover td{background:#c4a35a0f}.admin-toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}.admin-toolbar input,.admin-toolbar select{background:var(--ink-1, #1a1714);border:1px solid var(--border, #2a2620);color:var(--text, #e8e2d6);border-radius:6px;padding:6px 10px;font:inherit}.admin-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.btn-danger{background:color-mix(in srgb,var(--ember, #c94f3d) 14%,transparent);border:1px solid color-mix(in srgb,var(--ember, #c94f3d) 55%,transparent);color:var(--ember, #c94f3d)}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--ember, #c94f3d) 26%,transparent);border-color:var(--ember, #c94f3d)}.admin-create-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;padding:14px;margin-bottom:12px;background:var(--ink-1, #211b16);border:1px solid var(--line, #3a322a);border-radius:10px}.admin-create-form input[type=text],.admin-create-form input[type=email],.admin-create-form input[type=password],.admin-create-form select{width:100%;background:var(--ink-0, #171310);border:1px solid var(--line, #3a322a);color:var(--text, #ece5d8);border-radius:6px;padding:6px 10px;font:inherit}.admin-form-field label{display:block;margin-bottom:4px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #a89e8c)}.admin-form-check{display:flex;align-items:center;gap:8px;align-self:end;font-size:13px;color:var(--text, #ece5d8)}.admin-create-actions{display:flex;gap:8px;align-items:center}.df-page{display:block;background:var(--ink-0)}.df-hero{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;isolation:isolate}.df-hero-fallback{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:radial-gradient(ellipse 90% 70% at 50% 30%,color-mix(in srgb,var(--brass) 9%,transparent),transparent 62%),linear-gradient(180deg,var(--ink-1),var(--ink-0) 78%)}.df-hero-fallback:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(color-mix(in srgb,var(--line) 42%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--line) 42%,transparent) 1px,transparent 1px);background-size:46px 46px;opacity:.5;mask-image:radial-gradient(ellipse 75% 60% at 50% 42%,#000 30%,transparent 78%);-webkit-mask-image:radial-gradient(ellipse 75% 60% at 50% 42%,#000 30%,transparent 78%)}.df-hero-fallback:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 45%,transparent 40%,var(--ink-0) 96%)}.df-hero-mount{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.df-hero-mount canvas{display:block;width:100%;height:100%}.df-hero-shade{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;background:linear-gradient(12deg,color-mix(in srgb,var(--ink-0) 88%,transparent) 0%,color-mix(in srgb,var(--ink-0) 42%,transparent) 26%,transparent 52%),linear-gradient(180deg,color-mix(in srgb,var(--ink-0) 55%,transparent),transparent 22%)}.df-plaque{position:absolute;left:clamp(20px,6vw,84px);bottom:clamp(72px,12vh,132px);z-index:3;max-width:620px}.df-plaque-mark{display:inline-flex;align-items:center;justify-content:center;width:58px;height:58px;border:1px solid color-mix(in srgb,var(--brass) 55%,transparent);border-radius:8px;background:color-mix(in srgb,var(--ink-1) 72%,transparent);color:var(--brass);box-shadow:0 0 22px color-mix(in srgb,var(--brass) 22%,transparent),inset 0 1px color-mix(in srgb,var(--brass-hi) 30%,transparent)}.df-wordmark{margin:18px 0 0;font-family:var(--font-display);font-size:clamp(40px,7vw,76px);font-weight:700;line-height:1.04;letter-spacing:.14em;text-transform:uppercase;color:var(--text);text-shadow:0 2px 26px color-mix(in srgb,var(--ink-0) 85%,transparent)}.df-wordmark:after{content:"";display:block;width:96px;height:2px;margin-top:14px;background:linear-gradient(90deg,var(--brass),transparent)}.df-tagline{margin:14px 0 0;font-size:clamp(15px,1.6vw,18px);color:var(--muted);text-shadow:0 1px 12px color-mix(in srgb,var(--ink-0) 80%,transparent)}.df-cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}.df-cta{padding:11px 22px;font-size:15px;transition:transform .15s ease,box-shadow .15s ease,color .15s ease,border-color .15s ease}.df-cta:hover:not(:disabled){transform:translateY(-1px)}.df-cta:focus-visible{outline:2px solid var(--brass);outline-offset:2px}.df-descend{position:absolute;left:50%;bottom:18px;z-index:3;display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 14px;background:none;border:0;color:var(--muted);cursor:pointer}.df-descend:hover{background:none;color:var(--brass)}.df-descend:focus-visible{outline:2px solid var(--brass);outline-offset:2px;border-radius:6px}.df-descend-label{font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase}.df-descend-arrow{color:var(--brass, #d4af6a);font-size:16px;line-height:1;animation:df-bounce 1.9s ease-in-out infinite}@keyframes df-bounce{0%,to{transform:translateY(0);opacity:.65}50%{transform:translateY(7px);opacity:1}}.df-ledger{max-width:1120px;margin:0 auto;padding:clamp(72px,10vw,128px) clamp(20px,5vw,48px);display:flex;flex-direction:column;gap:clamp(72px,9vw,116px)}.df-ledger-row{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);gap:clamp(28px,5vw,72px);align-items:center}.df-ledger-row:nth-child(2n) .df-ledger-copy{order:2}.df-ledger-row:nth-child(2n) .df-artifact{order:1}.df-ledger-index{margin:0;font-family:var(--font-display);font-size:13px;font-weight:700;letter-spacing:.24em;color:color-mix(in srgb,var(--brass) 70%,var(--muted))}.df-ledger-kicker{margin:8px 0 0;font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.df-claim{margin:12px 0 0;font-family:var(--font-display);font-size:clamp(28px,3.6vw,46px);font-weight:700;line-height:1.12;letter-spacing:.01em;color:var(--text)}.df-ledger-body{margin:16px 0 0;max-width:46ch;font-size:15px;line-height:1.65;color:var(--muted)}.df-reveal{opacity:0;transform:translateY(26px);transition:opacity .55s ease,transform .55s ease}.df-reveal.revealed{opacity:1;transform:none}.df-artifact{min-width:0}.df-art{border:1px solid var(--line);border-radius:10px;background:var(--ink-1);box-shadow:0 14px 34px color-mix(in srgb,var(--ink-0) 70%,transparent);transition:transform .2s ease,border-color .2s ease}.df-ledger-row:hover .df-art{transform:translateY(-4px);border-color:color-mix(in srgb,var(--brass) 40%,var(--line))}.df-art-terrain{padding:16px}.df-prompt{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;color:var(--muted);background:var(--ink-0);border:1px solid var(--line);border-radius:6px;padding:9px 12px}.df-prompt-caret{color:var(--brass);margin-right:6px}.df-prompt-arrow{text-align:center;color:color-mix(in srgb,var(--brass) 65%,var(--muted));font-size:13px;padding:6px 0 2px}.df-terrain-strip{position:relative;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:linear-gradient(180deg,var(--ink-0),var(--ink-2))}.df-terrain-strip svg{display:block;width:100%;height:96px}.df-ridge-back{fill:color-mix(in srgb,var(--brass) 16%,transparent)}.df-ridge-front{fill:color-mix(in srgb,var(--brass) 34%,transparent)}.df-terrain-tag{position:absolute;right:8px;top:8px;font-family:var(--font-display);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--brass-hi);background:color-mix(in srgb,var(--ink-0) 78%,transparent);border:1px solid color-mix(in srgb,var(--brass) 40%,transparent);border-radius:999px;padding:3px 9px}.df-art-mini{display:flex;align-items:stretch;gap:18px;padding:18px}.df-portrait{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px solid var(--line);border-radius:8px;background:radial-gradient(circle at 50% 32%,color-mix(in srgb,var(--brass) 14%,transparent),transparent 68%),var(--ink-0);padding:18px 12px}.df-portrait-glyph{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;border:2px solid color-mix(in srgb,var(--brass) 60%,transparent);color:var(--brass-hi);font-family:var(--font-display);font-size:26px;font-weight:700;background:color-mix(in srgb,var(--ink-1) 80%,transparent)}.df-portrait-name{font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.df-mini-stage{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:14px 8px 18px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(180deg,var(--ink-0),var(--ink-1))}.df-mini-silhouette{height:108px;width:auto;fill:color-mix(in srgb,var(--text) 82%,var(--muted));filter:drop-shadow(0 6px 10px color-mix(in srgb,var(--ink-0) 80%,transparent))}.df-mini-base{width:74px;height:12px;margin-top:-4px;border-radius:50%;background:radial-gradient(ellipse at center,color-mix(in srgb,var(--brass) 34%,transparent),transparent 72%)}.df-mini-3d{flex:1;width:100%;min-height:128px}.df-mini-3d canvas{display:block;width:100%;height:100%}.df-art-dice{padding:16px}.df-dice-tray{border:1px solid color-mix(in srgb,var(--violet) 25%,var(--line));border-radius:8px;background:color-mix(in srgb,var(--violet) 8%,transparent),var(--ink-0);box-shadow:inset 0 2px 10px color-mix(in srgb,var(--ink-0) 80%,transparent);padding:14px;display:flex;flex-direction:column;gap:8px}.df-die{position:relative;align-self:flex-start;color:var(--violet);line-height:0}.df-die-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding-top:6px;font-family:var(--font-display);font-size:17px;font-weight:700;color:var(--text);line-height:1}.df-roll-line{font-size:12.5px;color:var(--muted)}.df-roll-line em{color:var(--text);font-style:normal}.df-roll-who{color:var(--brass-hi);font-weight:600}.df-roll-total,.df-roll-dmg{color:var(--text);font-weight:700;font-variant-numeric:tabular-nums}.df-roll-total{color:var(--violet)}.df-dice-note{display:block;margin-top:8px;font-family:var(--font-display);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.df-art-fog{padding:16px}.df-fog-board{display:grid;grid-template-columns:1.2fr .8fr;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--ink-0);min-height:132px}.df-fog-revealed{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:1px;background:var(--line);border-right:1px solid var(--line)}.df-fog-cell{background:var(--ink-0)}.df-fog-cell-lit{background:radial-gradient(circle at 40% 40%,color-mix(in srgb,var(--brass) 20%,transparent),transparent 75%),var(--ink-1)}.df-fog-hidden{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:repeating-linear-gradient(45deg,transparent 0 7px,color-mix(in srgb,var(--muted) 7%,transparent) 7px 8px),var(--ink-0)}.df-fog-ghost{height:52px;width:auto;fill:var(--muted);opacity:.4}.df-fog-label{font-family:var(--font-display);font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);opacity:.7}.df-diptych-wrap{max-width:1120px;margin:0 auto;padding:0 clamp(20px,5vw,48px) clamp(72px,10vw,128px)}.df-diptych-title{margin:0 0 28px;font-family:var(--font-display);font-size:clamp(22px,2.6vw,30px);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--text)}.df-diptych-title:after{content:"";display:block;width:64px;height:2px;margin-top:12px;background:linear-gradient(90deg,var(--brass),transparent)}.df-diptych{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}.df-panel{border-radius:10px;padding:clamp(24px,3vw,36px);transition:transform .2s ease,box-shadow .2s ease}.df-panel:hover{transform:translateY(-3px)}.df-panel-label{margin:0;font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.df-panel-title{margin:12px 0 0;font-family:var(--font-display);font-size:clamp(24px,2.6vw,32px);font-weight:700;letter-spacing:.02em}.df-panel-lede{margin:12px 0 0;font-size:14.5px;line-height:1.6}.df-panel-list{margin:20px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px}.df-panel-list li{display:flex;gap:12px;align-items:flex-start;font-size:14px;line-height:1.55}.df-marker{flex:none;width:9px;height:9px;margin-top:6px;transform:rotate(45deg)}.df-marker-ember{background:var(--ember)}.df-marker-violet{background:var(--violet)}.df-panel-dm{--ink-soft: color-mix(in srgb, var(--paper-ink) 65%, var(--paper));--ink-rule: color-mix(in srgb, var(--paper-ink) 35%, transparent);--paper-edge: color-mix(in srgb, var(--paper-2) 82%, var(--paper-ink));--brass-deep: color-mix(in srgb, var(--brass) 55%, var(--paper-ink));background:var(--paper);color:var(--paper-ink);border:1px solid var(--paper-edge);box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass-deep) 16%,transparent)}.df-panel-dm .df-panel-label{color:var(--ember)}.df-panel-dm .df-panel-title{border-bottom:2px solid var(--ink-rule);padding-bottom:8px}.df-panel-dm .df-panel-lede,.df-panel-dm .df-panel-list li{color:var(--ink-soft)}.df-panel-dm:hover{box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass-deep) 16%,transparent),0 12px 30px color-mix(in srgb,var(--ink-0) 55%,transparent)}.df-panel-party{background:var(--ink-1);color:var(--text);border:1px solid var(--line);box-shadow:0 10px 28px color-mix(in srgb,var(--ink-0) 60%,transparent)}.df-panel-party .df-panel-label{color:var(--violet)}.df-panel-party .df-panel-title{border-bottom:2px solid color-mix(in srgb,var(--violet) 40%,transparent);padding-bottom:8px}.df-panel-party .df-panel-lede,.df-panel-party .df-panel-list li{color:var(--muted)}.df-panel-party:hover{border-color:color-mix(in srgb,var(--violet) 45%,var(--line))}.df-invitation{padding:clamp(64px,9vw,110px) clamp(20px,5vw,48px);background:radial-gradient(ellipse 60% 55% at 50% 0%,color-mix(in srgb,var(--brass) 7%,transparent),transparent 70%),var(--ink-0);scroll-margin-top:24px}.df-notice{position:relative;max-width:560px;margin:0 auto;padding:56px clamp(20px,4vw,40px) 36px;border-radius:10px;--paper-edge: color-mix(in srgb, var(--paper-2) 82%, var(--paper-ink));--brass-deep: color-mix(in srgb, var(--brass) 55%, var(--paper-ink));--ink-rule: color-mix(in srgb, var(--paper-ink) 35%, transparent);background:var(--paper);color:var(--paper-ink);border:1px solid var(--paper-edge);box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass-deep) 16%,transparent),0 18px 48px color-mix(in srgb,var(--ink-0) 75%,transparent);text-align:center}.df-seal{position:absolute;top:-26px;left:50%;transform:translate(-50%) rotate(-6deg);width:64px;height:64px;display:flex;align-items:center;justify-content:center;border-radius:50%;color:color-mix(in srgb,var(--paper) 78%,var(--ember));background:radial-gradient(circle at 36% 32%,color-mix(in srgb,var(--ember) 78%,var(--brass-hi)),var(--ember) 58%,color-mix(in srgb,var(--ember) 68%,var(--paper-ink)) 100%);border:2px solid color-mix(in srgb,var(--ember) 55%,var(--paper-ink));box-shadow:0 6px 16px color-mix(in srgb,var(--ink-0) 65%,transparent),inset 0 2px 4px color-mix(in srgb,var(--paper) 30%,transparent)}.df-notice-title{margin:6px 0 0;font-family:var(--font-display);font-size:clamp(28px,4vw,40px);font-weight:700;color:var(--paper-ink)}.df-notice-sub{margin:12px auto 0;max-width:40ch;font-size:14.5px;line-height:1.6;color:color-mix(in srgb,var(--paper-ink) 72%,var(--paper))}.df-notice .auth-card{margin:26px auto 0;text-align:left}.df-notice .invite-preview{margin:16px 0 0;color:color-mix(in srgb,var(--paper-ink) 75%,var(--paper))}.df-notice .error{margin-top:14px;font-size:13px;color:var(--ember)}.df-footer{border-top:1px solid var(--line);padding:34px clamp(20px,5vw,48px) 42px;display:flex;flex-direction:column;align-items:center;gap:14px}.df-footer-brand{display:flex;align-items:center;gap:10px;color:var(--brass)}.df-footer-name{font-family:var(--font-display);font-size:14px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--text)}.df-footer-links{display:flex;gap:8px}.df-footer-links button{background:none;border:0;padding:6px 12px;font-size:13px;color:var(--muted);cursor:pointer;border-radius:6px}.df-footer-links button:hover{background:var(--ink-2);color:var(--brass)}.df-footer-links button:focus-visible{outline:2px solid var(--brass);outline-offset:1px}.df-footer-line{margin:0;font-size:12.5px;font-style:italic;color:var(--muted)}@media (max-width: 860px){.df-ledger-row{grid-template-columns:1fr;gap:26px}.df-ledger-row:nth-child(2n) .df-ledger-copy{order:1}.df-ledger-row:nth-child(2n) .df-artifact{order:2}.df-diptych{grid-template-columns:1fr}.df-plaque{left:20px;right:20px;bottom:84px}}.ms-trays{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:14px}.ms-head{grid-column:1 / -1;margin:0}.ms-head-kicker{margin:0;font-family:var(--font-display);font-size:11px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.ms-head-line{margin:6px 0 0;font-size:13px;color:var(--muted)}.ms-tray{display:flex;flex-direction:column;gap:10px;padding:16px;background:var(--ink-1);border:1px solid var(--line);border-radius:10px;box-shadow:inset 0 2px 10px color-mix(in srgb,var(--ink-0) 72%,transparent)}.ms-tray-kicker{margin:0;font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--brass) 72%,var(--muted))}.ms-tray-dice{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-height:54px}.ms-die-d20{width:52px;height:52px;flex:none}.ms-die-d20 polygon{fill:color-mix(in srgb,var(--brass) 82%,var(--ink-0));stroke:var(--brass-hi);stroke-width:1.5}.ms-die-d20 text{fill:var(--brass-ink);font-family:var(--font-ui);font-size:13px;font-weight:700}.ms-chip{padding:2px 8px;border:1px solid var(--line);border-radius:999px;background:var(--ink-0);font-size:10.5px;font-weight:600;color:var(--muted)}.ms-die-d100{display:inline-flex;align-items:center;justify-content:center;min-width:64px;height:44px;padding:0 10px;border-radius:8px;background:var(--paper);border:1px solid color-mix(in srgb,var(--paper-ink) 28%,var(--paper));color:var(--paper-ink);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.ms-badge{padding:3px 9px;border:1px solid color-mix(in srgb,var(--brass) 55%,transparent);border-radius:999px;background:color-mix(in srgb,var(--brass) 13%,transparent);font-size:11px;font-weight:700;color:var(--brass-hi)}.ms-die-d6{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;background:color-mix(in srgb,var(--violet) 16%,var(--ink-0));border:1px solid color-mix(in srgb,var(--violet) 38%,var(--line));color:var(--muted);font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.ms-die-d6.is-hit{color:color-mix(in srgb,var(--violet) 55%,var(--text));border-color:color-mix(in srgb,var(--violet) 75%,var(--line));box-shadow:0 0 7px color-mix(in srgb,var(--violet) 40%,transparent)}.ms-target-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--line);border-radius:6px;background:var(--ink-0);color:var(--text);font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.ms-target-label{font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.ms-die-df{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;background:var(--paper);border:1px solid color-mix(in srgb,var(--paper-ink) 30%,var(--paper));color:var(--paper-ink);font-size:16px;font-weight:800}.ms-caption{margin:0;font-size:12px;line-height:1.5;color:var(--muted)}.ms-conv{font-weight:700;color:color-mix(in srgb,var(--brass-hi) 82%,var(--text))}.ai-showcase{display:flex;flex-direction:column;gap:12px;padding:18px;background:var(--ink-1);border:1px solid var(--line);border-radius:12px;box-shadow:inset 0 2px 10px color-mix(in srgb,var(--ink-0) 72%,transparent)}.ai-kicker{margin:0;font-family:var(--font-display);font-size:12px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:color-mix(in srgb,var(--brass) 72%,var(--muted))}.ai-prompt{min-height:58px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--ink-0);font-size:13.5px;line-height:1.5;color:var(--text)}.ai-caret{display:inline-block;width:2px;height:1em;margin-left:2px;vertical-align:text-bottom;background:var(--brass);animation:df-ai-caret 1s steps(1) infinite}@keyframes df-ai-caret{50%{opacity:0}}.ai-card{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:color-mix(in srgb,var(--ink-0) 62%,var(--ink-1));opacity:0;transition:opacity .35s ease}.ai-card.is-visible{opacity:1}.ai-card .stat-block-view>*{animation:df-ai-reveal .9s ease-out both}@keyframes df-ai-reveal{0%{opacity:0;background-color:color-mix(in srgb,var(--brass) 30%,transparent)}to{opacity:1;background-color:transparent}}.ai-summary{margin:0;font-size:12px;color:var(--brass-hi)}.ai-note{margin:0;font-size:11.5px;font-style:italic;color:var(--muted)}@media (prefers-reduced-motion: reduce){.ai-card{transition:none}.ai-card .stat-block-view>*{animation:none}.ai-caret{animation:none}}.pricing{width:100%;margin-top:28px;scroll-margin-top:24px}.pricing-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}.pricing-kicker{margin:0 0 6px;font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--brass)}.pricing-title{margin:0 0 6px;font-family:var(--font-display);font-size:22px;font-weight:600;color:var(--text)}.pricing-sub{margin:0;font-size:13px;color:var(--muted)}.pricing-toggle{position:relative;display:inline-flex;padding:3px;background:var(--ink-1);border:1px solid var(--line);border-radius:999px;flex:none}.pricing-toggle button{position:relative;z-index:1;background:none;border:0;border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer;transition:color .18s ease}.pricing-toggle button[aria-pressed=true]{color:var(--brass-ink)}.pricing-toggle button:hover:not([aria-pressed=true]){background:none;color:var(--text)}.pricing-toggle-thumb{position:absolute;top:3px;bottom:3px;left:3px;width:calc(50% - 3px);border-radius:999px;background:linear-gradient(180deg,var(--brass-hi),var(--brass));box-shadow:0 2px 8px color-mix(in srgb,var(--brass) 30%,transparent);transition:transform .22s ease,width .22s ease}.pricing-toggle[data-cycle=yearly] .pricing-toggle-thumb{transform:translate(100%)}.pricing-save{display:inline-block;margin-left:4px;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em;background:color-mix(in srgb,var(--brass) 20%,transparent);color:var(--brass-hi);transition:background .18s ease,color .18s ease}.pricing-toggle button[aria-pressed=true] .pricing-save{background:color-mix(in srgb,var(--brass-ink) 18%,transparent);color:var(--brass-ink)}.pricing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch}.pricing-card{display:flex;flex-direction:column;gap:14px;background:var(--ink-1);border:1px solid var(--line);border-radius:10px;padding:16px 18px;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.pricing-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--brass) 35%,var(--line));box-shadow:0 10px 26px color-mix(in srgb,var(--ink-0) 70%,transparent)}.pricing-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.pricing-name{margin:0;font-family:var(--font-display);font-size:16px;font-weight:600;color:var(--text)}.pricing-for{margin:3px 0 0;font-size:12px;color:var(--muted)}.pricing-current{flex:none;padding:3px 10px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--brass-ink);background:linear-gradient(120deg,var(--brass-hi),var(--brass))}.pricing-flag{display:inline-block;margin-bottom:6px;padding:2px 8px;border-radius:4px;font-family:var(--font-display);font-size:10px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--brass-ink);background:linear-gradient(120deg,var(--brass-hi),var(--brass))}.pricing-price{display:flex;align-items:baseline;gap:4px}.pricing-amount{font-family:var(--font-display);font-size:34px;font-weight:700;line-height:1;color:var(--text)}.pricing-per{font-size:13px;color:var(--muted)}.pricing-effective{margin:5px 0 0;font-size:11.5px;color:var(--muted)}.pricing-feats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;flex:1}.pricing-feat{position:relative;padding-left:18px;font-size:13px;line-height:1.45;color:var(--muted)}.pricing-feat:before{content:"";position:absolute;left:0;top:.42em;width:5px;height:5px;border-radius:50%;background:var(--brass)}.pricing-feat-lead{color:var(--text);font-weight:600}.pricing-cta{width:100%;border-radius:6px;padding:9px 14px;font-weight:600;font-size:13.5px;transition:filter .15s ease,transform .15s ease}.pricing-cta-brass{background:linear-gradient(180deg,var(--brass-hi),var(--brass));color:var(--brass-ink);border:1px solid transparent;box-shadow:0 2px 8px color-mix(in srgb,var(--brass) 25%,transparent),inset 0 1px color-mix(in srgb,var(--text) 25%,transparent)}.pricing-cta-brass:hover:not(:disabled){background:linear-gradient(180deg,var(--brass-hi),var(--brass));filter:brightness(1.07);transform:translateY(-1px)}.pricing-cta-ghost{background:none;border:1px solid var(--line);color:var(--muted)}.pricing-cta-ghost:hover:not(:disabled){background:none;color:var(--brass);border-color:color-mix(in srgb,var(--brass) 55%,transparent)}.pricing-card-player{border-color:color-mix(in srgb,var(--brass) 45%,var(--line));box-shadow:inset 0 2px color-mix(in srgb,var(--brass) 55%,transparent)}.pricing-card-dm{background:var(--paper);border-color:color-mix(in srgb,var(--paper-ink) 30%,var(--paper));box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass) 16%,transparent)}.pricing-card-dm:hover{border-color:color-mix(in srgb,var(--brass) 55%,var(--paper));box-shadow:inset 0 0 70px color-mix(in srgb,var(--brass) 16%,transparent),0 10px 26px color-mix(in srgb,var(--ink-0) 70%,transparent)}.pricing-card-dm .pricing-name,.pricing-card-dm .pricing-amount{color:var(--paper-ink)}.pricing-card-dm .pricing-for,.pricing-card-dm .pricing-per,.pricing-card-dm .pricing-effective,.pricing-card-dm .pricing-feat{color:color-mix(in srgb,var(--paper-ink) 72%,var(--paper))}.pricing-card-dm .pricing-feat-lead{color:var(--paper-ink)}.pricing-card-dm .pricing-feat:before{background:var(--brass)}.pricing-manage{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:16px}.pricing-manage-btn{width:auto;padding:7px 16px;font-size:13px}.pricing-manage-note{margin:0;font-size:12px;color:var(--muted)}.pricing-error{margin:12px 0 0;text-align:center;font-size:13px;color:var(--ember)}.pricing-reveal{opacity:0;transform:translateY(22px);transition:opacity .5s ease,transform .5s ease}.pricing-reveal.revealed{opacity:1;transform:none}.upgrade-link{background:none;border:0;padding:0 2px;font:inherit;font-weight:700;color:var(--brass);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.upgrade-link:hover:not(:disabled){background:none;color:var(--brass-hi)}.upgrade-link:disabled{background:none;color:var(--muted);opacity:.8}@media (max-width: 860px){.pricing-grid{grid-template-columns:1fr}.pricing-head{align-items:flex-start;flex-direction:column}}@media (prefers-reduced-motion: reduce){.df-descend-arrow{animation:none}.df-reveal,.pricing-reveal{opacity:1;transform:none;transition:none}.pricing-card,.pricing-cta,.pricing-toggle-thumb{transition:none}.pricing-card:hover{transform:none}.df-art,.df-panel,.df-cta{transition:none}.df-ledger-row:hover .df-art,.df-panel:hover{transform:none}}.ptz-dock{position:absolute;bottom:12px;left:12px;z-index:10;background:var(--ink-1);border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--text);box-shadow:0 2px 8px #0006;max-width:180px}.ptz-pad{display:flex;flex-direction:column;align-items:center;gap:2px}.ptz-middle{display:flex;gap:2px}.ptz-btn{width:28px;height:28px;padding:0;font-size:11px;line-height:1;border:1px solid var(--line);background:var(--ink-2);color:var(--text);border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center}.ptz-btn:hover{background:var(--brass);color:var(--ink-0)}.ptz-btn:active{transform:scale(.95)}.ptz-reset{font-size:14px}.ptz-sliders{display:flex;flex-direction:column;gap:4px}.ptz-label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted)}.ptz-label input[type=range]{flex:1;min-width:0;accent-color:var(--brass)}.ptz-value{min-width:32px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.range-ring-size{padding:4px 8px;border-top:1px solid var(--line);margin-top:4px}.range-ring-size label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);flex-direction:row}.range-ring-size input[type=range]{flex:1;min-width:0;accent-color:var(--brass)}.map-opacity-value{min-width:36px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.map-opacity{padding:4px 8px;border-top:1px solid var(--line);margin-top:4px}.map-opacity label{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);flex-direction:row}.map-opacity input[type=range]{flex:1;min-width:0;accent-color:var(--brass)}.range-ring-value{min-width:36px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.saved-encounters-list{max-height:300px;overflow-y:auto;overflow-x:hidden}.df-frame{border:1px solid var(--line);border-radius:10px;background:var(--ink-1);box-shadow:0 14px 34px color-mix(in srgb,var(--ink-0) 70%,transparent);padding:16px 18px;min-width:0}.df-ledger-row:hover .df-frame{transform:translateY(-4px);border-color:color-mix(in srgb,var(--brass) 40%,var(--line));transition:transform .2s ease,border-color .2s ease}.df-frame-kicker{margin:0 0 12px;font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:color-mix(in srgb,var(--brass) 80%,var(--muted))}.df-frame-stage{position:relative;min-height:180px;display:flex;align-items:center;justify-content:center}.df-demo-mount{width:100%;height:200px}.df-frame-caption{margin-top:12px;font-size:12px;line-height:1.5;color:var(--muted)}.df-frame-caption-biomes,.df-frame-caption-minis{display:flex;flex-wrap:wrap;gap:6px}.df-frame-biome,.df-frame-mini-name{display:inline-block;font:inherit;font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:2px 10px;background:transparent;cursor:pointer;transition:color .16s ease,border-color .16s ease,background-color .16s ease}.df-frame-biome:hover,.df-frame-mini-name:hover{color:var(--text);border-color:color-mix(in srgb,var(--brass) 45%,var(--line))}.df-frame-chip--active,.df-frame-chip--active:hover{color:var(--ink-0);background:var(--brass);border-color:var(--brass)}.df-frame-mini-name{color:color-mix(in srgb,var(--violet) 75%,var(--text));border-color:color-mix(in srgb,var(--violet) 35%,var(--line))}.df-frame-mini-name.df-frame-chip--active,.df-frame-mini-name.df-frame-chip--active:hover{color:var(--ink-0);background:color-mix(in srgb,var(--violet) 80%,var(--brass));border-color:color-mix(in srgb,var(--violet) 80%,var(--brass))}.df-frame-terrain .df-demo-mount,.df-frame-mini .df-demo-mount{height:220px}.df-dice-demo{display:flex;flex-direction:column;align-items:center;gap:10px;width:100%}.df-dice-stage{height:170px}.df-dice-roll{font-size:13px;padding:7px 18px}.df-frame-fog .df-demo-mount{height:220px}.df-pricing-wrap{padding:76px clamp(20px,5vw,48px) 90px;display:flex;flex-direction:column;align-items:center}.df-pricing-sub{margin:12px 0 34px;max-width:46ch;text-align:center;font-size:14px;line-height:1.6;color:var(--muted)}.df-pricing-teaser{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:18px;width:100%;max-width:960px}.df-price-card{display:flex;flex-direction:column;align-items:center;gap:6px;padding:30px 22px 26px;border:1px solid var(--line);border-radius:12px;background:var(--ink-1)}.df-price-card-player{border-color:color-mix(in srgb,var(--brass) 45%,var(--line))}.df-price-card-dm{background:var(--paper);border-color:var(--paper-2)}.df-price-card-dm .df-price-name,.df-price-card-dm .df-price-amount,.df-price-card-dm .df-price-per{color:var(--paper-ink)}.df-price-name{margin:0;font-family:var(--font-display);font-size:17px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text)}.df-price-amount{margin:8px 0 0;font-family:var(--font-display);font-size:34px;line-height:1;color:var(--brass-hi)}.df-price-per{margin:0 0 18px;font-size:12px;color:var(--muted)}.df-price-cta{width:100%;padding:11px 16px;border-radius:8px;border:0;font-family:var(--font-display);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}.df-price-cta-brass{color:var(--brass-ink);background:linear-gradient(120deg,var(--brass-hi),var(--brass))}.df-price-cta-brass:hover{filter:brightness(1.06)}.df-price-cta-ghost{color:var(--text);background:transparent;border:1px solid var(--line)}.df-price-cta-ghost:hover{border-color:var(--brass);color:var(--brass-hi)}.df-systems-wrap,.df-ai-wrap{max-width:1120px;margin:0 auto;padding:0 clamp(20px,5vw,48px) clamp(72px,10vw,128px)}.token-action-ring,.combat-float,.turn-hud{position:absolute;z-index:8;transform:translate(-50%,calc(-100% - 12px));background:var(--ink-1);border:1px solid var(--line);border-radius:6px;pointer-events:auto;box-shadow:0 8px 24px #00000073}.token-action-ring{display:flex;flex-direction:column;gap:4px;padding:6px 8px;min-width:148px;max-width:280px}.token-action-ring-name{font-family:var(--font-display);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.token-action-ring-verbs{display:flex;flex-wrap:wrap;gap:4px}.token-action-ring-verbs button{background:transparent;color:var(--text);font-size:12px;padding:4px 8px}.token-action-ring-verbs button:hover:not(:disabled){background:var(--brass);color:var(--brass-ink)}.combat-float{display:flex;flex-direction:column;gap:2px;padding:6px 10px;pointer-events:none;font-size:12px}.combat-float-hit{border-color:var(--green)}.combat-float-miss{border-color:var(--ember)}.combat-float-contest{border-color:var(--brass)}.token-hover-card{position:absolute;transform:translate(-50%,calc(-100% - 8px));pointer-events:none;z-index:18;max-width:220px;padding:8px 10px;background:var(--paper);color:var(--paper-ink);border:1px solid var(--brass);border-radius:8px;box-shadow:0 8px 20px #00000059;display:flex;flex-direction:column;gap:4px}.token-hover-name{font-family:var(--font-display);font-size:14px;font-weight:600}.token-hover-vitals{font-size:12px;font-variant-numeric:tabular-nums}.token-hover-flavor{font-size:12px;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.token-hover-conds{display:flex;flex-wrap:wrap;gap:4px}.token-hover-chip{font-size:11px;padding:1px 6px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--paper-2, var(--paper)) 80%,transparent)}.token-hover-saves{display:flex;gap:10px;font-size:12px;letter-spacing:.08em}.token-hover-saves .ok{color:var(--green)}.token-hover-saves .fail{color:var(--ember)}.token-hover-extra{font-size:11px;color:var(--muted)}.initiative-strip{position:absolute;top:8px;left:50%;transform:translate(-50%);z-index:7;display:flex;gap:6px;max-width:calc(100% - 24px);overflow-x:auto;pointer-events:none}.initiative-chip{pointer-events:auto;background:var(--ink-1);color:var(--text);border:1px solid var(--line);font-size:12px;padding:4px 8px;display:inline-flex;gap:6px;white-space:nowrap}.initiative-chip.active{background:var(--brass);color:var(--brass-ink);outline:none}.initiative-chip-init{color:var(--muted);font-variant-numeric:tabular-nums}.initiative-chip.active .initiative-chip-init{color:var(--brass-ink)}.turn-hud{display:flex;flex-wrap:wrap;gap:4px;padding:4px 6px;transform:translate(-50%,16px)}.turn-hud button{background:transparent;color:var(--text);font-size:11px;padding:3px 7px}.turn-hud button.used{background:var(--ink-2);color:var(--muted);text-decoration:line-through}.turn-hud-surprised{font-family:var(--font-display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ember);width:100%}.status-more{position:relative}.status-more summary{list-style:none;cursor:pointer;width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--line);border-radius:50%;color:var(--muted)}.status-more summary::-webkit-details-marker{display:none}.status-more-panel{position:absolute;right:0;bottom:calc(100% + 8px);z-index:20;display:flex;flex-direction:column;gap:6px;min-width:220px;padding:10px;background:var(--ink-1);border:1px solid var(--line);border-radius:8px;white-space:normal}.tabletop--your-turn .topbar .menus,.tabletop--your-turn .dock--inert{opacity:.45;pointer-events:none}.topbar-more{display:inline-flex;align-items:center;justify-content:center;padding:4px 11px;font-size:16px;line-height:1;border-radius:8px;background:var(--ink-2);color:var(--muted)}.topbar-more-wrap{display:inline-flex;position:relative}@media (min-width: 768px){.topbar-more-panel{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:40;flex-direction:column;align-items:stretch;gap:8px;min-width:232px;padding:10px;background:var(--ink-1);border:1px solid var(--line);border-radius:10px;box-shadow:0 8px 24px #00000073,0 2px 6px #00000059}.topbar-more-panel.open{display:flex}}@media (max-width: 767px){.token-action-ring{left:50%!important;top:auto!important;bottom:12px;transform:translate(-50%);width:min(420px,calc(100% - 16px))}}@media (prefers-reduced-motion: reduce){.token-action-ring,.combat-float{animation:none}}.view-toggle.light-preset{margin-left:6px}.cast-preview{width:160px;height:120px;margin:10px 0;border-radius:8px;overflow:hidden;background:#2a241c;border:1px solid var(--line)}.class-mini-tabs{display:flex;flex-wrap:wrap;gap:4px}.class-mini-tab{font-family:var(--font-display);font-size:11px;padding:3px 8px;background:var(--ink-2);color:var(--muted)}.class-mini-tab.is-on{background:var(--brass);color:var(--brass-ink)}.class-mini-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px;width:100%}.class-mini-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 4px;background:color-mix(in srgb,var(--paper, #f5f0e1) 12%,var(--ink-1));border:1px solid var(--line);color:var(--text);min-height:88px}.class-mini-tile img{width:56px;height:56px;object-fit:cover;border-radius:4px}.class-mini-initial{width:56px;height:56px;display:grid;place-items:center;font-family:var(--font-display);font-size:22px;color:var(--brass);background:var(--ink-0);border-radius:4px}.class-mini-title{font-size:10px;line-height:1.2;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-mini-custom{width:100%;margin-top:6px}.class-mini-custom summary{cursor:pointer;color:var(--muted);font-size:12px}.adventure-gallery{margin-top:2rem}.adventure-gallery h2{margin-bottom:.5rem}.template-filters{display:flex;gap:.5rem;margin-bottom:1rem}.template-filters button{font-size:12px;padding:4px 12px;border:1px solid var(--line);background:none;color:var(--muted);border-radius:999px;cursor:pointer;transition:all .15s}.template-filters button.active{background:var(--brass);color:#1a1610;border-color:var(--brass)}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.template-card{border:1px solid var(--line);border-radius:6px;padding:14px 16px;cursor:pointer;transition:background .12s ease,border-color .15s}.template-card:hover{background:var(--ink-2);border-color:var(--brass)}.template-card-title{font-family:var(--font-display);font-size:14px;font-weight:600;margin:0 0 .5rem}.template-card-desc{font-size:12px;color:var(--muted);margin:0 0 .5rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.template-badges{display:flex;flex-wrap:wrap;gap:4px}.template-badge{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--brass);color:#1a1610;font-weight:500}.template-card-tags{font-size:11px;color:var(--muted);margin:.5rem 0 0}.template-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.template-preview{background:var(--ink-1);border:1px solid var(--line);border-radius:8px;max-width:600px;width:90%;max-height:80vh;overflow:auto;padding:1.5rem;position:relative}.template-preview .modal-close{position:absolute;top:.75rem;right:.75rem;background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}.template-preview .modal-close:hover{color:var(--brass)}.template-story-arc p{font-size:13px;margin:.25rem 0}.template-preview-scenes{max-height:300px;overflow-y:auto;margin:.5rem 0}.template-preview-scene{background:var(--ink-2);border:1px solid var(--line);border-radius:4px;padding:.75rem;margin-bottom:.5rem}.template-preview-scene strong{font-size:13px}
