/* ============================================================
   MYTHSTEP — COMPLETE STYLESHEET (consolidated through slice 48)
   One source of truth: base · entry pages · editor · effects ·
   rosters · census · succession · reigns · codex · names ·
   resources · clutches · mobile · autocomplete pickers ·
   name blocks · courtesy titles · connections panel · house tags ·
   per-link details · nested lineage · production-editor grid.
   Cleaned: slice-48 blocks de-duplicated (were pasted 3-4×); the
   old .prodstream-table block removed (superseded by .ps-grid).
   ============================================================ */

/* ---------- tokens ---------- */
:root{
  --bg:#100e18;
  --panel:#191722;
  --panel2:#1f1c2a;
  --ink:#f0eef8;
  --muted:#b4afc9;
  --accent:#c9a8ff;
  --link:#a8d4ff;
  --gold:#e8c878;
  --line:rgba(255,255,255,0.12);
  --line-soft:rgba(255,255,255,0.07);
  --danger:#ff9a9a;
  --ok:#9ad9b8;
  --radius:14px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.6;min-height:100vh;
}

/* ---------- brand ---------- */
.brand{font-size:16px;font-weight:600;letter-spacing:1px;text-decoration:none;
  background:linear-gradient(90deg,#c9a8ff,#a8d4ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.brand-lg{font-size:24px;font-weight:700;letter-spacing:2px;text-align:center;
  background:linear-gradient(90deg,#c9a8ff,#a8d4ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}

/* ---------- top bars ---------- */
.topbar,.adminbar{position:sticky;top:0;z-index:50;background:rgba(16,14,24,0.92);
  backdrop-filter:blur(10px);border-bottom:0.5px solid var(--line);padding:14px 22px;
  display:flex;align-items:center;gap:14px;box-shadow:0 6px 24px rgba(0,0,0,0.22);}
.adminbar-spacer{flex:1;}
.who{font-size:13px;color:var(--muted);}

/* ---------- links & ghost buttons (small, inline) ---------- */
.lnk{color:var(--link);text-decoration:none;border-bottom:0.5px dotted rgba(168,212,255,0.4);}
.lnk:hover{border-bottom-style:solid;}

a.btn-ghost,button.btn-ghost,.btn-ghost{
  display:inline-flex;align-items:center;gap:6px;
  width:auto;margin:0;
  font-size:13px;font-weight:500;
  color:var(--link);text-decoration:none;
  background:rgba(168,212,255,0.08);
  border:0.5px solid rgba(168,212,255,0.28);
  border-radius:10px;padding:9px 15px;cursor:pointer;
  transition:background .16s,border-color .16s,transform .12s;
}
a.btn-ghost:hover,button.btn-ghost:hover,.btn-ghost:hover{
  background:rgba(168,212,255,0.16);border-color:var(--accent);transform:translateY(-1px);
}

/* ---------- primary (submit) buttons ---------- */
button[type=submit],.btn-primary{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  width:auto;
  background:linear-gradient(135deg,#c9a8ff,#a8d4ff);color:#1a1726;
  border:none;border-radius:10px;padding:11px 22px;
  font-size:14px;font-weight:600;cursor:pointer;
  box-shadow:0 4px 14px rgba(201,168,255,0.22);
  transition:transform .12s,opacity .12s;
}
button[type=submit]:hover,.btn-primary:hover{transform:translateY(-1px);opacity:.95;}
button[type=submit]:active,.btn-primary:active{transform:translateY(0);}

/* small danger buttons (merged: base + slice 17) */
.btn-danger{display:inline-flex;width:auto;background:rgba(255,90,90,0.14);
  border:0.5px solid rgba(255,90,90,0.4);color:var(--danger);
  border-radius:8px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;}
.btn-danger:disabled{opacity:0.4;cursor:not-allowed;}
.btn-danger:not(:disabled):hover{background:rgba(255,90,90,0.22);}
.rm{flex:0 0 auto;width:34px;height:38px;background:rgba(255,90,90,0.1);
  border:0.5px solid rgba(255,90,90,0.28);color:var(--danger);border-radius:8px;
  cursor:pointer;font-size:16px;line-height:1;opacity:.7;transition:opacity .15s;}
.rm:hover{opacity:1;}

/* ---------- forms ---------- */
label{display:block;font-size:12px;color:#c4bfd8;margin:12px 0 4px;
  text-transform:uppercase;letter-spacing:0.5px;}
input,select,textarea{
  width:100%;background:#1e1c28;color:var(--ink);
  border:1px solid rgba(255,255,255,0.16);border-radius:8px;
  padding:10px 12px;font-size:14px;font-family:inherit;
  transition:border-color .18s,box-shadow .18s;
}
input::placeholder,textarea::placeholder{color:#8d88a4;}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(201,168,255,0.15);}
select option{background:#1e1c28;color:var(--ink);}
textarea{line-height:1.6;}
input[type=file]{padding:8px 10px;color:var(--muted);font-size:13px;}
input[type=checkbox],input[type=radio]{width:auto;}

.err{background:rgba(255,90,90,0.12);border:0.5px solid rgba(255,90,90,0.4);
  border-radius:8px;padding:11px;margin-top:14px;font-size:13.5px;color:#ffc9c9;}

/* ---------- layout containers ---------- */
.public-main,.admin-main{max-width:920px;margin:0 auto;padding:42px 24px 80px;
  animation:fadeUp .4s ease;}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:none;}}
.hero{font-size:34px;font-weight:600;margin-bottom:6px;
  background:linear-gradient(90deg,#f0eef8,#c9a8ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.hero-tag{margin-bottom:6px;}
.muted{color:var(--muted);font-size:14px;}
.empty{margin-top:30px;background:var(--panel);border:0.5px solid var(--line);
  border-radius:14px;padding:28px;text-align:center;color:var(--muted);}

/* ---------- headings ---------- */
.admin-main h1,.public-main h1{font-size:28px;margin-bottom:4px;
  background:linear-gradient(90deg,#f0eef8,#c9a8ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.admin-main h2,.editor h2{font-size:14px;margin:30px 0 12px;text-transform:uppercase;
  letter-spacing:1px;color:#d8c4ff;position:relative;padding-left:12px;}
.admin-main h2::before,.editor h2::before{content:"";position:absolute;left:0;top:50%;
  transform:translateY(-50%);width:4px;height:14px;border-radius:2px;
  background:linear-gradient(180deg,#c9a8ff,#a8d4ff);}

/* ---------- world / entry cards ---------- */
.world-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:14px;margin-top:24px;}
.world-card{background:var(--panel);border:0.5px solid var(--line);border-radius:14px;
  padding:18px;text-decoration:none;color:var(--ink);
  transition:transform .15s,border-color .2s,box-shadow .2s;}
.world-card:hover{transform:translateY(-2px);border-color:var(--accent);
  box-shadow:0 10px 30px rgba(0,0,0,0.3);}
.world-name{font-size:16px;font-weight:600;}
.world-tag{font-size:12.5px;color:var(--muted);margin-top:4px;}

/* ---------- dashboard stats ---------- */
.stat-row{display:flex;gap:14px;margin-top:24px;flex-wrap:wrap;}
.stat{background:var(--panel);border:0.5px solid var(--line);border-radius:14px;
  padding:18px 24px;min-width:120px;transition:transform .15s,border-color .15s;}
.stat:hover{transform:translateY(-2px);border-color:rgba(201,168,255,0.35);}
.stat-n{font-size:28px;font-weight:700;}
.stat-l{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:0.5px;}

/* ---------- category chips ---------- */
.cat-group{margin-bottom:16px;}
.cat-group-name{font-size:12px;color:var(--gold);text-transform:uppercase;
  letter-spacing:1px;margin-bottom:8px;}
.chips{display:flex;flex-wrap:wrap;gap:8px;}
.chip{background:rgba(201,168,255,0.1);border:0.5px solid rgba(201,168,255,0.25);
  border-radius:999px;padding:5px 13px;font-size:12.5px;color:#d8c4ff;
  text-decoration:none;transition:background .15s,transform .12s;}
.chip:hover{background:rgba(201,168,255,0.2);transform:translateY(-1px);}

/* ---------- entry list (admin) ---------- */
.entry-cat-block{margin-bottom:14px;}
.entry-cat-label{font-size:13px;color:var(--ink);font-weight:600;margin-bottom:6px;}
.entry-row{display:flex;align-items:center;gap:10px;padding:8px 12px;
  background:rgba(255,255,255,0.025);border:0.5px solid var(--line);border-radius:10px;
  margin-bottom:6px;transition:border-color .15s,background .15s;}
.entry-row:hover{border-color:rgba(201,168,255,0.3);background:rgba(255,255,255,0.045);}
.entry-port{font-size:16px;width:22px;text-align:center;}
.entry-title{flex:1;color:var(--link);text-decoration:none;}
.entry-status{font-size:11px;padding:2px 9px;border-radius:999px;
  text-transform:uppercase;letter-spacing:0.5px;}
.status-draft{background:rgba(156,151,180,0.18);color:#cdc7e0;}
.status-published{background:rgba(124,196,160,0.18);color:var(--ok);}
.entry-view{font-size:12px;color:var(--muted);text-decoration:none;}

/* ---------- editor ---------- */
.editor .eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:2px;
  color:var(--accent);margin-bottom:8px;}
.form-card{background:var(--panel);border:0.5px solid var(--line);border-radius:14px;
  padding:22px;margin-top:14px;box-shadow:0 8px 30px rgba(0,0,0,0.2);}
.form-card label:first-child{margin-top:0;}
.field-row{display:flex;gap:14px;flex-wrap:wrap;}
.field-row>div{flex:1;min-width:160px;}

.field-item,.rel-item{display:flex;gap:8px;align-items:center;margin-bottom:8px;}
.field-item .fk{max-width:90px;flex:0 0 auto;}
.field-item .fkey{flex:1;}
.field-item .fval{flex:2;}
.rel-item .rtype{flex:1;}
.rel-item .rtarget{flex:2;}
.rel-item .rmeta{flex:1;}

/* status & roller blocks */
.status-block .status-label{font-size:12px;color:var(--gold);font-weight:600;
  margin-bottom:8px;text-transform:uppercase;letter-spacing:0.5px;}
.roll-mu.rolled,.rolled{border-color:var(--accent);
  box-shadow:0 0 0 2px rgba(201,168,255,0.2);}
.roll-out{font-size:12.5px;}

/* inheritance panel */
#inheritPanel .inline-radio{display:inline-flex;align-items:center;gap:6px;
  font-size:13.5px;color:#e8e5f2;text-transform:none;letter-spacing:0;margin:0;cursor:pointer;}
#inheritPanel .parent-mini{flex:1;min-width:240px;background:var(--panel2);
  border:0.5px solid var(--line);border-radius:10px;padding:12px;}
#inheritPanel .parent-mini label{margin-top:0;}

.article-area{min-height:200px;}

/* ---------- relationship tag pickers ---------- */
.picker{margin-bottom:16px;}
.picker .tags{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0;}
.picker .tags:empty{display:none;}
.tag{display:inline-flex;align-items:center;gap:6px;background:rgba(201,168,255,0.14);
  border:0.5px solid rgba(201,168,255,0.35);border-radius:999px;
  padding:4px 6px 4px 12px;font-size:13px;color:#e7ddff;}
.tag button{background:rgba(255,255,255,0.1);border:none;color:#e7ddff;
  width:18px;height:18px;border-radius:50%;cursor:pointer;font-size:13px;
  line-height:1;display:inline-flex;align-items:center;justify-content:center;padding:0;margin:0;}
.tag button:hover{background:rgba(255,90,90,0.35);}
.picker-controls{display:flex;gap:8px;align-items:center;margin-top:6px;}
.picker-controls .picker-select{flex:1;}
.picker-create{flex:0 0 auto;}

.auto-age{font-size:15px;margin-bottom:14px;padding-bottom:14px;
  border-bottom:0.5px solid var(--line-soft);}
.auto-age strong{color:var(--accent);font-size:17px;}

/* ---------- auth ---------- */
.auth-body{display:flex;align-items:center;justify-content:center;min-height:100vh;}
.auth-card{background:var(--panel);border:0.5px solid var(--line);border-radius:16px;
  padding:32px;width:340px;}
.auth-sub{text-align:center;color:var(--muted);font-size:13px;margin:4px 0 18px;}
.auth-card button{width:100%;margin-top:20px;}

/* ============================================================
   ENTRY PAGE LAYOUT (v6) + EFFECT LAYERS
   ============================================================ */
.stage{position:relative;min-height:calc(100vh - 56px);}
/* Effect layers are pinned to the VIEWPORT, not the full page height. This keeps
   the particle density/vibe identical on short and long pages, and stops the
   canvas from growing to thousands of pixels tall on long entries (which was
   the main source of lag). They sit behind content and don't scroll away. */
#fxcanvas,#fxglow,#fxvig{position:fixed;top:56px;left:0;right:0;
  height:calc(100vh - 56px);width:100%;}
#fxcanvas{z-index:0;}
#fxglow{z-index:0;pointer-events:none;mix-blend-mode:screen;}
#fxvig{z-index:0;pointer-events:none;}
.effect-tag{position:absolute;top:14px;right:20px;z-index:3;font-size:11px;
  color:var(--muted);background:rgba(0,0,0,0.4);padding:4px 10px;border-radius:8px;
  border:0.5px solid var(--line);}

.page{position:relative;z-index:2;max-width:1000px;margin:0 auto;padding:36px 24px 80px;
  display:grid;grid-template-columns:300px 1fr;gap:32px;align-items:start;}
@media(max-width:760px){.page{grid-template-columns:1fr;}}

.sidepanel{background:rgba(25,23,34,0.82);backdrop-filter:blur(6px);
  border:0.5px solid var(--line);border-radius:16px;padding:22px;position:sticky;top:76px;}
.portrait-wrap{display:flex;justify-content:center;margin-bottom:18px;}
.portrait{width:150px;height:150px;border-radius:50%;border:3px solid var(--accent);
  background:#2a2838;display:flex;align-items:center;justify-content:center;
  font-size:40px;color:var(--accent);object-fit:cover;
  box-shadow:0 0 24px rgba(201,168,255,0.25);transition:transform .3s,box-shadow .3s;}
.portrait:hover{transform:scale(1.06);box-shadow:0 0 40px rgba(201,168,255,0.5);}
.sp-name{text-align:center;font-size:20px;font-weight:600;margin-bottom:2px;}
.sp-sub{text-align:center;font-size:12px;color:var(--muted);margin-bottom:16px;font-style:italic;}
.sp-row{display:flex;justify-content:space-between;gap:10px;padding:6px 0;
  border-bottom:0.5px solid var(--line-soft);font-size:13px;}
.sp-row:last-child{border-bottom:none;}
.sp-key{color:var(--muted);white-space:nowrap;}
.sp-val{text-align:right;}
.sp-val a{color:var(--link);text-decoration:none;border-bottom:0.5px dotted rgba(168,212,255,0.4);}
.sp-block{padding:8px 0;border-bottom:0.5px solid var(--line-soft);}
.sp-block .sp-key{display:block;margin-bottom:4px;}
.sp-block ul{list-style:none;}
.sp-block li{font-size:13px;padding:2px 0 2px 12px;position:relative;}
.sp-block li::before{content:"•";position:absolute;left:0;color:var(--accent);}

.content{background:rgba(25,23,34,0.82);backdrop-filter:blur(6px);
  border:0.5px solid var(--line);border-radius:16px;padding:30px 32px;}
@media(max-width:520px){.content{padding:22px 18px;}}
.content h1{font-size:32px;font-weight:600;margin-bottom:4px;line-height:1.2;}
.content .eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:2px;
  color:var(--accent);margin-bottom:10px;}
.content .article{font-size:15px;color:#dcd8ea;margin-top:18px;}
.content .article p{margin-bottom:14px;}
.content .article h3{font-size:18px;margin:22px 0 8px;color:#fff;}
.content .article ul{margin:0 0 14px 18px;}

.bottom-section{margin-top:34px;background:rgba(31,28,42,0.82);backdrop-filter:blur(6px);
  border:0.5px solid var(--line);border-radius:14px;padding:20px 24px;}
.bottom-section h2{font-size:15px;text-transform:uppercase;letter-spacing:1.5px;
  color:var(--accent);margin-bottom:14px;font-weight:600;}
.rel-group{display:flex;gap:10px;padding:6px 0;border-bottom:0.5px solid var(--line-soft);font-size:13.5px;}
.rel-group:last-child{border-bottom:none;}
.rel-type-label{color:var(--muted);min-width:130px;}

/* ---------- calendar editor (slice 6) ---------- */
.month-item{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.month-item .month-num{flex:0 0 auto;width:26px;height:26px;border-radius:50%;
  background:rgba(201,168,255,0.12);border:0.5px solid rgba(201,168,255,0.3);
  color:#d8c4ff;font-size:12px;display:inline-flex;align-items:center;justify-content:center;}
.month-item .m-name{flex:1;}
.month-item .m-days{width:80px;flex:0 0 auto;}
.ok-msg{background:rgba(124,196,160,0.14);border:0.5px solid rgba(124,196,160,0.4);
  color:var(--ok);border-radius:8px;padding:11px;margin-top:14px;font-size:13.5px;}

/* ---------- family tree (slice 11) ---------- */
.ft-wrap{margin-top:6px;}
.ft-host{position:relative;width:100%;height:560px;
  background:color-mix(in srgb, var(--ink) 4%, var(--panel));
  border:0.5px solid var(--line);border-radius:12px;overflow:hidden;cursor:grab;}
.ft-host:active{cursor:grabbing;}
.ft-svg{display:block;}
.ft-controls{position:absolute;top:12px;right:12px;z-index:5;display:flex;flex-direction:column;gap:6px;}
.ft-ctl{width:34px;height:34px;border-radius:8px;background:var(--panel);
  border:0.5px solid var(--line);color:var(--ink);font-size:16px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,0.12);}
.ft-ctl:hover{border-color:var(--accent);}
.ft-hint{font-size:12px;margin-top:8px;}

/* cards (theme-aware: adapt to light parchment or dark themes) */
.ft-card{cursor:pointer;}
.ft-card-bg{fill:var(--panel);stroke:var(--line);stroke-width:1;
  filter:drop-shadow(0 2px 5px rgba(0,0,0,0.10));transition:stroke 0.15s;}
.ft-card:hover .ft-card-bg{stroke:var(--accent);}
.ft-card-focus .ft-card-bg{stroke:var(--accent);stroke-width:2.5;
  fill:color-mix(in srgb, var(--accent) 8%, var(--panel));}
.ft-card-head .ft-card-bg{stroke:var(--gold);stroke-width:2;}
.ft-hon{fill:var(--gold);font-size:9.5px;font-style:italic;font-family:system-ui,sans-serif;}
.ft-portrait{fill:color-mix(in srgb, var(--ink) 8%, var(--panel));stroke:var(--accent);stroke-width:1.5;}
.ft-card-head .ft-portrait{stroke:var(--gold);stroke-width:2;}
.ft-initial{fill:var(--muted);font-size:18px;font-weight:700;font-family:system-ui,sans-serif;}
.ft-name{fill:var(--ink);font-size:13.5px;font-weight:700;font-family:system-ui,sans-serif;}
.ft-name:hover{fill:var(--link);text-decoration:underline;}
.ft-title{fill:var(--link);font-size:10.5px;font-style:italic;font-family:system-ui,sans-serif;}
.ft-rel{fill:var(--accent);font-size:10px;font-weight:600;font-family:system-ui,sans-serif;}
.ft-meta{fill:var(--muted);font-size:9.5px;font-family:system-ui,sans-serif;}
.ft-epithet{fill:var(--gold);font-size:9.5px;font-style:italic;font-family:system-ui,sans-serif;}

/* edges */
.ft-edge{fill:none;stroke:color-mix(in srgb, var(--accent) 45%, transparent);stroke-width:1.5;}
.ft-edge-spouse{stroke:var(--gold);stroke-width:1.5;stroke-dasharray:4 3;}

/* expand +/- buttons on cards */
.ft-exp-bg{fill:var(--panel);stroke:var(--accent);stroke-width:1.2;}
.ft-exp:hover .ft-exp-bg{fill:color-mix(in srgb, var(--accent) 18%, var(--panel));}
.ft-exp-tx{fill:var(--accent);font-size:13px;font-weight:700;font-family:system-ui,sans-serif;}

.ft-toggle-t{fill:#1a1726;font-size:13px;font-weight:700;font-family:system-ui,sans-serif;}

/* ---------- lineage view (slice 15, legacy flat) ---------- */
.lineage{font-size:14.5px;line-height:1.7;}
.lin-line{padding:3px 0;display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;}
.lin-bullet{color:var(--accent);flex:0 0 auto;font-size:12px;}
.lin-moniker{color:var(--gold);font-style:italic;font-size:13px;}
.lin-dates{color:var(--muted);font-size:12.5px;}

/* ---------- mass delete + dynasty dice (slice 17) ---------- */
.bulk-bar{display:flex;align-items:center;gap:14px;padding:10px 14px;margin-bottom:14px;
  background:var(--panel2);border:0.5px solid var(--line);border-radius:10px;}
.entry-check{accent-color:#ff9a9a;}
.dice{background:none;border:none;cursor:pointer;font-size:12px;padding:0 2px;opacity:0.75;width:auto;}
.dice:hover{opacity:1;}

/* ---------- rosters (slice 18) ---------- */
.roster-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 18px;}
.roster-tab{padding:8px 16px;border-radius:999px;border:0.5px solid var(--line);
  color:var(--muted);font-size:13.5px;text-decoration:none;background:var(--panel2);}
.roster-tab:hover{color:var(--ink);border-color:var(--accent);}
.roster-tab.active{background:linear-gradient(135deg,#c9a8ff,#a8d4ff);color:#1a1726;font-weight:600;border:none;}

table.roster{width:100%;border-collapse:collapse;font-size:14px;margin-top:6px;}
table.roster th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;
  letter-spacing:.5px;padding:8px 10px;border-bottom:0.5px solid var(--line);}
table.roster td{padding:9px 10px;border-bottom:0.5px solid rgba(255,255,255,0.06);}
table.roster td.num,table.roster th.num{text-align:right;font-variant-numeric:tabular-nums;}
table.roster td.rank{color:var(--muted);width:34px;}
table.roster td.strong{color:var(--gold);font-weight:600;}
table.roster tr:hover td{background:rgba(255,255,255,0.02);}
.tier-chip{display:inline-block;background:rgba(201,168,255,0.15);border:0.5px solid rgba(201,168,255,0.35);
  border-radius:999px;padding:1px 10px;font-size:12px;}
.wild{color:var(--muted);font-style:italic;}

/* ---------- census (slice 19) ---------- */
.census-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:6px 0 20px;}
.census-card{background:var(--panel2);border:0.5px solid var(--line);border-radius:12px;padding:16px;}
.census-num{font-size:24px;font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums;}
.census-lbl{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.4;}
.census-h{font-size:13px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);margin:22px 0 8px;}

/* ---------- succession (slice 20) ---------- */
ol.succession{margin:4px 0 0;padding-left:22px;font-size:14px;line-height:1.9;}
ol.succession li{padding:1px 0;}
ol.succession li a{font-weight:500;}
.succ-born{font-size:12px;margin-left:6px;}

/* ---------- heir crisis simulator (slice 21) ---------- */
.crisis-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
@media(max-width:640px){.crisis-cols{grid-template-columns:1fr;}}
.crisis-h{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin-bottom:4px;}
.crisis-tag{display:inline-block;font-size:11px;border-radius:999px;padding:0 8px;margin-left:6px;vertical-align:middle;}
.crisis-tag.new{background:rgba(154,217,184,0.18);color:var(--ok);border:0.5px solid rgba(154,217,184,0.4);}
.crisis-tag.up{background:rgba(232,200,120,0.15);color:var(--gold);border:0.5px solid rgba(232,200,120,0.4);}

/* ---------- reigns (slice 22) ---------- */
.reigns{display:flex;flex-direction:column;gap:2px;}
.reign-row{padding:8px 12px;border-left:2px solid rgba(201,168,255,0.3);}
.reign-row.reign-current{border-left-color:var(--gold);background:rgba(232,200,120,0.05);}
.reign-name{font-size:14px;font-weight:500;}
.reign-span{font-size:12.5px;margin-top:2px;}
.reign-tag{display:inline-block;font-size:10.5px;border-radius:999px;padding:0 8px;margin-left:6px;vertical-align:middle;}
.reign-tag.cur{background:rgba(232,200,120,0.15);color:var(--gold);border:0.5px solid rgba(232,200,120,0.4);}
.reign-tag.reg{background:rgba(168,212,255,0.13);color:var(--link);border:0.5px solid rgba(168,212,255,0.35);}
.reign-tag.ovr{background:rgba(154,217,184,0.15);color:var(--ok);border:0.5px solid rgba(154,217,184,0.4);}

/* ---------- magic codex (slice 23) ---------- */
.codex-cat{margin:22px 0;}
.codex-cat-head{display:flex;align-items:baseline;gap:12px;border-bottom:0.5px solid var(--line);padding-bottom:6px;}
.codex-cat-head h2{margin:0;font-size:20px;}
.codex-eff{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;}
.codex-cat-blurb{margin:8px 0 12px;max-width:640px;}
.codex-schools{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;}
.codex-school{position:relative;display:block;height:110px;border-radius:12px;overflow:hidden;
  border:0.5px solid var(--line);background:#13111c;text-decoration:none;color:var(--ink);
  transition:border-color .15s,transform .15s;}
.codex-school:hover{border-color:var(--accent);transform:translateY(-2px);}
.codex-school canvas.codex-fx{position:absolute;inset:0;width:100%;height:100%;display:block;}
.codex-school-name{position:absolute;left:10px;bottom:22px;font-weight:600;font-size:15px;z-index:2;text-shadow:0 1px 4px rgba(0,0,0,.7);}
.codex-school-half{position:absolute;left:10px;bottom:7px;font-size:10.5px;color:var(--muted);z-index:2;text-shadow:0 1px 3px rgba(0,0,0,.8);}
.codex-school.half-aether{box-shadow:inset 3px 0 0 rgba(120,200,255,.5);}
.codex-school.half-nether{box-shadow:inset 3px 0 0 rgba(180,110,220,.5);}
.codex-school.half-bridge{box-shadow:inset 3px 0 0 rgba(230,220,255,.6);}
.codex-school.half-above{box-shadow:inset 3px 0 0 rgba(255,240,180,.7);}

.codex-h{font-size:14px;text-transform:uppercase;letter-spacing:1px;color:var(--accent);margin:28px 0 10px;}
.codex-halves{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;}
@media(max-width:640px){.codex-halves{grid-template-columns:1fr;}}
.codex-half-col{background:var(--panel2);border:0.5px solid var(--line);border-radius:12px;padding:14px;}
.codex-half-col h3{margin:0 0 4px;font-size:14px;}
.codex-half-col p{margin:0;font-size:13px;color:var(--muted);line-height:1.7;}
.codex-half-col.half-aether{border-top:2px solid rgba(120,200,255,.6);}
.codex-half-col.half-nether{border-top:2px solid rgba(180,110,220,.6);}
.codex-half-col.half-bridge{border-top:2px solid rgba(230,220,255,.6);}

/* codex detail */
.codex-detail-hero{position:relative;height:180px;border-radius:16px;overflow:hidden;border:0.5px solid var(--line);background:#13111c;margin:10px 0 16px;display:flex;align-items:flex-end;}
.codex-fx-large{position:absolute;inset:0;width:100%;height:100%;}
.codex-detail-title{position:relative;z-index:2;padding:18px;}
.codex-detail-title h1{margin:2px 0 0;font-size:30px;text-shadow:0 2px 10px rgba(0,0,0,.7);}
.codex-detail-hero.half-aether{box-shadow:inset 4px 0 0 rgba(120,200,255,.6);}
.codex-detail-hero.half-nether{box-shadow:inset 4px 0 0 rgba(180,110,220,.6);}
.codex-detail-hero.half-bridge{box-shadow:inset 4px 0 0 rgba(230,220,255,.7);}
.codex-detail-hero.half-above{box-shadow:inset 4px 0 0 rgba(255,240,180,.8);}
.codex-facts{display:flex;gap:24px;flex-wrap:wrap;margin:14px 0;padding:14px;background:var(--panel2);border:0.5px solid var(--line);border-radius:12px;}
.codex-facts>div{display:flex;flex-direction:column;gap:2px;}
.codex-fact-k{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);}
.codex-school.half-unset{box-shadow:inset 3px 0 0 rgba(150,150,180,.4);}
.codex-detail-hero.half-unset{box-shadow:inset 4px 0 0 rgba(150,150,180,.5);}

/* ---------- name generator (slice 24) ---------- */
.namegrid{display:flex;flex-wrap:wrap;gap:8px;}
.nametag{display:inline-block;background:var(--panel2);border:0.5px solid var(--line);
  border-radius:999px;padding:5px 14px;font-size:14px;cursor:pointer;transition:border-color .15s,background .15s;}
.nametag:hover{border-color:var(--accent);}
.nametag.copied{background:rgba(154,217,184,0.2);border-color:rgba(154,217,184,0.5);}

/* ---------- three-stream resource links (slice 27) ---------- */
.reslink-head{display:grid;grid-template-columns:1fr 90px 90px 90px 32px;gap:8px;
  font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);margin-bottom:4px;padding:0 2px;}
.reslink-row{display:grid;grid-template-columns:1fr 90px 90px 90px 32px;gap:8px;align-items:center;margin-bottom:8px;}
.reslink-row select{min-width:0;}
.reslink-row input[type="number"]{width:100%;}
.reslink-del{padding:6px 8px;line-height:1;}
@media(max-width:560px){
  .reslink-head{display:none;}
  .reslink-row{grid-template-columns:1fr 1fr;}
}

/* image portraits on world index cards */
.world-card-img{width:40px;height:40px;border-radius:8px;object-fit:cover;border:0.5px solid var(--line);}

/* ---------- admin entry image thumbnails (slice 29) ---------- */
.entry-port-img{width:28px;height:28px;border-radius:6px;object-fit:cover;
  border:0.5px solid var(--line);flex:0 0 auto;margin-right:2px;}

/* ---------- dragon clutches & eggs (slice 33) ---------- */
.clutch-card{border:0.5px solid var(--line);border-radius:10px;padding:14px;
  margin:10px 0;background:rgba(255,255,255,0.015);}
.clutch-head{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap;}
.clutch-status-tag{font-size:11px;text-transform:uppercase;letter-spacing:.5px;
  padding:2px 8px;border-radius:999px;border:0.5px solid var(--line);color:var(--muted);}
.clutch-mate-line{font-size:13px;margin-bottom:8px;}

.egg-grid{display:flex;flex-direction:column;gap:6px;}
.egg-chip{display:flex;align-items:center;gap:8px;font-size:14px;}
.egg-swatch{width:16px;height:20px;border-radius:50% 50% 50% 50% / 60% 60% 40% 40%;
  border:0.5px solid rgba(255,255,255,0.25);flex:0 0 auto;
  box-shadow:inset 0 -2px 3px rgba(0,0,0,0.25);}
.egg-name{font-weight:500;}
.egg-status{font-size:12px;}

.line-clutch-group{margin-bottom:18px;}
.line-dragon-name{font-size:15px;margin:6px 0 2px;}

#clutchList .clutch-card{background:rgba(255,255,255,0.02);}
.clutch-meta{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:10px;}
.clutch-meta label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);}
.egg-row{display:grid;grid-template-columns:44px 1fr 130px 1fr 32px;gap:8px;align-items:center;margin-bottom:6px;}
.egg-row input[type="color"]{width:44px;height:34px;padding:2px;border-radius:6px;
  border:0.5px solid var(--line);background:transparent;cursor:pointer;}
.egg-del{padding:6px 8px;line-height:1;}
@media(max-width:560px){
  .clutch-meta{grid-template-columns:1fr;}
  .egg-row{grid-template-columns:44px 1fr 32px;}
  .egg-row .egg-status,.egg-row .egg-hatched{grid-column:2 / 3;}
}

/* ============================================================
   MOBILE FRIENDLINESS (slice 34)
   Breakpoints: 760px (tablet/landscape phone) and 560px (phone).
   ============================================================ */

/* iOS zoom fix: inputs must be >=16px to stop focus-zoom */
@media(max-width:760px){
  input,select,textarea,
  .reslink-row input,.egg-row input,.egg-name,
  .picker-select{ font-size:16px; }
  input[type=file]{ font-size:14px; }
}

/* tap targets */
@media(max-width:760px){
  .btn,.btn-ghost,.roster-tab,.world-tab,
  .picker-create,.reslink-del,.egg-del,.clutch-del{
    min-height:40px;
  }
  .btn,.btn-ghost{ padding:10px 16px; }
}

/* general layout */
@media(max-width:760px){
  .public-main,.admin-main{ padding:26px 16px 64px; }
  .page{ padding:22px 14px 64px; gap:22px; }
  .hero{ font-size:26px; }
  .admin-main h1,.public-main h1{ font-size:23px; }
  .content h1{ font-size:25px; }
  .bottom-section{ padding:18px 16px; margin-top:24px; }
  .topbar,.adminbar{ padding:10px 14px; }
  .topbar{ flex-wrap:wrap; gap:8px 14px; }
  .brand-lg{ font-size:20px; }
}
@media(max-width:560px){
  .public-main,.admin-main{ padding:20px 12px 56px; }
  .page{ padding:18px 12px 56px; }
  .hero{ font-size:23px; }
  .content h1{ font-size:22px; }
}

/* viewer */
@media(max-width:760px){
  .sidepanel{ position:static; padding:18px; }
  .portrait{ max-width:200px; }
  .effect-tag{ position:static; display:inline-block; margin-bottom:10px; }
  .sp-row{ flex-wrap:wrap; gap:2px 10px; }
  .rel-group{ flex-wrap:wrap; gap:2px 10px; font-size:13.5px; }
  .rel-type-label{ flex:0 0 auto; }
  .rel-vals{ flex:1 1 100%; }
}

/* tables scroll instead of overflowing */
@media(max-width:760px){
  table.roster{ display:block; width:100%; overflow-x:auto;
    -webkit-overflow-scrolling:touch; white-space:nowrap; }
  table.roster thead,table.roster tbody,table.roster tr{ width:100%; }
  table.roster td,table.roster th{ padding:8px 8px; }
  .reign-row{ flex-wrap:wrap; gap:4px 10px; }
  .reign-span{ flex:1 1 100%; }
}

/* world grid + census on phones */
@media(max-width:560px){
  .world-grid{ grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; }
  .world-card{ padding:12px; }
  .census-grid{ grid-template-columns:1fr 1fr; gap:10px; }
  .census-num{ font-size:22px; }
}

/* editor reflow */
@media(max-width:760px){
  .form-card{ padding:16px; }
  .field-row{ flex-direction:column; gap:8px; }
  .field-item,.rel-item{ flex-wrap:wrap; }
  .field-item .fk{ max-width:none; flex:1 1 100%; }
  .picker-controls{ flex-wrap:wrap; }
  .picker-controls .picker-select{ flex:1 1 100%; }
  .picker-create{ flex:1 1 100%; }
  .reslink-head{ display:none; }
  .reslink-row{ grid-template-columns:1fr 1fr 1fr; grid-auto-rows:auto;
    gap:8px; padding:10px; border:0.5px solid var(--line);
    border-radius:10px; margin-bottom:10px; }
  .reslink-row select{ grid-column:1 / -1; }
  .reslink-del{ grid-column:1 / -1; justify-self:end; }
  .clutch-meta{ grid-template-columns:1fr; }
  .egg-row{ grid-template-columns:44px 1fr 32px; grid-auto-rows:auto; gap:8px; }
  .egg-row .egg-status,.egg-row .egg-hatched{ grid-column:2 / 3; }
}
@media(max-width:560px){
  .reslink-row{ grid-template-columns:1fr 1fr; }
  .egg-row{ grid-template-columns:44px 1fr; }
  .egg-row .egg-del{ grid-column:2 / 3; justify-self:end; }
}

/* family tree / wide widgets scroll */
@media(max-width:760px){
  .ft-host,#familytree{
    overflow-x:auto; -webkit-overflow-scrolling:touch; max-width:100%; }
}

/* prevent stray horizontal page scroll */
@media(max-width:760px){
  html,body{ max-width:100%; overflow-x:hidden; }
}

/* ============================================================
   AUTOCOMPLETE RELATIONSHIP PICKERS (slice 35)
   ============================================================ */
.picker-ac{position:relative;flex:1;min-width:0;}
.picker-search{width:100%;}
.picker-results{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:40;
  max-height:280px;overflow-y:auto;background:#16141f;
  border:0.5px solid var(--line);border-radius:10px;
  box-shadow:0 12px 30px rgba(0,0,0,0.45);}
.picker-opt{padding:9px 12px;cursor:pointer;font-size:14px;
  border-bottom:0.5px solid rgba(255,255,255,0.05);}
.picker-opt:last-child{border-bottom:none;}
.picker-opt:hover,.picker-opt.active{background:rgba(201,168,255,0.16);color:var(--ink);}
.picker-noresult{padding:10px 12px;color:var(--muted);font-size:13px;}

/* keep the controls row aligned now that search replaces the select */
.picker-controls{align-items:flex-start;}

@media(max-width:760px){
  .picker-results{max-height:240px;}
}

/* ---------- entry list search + collapsible categories (slice 37) ---------- */
.list-search-bar{display:flex;align-items:center;gap:12px;margin:6px 0 18px;}
.list-search{flex:1;max-width:420px;}
.list-search-count{font-size:12.5px;color:var(--muted);white-space:nowrap;}

.cat-toggle{cursor:pointer;user-select:none;display:flex;align-items:center;gap:6px;
  transition:color .15s;}
.cat-toggle:hover{color:var(--accent);}
.cat-caret{display:inline-block;font-size:11px;color:var(--accent);
  transition:transform .18s;line-height:1;}
.cat-group.collapsed .cat-caret{transform:rotate(-90deg);}
.cat-group.collapsed .entry-cat-block,
.cat-group.collapsed .world-grid{display:none;}
@media(max-width:560px){
  .list-search{max-width:none;}
}

/* ---------- organization membership editor (slice 38) ---------- */
.mo-row{display:grid;grid-template-columns:1fr 1fr 32px;gap:8px;align-items:center;margin-bottom:8px;}
.mo-row select{min-width:0;}
.mo-del{padding:6px 8px;line-height:1;}
@media(max-width:560px){
  .mo-row{grid-template-columns:1fr 1fr;}
  .mo-del{grid-column:2 / 3;justify-self:end;}
}

/* ---------- product catalog editor (slice 40) ---------- */
.prod-head{display:grid;grid-template-columns:1fr 160px 40px;gap:8px;
  font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  margin-bottom:4px;padding:0 2px;}
.prod-row{display:grid;grid-template-columns:1fr 160px 40px;gap:8px;align-items:center;margin-bottom:8px;}
.prod-del{padding:6px 8px;line-height:1;}
@media(max-width:560px){
  .prod-head{grid-template-columns:1fr 100px 36px;}
  .prod-row{grid-template-columns:1fr 100px 36px;}
}

/* ---------- per-product resource production: outer row wrapper (slice 40) ---------- */
.reslink2-row{border:0.5px solid var(--line);border-radius:10px;padding:12px;margin-bottom:10px;
  background:rgba(255,255,255,0.015);}
.reslink2-head{display:flex;gap:8px;align-items:center;margin-bottom:8px;}
.reslink2-head .res-pick{flex:1;min-width:0;}
.reslink2-empty{font-size:13px;padding:4px 0;}

/* ---------- matchmaking zone (slice 42) ---------- */
.mm-filters{margin-top:10px;}
.mm-focus{margin:18px 0 6px;padding:12px 16px;background:var(--panel2);
  border:0.5px solid var(--line);border-radius:10px;font-size:15px;}

.mm-card{border:0.5px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px;
  background:rgba(255,255,255,0.015);transition:border-color .15s;}
.mm-card.mm-legal{border-left:3px solid var(--ok);}
.mm-card.mm-illegal{border-left:3px solid var(--danger);opacity:0.92;}
.mm-card:hover{border-color:var(--accent);}
.mm-card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;}
.mm-name{font-size:16px;font-weight:600;}
.mm-verdict{margin-left:auto;font-size:12px;font-weight:600;padding:3px 10px;border-radius:999px;
  text-transform:uppercase;letter-spacing:.4px;}
.mm-verdict.ok{background:rgba(154,217,184,0.18);color:var(--ok);border:0.5px solid rgba(154,217,184,0.4);}
.mm-verdict.no{background:rgba(255,90,90,0.14);color:var(--danger);border:0.5px solid rgba(255,90,90,0.4);}

.mm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.mm-grid>div{display:flex;flex-direction:column;gap:2px;}
.mm-k{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);}
.mm-notes{margin-top:10px;padding-top:10px;border-top:0.5px solid var(--line-soft);}
.mm-note{font-size:13px;color:var(--muted);padding:1px 0;}

@media(max-width:560px){
  .mm-verdict{margin-left:0;}
  .mm-grid{grid-template-columns:1fr 1fr;}
}

/* ---------- treasury log editor ---------- */
.tl-current{margin:6px 0 4px;padding:10px 12px;background:var(--panel2);
  border:0.5px solid var(--line);border-radius:8px;font-size:14px;}
.tl-add-head{margin-top:14px;font-size:12px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--muted);}
.tl-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:center;}
.tl-row input,.tl-row select{margin:0;}
.tl-row input[name="log_note[]"]{flex:1;min-width:140px;}

/* ---------- house page goods reserve ---------- */
.goods-reserve{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));
  gap:10px;margin-top:8px;}
.goods-item{border:0.5px solid var(--line);border-radius:10px;padding:12px;
  background:rgba(255,255,255,0.015);text-align:center;}
.goods-item.goods-gold{border-color:var(--gold);background:rgba(212,175,90,0.07);}
.goods-amt{display:block;font-size:22px;font-weight:700;font-family:var(--serif,Cinzel),serif;}
.goods-gold .goods-amt{color:var(--gold);}
.goods-name{display:block;font-size:11.5px;text-transform:uppercase;
  letter-spacing:.5px;color:var(--muted);margin-top:3px;}

/* ---------- character name block (slice 45) ---------- */
.name-block{margin:2px 0 14px;}
.nb-hon{font-size:14px;letter-spacing:.3px;color:var(--gold);
  font-style:italic;margin-bottom:2px;}
.nb-name{margin:0;line-height:1.05;}
.nb-title{font-size:15px;color:var(--muted);margin-top:4px;
  font-family:var(--serif,Cinzel),serif;letter-spacing:.3px;}

/* courtesy titles list */
.courtesy-list{display:flex;flex-direction:column;gap:8px;}
.courtesy-item{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;
  padding:8px 12px;border:0.5px solid var(--line);border-radius:8px;
  background:rgba(255,255,255,0.015);}
.courtesy-title{font-weight:600;font-size:14.5px;}
.courtesy-hon{font-size:12.5px;font-style:italic;}
.courtesy-src{font-size:12px;margin-left:auto;}

/* ---------- sidepanel column: main panel + connections (slice 46) ---------- */
.sidepanel-col{display:flex;flex-direction:column;gap:18px;align-items:stretch;}
@media(max-width:760px){.sidepanel-col{gap:14px;}}

.sp-hon{text-align:center;font-size:12.5px;color:var(--gold);
  font-style:italic;letter-spacing:.3px;margin-bottom:1px;}
.sp-title{text-align:center;font-size:13px;color:var(--muted);
  font-family:var(--serif,Cinzel),serif;letter-spacing:.3px;margin-bottom:2px;}

.sidepanel-connections .sp-panel-title{
  text-align:center;font-size:12px;text-transform:uppercase;letter-spacing:2px;
  color:var(--muted);margin-bottom:12px;padding-bottom:10px;
  border-bottom:0.5px solid var(--line);}
.sidepanel-connections .sp-block{margin-bottom:10px;}
.sidepanel-connections .sp-block:last-child{margin-bottom:0;}

/* ============================================================
   SLICE 48 — house tags · per-link details · nested lineage ·
   production-editor grid   (single, de-duplicated copy)
   ============================================================ */

/* house membership tag badge */
.house-tag{display:inline-block;font-size:10.5px;text-transform:uppercase;
  letter-spacing:.5px;padding:1px 7px;border-radius:999px;margin-left:5px;
  background:rgba(212,175,90,0.14);color:var(--gold);
  border:0.5px solid rgba(212,175,90,0.4);vertical-align:middle;}

/* per-link details editor */
.pld-head{font-size:12px;text-transform:uppercase;letter-spacing:.5px;
  color:var(--muted);margin-bottom:8px;}
.pld-row{display:flex;align-items:center;gap:8px;margin-bottom:7px;flex-wrap:wrap;}
.pld-name{flex:0 0 180px;font-weight:600;font-size:13.5px;}
.pld-row input,.pld-row select{margin:0;}
@media(max-width:560px){.pld-name{flex:1 1 100%;}}

/* detailed nested lineage */
.lineage-detailed{margin-top:4px;}
.lind-era{margin:18px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--accent);
  display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.lind-era:first-child{margin-top:4px;}
.lind-era-name{font-size:15px;font-weight:700;color:var(--accent);text-decoration:none;
  letter-spacing:.3px;}
.lind-era-name:hover{text-decoration:underline;}
.lind-era-span{font-size:12px;color:var(--muted);font-style:italic;}
.lind-era-living{border-bottom-color:var(--gold);}
.lind-era-living .lind-era-name{color:var(--gold);}
.lind-line{display:flex;align-items:baseline;gap:8px;padding:5px 0;
  border-left:1px solid transparent;line-height:1.5;}
.lind-mark{flex:0 0 auto;color:var(--gold);font-size:13px;width:16px;text-align:center;}
.lind-body{flex:1 1 auto;font-size:14px;}
.lind-hon{color:var(--gold);font-style:italic;font-size:12.5px;}
.lind-name{font-weight:600;}
.lind-meta{color:var(--muted);}
.lind-title{color:#c9b6e8;font-style:italic;}
.lind-stat{color:#b9b3c9;font-size:12.5px;}
.lind-age{color:var(--muted);font-size:12.5px;}
.lind-sep{opacity:.5;}
.lind-role-tag{display:inline-block;font-size:9.5px;text-transform:uppercase;
  letter-spacing:.5px;padding:0 6px;border-radius:999px;margin-left:4px;
  background:rgba(150,140,170,0.16);color:var(--muted);vertical-align:middle;}
.lind-line.role-head>.lind-body>.lind-name{font-size:15px;}
.lind-line.role-consort{opacity:.92;}
.lind-line.role-branch{margin-top:8px;border-top:0.5px solid var(--line);padding-top:10px;}
.lind-line.is-deceased .lind-name{opacity:.65;}
.lind-line.is-deceased .lind-mark{opacity:.5;}

/* production editor — GRID (one row per product) */
.ps-grid{display:grid;
  grid-template-columns:minmax(160px,1.6fr) minmax(86px,1fr) 76px 76px 76px minmax(96px,1.1fr);
  gap:2px 10px;align-items:center;margin-top:8px;width:100%;}
.ps-ghead{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
  font-weight:600;padding:4px 0 6px;border-bottom:0.5px solid var(--line);}
.ps-ghead.ps-c{text-align:center;}
.ps-ghead.ps-r{text-align:right;}
.ps-cell{padding:6px 0;border-bottom:0.5px solid rgba(255,255,255,0.04);min-width:0;}
.ps-cell.ps-c{text-align:center;}
.ps-cell.ps-r{text-align:right;}
.ps-pname{font-weight:600;color:#e8e3f4;font-size:13.5px;line-height:1.3;}
.ps-pprice{color:var(--muted);font-size:12px;white-space:nowrap;}
.ps-grid input[type=number]{width:100%;max-width:68px;margin:0;padding:6px 4px;text-align:center;}
.ps-rowinc{color:var(--gold);font-size:12.5px;white-space:nowrap;}
.ps-foot{border-bottom:none;text-align:right;color:var(--muted);text-transform:uppercase;
  font-size:10.5px;letter-spacing:.5px;padding-top:10px;}
.ps-total{border-bottom:none;color:var(--gold);font-weight:700;white-space:nowrap;padding-top:10px;}
.prod-grand{display:flex;justify-content:space-between;align-items:center;margin-top:14px;
  padding-top:12px;border-top:0.5px solid var(--line);}
.prod-grand span{text-transform:uppercase;font-size:11px;letter-spacing:.5px;color:var(--muted);}
.prod-grand strong{color:var(--gold);font-size:15px;}
@media(max-width:680px){
  .ps-grid{grid-template-columns:1fr 1fr;gap:6px 10px;}
  .ps-ghead{display:none;}
  .ps-pname{grid-column:1 / -1;font-size:14px;padding-top:10px;}
  .ps-pprice{grid-column:1 / -1;border-bottom:0.5px solid var(--line);padding-bottom:8px;}
  .ps-cell.ps-c,.ps-cell.ps-r{text-align:left;}
  .ps-grid input[type=number]{max-width:100%;}
  .ps-c::before{content:attr(data-label);display:block;font-size:9.5px;text-transform:uppercase;
    letter-spacing:.5px;color:var(--muted);margin-bottom:2px;}
  .ps-foot{grid-column:1 / -1 !important;text-align:left;}
}
/* ---------- slice 49: treasury headline + ledger ---------- */
.treasury-headline{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
  padding:14px 18px;border:0.5px solid var(--gold);border-radius:12px;
  background:rgba(212,175,90,0.07);}
.th-gold{display:flex;flex-direction:column;gap:2px;}
.th-amt{font-size:24px;font-weight:700;color:var(--gold);
  font-family:var(--serif,Cinzel),serif;line-height:1.1;}
.th-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);}
.th-rate{font-size:12.5px;margin-left:auto;align-self:center;}

.tl-ledger{margin-top:16px;padding-top:12px;border-top:0.5px solid var(--line-soft);}
.tl-entry{display:flex;align-items:baseline;gap:10px;font-size:13px;padding:3px 0;flex-wrap:wrap;}
.tl-yr{flex:0 0 auto;font-size:12px;}
.tl-dir{flex:0 0 auto;font-weight:700;}
.tl-dir.credit{color:var(--ok);}
.tl-dir.debit{color:var(--danger);}
.tl-amt{font-weight:600;}
.tl-note{font-size:12.5px;font-style:italic;}

/* ---------- treasury ledger editor rows ---------- */
.tl-head{font-size:12px;text-transform:uppercase;letter-spacing:.5px;
  color:var(--muted);margin:6px 0 8px;}
.tl-row{display:flex;gap:8px;align-items:center;margin-bottom:8px;flex-wrap:wrap;}
.tl-row input,.tl-row select{margin:0;}
@media(max-width:560px){
  .tl-row{flex-direction:column;align-items:stretch;}
  .tl-row input,.tl-row select{width:100%!important;}
}

/* ---------- slice 49: matchmaking searchable picker ---------- */
.mm-search-wrap{position:relative;}
.mm-search{width:100%;}
.mm-search-results{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:60;
  max-height:320px;overflow-y:auto;background:var(--panel);border:0.5px solid var(--line);
  border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,0.25);}
.mm-opt{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:9px 12px;cursor:pointer;border-bottom:0.5px solid var(--line-soft);color:var(--ink);}
.mm-opt:last-child{border-bottom:none;}
.mm-opt:hover{background:rgba(201,168,255,0.16);}
.mm-opt-name{font-weight:600;font-size:14px;}
.mm-opt-meta{font-size:12px;color:var(--muted);text-align:right;}
.mm-opt-dead{color:var(--danger);}
.mm-opt-none{padding:10px 12px;color:var(--muted);font-size:13px;}

/* ---------- slice 49: friendlier treasury ledger editor ---------- */
.tl-existing{display:flex;flex-direction:column;gap:6px;margin-bottom:8px;}
.tl-existing-row{display:flex;align-items:center;gap:8px;padding:6px 8px;
  background:var(--panel2);border:0.5px solid var(--line);border-radius:8px;flex-wrap:wrap;}
.tl-existing-row.tl-removing{opacity:.5;text-decoration:line-through;
  border-color:rgba(255,90,90,0.4);}
.tl-ex-dir{flex:0 0 auto;font-weight:700;width:16px;text-align:center;}
.tl-ex-dir.credit{color:var(--ok);}
.tl-ex-dir.debit{color:var(--danger);}
.tl-existing-row input{margin:0;}
.tl-ex-year{width:74px;}
.tl-ex-kind{width:130px;}
.tl-ex-amt{width:110px;}
.tl-ex-unit{flex:0 0 auto;font-size:12px;}
.tl-ex-note{flex:1;min-width:120px;}
.tl-ex-del{flex:0 0 auto;margin:0;display:inline-flex;align-items:center;gap:5px;
  font-size:12px;text-transform:none;letter-spacing:0;color:var(--danger);cursor:pointer;
  white-space:nowrap;}
.tl-ex-del input{width:auto;margin:0;}

.tl-row-del{flex:0 0 auto;width:32px;height:36px;background:rgba(255,90,90,0.1);
  border:0.5px solid rgba(255,90,90,0.28);color:var(--danger);border-radius:8px;
  cursor:pointer;font-size:14px;line-height:1;opacity:.75;transition:opacity .15s;}
.tl-row-del:hover{opacity:1;background:rgba(255,90,90,0.2);}

@media(max-width:560px){
  .tl-existing-row{flex-direction:row;}
  .tl-ex-note{flex:1 1 100%;order:9;}
  .tl-row-del{width:100%;height:34px;}
}
/* ---------- family-tree card text now defined above (theme-aware) ---------- */

/* ===== Consistency Checker (slice 58) ===== */
.cc-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.cc-pill{font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px;border:0.5px solid var(--line);}
.cc-pill.cc-err{background:rgba(255,154,154,0.14);color:var(--danger);border-color:rgba(255,154,154,0.35);}
.cc-pill.cc-warn{background:rgba(232,200,120,0.14);color:var(--gold);border-color:rgba(232,200,120,0.35);}
.cc-pill.cc-dism{background:rgba(255,255,255,0.04);color:var(--muted);}
.cc-clean{border-color:rgba(154,217,184,0.4);}
.cc-clean p{color:var(--ok);}
.cc-list{display:flex;flex-direction:column;gap:8px;margin-top:14px;}
.cc-row{display:flex;align-items:flex-start;gap:12px;background:var(--panel);
  border:0.5px solid var(--line);border-left-width:3px;border-radius:12px;padding:13px 15px;}
.cc-row.cc-error{border-left-color:var(--danger);}
.cc-row.cc-warning{border-left-color:var(--gold);}
.cc-row.cc-dismissed{border-left-color:var(--line);opacity:0.62;}
.cc-tag{flex:0 0 auto;font-size:11px;text-transform:uppercase;letter-spacing:0.5px;
  color:var(--muted);background:rgba(255,255,255,0.05);padding:3px 8px;border-radius:6px;margin-top:1px;}
.cc-msg{flex:1 1 auto;font-size:14.5px;line-height:1.5;}
.cc-links{margin-top:4px;font-size:12.5px;}
.cc-act{flex:0 0 auto;margin:0;}
.cc-x{padding:5px 12px;font-size:12.5px;}
/* ===== Quick-Seed (slice 59) ===== */
.qs-group-name{font-size:12px;color:var(--gold);text-transform:uppercase;letter-spacing:0.5px;
  margin:22px 0 10px;}
.qs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;}
.qs-card{display:block;text-align:left;background:var(--panel);border:0.5px solid var(--line);
  border-radius:12px;padding:15px 16px;cursor:pointer;transition:transform .12s,border-color .12s;
  color:var(--ink);font:inherit;}
