:root{--header-height: 76px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-body, sans-serif);min-height:100vh}.app{display:flex;flex-direction:column;min-height:100vh}.app-main{padding:1.5rem 2rem;flex:1}.app-header{background:var(--surface);border-bottom:1px solid var(--line);padding:1.1rem 2rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.header-brand{display:flex;align-items:center;gap:.75rem;cursor:pointer}.header-brand--nav{cursor:pointer}.header-brand--nav:hover .logo-rune,.header-brand--nav:hover h1{color:var(--accent)}.logo-rune{font-size:2rem;color:var(--metal);-webkit-user-select:none;user-select:none;line-height:1}.app-header h1{font-family:var(--font-display);font-weight:600;font-size:22px;color:var(--ink);letter-spacing:.08em;line-height:1.2}.header-sub{display:block;font-family:var(--font-mono);color:var(--ink-faint);font-size:9px;letter-spacing:.28em;text-transform:uppercase}.header-controls{margin-left:auto;display:flex;align-items:center;gap:.5rem}.btn-gold{background:var(--accent);color:var(--surface);border:none;padding:.38rem .9rem;border-radius:7px;cursor:pointer;font-size:13px;font-weight:700;font-family:var(--font-body);transition:background .15s;white-space:nowrap}.btn-gold:hover{background:var(--metal)}.btn-destructive{background:transparent;border:1px solid var(--danger-line);color:var(--danger);padding:.38rem .9rem;border-radius:7px;cursor:pointer;font-size:13px;font-weight:700;font-family:var(--font-body);transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.btn-destructive:hover:not(:disabled){background:var(--danger-bg);border-color:var(--danger);color:color-mix(in srgb,var(--danger) 75%,var(--ink))}.btn-destructive:disabled{opacity:.35;cursor:not-allowed}.btn-outline{background:transparent;border:1px solid var(--line-strong);color:var(--accent);padding:.38rem .8rem;border-radius:7px;cursor:pointer;font-size:12.5px;font-family:var(--font-body);transition:background .15s;white-space:nowrap}.btn-outline:hover{background:var(--surface-2)}.user-menu{display:flex;align-items:center;gap:.6rem;margin-left:.5rem}.user-avatar{width:28px;height:28px;border-radius:50%;border:1px solid var(--line-strong);object-fit:cover}.user-name{font-size:13px;color:var(--ink-soft);font-family:var(--font-body);white-space:nowrap}.user-menu-loading{color:var(--ink-faint);font-family:var(--font-body);font-size:13.5px}.status-msg{text-align:center;color:var(--ink-faint);padding:3rem 1rem;font-style:italic;font-size:16px}.status-msg.error{color:var(--danger);font-style:normal}.home-welcome{text-align:center;padding:3rem 2rem 2rem}.home-welcome h2{font-family:var(--font-display);font-weight:600;font-size:27px;color:var(--ink);margin-bottom:.5rem}.home-welcome p{color:var(--ink-soft)}.nav-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.5rem;padding:1.5rem 2rem;max-width:1200px;margin:0 auto}.nav-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.75rem;display:flex;flex-direction:column;gap:.75rem;cursor:pointer;transition:border-color .15s,box-shadow .15s}.nav-card:hover{border-color:var(--line-strong);box-shadow:0 0 16px color-mix(in srgb,var(--accent) 12%,transparent)}.nav-card--coming-soon{opacity:.5;cursor:default}.nav-card--coming-soon:hover{border-color:var(--line);box-shadow:none}.nav-card-icon{font-size:2rem;line-height:1}.nav-card-title{font-family:var(--font-display);font-size:17px;color:var(--ink);font-weight:700}.nav-card-desc{color:var(--ink-soft);font-size:12px;line-height:1.5;flex:1}.coming-soon-label{font-size:12px;color:var(--ink-faint);font-style:italic}.admin-placeholder{max-width:600px;margin:3rem auto;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:2rem}.admin-placeholder h2{color:var(--ink);font-family:var(--font-display);margin-bottom:1rem}.admin-placeholder p{color:var(--ink-soft);margin-bottom:1.5rem}.admin-placeholder ul{color:var(--ink-soft);padding-left:1.5rem;display:flex;flex-direction:column;gap:.4rem}@media (max-width: 700px){.app-header{padding:.9rem 1rem}.header-controls{margin-left:0;width:100%}.app-main,.nav-grid{padding:1rem}}.filter-bar{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;padding:.85rem 2rem;display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end}.filter-group{display:flex;flex-direction:column;gap:5px}.filter-group label{font-family:var(--font-mono);font-size:8.5px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint)}.filter-group input,.filter-group select{background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);padding:8px 11px;border-radius:9px;font-size:13px;font-family:var(--font-body);transition:border-color .15s}.filter-group input{min-width:210px}.filter-group select{min-width:130px}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:var(--accent)}.filter-group select option{background:var(--surface)}.result-count{margin-left:auto;align-self:flex-end;color:var(--ink-faint);font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;white-space:nowrap}.btn-admin-nav{background:transparent;border:1px solid var(--sch-abjuration);color:var(--sch-abjuration);padding:.38rem .8rem;border-radius:7px;cursor:pointer;font-size:12.5px;font-family:var(--font-body);transition:background .15s,border-color .15s,color .15s;white-space:nowrap}.btn-admin-nav:hover{background:color-mix(in srgb,var(--sch-abjuration) 12%,transparent)}.admin-page{max-width:760px;margin:0 auto}.admin-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1.75rem}.admin-title{font-family:var(--font-display);font-size:20px;color:var(--ink);letter-spacing:.04em}.admin-badge{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;padding:.15rem .5rem;border-radius:7px;border:1px solid var(--sch-abjuration);color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 8%,transparent)}.admin-sections{display:flex;flex-direction:column;gap:1.25rem}.admin-section-title{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.22em;color:var(--ink-faint);margin-bottom:.5rem}.admin-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.55rem}.admin-identity{display:flex;align-items:flex-start;gap:1rem}.admin-avatar{width:48px;height:48px;border-radius:50%;border:1px solid var(--line-strong);object-fit:cover;flex-shrink:0}.admin-identity-info{display:flex;flex-direction:column;gap:.55rem;flex:1}.admin-row{display:flex;align-items:baseline;gap:.75rem}.admin-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);min-width:70px;flex-shrink:0}.admin-value{font-size:13.5px;color:var(--ink)}.admin-mono{font-family:var(--font-mono);font-size:12.5px;color:var(--ink-faint);word-break:break-all}.admin-dim{color:var(--ink-faint);font-style:italic}.admin-role-list{display:flex;flex-wrap:wrap;gap:.5rem}.admin-role-badge{font-family:var(--font-mono);font-size:11px;padding:.2rem .65rem;border-radius:20px;border:1px solid;text-transform:uppercase;letter-spacing:.08em}.admin-role-admin{color:var(--sch-illusion);border-color:var(--sch-illusion);background:color-mix(in srgb,var(--sch-illusion) 8%,transparent)}.admin-role-gm{color:var(--metal);border-color:var(--metal);background:color-mix(in srgb,var(--metal) 8%,transparent)}.admin-role-player{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 8%,transparent)}.admin-mode-development{color:var(--warn);font-family:var(--font-mono);font-size:12.5px}.admin-mode-production{color:var(--success);font-family:var(--font-mono);font-size:12.5px}.sysinfo-service-row{align-items:center;gap:0}.sysinfo-service-row .admin-label{min-width:180px;flex-shrink:0}.sysinfo-service-right{display:flex;align-items:center;gap:.6rem}.sysinfo-service-badge{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .5rem;border-radius:7px;border:1px solid;min-width:72px;text-align:center}.sysinfo-service-online{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.sysinfo-service-offline{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.sysinfo-error-text{color:var(--danger)}.sysinfo-service-latency{font-family:var(--font-mono);font-size:11.5px;color:var(--ink-faint);min-width:48px}.sysinfo-restart-btn{margin-left:.5rem;padding:.15rem .55rem;font-family:var(--font-body);font-size:11.5px;background:transparent;border:1px solid var(--line);border-radius:7px;color:var(--ink-faint);cursor:pointer;transition:border-color .15s,color .15s,background .15s}.sysinfo-restart-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.sysinfo-restart-btn:disabled{opacity:.5;cursor:default}.sysinfo-restart-btn--done{border-color:var(--sch-conjuration);color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 7%,transparent)}.admin-hub-welcome{text-align:center;padding:3rem 1rem 2rem}.admin-hub-welcome h2{font-family:var(--font-display);font-size:24px;color:var(--ink);margin-bottom:.5rem}.admin-hub-welcome p{color:var(--ink-faint);font-size:13.5px}.admin-hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1.25rem;padding:1rem 2rem 3rem;max-width:1100px;margin:0 auto}.admin-hub-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:.75rem;cursor:pointer;transition:border-color .2s,box-shadow .2s}.admin-hub-card:hover{border-color:var(--metal);box-shadow:0 0 12px color-mix(in srgb,var(--metal) 15%,transparent)}.admin-hub-card-icon{font-size:1.75rem;line-height:1}.admin-hub-card-title{font-family:var(--font-display);font-size:16px;color:var(--ink)}.admin-hub-card-desc{font-size:13px;color:var(--ink-faint);line-height:1.5;flex:1}.admin-hub-card-header{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.admin-hub-badge{font-family:var(--font-body);font-size:11px;padding:.15rem .45rem;border-radius:20px;font-weight:600;letter-spacing:.04em;white-space:nowrap}.admin-hub-badge--danger{background:var(--danger-bg);color:var(--danger);border:1px solid var(--danger-line)}.admin-hub-badge--active{background:color-mix(in srgb,var(--metal) 18%,transparent);color:var(--metal);border:1px solid var(--metal)}.admin-hub-badge--info{background:color-mix(in srgb,var(--sch-abjuration) 12%,transparent);color:var(--sch-abjuration);border:1px solid color-mix(in srgb,var(--sch-abjuration) 30%,transparent)}.admin-hub-stats{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem .75rem;padding:.6rem 1rem;margin-bottom:1.5rem;background:var(--surface);border:1px solid var(--line);border-radius:9px;font-size:13px}.admin-hub-stat{display:flex;align-items:center;gap:.3rem;color:var(--ink-faint)}.admin-hub-stat strong{color:var(--ink)}.admin-hub-stat-icon{opacity:.8}.admin-hub-stat-label{color:var(--ink-faint)}.admin-hub-stat-sep{color:var(--line);-webkit-user-select:none;user-select:none}.admin-hub-stat--danger,.admin-hub-stat--danger strong{color:var(--danger)}.admin-hub-stat--active{color:var(--metal)}.admin-hub-spinner{display:inline-block;width:8px;height:8px;border:1.5px solid var(--line-strong);border-top-color:var(--metal);border-radius:50%;animation:extractor-spin .8s linear infinite}.admin-subnav{display:flex;align-items:center;gap:.25rem;padding:1rem 2rem .5rem;font-size:12.5px;color:var(--ink-faint)}.admin-subnav-back{background:none;border:none;padding:0;color:var(--ink-faint);font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:color .15s,text-decoration-color .15s}.admin-subnav-back:hover{color:var(--accent);text-decoration-color:var(--accent)}.admin-subnav-sep{opacity:.5}.admin-subnav-current{color:var(--ink-faint)}.admin-panel-placeholder{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;padding:5rem 2rem;color:var(--ink-faint);text-align:center}.admin-panel-placeholder-icon{font-size:3rem;opacity:.4}.admin-panel-placeholder h3{font-family:var(--font-display);font-size:19px;color:var(--ink-soft)}.admin-panel-placeholder p{font-size:13.5px;max-width:320px;line-height:1.6}.extractor-panel{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem 2rem}.extractor-section{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden}.extractor-section-title{display:block;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-faint);padding:.75rem 1.25rem 0}.extractor-section--maintenance{border-color:color-mix(in srgb,var(--danger) 25%,transparent)}.extractor-maintenance-row{display:flex;align-items:center;gap:1rem;padding:.85rem 1.25rem 1rem}.extractor-maintenance-hint{font-family:var(--font-body);font-size:12.5px;color:var(--ink-faint);line-height:1.5}.extractor-job-banner{background:var(--surface-2);border:1px solid var(--line);border-radius:14px;overflow:hidden}.extractor-job-banner--running{border-color:color-mix(in srgb,var(--warn) 35%,transparent);background:var(--warn-bg)}.extractor-job-banner-main{display:flex;align-items:center;gap:.75rem;padding:.75rem 1.25rem;flex-wrap:wrap}.extractor-job-label{font-family:var(--font-body);font-size:13.5px;color:var(--ink);flex:1;min-width:0}.extractor-job-meta{color:var(--ink-faint);font-family:var(--font-mono);font-size:11px;white-space:nowrap}.extractor-log-toggle{margin-left:auto;flex-shrink:0}.extractor-mode-tabs{display:flex;gap:.35rem;padding:.75rem 1.25rem 0;flex-wrap:wrap}.extractor-mode-tab{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;padding:.35rem .85rem;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.extractor-mode-tab:hover:not(:disabled){color:var(--ink);border-color:var(--line-strong)}.extractor-mode-tab--active{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.extractor-mode-tab:disabled{opacity:.45;cursor:not-allowed}.extractor-inputs{padding:.75rem 1.25rem 0;display:flex;flex-direction:column;gap:.75rem}.extractor-input-row{display:flex;align-items:center;gap:.75rem}.extractor-input-label{font-family:var(--font-body);font-size:12px;color:var(--ink-faint);white-space:nowrap;min-width:80px}.extractor-text-input{flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;color:var(--ink);font-family:var(--font-body);font-size:13px;padding:8px 11px;max-width:400px}.extractor-text-input:focus{outline:none;border-color:var(--accent)}.extractor-text-input:disabled{opacity:.45}.extractor-type-pills{display:flex;gap:.35rem}.extractor-type-pill{background:var(--surface-2);border:1px solid var(--line);border-radius:20px;color:var(--ink-faint);font-family:var(--font-body);font-size:12px;padding:.25rem .75rem;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.extractor-type-pill:hover:not(:disabled){color:var(--ink)}.extractor-type-pill--active{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.extractor-type-pill:disabled{opacity:.45;cursor:not-allowed}.extractor-flags{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem}.extractor-flag-label{display:flex;align-items:baseline;gap:.35rem;font-family:var(--font-body);font-size:13px;color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none}.extractor-flag-label--warn{color:var(--warn)}.extractor-flag-hint{font-size:11.5px;color:var(--ink-faint)}.extractor-launch-row{display:flex;align-items:center;gap:1rem;padding:1rem 1.25rem}.extractor-mode-desc{font-family:var(--font-body);font-size:12.5px;color:var(--ink-faint);font-style:italic}.extractor-status-badge{display:inline-block;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid;white-space:nowrap}.extractor-status-done,.extractor-status-imported{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.extractor-status-pending{color:var(--ink-faint);border-color:var(--line);background:transparent}.extractor-status-running{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}.extractor-status-failed{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.extractor-status-completed{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.extractor-spinner{display:inline-block;width:13px;height:13px;border:2px solid color-mix(in srgb,var(--warn) 25%,transparent);border-top-color:var(--warn);border-radius:50%;animation:extractor-spin .75s linear infinite;flex-shrink:0}@keyframes extractor-spin{to{transform:rotate(360deg)}}.extractor-error{padding:.6rem 1.25rem;color:var(--danger);font-family:var(--font-body);font-size:13px}.extractor-warn{padding:.5rem 1.25rem;color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;font-style:italic}.extractor-empty{padding:2rem;text-align:center;color:var(--ink-faint);font-style:italic;font-family:var(--font-body);font-size:13.5px}.extractor-books-empty{padding:2.5rem;text-align:center;color:var(--ink-faint);font-family:var(--font-body)}.extractor-books-empty-icon{font-size:2rem;display:block;margin-bottom:.5rem}.extractor-books-empty p{margin:.2rem 0;font-size:14.5px}.extractor-books-empty-hint{font-size:12.5px;font-style:italic}.extractor-table-wrap{overflow-x:auto}.extractor-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:13px}.extractor-table th{padding:.55rem 1rem;text-align:left;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);border-bottom:1px solid var(--line);white-space:nowrap}.extractor-table td{padding:.55rem 1rem;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:middle}.extractor-table tr:last-child td{border-bottom:none}.extractor-table tr:hover td{background:var(--surface-2)}.extractor-book-title{font-style:italic}.extractor-failures-warn{color:var(--warn);font-weight:600;font-family:var(--font-body)}.extractor-failures-ok{color:var(--ink-faint);font-family:var(--font-body)}.extractor-btn-sm{padding:.28rem .7rem;font-size:12px}.extractor-btn-xs{padding:.18rem .5rem;font-size:11.5px}.extractor-log{margin:0;background:var(--bg);border-top:1px solid var(--line);padding:.75rem 1.25rem;font-family:var(--font-mono);font-size:11.5px;color:var(--sch-conjuration);line-height:1.55;max-height:420px;overflow-y:auto;white-space:pre-wrap;word-break:break-all;border-radius:0 0 14px 14px}.logs-panel{display:flex;flex-direction:column}.logs-filter-bar{display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end;padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--line)}.logs-table-wrap{overflow-x:auto}.logs-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:13px}.logs-table th{padding:.55rem 1rem;text-align:left;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface);position:sticky;top:0;z-index:1}.logs-table td{padding:.55rem 1rem;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:middle}.logs-table tr:last-child td{border-bottom:none}.logs-table tr:hover td{background:var(--surface-2)}.logs-type-badge{display:inline-block;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid}.logs-type-feat{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 10%,transparent)}.logs-type-spell{color:var(--sch-illusion);border-color:var(--sch-illusion);background:color-mix(in srgb,var(--sch-illusion) 10%,transparent)}.logs-type-class{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.logs-type-monster{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.logs-entry-name{font-style:italic;color:var(--ink)}.logs-entry-link{background:none;border:none;padding:0;margin:0;font-family:inherit;font-size:inherit;font-style:italic;color:var(--metal);cursor:pointer;text-decoration:underline;text-decoration-color:transparent;transition:color .15s,text-decoration-color .15s;white-space:nowrap}.logs-entry-link:hover{color:var(--accent);text-decoration-color:var(--accent)}.logs-unnamed{display:flex;flex-direction:column;gap:.15rem}.logs-page-ref{font-size:11px;font-style:normal;color:var(--ink-faint);white-space:nowrap}.logs-raw-preview{font-size:11.5px;font-style:normal;color:var(--ink-faint);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:help}.logs-no-name{font-size:12px;font-style:normal;color:var(--ink-faint);opacity:.5}.logs-action-cell{display:flex;align-items:center;gap:.4rem;white-space:nowrap}.logs-fix-btn{background:transparent;border:1px solid var(--metal);color:var(--metal);font-family:var(--font-body);font-size:11.5px;padding:.2rem .5rem;border-radius:7px;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.logs-fix-btn:hover{color:var(--accent);border-color:var(--accent)}.logs-book-slug{color:var(--ink-faint);font-size:12.5px;white-space:nowrap}.logs-failure-reason{color:var(--ink-faint);font-size:13px;cursor:default}.logs-status-badge{display:inline-block;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid}.logs-status-open{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}.logs-status-resolved{color:var(--ink-faint);border-color:var(--line);background:transparent}.logs-resolve-select{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);padding:.2rem .4rem;border-radius:7px;font-size:12px;font-family:var(--font-body);cursor:pointer}.logs-resolve-select:focus{outline:none;border-color:var(--accent)}.logs-resolved-label{color:var(--ink-faint);font-size:12px;font-family:var(--font-body);font-style:italic}.logs-error{padding:.75rem 1.5rem;color:var(--danger);font-family:var(--font-body);font-size:13px}.entries-error-block{margin:2rem 1.5rem;padding:1.25rem 1.5rem;background:var(--danger-bg);border:1px solid color-mix(in srgb,var(--danger) 25%,transparent);border-radius:9px;font-family:var(--font-body);display:flex;flex-direction:column;align-items:flex-start;gap:.5rem}.entries-error-icon{font-size:1.4rem;line-height:1}.entries-error-title{font-size:14px;font-weight:600;color:var(--danger)}.entries-error-detail{font-size:12.5px;color:var(--ink-faint);font-family:var(--font-mono);word-break:break-all}.entries-error-retry{margin-top:.25rem;background:transparent;border:1px solid var(--danger-line);color:var(--danger);font-family:var(--font-body);font-size:12.5px;padding:.3rem .8rem;border-radius:7px;cursor:pointer;transition:background .15s,border-color .15s}.entries-error-retry:hover{background:var(--danger-bg);border-color:var(--danger)}.logs-empty{padding:3rem}.import-panel{display:flex;flex-direction:column;padding:1.5rem 2rem;gap:1.25rem}.import-selector-row{display:flex;align-items:flex-end;gap:1rem}.import-tabs{display:flex;gap:0;border-bottom:1px solid var(--line)}.import-tab-btn{background:transparent;border:none;border-bottom:2px solid transparent;padding:.55rem 1.1rem;color:var(--ink-faint);font-family:var(--font-body);font-size:13px;cursor:pointer;display:flex;align-items:center;gap:.4rem;transition:color .15s,border-color .15s;margin-bottom:-1px}.import-tab-btn:hover{color:var(--ink)}.import-tab-active{color:var(--accent);border-bottom-color:var(--accent)}.import-tab-count{background:var(--surface-2);border:1px solid var(--line);color:var(--ink-faint);font-size:10.5px;font-family:var(--font-body);padding:.05rem .35rem;border-radius:10px;min-width:20px;text-align:center}.import-tab-active .import-tab-count{border-color:var(--accent);color:var(--accent)}.import-table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:14px}.import-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:13px}.import-table th{padding:.55rem 1rem;text-align:left;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);border-bottom:1px solid var(--line);white-space:nowrap}.import-table td{padding:.55rem 1rem;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:top}.import-table tr:last-child td{border-bottom:none}.import-table tr:hover td{background:var(--surface-2)}.import-name{font-style:italic;white-space:nowrap}.import-trunc{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:default}.import-dim{color:var(--ink-faint);font-size:11.5px}.import-conf{display:inline-block;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid}.import-conf-high{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.import-conf-med{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}.import-conf-low{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.import-conf-none{color:var(--ink-faint);border-color:var(--line);background:transparent}.import-empty{padding:2.5rem;text-align:center;color:var(--ink-faint);font-style:italic;font-family:var(--font-body);font-size:13.5px}.import-prompt{padding:3rem;text-align:center;color:var(--ink-faint);font-style:italic;font-family:var(--font-body);font-size:14.5px}.import-table--clickable .import-row--clickable{cursor:pointer}.import-table--clickable .import-row--clickable:hover td{background:color-mix(in srgb,var(--accent) 6%,transparent)}.import-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem}.import-modal{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:100%;max-width:680px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 55px #0003}.import-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--line);flex-shrink:0}.import-modal-title{font-family:var(--font-display);font-size:17.5px;color:var(--ink);margin:0}.import-modal-close{background:none;border:none;color:var(--ink-faint);font-size:16px;cursor:pointer;padding:.25rem .5rem;border-radius:7px;line-height:1;transition:color .15s,background .15s}.import-modal-close:hover{color:var(--ink);background:var(--surface-2)}.import-modal-body{overflow-y:auto;padding:1rem 1.25rem;display:flex;flex-direction:column;gap:.6rem}.import-modal-row{display:grid;grid-template-columns:160px 1fr;gap:.75rem;align-items:baseline}.import-modal-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);flex-shrink:0;padding-top:.1rem}.import-modal-value{font-size:13.5px;color:var(--ink);font-family:var(--font-body);white-space:pre-wrap;word-break:break-word;line-height:1.5}.attribution-panel{display:flex;flex-direction:column}.attribution-filter-bar{display:flex;flex-wrap:wrap;gap:.65rem;align-items:flex-end;padding:1rem 1.5rem;background:var(--surface);border-bottom:1px solid var(--line)}.attribution-result-count{margin-left:auto}.attribution-type-pills{display:flex;gap:.35rem;align-items:center}.attribution-type-pill{background:var(--surface-2);border:1px solid var(--line);border-radius:20px;color:var(--ink-faint);padding:.25rem .75rem;font-size:12px;font-family:var(--font-body);cursor:pointer;transition:color .15s,border-color .15s,background .15s}.attribution-type-pill:hover{color:var(--ink)}.attribution-type-pill--active{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.attribution-type-badge{display:inline-block;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid}.attribution-type-feat{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 10%,transparent)}.attribution-type-spell{color:var(--sch-illusion);border-color:var(--sch-illusion);background:color-mix(in srgb,var(--sch-illusion) 10%,transparent)}.attribution-type-class{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.attribution-type-monster{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.attribution-table-wrap{overflow-x:auto}.attribution-table{width:100%;border-collapse:collapse;font-family:var(--font-body);font-size:13px}.attribution-table th{padding:.55rem 1rem;text-align:left;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface);position:sticky;top:0;z-index:1}.attribution-table td{padding:.55rem 1rem;border-bottom:1px solid var(--line);color:var(--ink);vertical-align:middle}.attribution-table tr:last-child td{border-bottom:none}.attribution-table tr:hover td{background:var(--surface-2)}.attribution-item-name{font-style:italic;color:var(--ink)}.attribution-current-book{color:var(--ink-faint);font-size:12.5px}.attribution-reassign-select{background:var(--surface-2);border:1px solid var(--line);border-radius:7px;color:var(--ink);font-size:12.5px;font-family:var(--font-body);padding:.2rem .5rem;cursor:pointer}.attribution-reassign-select:focus{outline:none;border-color:var(--accent)}.attribution-save-btn{background:transparent;border:1px solid var(--sch-conjuration);border-radius:7px;color:var(--sch-conjuration);font-size:11.5px;font-family:var(--font-body);padding:.2rem .65rem;cursor:pointer;transition:background .15s,color .15s;white-space:nowrap}.attribution-save-btn:hover:not(:disabled){background:color-mix(in srgb,var(--sch-conjuration) 15%,transparent)}.attribution-save-btn:disabled{opacity:.35;cursor:not-allowed;border-color:var(--line);color:var(--ink-faint)}.attribution-error{margin:1rem 1.5rem;padding:.65rem 1rem;background:var(--danger-bg);border:1px solid color-mix(in srgb,var(--danger) 30%,transparent);border-radius:9px;color:var(--danger);font-family:var(--font-body);font-size:13px}.attribution-not-built{margin:3rem auto;max-width:480px;text-align:center;font-family:var(--font-body);color:var(--ink-faint)}.attribution-not-built-icon{font-size:2.5rem;margin-bottom:.75rem}.attribution-not-built-title{font-size:16px;font-weight:600;color:var(--ink);margin-bottom:.5rem}.attribution-not-built-body{font-size:13px;line-height:1.6}.attribution-not-built-body code{font-family:var(--font-mono);background:var(--surface-2);padding:.1em .35em;border-radius:5px;font-size:.9em}.attribution-empty{font-family:var(--font-body)}.portal-page{max-width:1100px;margin:0 auto;padding:0 1rem 3rem}.portal-welcome{text-align:center;padding:3rem 2rem 2rem;display:flex;flex-direction:column;align-items:center;gap:.6rem}.portal-welcome-icon{font-size:2.5rem;line-height:1;margin-bottom:.25rem}.portal-welcome-title{font-family:var(--font-display);font-size:27px;color:var(--ink);letter-spacing:.04em}.portal-welcome-desc{color:var(--ink-faint);font-size:13.5px;max-width:520px;line-height:1.6}.portal-wip-badge{display:inline-block;margin-top:.25rem;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.12em;padding:.2rem .65rem;border-radius:20px;border:1px solid var(--metal);color:var(--metal);background:color-mix(in srgb,var(--metal) 6%,transparent)}.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;padding:.5rem 1rem}.portal-tile{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:.65rem;transition:border-color .2s,box-shadow .2s}.portal-tile:not(.portal-tile--disabled):hover{border-color:var(--line-strong);box-shadow:0 0 14px color-mix(in srgb,var(--accent) 10%,transparent);cursor:pointer}.portal-tile--disabled{opacity:.55}.portal-tile-icon{font-size:1.75rem;line-height:1}.portal-tile-title{font-family:var(--font-display);font-size:16px;color:var(--ink);font-weight:700}.portal-tile-desc{font-size:13px;color:var(--ink-faint);line-height:1.55;flex:1}.portal-tile-badge{align-self:flex-start;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.08em;padding:.15rem .5rem;border-radius:20px;border:1px solid}.portal-tile-badge--active{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.portal-tile-badge--planned{color:var(--ink-faint);border-color:var(--line);background:transparent}.portal-tile-badge--blocked{color:var(--danger);border-color:var(--danger);background:var(--danger-bg)}.attribution-row--hint-differs td{background:color-mix(in srgb,var(--metal) 4%,transparent)}.attribution-row--hint-differs:hover td{background:color-mix(in srgb,var(--metal) 7%,transparent)}.attribution-th-hint,.attribution-hint-cell{white-space:nowrap}.attribution-hint{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-body);font-size:13px}.attribution-hint--match .attribution-hint-ok{color:var(--sch-conjuration);font-size:16px}.attribution-hint--differs{color:var(--metal)}.attribution-hint--unknown{color:var(--ink-faint);font-style:italic}.attribution-hint-none{color:var(--ink-faint);font-family:var(--font-body);font-size:13px}.attribution-hint-apply{display:inline-block;padding:.1rem .45rem;font-family:var(--font-body);font-size:11.5px;background:color-mix(in srgb,var(--metal) 12%,transparent);border:1px solid var(--metal);border-radius:7px;color:var(--metal);cursor:pointer;transition:background .15s,color .15s}.attribution-hint-apply:hover{background:color-mix(in srgb,var(--metal) 25%,transparent);color:var(--accent)}.btn-clear{background:transparent;border:1px solid var(--line);color:var(--ink-faint);padding:.38rem .8rem;border-radius:7px;cursor:pointer;font-size:12.5px;font-family:var(--font-body);align-self:flex-end;transition:border-color .15s,color .15s;white-space:nowrap}.btn-clear:hover{border-color:var(--accent);color:var(--accent)}.grimoire-main{padding:1.5rem 2rem;flex:1}.grimoire-welcome{text-align:center;padding:3rem 1rem 2rem}.grimoire-welcome h2{font-family:var(--font-display);font-size:24px;color:var(--ink);margin-bottom:.5rem}.grimoire-welcome p{color:var(--ink-faint);font-size:13.5px}.grimoire-section-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem;padding:1rem 2rem 3rem;max-width:1100px;margin:0 auto}.grimoire-section-card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.5rem 1.25rem;display:flex;flex-direction:column;gap:.75rem;cursor:pointer;transition:border-color .2s,box-shadow .2s}.grimoire-section-card:hover:not(.grimoire-section-card--coming-soon){border-color:var(--metal);box-shadow:0 0 12px color-mix(in srgb,var(--metal) 15%,transparent)}.grimoire-section-card--coming-soon{opacity:.5;cursor:default}.grimoire-section-icon{font-size:1.75rem;line-height:1}.grimoire-section-title{font-family:var(--font-display);font-size:16.5px;color:var(--ink)}.grimoire-section-desc{font-size:13px;color:var(--ink-faint);line-height:1.5;flex:1}.grimoire-coming-soon{font-size:12px;color:var(--ink-faint);font-style:italic;text-transform:uppercase;letter-spacing:.05em}.grimoire-subnav{display:flex;align-items:center;gap:.25rem;padding:1rem 2rem .5rem;font-size:12.5px;color:var(--ink-faint)}.grimoire-subnav-back{background:none;border:none;padding:0;color:var(--ink-faint);font-size:12.5px;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:color .15s,text-decoration-color .15s}.grimoire-subnav-back:hover{color:var(--accent);text-decoration-color:var(--accent)}.grimoire-subnav-sep{opacity:.5}.grimoire-subnav-current{color:var(--ink-faint)}.grimoire-reload-btn{margin-left:auto}.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:1.1rem}.cards-grid--loading{opacity:.55;pointer-events:none;transition:opacity .15s}.pagination{display:flex;align-items:center;justify-content:center;gap:1rem;margin-top:1.5rem}.pagination-status{font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;color:var(--ink-faint);white-space:nowrap}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;transition:border-color .2s,box-shadow .2s}.card:hover{border-color:var(--line-strong);box-shadow:0 4px 20px color-mix(in srgb,var(--accent) 10%,transparent)}.card-header{background:var(--surface-2);border-bottom:1px solid var(--line);padding:.8rem 1rem .7rem;position:relative}.card-name{font-family:var(--font-display);font-size:16.5px;color:var(--ink);letter-spacing:.02em;line-height:1.15;padding-right:5.5rem}.card-school-line{margin-top:3px;font-size:10px;font-family:var(--font-mono);letter-spacing:.04em;color:var(--ink-faint);font-style:italic}.descriptor-tags{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.35rem}.descriptor-tag{background:var(--surface);border:1px solid var(--line);color:var(--ink-faint);font-size:9px;padding:.1rem .4rem;border-radius:7px;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em}.school-badge{position:absolute;top:.65rem;right:.75rem;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em;padding:.15rem .45rem;border-radius:20px;border:1px solid}.school-abjuration{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 8%,transparent)}.school-conjuration{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 8%,transparent)}.school-divination{color:var(--sch-divination);border-color:var(--sch-divination);background:color-mix(in srgb,var(--sch-divination) 8%,transparent)}.school-enchantment{color:var(--sch-enchantment);border-color:var(--sch-enchantment);background:color-mix(in srgb,var(--sch-enchantment) 8%,transparent)}.school-evocation{color:var(--sch-evocation);border-color:var(--sch-evocation);background:color-mix(in srgb,var(--sch-evocation) 8%,transparent)}.school-illusion{color:var(--sch-illusion);border-color:var(--sch-illusion);background:color-mix(in srgb,var(--sch-illusion) 8%,transparent)}.school-necromancy{color:var(--sch-necromancy);border-color:var(--sch-necromancy);background:color-mix(in srgb,var(--sch-necromancy) 8%,transparent)}.school-transmutation{color:var(--sch-transmutation);border-color:var(--sch-transmutation);background:color-mix(in srgb,var(--sch-transmutation) 8%,transparent)}.school-universal{color:var(--metal);border-color:var(--metal);background:color-mix(in srgb,var(--metal) 8%,transparent)}.school-unknown{color:var(--ink-faint);border-color:var(--line);background:transparent}.feat-badge{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 8%,transparent)}.card-body{padding:.7rem 1rem .85rem;flex:1;display:flex;flex-direction:column;gap:.55rem}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}.stat{display:flex;flex-direction:column;gap:1px}.stat-label{font-family:var(--font-mono);font-size:8.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint)}.stat-value{font-size:12.5px;color:var(--ink);line-height:1.3}.divider{border:none;border-top:1px solid var(--line)}.desc{font-size:12.5px;color:var(--ink-soft);line-height:1.55;white-space:pre-wrap}.desc.collapsed{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.desc p{margin-bottom:.4em}.desc p:last-child{margin-bottom:0}.desc i,.desc em{font-style:italic}.desc b,.desc strong{font-weight:700;color:var(--metal)}.expand-btn{background:none;border:none;color:var(--accent);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;padding:0;text-align:left;transition:color .15s}.expand-btn:hover{color:var(--metal)}.mat-components{font-size:12.5px;color:var(--ink-faint);font-style:italic;border-top:1px solid var(--line);padding-top:.45rem}.mat-components strong{color:var(--ink-faint);font-style:normal;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.1em}.card-clickable{cursor:pointer}.detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;display:flex;align-items:flex-start;justify-content:center;z-index:200;padding:2rem 1rem;overflow-y:auto}.detail-modal{background:var(--surface);border:1px solid var(--line-strong);border-radius:16px;width:100%;max-width:720px;position:relative;box-shadow:0 20px 55px #0003;padding:22px 24px}.detail-close{position:absolute;top:15px;right:15px;background:transparent;border:1px solid var(--line-strong);color:var(--ink-faint);width:28px;height:28px;border-radius:7px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}.detail-close:hover{border-color:var(--accent);color:var(--accent)}.detail-header{margin-bottom:1.25rem}.detail-school-badge{display:inline-block;font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;font-weight:700;padding:3px 10px;border-radius:20px;margin-bottom:.5rem}.detail-name{font-family:var(--font-display);font-weight:700;font-size:27px;color:var(--ink);letter-spacing:.03em;line-height:1.05;margin-bottom:.3rem}.detail-school-line{color:var(--ink-soft);font-size:13px;font-style:italic;margin-bottom:.4rem}.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:10px 22px;margin-bottom:.5rem}.detail-row{display:flex;flex-direction:column;gap:2px}.detail-label{font-family:var(--font-mono);font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint)}.detail-value{font-size:13.5px;color:var(--ink)}.detail-description{color:var(--ink-soft);font-size:13.5px;line-height:1.68;padding-top:14px;border-top:1px solid var(--line);margin-top:14px;white-space:pre-wrap}.detail-description p{margin-bottom:.75rem}.detail-description ul,.detail-description ol{padding-left:1.4rem;margin-bottom:.75rem}.detail-description li{margin-bottom:.25rem}.detail-description table{border-collapse:collapse;width:100%;margin-bottom:.75rem;font-size:13px}.detail-description th,.detail-description td{border:1px solid var(--line);padding:.3rem .6rem;text-align:left}.detail-description th{background:var(--surface-2);color:var(--ink-faint)}@media (max-width: 700px){.grimoire-section-grid{padding:1rem}.grimoire-subnav{padding:.75rem 1rem .5rem}.cards-grid{grid-template-columns:1fr}.detail-modal{padding:1.25rem}.detail-stats{grid-template-columns:1fr}}.data-editor-modal-backdrop{position:fixed;top:var(--header-height);left:0;right:0;bottom:0;background:#000000a6;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:2.5rem 1rem;overflow-y:auto}.data-editor-modal{background:var(--surface);border:1px solid var(--line);border-radius:16px;width:100%;max-width:760px;display:flex;flex-direction:column;box-shadow:0 20px 55px #0003;position:relative}.data-editor-modal-close{position:absolute;top:.85rem;right:.85rem;background:none;border:1px solid var(--line);color:var(--ink-faint);width:28px;height:28px;border-radius:7px;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;transition:border-color .15s,color .15s}.data-editor-modal-close:hover{border-color:var(--accent);color:var(--accent)}.data-editor-placeholder{padding:3rem;text-align:center}.data-editor-placeholder-hint{color:var(--ink-faint);font-style:italic;font-size:14.5px}.import-filter-row{display:flex;align-items:center;gap:.35rem;padding:.55rem 1rem;flex-wrap:wrap;font-family:var(--font-body);font-size:11.5px;color:var(--ink-faint);border-bottom:1px solid var(--line)}.import-filter-btn{background:transparent;border:1px solid var(--line);color:var(--ink-faint);font-family:var(--font-body);font-size:11px;padding:.2rem .55rem;border-radius:7px;cursor:pointer;transition:color .15s,border-color .15s}.import-filter-btn:hover{color:var(--ink);border-color:var(--accent)}.import-filter-active{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.import-status-badge{display:inline-block;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.07em;padding:.15rem .45rem;border-radius:7px;border:1px solid;white-space:nowrap}.import-status-approved{color:var(--sch-conjuration);border-color:var(--sch-conjuration);background:color-mix(in srgb,var(--sch-conjuration) 10%,transparent)}.import-status-skipped{color:var(--ink-faint);border-color:var(--line);background:transparent}.import-status-review{color:var(--warn);border-color:var(--warn);background:var(--warn-bg)}.import-status-pending{color:var(--sch-abjuration);border-color:var(--sch-abjuration);background:color-mix(in srgb,var(--sch-abjuration) 8%,transparent)}.data-editor-row-selected td{background:color-mix(in srgb,var(--accent) 7%,transparent)!important}.data-editor-entry{display:flex;flex-direction:column;gap:1rem;padding:1.5rem}.data-editor-entry-header{display:flex;flex-direction:column;gap:.4rem;padding-bottom:.75rem;border-bottom:1px solid var(--line)}.data-editor-entry-name{font-family:var(--font-display);font-size:21px;color:var(--ink);margin:0}.data-editor-entry-meta,.data-editor-status-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.data-editor-status-btn{background:transparent;border:1px solid var(--line);color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;padding:.25rem .65rem;border-radius:7px;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.data-editor-status-btn:hover{color:var(--ink);border-color:var(--accent)}.data-editor-status-active{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.data-editor-fields{display:flex;flex-direction:column;gap:.5rem}.import-row-dirty{background:color-mix(in srgb,var(--metal) 5%,transparent);border-radius:7px}.import-row-dirty .import-modal-label{color:var(--metal)}.import-edit-input,.import-edit-textarea{width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:9px;color:var(--ink);font-family:var(--font-body);font-size:13px;padding:.38rem .6rem;transition:border-color .15s;resize:vertical}.import-edit-input:focus,.import-edit-textarea:focus{outline:none;border-color:var(--accent)}.import-modal-prereq-section{display:flex;flex-direction:column;gap:.5rem;padding-top:.5rem;border-top:1px solid var(--line)}.import-modal-section-label{font-family:var(--font-display);font-size:13.5px;color:var(--ink);letter-spacing:.04em}.import-prereq-row-editor{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}.import-prereq-type-select{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);font-family:var(--font-body);font-size:12.5px;padding:.28rem .5rem;border-radius:7px;min-width:130px;flex-shrink:0}.import-prereq-type-select:focus{outline:none;border-color:var(--accent)}.import-prereq-field-input{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);font-family:var(--font-body);font-size:12.5px;padding:.28rem .5rem;border-radius:7px;flex:1;min-width:60px}.import-prereq-field-input:focus{outline:none;border-color:var(--accent)}.import-prereq-min{flex:0 0 70px}.import-prereq-raw{flex:2}.import-prereq-delete-btn{background:transparent;border:1px solid var(--line);color:var(--ink-faint);font-size:11px;width:24px;height:24px;border-radius:7px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:color .15s,border-color .15s}.import-prereq-delete-btn:hover{color:var(--danger);border-color:var(--danger)}.import-prereq-add-btn{background:transparent;border:1px dashed var(--line);color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;padding:.3rem .75rem;border-radius:7px;cursor:pointer;align-self:flex-start;transition:color .15s,border-color .15s}.import-prereq-add-btn:hover{color:var(--accent);border-color:var(--accent)}.data-editor-save-bar{display:flex;align-items:center;gap:.65rem;padding-top:.75rem;border-top:1px solid var(--line);margin-top:auto}.data-editor-dirty-hint{font-family:var(--font-body);font-size:11.5px;color:var(--metal);font-style:italic}.import-save-error{font-family:var(--font-body);font-size:11.5px;color:var(--danger)}.import-save-btn{background:var(--accent);border:none;color:var(--surface);font-family:var(--font-body);font-size:12.5px;font-weight:700;padding:.35rem .85rem;border-radius:7px;cursor:pointer;transition:background .15s;white-space:nowrap}.import-save-btn:hover:not(:disabled){background:var(--metal)}.import-save-btn:disabled{opacity:.4;cursor:not-allowed}.import-view-btn{background:transparent;border:1px solid var(--line);color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;padding:.35rem .75rem;border-radius:7px;cursor:pointer;transition:color .15s,border-color .15s;white-space:nowrap}.import-view-btn:hover{color:var(--ink);border-color:var(--accent)}.data-editor-entry-title-row{display:flex;align-items:baseline;gap:.75rem}.data-editor-position{font-family:var(--font-body);font-size:11.5px;color:var(--ink-faint);white-space:nowrap}.data-editor-kbd-hint{font-family:var(--font-body);font-size:11px;color:var(--ink-faint);opacity:.6;margin-left:auto;white-space:nowrap}.data-editor-nav-row{display:flex;justify-content:space-between;gap:.5rem;padding-top:.5rem;border-top:1px solid var(--line)}.data-editor-nav-btn{background:transparent;border:1px solid var(--line);color:var(--ink-faint);font-family:var(--font-body);font-size:12.5px;padding:.3rem .9rem;border-radius:7px;cursor:pointer;transition:color .15s,border-color .15s}.data-editor-nav-btn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.data-editor-nav-btn:disabled{opacity:.3;cursor:not-allowed}@media (max-width: 700px){.data-editor-modal{margin:0;border-radius:0}.data-editor-modal-backdrop{padding:1rem}}
