:root{--bg-base:#08050f;--bg-surface:#100a1c;--bg-elevated:#181028;--bg-soft:#1f1633;--bg-glass:rgba(24,16,40,0.55);--border-faint:rgba(155,120,220,0.10);--border-soft:rgba(155,120,220,0.18);--border-strong:rgba(180,145,240,0.32);--gold:#d4a957;--gold-bright:#f0c668;--gold-glow:rgba(212,169,87,0.25);--purple:#a075ff;--purple-deep:#6b2fcc;--purple-glow:rgba(160,117,255,0.35);--text-primary:#f3ecdc;--text-secondary:#b8a9cf;--text-tertiary:#6f6182;--text-muted:#4a4159;--danger:#ff8a8a;--field-bg:#0c0817;--font-body:"Geist",system-ui,-apple-system,sans-serif;--font-display:"Fraunces","Cormorant Garamond",Georgia,serif;--font-mono:"Geist Mono",ui-monospace,"Cascadia Code",Consolas,monospace;--text-hero:clamp(28px,4vw,44px);--text-h2:26px;--text-h3:20px;--text-reader-h1:34px;--text-lg:18px;--text-base:15px;--text-sm:14px;--text-label:12px;--text-label-sm:11px;--weight-light:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--tracking-tight:-0.015em;--tracking-label:0.06em;--tracking-eyebrow:0.12em;--leading-tight:1.05;--leading-snug:1.3;--leading-body:1.6;--cat-character:rgba(212,169,87,0.70);--cat-npc:rgba(160,117,255,0.75);--cat-location:rgba(107,184,255,0.60);--cat-event:rgba(255,138,138,0.60);--cat-game:rgba(184,169,207,0.60);--cat-organization:rgba(120,200,160,0.65);--cat-species:rgba(230,140,200,0.60);--cat-item:rgba(120,200,220,0.60);--cat-lore:rgba(200,180,120,0.60);--space-1:4px;--space-2:6px;--space-3:8px;--space-4:10px;--space-5:12px;--space-6:14px;--space-7:16px;--space-8:18px;--space-9:22px;--space-10:24px;--space-12:36px;--space-16:48px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:10px;--radius-2xl:12px;--radius-pill:999px;--control-h:40px;--control-h-sm:28px;--icon-button:36px;--app-max:1480px;--reader-max:920px;--gap-grid:16px;--shadow-panel:0 24px 60px rgba(0,0,0,0.55);--shadow-pop:0 12px 30px rgba(0,0,0,0.45);--ring-gold:0 0 0 3px var(--gold-glow);--ring-purple:0 0 0 3px var(--purple-glow);--wash-gold:rgba(212,169,87,0.12);--wash-purple:rgba(160,117,255,0.10);--ease:cubic-bezier(0.4,0,0.2,1);--dur-fast:0.15s;--backdrop:radial-gradient(1200px 600px at 50% -10%,rgba(160,117,255,0.10),transparent 60%),linear-gradient(180deg,rgba(155,120,220,0.035) 1px,transparent 1px),linear-gradient(90deg,rgba(155,120,220,0.03) 1px,transparent 1px),var(--bg-base);--backdrop-size:auto,80px 80px,80px 80px,auto;--logo-plate:#f5efe2;--surface-page:var(--bg-base);--surface-card:var(--bg-surface);--surface-raised:var(--bg-elevated);--text-body:var(--text-primary);--text-meta:var(--text-secondary);--text-faint:var(--text-tertiary);--action-primary:var(--gold);--action-primary-hover:var(--gold-bright);--link:var(--gold);--link-hover:var(--gold-bright);--accent-arcane:var(--purple);--bg:var(--bg-base);--paper:var(--bg-surface);--paper-2:var(--bg-elevated);--ink:var(--text-primary);--muted:var(--text-secondary);--line:var(--border-soft);--reverse:var(--text-primary);--accent:var(--gold);--accent-2:var(--purple)}*{box-sizing:border-box}body{margin:0;background:var(--backdrop);background-size:var(--backdrop-size);background-attachment:fixed;color:var(--text-primary);font-family:var(--font-body);-webkit-font-smoothing:antialiased}.brand-lockup{display:inline-flex;align-items:center;gap:11px;text-decoration:none;margin-bottom:10px}.brand-mark{display:block;flex:none;object-fit:contain}.brand-word{font-family:var(--font-display);font-weight:500;letter-spacing:var(--tracking-tight);color:var(--text-primary);line-height:1}.brand-word b{font-weight:500;color:var(--gold)}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.01em}a{color:var(--gold);text-decoration:none}a:hover{color:var(--gold-bright)}.button,button{border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg-elevated);color:var(--text-primary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;text-decoration:none;font-weight:600;font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;transition:border-color .15s ease,color .15s ease,background .15s ease}.button:hover,button:hover{border-color:var(--gold);color:var(--gold-bright)}.button.secondary,button.secondary{background:transparent;border:1px solid var(--border-soft);color:var(--text-secondary)}button.active{background:var(--gold);border-color:var(--gold);color:#1a130a}.button.small,button.small{min-height:28px;padding:0 10px;font-size:11px;letter-spacing:.04em}button.danger{background:transparent;border-color:rgba(255,138,138,.32)}.button:disabled,button:disabled{opacity:.45;cursor:not-allowed}.button:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.callout-warn{border:1px solid var(--gold);background:var(--wash-gold);border-radius:var(--radius-lg);padding:12px 14px;margin-bottom:12px;display:grid;grid-gap:6px;gap:6px}.callout-warn strong{color:var(--gold-bright);display:inline-flex;align-items:center}.callout-warn span{color:var(--text-secondary);font-size:13px}button.linklike{background:none;border:0;padding:0;min-height:0;display:inline;text-transform:none;letter-spacing:0;font:inherit;color:var(--gold);text-decoration:underline;cursor:pointer}input,select,textarea{width:100%;border:1px solid var(--border-soft);border-radius:var(--radius-md);background:var(--field-bg);color:var(--text-primary);padding:10px;font:14px var(--font-body)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-glow)}textarea{resize:vertical}label{display:grid;grid-gap:6px;gap:6px;color:var(--text-secondary);font-size:var(--text-label);font-weight:500;letter-spacing:.04em;text-transform:uppercase}code,label{font-family:var(--font-mono)}code{background:rgba(160,117,255,.12);border-radius:var(--radius-sm);padding:2px 5px;color:var(--gold-bright)}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;position:relative;isolation:isolate;overflow:hidden}.auth-kinetic{position:fixed;inset:0;z-index:-1;display:flex;align-items:center;overflow:hidden;pointer-events:none;opacity:.1;-webkit-mask-image:radial-gradient(130% 100% at 50% 45%,#000 34%,transparent 100%);mask-image:radial-gradient(130% 100% at 50% 45%,#000 34%,transparent 100%)}.auth-kinetic-stack{display:flex;flex-direction:column;width:100%}.auth-kinetic-row{display:flex;width:max-content;white-space:nowrap;animation:authKineticLeft 28s linear infinite;will-change:transform}.auth-kinetic-row.auth-kinetic-reverse{animation:authKineticRight 36s linear infinite;margin-top:-.08em}.auth-kinetic-row span{font-family:var(--font-display);font-size:clamp(52px,9vw,138px);font-weight:600;letter-spacing:-.02em;line-height:.9;padding:0 .16em}.auth-kinetic-fill{color:var(--gold-bright)}.auth-kinetic-outline{color:transparent;-webkit-text-stroke:1.4px var(--gold)}@keyframes authKineticLeft{to{transform:translateX(-50%)}}@keyframes authKineticRight{0%{transform:translateX(-50%)}to{transform:translateX(0)}}.auth-panel,.panel{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-2xl);color:var(--text-primary);padding:22px;box-shadow:0 24px 60px rgba(0,0,0,.55)}.auth-panel{width:min(440px,100%);display:grid;grid-gap:20px;gap:20px;position:relative;z-index:1}.oauth-login-options{border-top:1px solid var(--border-soft);padding-top:12px}.oauth-login-options summary{color:var(--text-secondary);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.oauth-login-grid{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.app-shell{width:min(1480px,calc(100% - 32px));margin:0 auto;padding:24px 0 48px;color:var(--text-primary)}.dashboard-shell{position:relative;isolation:isolate}.dashboard-shell .auth-kinetic{opacity:.075}.app-shell[data-theme]{position:relative;isolation:isolate}.app-shell[data-theme]:before{content:"";position:fixed;inset:0;z-index:-1;background:var(--backdrop);background-size:var(--backdrop-size)}.app-shell[data-theme=fantasy]:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(233,221,190,.96),rgba(233,221,190,.82) 16%,rgba(233,221,190,.3) 30%,rgba(233,221,190,0) 44%),url(/ornaments/vines-parchment.png) bottom /cover no-repeat}.app-shell[data-theme=fantasy] .panel:not(.side-nav):not(.page-sidebar):not(.player-library):not(.maps-sidebar):not(.graph-filters):not(.graph-detail),.app-shell[data-theme=fantasy] section.band{position:relative}.app-shell[data-theme=fantasy] .panel:not(.side-nav):not(.page-sidebar):not(.player-library):not(.maps-sidebar):not(.graph-filters):not(.graph-detail):before,.app-shell[data-theme=fantasy] section.band:before{content:"";position:absolute;top:-13px;left:-13px;width:72px;height:79px;background:url(/ornaments/corner-tl.png) 0 0/contain no-repeat;pointer-events:none;z-index:3;filter:drop-shadow(0 1px 2px rgba(80,55,20,.28))}.app-shell[data-theme=fantasy] section.band>h2:first-child{padding-left:44px}@media (prefers-reduced-motion:reduce){.auth-kinetic-row,.auth-kinetic-row.auth-kinetic-reverse{animation:none}}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.topbar-actions{display:flex;gap:8px;flex-wrap:wrap}.auth-panel h1,.topbar h1{margin:0;font-size:var(--text-hero);line-height:var(--leading-tight);font-weight:500;letter-spacing:var(--tracking-tight)}.campaign-title-logo{display:block;width:min(280px,44vw);max-height:96px;object-fit:contain;object-position:left center;margin:2px 0 8px}.eyebrow{color:var(--gold);font-family:var(--font-mono);font-size:var(--text-label);font-weight:500;letter-spacing:var(--tracking-eyebrow);margin:0 0 8px;text-transform:uppercase}.muted{color:var(--text-secondary);font-family:var(--font-body)}.quiet-link{color:var(--gold);font-family:var(--font-mono);font-weight:500;text-decoration:none}.stack{display:grid;grid-gap:12px;gap:12px}.inline-form{display:grid;grid-template-columns:1fr auto;grid-gap:8px;gap:8px}.dashboard-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.dashboard-grid-single{grid-template-columns:minmax(0,1fr)}.dashboard-grid-two{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-search-bar{margin:8px 0 10px;width:min(760px,100%)}.dashboard-search-form{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:8px;gap:8px}.dashboard-search-results{display:grid;grid-gap:6px;gap:6px;margin-top:8px}.dashboard-search-results a{align-items:center;background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-lg);color:var(--text-primary);display:grid;grid-gap:4px;gap:4px;grid-template-columns:minmax(0,1fr) auto;padding:9px 12px}.dashboard-search-results a:hover{background:var(--wash-purple);border-color:var(--border-strong)}.dashboard-search-results span,.dashboard-search-results strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-search-results span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label)}.dashboard-toggle-panel{padding:0;overflow:hidden}.dashboard-toggle-panel>summary{align-items:center;cursor:pointer;display:flex;gap:12px;justify-content:space-between;list-style:none;min-height:62px;padding:0 16px}.dashboard-toggle-panel>summary::-webkit-details-marker{display:none}.dashboard-toggle-panel>summary:after{color:var(--gold);content:"+";font-family:var(--font-mono);font-size:var(--text-lg);line-height:1}.dashboard-toggle-panel[open]>summary{border-bottom:1px solid var(--border-soft)}.dashboard-toggle-panel[open]>summary:after{content:"-"}.dashboard-toggle-panel>summary span{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-h3);font-weight:500}.dashboard-toggle-panel>summary small{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.04em;margin-left:auto;text-transform:uppercase}.dashboard-toggle-body{display:grid;grid-gap:14px;gap:14px;padding:16px}.ai-model-list{display:flex;flex-wrap:wrap;gap:8px}.ai-model-list button{min-height:30px;padding:0 10px;font-size:var(--text-label-sm);text-transform:none}.admin-grid{display:grid;grid-template-columns:360px minmax(0,1fr);grid-gap:16px;gap:16px}.admin-wide{grid-column:1/-1}.band{margin-top:18px;padding:22px 0}.band h2{color:var(--text-primary);font-size:var(--text-h2);font-weight:500}.onboarding-hero{border:1px dashed var(--border);border-radius:12px;grid-column:1/-1;padding:32px;text-align:center}.onboarding-hero-icon{font-size:40px;margin-bottom:12px}.onboarding-hero h3{font-size:22px;margin:0 0 12px}.onboarding-hero p{color:var(--muted);margin:0 auto 20px;max-width:480px}.onboarding-feature-list{color:var(--muted);display:inline-block;font-size:13px;list-style:none;margin:20px 0 0;padding:0;text-align:left}.onboarding-feature-list li:before{content:"✓ ";color:var(--gold);font-weight:700}.onboarding-feature-list li{margin-bottom:6px}.repos-band-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:14px}.repos-band-head h2{margin:0}.repo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:12px;gap:12px}.repo-marquee{position:relative;overflow:hidden;padding:8px 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}.repo-marquee-track{display:flex;gap:14px;width:max-content;animation:repoMarquee 28s linear infinite;will-change:transform}.repo-marquee:hover .repo-marquee-track{animation-play-state:paused}.repo-marquee .campaign-card{flex:0 0 230px;width:230px}@keyframes repoMarquee{0%{transform:translateX(0)}to{transform:translateX(-50%)}}@media (prefers-reduced-motion:reduce){.repo-marquee-track{animation:none}}.campaign-card{position:relative;display:grid;justify-items:center;align-content:start;grid-gap:7px;gap:7px;text-align:center;background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-xl);padding:24px 18px 20px;color:var(--text-primary);box-shadow:var(--shadow-pop);transition:border-color .2s ease,transform .2s ease,box-shadow .2s ease}.repo-grid .campaign-card{cursor:-webkit-grab;cursor:grab}.repo-grid .campaign-card.dragging{cursor:-webkit-grabbing;cursor:grabbing;opacity:.55;transform:scale(.98)}.repo-grid .campaign-card.drag-over{border-color:var(--gold);box-shadow:var(--shadow-panel),0 0 0 2px var(--gold-glow)}.campaign-card:hover{border-color:var(--border-strong);transform:translateY(-4px);box-shadow:var(--shadow-panel),0 0 34px -8px var(--gold-glow)}.campaign-card-reorder{display:inline-flex;gap:4px;left:10px;opacity:0;position:absolute;top:10px;transition:opacity .15s ease;z-index:2}.campaign-card:focus-within .campaign-card-reorder,.campaign-card:hover .campaign-card-reorder{opacity:1}.campaign-card-reorder button{align-items:center;background:rgba(0,0,0,.28);border:1px solid var(--border-soft);border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;display:inline-flex;height:26px;justify-content:center;padding:0;width:26px}.campaign-card-reorder button:focus-visible,.campaign-card-reorder button:hover:not(:disabled){background:var(--gold);border-color:var(--gold);color:var(--bg-base)}.campaign-card-reorder button:disabled{cursor:default;opacity:.35}.campaign-card-link{display:contents;color:inherit;text-decoration:none}.campaign-card-link:after{content:"";position:absolute;inset:0;border-radius:inherit}.campaign-card-logo{margin-bottom:8px}.campaign-card-name{font-family:var(--font-display);font-weight:500;font-size:19px;line-height:1.15;letter-spacing:-.01em;color:var(--gold-bright);margin:0}.campaign-card-slug{font-family:var(--font-mono);font-size:12px;color:var(--purple)}.campaign-card-meta{font-family:var(--font-mono);font-size:10.5px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.07em;line-height:1.5}.campaign-card-remove{position:absolute;top:10px;right:10px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:0;background:transparent;color:var(--text-tertiary);border-radius:var(--radius-md);cursor:pointer;opacity:0;z-index:2;font-size:16px;line-height:1;transition:opacity .15s ease,color .15s ease,background .15s ease}.campaign-card-remove:focus-visible,.campaign-card:hover .campaign-card-remove{opacity:1}.campaign-card-remove:hover{color:var(--danger);background:rgba(255,138,138,.12)}.repo-logo-plate{width:140px;height:80px;border-radius:var(--radius-lg);background:var(--logo-plate);display:grid;place-items:center;flex:none;overflow:hidden;padding:8px 14px}.repo-logo-plate-dark{background:var(--bg-base);border:1px solid var(--border-soft)}.repo-logo-plate img{width:100%;height:100%;object-fit:contain}.repo-logo-initial{color:#1a130a;font-family:var(--font-display);font-weight:600;font-size:36px;line-height:1}.campaign-meta-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:8px}.campaign-meta-row .muted{margin:0}.campaign-pack-mark{width:96px;max-width:96px;height:42px;padding:5px 12px;border:1px solid var(--border-soft);box-shadow:var(--shadow-pop)}.campaign-pack-mark img{display:block;max-width:100%;max-height:100%;object-fit:contain}.segmented{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;margin-bottom:12px}.check{display:flex;align-items:center;gap:8px}.check input{width:auto}.results{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.nav-link,.results a{display:grid;grid-gap:3px;gap:3px;border-radius:var(--radius-md);color:inherit;padding:8px;text-decoration:none}.nav-link:hover,.results a:hover{background:rgba(160,117,255,.1)}button.nav-link{background:transparent;border:0;cursor:pointer;font-family:inherit;font-size:var(--text-sm);justify-content:flex-start;letter-spacing:0;min-height:0;text-align:left;text-transform:none;width:100%}button.nav-tree-link{display:flex;justify-content:flex-start}button.nav-link.active{background:var(--wash-gold);color:var(--gold-bright)}.results span{color:var(--text-secondary);font-size:var(--text-label)}.instructions p{max-width:920px;color:var(--text-secondary)}.workspace{display:grid;grid-template-columns:260px minmax(0,1fr);align-items:start;grid-gap:18px;gap:18px}.mobile-nav-toggle{display:none}.page-sidebar,.side-nav{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-xl);color:var(--text-primary);padding:14px;align-self:start;position:-webkit-sticky;position:sticky;top:16px}.nav-group{border-top:1px solid var(--border-soft);margin-top:14px;padding-top:10px}.nav-filter{margin-top:12px}.nav-group-header{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;background:none;border:0;border-radius:0;padding:0;min-height:30px;color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer}.nav-group-header:hover{color:var(--gold);border:0}.nav-count{color:var(--text-tertiary);background:var(--bg-elevated);border-radius:var(--radius-pill);padding:1px 8px;font-size:var(--text-label-sm)}.nav-tree-row{display:flex;align-items:center;gap:5px;min-height:32px}.nav-tree-toggle{display:grid;place-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-sm);min-height:24px;height:24px;padding:0;width:24px;flex:none;color:var(--text-secondary);cursor:pointer}.nav-tree-toggle:focus-visible,.nav-tree-toggle:hover{color:var(--gold);border-color:var(--gold);background:var(--bg-soft)}.nav-tree-spacer{width:24px;flex:none}.nav-tree-link{display:flex;align-items:center;gap:7px;min-width:0}.nav-tree-name{min-width:0;overflow-wrap:anywhere}.nav-tree-child-count{flex:none;min-width:20px;margin-left:auto;padding:1px 6px;border:1px solid var(--border-soft);border-radius:var(--radius-pill);color:var(--text-tertiary);font-family:var(--font-mono);font-size:10px;line-height:16px;text-align:center}.nav-tree-filtered{padding-left:16px}.cat-dot{width:8px;height:8px;border-radius:50%;flex:none}.nav-pinned{align-items:center;gap:7px;margin-bottom:10px;padding:9px 10px;border:1px solid var(--border-soft);border-radius:var(--radius-md);font-weight:600}.nav-pinned,.nav-pinned:hover{background:var(--wash-gold);color:var(--gold-bright)}.nav-pinned:hover{border-color:var(--gold)}.nav-pinned .nav-pinned-add{margin-left:auto;color:var(--text-tertiary);font-size:15px;line-height:1}.breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:12px;font-family:var(--font-mono);font-size:var(--text-label);color:var(--text-tertiary)}.breadcrumbs a{color:var(--text-secondary)}.breadcrumbs a:hover{color:var(--gold)}.breadcrumbs a:after{content:"›";margin-left:6px;color:var(--text-tertiary)}.page-cover{display:block;width:100%;max-height:280px;object-fit:cover;border-radius:var(--radius-lg);border:1px solid var(--border-soft);margin-bottom:18px}.page-cover-clickable{cursor:zoom-in}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));grid-gap:8px;gap:8px;margin:14px 0}.gallery-item{display:block;border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--border-soft);cursor:zoom-in;transition:opacity .15s}.gallery-item:hover{opacity:.85}.gallery-item img{display:block;width:100%;height:120px;object-fit:cover}.lightbox-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.88);display:flex;align-items:center;justify-content:center;cursor:zoom-out}.lightbox-img{max-width:92vw;max-height:90vh;object-fit:contain;border-radius:var(--radius-lg);box-shadow:0 8px 40px rgba(0,0,0,.6);cursor:default}.lightbox-close{position:fixed;top:18px;right:22px;background:rgba(255,255,255,.12);border:none;color:#fff;font-size:22px;line-height:1;width:40px;height:40px;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center}.boards-shell{display:grid;grid-template-columns:260px minmax(0,1fr);grid-gap:0;gap:0;height:calc(100vh - 80px);overflow:hidden}.boards-sidebar{overflow-y:auto;border-right:1px solid var(--border-soft);border-radius:0;padding:16px}.boards-canvas-wrap{overflow:hidden;position:relative;background:var(--bg-root);background-image:radial-gradient(var(--border-faint) 1px,transparent 1px);background-size:20px 20px}.boards-canvas{width:100%;height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.board-node{position:absolute;border:1.5px solid var(--border-soft);border-radius:var(--radius);padding:10px 12px;box-shadow:0 2px 8px rgba(0,0,0,.3);transition:box-shadow .1s,border-color .1s}.board-node.selected{border-color:var(--gold);box-shadow:0 0 0 3px rgba(200,160,50,.25)}.board-node.edge-source{border-color:#3498db;box-shadow:0 0 0 3px rgba(52,152,219,.25)}.board-node-page{background:var(--bg-elevated)}.board-node-group{border:2px dashed var(--border-strong);border-radius:var(--radius-xl);padding:0;background:transparent;position:relative}.board-node-group.selected{border-color:var(--gold)}.board-group-label{top:-1px;left:12px;transform:translateY(-50%);background:var(--bg-surface);padding:2px 10px;border-radius:var(--radius-pill);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);border:1px solid var(--border-soft);pointer-events:none;white-space:nowrap}.board-group-label,.board-group-resize{position:absolute;font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.board-group-resize{bottom:4px;right:6px;width:18px;height:18px;line-height:18px;text-align:center;color:var(--text-muted);cursor:se-resize}.board-node-label{font-weight:600;font-size:13px;color:var(--text-primary);line-height:1.3}.board-node-hint{font-size:11px;color:var(--text-tertiary);margin-top:3px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em}.board-node-text{font-size:13px;color:var(--text-secondary);white-space:pre-wrap;line-height:1.4}.board-page-picker{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:100}.board-page-picker-inner{width:420px;max-height:70vh;display:flex;flex-direction:column;gap:10px}.board-page-picker-list{overflow-y:auto;flex:1 1}.maps-grid{display:grid;grid-template-columns:280px minmax(0,1fr);grid-gap:16px;gap:16px}.maps-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;flex-wrap:wrap}.map-canvas{position:relative;display:inline-block;max-width:100%;border:1px solid var(--border-soft);border-radius:var(--radius-lg);overflow:hidden}.map-canvas.placing{cursor:crosshair;outline:2px solid var(--gold)}.map-canvas img{display:block;max-width:100%;height:auto}.map-pin{position:absolute;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;width:28px;height:28px;min-height:0;padding:0;border-radius:50%;background:transparent;border:2px solid transparent;cursor:pointer;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6))}.map-pin-icon{font-size:20px;line-height:1;pointer-events:none}.map-pin.map-pin-image{width:36px;height:36px;border-radius:50%;padding:0;overflow:hidden;border:2px solid var(--border-strong);background:var(--bg-elevated)}.map-pin.map-pin-image.editing{border-color:var(--gold)}.map-pin-portrait{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.map-pin.editing{border-color:var(--gold);border-radius:50%;box-shadow:0 0 0 3px rgba(200,160,50,.35)}.map-pin.unlinked .map-pin-icon{opacity:.5}.map-pin.map-pin-undiscovered{opacity:.55}.map-pin.map-pin-undiscovered:after{content:"";position:absolute;inset:-4px;border:1px dashed rgba(155,120,220,.55);border-radius:50%;pointer-events:none}.map-pin.map-pin-undiscovered .map-pin-icon{filter:grayscale(.7)}.map-pin-label{position:absolute;left:50%;top:-4px;transform:translate(-50%,-100%);white-space:nowrap;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:1px 6px;font-family:var(--font-mono);font-size:var(--text-label-sm);color:var(--text-primary);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease);z-index:10}.map-pin:hover .map-pin-label{opacity:1}.map-pin-row{display:grid;grid-template-columns:1fr 1fr auto;grid-gap:6px;gap:6px;margin-bottom:6px}.map-layer-row{display:flex;align-items:center;gap:6px;padding:4px 0;border-bottom:1px solid var(--border-faint)}.map-layer-eye{background:transparent;border:none;padding:0 4px;min-height:0;font-size:14px;color:var(--text-secondary);cursor:pointer}.map-layer-name{flex:1 1;font-size:13px;color:var(--text-secondary);border-radius:var(--radius-sm);padding:1px 4px}.map-layer-name.active{color:var(--text-primary);font-weight:600;background:var(--bg-subtle)}.map-layer-vis{font-size:11px;padding:1px 4px;height:auto;min-height:0}.map-icon-grid{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.map-icon-btn{width:34px;height:34px;min-height:0;padding:0;font-size:18px;background:var(--bg-subtle);border:1.5px solid transparent;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center}.map-icon-btn.active{border-color:var(--gold);background:rgba(200,160,50,.12)}.fork-page-grid{border:1px solid var(--border-soft);border-radius:var(--radius-md);max-height:320px;overflow-y:auto}.fork-page-row{align-items:center;border-bottom:1px solid var(--border-faint);cursor:pointer;display:flex;gap:8px;padding:8px 12px;font-size:13px}.fork-page-row:last-child{border-bottom:none}.fork-page-row:hover{background:var(--bg-subtle)}.fork-page-row.selected{background:rgba(200,160,50,.08)}.fork-page-row input[type=checkbox]{flex-shrink:0}.map-overlay-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}.map-overlay-svg line,.map-overlay-svg rect,.map-overlay-svg text{pointer-events:visibleStroke}.map-overlay-svg g{pointer-events:auto;cursor:pointer}.map-pin.route-from{border-color:var(--gold);box-shadow:0 0 0 4px rgba(200,160,50,.4);animation:route-pulse 1s ease-in-out infinite}@keyframes route-pulse{0%,to{box-shadow:0 0 0 4px rgba(200,160,50,.4)}50%{box-shadow:0 0 0 8px rgba(200,160,50,.15)}}.map-pin.journey-visited{border-color:#4a90d9;opacity:.75}.map-pin.journey-current{border-color:#4a90d9;box-shadow:0 0 0 5px rgba(74,144,217,.35);animation:journey-pulse 1.8s ease-in-out infinite}@keyframes journey-pulse{0%,to{box-shadow:0 0 0 5px rgba(74,144,217,.35)}50%{box-shadow:0 0 0 10px rgba(74,144,217,.1)}}.map-pin-editor{display:grid;grid-gap:10px;gap:10px;background:var(--bg-subtle);border:1px solid var(--border-soft);border-radius:var(--radius);padding:12px;margin-bottom:12px}.map-pin-list{display:grid;grid-gap:4px;gap:4px}.map-pin-list-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px}.map-pin-list-row:hover{background:var(--bg-subtle)}.nav-group h3,.page-sidebar h3{align-items:center;color:var(--text-tertiary);display:flex;font-family:var(--font-mono);font-size:var(--text-label);gap:6px;letter-spacing:var(--tracking-label);margin:8px 0;text-transform:uppercase}.field-group{border-top:1px solid var(--border-soft);display:grid;grid-gap:10px;gap:10px;margin-top:12px;padding-top:12px}.workspace-main{display:grid;grid-gap:16px;gap:16px;align-content:start}.tabs{display:flex;flex-wrap:wrap;align-items:center;gap:4px;border-bottom:1px solid var(--border-soft);padding-bottom:2px}.tab{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;height:38px;min-height:0;align-self:center;padding:0 14px;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;cursor:pointer}.tab:hover{background:none;color:var(--gold);border-bottom-color:var(--border-strong)}.tab.active{background:none;color:var(--gold-bright);border-bottom-color:var(--gold)}.page-grid{display:grid;grid-template-columns:300px minmax(0,1fr);grid-gap:18px;gap:18px}.page-sidebar h2{margin:0 0 8px}.badges{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.badges span{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-pill);color:var(--text-secondary);font-size:var(--text-label-sm);padding:4px 8px;font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase}.member-list{display:grid;grid-gap:10px;gap:10px}.member-row{display:flex;justify-content:space-between;gap:14px;align-items:center;border:1px solid var(--border-soft);border-radius:var(--radius-lg);background:var(--bg-elevated);padding:12px}.member-row div:first-child{display:grid;grid-gap:4px;gap:4px}.member-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label)}.invite-url{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--gold-bright);display:block;font-size:var(--text-label);max-width:min(620px,60vw);overflow-wrap:anywhere;padding:6px 8px}.member-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.role-badge{align-items:center;border:1px solid var(--border-soft);border-radius:var(--radius-md);display:inline-flex;min-height:40px;padding:0 10px;text-transform:uppercase;font-family:var(--font-mono);font-size:var(--text-label)}.review-list{display:grid;grid-gap:12px;gap:12px}.review-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:16px;gap:16px;border:1px solid var(--border-soft);border-radius:var(--radius-lg);background:var(--bg-elevated);padding:14px}.review-row p{margin:8px 0}.review-row span{color:var(--text-secondary)}.review-callout,.review-row span{font-family:var(--font-mono);font-size:var(--text-label)}.review-callout{display:block;margin-top:14px;border:1px solid var(--gold);border-radius:var(--radius-md);background:rgba(212,169,87,.12);color:var(--gold-bright);font-weight:500;padding:10px;text-decoration:none;text-transform:uppercase}.admin-stack{display:grid;grid-gap:16px;gap:16px}.user-admin-list{display:grid;grid-gap:10px;gap:10px}.user-admin-row{align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:grid;grid-gap:14px;gap:14px;grid-template-columns:minmax(0,1.25fr) minmax(180px,.75fr) auto;padding:12px}.user-admin-row>div:first-child{display:grid;grid-gap:4px;gap:4px;min-width:0}.identity-editor{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}.user-edit-panel{display:grid;grid-gap:12px;gap:12px}.identity-editor label{display:grid;grid-gap:6px;gap:6px}.checkbox-row span,.identity-editor label span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.checkbox-row{align-items:center;align-self:end;display:flex!important;gap:8px!important;min-height:var(--control-h)}.checkbox-row input{width:auto}.campaign-editor{border-top:1px solid var(--border-soft);display:grid;grid-gap:8px;gap:8px;padding-top:10px}.campaign-editor>span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.campaign-editor-row{align-items:center;display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr) 140px}.campaign-editor-row .checkbox-row{align-self:center;min-height:0}.campaign-editor-row select{height:34px;min-height:34px;padding:0 9px}.user-admin-row small,.user-admin-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.campaign-memberships{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.campaign-memberships a,.campaign-memberships>span{background:rgba(102,217,239,.06);border:1px solid rgba(102,217,239,.18);border-radius:var(--radius-pill);color:var(--text-primary);font-family:var(--font-mono);font-size:var(--text-label-sm);overflow-wrap:anywhere;padding:4px 8px;text-decoration:none}.campaign-memberships a span{color:var(--gold-bright);margin-left:6px;text-transform:uppercase}.admin-secret{align-items:center;background:rgba(212,169,87,.12);border:1px solid rgba(212,169,87,.28);border-radius:var(--radius-lg);display:flex;gap:10px;justify-content:space-between;margin-bottom:14px;padding:12px}.admin-secret span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase}.compact-secret{align-items:stretch;display:grid;justify-content:stretch;margin:12px 0 0}.compact-secret code{overflow-wrap:anywhere}.setup-callout{background:rgba(212,169,87,.1);border:1px solid rgba(212,169,87,.28);border-radius:var(--radius-lg);color:var(--text-secondary);display:grid;grid-gap:8px;gap:8px;padding:12px}.setup-callout strong{color:var(--text-primary)}.setup-callout a:not(.button){color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;text-transform:uppercase}.setup-callout .button{justify-self:start}.connection-status{background:rgba(212,169,87,.14);border:1px solid rgba(212,169,87,.38);border-radius:var(--radius-lg);display:grid;grid-gap:6px;gap:6px;margin-bottom:18px;padding:14px}.connection-status strong{color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-base);font-weight:800;letter-spacing:0;text-transform:uppercase}.connection-status span{color:var(--text-primary);font-size:var(--text-lg);font-weight:700}.connection-status small{color:var(--text-secondary)}.troubleshooting{border-top:1px solid var(--border-soft);display:grid;grid-gap:12px;gap:12px;margin-top:18px;padding-top:14px}.troubleshooting summary{color:var(--text-secondary);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;text-transform:uppercase}.troubleshooting[open] summary{color:var(--gold-bright);margin-bottom:12px}.troubleshooting a:not(.button){color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;text-transform:uppercase}.template-library{max-height:560px;overflow:auto}.library-filter{margin-bottom:12px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.media-bulk-bar,.media-cleanup-bar,.media-filter-chips{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.media-cleanup-bar .library-filter{flex:1 1 260px;margin-bottom:0}.media-bulk-bar{border-bottom:1px solid var(--border-soft);border-top:1px solid var(--border-soft);padding:8px 0}.checkbox-line,.media-select{align-items:center;display:inline-flex;gap:6px}.template-group{border-top:1px solid var(--border-soft);padding:12px 0}.template-group:first-of-type{border-top:0}.template-group h3{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);margin:0 0 8px;text-transform:uppercase}.template-row{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:grid;grid-gap:4px;gap:4px;margin-bottom:8px;padding:10px}.template-row p,.template-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);margin:0}.media-grid{grid-template-columns:360px minmax(0,1fr)}.media-library{max-height:520px;overflow:auto}.media-list{display:grid;grid-gap:10px;gap:10px}.media-row{display:grid;grid-template-columns:auto 128px minmax(0,1fr) auto;grid-gap:14px;gap:14px;align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:12px}.media-row>div:nth-child(3){min-width:0;display:grid;grid-gap:6px;gap:6px}.media-preview{align-items:center;aspect-ratio:4/3;background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:grid;justify-items:center;min-width:0;overflow:hidden}.media-preview iframe,.media-preview img{border:0;display:block;height:100%;object-fit:cover;width:100%}.media-preview audio{width:calc(100% - 12px)}.media-preview span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.media-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label)}.media-row code{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mapper-grid{display:grid;grid-gap:10px;gap:10px;grid-template-columns:1fr 1fr}.create-page-panel{max-width:820px}.create-page-hint{font-size:13px;margin:-2px 0 2px}.create-page-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:12px;gap:12px}.demo-controls{margin-top:16px;padding-top:14px;border-top:1px solid var(--border-soft);display:grid;grid-gap:8px;gap:8px}.demo-controls-actions{display:flex;gap:8px;flex-wrap:wrap}.modal-overlay{position:fixed;inset:0;z-index:400;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-card{width:min(480px,100%);display:grid;grid-gap:12px;gap:12px;padding:22px;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-2xl);box-shadow:var(--shadow-panel)}.modal-card h2{color:var(--gold-bright)}.modal-card .muted{line-height:1.55}.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.demo-browser>label{display:grid;grid-gap:6px;gap:6px;max-width:360px}.demo-research-summary{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.demo-research-status{background:color-mix(in srgb,var(--gold) 14%,var(--bg-elevated));border:1px solid color-mix(in srgb,var(--gold) 35%,var(--border-soft));border-radius:var(--radius-sm);color:var(--gold-bright);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;padding:4px 7px;text-transform:uppercase}.demo-sheet-brief{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);margin-top:10px;padding:10px 12px}.demo-sheet-brief>summary{cursor:pointer;font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.demo-sheet-brief p{margin:8px 0}.demo-brief-columns{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.demo-brief-columns h4{color:var(--text-secondary);font-size:12px;margin:6px 0}.demo-brief-columns ul{color:var(--text-secondary);font-size:13px;line-height:1.5;margin:0;padding-left:18px}.demo-preview-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px;gap:8px;margin-top:10px}.demo-preview-card{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:10px 12px}.demo-preview-card>summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none}.demo-preview-card>summary::-webkit-details-marker{display:none}.demo-preview-cat{margin-left:auto;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-tertiary);white-space:nowrap}.demo-preview-card p{margin-top:8px;font-size:13px}.lore-grid{grid-template-columns:360px minmax(0,1fr)}.relationship-map-panel{grid-column:1/-1}.relationship-map{aspect-ratio:52/29;display:block;max-height:360px;width:100%}.relationship-map line{stroke:rgba(160,117,255,.3);stroke-width:1.5}.relationship-map line.key-edge{stroke:rgba(212,169,87,.58);stroke-width:2.5}.graph-node circle{fill:var(--bg-elevated);stroke:var(--border-strong);stroke-width:2;transition:fill .15s ease,stroke .15s ease}.graph-node text{fill:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label-sm);pointer-events:none}.relationship-map a:hover .graph-node circle{fill:rgba(212,169,87,.14);stroke:var(--gold)}.graph-node-character circle{stroke:rgba(212,169,87,.7)}.graph-node-npc circle{stroke:rgba(160,117,255,.75)}.graph-node-location circle{stroke:rgba(107,184,255,.6)}.graph-node-event circle{stroke:rgba(255,138,138,.6)}.graph-node-game circle{stroke:rgba(184,169,207,.6)}.relationship-list,.timeline-list{display:grid;grid-gap:10px;gap:10px}.relationship-row,.timeline-row{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);color:var(--text-primary);display:grid;grid-gap:5px;gap:5px;padding:12px;text-decoration:none}.relationship-row p,.relationship-row span,.timeline-row small,.timeline-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);margin:0}.timeline{display:grid;grid-gap:18px;gap:18px}.timeline-era-head{color:var(--gold);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);text-transform:uppercase;margin:0 0 8px}.timeline-track-line{position:relative;display:grid;grid-gap:10px;gap:10px;padding-left:18px}.timeline-track-line:before{content:"";position:absolute;left:4px;top:4px;bottom:4px;width:2px;background:var(--border-soft)}.timeline-event{position:relative;display:grid;grid-template-columns:auto 1fr;grid-gap:10px;gap:10px;align-items:baseline;color:var(--text-primary);text-decoration:none}.timeline-dot{position:absolute;left:-18px;top:5px;width:9px;height:9px;border-radius:50%;background:var(--cat-event);border:2px solid var(--bg-surface)}.timeline-date{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);white-space:nowrap}.timeline-body{display:grid;grid-gap:2px;gap:2px;min-width:0}.timeline-body small{color:var(--text-secondary)}.timeline-track-badge{justify-self:start;background:var(--wash-purple);color:var(--purple);border-radius:var(--radius-pill);padding:0 8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;text-transform:uppercase}.relationship-row{grid-template-columns:minmax(0,1fr) auto;align-items:center}.editor-panel{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-xl);color:var(--text-primary);min-width:0;overflow:hidden}.reader-shell{margin:0 auto;max-width:1200px}.editor-toolbar{display:flex}.editor-toolbar,.insert-toolbar{gap:8px;padding:10px;border-bottom:1px solid var(--border-soft)}.insert-toolbar{align-items:end;display:grid;grid-gap:8px;grid-template-columns:minmax(160px,1fr) minmax(160px,1fr) auto auto}.insert-toolbar label{display:grid;grid-gap:5px;gap:5px;min-width:0}.editor-workspace{display:grid}.format-toolbar{align-items:center;background:var(--bg-elevated);border-bottom:1px solid var(--border-soft);display:flex;flex-wrap:wrap;gap:6px;padding:10px}.icon-button{align-items:center;aspect-ratio:1;display:inline-flex;justify-content:center;min-height:36px;padding:0;width:36px}.icon-button svg{pointer-events:none}.conflict-banner{align-items:center;background:rgba(255,138,138,.1);border-bottom:1px solid rgba(255,138,138,.28);color:var(--danger);display:flex;gap:12px;justify-content:space-between;padding:10px}.conflict-banner span{font-weight:600}.editor-split{display:grid;grid-template-columns:1fr 1fr;min-height:680px}.editor-split textarea{border:0;border-radius:0;background:var(--field-bg);min-height:680px;font-family:var(--font-mono);line-height:1.5}.preview{border-left:1px solid var(--border-soft);padding:20px;overflow:auto}.page-reader{border-left:0;min-height:680px;padding:36px}.preview h1{font-size:var(--text-reader-h1);font-weight:500}.preview a{color:var(--gold)}.preview .wiki-article{--wiki-cyan:#66d9ef;--wiki-cyan-soft:rgba(102,217,239,0.18);--wiki-panel:rgba(16,10,28,0.72);color:var(--text-primary);font-size:16px;line-height:1.65}.preview .wiki-article h1,.preview .wiki-article h2,.preview .wiki-article h3{margin:0}.preview .wiki-article-header{border-bottom:1px solid var(--border-strong);margin-bottom:24px;padding-bottom:18px}.preview .wiki-infobox caption,.preview .wiki-infobox th,.preview .wiki-kicker,.preview .wiki-meta,.preview .wiki-stat-table th{font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase}.preview .wiki-kicker{color:var(--wiki-cyan);font-size:var(--text-label);font-weight:700;margin:0 0 6px}.preview .wiki-article-header h1{color:var(--text-primary);font-size:clamp(34px,5vw,58px);font-weight:500;line-height:1;margin:0}.preview .wiki-subtitle{color:var(--gold-bright);font-size:var(--text-h3);margin:10px 0 0}.preview .wiki-meta{color:var(--text-secondary);display:flex;flex-wrap:wrap;gap:8px;font-size:var(--text-label);margin:16px 0 0}.preview .wiki-meta span{background:rgba(102,217,239,.06);border:1px solid var(--wiki-cyan-soft);border-radius:var(--radius-sm);padding:5px 8px}.preview .wiki-layout{align-items:start;display:grid;grid-gap:28px;gap:28px;grid-template-columns:minmax(0,1fr) minmax(260px,30%)}.preview .wiki-main{display:grid;grid-gap:24px;gap:24px;min-width:0}.preview .wiki-section{border-top:1px solid rgba(102,217,239,.16);padding-top:18px}.preview .wiki-section:first-child{border-top:0;padding-top:0}.preview .wiki-section h2{color:var(--text-primary);font-size:28px;font-weight:550;line-height:1.15;margin-bottom:10px}.preview .wiki-section p,.preview .wiki-section ul{margin:0 0 14px}.preview .wiki-section ul{padding-left:22px}.preview .wiki-infobox{background:linear-gradient(180deg,rgba(102,217,239,.08),transparent 120px),var(--wiki-panel);border:1px solid var(--wiki-cyan-soft);box-shadow:0 0 0 1px rgba(160,117,255,.08),0 18px 50px rgba(0,0,0,.32);position:-webkit-sticky;position:sticky;top:18px}.preview .wiki-infobox figure{margin:0}.preview .wiki-infobox img{aspect-ratio:4/5;display:block;height:auto;max-height:420px;object-fit:cover;object-position:center top;width:100%}.preview .wiki-infobox caption,.preview .wiki-infobox figcaption{color:var(--gold-bright);font-family:var(--font-mono);font-size:13px;font-weight:700;padding:12px 14px;text-align:left}.preview .wiki-infobox table,.preview .wiki-stat-table{border-collapse:collapse;margin:0;width:100%}.preview .wiki-infobox table{border-top:1px solid var(--border-soft)}.preview .wiki-infobox td,.preview .wiki-infobox th,.preview .wiki-stat-table td,.preview .wiki-stat-table th{border-bottom:1px solid rgba(155,120,220,.16);padding:9px 12px;text-align:left;vertical-align:top}.preview .wiki-infobox th,.preview .wiki-stat-table th{color:var(--text-secondary);font-size:var(--text-label-sm);font-weight:700}.preview .wiki-infobox td,.preview .wiki-stat-table td{color:var(--text-primary)}.preview .wiki-table-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.preview .wiki-stat-table{background:rgba(24,16,40,.54);border:1px solid var(--border-soft)}.preview .wiki-stat-table caption{color:var(--wiki-cyan);font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;padding:10px 12px;text-align:left;text-transform:uppercase}.preview .wiki-details{border:1px solid var(--border-strong);background:rgba(160,117,255,.08);padding:10px 12px}.preview .wiki-details summary{color:var(--purple);cursor:pointer;font-family:var(--font-mono);font-weight:700;text-transform:uppercase}.preview>div{--wiki-cyan:#66d9ef;--wiki-cyan-soft:rgba(102,217,239,0.18);--wiki-panel:rgba(16,10,28,0.72)}.preview>div:after{clear:both;content:"";display:block}.preview>div>h1{border-bottom:1px solid var(--border-strong);color:var(--text-primary);font-size:clamp(34px,5vw,58px);font-weight:500;line-height:1;margin:0 0 12px;padding-bottom:12px}.preview>div>h1+p{color:var(--gold-bright);font-size:var(--text-h3);margin:0 0 8px}.preview>div>h1+p em{font-style:normal}.preview>div>h1+p+p{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:0;margin:0 0 22px;text-transform:uppercase}.preview>div>p:has(>img:only-child){background:linear-gradient(180deg,rgba(102,217,239,.08),transparent 120px),var(--wiki-panel);border:1px solid var(--wiki-cyan-soft);box-shadow:0 0 0 1px rgba(160,117,255,.08),0 18px 50px rgba(0,0,0,.32);float:right;margin:0 0 18px 28px;padding:0;width:min(30%,360px)}.preview>div>p:has(>img:only-child) img{aspect-ratio:4/5;display:block;height:auto;max-height:420px;object-fit:cover;object-position:center top;width:100%}.preview>div>p:has(>img:only-child)+table{background:var(--wiki-panel);border:1px solid var(--wiki-cyan-soft);box-shadow:0 0 0 1px rgba(160,117,255,.08),0 18px 50px rgba(0,0,0,.28);clear:right;float:right;margin:0 0 24px 28px;width:min(30%,360px)}.preview>div>h2{border-top:1px solid rgba(102,217,239,.16);clear:none;color:var(--text-primary);font-size:28px;font-weight:550;line-height:1.15;margin:24px 0 10px;padding-top:18px}.preview>div>h2:first-of-type{border-top:0;padding-top:0}.preview>div table{background:rgba(24,16,40,.54);border:1px solid var(--border-soft);border-collapse:collapse;margin:10px 0 18px;width:100%}.preview>div td,.preview>div th{border-bottom:1px solid rgba(155,120,220,.16);padding:9px 12px;text-align:left;vertical-align:top}.preview>div th{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:700;letter-spacing:0;text-transform:uppercase}.preview>div td{color:var(--text-primary)}.handout-preview{background:var(--bg-elevated)}.handout-header{border-bottom:2px solid var(--border-strong);margin-bottom:18px;padding-bottom:14px}.handout-header p{color:var(--gold);font-family:var(--font-mono);font-size:var(--text-label);font-weight:500;margin:0 0 6px;text-transform:uppercase}.handout-header h1{margin:0}.handout-header span{color:var(--text-secondary);display:block;font-family:var(--font-body);margin-top:8px}.player-portal{display:grid;grid-gap:18px;gap:18px;grid-template-columns:300px minmax(0,1fr)}.player-library{align-self:start;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-xl);display:grid;grid-gap:12px;gap:12px;padding:14px;position:-webkit-sticky;position:sticky;top:16px}.player-library .nav-link{background:transparent;border:0;color:var(--text-primary);display:grid;font-family:var(--font-body);grid-gap:3px;gap:3px;height:auto;justify-content:stretch;letter-spacing:0;min-height:0;padding:9px;text-align:left;text-transform:none;width:100%}.player-library .nav-link span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.player-library .nav-link.active{background:rgba(212,169,87,.12);color:var(--gold-bright)}.player-suggestion-form{border-top:1px solid var(--border-soft);display:grid;grid-gap:10px;gap:10px;margin-top:4px;padding-top:14px}.player-suggestion-form h3{color:var(--text-primary);font-size:var(--text-sm);margin:0}.player-suggestion-form label{color:var(--text-secondary);display:grid;font-family:var(--font-mono);font-size:var(--text-label-sm);grid-gap:5px;gap:5px;text-transform:uppercase}.player-suggestion-form textarea{min-height:128px;resize:vertical}.player-reader{min-height:620px}.player-reader-actions{display:flex;justify-content:flex-end;margin:-6px 0 14px}.player-tab-row{grid-column:1/-1}.player-quests{grid-column:1/-1;display:flex;flex-direction:column;gap:24px}.player-quest-group{display:flex;flex-direction:column;gap:12px}.player-quest-group-done{opacity:.7}.player-quest-group>h3{font-size:var(--text-md);color:var(--text-secondary);margin:0 0 4px}.player-quest-card{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:14px 16px;display:flex;flex-direction:column;gap:8px}.player-quest-card-done{opacity:.7}.player-quest-card>h4{margin:0;font-size:var(--text-md)}.player-quest-meta{display:flex;flex-wrap:wrap;gap:6px}.player-quest-objectives{display:flex;flex-direction:column;gap:4px}.player-quest-progress{background:var(--border-faint);border-radius:99px;height:4px;overflow:hidden}.player-quest-bar{background:var(--gold);height:100%;transition:width .3s}.player-quest-obj-count{font-size:var(--text-label-sm);color:var(--text-tertiary)}.player-quest-obj-list{margin:4px 0 0;padding:0 0 0 18px;display:flex;flex-direction:column;gap:3px;font-size:var(--text-sm)}.player-quest-obj-list li.obj-done{text-decoration:line-through;color:var(--text-tertiary)}.player-quest-desc{font-size:var(--text-sm);color:var(--text-secondary);margin:0}.public-quest-link{align-items:flex-start;flex-direction:column;gap:5px;padding:8px 0}.public-quest-detail{display:grid;grid-gap:22px;gap:22px}.public-quest-detail h2{color:var(--text-primary);font-size:var(--text-lg);margin:0 0 8px}.public-quest-clocks{display:grid;grid-gap:14px;gap:14px}.public-quest-meta-grid{display:grid;grid-gap:18px;gap:18px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.public-quest-meta-grid p{margin:0}.badge-active{background:color-mix(in srgb,var(--gold) 20%,transparent);border-color:color-mix(in srgb,var(--gold) 40%,transparent)}.badge-hook{background:color-mix(in srgb,var(--purple) 20%,transparent);border-color:color-mix(in srgb,var(--purple) 40%,transparent)}.badge-completed{background:color-mix(in srgb,#2ecc71 15%,transparent);border-color:color-mix(in srgb,#2ecc71 35%,transparent)}.badge-failed{background:color-mix(in srgb,var(--error) 15%,transparent);border-color:color-mix(in srgb,var(--error) 35%,transparent)}.badge-session{background:color-mix(in srgb,var(--purple) 15%,transparent);border-color:color-mix(in srgb,var(--purple) 35%,transparent)}.badge-event{background:color-mix(in srgb,var(--gold) 15%,transparent);border-color:color-mix(in srgb,var(--gold) 35%,transparent)}.badge-quest{background:color-mix(in srgb,var(--teal,#2ca5a5) 15%,transparent);border-color:color-mix(in srgb,var(--teal,#2ca5a5) 35%,transparent)}.badge-holiday{background:color-mix(in srgb,#ff9900 15%,transparent);border-color:color-mix(in srgb,#ff9900 35%,transparent)}.badge-born{background:color-mix(in srgb,#e060c0 15%,transparent);border-color:color-mix(in srgb,#e060c0 35%,transparent)}.faction-clocks-grid{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:12px}.faction-clock{gap:6px}.faction-clock,.faction-clock-meta{display:flex;flex-direction:column;align-items:center}.faction-clock-meta{gap:4px;width:100%}.faction-clock-name{text-align:center;font-size:var(--text-sm);background:transparent;border:none;border-bottom:1px solid var(--border-soft);width:100%;padding:2px 4px;color:var(--text)}.faction-clock-name:focus{outline:none;border-bottom-color:var(--gold)}.handout-queue{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:4px}.handout-queue-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--panel-bg-2,rgba(255,255,255,.03));border:1px solid var(--border);border-radius:4px}.handout-queue-order{font-size:var(--text-xs);color:var(--text-tertiary);width:16px;text-align:center;flex-shrink:0}.handout-queue-name{flex:1 1;font-size:var(--text-sm);color:var(--text)}.handout-queue-name:hover{color:var(--gold)}.handout-queue-item .member-actions{display:flex;gap:4px;align-items:center;flex-shrink:0}.timeline-section-label{font-size:var(--text-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin:12px 0 4px}.world-timeline-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.world-timeline-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:var(--text-sm)}.world-timeline-item a{flex:1 1;color:var(--text)}.world-timeline-item a:hover{color:var(--gold)}.world-timeline-item .muted{font-size:var(--text-xs);white-space:nowrap}.world-timeline-now{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:var(--text-sm);font-weight:600;color:var(--gold)}.world-timeline-now:after,.world-timeline-now:before{content:"";flex:1 1;height:1px;background:color-mix(in srgb,var(--gold) 40%,transparent)}.wiki-link{color:var(--gold);font-weight:600;cursor:pointer}.wiki-link:hover{color:var(--gold-bright)}.wiki-link.missing{color:var(--purple);border-bottom:1px dashed var(--purple)}.gm-block{background:rgba(160,117,255,.1);border-left:4px solid var(--purple);border-radius:0 6px 6px 0;margin:12px 0;padding:12px}.gm-block strong{color:var(--purple)}.secret-block{background:rgba(52,152,219,.1);border-left:4px solid #3498db;border-radius:0 6px 6px 0;margin:12px 0;padding:12px}.secret-block-label{color:#3498db;display:block;font-size:11px;font-weight:700;letter-spacing:.05em;margin-bottom:6px;text-transform:uppercase}.steps{display:grid;grid-gap:14px;gap:14px;margin:8px 0 0;padding:0;list-style:none;counter-reset:step}.step{display:grid;grid-template-columns:48px minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}.step-num{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(212,169,87,.12);border:1px solid var(--gold);color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-lg);font-weight:500}.step-body h2{margin:4px 0 8px;font-size:var(--text-h3);font-weight:500}.step-body p{margin:0 0 8px}.step-list{margin:6px 0 0;padding-left:18px;display:grid;grid-gap:6px;gap:6px;color:var(--text-secondary)}.step-list strong{color:var(--text-primary)}.token-row{align-items:center;gap:8px;padding:6px 0}.section-heading,.token-row{display:flex;justify-content:space-between}.section-heading{align-items:flex-start;gap:16px;margin-bottom:14px}.section-heading h2,.section-heading p{margin:0}.section-heading p{margin-top:6px}.validation-list{display:grid;grid-gap:8px;gap:8px}.validation-row{align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(0,1fr) auto;padding:12px}.validation-row div{display:grid;grid-gap:4px;gap:4px;min-width:0}.validation-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.validation-row.ok{border-color:rgba(212,169,87,.28)}.validation-row.needs-work{border-color:rgba(255,138,138,.32)}.diff-list{display:grid;grid-gap:8px;gap:8px}.diff-row{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:grid;grid-gap:5px;gap:5px;padding:9px}.diff-row strong{color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-label-sm);text-transform:uppercase}.diff-row code,.diff-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.diff-row span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label)}.diff-row.added{border-color:rgba(212,169,87,.28)}.diff-row.removed{border-color:rgba(255,138,138,.28)}.toast{color:var(--gold-bright);font-weight:600;margin-top:12px}.editor-toast{border-bottom:1px solid var(--border-soft);border-top:1px solid var(--border-soft);margin:0;padding:10px 12px}.error{color:var(--danger);font-weight:600}.editor-split-toggle,.mtabs{display:none}.theme-switch-fab{position:fixed;left:18px;bottom:18px;z-index:200;font-family:var(--font-mono)}.theme-fab-btn{display:flex;align-items:center;gap:8px;min-height:0;padding:9px 14px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-pill);color:var(--text-primary);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;box-shadow:var(--shadow-pop);cursor:pointer}.theme-fab-btn:hover{border-color:var(--gold);color:var(--gold-bright)}.theme-fab-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);flex:none}.theme-menu{margin-bottom:8px;padding:8px;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-panel);display:grid;grid-gap:4px;gap:4px;min-width:224px;max-height:60vh;overflow:auto}.theme-menu-label{padding:4px 8px;font-size:10px;color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em}.theme-menu-item{justify-content:flex-start;width:100%;min-height:0;padding:7px 8px;background:transparent;border:0;border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:0;text-transform:none;text-align:left;cursor:pointer}.theme-menu-item:hover{background:var(--wash-gold);border:0;color:var(--text-primary)}.theme-menu-item.active{background:var(--wash-gold);color:var(--gold-bright)}.repo-refresh-fab{position:fixed;left:18px;bottom:64px;z-index:200;display:flex;align-items:center;gap:8px;font-family:var(--font-mono)}.repo-refresh-btn{min-height:0;padding:8px 12px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-pill);color:var(--text-primary);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;box-shadow:var(--shadow-pop);cursor:pointer}.repo-refresh-btn:hover:not(:disabled){border-color:var(--gold);color:var(--gold-bright)}.repo-refresh-btn:disabled{cursor:wait;opacity:.7}.repo-refresh-status{max-width:220px;padding:6px 9px;background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-pill);color:var(--text-muted);font-size:11px;box-shadow:var(--shadow-pop);white-space:nowrap}.repo-refresh-status.error{border-color:var(--danger);color:var(--danger)}@media (max-width:980px){.admin-grid,.boards-shell,.dashboard-grid,.editor-split,.maps-grid,.page-grid,.player-portal,.workspace{grid-template-columns:1fr}.boards-shell{height:auto;overflow:visible}.boards-canvas-wrap{min-height:60vh}.boards-sidebar{border-right:none;border-bottom:1px solid var(--border-soft)}.mobile-nav-toggle{align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;display:flex;font-size:18px;grid-column:1;justify-content:center;line-height:1;padding:6px 12px;place-self:start;width:40px;z-index:20}.mobile-nav-toggle:hover{background:var(--bg-soft);color:var(--text-primary)}.page-sidebar,.player-library,.side-nav{display:none;position:static}.side-nav.nav-open{display:block}.topbar{align-items:flex-start;flex-direction:column}.identity-editor,.review-row,.user-admin-row{grid-template-columns:1fr}.admin-secret{align-items:stretch;display:grid}.mapper-grid,.media-row,.relationship-row,.section-heading,.validation-row{grid-template-columns:1fr}.section-heading{display:grid}.conflict-banner{align-items:stretch;display:grid}.insert-toolbar,.preview .wiki-layout,.preview .wiki-table-grid{grid-template-columns:1fr}.preview .wiki-infobox{position:static}.preview .wiki-infobox img{max-height:360px}.preview>div>p:has(>img:only-child),.preview>div>p:has(>img:only-child)+table{clear:none;float:none;margin:16px 0;width:100%}.preview>div>p:has(>img:only-child) img{max-height:360px}}@media (max-width:720px){.app-shell{width:calc(100% - 24px);padding:16px 0 100px}.topbar{gap:12px;margin-bottom:16px}.topbar h1{font-size:clamp(24px,7.5vw,32px)}.topbar-actions{width:100%}.topbar-actions>*{flex:1 1 auto}.band{padding:14px 0}.band h2{font-size:22px}.repos-band-head{margin-bottom:12px}.repo-grid{grid-template-columns:1fr 1fr;gap:10px}.campaign-card{padding:18px 10px 14px;border-radius:var(--radius-lg);gap:5px}.campaign-card-name{font-size:15px}.campaign-card-slug{font-size:10.5px}.campaign-card-meta{font-size:9px;letter-spacing:.05em}.campaign-card-remove{display:none}.repo-marquee .campaign-card{flex-basis:200px;width:200px}.dashboard-grid{gap:12px}.dashboard-search-form,.inline-form{grid-template-columns:1fr}.player-portal,.workspace{gap:12px}.page-sidebar,.player-library,.side-nav{padding:12px}.editor-split-toggle{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;grid-gap:6px;gap:6px;margin-bottom:12px}.editor-toolbar{flex-wrap:wrap}.editor-split{grid-template-columns:1fr;min-height:0}.editor-split textarea{min-height:320px}.editor-split .preview{max-height:65vh;overflow:auto}.editor-split[data-pane=preview]>textarea,.editor-split[data-pane=write]>.preview{display:none}.review-row{grid-template-columns:1fr}.review-row>div:last-child{flex-wrap:wrap}.review-row>div:last-child>*{flex:1 1 40%}.player-reader{min-height:0}.handout-header h1{font-size:27px}.reader-body h2{font-size:19px}.toast-fixed{right:12px;bottom:90px}.theme-switch-fab{bottom:86px}.repo-refresh-fab{bottom:132px;left:12px}.repo-refresh-status{display:none}.mtabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;position:fixed;left:0;right:0;bottom:0;z-index:150;background:var(--bg-elevated);background:color-mix(in srgb,var(--bg-elevated) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border-strong);box-shadow:0 -8px 24px -12px rgba(0,0,0,.5);padding:6px 6px calc(6px + env(safe-area-inset-bottom, 0px))}.mtab{display:flex;flex-direction:column;align-items:center;gap:3px;background:none;border:0;cursor:pointer;padding:8px 4px 6px;color:var(--text-tertiary);font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius-md);min-height:52px;text-decoration:none;transition:color var(--dur-fast) var(--ease)}.mtab.is-active{color:var(--gold-bright)}}@media (max-width:680px){.page-reader{padding:22px}.preview .wiki-article-header h1{font-size:36px}.preview .wiki-meta{display:grid}.preview .wiki-stat-table thead{display:none}.preview .wiki-stat-table tr{border-bottom:1px solid rgba(155,120,220,.16);display:grid;grid-gap:4px;gap:4px;padding:10px 12px}.preview .wiki-stat-table td{border-bottom:0;display:flex;gap:12px;justify-content:space-between;padding:0}.preview .wiki-stat-table td:before{color:var(--text-secondary);content:attr(data-label);font-family:var(--font-mono);font-size:var(--text-label-sm);font-weight:700;text-transform:uppercase}.preview>div>h1{font-size:36px}.preview>div>h1+p+p{font-size:var(--text-label-sm)}}.public-clone-message{align-self:center}.public-clone-message,.public-rating-row{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase}.public-rating-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px}.public-contribution-note{max-width:760px;margin-top:8px}.public-empty{padding:60px 36px;text-align:center}.public-link-form{display:grid;grid-gap:8px;gap:8px;margin:16px 0}.public-link-form>label{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.1em;text-transform:uppercase}.public-link-editor{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.public-link-editor span{background:var(--wash-gold);border:1px solid var(--border-soft);border-radius:var(--radius-md);color:var(--gold-bright);font-family:var(--font-mono);padding:8px 10px}.public-link-editor input{flex:1 1;min-width:220px}.public-share{display:flex;flex-direction:column;gap:8px}.public-share>label{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.1em;text-transform:uppercase}.public-share-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.public-share-row code{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-md);color:var(--gold-bright);flex:1 1;min-width:220px;padding:8px 12px}.theme-form{display:flex;flex-direction:column;gap:16px}.theme-fields{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.theme-fields label{color:var(--text-secondary);display:flex;flex-direction:column;font-size:13px;gap:6px}.theme-fields input[type=color]{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-md);cursor:pointer;height:38px;padding:4px;width:100%}.category-form{display:grid;grid-gap:14px;gap:14px}.category-editor-list{display:grid;grid-gap:10px;gap:10px}.category-editor-row{display:grid;grid-template-columns:minmax(160px,1fr) minmax(120px,220px) auto;align-items:end;grid-gap:10px;gap:10px}.category-editor-row label{color:var(--text-secondary);display:grid;font-size:13px;grid-gap:6px;gap:6px}button.danger{color:var(--danger);border-color:rgba(255,101,85,.45)}.lexicon-shell{display:grid;grid-gap:16px;gap:16px;padding:16px}.lexicon-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.lexicon-toolbar input{width:220px}.lexicon-table td,.lexicon-table th{vertical-align:top}.lexicon-table td:first-child{font-weight:600;min-width:80px}.generate-shell{display:grid;grid-gap:16px;gap:16px;padding:16px}.generate-types h2{margin-bottom:12px}.gen-type-grid{display:flex;flex-wrap:wrap;gap:8px}.gen-type-btn{align-items:flex-start;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;cursor:pointer;display:flex;flex-direction:column;gap:2px;min-width:120px;padding:10px 14px;text-align:left;transition:border-color .15s,background .15s}.gen-type-btn.active,.gen-type-btn:hover{border-color:var(--gold)}.gen-type-btn.active{background:color-mix(in srgb,var(--gold) 12%,var(--bg-elevated))}.gen-type-icon{font-size:20px;margin-bottom:4px}.gen-type-btn strong{font-size:14px}.gen-type-btn .muted{font-size:11px;white-space:nowrap}.generate-main{display:grid;grid-gap:16px;gap:16px}@media (min-width:900px){.generate-main{grid-template-columns:280px 1fr}}.gen-mode-row{display:flex;gap:16px;margin-bottom:8px}.gen-mode-row label{align-items:center;cursor:pointer;display:flex;gap:6px;font-size:14px}.context-picker{margin-top:12px}.context-picker summary{cursor:pointer;font-size:13px;color:var(--muted)}.context-list{display:grid;grid-gap:2px;gap:2px;margin-top:8px;max-height:220px;overflow-y:auto}.context-item{align-items:center;cursor:pointer;display:flex;font-size:13px;gap:8px;padding:3px 0}.prompt-helper{border-top:1px solid var(--border-soft);display:grid;grid-gap:10px;gap:10px;margin-top:12px;padding-top:12px}.prompt-helper summary{color:var(--muted);cursor:pointer;font-size:13px}.prompt-helper[open]{display:grid}.prompt-helper label{color:var(--text-secondary);display:grid;font-family:var(--font-mono);font-size:var(--text-label-sm);grid-gap:5px;gap:5px;text-transform:uppercase}.prompt-helper textarea{min-height:96px;resize:vertical}.prompt-helper-presets{display:flex;flex-wrap:wrap;gap:6px}.prompt-helper-presets button{height:32px;padding:0 10px}.prompt-helper-presets button.active{background:var(--gold);border-color:var(--gold);color:var(--bg)}.prompt-helper-brief{background:var(--bg);border:1px solid var(--border-soft);border-radius:6px;color:var(--text-secondary);font-family:var(--font-mono);font-size:11px;line-height:1.5;margin:0;max-height:180px;overflow:auto;padding:10px;white-space:pre-wrap}.generate-result-header{align-items:baseline;display:flex;gap:10px;margin-bottom:8px}.generate-result-header h2{margin:0}.generate-preview{background:var(--bg-elevated);border:1px solid var(--border);border-radius:6px;font-family:inherit;font-size:13px;line-height:1.6;overflow-x:auto;padding:12px 16px;white-space:pre-wrap;word-break:break-word}.generate-ai-panel{border-top:1px solid var(--border);padding-top:16px}.toast-warn{background:color-mix(in srgb,orange 20%,var(--bg-elevated))}.organize{display:grid;grid-gap:14px;gap:14px}.tab-row{display:flex;gap:4px;border-bottom:1px solid var(--border);padding-bottom:0}.tab-btn{background:none;border:none;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);cursor:pointer;font-size:14px;margin-bottom:-1px;padding:6px 16px 8px}.tab-btn.active{border-bottom-color:var(--gold);font-weight:600}.tab-btn.active,.tab-btn:hover:not(.active){color:var(--text)}.tag-chip{background:color-mix(in srgb,var(--gold) 20%,transparent);border:1px solid color-mix(in srgb,var(--gold) 40%,transparent);border-radius:10px;color:var(--gold);display:inline-block;font-size:11px;line-height:1;margin-right:4px;padding:2px 8px}button.danger{background:color-mix(in srgb,#c0392b 80%,transparent);border-color:#c0392b;color:#fff}button.danger:hover:not(:disabled){background:#c0392b}.organize-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.organize-toolbar input{width:min(320px,100%)}.organize-toolbar select{width:auto;min-width:180px}.organize-count{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.04em}.bulk-bar{align-items:flex-end;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);display:flex;flex-wrap:wrap;gap:12px;padding:12px 14px;position:-webkit-sticky;position:sticky;top:8px;z-index:2}.bulk-bar>strong{align-self:center;color:var(--gold-bright);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:.04em;text-transform:uppercase}.bulk-bar label{display:grid;grid-gap:4px;gap:4px;margin:0}.bulk-bar select{min-width:150px}.organize-table-wrap{border:1px solid var(--border-soft);border-radius:var(--radius-lg);overflow:auto}.organize-table{border-collapse:collapse;width:100%}.organize-table td,.organize-table th{border-bottom:1px solid var(--border-faint);padding:9px 12px;text-align:left;white-space:nowrap}.organize-table th{background:var(--bg-elevated);font-size:var(--text-label-sm);letter-spacing:.04em;position:-webkit-sticky;position:sticky;top:0;text-transform:uppercase}.organize-table td,.organize-table th{color:var(--text-secondary);font-family:var(--font-mono)}.organize-table td{font-size:var(--text-sm)}.organize-table td a{color:var(--text-primary);font-family:var(--font-body)}.organize-table tr.row-selected td{background:var(--wash-gold)}.organize-table tr.media-row-unused td{opacity:.7}.organize-table th.sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.organize-table th.sortable:hover{color:var(--text-primary)}.media-unused-badge{background:rgba(255,138,138,.15);border:1px solid rgba(255,138,138,.35);border-radius:3px;color:var(--danger);font-family:var(--font-mono);font-size:9px;margin-left:6px;padding:1px 4px;vertical-align:middle}.organize-table input[type=checkbox]{width:auto}.manuscript-shell{display:flex;flex-direction:column;height:100%}.manuscript-toolbar{align-items:center;background:var(--card);border-bottom:1px solid var(--border-soft);display:flex;gap:8px;padding:8px 16px}.manuscript-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));padding:20px}.manuscript-card{display:flex;flex-direction:column;gap:6px}.manuscript-card-header{align-items:center;display:flex;gap:8px}.manuscript-card-actions{display:flex;gap:6px;margin-top:6px}.manuscript-edit-layout{display:grid;grid-gap:16px;gap:16px;grid-template-columns:260px 1fr 1fr;flex:1 1;overflow:hidden;padding:16px}.manuscript-edit-layout>.panel{overflow-y:auto}.manuscript-meta{gap:10px}.manuscript-page-list{list-style:none;margin:0;padding:0}.manuscript-page-row{align-items:center;border-bottom:1px solid var(--border-soft);display:flex;font-size:13px;gap:6px;padding:6px 0}.manuscript-page-row:last-child{border-bottom:none}.manuscript-page-num{color:var(--muted);font-size:11px;min-width:18px;text-align:right}.manuscript-page-name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.manuscript-page-actions{display:flex;gap:2px}.manuscript-reader{flex:1 1;max-width:800px;margin:0 auto;overflow-y:auto;padding:32px 24px}.manuscript-chapter{margin-bottom:40px}.manuscript-chapter-title{font-size:28px;margin:0 0 4px}.manuscript-chapter-summary{color:var(--muted);font-style:italic;margin:0 0 16px}.manuscript-break{border-color:var(--border-soft);margin:40px 0}@media print{.manuscript-toolbar,.nav-sidebar,.topbar{display:none!important}.manuscript-reader{max-width:100%;padding:0}.manuscript-break{page-break-after:always;break-after:page;border:none}}.import-shell{padding:20px}.import-panel{max-width:800px}.import-intro p{margin:0 0 6px}.import-options{display:flex;flex-wrap:wrap;gap:12px}.import-options label{display:grid;font-size:13px;grid-gap:4px;gap:4px;min-width:150px}.import-options select{margin:0}.import-textarea{border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--card);color:var(--text);font-family:var(--font-mono);font-size:12px;padding:10px;resize:vertical;width:100%}.file-upload-row{align-items:center;display:flex;font-size:13px;gap:4px}.import-result{margin-top:12px}.import-errors,.import-result-summary{margin-bottom:8px}.import-errors{color:var(--danger,#c0392b);font-size:13px;padding-left:16px}.export-options{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));margin-top:8px}.export-option{display:flex;flex-direction:column;gap:8px}.export-option-header{align-items:center;display:flex;gap:8px}.export-option .button{align-self:flex-start}.import-preview-header{font-size:13px;margin:0 0 8px}.actor-preview-list{display:flex;flex-direction:column;gap:6px;margin-top:12px}.actor-preview-card{background:var(--bg-elevated);border-left:1px solid var(--border-soft);border:1px solid var(--border-soft);border-left-width:3px;border-radius:var(--radius);font-size:12px;padding:8px 10px}.actor-preview-card.is-new{border-left-color:#6bb8ff}.actor-preview-card.is-changed{border-left-color:var(--gold)}.actor-preview-card.is-same{opacity:.55}.actor-preview-name{align-items:center;display:flex;font-size:13px;font-weight:500;gap:6px;margin-bottom:4px}.actor-preview-badge{border-radius:3px;font-family:var(--font-mono);font-size:10px;padding:1px 5px}.actor-preview-badge.new{background:rgba(107,184,255,.2);color:#6bb8ff}.actor-preview-badge.changed{background:rgba(212,169,87,.2);color:var(--gold)}.actor-preview-badge.same{background:var(--bg-soft);color:var(--text-tertiary)}.actor-preview-field{align-items:baseline;color:var(--text-secondary);display:flex;font-size:11px;gap:6px;padding:2px 0}.actor-preview-field-name{color:var(--text-tertiary);font-family:var(--font-mono);min-width:80px}.actor-preview-before{color:var(--danger);text-decoration:line-through}.actor-preview-arrow{color:var(--text-tertiary)}.actor-preview-after{color:#78c8a0}.page-share-panel{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:var(--radius);display:flex;flex-direction:column;gap:8px;margin:0 0 8px;padding:12px 14px}.page-share-header{align-items:baseline;display:flex;gap:10px;flex-wrap:wrap}.page-share-link-row{align-items:center;display:flex;gap:6px}.page-share-url{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-sm);color:var(--text-secondary);flex:1 1;font-family:var(--font-mono);font-size:11px;min-width:0;padding:4px 7px}.share-page-footer{border-top:1px solid var(--border-soft);color:var(--text-tertiary);font-size:12px;margin-top:32px;padding-top:12px}.share-quest-section{margin:18px 0}.share-quest-section h3{color:var(--text-tertiary);font-size:var(--text-label-sm);letter-spacing:var(--tracking-label);margin:0 0 6px;text-transform:uppercase}.share-quest-objectives{list-style:none;margin:0;padding:0}.share-quest-objectives li{padding:3px 0}.share-quest-objectives li.done{color:var(--text-tertiary);text-decoration:line-through}.cmdk-overlay{position:fixed;inset:0;z-index:100;display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px;background:var(--bg-glass);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.cmdk{width:min(620px,100%);max-height:70vh;display:flex;flex-direction:column;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-2xl);box-shadow:var(--shadow-panel);overflow:hidden}.cmdk-input{border:0;border-bottom:1px solid var(--border-soft);border-radius:0;background:transparent;color:var(--text-primary);font:var(--text-lg)/1.4 var(--font-body);padding:16px 18px}.cmdk-input:focus{outline:none;border-color:var(--border-soft);box-shadow:none}.cmdk-list{overflow:auto;padding:6px;display:grid;grid-gap:2px;gap:2px}.cmdk-empty{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-sm);padding:18px;text-align:center}.cmdk-item{display:grid;grid-template-columns:84px minmax(0,1fr) auto;align-items:center;grid-gap:12px;gap:12px;width:100%;min-height:0;border:0;border-radius:var(--radius-md);background:transparent;color:var(--text-primary);cursor:pointer;font:inherit;letter-spacing:0;padding:9px 12px;text-align:left;text-transform:none}.cmdk-item.active{background:var(--wash-purple)}.cmdk-item .cmdk-group{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.04em;text-transform:uppercase}.cmdk-item .cmdk-label{color:var(--text-primary)}.cmdk-item .cmdk-hint,.cmdk-item .cmdk-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cmdk-item .cmdk-hint{justify-self:end;max-width:240px}.cmdk-footer,.cmdk-item .cmdk-hint{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm)}.cmdk-footer{border-top:1px solid var(--border-soft);display:flex;gap:16px;padding:8px 14px}.cmdk-footer kbd{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:1px 5px;margin-right:3px}.health{display:grid;grid-gap:8px;gap:8px}.health-summary{align-items:center;display:flex;gap:14px;justify-content:space-between;flex-wrap:wrap}.health-clean{color:var(--gold-bright);font-weight:600;margin:0}.health-badge{align-self:center;border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.04em;padding:2px 9px;text-transform:uppercase}.health-badge.sev-error{background:rgba(255,138,138,.14);color:var(--danger);border:1px solid rgba(255,138,138,.32)}.health-badge.sev-warn{background:var(--wash-gold);color:var(--gold-bright);border:1px solid rgba(212,169,87,.32)}.health-badge.sev-info{background:var(--wash-purple);color:var(--purple);border:1px solid var(--border-soft)}.overview{display:grid;grid-gap:14px;gap:14px}.setup-guide{border:1.5px solid var(--gold);background:rgba(200,160,50,.06)}.setup-guide-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px}.setup-guide-header h2{margin:0}.setup-guide-progress{height:5px;background:var(--border-soft);border-radius:3px;margin-bottom:14px;overflow:hidden}.setup-guide-bar{height:100%;background:var(--gold);border-radius:3px;transition:width .4s ease}.setup-guide-steps{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px}.setup-step{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--text-secondary)}.setup-step.done{color:var(--text-tertiary);text-decoration:line-through}.setup-step-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;border:1.5px solid var(--border-soft);font-size:11px;font-weight:700;flex-shrink:0;color:var(--text-tertiary)}.setup-step.done .setup-step-icon{background:var(--gold);border-color:var(--gold);color:#1a130a}.setup-step a{color:var(--gold);font-weight:600}.overview-controls{display:flex;gap:8px;justify-content:flex-end}.overview-grid{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));align-items:start}.overview-widget h2{font-size:var(--text-h3);margin:0 0 10px}.overview-stats{display:grid;grid-gap:4px;gap:4px;list-style:none;margin:0;padding:0;color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-sm)}.overview-stats strong{color:var(--gold-bright);margin-right:4px}.widget-config{display:grid;grid-gap:6px;gap:6px}.widget-config-row{align-items:center;display:grid;grid-template-columns:1fr auto auto;grid-gap:10px;gap:10px;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);padding:8px 12px}.widget-config-row-active{grid-template-columns:auto 1fr auto auto;cursor:-webkit-grab;cursor:grab;-webkit-user-select:none;-moz-user-select:none;user-select:none}.widget-config-row-active:active{cursor:-webkit-grabbing;cursor:grabbing}.widget-config-row-active.drag-over{border-color:var(--gold);background:color-mix(in srgb,var(--gold) 8%,var(--bg-elevated))}.drag-handle{color:var(--text-tertiary);font-size:16px;line-height:1}.block-reorder-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.block-reorder-item{align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:4px;cursor:-webkit-grab;cursor:grab;display:flex;font-size:12px;gap:6px;padding:5px 8px}.block-reorder-item:active{cursor:-webkit-grabbing;cursor:grabbing}.block-reorder-item.block-drag-over{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.block-drag-handle{color:var(--text-tertiary);flex-shrink:0;font-size:14px}.block-label{color:var(--text-secondary);flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.block-move-btns{display:flex;flex-shrink:0;gap:2px}.block-move-btns button{background:transparent;border:none;color:var(--text-tertiary);cursor:pointer;font-size:11px;line-height:1;padding:2px 3px}.block-move-btns button:hover:not(:disabled){color:var(--gold)}.block-move-btns button:disabled{opacity:.3}.widget-config-label{font-size:var(--text-sm)}.widget-config-row .member-actions button{min-height:28px;padding:0 9px}.tsheet{background:#15100c;border:1px solid rgba(201,126,25,.75);border-radius:6px;box-shadow:inset 0 0 0 1px rgba(255,80,38,.08);color:#d8ad62;display:grid;grid-gap:12px;gap:12px;margin-bottom:20px;padding:16px}.tsheet-registry{align-items:center;background:#ff4b2f;border-radius:4px;color:#fff4d7;display:grid;font-family:var(--font-mono);font-size:10px;font-weight:800;grid-template-columns:1fr 1fr 1fr;letter-spacing:.12em;padding:7px 10px;text-transform:uppercase}.tsheet-registry span:nth-child(2){text-align:center}.tsheet-registry span:nth-child(3){text-align:right}.tsheet-dossier{display:flex;gap:12px}.tsheet-upload{align-items:center;border:1px solid #b57319;border-radius:4px;color:#ffb331;display:grid;flex:0 0 64px;justify-items:center;min-height:86px;padding:8px 4px;text-transform:uppercase}.tsheet-upload strong{font-family:var(--font-display);font-size:38px;line-height:1}.tsheet-upload span{font-family:var(--font-mono);font-size:9px}.tsheet-upload img{border-radius:3px;height:100%;object-fit:cover;width:100%}.tsheet-identity{border-bottom:1px solid rgba(201,126,25,.45);flex:1 1;min-width:0}.tsheet-name{color:#8b8580;display:block;font-family:var(--font-mono);font-size:26px;letter-spacing:.06em;line-height:1.1;text-transform:uppercase}.tsheet-facts{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px}.tsheet-facts span{font-family:var(--font-mono);font-size:12px}.tsheet-facts b{color:#ff4b2f;display:block;font-size:9px;letter-spacing:.1em;text-transform:uppercase}.tsheet-topgrid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(0,1fr) minmax(260px,.9fr)}.tsheet-panel{background:#1a120e;border:1px solid rgba(201,126,25,.55);border-radius:5px;display:grid;grid-gap:10px;gap:10px;min-width:0;padding:12px}.tsheet-cols h4,.tsheet-editor h4,.tsheet-panel h4{align-items:center;color:#ff4b2f;display:flex;font-family:var(--font-mono);font-size:11px;gap:8px;justify-content:space-between;letter-spacing:.08em;margin:0;text-transform:uppercase}.tsheet-panel h4 span{color:#9b7948;font-size:10px;font-style:italic;font-weight:400;letter-spacing:0;text-transform:none}.tsheet-chars{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.tsheet-char{background:#130d0a;border:1px solid rgba(201,126,25,.45);border-radius:4px;display:grid;grid-gap:1px;gap:1px;justify-items:center;min-height:86px;padding:10px 6px 8px;text-align:center}.tsheet-char-key{color:#ff4b2f;font-family:var(--font-mono);font-size:11px;font-weight:800;letter-spacing:.08em}.tsheet-char-label{color:#9b7948;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.04em}.tsheet-char-val{color:#ffb331;font-family:var(--font-display);font-size:30px;line-height:1.05}.tsheet-char-mod{color:#d8ad62;font-family:var(--font-mono);font-size:10px}.tsheet-char-rollable{cursor:pointer;transition:background .15s,box-shadow .15s}.tsheet-char-rollable:hover{background:rgba(255,179,49,.12);box-shadow:0 0 0 1px #ffb33166}.tsheet-skill-rollable{cursor:pointer}.tsheet-skill-rollable:hover{background:rgba(255,179,49,.08)}[data-roll]{cursor:pointer}.tsheet-char[data-roll]:hover{background:rgba(255,179,49,.12);box-shadow:0 0 0 1px #ffb33166}.dnd-ability-card[data-roll]:hover{background:rgba(212,169,87,.15)}.dnd-skills li[data-roll]:hover{background:rgba(212,169,87,.08)}.tsheet-skills li[data-roll]:hover{background:rgba(255,179,49,.08)}.dice-roll-toast{background:rgba(18,14,8,.96);border:1px solid var(--gold,#d4a957);border-radius:8px;bottom:28px;box-shadow:0 4px 24px rgba(0,0,0,.55);cursor:pointer;display:flex;flex-direction:column;gap:3px;padding:10px 18px;position:fixed;right:28px;z-index:300}.dice-roll-label{color:var(--text-tertiary);font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.dice-roll-detail{color:var(--gold,#d4a957);font-family:var(--font-display);font-size:20px}.dice-toast{background:rgba(20,14,10,.96);border:1px solid #ffb331;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.6);cursor:pointer;display:flex;flex-direction:column;gap:2px;margin:0 0 12px;padding:10px 16px;position:relative}.dice-toast-label{color:#d8ad62;font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.dice-toast-sum{color:#ffb331;font-family:var(--font-display);font-size:22px}.dice-toast-sum strong{color:#fff;font-size:28px}.dice-toast-dice{color:#9b7948;font-size:12px}.tsheet-band{align-items:center;grid-template-columns:minmax(180px,auto) auto 1fr}.tsheet-status{border:1px solid #ff4b2f;border-radius:4px;color:#ffb331;font-family:var(--font-mono);font-size:11px;padding:5px 10px;text-transform:uppercase}.tsheet-cols{display:grid;grid-gap:16px;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.tsheet-skill-cols{grid-column-gap:18px;column-gap:18px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.tsheet-skill-details{gap:0}.tsheet-skill-details>summary{cursor:pointer;display:flex;list-style:none}.tsheet-skill-details>summary::-webkit-details-marker{display:none}.tsheet-skill-details>summary:before{color:#ffb331;content:"›";font-family:var(--font-mono);font-size:18px;line-height:1;margin-right:8px;transition:transform .15s ease}.tsheet-skill-details[open]{gap:10px}.tsheet-skill-details[open]>summary:before{transform:rotate(90deg)}.tsheet-skills{display:grid;grid-gap:2px;gap:2px;list-style:none;margin:0;padding:0}.tsheet-skills li{align-items:center;border-bottom:1px solid rgba(201,126,25,.18);color:#d8ad62;display:flex;gap:10px;justify-content:space-between;padding:5px 2px;font-family:var(--font-mono);font-size:12px}.tsheet-skill-lvl{background:#130d0a;border:1px solid rgba(201,126,25,.5);border-radius:3px;color:#ffb331;flex:none;min-width:22px;padding:0 6px;text-align:center}.tsheet-empty{color:#9b7948;font-family:var(--font-mono);font-size:12px;font-style:italic;margin:0;text-align:center}.tsheet-credits{color:#ffb331;font-family:var(--font-mono);margin:10px 0 0}.tsheet-editor{display:grid;grid-gap:8px;gap:8px}.tsheet-editor-chars{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))}.tsheet-editor-chars label{font-size:var(--text-label-sm)}.tsheet-editor-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.tsheet-skill-row{align-items:center;display:grid;grid-gap:6px;gap:6px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 56px auto}.tsheet-skill-row input{padding:6px 8px}@media (max-width:680px){.tsheet-chars{grid-template-columns:repeat(3,minmax(0,1fr))}.tsheet-cols,.tsheet-editor-grid,.tsheet-registry,.tsheet-skill-cols,.tsheet-topgrid{grid-template-columns:1fr}.tsheet-registry{gap:3px}.tsheet-registry span,.tsheet-registry span:nth-child(2),.tsheet-registry span:nth-child(3){text-align:left}.tsheet-band{grid-template-columns:1fr}}.inv-block{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;margin:16px 0;padding:12px 16px}.inv-block h3{font-size:14px;margin:0 0 8px;text-transform:uppercase;letter-spacing:.05em;color:var(--gold)}.inv-table{border-collapse:collapse;font-size:13px;width:100%}.inv-table th{border-bottom:1px solid var(--border);color:var(--muted);font-size:11px;font-weight:600;padding:4px 8px;text-align:left;text-transform:uppercase}.inv-table td{border-bottom:1px solid var(--border-subtle,rgba(255,255,255,.06));padding:5px 8px}.inv-table tr:last-child td{border-bottom:none}.inv-num{text-align:right;width:60px}.inv-notes{color:var(--muted);font-size:12px}.tracker-block{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;margin:16px 0;padding:12px 16px}.tracker-block h3{font-size:14px;margin:0 0 10px;text-transform:uppercase;letter-spacing:.05em;color:var(--gold)}.tracker-row{align-items:center;display:grid;grid-gap:10px;gap:10px;grid-template-columns:120px 1fr 56px;margin-bottom:6px}.tracker-label{font-size:13px}.tracker-bar{background:var(--bg-panel);border-radius:4px;height:8px;overflow:hidden}.tracker-fill{border-radius:4px;height:100%;transition:width .3s}.tracker-val{color:var(--muted);font-size:12px;text-align:right}.traits-block{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;margin:16px 0;padding:12px 16px}.traits-block h3{font-size:14px;margin:0 0 10px;text-transform:uppercase;letter-spacing:.05em;color:var(--gold)}.traits-grid{display:flex;flex-wrap:wrap;gap:6px}.trait-chip{background:color-mix(in srgb,var(--gold) 12%,var(--bg-panel));border:1px solid color-mix(in srgb,var(--gold) 30%,transparent);border-radius:6px;color:var(--text);cursor:help;display:inline-flex;align-items:center;font-size:12px;gap:6px;padding:4px 10px}.trait-val{background:color-mix(in srgb,var(--gold) 25%,transparent);border-radius:3px;font-size:11px;font-weight:700;padding:1px 6px}.trait-chip.trait-type-flaw,.trait-type-flaw .trait-chip{border-color:color-mix(in srgb,#c0392b 40%,transparent)}.trait-chip.trait-type-bonus,.trait-type-bonus .trait-chip{border-color:color-mix(in srgb,#27ae60 40%,transparent)}.wod-sheet{background:var(--bg-overlay,rgba(0,0,0,.55));border:1px solid var(--border-strong,rgba(150,31,56,.6));border-radius:var(--radius-card,6px);color:var(--text-primary);display:grid;grid-gap:1px;gap:1px;margin-bottom:20px;overflow:hidden}.wod-sheet-error{padding:16px}.wod-header{align-items:center;background:var(--bg-panel,rgba(0,0,0,.4));border-bottom:1px solid var(--border-soft);display:grid;grid-gap:12px;gap:12px;grid-template-columns:64px 1fr auto;padding:14px 16px}.wod-portrait-placeholder{align-items:center;background:rgba(0,0,0,.3);border:1px solid var(--border-strong,rgba(150,31,56,.45));border-radius:var(--radius-sm,3px);display:flex;height:64px;justify-content:center;width:64px}.wod-portrait-placeholder span{color:var(--gold);font-family:var(--font-display);font-size:30px;line-height:1;opacity:.6}.wod-header img{border-radius:var(--radius-sm,3px);height:64px;object-fit:cover;width:64px}.wod-header-text{display:grid;grid-gap:2px;gap:2px;min-width:0}.wod-name{color:var(--text-primary);display:block;font-family:var(--font-display);font-size:22px;letter-spacing:.04em;line-height:1.1}.wod-byline{color:var(--gold);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.wod-identity{color:var(--text-secondary);font-size:11px}.wod-morality{color:var(--gold);font-family:var(--font-display);font-size:15px;text-align:right;white-space:nowrap}.wod-attrs-block{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-gap:0;gap:0;grid-template-columns:repeat(3,minmax(0,1fr))}.wod-attr-group{border-right:1px solid var(--border-soft);display:grid;grid-gap:0;gap:0;padding:10px 12px}.wod-attr-group:last-child{border-right:none}.wod-attr-group-label{color:var(--gold);font-family:var(--font-mono);font-size:9px;font-weight:800;letter-spacing:.12em;margin-bottom:6px;text-transform:uppercase}.wod-attr{align-items:center;border-bottom:1px solid var(--border-soft);display:flex;gap:6px;justify-content:space-between;padding:5px 0}.wod-attr:last-child{border-bottom:none}.wod-attr-label{color:var(--text-secondary);font-size:12px;min-width:0}.wod-boxes,.wod-dots{display:inline-flex;flex:none;gap:3px}.wod-dot{border:1.5px solid var(--gold,#961f38);border-radius:50%;height:10px;width:10px}.wod-dot.filled{background:var(--gold,#961f38)}.wod-box{border:1.5px solid var(--text-tertiary,#666);height:10px;width:10px}.wod-box.filled{background:var(--gold,#961f38);border-color:var(--gold,#961f38)}.wod-abilities{background:var(--bg-panel);border-bottom:1px solid var(--border-soft)}.wod-abilities>summary{cursor:pointer;list-style:none;padding:8px 14px}.wod-abilities>summary::-webkit-details-marker{display:none}.wod-abilities>summary h4{margin:0}.wod-abilities-cols{column-count:3;column-gap:0;padding:0 14px 10px}.wod-abilities-cols .wod-rated-list{page-break-inside:avoid;break-inside:avoid}.wod-advantages{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-gap:0;gap:0;grid-template-columns:repeat(3,minmax(0,1fr))}.wod-adv-col{border-right:1px solid var(--border-soft);padding:10px 12px}.wod-adv-col:last-child{border-right:none}.wod-abilities summary h4,.wod-adv-col h4,.wod-section h4{color:var(--gold);font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.1em;margin:0 0 8px;text-transform:uppercase}.wod-rated-list{display:grid;grid-gap:2px;gap:2px;list-style:none;margin:0;padding:0}.wod-rated-list li{align-items:center;border-bottom:1px solid var(--border-soft);display:flex;font-size:12px;gap:6px;justify-content:space-between;padding:4px 0}.wod-rated-list li:last-child{border-bottom:none}.wod-rated-score{flex:none}.wod-item-detail{color:var(--text-tertiary);font-size:11px}.wod-empty{color:var(--text-tertiary);font-size:12px;font-style:italic;margin:4px 0}.wod-pools{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-gap:10px;gap:10px;padding:12px 14px}.wod-pool-row{align-items:flex-start;display:flex;flex-wrap:wrap;gap:8px}.wod-pool-label{color:var(--gold);font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.08em;min-width:100px;padding-top:1px;text-transform:uppercase}.wod-pool-count{color:var(--text-tertiary);font-size:11px;padding-top:1px}.wod-health-grid{display:flex;flex-wrap:wrap;gap:4px}.wod-health-cell{background:var(--bg-base);border:1px solid var(--border-soft);border-radius:3px;font-size:10px;padding:3px 7px;text-align:center}.wod-health-cell.marked{background:var(--gold);border-color:var(--gold);color:var(--bg-base);text-decoration:line-through}.wod-health-penalty{color:var(--text-tertiary);display:block;font-size:9px}.wod-health-cell.marked .wod-health-penalty{color:rgba(0,0,0,.5)}.wod-section{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);padding:10px 14px}.wod-section:last-child{border-bottom:none}@media (max-width:680px){.wod-advantages,.wod-attrs-block{grid-template-columns:1fr}.wod-adv-col,.wod-attr-group{border-right:none;border-bottom:1px solid var(--border-soft)}.wod-abilities-cols{column-count:1}.wod-header{grid-template-columns:48px 1fr}.wod-morality{grid-column:1/-1;text-align:left}}.mage-sheet{--mage-paper:#f4efe2;--mage-ink:#17120f;--mage-muted:#6e6256;--mage-rule:#3d2f27;--mage-gold:#b5822b;--mage-red:#8e1f25;--mage-blue:#243f68;background:linear-gradient(90deg,rgba(36,63,104,.06),transparent 16%,transparent 84%,rgba(142,31,37,.06)),var(--mage-paper);border:2px solid var(--mage-rule);box-shadow:0 18px 38px rgba(0,0,0,.28);color:var(--mage-ink);display:grid;grid-gap:12px;gap:12px;margin:20px 0;padding:16px}.mage-header{align-items:stretch;border-bottom:3px double var(--mage-rule);display:grid;grid-gap:14px;gap:14px;grid-template-columns:86px minmax(180px,.8fr) minmax(260px,1.2fr);padding-bottom:12px}.mage-sigil{align-items:center;border:2px solid var(--mage-rule);display:flex;justify-content:center;min-height:86px;overflow:hidden}.mage-sigil img,.mage-sigil>div{border:0!important;height:100%!important;object-fit:cover;width:100%!important}.mage-header-facts span,.mage-kicker,.mage-panel h4,.mage-pool span{color:var(--mage-red);font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.mage-header h3{color:var(--mage-ink);font-family:var(--font-display);font-size:34px;line-height:1;margin:6px 0 4px}.mage-header p{color:var(--mage-muted);margin:0}.mage-header-facts{display:grid;grid-gap:6px 10px;gap:6px 10px;grid-template-columns:repeat(4,minmax(0,1fr))}.mage-header-facts div{border-bottom:1px solid rgba(61,47,39,.42);min-width:0;padding:3px 0 5px}.mage-header-facts b{color:var(--mage-ink);display:block;font-family:var(--font-mono);font-size:12px;margin-top:3px;overflow-wrap:anywhere}.mage-bottom,.mage-grid,.mage-main{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.mage-main{grid-template-columns:minmax(260px,1.1fr) minmax(220px,.9fr) minmax(220px,.9fr) minmax(220px,.9fr)}.mage-bottom{grid-template-columns:repeat(4,minmax(0,1fr))}.mage-panel,.mage-pool{background:rgba(255,255,255,.38);border:1px solid rgba(61,47,39,.58);min-width:0;padding:10px 12px}.mage-panel h4{border-bottom:1px solid rgba(61,47,39,.38);margin:0 0 8px;padding-bottom:6px}.mage-panel [style*=grid-template-columns]{margin:6px 0!important}.mage-panel [style*="text-transform:uppercase"]{color:var(--mage-ink)!important}.mage-lines,.mage-rated{display:grid;grid-gap:3px;gap:3px;list-style:none;margin:0;padding:0}.mage-lines li,.mage-rated li{align-items:start;border-bottom:1px solid rgba(61,47,39,.24);display:grid;grid-gap:8px;gap:8px;grid-template-columns:minmax(0,1fr) auto;padding:4px 0}.mage-lines li{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr)}.mage-lines b,.mage-rated span{color:var(--mage-ink);font-size:12px}.mage-lines span,.mage-rated em{color:var(--mage-muted);display:block;font-size:11px;font-style:normal;margin-top:2px}.mage-spheres .mage-rated{grid-template-columns:repeat(3,minmax(0,1fr))}.mage-pools{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.mage-pool{display:grid;grid-gap:7px;gap:7px;justify-items:center;text-align:center}.mage-pool b{color:var(--mage-blue);font-family:var(--font-display);font-size:20px}.mage-empty{color:var(--mage-muted);font-size:12px;font-style:italic;margin:0}@media (max-width:1100px){.mage-bottom,.mage-header,.mage-main{grid-template-columns:1fr 1fr}.mage-grid,.mage-pools{grid-template-columns:repeat(2,minmax(0,1fr))}.mage-header .mage-header-facts{grid-column:1/-1}}@media (max-width:680px){.mage-bottom,.mage-grid,.mage-header,.mage-header-facts,.mage-main,.mage-pools,.mage-spheres .mage-rated{grid-template-columns:1fr}}.dnd-sheet{background:var(--bg-overlay,rgba(0,0,0,.5));border:1px solid var(--border-strong);border-radius:var(--radius-card,6px);color:var(--text-primary);display:grid;grid-gap:1px;gap:1px;margin-bottom:20px;overflow:hidden}.dnd-sheet-error{padding:16px}.dnd-header{align-items:center;background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-gap:12px;gap:12px;grid-template-columns:64px 1fr auto;padding:14px 16px}.dnd-portrait-placeholder{align-items:center;background:rgba(0,0,0,.3);border:1px solid var(--border-strong);border-radius:var(--radius-sm,3px);display:flex;height:64px;justify-content:center;width:64px}.dnd-portrait-placeholder span{color:var(--gold);font-family:var(--font-display);font-size:30px;opacity:.6}.dnd-header img{border-radius:var(--radius-sm,3px);height:64px;object-fit:cover;width:64px}.dnd-header-text{display:grid;grid-gap:2px;gap:2px;min-width:0}.dnd-name{color:var(--text-primary);display:block;font-family:var(--font-display);font-size:22px;letter-spacing:.03em;line-height:1.1}.dnd-byline{color:var(--gold);font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase}.dnd-alignment,.dnd-xp{color:var(--text-tertiary);font-size:11px}.dnd-prof-badge{background:var(--bg-base);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 12px;text-align:center}.dnd-prof-val{color:var(--gold);display:block;font-family:var(--font-display);font-size:22px;line-height:1}.dnd-prof-label{color:var(--text-tertiary);display:block;font-size:9px;letter-spacing:.08em;text-transform:uppercase}.dnd-abilities{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-gap:0;gap:0}.dnd-ability-card{border-right:1px solid var(--border-soft);display:grid;grid-gap:1px;gap:1px;justify-items:center;padding:10px 6px;text-align:center}.dnd-ability-card:last-child{border-right:none}.dnd-ability-short{color:var(--gold);font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.1em}.dnd-ability-score{color:var(--text-primary);font-family:var(--font-display);font-size:26px;line-height:1}.dnd-ability-mod{color:var(--gold);font-family:var(--font-mono);font-size:13px;font-weight:700}.dnd-ability-label{color:var(--text-tertiary);font-size:9px;letter-spacing:.04em;text-transform:uppercase}.dnd-save-row{align-items:center;color:var(--text-secondary);display:flex;font-size:10px;gap:3px;margin-top:2px}.dnd-prof-icon{color:var(--text-tertiary);font-size:10px}.dnd-prof-icon.proficient{color:var(--gold)}.dnd-prof-icon.expert{color:var(--purple,#a075ff)}.dnd-main{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);display:grid;grid-gap:0;gap:0;grid-template-columns:minmax(200px,.9fr) minmax(0,1fr)}.dnd-skills-col{border-right:1px solid var(--border-soft);padding:10px 12px}.dnd-combat-col h4,.dnd-section h4,.dnd-skills-col h4{color:var(--gold);font-family:var(--font-mono);font-size:10px;font-weight:800;letter-spacing:.1em;margin:0 0 6px;text-transform:uppercase}.dnd-section h4 span{color:var(--text-tertiary);font-size:10px;font-weight:400;letter-spacing:0;text-transform:none;margin-left:8px}.dnd-skills{display:grid;grid-gap:1px;gap:1px;list-style:none;margin:0;padding:0}.dnd-skills li{align-items:center;border-bottom:1px solid var(--border-soft);display:flex;font-size:11px;gap:4px;padding:3px 0}.dnd-skills li:last-child{border-bottom:none}.dnd-skills li span:nth-child(2){flex:1 1}.dnd-skill-abrev{color:var(--text-tertiary);font-size:9px;letter-spacing:.04em}.dnd-skill-bonus{color:var(--gold);font-family:var(--font-mono);font-size:11px;font-weight:700;min-width:24px;text-align:right}.dnd-passive{color:var(--text-tertiary);font-size:11px;margin-top:8px}.dnd-combat-col{display:grid;grid-gap:10px;gap:10px;padding:12px;align-content:start}.dnd-combat-stats{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.dnd-combat-block{background:var(--bg-base);border:1px solid var(--border-soft);border-radius:var(--radius-sm,3px);padding:8px 6px;text-align:center}.dnd-combat-val{color:var(--text-primary);display:block;font-family:var(--font-display);font-size:24px;line-height:1}.dnd-combat-label{color:var(--text-tertiary);display:block;font-size:9px;letter-spacing:.08em;text-transform:uppercase}.dnd-hp-block{display:grid;grid-gap:4px;gap:4px}.dnd-hp-numbers{align-items:baseline;display:flex;gap:1px}.dnd-hp-current{color:var(--text-primary);font-family:var(--font-display);font-size:28px;line-height:1}.dnd-hp-max,.dnd-hp-sep{color:var(--text-tertiary);font-size:14px}.dnd-hp-temp{color:var(--purple,#a075ff);font-size:12px}.dnd-hp-label{color:var(--text-tertiary);font-size:10px;letter-spacing:.06em;text-transform:uppercase}.dnd-hp-bar{background:var(--bg-base);border-radius:2px;height:4px;overflow:hidden}.dnd-hp-fill{background:var(--gold);border-radius:2px;height:100%;transition:width .3s ease}.dnd-death-saves{display:grid;grid-gap:4px;gap:4px}.dnd-death-label{color:var(--text-tertiary);font-size:10px;letter-spacing:.06em;text-transform:uppercase}.dnd-death-row{align-items:center;display:flex;gap:4px;font-size:11px}.dnd-death-box{border:1.5px solid var(--text-tertiary);border-radius:50%;height:12px;width:12px}.dnd-death-box.filled{background:var(--gold);border-color:var(--gold)}.dnd-section{background:var(--bg-panel);border-bottom:1px solid var(--border-soft);padding:10px 14px}.dnd-section:last-child{border-bottom:none}.dnd-attacks-table{border-collapse:collapse;font-size:12px;width:100%}.dnd-attacks-table th{color:var(--text-tertiary);font-size:9px;letter-spacing:.08em;padding:4px 8px 4px 0;text-align:left;text-transform:uppercase}.dnd-attacks-table td{border-top:1px solid var(--border-soft);padding:5px 8px 5px 0}.dnd-attacks-table td:nth-child(2){color:var(--gold);font-family:var(--font-mono);font-weight:700}.dnd-spells{display:grid;grid-gap:6px;gap:6px}.dnd-spell-group{display:flex;flex-direction:column;gap:2px}.dnd-spell-level-label{color:var(--gold);font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase}.dnd-spell-list{color:var(--text-secondary);font-size:12px}.dnd-feature-list{display:flex;flex-wrap:wrap;gap:4px;list-style:none;margin:0;padding:0}.dnd-feature-list li{background:var(--bg-base);border:1px solid var(--border-soft);border-radius:3px;font-size:11px;padding:3px 8px}.dnd-equip-list{display:flex;flex-wrap:wrap;gap:4px;margin:0}.dnd-equip-list span{background:var(--bg-base);border:1px solid var(--border-soft);border-radius:3px;font-size:11px;padding:3px 8px}.dnd-misc-row{font-size:12px;margin-bottom:4px}.dnd-misc-row b{color:var(--gold);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;margin-right:6px;text-transform:uppercase}@media (max-width:680px){.dnd-abilities{grid-template-columns:repeat(3,minmax(0,1fr))}.dnd-main{grid-template-columns:1fr}.dnd-skills-col{border-right:none;border-bottom:1px solid var(--border-soft)}.dnd-header{grid-template-columns:48px 1fr}.dnd-prof-badge{grid-column:1/-1}}.dnd-sheet-5e{--dnd-paper:#f8f5ee;--dnd-ink:#191713;--dnd-rule:#22201b;--dnd-muted:#5a554b;--dnd-soft:#e7dfd1;background:var(--dnd-paper);border:2px solid var(--dnd-rule);border-radius:4px;color:var(--dnd-ink);font-family:IBM Plex Sans,Arial,sans-serif;gap:0;padding:12px}.dnd-sheet-5e .dnd-header{background:transparent;border:0;display:grid;grid-template-columns:72px minmax(180px,1fr) minmax(360px,1.7fr);grid-gap:12px;gap:12px;padding:0 0 10px}.dnd-sheet-5e .dnd-header img,.dnd-sheet-5e .dnd-portrait-placeholder{background:#fff;border:2px solid var(--dnd-rule);border-radius:4px;color:var(--dnd-ink);height:72px;width:72px}.dnd-sheet-5e .dnd-name{color:var(--dnd-ink);font-family:Cormorant Garamond,Georgia,serif;font-size:30px;letter-spacing:0}.dnd-sheet-5e .dnd-byline{color:var(--dnd-muted);font-family:IBM Plex Mono,monospace;letter-spacing:.04em}.dnd-header-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:6px;gap:6px}.dnd-header-grid div,.dnd-inspiration-row,.dnd-list-panel,.dnd-sheet-5e .dnd-combat-block,.dnd-sheet-5e .dnd-death-saves,.dnd-sheet-5e .dnd-hp-block,.dnd-sheet-5e .dnd-passive,.dnd-sheet-5e .dnd-prof-badge,.dnd-sheet-5e .dnd-section,.dnd-textbox{background:#fff;border:2px solid var(--dnd-rule);border-radius:4px}.dnd-header-grid div{min-height:42px;padding:6px 8px 4px}.dnd-header-grid b{display:block;font-size:13px;font-weight:700;min-height:16px}.dnd-header-grid span,.dnd-sheet-5e .dnd-combat-label,.dnd-sheet-5e .dnd-hp-label,.dnd-sheet-5e .dnd-prof-label,.dnd-sheet-5e h4,.dnd-textbox span{color:var(--dnd-muted);display:block;font-family:IBM Plex Mono,monospace;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.dnd-body{display:grid;grid-template-columns:minmax(190px,.78fr) minmax(280px,1.08fr) minmax(260px,1fr);grid-gap:10px;gap:10px}.dnd-center-col,.dnd-left-rail,.dnd-right-rail{display:grid;align-content:start;grid-gap:8px;gap:8px}.dnd-inspiration-row{align-items:center;display:grid;grid-gap:8px;gap:8px;grid-template-columns:36px 1fr;padding:5px}.dnd-inspiration-box{align-items:center;border:2px solid var(--dnd-rule);display:flex;font-family:IBM Plex Mono,monospace;font-weight:800;height:28px;justify-content:center}.dnd-sheet-5e .dnd-prof-badge{padding:7px}.dnd-sheet-5e .dnd-combat-val,.dnd-sheet-5e .dnd-hp-current,.dnd-sheet-5e .dnd-prof-val{color:var(--dnd-ink);font-family:Cormorant Garamond,Georgia,serif;font-size:32px}.dnd-sheet-5e .dnd-abilities{background:transparent;border:0;display:grid;grid-gap:6px;gap:6px;grid-template-columns:1fr}.dnd-sheet-5e .dnd-ability-card{background:#fff;border:2px solid var(--dnd-rule);border-radius:8px 8px 18px 18px;color:var(--dnd-ink);min-height:78px;padding:6px}.dnd-sheet-5e .dnd-ability-mod,.dnd-sheet-5e .dnd-ability-short,.dnd-sheet-5e .dnd-skill-bonus{color:var(--dnd-ink)}.dnd-sheet-5e .dnd-ability-score{color:var(--dnd-ink);font-size:30px}.dnd-sheet-5e .dnd-save-row{display:none}.dnd-list-panel{padding:8px}.dnd-sheet-5e .dnd-skills li{border-bottom:1px solid #d9d0c1;color:var(--dnd-ink)}.dnd-sheet-5e .dnd-prof-icon{color:var(--dnd-muted)}.dnd-sheet-5e .dnd-prof-icon.expert,.dnd-sheet-5e .dnd-prof-icon.proficient{color:var(--dnd-ink)}.dnd-sheet-5e .dnd-passive{color:var(--dnd-ink);font-weight:700;padding:8px}.dnd-sheet-5e .dnd-combat-stats,.dnd-small-pair{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(3,minmax(0,1fr))}.dnd-small-pair{grid-template-columns:1fr 1fr}.dnd-sheet-5e .dnd-combat-block,.dnd-sheet-5e .dnd-death-saves,.dnd-sheet-5e .dnd-hp-block,.dnd-sheet-5e .dnd-section{padding:8px}.dnd-sheet-5e .dnd-hp-bar{background:var(--dnd-soft);border:1px solid var(--dnd-rule);height:8px}.dnd-sheet-5e .dnd-hp-fill{background:var(--dnd-ink)}.dnd-sheet-5e .dnd-death-row{color:var(--dnd-ink)}.dnd-sheet-5e .dnd-death-box{border-color:var(--dnd-rule)}.dnd-sheet-5e .dnd-death-box.filled{background:var(--dnd-ink);border-color:var(--dnd-rule)}.dnd-textbox{min-height:78px;padding:8px}.dnd-textbox p{color:var(--dnd-ink);font-size:13px;line-height:1.35;margin:0 0 8px;white-space:pre-wrap}.dnd-sheet-5e .dnd-attacks-table td,.dnd-sheet-5e .dnd-attacks-table th{border-color:#d9d0c1;color:var(--dnd-ink)}.dnd-sheet-5e .dnd-equip-list,.dnd-sheet-5e .dnd-feature-list{display:grid;grid-gap:4px;gap:4px}.dnd-sheet-5e .dnd-equip-list span,.dnd-sheet-5e .dnd-feature-list li{background:transparent;border:0;border-bottom:1px solid #d9d0c1;border-radius:0;color:var(--dnd-ink);padding:3px 0}.dnd-coins{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(5,minmax(0,1fr))}.dnd-coins h4{grid-column:1/-1}.dnd-coins div{align-items:center;display:grid;grid-gap:3px;gap:3px;text-align:center}.dnd-coins div span{color:var(--dnd-muted);font-family:IBM Plex Mono,monospace;font-size:9px}.dnd-coins div b{border:1px solid var(--dnd-rule);border-radius:999px;min-height:24px;padding:3px}.dnd-appearance-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:6px;gap:6px;margin-top:6px}.dnd-appearance-grid div{border-bottom:1px solid #d9d0c1}.dnd-appearance-grid b{color:var(--dnd-muted);font-family:IBM Plex Mono,monospace;font-size:8px;margin-right:4px;text-transform:uppercase}@media (max-width:980px){.dnd-body,.dnd-sheet-5e .dnd-header{grid-template-columns:1fr}.dnd-header-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.pf2-sheet{--pf2-paper:#f7f0df;--pf2-panel:#fffaf0;--pf2-ink:#201816;--pf2-muted:#6f6258;--pf2-red:#8f2028;--pf2-red-dark:#5a1117;--pf2-line:#c9b9a1;background:var(--pf2-paper);border:2px solid var(--pf2-red-dark);border-radius:4px;color:var(--pf2-ink);font-family:IBM Plex Sans,Arial,sans-serif;gap:10px;padding:12px}.pf2-header{align-items:stretch;background:var(--pf2-red);border:1px solid var(--pf2-red-dark);display:grid;grid-gap:10px;gap:10px;grid-template-columns:82px minmax(0,1fr) 96px;padding:8px}.pf2-header .dnd-portrait-placeholder,.pf2-header img{background:var(--pf2-panel);border:2px solid var(--pf2-red-dark);border-radius:3px;height:82px;object-fit:cover;width:82px}.pf2-title{align-content:center;background:var(--pf2-panel);border:1px solid rgba(0,0,0,.25);display:grid;grid-gap:2px;gap:2px;min-width:0;padding:8px 12px}.pf2-card-list span,.pf2-equipment small,.pf2-hero span,.pf2-identity span,.pf2-list small,.pf2-panel h4,.pf2-spell-meta,.pf2-stat-row span,.pf2-title small,.pf2-title span{color:var(--pf2-muted);font-family:IBM Plex Mono,monospace;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.pf2-title strong{color:var(--pf2-ink);font-family:Cormorant Garamond,Georgia,serif;font-size:32px;line-height:1}.pf2-hero{align-content:center;background:var(--pf2-panel);border:1px solid rgba(0,0,0,.25);display:grid;justify-items:center;padding:8px;text-align:center}.pf2-hero b{color:var(--pf2-red);font-family:Cormorant Garamond,Georgia,serif;font-size:38px;line-height:1}.pf2-identity{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(4,minmax(0,1fr))}.pf2-ability,.pf2-hp,.pf2-identity div,.pf2-panel,.pf2-stat-row div{background:var(--pf2-panel);border:1px solid var(--pf2-line);border-radius:3px}.pf2-identity div{min-height:42px;padding:6px 8px}.pf2-identity b{display:block;font-size:13px;min-height:18px}.pf2-body{display:grid;grid-gap:10px;gap:10px;grid-template-columns:minmax(220px,.8fr) minmax(360px,1.25fr) minmax(260px,.95fr)}.pf2-left,.pf2-main,.pf2-right{align-content:start;display:grid;grid-gap:8px;gap:8px}.pf2-abilities{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.pf2-ability{display:grid;grid-gap:1px;gap:1px;justify-items:center;min-height:84px;padding:6px}.pf2-ability span{color:var(--pf2-red);font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:800}.pf2-ability strong,.pf2-hp strong,.pf2-perception b,.pf2-stat-row b{color:var(--pf2-ink);font-family:Cormorant Garamond,Georgia,serif;font-size:30px;line-height:1}.pf2-ability b{border:1px solid var(--pf2-line);border-radius:999px;padding:1px 10px}.pf2-ability small{color:var(--pf2-muted);font-size:10px}.pf2-panel{padding:8px}.pf2-panel h4{color:var(--pf2-red);margin:0 0 7px}.pf2-panel p{margin:0;white-space:pre-wrap}.pf2-list{display:grid;grid-gap:2px;gap:2px;list-style:none;margin:0;padding:0}.pf2-list li,.pf2-perception{align-items:center;border-bottom:1px solid var(--pf2-line);display:grid;grid-gap:6px;gap:6px;grid-template-columns:24px minmax(0,1fr) 34px 44px;min-height:27px}.pf2-list b{text-align:right}.pf2-rank{border:1px solid var(--pf2-line);border-radius:999px;color:var(--pf2-muted);display:inline-grid;font-family:IBM Plex Mono,monospace;font-size:10px;font-weight:900;height:20px;place-items:center;width:20px}.pf2-rank-e,.pf2-rank-l,.pf2-rank-m,.pf2-rank-t{background:var(--pf2-red);border-color:var(--pf2-red-dark);color:#fff}.pf2-rank-e{background:#6f2a2f}.pf2-rank-m{background:#34363b}.pf2-rank-l{background:#111}.pf2-stat-row{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(4,minmax(0,1fr))}.pf2-stat-row div{display:grid;justify-items:center;min-height:66px;padding:8px 6px;text-align:center}.pf2-hp{padding:9px}.pf2-hp h4{color:var(--pf2-red);margin:0 0 4px;text-transform:uppercase}.pf2-hp-bar{background:#eadccb;border:1px solid var(--pf2-line);height:9px;margin:6px 0}.pf2-hp-bar span{background:var(--pf2-red);display:block;height:100%}.pf2-hp p{color:var(--pf2-muted);font-size:12px;margin:0}.pf2-table{border-collapse:collapse;width:100%}.pf2-table td,.pf2-table th{border-bottom:1px solid var(--pf2-line);font-size:12px;padding:5px;text-align:left}.pf2-table th{color:var(--pf2-red);font-family:IBM Plex Mono,monospace;font-size:9px;text-transform:uppercase}.pf2-card-list,.pf2-equipment{display:grid;grid-gap:5px;gap:5px;list-style:none;margin:0;padding:0}.pf2-card-list li,.pf2-equipment li{border-bottom:1px solid var(--pf2-line);padding:3px 0 5px}.pf2-card-list b,.pf2-card-list p,.pf2-card-list span{display:block}.pf2-card-list p{color:var(--pf2-muted);font-size:12px;margin:3px 0 0}.pf2-equipment li{display:grid;grid-gap:6px;gap:6px;grid-template-columns:minmax(0,1fr) 42px minmax(80px,1fr)}.pf2-equipment b{text-align:center}.pf2-coins{display:grid;grid-gap:5px;gap:5px;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:8px}.pf2-coins div{border:1px solid var(--pf2-line);border-radius:999px;display:grid;grid-gap:1px;gap:1px;justify-items:center;padding:3px}.pf2-coins span{color:var(--pf2-muted);font-family:IBM Plex Mono,monospace;font-size:8px}.pf2-spell-meta,.pf2-spell-row{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(3,minmax(0,1fr))}.pf2-spell-row{border-bottom:1px solid var(--pf2-line);padding:5px 0}.pf2-spell-row span{grid-column:span 1}@media (max-width:980px){.pf2-body,.pf2-header,.pf2-identity{grid-template-columns:1fr}.pf2-stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}}.rel-panel{border-top:1px solid var(--border-soft);margin-top:0;padding:20px 36px 28px}.rel-panel h4{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 12px;text-transform:uppercase}.rel-groups{display:flex;flex-wrap:wrap;gap:8px}.prop-panel{border-top:1px solid var(--border-soft);margin-top:0;padding:20px 36px 28px}.prop-panel h4{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 12px;text-transform:uppercase}.prop-table{border-collapse:collapse;width:100%}.prop-table td,.prop-table th{border-bottom:1px solid var(--border-soft);font-size:var(--text-sm);padding:6px 8px;text-align:left}.prop-table th{color:var(--text-tertiary);font-weight:600}.resource-tracks{display:flex;flex-direction:column;gap:12px}.resource-track-label{display:flex;font-size:var(--text-sm);justify-content:space-between;margin-bottom:4px}.resource-track-bar{background:var(--border-soft);border-radius:4px;height:8px;overflow:hidden}.resource-track-fill{background:var(--gold);border-radius:4px;height:100%;transition:width .3s ease}.ability-list{gap:8px}.ability-item,.ability-list{display:flex;flex-direction:column}.ability-item{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);gap:2px;padding:8px 12px}.ability-item strong{font-size:var(--text-sm)}.ability-item .badge{align-self:flex-start;font-size:var(--text-label-sm)}.prop-row{gap:4px;margin-bottom:4px}.prop-row,.rel-item{align-items:center;display:flex}.rel-item{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);gap:8px;padding:5px 12px}.rel-type{color:var(--gold);font-family:var(--font-mono);font-size:var(--text-label-sm);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}.rel-type-inverse{color:var(--text-muted)}.rel-row{flex-direction:column;gap:4px;margin-bottom:8px}.rel-row>:first-child,.rel-row>button,.rel-row>input,.rel-row>select{display:inline-flex}.rel-row,.rel-row>:not(.rel-row-extra){align-items:center;display:flex;gap:6px}.rel-row{flex-wrap:wrap}.rel-row>select{flex:0 0 auto;font-size:var(--text-sm)}.rel-row>input{flex:1 1;min-width:0}.rel-row-extra{flex:0 0 100%;display:flex;gap:6px;flex-wrap:wrap}.rel-row-extra input{font-size:var(--text-sm);color:var(--text-secondary);min-width:0}.gallery-shell{margin:0 auto;max-width:1080px;padding:28px 24px 40px;width:100%}.gallery-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.gallery-search{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:var(--radius-md);color:var(--text-primary);padding:11px 14px;flex:1 1;min-width:200px}.gallery-sort{display:flex;align-items:center;gap:4px}.gallery-sort-label{font-size:var(--text-sm);color:var(--text-tertiary);margin-right:4px}.gallery-sort-btn{background:none;border:1px solid var(--border-soft);border-radius:20px;padding:.3rem .75rem;font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:border-color .15s,color .15s}.gallery-sort-btn.active,.gallery-sort-btn:hover{border-color:var(--gold);color:var(--gold)}.gallery-systems{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.gallery-system-chip{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:20px;padding:.25rem .7rem;font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:border-color .15s,color .15s}.gallery-system-chip.active,.gallery-system-chip:hover{border-color:var(--purple);color:var(--purple)}.gallery-system-count{opacity:.6;font-size:var(--text-label-sm);margin-left:2px}.gallery-card-system{color:var(--purple)!important;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em}.gallery-card-meta,.gallery-card-system{font-size:var(--text-label-sm)!important}.gallery-card-meta{color:var(--text-tertiary)!important}.gallery-count{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:.04em;margin:10px 2px 16px;text-transform:uppercase}.gallery-grid{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.gallery-card{background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:var(--radius-xl);color:var(--text-primary);display:grid;grid-gap:6px;gap:6px;padding:18px;text-decoration:none;transition:border-color var(--dur-fast) var(--ease),transform var(--dur-fast) var(--ease)}.gallery-card:hover{border-color:var(--border-strong);transform:translateY(-2px)}.gallery-card strong{color:var(--text-primary);font-family:var(--font-display);font-size:var(--text-h3)}.gallery-card span{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-label)}.gallery-card-description{color:var(--text-secondary)!important;display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-family:var(--font-body)!important;font-size:var(--text-sm)!important;letter-spacing:0!important;line-height:1.5;overflow:hidden;text-transform:none!important}.gallery-card-cta{color:var(--gold)!important;margin-top:6px}.gallery-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}.gallery-tag-chip{background:var(--bg-surface);border:1px solid var(--border-faint);border-radius:20px;color:var(--text-tertiary);cursor:pointer;font-size:var(--text-label-sm);padding:.2rem .6rem;transition:border-color .15s,color .15s}.gallery-tag-chip.active,.gallery-tag-chip:hover{border-color:var(--gold);color:var(--gold)}.gallery-card-tags{display:flex!important;flex-wrap:wrap;gap:4px;margin-top:4px}.gallery-card-tag{background:var(--bg-surface);border:1px solid var(--border-faint);border-radius:12px;color:var(--text-tertiary)!important;font-family:var(--font-mono)!important;font-size:10px!important;letter-spacing:0!important;padding:1px 7px;text-transform:none!important}.public-tag-list{display:flex;flex-wrap:wrap;gap:6px}.public-tag-chip{align-items:center;background:var(--bg-surface);border:1px solid var(--border-soft);border-radius:20px;color:var(--text-secondary);display:inline-flex;font-size:var(--text-sm);gap:6px;padding:.2rem .5rem .2rem .7rem}.public-tag-chip button{background:none;border:0;color:var(--text-tertiary);cursor:pointer;font-size:12px;line-height:1;padding:0}.public-tag-chip button:hover{color:var(--danger)}.public-tag-add{display:flex;gap:6px}.public-tag-add input{flex:1 1;min-width:0}.graph-shell{display:grid;grid-template-columns:200px 1fr;grid-gap:12px;gap:12px;margin-top:16px;overflow:hidden}.graph-filters{display:flex;flex-direction:column;gap:4px;grid-column:1;grid-row:1;max-height:calc(100svh - 140px);overflow-y:auto;padding:14px}.graph-filters h4{color:var(--text-tertiary);font-size:var(--text-label-sm);letter-spacing:var(--tracking-label);margin:0 0 6px;text-transform:uppercase}.graph-filters hr{border:0;border-top:1px solid var(--border-soft);margin:6px 0}.graph-filter-item{align-items:center;cursor:pointer;display:flex;font-size:var(--text-sm);gap:7px}.graph-filter-item input[type=checkbox]{accent-color:var(--gold);cursor:pointer}.graph-filter-actions{display:flex;gap:10px;margin:-2px 0 6px}.graph-count,.graph-filter-actions button{font-size:var(--text-label-sm)}.graph-count{margin-top:10px}.graph-search-wrap{margin-bottom:12px;position:relative}.graph-search-input{width:100%}.graph-search-results{background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:6px;box-shadow:0 6px 24px rgba(0,0,0,.4);list-style:none;margin:2px 0 0;max-height:240px;overflow-y:auto;padding:4px;position:absolute;width:100%;z-index:50}.graph-search-results li button{align-items:center;background:none;border:none;border-radius:4px;color:var(--text);cursor:pointer;display:flex;font-size:13px;gap:8px;padding:5px 8px;text-align:left;width:100%}.graph-search-results li button:hover{background:var(--bg-hover)}.graph-canvas{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-lg);display:block;grid-column:2;grid-row:1;height:calc(100svh - 140px);touch-action:none;width:100%}.graph-empty{align-self:center;grid-column:2;grid-row:1;justify-self:center;max-width:420px;padding:18px;text-align:center;z-index:5}.graph-empty h3{margin-top:0}.graph-edge{stroke:var(--border-strong);stroke-width:1.5;transition:stroke .1s ease,opacity .1s ease}.graph-edge-rel{stroke-dasharray:5 3;stroke-opacity:.65;stroke-width:2}.graph-edge-active{stroke:var(--gold);opacity:1}.graph-edge-dim{opacity:.12}.graph-edge-label{fill:var(--text-tertiary);font-family:var(--font-mono);font-size:10px;pointer-events:none}.graph-canvas .graph-node text{fill:var(--text-primary)}.graph-node-initials{fill:var(--bg-base)!important;font-size:11px;font-weight:700}.graph-node-initials,.graph-node-label{font-family:var(--font-mono);pointer-events:none}.graph-node-label{fill:var(--text-secondary)!important;font-size:10px}.graph-node-selected circle{filter:drop-shadow(0 0 8px currentColor)}.graph-detail{align-self:start;display:flex;flex-direction:column;gap:8px;grid-column:2;grid-row:1;justify-self:end;margin:10px;max-height:calc(100svh - 160px);overflow-y:auto;padding:14px;width:240px;z-index:10}.graph-detail-header{align-items:center;display:flex;font-size:var(--text-label-sm);gap:6px}.graph-detail-close{font-size:var(--text-label);margin-left:auto}.graph-detail-summary{font-size:var(--text-sm);margin:0}.graph-detail-section h4{color:var(--text-tertiary);font-size:var(--text-label-sm);letter-spacing:var(--tracking-label);margin:8px 0 4px;text-transform:uppercase}.graph-detail-link{align-items:center;background:transparent;border:0;color:var(--text-secondary);cursor:pointer;display:flex;font-size:var(--text-sm);gap:6px;padding:3px 0;text-align:left;width:100%}.graph-detail-link:hover{color:var(--text-primary)}.graph-detail-link-row{align-items:center;display:grid;grid-gap:6px;gap:6px;grid-template-columns:minmax(0,1fr) auto}.graph-rel-delete{align-items:center;background:transparent;border:1px solid var(--border-soft);border-radius:4px;color:var(--text-tertiary);cursor:pointer;display:inline-flex;font-family:var(--font-mono);font-size:10px;height:22px;justify-content:center;line-height:1;padding:0;width:22px}.graph-rel-delete:hover{border-color:var(--danger);color:var(--danger)}.graph-rel-delete:disabled{cursor:wait;opacity:.55}.graph-rel-message{font-size:var(--text-label-sm);margin:6px 0 0}.graph-open-btn{margin-top:8px;text-align:center;width:100%}.graph-filter-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.graph-cluster-btn{background:transparent;border:1px solid var(--border-soft);border-radius:3px;color:var(--text-tertiary);cursor:pointer;font-size:11px;line-height:1;margin-left:auto;padding:1px 4px;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}.graph-cluster-btn:hover{background:var(--bg-soft);color:var(--gold)}.graph-cluster-btn.active{background:var(--gold);border-color:var(--gold);color:var(--bg-base)}.graph-cluster-node{filter:drop-shadow(0 0 12px rgba(0,0,0,.5))}.graph-cluster-count{fill:rgba(0,0,0,.65)!important;font-family:var(--font-mono);font-size:10px;font-weight:600;pointer-events:none}.family-tree-app{height:100svh;margin:0;overflow:hidden;padding:0;width:100vw}.family-tree-app .topbar{align-items:flex-start;background:color-mix(in srgb,var(--bg-elevated) 82%,transparent);border:1px solid var(--border-soft);border-radius:8px;box-shadow:var(--shadow-soft);left:16px;max-width:270px;padding:12px;position:fixed;top:14px;z-index:30}.family-tree-app .topbar h1{font-size:28px;line-height:.95}.family-tree-app .topbar p{display:none}.family-tree-app .graph-shell{display:block;height:100svh;margin:0;overflow:hidden;position:relative;width:100vw}.family-tree-app .graph-canvas{border:0;border-radius:0;height:100svh;inset:0;position:absolute;width:100vw}.family-tree-app .graph-filters{background:color-mix(in srgb,var(--bg-elevated) 90%,transparent);box-shadow:var(--shadow-soft);left:16px;max-height:calc(100svh - 142px);overflow-y:auto;position:absolute;top:126px;width:270px;z-index:25}.family-tree-app .graph-detail{box-shadow:var(--shadow-soft);margin:0;max-height:calc(100svh - 36px);position:absolute;right:18px;top:18px;width:280px;z-index:28}.family-tree-app .graph-empty{position:absolute}.family-tree-app .graph-family-card rect{filter:drop-shadow(0 4px 8px rgba(0,0,0,.16))}.family-tree-app .graph-family-name{font-size:11px;font-weight:700}.family-echo-shell{display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(220px,280px) minmax(0,1fr) minmax(220px,280px);height:100svh;inset:0;overflow:hidden;padding:14px;position:fixed;width:100vw}.family-echo-detail,.family-echo-sidebar{align-self:stretch;background:color-mix(in srgb,var(--bg-elevated) 90%,transparent);box-shadow:var(--shadow-soft);display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:14px;z-index:4}.family-echo-sidebar .quiet-link{font-family:var(--font-ui);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.family-echo-detail h3,.family-echo-sidebar h2{line-height:1;margin:8px 0 14px}.family-echo-sidebar label{display:grid;grid-gap:6px;gap:6px;margin-bottom:8px}.family-echo-sidebar label span{color:var(--text-muted);font-family:var(--font-ui);font-size:11px;letter-spacing:.08em;text-transform:uppercase}.family-echo-sidebar input,.family-echo-sidebar select{width:100%}.family-echo-list{border-top:1px solid var(--border-soft);display:flex;flex:1 1;flex-direction:column;gap:4px;margin-top:12px;min-height:0;overflow-y:auto;padding-top:10px}.family-echo-list button{align-items:center;background:transparent;border:1px solid transparent;border-radius:4px;color:var(--text);cursor:pointer;display:flex;gap:8px;justify-content:space-between;padding:8px 9px;text-align:left}.family-echo-list button.active,.family-echo-list button:hover{background:color-mix(in srgb,var(--accent) 18%,transparent);border-color:color-mix(in srgb,var(--accent) 34%,transparent)}.family-echo-list small{color:var(--accent);font-family:var(--font-ui);font-size:9px;letter-spacing:.08em;text-transform:uppercase}.family-echo-board{background:linear-gradient(90deg,color-mix(in srgb,var(--accent) 18%,transparent) 1px,transparent 1px),linear-gradient(color-mix(in srgb,var(--accent) 14%,transparent) 1px,transparent 1px),color-mix(in srgb,var(--bg-surface) 92%,transparent);background-size:52px 52px;border:1px solid var(--border-soft);border-radius:8px;box-shadow:var(--shadow-soft);display:grid;grid-template-rows:1fr auto auto 1fr;grid-gap:26px;gap:26px;min-height:0;overflow:auto;padding:min(5vw,56px);position:relative;touch-action:none;cursor:-webkit-grab;cursor:grab}.family-echo-board.dragging{cursor:-webkit-grabbing;cursor:grabbing}.family-echo-board:after,.family-echo-board:before{background:color-mix(in srgb,var(--accent) 38%,transparent);content:"";left:50%;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%)}.family-echo-board:before{height:1px;width:min(76%,900px)}.family-echo-board:after{height:min(58%,520px);width:1px}.family-echo-empty-board{align-items:center;display:flex;justify-content:center}.family-echo-create{display:grid;grid-gap:12px;gap:12px;max-width:420px;padding:18px;width:min(100%,420px)}.family-echo-create h3{margin:0}.family-echo-editor-actions{display:grid;grid-gap:8px;gap:8px;grid-template-columns:1fr 1fr;margin-bottom:8px}.family-echo-save-msg{margin:0 0 8px}.family-echo-editbox{border:1px solid var(--border-soft);border-radius:6px;display:grid;grid-gap:8px;gap:8px;margin-bottom:10px;padding:10px}.family-echo-detail-form label,.family-echo-editbox label{display:grid;grid-gap:5px;gap:5px}.family-echo-detail-form label span,.family-echo-editbox label span{color:var(--text-muted);font-family:var(--font-ui);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.family-echo-detail-form input,.family-echo-detail-form select,.family-echo-editbox input,.family-echo-editbox select{width:100%}.family-echo-inline-buttons{display:grid;grid-gap:6px;gap:6px;grid-template-columns:repeat(3,1fr)}.family-echo-inline-buttons button,.family-echo-rel-list button{background:color-mix(in srgb,var(--accent) 8%,transparent);border:1px solid var(--border-soft);border-radius:4px;color:var(--text);cursor:pointer;font-family:var(--font-ui);font-size:10px;letter-spacing:.04em;padding:7px;text-transform:uppercase}.family-echo-detail-form{display:grid;grid-gap:9px;gap:9px;margin-bottom:12px}.family-echo-rel-list{display:grid;grid-gap:5px;gap:5px;max-height:140px;overflow:auto}.family-echo-rel-list button{text-align:left}.family-echo-generation{align-items:center;display:grid;grid-gap:10px;gap:10px;justify-items:center;min-width:min-content;position:relative;z-index:1}.family-echo-generation h3{color:var(--text-muted);font-family:var(--font-ui);font-size:11px;letter-spacing:.12em;margin:0;text-transform:uppercase}.family-echo-generation>div,.family-echo-spouses{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.family-echo-generation.focus{grid-template-columns:1fr auto 1fr;margin:8px 0}.family-echo-generation.focus>.family-echo-card{grid-column:2}.family-echo-spouses{grid-column:1/4;min-height:0}.family-echo-card{align-items:center;background:color-mix(in srgb,var(--bg-elevated) 93%,transparent);border:1px solid color-mix(in srgb,var(--border-strong) 84%,transparent);border-radius:5px;box-shadow:0 6px 14px rgba(0,0,0,.12);color:var(--text);cursor:pointer;display:grid;grid-template-columns:46px minmax(0,1fr);min-height:62px;padding:7px;text-align:left;width:190px}.family-echo-card *{color:inherit}.family-echo-card.active,.family-echo-card:hover{border-color:var(--accent)}.family-echo-card.featured{background:color-mix(in srgb,var(--accent) 13%,var(--bg-elevated));border-color:var(--accent);color:var(--text);min-height:76px;width:230px}.family-echo-card.missing-page{opacity:.78}.family-echo-avatar{align-items:center;background:color-mix(in srgb,var(--accent) 18%,transparent);border:1px solid color-mix(in srgb,var(--accent) 48%,transparent);border-radius:999px;display:flex;font-family:var(--font-ui);font-size:12px;height:38px;justify-content:center;overflow:hidden;width:38px}.family-echo-card.featured .family-echo-avatar{height:50px;width:50px}.family-echo-avatar img{height:100%;object-fit:cover;width:100%}.family-echo-name{font-size:14px;line-height:1.15;overflow:hidden;text-overflow:ellipsis}.family-echo-status{color:var(--text-muted);font-family:var(--font-ui);font-size:9px;grid-column:2;letter-spacing:.08em;margin-top:3px;text-transform:uppercase}.family-echo-empty{color:var(--text-muted);font-style:italic;padding:10px}.family-echo-detail .graph-detail-header{flex:initial}.family-echo-detail .button{margin-top:auto}@media (max-width:1100px){.family-echo-shell{grid-template-columns:220px minmax(0,1fr)}.family-echo-detail{display:none}}@media (max-width:760px){.family-echo-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr;padding:10px}.family-echo-sidebar{max-height:240px}.family-echo-board{padding:28px 18px}}.slash-menu{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:0 8px 24px rgba(0,0,0,.35);list-style:none;margin:0;max-height:280px;overflow-y:auto;padding:4px;position:fixed;width:200px;z-index:200}.slash-menu-item{align-items:center;border-radius:var(--radius-sm);cursor:pointer;display:flex;gap:8px;justify-content:space-between;padding:7px 10px;transition:background var(--dur-fast) var(--ease)}.slash-menu-item strong{color:var(--text-primary);font-size:var(--text-sm);font-weight:500}.slash-menu-item span{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm)}.slash-menu-item.active,.slash-menu-item:hover{background:var(--wash-gold)}.slash-menu-item.active strong{color:var(--gold-bright)}.page-history{display:grid;grid-gap:10px;gap:10px;padding:20px 0}.page-history h3{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label);letter-spacing:var(--tracking-label);margin:0 0 4px;text-transform:uppercase}.history-commit{align-items:center;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:var(--radius-md);display:grid;grid-gap:3px 8px;gap:3px 8px;grid-template-columns:1fr auto auto;grid-template-rows:auto auto;padding:10px 12px}.history-meta{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);grid-column:1;grid-row:1}.history-message{color:var(--text-secondary);font-size:var(--text-sm);grid-column:1;grid-row:2}.history-message:hover{color:var(--text-primary)}.history-sha{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm);grid-column:2;grid-row:1/3;align-self:center}.history-commit>button{grid-column:3;grid-row:1/3;align-self:center}.history-diff{background:var(--panel-bg-2,rgba(0,0,0,.15));border-radius:0 0 var(--radius-md) var(--radius-md);border:1px solid var(--border-soft);border-top:none;font-family:var(--font-mono);font-size:12px;line-height:1.5;max-height:340px;overflow-y:auto;padding:6px 0}.diff-line{display:flex;gap:8px;padding:0 12px;white-space:pre-wrap;word-break:break-all}.diff-add{background:rgba(80,190,120,.12);color:#6ed896}.diff-del{background:rgba(220,80,80,.12);color:#e07070}.diff-eq{color:var(--text-tertiary)}.diff-mark{flex-shrink:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:12px}.diff-sep{color:var(--text-tertiary);font-family:var(--font-mono);font-size:11px;padding:2px 12px}.activity-feed{display:grid;grid-gap:8px;gap:8px}.activity-commit{align-items:center;display:grid;grid-gap:4px;gap:4px;grid-template-columns:1fr auto}.activity-commit-meta{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm)}.activity-commit-msg{color:var(--text-secondary);font-size:var(--text-sm);text-decoration:none}.activity-commit-msg:hover{color:var(--gold)}.activity-sha{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-label-sm)}.notif-bell-btn,.notif-bell-wrap{position:relative}.notif-bell-btn{background:none;border:1px solid var(--border-soft);border-radius:8px;padding:.35rem .6rem;cursor:pointer;font-size:1rem;color:var(--text-secondary);transition:border-color .15s}.notif-bell-btn.has-unread,.notif-bell-btn:hover{border-color:var(--gold);color:var(--gold)}.notif-badge{position:absolute;top:-4px;right:-4px;background:var(--gold);color:var(--bg-base);border-radius:10px;font-size:10px;font-weight:700;min-width:16px;height:16px;display:flex;align-items:center;justify-content:center;padding:0 3px}.notif-dropdown{position:absolute;top:calc(100% + 6px);right:0;width:320px;background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:10px;box-shadow:0 8px 32px rgba(0,0,0,.5);z-index:200;overflow:hidden}.notif-dropdown-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border-faint)}.notif-mark-all{background:none;border:none;color:var(--purple);font-size:var(--text-sm);cursor:pointer;padding:0}.notif-mark-all:hover{text-decoration:underline}.notif-empty{padding:1.5rem 1rem;text-align:center;color:var(--text-tertiary);font-size:var(--text-sm)}.notif-item{border-bottom:1px solid var(--border-faint);cursor:default;position:relative}.notif-item-btn{display:block;width:100%;padding:.75rem 1rem;background:none;border:none;border-radius:0;min-height:unset;text-align:left;cursor:pointer;font-family:var(--font-body);font-size:inherit;font-weight:400;letter-spacing:0;text-transform:none;color:var(--text-primary);transition:background .1s}.notif-item-btn:hover{background:var(--bg-wash);border-color:transparent;color:var(--text-primary)}.notif-item:last-child{border-bottom:none}.notif-item:not(.notif-read){background:rgba(160,117,255,.06)}.notif-item:not(.notif-read):before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--purple);border-radius:0 2px 2px 0}.notif-item-title{font-weight:600;color:var(--text-primary);margin-bottom:.2rem}.notif-item-body,.notif-item-title{display:block;font-size:var(--text-sm)}.notif-item-body{color:var(--text-secondary);margin-bottom:.25rem;line-height:1.4}.notif-item-meta{display:block;font-size:var(--text-label-sm);color:var(--text-tertiary)}.notif-item-link{display:block;padding:0 1rem .5rem;font-size:var(--text-sm);color:var(--purple);text-decoration:none;display:inline-block;margin-top:.25rem}.notif-item-link:hover{text-decoration:underline}.presence-banner{background:rgba(212,169,87,.1);border:1px solid rgba(212,169,87,.3);border-radius:6px;padding:.45rem .9rem;font-size:var(--text-sm);color:var(--gold);margin:0}.ai-chat-shell{display:flex;flex-direction:column;height:100vh;background:var(--bg-base)}.ai-chat-header{display:flex;align-items:center;gap:1rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--border-soft);background:var(--bg-surface);flex-shrink:0}.ai-chat-title{font-family:var(--font-display);font-size:var(--text-h3);color:var(--text-primary);margin:0;flex:1 1}.ai-chat-body{display:flex;flex:1 1;overflow:hidden}.ai-chat-messages{flex:1 1;overflow-y:auto;padding:1.5rem}.ai-chat-empty,.ai-chat-messages{display:flex;flex-direction:column;gap:1rem}.ai-chat-empty{align-items:center;padding:3rem 1rem;text-align:center;color:var(--text-secondary)}.ai-chat-empty-icon{font-size:3rem}.ai-chat-suggestions{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center;max-width:600px}.ai-suggestion-chip{background:var(--bg-elevated);border:1px solid var(--border-soft);border-radius:20px;padding:.35rem .9rem;font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:border-color .15s,color .15s}.ai-suggestion-chip:hover{border-color:var(--purple);color:var(--text-primary)}.ai-message{display:flex;flex-direction:column;gap:.35rem;max-width:760px}.ai-message-user{align-self:flex-end;align-items:flex-end}.ai-message-assistant{align-self:flex-start}.ai-message-label{font-size:var(--text-label-sm);color:var(--text-tertiary);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em}.ai-message-content{background:var(--bg-elevated);border:1px solid var(--border-faint);border-radius:10px;padding:.65rem 1rem;font-size:var(--text-base);color:var(--text-primary);line-height:1.6;white-space:pre-wrap}.ai-message-user .ai-message-content{background:var(--bg-soft);border-color:var(--border-soft)}.ai-thinking{color:var(--text-tertiary);font-style:italic}.ai-error{background:rgba(255,138,138,.1);border:1px solid rgba(255,138,138,.25);border-radius:8px;padding:.65rem 1rem;font-size:var(--text-sm);color:var(--danger)}.ai-chat-input-row{display:flex;gap:.5rem;padding:1rem 1.5rem;border-top:1px solid var(--border-soft);background:var(--bg-surface);flex-shrink:0}.ai-chat-input{flex:1 1;background:var(--field-bg);border:1px solid var(--border-soft);border-radius:8px;padding:.6rem 1rem;font-size:var(--text-base);color:var(--text-primary);font-family:var(--font-body)}.ai-chat-input:focus{outline:none;border-color:var(--purple)}.ai-context-panel{width:280px;border-left:1px solid var(--border-soft);background:var(--bg-surface);display:flex;flex-direction:column;gap:.5rem;padding:1rem;overflow-y:auto;flex-shrink:0}.ai-context-header{display:flex;flex-direction:column;gap:.25rem}.ai-context-hint{font-size:var(--text-sm);color:var(--text-tertiary)}.ai-context-filter{background:var(--field-bg);border:1px solid var(--border-soft);border-radius:6px;padding:.4rem .7rem;font-size:var(--text-sm);color:var(--text-primary);font-family:var(--font-body);width:100%}.ai-context-filter:focus{outline:none;border-color:var(--purple)}.ai-context-list{display:flex;flex-direction:column;gap:.25rem;overflow-y:auto;flex:1 1}.ai-context-category{font-size:var(--text-label-sm);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.06em;padding:.5rem 0 .15rem}.ai-context-item{display:flex;align-items:center;gap:.5rem;padding:.25rem .35rem;border-radius:5px;font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer}.ai-context-item:hover{background:var(--bg-elevated);color:var(--text-primary)}.ai-context-item input[type=checkbox]{accent-color:var(--purple);flex-shrink:0}.ai-context-empty{font-size:var(--text-sm);color:var(--text-tertiary);padding:.5rem}.button-active{border-color:var(--purple);color:var(--purple)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.skip-link{position:fixed;top:-100%;left:1rem;z-index:9999;padding:8px 16px;background:var(--gold);color:var(--bg-base);font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;letter-spacing:var(--tracking-label);text-transform:uppercase;border-radius:var(--radius-md);text-decoration:none;transition:top .15s}.skip-link:focus{top:1rem}@media (max-width:480px){.topbar{gap:8px;padding:10px 14px}.topbar-actions{flex-wrap:wrap;gap:6px}.topbar-actions>a,.topbar-actions>button{font-size:12px;padding:5px 10px}.gallery-grid{grid-template-columns:1fr}.gallery-controls{flex-direction:column;align-items:stretch}.gallery-sort{justify-content:flex-start;flex-wrap:wrap}.boards-canvas-wrap,.map-canvas{min-height:50vh}.panel{padding:14px}.nav-link{padding:8px 10px}.button,button{padding:7px 12px}h1{font-size:clamp(22px,6vw,32px)}h2{font-size:20px}h3{font-size:16px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.skip-link{transition:none}}@media print{.button,.editor-actions,.editor-meta-panel,.editor-split-toggle,.editor-tabs,.editor-toolbar,.nav-sidebar,.page-actions,.topbar,button{display:none!important}.app-shell{grid-template-columns:1fr!important}.editor-pane,.preview-pane{width:100%!important;max-width:100%!important}.content-body{max-width:100%;padding:0}*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.tsheet{page-break-inside:avoid;box-shadow:none!important;border:1px solid #555!important}.tsheet-skill-details[open] summary{display:none}.tsheet-panel{page-break-inside:avoid;break-inside:avoid}.dnd-sheet{page-break-inside:avoid;box-shadow:none!important}.pf2-sheet{border-color:#5a1117!important;max-width:100%!important;padding:8px!important}.pf2-abilities,.pf2-card-list li,.pf2-equipment li,.pf2-hp,.pf2-identity,.pf2-panel,.pf2-stat-row{page-break-inside:avoid;break-inside:avoid}.dnd-main{display:block!important}.dnd-combat-col,.dnd-skills-col{width:100%}.dnd-combat-col,.dnd-section,.dnd-skills-col{page-break-inside:avoid;break-inside:avoid}.manuscript-toolbar{display:none!important}.manuscript-reader{max-width:100%;padding:0}.manuscript-break{page-break-after:always;break-after:page;border:none}h1,h2{page-break-after:avoid;break-after:avoid}img{max-width:100%}}.scsheet{background:#14100a;border:1px solid rgba(190,158,90,.6);border-radius:6px;color:#e6d7b0;display:grid;grid-gap:14px;gap:14px;margin-bottom:20px;padding:16px}.scsheet-error{color:var(--danger)}.scsheet-head{display:flex;gap:14px}.scsheet-portrait{align-items:center;border:1px solid #8d7434;border-radius:4px;color:#b99a4e;display:flex;flex:0 0 96px;font-size:11px;height:120px;justify-content:center;overflow:hidden;text-transform:uppercase}.scsheet-portrait img{height:100%;object-fit:cover;width:100%}.scsheet-ident{display:flex;flex-direction:column;gap:6px;justify-content:center}.scsheet-name{color:#f4e3b4;font-family:var(--font-display);font-size:26px;line-height:1.1}.scsheet-facts{display:flex;flex-wrap:wrap;gap:18px}.scsheet-facts span{display:flex;flex-direction:column;font-size:14px}.scsheet-facts b,.scsheet-heraldry b{color:#a98f4f;font-family:var(--font-mono);font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.scsheet-motto{color:#c9b479;font-size:14px}.scsheet-heraldry{font-size:13px}.scsheet-derived{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(4,minmax(0,1fr))}.scsheet-stat{background:#1c1610;border:1px solid #6f5c2c;border-radius:4px;display:grid;grid-gap:2px;gap:2px;justify-items:center;padding:10px 6px;text-align:center}.scsheet-stat-val{color:#f6cf6d;font-family:var(--font-display);font-size:30px;line-height:1}.scsheet-stat-key{color:#e6d7b0;font-size:12px;font-weight:600}.scsheet-stat-formula{color:#8a7644;font-size:10px}.scsheet-panel{background:#1a150e;border:1px solid #5f4f26;border-radius:4px;padding:12px}.scsheet-panel h4{align-items:baseline;border-bottom:1px solid #4a3d1e;color:#f0d894;display:flex;flex-wrap:wrap;font-family:var(--font-display);gap:10px;justify-content:space-between;margin:0 0 10px;padding-bottom:5px}.scsheet-panel h4 span{color:#8a7644;font-family:var(--font-body);font-size:11px;font-weight:400}.scsheet-panel h4:not(:first-child){margin-top:16px}.scsheet-track{display:inline-flex;flex-wrap:wrap;gap:4px;vertical-align:middle}.scsheet-track i{border:1px solid #8d7434;display:block;height:13px;width:13px}.scsheet-destiny i{border-radius:50%}.scsheet-destiny i.on{background:#f6cf6d}.scsheet-destiny i.spent{background:#4a3d1e}.scsheet-damage i.on{background:#d98032}.scsheet-injuries i{border-radius:50%}.scsheet-injuries i.on{background:#c85a3a}.scsheet-wounds i{border-radius:50%}.scsheet-wounds i.on{background:#a32c2c}.scsheet-tracks{display:grid;grid-gap:10px;gap:10px;margin-top:12px}.scsheet-tracks>div{align-items:center;display:flex;flex-wrap:wrap;gap:10px}.scsheet-tracks b{color:#a98f4f;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;min-width:70px;text-transform:uppercase}.scsheet-track-count{color:#8a7644;font-size:11px}.scsheet-ability-cols{display:grid;grid-gap:0 24px;gap:0 24px;grid-template-columns:repeat(2,minmax(0,1fr))}.scsheet-abilities{display:flex;flex-direction:column;gap:2px;list-style:none;margin:0;padding:0}.scsheet-ability{align-items:center;border-bottom:1px solid #2c2413;display:flex;gap:10px;justify-content:space-between;padding:4px 0}.scsheet-ability-main{align-items:center;display:flex;gap:9px}.scsheet-rating{align-items:center;border:1px solid #8d7434;border-radius:3px;color:#f6cf6d;display:flex;font-family:var(--font-mono);font-size:13px;font-weight:700;height:24px;justify-content:center;width:24px}.scsheet-ability-name{font-size:13px}.scsheet-specs{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}.scsheet-spec{background:#241d10;border:1px solid #6f5c2c;border-radius:999px;color:#d8c489;font-size:11px;padding:2px 8px}.scsheet-spec b{color:#f6cf6d}.scsheet-empty-inline{color:#4a3d1e;font-size:12px}.scsheet-attacks{border-collapse:collapse;font-size:12px;width:100%}.scsheet-attacks th{color:#a98f4f;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-align:left;text-transform:uppercase}.scsheet-attacks td,.scsheet-attacks th{border-bottom:1px solid #2c2413;padding:5px 8px 5px 0}.scsheet-cols{display:grid;grid-gap:20px;gap:20px;grid-template-columns:repeat(2,minmax(0,1fr))}.scsheet-list{display:flex;flex-direction:column;gap:3px;list-style:none;margin:0;padding:0}.scsheet-list li{border-bottom:1px solid #2c2413;display:flex;font-size:13px;gap:10px;justify-content:space-between;padding:3px 0}.scsheet-list li span:last-child{color:#8a7644;font-size:12px}.scsheet-empty{color:#6b5a30;font-size:12px;font-style:italic;margin:0}.scsheet-appearance{display:grid;grid-gap:8px 18px;gap:8px 18px;grid-template-columns:repeat(3,minmax(0,1fr))}.scsheet-appearance span{display:flex;flex-direction:column;font-size:13px}.scsheet-appearance b{color:#a98f4f;font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.scsheet-prose{font-size:13px;line-height:1.6;margin:0;white-space:pre-wrap}@media (max-width:900px){.scsheet-derived{grid-template-columns:repeat(2,minmax(0,1fr))}.scsheet-ability-cols,.scsheet-cols{grid-template-columns:1fr}.scsheet-appearance{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{.scsheet{page-break-inside:avoid;border:1px solid #555!important;box-shadow:none!important}.scsheet-ability,.scsheet-panel,.scsheet-stat{page-break-inside:avoid;break-inside:avoid}.scsheet-ability-cols{grid-template-columns:repeat(2,minmax(0,1fr))!important}}.nav-sync-badge{flex-shrink:0;font-size:10px;margin-left:4px}.nav-sync-dirty{color:#e8b34a}.nav-sync-conflict{color:#e05252;font-size:12px}