/* ============================================================
   Uche Mbaka — shared styles
   Edition 022 · nocturnal minimal
   ============================================================ */
:root{
  --ink:#080A0F;
  --ink-rgb:8,10,15;
  --ink-2:#0D1017;
  --haze:#E9E6DF;
  --haze-dim:#B9B6AE;
  --mute:#6A7180;
  --mute-2:#454B58;
  --line:rgba(233,230,223,.09);
  --line-2:rgba(233,230,223,.16);
  --amber:#CFA15F;
  --steel:#5C7585;
  --maxw:1080px;
}
[data-theme="light"]{
  --ink:#F3F0E9;
  --ink-rgb:243,240,233;
  --ink-2:#FBFAF5;
  --haze:#1B1C20;
  --haze-dim:#4A4C54;
  --mute:#6E727D;
  --mute-2:#9A9DA6;
  --line:rgba(20,21,26,.10);
  --line-2:rgba(20,21,26,.18);
  --amber:#9E6B22;
  --steel:#4A6377;
}
body{transition:background .35s ease, color .35s ease}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  margin:0;
  background:var(--ink);
  color:var(--haze);
  font-family:"Newsreader",Georgia,serif;
  font-weight:300;
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
::selection{background:rgba(207,161,95,.22);color:var(--haze)}
a{color:inherit;text-decoration:none}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}
@media (max-width:640px){.wrap{padding:0 22px}}

.mono{
  font-family:"JetBrains Mono",ui-monospace,monospace;
  font-weight:400;font-size:11px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--mute);
}
.disp{font-family:"Space Grotesk",system-ui,sans-serif;font-weight:500;letter-spacing:-.01em}

/* ---------- top bar ---------- */
header.bar{
  position:fixed;top:0;left:0;right:0;z-index:50;
  backdrop-filter:blur(8px);
  background:linear-gradient(180deg, rgba(var(--ink-rgb),.86), rgba(var(--ink-rgb),0));
  transition:background .4s ease;
}
header.bar.scrolled{background:linear-gradient(180deg, rgba(var(--ink-rgb),.96), rgba(var(--ink-rgb),.82))}
.bar .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{font-family:"Space Grotesk",sans-serif;font-weight:600;font-size:15px;letter-spacing:.02em;color:var(--haze)}
.brand b{color:var(--amber);font-weight:600}
nav.top{display:flex;gap:26px}
nav.top a{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);transition:color .25s}
nav.top a:hover{color:var(--haze)}
nav.top a[aria-current="page"]{color:var(--amber)}
@media (max-width:640px){nav.top{gap:14px}nav.top a{font-size:10px;letter-spacing:.08em}}

/* ---------- hero (home only) ---------- */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;padding-bottom:9vh;overflow:hidden}
#field{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero-veil{position:absolute;inset:0;pointer-events:none;background:
   radial-gradient(120% 80% at 78% 18%, rgba(207,161,95,.05), transparent 55%),
   linear-gradient(180deg, rgba(var(--ink-rgb),.35) 0%, rgba(var(--ink-rgb),0) 30%, rgba(var(--ink-rgb),.55) 78%, var(--ink) 100%);}
.hero .wrap{position:relative;z-index:2;width:100%}
.edition{display:flex;align-items:center;gap:14px;margin-bottom:26px}
.edition .rule{height:1px;width:46px;background:var(--line-2)}
.hero h1{font-family:"Space Grotesk",sans-serif;font-weight:500;font-size:clamp(44px,9vw,108px);line-height:.98;letter-spacing:-.03em;margin:0;color:var(--haze)}
.hero h1 .giv{display:block;color:var(--mute);font-weight:400}
.hero h1 .sur{display:block;color:var(--haze)}
.hero .creed{margin-top:30px;max-width:30ch;font-size:clamp(19px,2.6vw,26px);line-height:1.4;color:var(--haze-dim);font-weight:300;font-style:italic}
.hero .creed b{color:var(--amber);font-weight:300;font-style:italic}
.scrollcue{margin-top:42px;display:inline-flex;align-items:center;gap:10px}
.scrollcue .dot{width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 14px rgba(207,161,95,.7);animation:pulse 2.6s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
@media (prefers-reduced-motion:reduce){.scrollcue .dot{animation:none;opacity:.8}}

/* ---------- inner page shell ---------- */
.page{padding:130px 0 40px}
@media (max-width:640px){.page{padding:104px 0 24px}}
.pagehead{margin-bottom:64px}
@media (max-width:640px){.pagehead{margin-bottom:44px}}
.pagehead .eyebrow{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute-2);margin-bottom:18px}
.pagehead h1{font-family:"Space Grotesk",sans-serif;font-weight:500;font-size:clamp(34px,6vw,64px);line-height:1;letter-spacing:-.025em;color:var(--haze);margin:0}