.qs-card:hover{transform:translateY(-2px);border-color:var(--accent);}
.qs-card.sel{border-color:var(--accent);background:rgba(201,168,255,0.10);}
.qs-card-label{font-size:15px;font-weight:600;margin-bottom:4px;}
.qs-card-desc{font-size:12.5px;color:var(--muted);line-height:1.45;margin-bottom:8px;}
.qs-card-cat{font-size:11px;text-transform:uppercase;letter-spacing:0.5px;color:var(--muted);
  background:rgba(255,255,255,0.05);display:inline-block;padding:2px 8px;border-radius:6px;}
  /* ===== House Generator (slice 62) ===== */
.hg-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:0.5px solid var(--line-soft);}
.hg-row:last-child{border-bottom:none;}
.hg-row-main{flex:1 1 auto;display:flex;flex-direction:column;gap:3px;}
.hg-row-main input{width:100%;}
.hg-row .btn-ghost{flex:0 0 auto;padding:5px 10px;font-size:13px;}
.hg-row input[type=checkbox]{margin-top:9px;}
#hgLeans{font-style:italic;}
/* ---------- Tools dropdown (shared admin header) ---------- */
.tools-menu{position:relative;display:inline-block;}
.tools-trigger{cursor:pointer;}
.tools-pop{
  position:absolute;top:calc(100% + 8px);left:0;z-index:120;
  min-width:230px;padding:8px;display:none;
  background:var(--panel2);border:0.5px solid var(--line);
  border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,0.5);
}
.tools-pop.open{display:block;}
.tools-group-label{
  font-size:10.5px;letter-spacing:0.08em;text-transform:uppercase;
  color:var(--gold);opacity:0.8;padding:8px 10px 4px;
}
.tools-item{
  display:block;padding:8px 10px;border-radius:8px;
  color:var(--ink,#e9e6f0);text-decoration:none;font-size:13.5px;
  transition:background .14s;
}
.tools-item:hover{background:rgba(232,200,120,0.10);}
.tools-item.is-active{background:rgba(232,200,120,0.16);color:var(--gold);}
.tools-sep{height:1px;background:var(--line-soft);margin:6px 4px;}

/* ---------- Tools landing page (grid of cards) ---------- */
.tools-cardgrid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));
  gap:14px;margin-top:18px;
}
.tools-card{
  display:block;background:var(--panel);border:0.5px solid var(--line);
  border-radius:14px;padding:18px;text-decoration:none;color:inherit;
  transition:border-color .16s,transform .12s,background .16s;
}
.tools-card:hover{border-color:var(--gold);transform:translateY(-2px);background:var(--panel2);}
.tools-card .tc-name{font-weight:600;font-size:15px;color:var(--gold);margin-bottom:6px;}
.tools-card .tc-desc{font-size:13px;color:var(--muted,#a9a3b8);line-height:1.5;}
.tools-card .tc-group{font-size:10.5px;letter-spacing:0.06em;text-transform:uppercase;color:var(--muted,#a9a3b8);opacity:0.7;margin-top:10px;}

/* ---------- What's-missing panel (entry editor) ---------- */
.missing-panel{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  margin:6px 0 14px;padding:10px 14px;
  background:rgba(232,200,120,0.07);border:0.5px solid rgba(232,200,120,0.30);
  border-radius:12px;
}
.missing-label{font-size:11px;letter-spacing:0.07em;text-transform:uppercase;color:var(--gold);font-weight:600;}
.missing-chip{
  font-size:12px;padding:3px 9px;border-radius:99px;
  background:rgba(255,255,255,0.05);border:0.5px solid var(--line);color:var(--muted,#a9a3b8);
}

/* ---------- @-mention autocomplete (article editor) ---------- */
.at-menu{
  position:absolute;z-index:200;min-width:220px;max-width:300px;
  background:var(--panel2);border:0.5px solid var(--line);
  border-radius:10px;box-shadow:0 12px 32px rgba(0,0,0,0.5);
  padding:5px;overflow:hidden;
}
.at-item{
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  padding:7px 10px;border-radius:7px;cursor:pointer;
}
.at-item.sel,.at-item:hover{background:rgba(232,200,120,0.14);}
.at-title{font-size:13.5px;color:var(--ink,#e9e6f0);}
.at-cat{font-size:11px;color:var(--muted,#a9a3b8);opacity:0.8;}

/* House/title/entry pages: connections as a clean bulleted list (not a comma run-on) */
.sp-title-list,.sp-rel-list{list-style:none;margin:0;padding:0;text-align:left;}
.sp-title-list li,.sp-rel-list li{font-size:13px;padding:3px 0 3px 14px;position:relative;line-height:1.4;}
.sp-title-list li::before,.sp-rel-list li::before{content:"\2022";position:absolute;left:0;color:var(--accent);}
.sp-title-list li a,.sp-rel-list li a{color:var(--link);text-decoration:none;border-bottom:0.5px dotted rgba(168,212,255,0.4);}

/* Searchable org/unit picker in the character membership editor */
.mo-combo{position:relative;flex:1;min-width:180px;}
.mo-combo-input{width:100%;}
.mo-combo-menu{position:absolute;left:0;right:0;top:calc(100% + 2px);z-index:50;
  max-height:240px;overflow-y:auto;background:var(--panel);border:0.5px solid var(--line);
  border-radius:8px;box-shadow:0 10px 26px rgba(0,0,0,0.25);}
.mo-combo-opt{padding:8px 11px;cursor:pointer;color:var(--ink);font-size:13.5px;
  border-bottom:0.5px solid var(--line-soft);}
.mo-combo-opt:last-child{border-bottom:none;}
.mo-combo-opt:hover{background:color-mix(in srgb, var(--accent) 16%, var(--panel));}
.mo-combo-none{padding:8px 11px;color:var(--muted);font-size:13px;}

/* Dedicated rank-ladder editor on org-type entries */
.rank-list{display:flex;flex-direction:column;gap:7px;}
.rank-row{display:flex;align-items:center;gap:8px;}
.rank-num{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:flex;
  align-items:center;justify-content:center;font-size:12px;font-weight:700;
  background:color-mix(in srgb, var(--accent) 16%, var(--panel));color:var(--accent);}
.rank-input{flex:1;min-width:160px;}
.rank-row .btn-ghost{padding:6px 9px;font-size:12px;line-height:1;}
