:root{
  --bg:#0d0b12; --panel:#161320; --panel2:#1e1a2b; --ink:#e8e3d8; --muted:#9a8f7d;
  --gold:#c8a86b; --gold-dim:#7a6a45; --line:#2a2438; --warn:#d9a441; --ok:#5fae74;
  --danger:#c05b57; --shadow:0 2px 14px rgba(0,0,0,.45);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.5 "Iowan Old Style",Georgia,"Times New Roman",serif}
a{color:var(--gold);text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--muted)}
.wrap{max-width:1200px;margin:0 auto;padding:22px 20px 60px}
button{font:inherit;background:var(--gold);color:#1a1408;border:0;border-radius:6px;
  padding:8px 14px;cursor:pointer}
button:hover{filter:brightness(1.08)}
input,select{font:inherit;background:#0f0d16;color:var(--ink);border:1px solid var(--line);
  border-radius:6px;padding:7px 9px}
label{display:block;margin:8px 0}

/* topbar */
.topbar{display:flex;align-items:center;gap:20px;padding:12px 20px;background:#0a0810;
  border-bottom:1px solid var(--line)}
.brand{font-weight:700;letter-spacing:.18em;color:var(--gold)}
.topbar nav{display:flex;gap:16px}
.topbar nav a{color:var(--ink)}
.logout{margin-left:auto;display:flex;align-items:center;gap:10px}
.logout .who{color:var(--muted)}
.logout button{background:transparent;color:var(--muted);border:1px solid var(--line)}
.foot{text-align:center;color:var(--gold-dim);padding:22px;letter-spacing:.08em;font-size:13px}

/* login */
.login{max-width:340px;margin:9vh auto;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:34px;text-align:center;box-shadow:var(--shadow)}
.login .sigil{font-size:40px;color:var(--gold);margin:0}
.login h2{letter-spacing:.22em;margin:.2em 0}
.login form{margin-top:14px;text-align:left}
.login button{width:100%;margin-top:10px}
.error{color:var(--danger)}

/* headings */
.pagehead{display:flex;align-items:baseline;gap:14px}
h1{font-weight:600;letter-spacing:.02em}
.back{color:var(--muted)}

/* add box */
.addbox{margin:14px 0;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px 14px}
.addform{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}