/* two-column content rows */
.row{display:grid;grid-template-columns:120px 1fr;gap:24px}
@media (max-width:720px){.row{grid-template-columns:1fr;gap:0}}
.gutter{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.2em;color:var(--mute-2);padding-top:6px}
@media (max-width:720px){.gutter{padding-top:0;margin-bottom:14px}}

/* prose */
.lede{font-size:clamp(18px,2.3vw,22px);line-height:1.62;color:var(--haze-dim);max-width:60ch;font-weight:300}
.lede strong{color:var(--haze);font-weight:400}
.lede b{color:var(--amber)}
.lede em{font-style:italic;color:var(--haze)}
.lede + .lede{margin-top:22px}

/* ---------- publications ---------- */
.pubgroup{margin-bottom:60px}
.pubgroup:last-child{margin-bottom:0}
.pubgroup-label{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--amber);margin:0 0 6px}
.pubgroup-sub{font-size:14px;color:var(--mute);margin:0 0 20px;font-weight:300}
.pub{display:grid;grid-template-columns:64px 1fr;gap:20px;padding:24px 0;border-top:1px solid var(--line);transition:border-color .3s}
.pub:hover{border-color:var(--line-2)}
.pub .yr{font-family:"JetBrains Mono",monospace;font-size:12px;color:var(--mute);padding-top:4px}
.pub .title{font-family:"Space Grotesk",sans-serif;font-weight:400;font-size:18.5px;letter-spacing:-.01em;color:var(--haze);line-height:1.35}
.pub .auth{font-size:15px;color:var(--haze-dim);margin-top:6px;font-weight:300}
.pub .auth b{color:var(--haze);font-weight:400;font-style:italic}
.pub .venue{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:11px}
.pub .venue .v{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--mute)}
.pub .venue .q{font-family:"JetBrains Mono",monospace;font-size:10px;letter-spacing:.08em;border:1px solid var(--line-2);border-radius:999px;padding:2px 8px;color:var(--haze-dim)}
.pub .venue .status{font-family:"JetBrains Mono",monospace;font-size:10.5px;color:var(--steel)}
.pub .venue a.lnk{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--amber);border-bottom:1px solid transparent;transition:border-color .25s}
.pub .venue a.lnk:hover{border-color:var(--amber)}
@media (max-width:640px){.pub{grid-template-columns:1fr;gap:8px}.pub .yr{padding-top:0}}

/* ---------- five solas ---------- */
.solas{border-top:1px solid var(--line)}
.sola{display:grid;grid-template-columns:40px 1fr auto;gap:22px;padding:26px 0;border-bottom:1px solid var(--line);align-items:baseline}
.sola .n{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--amber);opacity:.8}
.sola .lat{font-family:"Space Grotesk",sans-serif;font-weight:500;font-size:21px;letter-spacing:-.01em;color:var(--haze)}
.sola .en{font-size:14px;color:var(--mute);font-style:italic;margin-top:2px}
.sola .desc{font-size:16px;line-height:1.5;color:var(--haze-dim);font-weight:300;margin-top:9px;max-width:54ch}
.sola .ref{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.06em;color:var(--mute-2);text-transform:uppercase;white-space:nowrap;padding-top:6px}
@media (max-width:720px){
  .sola{grid-template-columns:32px 1fr;gap:14px}
  .sola .ref{grid-column:2;white-space:normal;padding-top:8px}
}

