/* ---- self-hosted fonts ----------------------------------------------------
 * These were on Google Fonts, which meant every visitor's browser announced
 * their IP to Google to fetch a typeface. Served from here instead, so the
 * site makes no third-party font request at all. Cinzel, Lora and Inter are
 * all SIL Open Font License, so this is permitted. Latin subset only.
 * If a weight is ever added to the design, add the woff2 AND a rule here.
 * -------------------------------------------------------------------------- */
@font-face{font-family:'Cinzel';font-style:normal;font-weight:400;font-display:swap;
  src:url('/assets/fonts/cinzel-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:600;font-display:swap;
  src:url('/assets/fonts/cinzel-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:700;font-display:swap;
  src:url('/assets/fonts/cinzel-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Lora';font-style:normal;font-weight:400;font-display:swap;
  src:url('/assets/fonts/lora-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Lora';font-style:normal;font-weight:500;font-display:swap;
  src:url('/assets/fonts/lora-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Lora';font-style:italic;font-weight:400;font-display:swap;
  src:url('/assets/fonts/lora-latin-400-italic.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;
  src:url('/assets/fonts/inter-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;
  src:url('/assets/fonts/inter-latin-500-normal.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;
  src:url('/assets/fonts/inter-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;
  src:url('/assets/fonts/inter-latin-700-normal.woff2') format('woff2')}

*{box-sizing:border-box;margin:0;padding:0}
img{display:block;max-width:100%}
a{text-decoration:none;color:inherit}
body{background:#0b1120;font-family:Lora,Georgia,serif;-webkit-font-smoothing:antialiased;
  --bg:#0e1526;--pn:#16203a;--ink:#efe7d6;--acc:#d99a4e;--mut:#8e9ab5;color:var(--ink);
  /* One gutter, used by every full-width band. Below 1440 it is a flat 34px and
   * NOTHING changes on laptops, tablets or phones. Above 1440 it grows to absorb
   * the extra, so backgrounds still run edge to edge on a wide monitor while the
   * words and covers sit in a centred column. EC is on a ~34in ultrawide; before
   * this the series cards were ~3300px and the covers hugged the left rail. */
  --gut:max(34px, calc((100% - 1440px) / 2))}

.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;
  gap:20px;padding:17px var(--gut);background:rgba(11,17,32,.94);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(239,231,214,.09);flex-wrap:wrap}
.wm{font-family:Cinzel,serif;font-weight:700;font-size:21px;letter-spacing:.22em}
.wm a:hover{color:var(--acc)}
.nav ul{display:flex;gap:25px;list-style:none;align-items:center;flex-wrap:wrap}
.nav a{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--mut);padding-bottom:2px;border-bottom:1px solid transparent}
.nav a:hover{color:var(--ink);border-color:var(--acc)}
.nav .cta{border:1px solid var(--acc);color:var(--acc);padding:9px 17px;border-radius:2px;font-weight:600}
.nav .cta:hover{background:var(--acc);color:#0b1120}

.chips{position:sticky;top:63px;z-index:45;display:flex;gap:8px;align-items:center;flex-wrap:wrap;
  padding:13px var(--gut);background:rgba(14,21,38,.96);backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(239,231,214,.07)}
.chip{font-family:Inter,sans-serif;font-size:12.5px;padding:8px 15px;border-radius:99px;cursor:pointer;
  background:transparent;border:1px solid rgba(239,231,214,.18);color:#b7c0d4;transition:.14s}
.chip span{color:var(--mut);margin-left:6px;font-size:11px}
.chip:hover:not(:disabled){border-color:var(--acc);color:var(--ink)}
.chip.on{background:var(--acc);border-color:var(--acc);color:#0b1120;font-weight:600}
.chip.on span{color:rgba(11,17,32,.6)}
.chip.soon{opacity:.42;cursor:default;font-style:italic}
.chips .sep{width:1px;height:20px;background:rgba(239,231,214,.16);margin:0 5px}

/* Hero: navy on the left where the type sits (so it reads as one page with the
 * rest of the site), warming into maroon behind the covers on the right.
 * #441d26 is sampled from the Bad Little Falls cover frame — the actual value off
 * the artwork, not a guess. Keep the navy majority: the maroon is a note, not a wall. */
.hero{display:grid;grid-template-columns:1fr 1fr;gap:46px;align-items:center;padding:74px var(--gut) 84px;
  background:linear-gradient(115deg,#0b1120 0%,#0e1526 44%,#1d1526 66%,#331b26 84%,#441d26 100%)}
.eyebrow{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--acc);margin-bottom:20px}
h1{font-family:Cinzel,serif;font-weight:700;font-size:clamp(34px,5.4vw,60px);line-height:1.1}
.hero .sub{margin-top:22px;font-size:18px;line-height:1.7;color:#c3ccdf;max-width:470px}
.cta-row{margin-top:34px;display:flex;gap:13px;flex-wrap:wrap}
.btn{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.13em;text-transform:uppercase;
  background:var(--acc);color:#0e1526;padding:16px 28px;border-radius:2px;font-weight:600}
.btn:hover{filter:brightness(1.12)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid rgba(239,231,214,.32);font-weight:400}
.btn.ghost:hover{border-color:var(--ink)}
.kunote{margin-top:16px;font-size:13.5px;color:var(--mut);font-style:italic}
.fan{position:relative;height:400px}
.fan .cv{position:absolute;width:214px;border-radius:3px;box-shadow:0 24px 58px rgba(0,0,0,.62)}
.f1{left:1%;top:42px;transform:rotate(-8deg)}
.f2{left:29%;top:0;z-index:2}
.f3{left:57%;top:42px;transform:rotate(8deg)}

.uni{margin:2px var(--gut) 22px;padding:19px 24px;border-left:2px solid var(--acc);
  background:rgba(217,154,78,.06);border-radius:0 4px 4px 0}
.uni p{font-size:14.5px;color:#c3ccdf;line-height:1.65}
.uni b{color:var(--acc);font-weight:600}

.cards{padding:12px var(--gut) 20px;display:grid;gap:22px}
.card{background:var(--pn);border:1px solid rgba(239,231,214,.09);border-radius:5px;padding:34px 32px;
  scroll-margin-top:122px}
.card.hide{display:none}
.chead{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap}
.chead h2{font-family:Cinzel,serif;font-size:27px;letter-spacing:.03em}
.tag{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.15em;text-transform:uppercase;
  color:var(--acc);margin-top:8px}
.order{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  padding:7px 13px;border-radius:99px;white-space:nowrap}
.order.strict{background:rgba(217,154,78,.16);color:var(--acc);border:1px solid rgba(217,154,78,.4)}
.order.soft{background:rgba(217,154,78,.08);color:#c9a97c;border:1px solid rgba(217,154,78,.24)}
.order.ok{background:rgba(142,154,181,.12);color:#a9b4cb;border:1px solid rgba(142,154,181,.26)}
.desc{margin-top:15px;color:#c3ccdf;line-height:1.7;font-size:16px;max-width:760px}
.cbody{margin-top:26px;display:grid;grid-template-columns:214px 1fr;gap:34px;align-items:start}

/* ---- long series: stack instead of side-by-side -----------------------------
 * The two-column body (big start-here cover on the left, the rest squeezed into
 * the right) works for a three-book series. Bad Little Falls has ten and is
 * heading for twenty, so nine covers were being crammed into two thirds of the
 * card: eight across and one orphan underneath with seven empty slots beside it.
 * .cbody.stack puts the anchor above and gives the row the FULL card width,
 * which fits ten per line instead of eight and scales as the series grows.
 * -------------------------------------------------------------------------- */
.cbody.stack{grid-template-columns:1fr}
.cbody.stack .anchor{max-width:214px}
.cbody.stack .restwrap{margin-top:6px}
.row{justify-content:center}

.anchor{position:relative}
.startpill{position:absolute;top:-9px;left:-9px;z-index:3;font-family:Inter,sans-serif;font-size:9.5px;
  letter-spacing:.15em;text-transform:uppercase;background:var(--acc);color:#0b1120;
  padding:5px 10px;border-radius:99px;font-weight:700}
.wrap{position:relative;overflow:hidden;border-radius:3px}
.anchor .cv{box-shadow:0 12px 34px rgba(0,0,0,.55);transition:.2s}
.anchor:hover .cv{transform:translateY(-4px);box-shadow:0 0 0 1px var(--acc),0 20px 44px rgba(0,0,0,.65)}
.ku{display:block;margin-top:13px;font-family:Inter,sans-serif;font-size:11.5px;font-weight:600;
  letter-spacing:.06em;text-align:center;background:var(--acc);color:#0b1120;
  padding:11px 10px;border-radius:2px;line-height:1.3}
.ku:hover{filter:brightness(1.12)}

.restlbl{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--mut);margin-bottom:15px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.newest{color:var(--acc);border:1px solid rgba(217,154,78,.34);padding:4px 10px;border-radius:99px;
  letter-spacing:.1em}
.row{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,118px));gap:22px 16px;
  justify-content:center;align-items:start}
.bk .cv,.pbk .cv{box-shadow:0 6px 16px rgba(0,0,0,.48);transition:.2s}
.bk:hover .cv,.pbk:hover .cv{transform:translateY(-4px);box-shadow:0 0 0 1px var(--acc),0 15px 32px rgba(0,0,0,.6)}
.bt{display:block;font-size:12.5px;margin-top:9px;color:#dfe4ef;line-height:1.32}
.bt.big{font-family:Cinzel,serif;font-size:17px;font-weight:700;margin-top:13px;color:var(--ink)}
.tn{display:block;font-family:Inter,sans-serif;font-size:9.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mut);margin-top:4px}
.tsp{display:block;font-size:11px;color:#93a0ba;font-style:italic;margin-top:3px;line-height:1.4}
.tnote{margin-top:7px;font-family:Inter,sans-serif;font-size:10px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--mut);line-height:1.5}
.tnote a{color:var(--acc);border-bottom:1px solid rgba(217,154,78,.4)}
.tnote a:hover{border-color:var(--acc)}
.fmts{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.fl{font-family:Inter,sans-serif;font-size:10px;letter-spacing:.05em;color:#9fb0cd;
  border:1px solid rgba(239,231,214,.17);padding:4px 8px;border-radius:2px;transition:.14s}
.fl:hover{border-color:var(--acc);color:var(--acc)}
.anchor .fmts{margin-top:9px}

.printblock{margin-top:30px;padding-top:24px;border-top:1px solid rgba(239,231,214,.1)}
.printlbl{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--acc);margin-bottom:16px}
.prow{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,158px));gap:22px;
  justify-content:start;align-items:start}

.free{margin:26px var(--gut);background:linear-gradient(135deg,#1b2745,#131c33);
  border:1px solid rgba(217,154,78,.26);border-radius:5px;padding:44px 34px}
.free h2{font-family:Cinzel,serif;font-size:29px}
.free>.sub{margin-top:11px;color:#c3ccdf;font-size:16px}
.two{margin-top:30px;display:grid;grid-template-columns:1fr 1fr;gap:26px}
.fitem{display:grid;grid-template-columns:112px 1fr;gap:20px;align-items:start}
/* hairline so a pale cover does not read as part of the background [EC 14 Sep: all four] */
.fitem .wrap{box-shadow:0 0 0 1px rgba(239,231,214,.22)}
.fitem h3{font-family:Cinzel,serif;font-size:19px}
.routes{margin-top:13px;display:flex;flex-direction:column;gap:8px}
.route{font-family:Inter,sans-serif;font-size:12px;padding:10px 13px;border-radius:3px;
  display:flex;justify-content:space-between;gap:10px;align-items:center;transition:.14s}
.route.gold{background:rgba(217,154,78,.16);border:1px solid rgba(217,154,78,.42);color:var(--acc)}
.route.gold:hover{background:rgba(217,154,78,.26)}
.route.plain{background:rgba(142,154,181,.1);border:1px solid rgba(142,154,181,.24);color:#b7c0d4}
.route.plain:hover{border-color:rgba(239,231,214,.4)}
.route em{font-style:normal;opacity:.72;font-size:11px}
@media(max-width:480px){.route{flex-wrap:wrap}.route span{white-space:nowrap}}

.nl{text-align:center;padding:78px var(--gut);background:linear-gradient(180deg,#16203a,#0b1120)}
.nl h2{font-family:Cinzel,serif;font-size:33px}
.nl .sub{margin:13px auto 0;color:#c3ccdf}
.quiet{margin-top:9px;font-size:14px;color:var(--mut);font-style:italic}
.nl form{margin:28px auto 0;display:flex;gap:10px;max-width:560px;flex-wrap:wrap}
.nl input{flex:1;min-width:150px;padding:14px 16px;border:1px solid rgba(239,231,214,.2);
  background:rgba(255,255,255,.05);color:var(--ink);border-radius:2px;font-family:Inter,sans-serif;font-size:14px}
.nl button{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.14em;text-transform:uppercase;
  background:var(--acc);color:#0e1526;border:none;padding:14px 26px;border-radius:2px;cursor:pointer;font-weight:600}
.fine{margin-top:15px;font-size:12px;color:var(--mut);opacity:.7;font-style:italic}
.ft{text-align:center;padding:46px 22px;border-top:1px solid rgba(239,231,214,.08)}
.ft .wm{font-size:15px;margin-bottom:12px}
.ft p{font-family:Inter,sans-serif;font-size:13px;color:var(--mut)}
.ft a:hover{color:var(--acc)}

@media(max-width:900px){
  .hero{grid-template-columns:1fr;padding:52px 22px 66px}
  .fan{height:300px}.fan .cv{width:156px}
  .cbody{grid-template-columns:1fr;gap:26px}
  .anchor{max-width:200px}
  .two{grid-template-columns:1fr}
  .nav,.chips,.cards{padding-left:22px;padding-right:22px}
  .uni,.free{margin-left:22px;margin-right:22px}
  .chips,.nav{position:static}
}

/* ---- deals bar + the True North "not in KU" case ---- */
#dealbar[hidden]{display:none}
#dealbar{background:linear-gradient(90deg,#d99a4e,#c8873b);color:#0b1120;
  font-family:Inter,system-ui,sans-serif;font-size:14px;padding:11px var(--gut);
  display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-weight:500}
#dealbar .dl{background:#0b1120;color:#d99a4e;font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;padding:4px 9px;border-radius:99px;font-weight:700}
#dealbar b{font-weight:700}
#dealbar a{margin-left:auto;font-weight:700;border-bottom:1px solid rgba(11,17,32,.4)}
#dealbar a:hover{border-color:#0b1120}
.ku.alt{background:transparent;color:var(--acc);border:1px solid var(--acc);margin-top:7px}
.ku.alt:hover{background:var(--acc);color:#0b1120;filter:none}
.noku{margin-top:8px;font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--mut);text-align:center}
@media(max-width:900px){#dealbar{padding-left:22px;padding-right:22px}}
#dealbar .more{background:rgba(11,17,32,.16);padding:3px 8px;border-radius:99px;font-size:11.5px;font-weight:600}

/* ---- anchor targets under the sticky stack ----------------------------------
 * nav (63) + chips = 122. Without this an anchor jump scrolls the target to
 * viewport top and the sticky chrome sits on top of it, hiding it.
 * (Staging bar removed at launch 2026-08-25; the 33px drop is DONE: 155 -> 122.) */
.free,.nl,#deals,#books{scroll-margin-top:122px}

/* ---- on-sale-now section ---- */
/* Centred on purpose. auto-fill was minting empty grid tracks across the full
 * width of a desktop, so one or two live deals sat marooned at the far left with
 * a lake of empty space beside them. Flex + centre means any number of cards
 * sits in the middle and wraps cleanly. EC's call, 2026-08-17. */
.deals{padding:14px var(--gut) 26px;text-align:center}
.deals h2{font-family:Cinzel,serif;font-size:27px;letter-spacing:.03em}
.deals .dsub{font-family:Inter,sans-serif;font-size:13.5px;color:var(--mut);
  margin-top:7px;letter-spacing:.02em}
.dgrid{margin-top:20px;display:flex;flex-wrap:wrap;gap:14px;justify-content:center}
.dcard{background:var(--pn);border:1px solid rgba(217,154,78,.3);border-radius:5px;
  padding:20px 20px 18px;display:flex;flex-direction:column;gap:6px;
  flex:0 1 250px;align-items:center}
.dentry{font-family:Inter,sans-serif;font-size:9.5px;letter-spacing:.15em;
  text-transform:uppercase;color:var(--acc)}
.dcard h3{font-family:Cinzel,serif;font-size:18px;line-height:1.3;color:var(--ink)}
.dprice{font-family:Inter,sans-serif;font-size:21px;font-weight:700;color:var(--acc)}
.dends{font-family:Inter,sans-serif;font-size:12.5px;color:var(--mut)}
.dbtn{margin-top:auto;padding-top:12px;font-family:Inter,sans-serif;font-size:11px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--acc);font-weight:600}
.dbtn:hover{text-decoration:underline}
#dealbar a.more{background:rgba(11,17,32,.16);padding:3px 8px;border-radius:99px;
  font-size:11.5px;font-weight:600;margin-left:0;border-bottom:none;color:#0b1120}
#dealbar a.more:hover{background:rgba(11,17,32,.3)}
@media(max-width:900px){.deals{padding-left:22px;padding-right:22px}}

/* ---- blog ---- */
.blogwrap{max-width:820px;margin:0 auto;padding:66px 34px 50px}
.bloghead{font-family:Cinzel,serif;font-size:clamp(32px,4.6vw,48px)}
.blogsub{margin-top:12px;color:var(--mut);font-size:17px;font-style:italic}
.plist{margin-top:44px;display:grid;gap:20px}
.pcard{display:block;background:var(--pn);border:1px solid rgba(239,231,214,.09);
  border-radius:5px;padding:30px 30px 26px;transition:.16s}
.pcard:hover{border-color:rgba(217,154,78,.45);transform:translateY(-2px)}
.pdate{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--acc)}
.pcard h2{font-family:Cinzel,serif;font-size:25px;margin:10px 0 12px;line-height:1.25}
.pcard p{color:#c3ccdf;line-height:1.7;font-size:16px}
.pmore{display:inline-block;margin-top:16px;font-family:Inter,sans-serif;font-size:11.5px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--acc)}
.empty{color:var(--mut);font-style:italic;padding:30px 0}
.post h1{font-family:Cinzel,serif;font-size:clamp(30px,4.4vw,44px);margin:12px 0 30px;line-height:1.18}
.post p{font-size:18px;line-height:1.82;color:#cdd6e6;margin-bottom:20px}
.post h2{font-family:Cinzel,serif;font-size:26px;margin:40px 0 14px}
.post h3{font-family:Cinzel,serif;font-size:21px;margin:32px 0 12px}
.post ul{margin:0 0 20px 22px}.post li{font-size:18px;line-height:1.8;color:#cdd6e6;margin-bottom:8px}
.post blockquote{margin:28px 0;padding:20px 26px;border-left:3px solid var(--acc);
  background:rgba(217,154,78,.07);border-radius:0 4px 4px 0}
.post blockquote p{margin:0;font-style:italic;color:var(--acc)}
.post code{background:rgba(255,255,255,.07);padding:2px 6px;border-radius:3px;font-size:.9em}
.post hr{border:none;border-top:1px solid rgba(239,231,214,.14);margin:34px 0}
.post a{color:var(--acc);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px;text-decoration-color:rgba(217,154,78,.55)}
.post a:hover{text-decoration-color:var(--acc)}
.backlink{margin-top:48px;padding-top:26px;border-top:1px solid rgba(239,231,214,.1)}
.backlink a{font-family:Inter,sans-serif;font-size:13px;color:var(--acc)}

/* ---- admin ---- */
.admin label{display:block;margin:20px 0 0;font-family:Inter,sans-serif;font-size:12px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--mut)}
.admin .hint{text-transform:none;letter-spacing:0;font-style:italic;opacity:.75;font-size:12px}
.admin input,.admin textarea,.admin select{width:100%;margin-top:8px;padding:13px 15px;
  background:rgba(255,255,255,.05);border:1px solid rgba(239,231,214,.2);border-radius:3px;
  color:var(--ink);font-family:Lora,Georgia,serif;font-size:16px}
.admin textarea{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14.5px;line-height:1.7;resize:vertical}
.admin input:focus,.admin textarea:focus,.admin select:focus{outline:none;border-color:var(--acc)}
.admin select{font-family:Inter,sans-serif;font-size:14px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:end}
.btns{display:flex;gap:10px;margin-top:20px}
.admin button{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.13em;text-transform:uppercase;
  background:var(--acc);color:#0b1120;border:none;padding:14px 24px;border-radius:3px;
  cursor:pointer;font-weight:600}
.admin button.ghost{background:transparent;color:var(--ink);border:1px solid rgba(239,231,214,.3);font-weight:400}
.msg{margin-top:18px;font-family:Inter,sans-serif;font-size:14px;min-height:20px}
.msg.ok{color:#7fd493}.msg.bad{color:#e08585}
.loadbtn{display:block;width:100%;text-align:left;margin-top:8px;background:transparent!important;
  color:#c3ccdf!important;border:1px solid rgba(239,231,214,.15)!important;text-transform:none!important;
  letter-spacing:0!important;font-size:14px!important;padding:11px 14px!important;font-weight:400!important}
.loadbtn:hover{border-color:var(--acc)!important;color:var(--ink)!important}
#existing h3{font-family:Cinzel,serif;font-size:18px;margin:34px 0 4px}
@media(max-width:760px){.row2{grid-template-columns:1fr}.blogwrap{padding:44px 22px 34px}}

/* admin nav */
.adminnav{display:flex;gap:0;flex-wrap:wrap;margin:14px 0 26px;border-bottom:1px solid rgba(239,231,214,.14)}
.adminnav a,.adminnav .here{font-family:Inter,sans-serif;font-size:12px;letter-spacing:.13em;
  text-transform:uppercase;padding:11px 18px;border-bottom:2px solid transparent;margin-bottom:-1px}
.adminnav a{color:var(--mut)}
.adminnav a:hover{color:var(--ink)}
.adminnav .here{color:var(--acc);border-bottom-color:var(--acc);font-weight:600}

/* ==== BOOK PAGE CSS, appended by build_site.py, do not duplicate ==== */
/* ---- book page, new classes only (bp-) ---- */
.bp{max-width:1100px;margin:0 auto;padding:34px}
.bphero{display:grid;grid-template-columns:300px 1fr;gap:44px;align-items:start;
  padding:38px 0 44px;border-bottom:1px solid rgba(239,231,214,.10)}
.bphero .cv{border-radius:3px;box-shadow:0 0 0 1px rgba(239,231,214,.22),0 24px 58px rgba(0,0,0,.62)}
.bpser{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.24em;text-transform:uppercase;
  color:var(--acc);margin-bottom:14px}
.bp h1{font-size:clamp(30px,4.2vw,46px);line-height:1.08}
.bpsub{font-family:Inter,sans-serif;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mut);margin-top:12px}
.bpbuy{margin-top:26px;display:flex;gap:12px;flex-wrap:wrap;align-items:center}
.bpblurb{padding:36px 0;max-width:660px;font-size:17px;line-height:1.75;color:#d7dcea}
.bpblurb p{margin-bottom:17px}
.bpblurb .lead{font-family:Cinzel,serif;font-size:20px;color:var(--ink);line-height:1.4}
.bpblurb .aside{color:var(--mut);font-style:italic;font-size:15.5px}
.bpblurb .tag2{font-size:15px;color:var(--mut);border-top:1px solid rgba(239,231,214,.10);padding-top:17px}
.bpblocks{display:grid;grid-template-columns:1fr 1fr;gap:22px;padding:8px 0 40px}
.blk{background:var(--pn);border-radius:4px;padding:24px 26px;border-left:2px solid var(--acc)}
.blk.quiet{border-left-color:rgba(239,231,214,.22)}
.blk h3{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--acc);margin-bottom:15px;font-weight:600}
.blk.quiet h3{color:var(--mut)}
.blk p{font-size:15px;line-height:1.68;color:#cfd6e6;margin-bottom:11px}
.blk p:last-child{margin-bottom:0}
.blk .hard{color:var(--ink);font-weight:500}
.blk .none{font-family:Cinzel,serif;font-size:22px;color:var(--ink);margin-bottom:12px}
.bpfmt{padding:34px 0 10px;border-top:1px solid rgba(239,231,214,.10)}
.bpfmt .printlbl{font-family:Inter,sans-serif;font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--mut);margin-bottom:18px}
.bpbonus{padding:22px 0 44px;font-size:15px;color:var(--mut);font-style:italic}
.ecnote{margin:60px 34px;padding:26px 30px;border:1px dashed var(--acc);border-radius:4px;
  background:rgba(217,154,78,.05);font-family:Inter,sans-serif}
.ecnote h4{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--acc);margin-bottom:16px}
.ecnote li{font-size:14px;line-height:1.7;color:#c3ccdf;margin:0 0 12px 20px}
.ecnote b{color:var(--ink)}
.ecnote .alt{background:rgba(0,0,0,.28);border-radius:3px;padding:14px 16px;margin:8px 0 0 -20px;
  font-family:Lora,Georgia,serif;font-size:14.5px;color:#d7dcea;line-height:1.6}
@media(max-width:860px){.bphero{grid-template-columns:1fr;gap:28px}.bpblocks{grid-template-columns:1fr}}

/* ---- v2 grafts: back link, couple line, oval tags, prev/next ---- */
.bpback{display:inline-block;font-family:Inter,sans-serif;font-size:11.5px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mut);padding:26px 0 0}
.bpback:hover{color:var(--acc)}
.bpcouple{margin-top:13px;font-size:18px;color:#cdd6e6;font-style:italic}
.bpcouple span{color:var(--mut);font-style:normal;font-size:15px}
.bptags{margin-top:17px;display:flex;flex-wrap:wrap;gap:7px}
.bprule{margin-top:15px;font-family:Inter,sans-serif;font-size:12px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--acc)}
.bptag{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.13em;text-transform:uppercase;
  color:#b7c0d4;border:1px solid rgba(239,231,214,.18);border-radius:99px;padding:6px 13px}
.bpcov{display:block}
.bpcov .cv{transition:.2s}
.bpcov:hover .cv{transform:translateY(-4px);
  box-shadow:0 0 0 1px var(--acc),0 30px 64px rgba(0,0,0,.66)}
/* homepage: the series-FAQ pill. Same geometry as .order so the two read as a
   pair; accent colour and a hover fill are what say "this one is a link". */
.cheadr{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.faqpill{font-family:Inter,sans-serif;font-size:10.5px;letter-spacing:.13em;
  text-transform:uppercase;padding:7px 13px;border-radius:99px;white-space:nowrap;
  color:var(--acc);border:1px solid rgba(217,154,78,.45);
  background:rgba(217,154,78,.08);transition:.14s}
.faqpill:hover{background:var(--acc);color:#0b1120}
.bpdeal[hidden]{display:none}
.bpdeal{margin-top:18px;display:flex;gap:11px;align-items:center;flex-wrap:wrap;
  background:linear-gradient(90deg,#d99a4e,#c8873b);color:#0b1120;border-radius:3px;
  padding:11px 16px;font-family:Inter,sans-serif;font-size:13.5px;font-weight:500}
.bpdeal .dl{background:#0b1120;color:#d99a4e;font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;padding:4px 9px;border-radius:99px;font-weight:700}
.bpdeal b{font-weight:700}
.bpdeal .until{opacity:.78}
.bpdeal .entry{margin-left:auto;background:rgba(11,17,32,.16);padding:3px 9px;
  border-radius:99px;font-size:11.5px;font-weight:600}
.bpnears{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:14px 0 54px;
  border-top:1px solid rgba(239,231,214,.10)}
.bpnear{background:var(--pn);border:1px solid rgba(239,231,214,.09);border-radius:4px;
  padding:19px 22px;transition:.16s;display:flex;gap:16px;align-items:center}
.bpnear:hover{border-color:rgba(217,154,78,.45);transform:translateY(-2px)}
.bpnear img{width:52px;border-radius:2px;box-shadow:0 6px 16px rgba(0,0,0,.5)}
.bpnear span{display:block;font-family:Inter,sans-serif;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--acc);margin-bottom:6px}
.bpnear b{font-family:Cinzel,serif;font-size:17px;font-weight:700;color:var(--ink);line-height:1.2}
.bpnear.next{text-align:right;flex-direction:row-reverse}
.bpnear.only{grid-column:1 / -1}
.bppointer{margin-top:14px;padding:15px 18px;background:rgba(239,231,214,.045);
  border-left:2px solid rgba(239,231,214,.22);border-radius:0 4px 4px 0;
  font-size:14.5px;line-height:1.65;color:#c3ccdf;font-style:normal}
@media(max-width:860px){.bpnears{grid-template-columns:1fr}
  .bpnear.next{text-align:left;flex-direction:row}}

.blk.quiet{font-style:normal}
.blk.quiet i,.blk.quiet em{font-style:italic}
details.spoil{background:var(--pn);border:1px solid rgba(217,154,78,.34);border-radius:3px;
  margin:11px 0 0;overflow:hidden}
details.spoil>summary{list-style:none;cursor:pointer;padding:14px 20px;
  font-family:Inter,sans-serif;font-size:12px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--acc);display:flex;align-items:center;gap:11px;
  transition:background .14s}
details.spoil>summary::-webkit-details-marker{display:none}
details.spoil>summary:hover{background:rgba(217,154,78,.08)}
details.spoil>summary:focus-visible{outline:2px solid var(--acc);outline-offset:-2px}
details.spoil>summary::before{content:"+";font-size:17px;font-weight:400;line-height:1;
  width:15px;text-align:center;flex:none}
details.spoil[open]>summary::before{content:"−"}
details.spoil[open]>summary{border-bottom:1px solid rgba(239,231,214,.09)}
.spoilbody{padding:19px 20px 21px}
.spoilbody p{margin:0 0 13px}
.spoilbody p:last-child{margin-bottom:0}

.faq{max-width:820px;margin:0 auto;padding:60px 34px 40px}
.faq h1{font-family:Cinzel,serif;font-size:clamp(30px,4.4vw,46px);line-height:1.12}
.faq .lede{margin-top:16px;font-size:19px;line-height:1.65;color:#c3ccdf;max-width:60ch}
.qa{margin-top:44px;padding-top:32px;border-top:1px solid rgba(239,231,214,.11)}
.qa:first-of-type{margin-top:40px}
.qa h2{font-family:Cinzel,serif;font-size:21px;line-height:1.35;letter-spacing:.01em;
  color:var(--ink)}
.qa p{font-size:17px;line-height:1.78;color:#cdd6e6;margin-top:14px;max-width:64ch}
.qa p strong{color:var(--ink)}
.qa a{color:var(--acc);border-bottom:1px solid rgba(217,154,78,.4)}
/* Ocean State Shifters links out wherever it appears. The tags are ALREADY accent-coloured,
 * so colour cannot be the signal - the underline is. Same idiom as .post a (9 Sep). [EC 20 Sep] */
.tag a,.bptag a{text-decoration:underline;text-underline-offset:2px;
  text-decoration-thickness:1px;text-decoration-color:rgba(217,154,78,.45)}
.tag a:hover,.bptag a:hover{text-decoration-color:var(--acc)}
.arcbody a{color:var(--acc);text-decoration:underline;text-underline-offset:3px;
  text-decoration-thickness:1px;text-decoration-color:rgba(217,154,78,.55)}
.arcbody a:hover{text-decoration-color:var(--acc)}

.qa a:hover{border-color:var(--acc)}
.faqfoot{margin:56px 0 10px;padding:26px 30px;border-left:3px solid var(--acc);
  background:rgba(217,154,78,.07);border-radius:0 4px 4px 0}
.faqfoot p{font-size:17px;line-height:1.7;color:#cdd6e6;margin:0;max-width:62ch}
@media(max-width:760px){.faq{padding:42px 22px 30px}}
.faq h3{font-family:Inter,sans-serif;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--acc);margin:66px 0 4px;padding-top:34px;border-top:1px solid rgba(239,231,214,.11)}

/* start-page series headlines are doors, not labels [EC — 26 Aug: "people are lazy, not stupid"] */
.world h2 a.wl{color:inherit;text-decoration:none;border-bottom:2px solid rgba(217,154,78,.35)}
.world h2 a.wl:hover{border-bottom-color:var(--acc)}