/* gate bar */
.gatebar{background:#241b0e;border:1px solid var(--gold-dim);border-radius:10px;padding:10px 14px;margin:12px 0}
.chip{display:inline-block;background:#332714;border:1px solid var(--gold-dim);border-radius:20px;
  padding:2px 10px;margin:3px}
.chip.warn{color:var(--warn)}

/* rail / columns */
.rail{display:flex;gap:12px;overflow-x:auto;padding:14px 0}
.col{min-width:180px;flex:0 0 auto;background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:10px}
.col.gate{border-color:var(--gold-dim);background:#171208}
.col h3{margin:.1em 0 .6em;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.col .count{float:right;color:var(--gold)}
.card{display:block;background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--gold-dim);
  border-radius:8px;padding:9px 10px;margin-bottom:8px;color:var(--ink)}
.card:hover{text-decoration:none;border-left-color:var(--gold)}
.card .ttl{display:block;font-weight:600}
.card .meta{display:block;font-size:12px;color:var(--muted)}
.badge{display:inline-block;font-size:11px;letter-spacing:.05em;color:var(--muted);margin-top:5px}
.badge.big{font-size:13px;padding:2px 10px;border:1px solid var(--line);border-radius:20px}
.status-awaiting_approval{border-left-color:var(--warn)!important}
.status-awaiting_approval .badge,.badge.status-awaiting_approval{color:var(--warn)}
.status-published{border-left-color:var(--ok)!important}
.badge.status-published{color:var(--ok)}
.status-failed{border-left-color:var(--danger)!important}
.badge.status-failed{color:var(--danger)}

/* panels / detail */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.panel h3{margin:.1em 0 .5em;color:var(--gold)}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:5px 8px;border-bottom:1px solid var(--line)}
.gatepanel{background:#1c1608;border:1px solid var(--gold-dim);border-radius:10px;padding:14px 18px;margin:14px 0}
.gateactions{display:flex;gap:20px;flex-wrap:wrap;align-items:center;margin-top:8px}
button.ok{background:var(--ok);color:#08150c}
button.danger{background:var(--danger);color:#1a0b0a}
.lib td a{color:var(--gold)}
.switch{display:flex;gap:10px;align-items:center}
.state{margin-top:10px}
@media(max-width:720px){.grid2{grid-template-columns:1fr}}

/* QA scoring */
.qawrap{display:flex;align-items:center;gap:18px;margin:14px 0;padding:12px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px}
.qascore{display:flex;flex-direction:column;align-items:center;min-width:90px;
  border-right:1px solid var(--line);padding-right:16px}
.qascore .num{font-size:32px;font-weight:700;line-height:1}
.qascore.good .num{color:var(--ok)} .qascore.bad .num{color:var(--danger)}
.qascore.pending .num{color:var(--muted)}
.qascore .lab{font-size:11px;color:var(--muted);margin-top:3px;text-align:center}
.verdict{font-weight:700;letter-spacing:.06em}
.verdict.pass{color:var(--ok)} .verdict.fail{color:var(--danger)}
.qalist{list-style:none;padding:0;margin:0}
.qalist li{padding:3px 0;border-bottom:1px solid var(--line)}
.qalist .qs{display:inline-block;min-width:30px;text-align:right;font-weight:700;color:var(--gold);margin-right:8px}
.gatepanel.hold{background:#2a1410;border-color:var(--danger)}
.cardfoot{display:flex;align-items:center;gap:8px;justify-content:space-between;margin-top:5px}
.qchip{font-size:11px;padding:1px 7px;border-radius:20px;border:1px solid var(--line)}
.qchip.good{color:var(--ok);border-color:var(--gold-dim)}
.qchip.bad{color:var(--danger);border-color:var(--danger)}
.status-qa_hold{border-left-color:var(--danger)!important}

/* logo */
.brand{display:flex;align-items:center;gap:9px}
.mark{width:24px;height:24px}
.loginmark{width:74px;height:74px;margin:0 auto 6px;display:block}

/* imprints */
.imprintbar{display:flex;gap:14px;align-items:center;margin:12px 0;padding:12px 16px;
  background:var(--panel);border:1px solid var(--line);border-radius:10px}
.imlogo{width:44px;height:44px;object-fit:contain;background:#0d0b12;border:1px solid var(--line);border-radius:8px;padding:4px}
.imlogo.big{width:64px;height:64px}
.immeta{display:flex;flex-direction:column;gap:4px}
.assignform{display:flex;gap:8px;margin-top:4px}
.imprintcard{margin:12px 0}
.imhead{display:flex;gap:14px;align-items:center;margin-bottom:10px}
.editgrid{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.editgrid label{display:flex;flex-direction:column;font-size:12px;color:var(--muted);margin:0}
.switch.inline{flex-direction:row;align-items:center;gap:6px;color:var(--ink)}
.logorow{display:flex;gap:16px;align-items:center;margin-top:10px}
.logoform{display:flex;gap:8px;align-items:center}

/* dashboard */
.wbadge{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);
  border:1px solid var(--line);border-radius:20px;padding:3px 12px}
.wbadge .dot{width:9px;height:9px;border-radius:50%;background:var(--muted)}
.wbadge.live .dot{background:var(--ok);box-shadow:0 0 0 0 rgba(95,174,116,.6);animation:pulsedot 1.8s infinite}
.wbadge.down .dot{background:var(--danger)}
.wbadge.live .wtxt{color:var(--ok)} .wbadge.down .wtxt{color:var(--danger)}
@keyframes pulsedot{0%{box-shadow:0 0 0 0 rgba(95,174,116,.55)}70%{box-shadow:0 0 0 7px rgba(95,174,116,0)}100%{box-shadow:0 0 0 0 rgba(95,174,116,0)}}
.statgrid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:16px 0 4px}
.stat{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--line);
  border-left:3px solid var(--gold-dim);border-radius:10px;padding:14px 16px;color:var(--ink)}
a.stat:hover{text-decoration:none;border-left-color:var(--gold)}
.stat .num{font-size:30px;font-weight:700;line-height:1;font-variant-numeric:tabular-nums}
.stat .lab{font-size:12px;color:var(--muted);letter-spacing:.03em}
.stat.warn{border-left-color:var(--warn)} .stat.warn .num{color:var(--warn)}
.stat.ok{border-left-color:var(--ok)} .stat.ok .num{color:var(--ok)}
.stat.bad{border-left-color:var(--danger)} .stat.bad .num{color:var(--danger)}
.num.flash{animation:flash .6s ease}
@keyframes flash{0%{color:var(--gold);text-shadow:0 0 12px rgba(200,168,107,.7)}100%{}}
.dashcols{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
.stagerail{display:flex;flex-direction:column;gap:6px}
.srow{display:grid;grid-template-columns:120px 1fr 28px;align-items:center;gap:10px;font-size:13px}
.srow.gate .sname{color:var(--gold)}
.sname{color:var(--muted);text-transform:capitalize;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sbar{height:8px;background:#0f0d16;border:1px solid var(--line);border-radius:6px;overflow:hidden}
.sfill{display:block;height:100%;background:linear-gradient(90deg,var(--gold-dim),var(--gold));
  width:0;transition:width .7s cubic-bezier(.2,.7,.2,1)}
.srow.gate .sfill{background:linear-gradient(90deg,var(--gold-dim),var(--warn))}
.sn{text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}
#flowpulse.pulse{animation:flashin .8s ease}
@keyframes flashin{0%{opacity:0}30%{opacity:1}100%{opacity:.6}}
#flowpulse{color:var(--ok);font-size:12px}
.feed{list-style:none;margin:0;padding:0}
.feed li{display:flex;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px;
  animation:fadein .5s ease}
@keyframes fadein{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.fwhen{color:var(--gold-dim);min-width:34px;font-size:12px;text-align:right}
.fbody{flex:1}
.ftag{font-size:11px;color:var(--muted);margin-left:6px}
.ftag.st-awaiting_approval{color:var(--warn)} .ftag.st-published{color:var(--ok)}
.ftag.st-failed,.ftag.st-qa_hold{color:var(--danger)}
.fqa{font-size:11px;margin-left:6px;padding:0 6px;border:1px solid var(--line);border-radius:10px}
.fqa.g{color:var(--ok)} .fqa.b{color:var(--danger)}
@media(max-width:820px){.statgrid{grid-template-columns:repeat(3,1fr)}.dashcols{grid-template-columns:1fr}}

/* title metadata + downloads */
.dls{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
.dl{display:inline-block;background:var(--panel2);border:1px solid var(--gold-dim);border-radius:8px;
  padding:8px 12px;font-size:13px;color:var(--gold)}
a.dl:hover{text-decoration:none;background:#241c10;border-color:var(--gold)}
.dl.off{color:var(--muted);border-color:var(--line);cursor:default}
.metatext{color:var(--ink);background:#0f0d16;border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:4px 0 12px}
.bisac{list-style:none;padding:0;margin:4px 0 12px}
.bisac li{padding:3px 0;border-bottom:1px solid var(--line);font-size:14px}
.bisac code{color:var(--gold);background:#0f0d16;padding:1px 6px;border-radius:4px;margin-right:6px}
.kwchips{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 12px}
.kw{background:#241c10;border:1px solid var(--gold-dim);border-radius:16px;padding:3px 11px;font-size:13px;color:var(--gold)}
details summary{cursor:pointer;color:var(--gold);margin:6px 0}
.introscroll{max-height:340px;overflow:auto;background:#0f0d16;border:1px solid var(--line);
  border-radius:8px;padding:14px 16px;margin-top:8px;white-space:pre-wrap;line-height:1.6}

/* editorial edit form */
.edform label{display:block;font-size:12px;color:var(--muted);margin:12px 0 0;letter-spacing:.02em}
.edform input,.edform textarea{width:100%;margin-top:4px;background:#0f0d16;color:var(--ink);
  border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}
.edform textarea{resize:vertical;line-height:1.55}
.introedit{font-size:14px}
.editpanel .edform button{margin-top:14px}
.posnet{color:var(--ok)} .negnet{color:var(--danger)}