/* ---------- CV ---------- */
.cv-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:6px}
.btn{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--haze);border:1px solid var(--line-2);border-radius:999px;padding:11px 22px;transition:.25s}
.btn:hover{border-color:var(--amber);color:var(--amber)}
.cv-sec{padding:30px 0;border-top:1px solid var(--line)}
.cv-sec:first-of-type{border-top:none}
.cv-sec h2{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--amber);margin:0 0 4px}
.cv-item{display:grid;grid-template-columns:1fr auto;gap:18px;padding:14px 0;border-bottom:1px solid var(--line);align-items:baseline}
.cv-item:last-child{border-bottom:none}
.cv-item .what{font-size:17px;color:var(--haze);font-weight:300}
.cv-item .what b{font-family:"Space Grotesk",sans-serif;font-weight:500;font-size:17px;letter-spacing:-.01em;color:var(--haze);display:block;margin-bottom:2px}
.cv-item .what span{color:var(--mute);font-size:14.5px}
.cv-item .when{font-family:"JetBrains Mono",monospace;font-size:11px;color:var(--mute);white-space:nowrap;letter-spacing:.04em}
.cv-item a.in{color:var(--amber);border-bottom:1px solid transparent;transition:border-color .25s}
.cv-item a.in:hover{border-color:var(--amber)}
@media (max-width:640px){.cv-item{grid-template-columns:1fr;gap:4px}.cv-item .when{order:-1}}

/* ---------- contact ---------- */
.contact-block{display:grid;grid-template-columns:1fr 1fr;gap:46px}
@media (max-width:720px){.contact-block{grid-template-columns:1fr;gap:34px}}
.contact-block .label{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--mute-2);margin-bottom:14px}
.contact-block .email{font-family:"Space Grotesk",sans-serif;font-size:clamp(20px,3vw,28px);color:var(--haze);letter-spacing:-.01em;transition:color .25s}
.contact-block a.email:hover{color:var(--amber)}
.contact-block address{font-style:normal;font-size:17px;line-height:1.75;color:var(--haze-dim);font-weight:300}

/* ---------- footer ---------- */
footer{padding:56px 0 64px;border-top:1px solid var(--line);margin-top:60px}
footer .wrap{display:flex;flex-wrap:wrap;gap:18px;justify-content:space-between;align-items:center}
footer .flinks{display:flex;gap:22px;flex-wrap:wrap;align-items:center}
footer .flinks a{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute);transition:color .25s}
footer .flinks a:hover{color:var(--amber)}
footer .copy{font-family:"JetBrains Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--mute-2)}

/* ---------- theme switch ---------- */
.theme-toggle{display:inline-flex;align-items:center;gap:10px;background:none;border:0;padding:0;cursor:pointer;font:inherit;line-height:1}
.theme-toggle .tmode{color:var(--mute);transition:color .25s}
.theme-toggle:hover .tmode{color:var(--amber)}
.theme-toggle .track{width:40px;height:21px;border-radius:999px;border:1px solid var(--line-2);position:relative;transition:border-color .25s;flex:0 0 auto}
.theme-toggle:hover .track{border-color:var(--amber)}
.theme-toggle .knob{position:absolute;top:50%;left:3px;transform:translateY(-50%);width:13px;height:13px;border-radius:50%;background:var(--mute);transition:left .28s cubic-bezier(.4,0,.2,1),background .25s}
[data-theme="light"] .theme-toggle .knob{left:22px;background:var(--amber)}
.theme-toggle:focus-visible{outline:none}
.theme-toggle:focus-visible .track{outline:2px solid var(--amber);outline-offset:3px}

/* ---------- revision: hero role, footer creed, confession ---------- */
.hero .role{margin-top:30px;font-family:"Space Grotesk",system-ui,sans-serif;font-weight:400;font-size:clamp(18px,2.4vw,24px);letter-spacing:-.005em;color:var(--haze-dim)}

.footer-creed{flex:0 0 100%;margin:0 0 6px;font-family:"Newsreader",Georgia,serif;font-style:italic;font-weight:300;font-size:15px;letter-spacing:.01em;color:var(--mute)}
.footer-creed b{color:var(--amber);font-weight:300;font-style:italic}

.creed-lead{font-family:"Space Grotesk",system-ui,sans-serif;font-weight:600;font-size:clamp(23px,3.6vw,36px);line-height:1.22;letter-spacing:-.02em;color:var(--haze);max-width:22ch;margin:0 0 40px}
.creed-lead b{color:var(--amber);font-weight:600}

.ref-inline{color:var(--mute);font-style:italic}

/* ---------- revision: accent role line + linked verse refs ---------- */
.hero .role{line-height:1.45}
.hero .role .accent{color:var(--amber);font-weight:500}
a.ref-inline{transition:color .25s;border-bottom:1px solid transparent}
a.ref-inline:hover{color:var(--amber);border-color:var(--line-2)}
