/*
Theme Name: Bentley Publishers
Description: Functional-equivalence port of the legacy bentleypublishers.com design. Markup and CSS ported from pubs-proto-r0-v024 (app) and product pages r0 v026. Banner per BANNER-SPEC (genuine jpeg 234x60, band #00529b). Do not restyle the banner here — banner.py is the single source of truth.
Version: 1.0.0
Author: Claude Fable 5 for Bentley Publishers
Text Domain: bentleypubs
*/

/* v010 — v009 + Miko's style notes: flush left/ragged right (no centered text), alphabetical
   marques w/ Automotive Reference last, left nav restored on full screens, date ranges not
   year lists, no self-promoting copy foregrounded (Road & Track speaks instead), title/author
   spacing fixed, color-wiring-diagrams badge (air-cooled VW books). */
:root{--blue:#00529b;--ink:#1a1a1c;--mut:#7c828a;--line:#e6e8eb;--ghost:#dfe5ec}
*{box-sizing:border-box}
body{font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;margin:0;background:#fff;color:var(--ink)}
a{text-decoration:none;color:var(--blue)}
.page{max-width:980px;margin:0 auto;padding:0 22px}
/* ---------- brand ---------- */
.mastband{background:#00529b}
.masthead{display:flex;justify-content:space-between;align-items:center;padding:0;min-height:70px}
.masthead img.lg{display:block;width:234px;height:60px}
.mast-right a{color:#fff !important;font-size:14px;font-weight:600}
.brand{display:flex;align-items:center;gap:12px;color:var(--ink)}
.bmark{display:flex;align-items:center;gap:3px}
.bmark .br{width:8px;height:34px;border:3px solid var(--blue);border-radius:0}
.bmark .br.l{border-right:none}
.bmark .br.r{border-left:none}
.bmark .sq{width:34px;height:34px;background:var(--blue);color:#fff;font-weight:800;font-size:22px;display:flex;align-items:center;justify-content:center}
.wordmark{line-height:1.05}
.wordmark .nm{font-size:19px;font-weight:800;letter-spacing:-.2px}
.wordmark .nm sup{font-size:9px;font-weight:400}
.wordmark .tag{font-size:11.5px;color:var(--mut);letter-spacing:.02em;margin-top:2px}
.mast-right{display:flex;align-items:center;gap:16px}
.mast-right a{font-size:14px;color:var(--ink);padding:10px 0 10px 10px}
.mast-right a b{color:var(--blue)}
.rule{border:0;border-top:1px solid var(--line);margin:0}
/* ---------- brand row ---------- */
.marques{display:flex;flex-wrap:wrap;gap:0 4px;padding:8px 0;font-size:14px}
.marques a{padding:10px 9px;color:var(--ink)}
.marques a:hover{color:var(--blue)}
.marques .sep{color:var(--line);padding:10px 0}
/* ---------- hero ---------- */
.hero{position:relative;padding:34px 0 30px;overflow:hidden}
.ghost{position:absolute;inset:0;pointer-events:none;opacity:.55}
.hero-inner{position:relative;display:grid;grid-template-columns:1fr;gap:26px}
.hero-copy h1{font-size:30px;line-height:1.15;font-weight:800;letter-spacing:-.4px;margin:0 0 10px}
.hero-copy p{font-size:16px;line-height:1.5;color:#3c4046;max-width:34em;margin:0 0 16px}
.hero-copy .go{display:inline-block;background:var(--blue);color:#fff;font-size:15px;font-weight:600;padding:11px 18px;border-radius:2px}
.shelf{display:flex;align-items:flex-end;gap:26px;justify-content:center;padding:8px 0 2px}
.shelf a{display:block;text-align:left}
.shelf img{display:block;box-shadow:0 14px 30px rgba(10,40,80,.25), 0 2px 6px rgba(10,40,80,.12)}
.shelf .s1 img{width:150px}.shelf .s2 img{width:190px}.shelf .s3 img{width:150px}
.shelf .cap{font-size:12.5px;color:var(--mut);margin-top:10px}
/* ---------- featured grid ---------- */
.grid{display:grid;grid-template-columns:1fr;gap:18px;padding:24px 0 8px}
.lrow{display:flex;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}
.lrow img{width:92px;height:auto;align-self:flex-start;box-shadow:0 3px 8px rgba(10,40,80,.18)}
.lrow .lt{font-family:Verdana,Geneva,Arial,sans-serif;font-size:14px;font-weight:700;line-height:1.35;color:#00529b;display:block;margin-bottom:4px}
.lrow .lm{font-size:13px;color:#3c4046;line-height:1.5}
.pcard{display:block;color:var(--ink);text-align:left}
.pcard img{width:72%;max-width:210px;box-shadow:0 10px 22px rgba(10,40,80,.22);transition:transform .15s}
.pcard:hover img{transform:translateY(-3px)}
.pcard .t{font-size:15px;font-weight:650;line-height:1.3;margin:14px 0 6px;max-width:24em}
.pcard .a{font-size:12.5px;color:var(--mut);display:block;margin:0 0 3px}
.pcard .pr{font-size:12.5px;color:var(--mut)}
/* ---------- quick searches (demoted, low on page) ---------- */
.quick{padding:26px 0 8px;border-top:1px solid var(--line);margin-top:30px}
.quick .lbl{font-size:13px;color:var(--mut);margin-bottom:2px}
.quick a{display:inline-block;font-size:14px;padding:9px 12px 9px 0;color:var(--blue)}
.searchrow{display:flex;gap:8px;max-width:380px;margin-top:8px}
.searchrow input{flex:1;font-size:14px;padding:8px 11px;border:1px solid #cfd4da;border-radius:2px;min-width:0}
.searchrow button{font-size:14px;padding:8px 13px;border:0;border-radius:2px;background:var(--blue);color:#fff}
.results{padding:6px 0}
.results a{display:block;font-size:14.5px;padding:9px 0;border-bottom:1px solid var(--line);color:var(--ink)}
.results .pr{color:var(--mut);font-size:12.5px}
/* ---------- reinforcing copy + wiring-diagram badge (low on page by design) ---------- */
.lowline{font-size:13.5px;color:var(--mut);max-width:44em;padding:18px 0 0;line-height:1.5}
.wire{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:2px;padding:12px 14px;margin:18px 0 0;max-width:520px}
.wire svg{flex:none}
.wire .wt{font-size:13.5px;line-height:1.45;color:#2c2f33}
.wire .wt a{font-weight:600}
/* ---------- running footer (wiki-style strip) ---------- */
.runfoot{border-top:1px solid var(--line);margin-top:34px;padding:16px 0 8px;font-size:13.5px;color:var(--mut)}
.runfoot a{color:var(--blue);padding:8px 12px 8px 0;display:inline-block}
.colophon{font-size:12px;color:var(--mut);padding:4px 0 26px}
.colophon a{color:var(--mut)}
/* ---------- product page ---------- */
.cbar{background:#eeeeee;border-bottom:1px solid #d5d5d5}
.cbar .in{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:27px;padding:2px 0}
.crumb{font-family:Verdana,Geneva,Arial,sans-serif;font-size:11px;color:#111}
.crumb a{color:#00529b;text-decoration:none}
.crumb .sep{color:#b5b5b5;padding:0 8px;font-size:12px}
.cbar form{display:flex;gap:6px}
.cbar input{font-size:13px;padding:6px 9px;border:1px solid #c6c6c6;border-radius:2px;width:180px}
.cbar button{font-size:13px;padding:6px 10px;border:1px solid #c6c6c6;background:#fff;border-radius:2px}
.prod{position:relative;display:grid;grid-template-columns:1fr;gap:30px;padding:24px 0 10px}
.prod .stage{position:relative;text-align:center;padding:26px 10px}
.prod .stage img{width:74%;max-width:300px;box-shadow:0 18px 40px rgba(10,40,80,.28), 0 3px 8px rgba(10,40,80,.12)}
/* spacing QC: title, subtitle, author must never crowd (permanent check) */
.pinfo h1{font-size:24px;line-height:1.25;font-weight:800;letter-spacing:-.3px;margin:0 0 10px}
.pinfo .sub{font-size:16.5px;color:#3c4046;line-height:1.45;margin:0 0 10px}
.pinfo .auth{font-size:14px;color:var(--mut);margin:0 0 20px}
.spec{width:100%;border-collapse:collapse;font-size:14px;margin:0 0 18px}
.spec td{padding:8px 10px 8px 0;border-bottom:1px solid var(--line);vertical-align:top}
.spec td:first-child{color:var(--mut);width:32%}
.spec .isbn{font-weight:700;letter-spacing:.02em}
.buy{display:flex;align-items:center;gap:16px;margin:2px 0 20px}
.buy button{background:var(--blue);color:#fff;font-size:15.5px;font-weight:600;border:0;border-radius:2px;padding:12px 22px}
.buy .pr{font-size:15px;color:#3c4046}
.buy .code{font-size:12px;color:var(--mut)}
.desc{font-size:15px;line-height:1.6;color:#2c2f33;max-width:44em}
.desc h3{font-size:15px;margin:18px 0 6px}
.vids{margin-top:26px;border-top:1px solid var(--line);padding-top:18px}
.vids .lbl{font-size:15px;font-weight:700;margin-bottom:6px}
.vids a{display:block;font-size:14.5px;padding:9px 0}
.vids .dur{color:var(--mut);font-size:12.5px}
.stagecap{font-size:11.5px;color:var(--mut);margin-top:8px}
.plinks{list-style:none;margin:16px auto 0;padding:0;max-width:300px;text-align:left}
.plinks li{border-bottom:1px solid var(--line)}
.plinks a{display:block;font-size:13.5px;padding:8px 2px;color:var(--blue)}
.also{border-top:1px solid var(--line);margin-top:26px;padding-top:14px}
.also .lbl,.assoc .lbl{font-size:15px;font-weight:700;margin-bottom:10px}
.alsorow{display:flex;gap:22px;flex-wrap:wrap}
.alsorow a{width:110px;font-size:12.5px;line-height:1.35;color:var(--blue)}
.alsorow img{width:100%;height:auto;display:block;margin-bottom:6px;box-shadow:0 3px 8px rgba(10,40,80,.18)}
.assoc{margin-top:22px}
.assoc p{font-size:13.5px;color:#3c4046;margin:0 0 6px}
.assoc ul{margin:0;padding-left:18px;font-size:13.5px;line-height:1.7}
.comment{font-size:13px;margin:26px 0 0}
.secbar{background:#00529b;color:#fff;font-family:Verdana,Geneva,Arial,sans-serif;font-size:12px;font-weight:700;padding:4px 8px;margin:18px 0 10px}
.secbar.gray{background:#dddddd;color:#000}
.morerow{font-size:13px;padding:2px 0 8px}
.morerow a{padding-right:16px}
.vidrows a{display:block;font-size:14px;padding:8px 0}
.ytpara{font-size:13.5px;line-height:1.55;color:#2c2f33;max-width:44em}
.narrow{width:100%;font-size:14px;padding:9px 11px;border:1px solid #c6c6c6;border-radius:2px;margin:2px 0 6px}
/* ---------- admin (black, internal only) ---------- */
.admin{background:#111;color:#ddd;min-height:60vh;padding:30px 0}
.admin .page{max-width:760px}
.admin h1{color:#fff;font-size:20px}
.admin p{font-size:14px;line-height:1.55;color:#bbb;max-width:44em}
.admin code{color:#8fc1f7}
.admin a{color:#8fc1f7}
/* ---------- phone: keep the cover trio inside the viewport ---------- */
@media(max-width:759px){
  .shelf{gap:12px}
  .shelf .s1 img,.shelf .s3 img{width:24vw}
  .shelf .s2 img{width:32vw}
  .hero-copy h1{font-size:25px}
}
/* ---------- left nav (full screens — standing requirement) ---------- */
.rail{display:none}
/* GPXS masterwork feature — legacy home port */
.gfeat{display:grid;grid-template-columns:1fr;gap:20px;padding:6px 0 10px}
.gthumbs{display:flex;flex-wrap:wrap;gap:8px;align-content:flex-start}
.gthumbs a{width:31%}
.gthumbs{margin-top:14px}
.gthumbs img{width:100%;height:auto;display:block;border:1px solid #d9d9d9}
.gleft > a > img{width:100%;height:auto;display:block}
.gcap{font-size:12.5px;padding:6px 0}
.gt{font-family:inherit;display:block;font-size:20px;font-weight:700;color:#000;line-height:1.2}
.ga{font-size:13.5px;color:var(--blue);margin:4px 0 10px}
.gbib{font-size:13px;line-height:1.55;color:#222;margin:0 0 12px}
.gcart{background:var(--blue);color:#fff;font-size:14px;font-weight:600;border:0;border-radius:3px;padding:9px 18px}
.gdesc{font-size:13.5px;line-height:1.55;color:#2c2f33;margin-top:14px}
.gdesc ul{margin:6px 0;padding-left:20px}
@media(min-width:760px){.gfeat{grid-template-columns:7fr 5fr}}
/* focus feature (home) + legacy-parallel bib block */
.focus{position:relative;display:grid;grid-template-columns:1fr;gap:22px;padding:26px 0 24px;align-items:center}
.focus .spread{width:100%;height:auto;display:block}
.focus-copy .ft{display:block;font-size:26px;line-height:1.15;font-weight:800;letter-spacing:-.3px;color:var(--ink)}
.focus-copy .fs{font-size:16px;color:#3c4046;line-height:1.4;margin:8px 0 4px}
.focus-copy .fa{font-size:14px;color:var(--mut);margin:0 0 12px}
.fq{font-size:15.5px;line-height:1.5;color:#2c2f33;border-left:3px solid var(--blue);padding:2px 0 2px 12px;margin:12px 0}
.fq .who{display:block;font-size:12.5px;color:var(--mut);margin-top:5px}
.bib{font-size:14px;line-height:1.4;color:#2c2f33;margin:0 0 14px}
.bib div{padding:4px 0;border-bottom:1px solid var(--line)}
.pages3{display:flex;gap:12px;margin-top:20px}
.pages3 img{width:32%;height:auto;border:1px solid var(--line);box-shadow:0 4px 12px rgba(10,40,80,.14)}
/* ---------- desktop ---------- */
@media(min-width:760px){
  .hero-inner{grid-template-columns:5fr 6fr;align-items:center}
  .focus{grid-template-columns:7fr 5fr}
  .grid{grid-template-columns:1fr 1fr;gap:14px 34px}
  .prod{grid-template-columns:5fr 6fr;align-items:start}
  body{background:#dddddd}
  .frame{background:#fff;max-width:960px;margin:0 auto;border-left:1px solid var(--line);border-right:1px solid var(--line);min-height:100vh}
}
@media(min-width:1000px){
  .marques{display:none}
  .cols{display:grid;grid-template-columns:168px minmax(0,1fr)}
  .rail{display:block;border-right:1px solid var(--line);padding:22px 18px 22px 22px}
  .rail{font-family:Verdana,Geneva,Arial,sans-serif}
  .rail a{display:block;font-family:Verdana,Geneva,Arial,sans-serif;font-size:12px;color:#00529b;padding:3px 5px;border-bottom:none}
  .rbox{border:1px solid #c9cdd2;margin:0 0 12px;padding:4px 10px;background:#fff}
  .rsearch input{width:100%;font-size:14px;padding:8px 10px;border:1px solid #c6c6c6;border-radius:4px;margin:0 0 12px;background:#fff}
  .rquote{border:1px solid #c9cdd2;margin:0;padding:10px;font-size:12.5px;line-height:1.5;color:#333}
  .rquote span{display:block;text-align:right;font-weight:700;margin-top:6px}
  .rail a:hover{color:var(--blue)}
  
  .cols .page{max-width:812px;margin:0;padding:0 26px}
}
/* --- product-page gallery (r0 v026) --- */
.gal{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.gal a{width:23%}
.gal img{width:100%;border:1px solid #d9d9d9}
/* --- WP port shims (r1 v001): WooCommerce notice + admin bar --- */
.woocommerce-message,.woocommerce-info{border-top:3px solid #00529b;background:#f7f9fb;padding:12px 16px;margin:12px 0;font-size:14px}
/* --- STYLE-GUIDE-VISUAL 2026-07-12 (Miko P69): information hierarchy --- */
/* Author outranks price. Price is quiet: 14px regular, bib voice. Never bold. */
.prod .auth{font-size:14px;color:#1a1a1c}
.buy .pr{font-size:14px;color:#222;font-weight:400}
.buy .pr b{font-size:14px;font-weight:400}
/* Buttons are brand blue everywhere — WooCommerce purple is a defect. */
.woocommerce button.button, .woocommerce a.button, .woocommerce input.button,
.wc-proceed-to-checkout a.checkout-button, .woocommerce #respond input#submit{
  background:#00529b !important;color:#fff !important;border:0;border-radius:3px;font-weight:600}
.woocommerce button.button:hover, .woocommerce a.button:hover{background:#003f78 !important}
/* --- Legacy column shadow: the GENUINE bg-960-shadow.gif (1050x1, measured
   repeat-y 50% 0 on the live site 2026-07-12). Never recreate with box-shadow. --- */
@media(min-width:760px){
  body{background:#dddddd url(https://assets1.bentleypublishers.com/images/bg-960-shadow.gif) repeat-y 50% 0}
  .frame{border-left:0;border-right:0}
}
/* --- Handcrafted pages (Miko P70): main + sidebar, legacy gray-headed boxes --- */
.prodwrap{display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:900px){.prodwrap{grid-template-columns:minmax(0,1fr) 252px}}
.prodside .sbox{border:1px solid #c9cdd2;background:#fff;margin:20px 0}
.prodside .sbox h3{margin:0;background:#dddddd;color:#000;font-family:Verdana,Geneva,Arial,sans-serif;font-size:12px;font-weight:700;padding:5px 10px;border-bottom:1px solid #c9cdd2}
.prodside .sbody{padding:10px 12px;font-size:13px;line-height:1.5;color:#2c2f33}
.prodside .aphoto{float:left;width:64px;height:auto;margin:2px 10px 6px 0;border:1px solid #d9d9d9}
.prodside .arow{display:flex;gap:10px;align-items:flex-start;padding:7px 0;border-bottom:1px solid #f0f0f0}
.prodside .arow:last-child{border-bottom:0}
.prodside .arow img{width:44px;height:auto;border:1px solid #d9d9d9;flex:none}
.prodside .arow a{font-size:13px;line-height:1.4}
/* --- Chrome dark-canvas guard: force light scheme so the surround is legacy gray --- */
html{color-scheme:light;background:#dddddd}
/* --- THE CART BUTTON (Miko P71): genuine in-house icon /images/cart.w.gif (28x18),
   measured legacy anatomy: 130x25 pill, icon at 9px 50%, text offset 37px,
   Verdana 11px bold white. Recreated as CSS pill + genuine gif. --- */
.cartbtn, .buy button, a.gcart{
  display:inline-block;background:#00529b url(https://assets1.bentleypublishers.com/images/cart.w.gif) no-repeat 9px 50%;
  color:#fff !important;font-family:Verdana,Geneva,Arial,sans-serif;font-size:11px;font-weight:700;
  border:0;border-radius:13px;height:26px;line-height:26px;padding:0 16px 0 44px;cursor:pointer}
.cartbtn:hover, .buy button:hover, a.gcart:hover{background-color:#003f78}
.lrow .lrow-cart{margin-top:6px} /* Miko 2026-07-20: add-to-cart lozenge on each listing row */
/* masthead cart link carries the icon too */
.mast-right a.carticon{background:url(https://assets1.bentleypublishers.com/images/cart.w.gif) no-repeat 0 50%;padding-left:36px}
/* --- gray pill (legacy secondary: apply / Continue Shopping / update) --- */
.graybtn, .woocommerce button[name="apply_coupon"], .woocommerce button[name="update_cart"]{
  display:inline-block;background:#e8e8e8 !important;color:#222 !important;border:1px solid #b8b8b8 !important;
  border-radius:13px;font-size:12px;font-weight:700;padding:5px 18px;cursor:pointer}
.graybtn:hover{background:#ddd !important}
.bp-continue{margin:0 0 12px}
/* --- Woo cart page in the legacy panel language --- */
.woocommerce table.shop_table{border:1px solid #c9cdd2;border-radius:0;border-collapse:collapse;font-size:13px}
.woocommerce table.shop_table th{background:#dddddd;font-family:Verdana,Geneva,Arial,sans-serif;font-size:12px;font-weight:700;color:#000;padding:6px 10px}
.woocommerce table.shop_table td{border-top:1px solid #f0f0f0;padding:8px 10px}
.cart_totals h2{font-family:Verdana,Geneva,Arial,sans-serif;font-size:14px}
.bp-payments{max-width:320px}
.bp-payments ul{margin:6px 0;padding-left:18px}
/* --- featured-image hover-swap + gray tabs bar (Miko P72, legacy GPXS anatomy) --- */
#bpstage{max-width:96%;height:auto;box-shadow:0 8px 22px rgba(0,0,0,.18)}
.fthumbs{display:flex;flex-wrap:wrap;gap:8px;margin:14px 4px 4px;justify-content:flex-start}
.fthumbs img{width:72px;height:auto;border:1px solid #d9d9d9;cursor:pointer;background:#fff}
.fthumbs img:hover{border-color:#00529b}
.tabsbar{background:#eeeeee;border:1px solid #e0e0e0;padding:7px 12px;margin:18px 0 14px;font-size:14px}
.tabsbar a{padding-right:22px}
.desc-wide{max-width:none}
/* --- Handcrafted page refinements (Miko P75 screenshots, deployed GPXS as spec) --- */
.prod.hc{grid-template-columns:1fr}
@media(min-width:700px){.prod.hc{grid-template-columns:54fr 46fr}}
.prod.hc h1{font-family:Verdana,Geneva,Arial,sans-serif;font-size:22px;font-weight:700;color:#000;line-height:1.25;margin:2px 0 2px} /* ONE title color site-wide (Miko P83): rust; black was unapproved */
.prod.hc .sub2{font-size:14px;font-weight:700;color:#1a1a1c;margin:0 0 10px}
.prod.hc .auth{font-size:14px;color:#1a1a1c;margin:0 0 16px}
.prod.hc .stage{text-align:left;padding:4px 0}
.prod.hc .stage #bpstage{max-width:100%;width:400px;height:auto;box-shadow:none;border:1px solid #eee}
.prod.hc .bib2{font-size:15px;line-height:1.5;color:#111;margin:0 0 16px}
.prod.hc .bib2 div{padding:1px 0;border-bottom:0}
/* ISBN stays bold per guide (Amazon bridge R1.4) even though deployed page shows plain — re-rule in guide if wanted */
.prod.hc .fthumbs{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0 6px}
.prod.hc .fthumbs img{width:100px;height:auto;border:1px solid #d9d9d9;cursor:pointer;background:#fff}
.prodside .arow img{width:64px}
/* --- Bib block: plain lines, NO rules between rows (Miko 2026-07-12, imitate the
   deployed product page style). Applies to ALL product pages. --- */
.bib div{border-bottom:0 !important;padding:2px 0}
/* --- Cart: bigger thumbnails (especially GPXS-class art), coupon moved toward the
   money and widened (Miko 2026-07-12) --- */
.woocommerce table.shop_table img{width:72px;height:auto}
.woocommerce table.cart td.actions .coupon{float:right;margin-left:auto}
.woocommerce table.cart td.actions .coupon input[name="coupon_code"]{width:240px;padding:6px 10px}
.woocommerce table.cart td.actions button[name="update_cart"]{float:left}
/* --- author pages (P78: author material lives on OUR site) --- */
.authorhead{display:flex;gap:18px;align-items:flex-start;margin:6px 0 18px;max-width:46em}
.authorhead .aportrait{width:110px;height:auto;border:1px solid #d9d9d9;flex:none}

/* --- brand section links row (P83) --- */
.brandlinks{font-size:14px;margin:2px 0 10px}
.brandlinks a{padding-right:6px}
/* rail: British Cars box header link */
.rail .rhead{font-weight:400} /* same type as other rail links (Miko P86) */
/* --- Cart badge + bigger icon (Miko P85): quantity badge ABOVE the cart icon
   (sums copies: 2+1 = 3); icon half again as big (28x18 -> 42x27). --- */
.mast-right a.carticon{position:relative;background-size:42px 27px;padding-left:54px;padding-top:12px;padding-bottom:12px}
.cartbadge{position:absolute;top:-2px;left:30px;background:#fff;color:#00529b;font-size:11px;font-weight:700;line-height:1;padding:3px 6px;border-radius:10px;min-width:8px;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.cartbadge.empty{display:none}
/* current shelf in a link row: plain text, not a link */
.brandlinks .cur{font-weight:700;color:#1a1a1c}
/* --- Cart link refinement (Miko P90): regular weight, icon wheels on the text
   baseline, bigger badge number. Values set blind (extension down) — tune by eye. --- */
.mast-right a.carticon{font-weight:400 !important;background-position:0 calc(50% + 5px)}
.cartbadge{font-size:13px;padding:3px 7px;border-radius:11px;top:-4px}
/* color-wiring device on listing rows (P92): genuine icon, quiet corner */
.lrow{position:relative}
.cwicon{position:absolute;right:0;top:2px}
.cwicon img{width:34px;height:auto;border:0}

/* ---------- LINNAEAN PRESS (2026-07-12) ---------- */
/* The masthead is type, not a logo: the imprint has no mark of its own yet.
   [final art: Miko] — deliberately not invented. Blue #00529B is the house colour,
   inherited from the parent, which is correct: this IS a Bentley imprint. */
.lp-brand { text-decoration: none; display: block; padding: 6px 0; }
.lp-name {
  display: block; font: bold 26px/1.1 Verdana, Geneva, sans-serif;
  color: #FFFFFF; letter-spacing: -0.01em;
}
.lp-imprint {
  display: block; font: 11px/1.5 Verdana, Geneva, sans-serif;
  color: #FFFFFF; margin-top: 2px;
}
.lp-imprint sup { font-size: 8px; }

/* Two bindings, one page: hardcover and paperback of Boston (Miko 2026-07-12) */
.buy-multi { display: flex; flex-direction: column; gap: 10px; }
.bindrow {
  border-top: 1px solid #DDD; padding-top: 8px;
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px;
}
.bindrow .bindlab {
  font: bold 13px/1 Verdana, Geneva, sans-serif; color: #1A1A1C;
  min-width: 84px;
}
.bindrow .pr { font: 13px/1 Verdana, Geneva, sans-serif; min-width: 62px; }
.bindrow .lm { flex-basis: 100%; }

.morelink { margin: 6px 0 18px; font: 12px/1.4 Verdana, Geneva, sans-serif; }

/* Tiny social icons in the left rail (Miko 2026-07-13). The rail is 168px of
   Verdana links; the icon rides the text baseline and does not change the row
   height. Served from the theme, never from the host we are switching off. */
.rail .riconlink{display:flex;align-items:center;gap:6px}
.rail .riconlink img{width:16px;height:16px;flex:none;border:0}

/* ═══════════════════════════════════════════════════════════════════════
   LINNAEAN PRESS — the imprint line, the author rail, the named shelf
   ═══════════════════════════════════════════════════════════════════════
   ⚠️ EVERY CLASS BELOW IS EMITTED BY header.php / front-page.php, AND EVERY CLASS THEY
   EMIT IS BELOW. The Technical Videos section shipped broken because the markup declared
   six classes and five had no rule anywhere — it was not "unstyled", it was styled by
   nothing. Sweeping for that is now part of the job.
   ═══════════════════════════════════════════════════════════════════════ */

/* the imprint line is its own element now — it holds a real link */
.lp-brandwrap { display: block; }
.lp-brandwrap .lp-brand { display: block; text-decoration: none; }
.lp-imprint a        { color: inherit; text-decoration: none; border-bottom: 1px solid rgba(255,255,255,.38); }
.lp-imprint a:hover  { border-bottom-color: #fff; }

/* Education — Maria Montessori. The name sits under the label, quieter but present. */
.rsub        { display: block; }
.rsub span   { display: block; font-size: 11px; line-height: 1.3; color: #6b6b6b;
               font-style: italic; margin-top: 1px; }
.rsub:hover span { color: #2b4a7d; }

/* the fiction authors panel */
.rauth .rhead { font: 600 10px/1 'Helvetica Neue', Arial, sans-serif; color: #777;
                letter-spacing: .09em; text-transform: uppercase;
                padding: 0 0 6px; margin-bottom: 5px; border-bottom: 1px solid #e2e2e2; }
.rauth a      { display: block; font-size: 12px; line-height: 1.45; }
/* a count, only where a writer has more than one book — a "1" everywhere is noise */
.rauth a i    { font-style: normal; color: #999; font-size: 10.5px; margin-left: 4px; }

/* the named shelf on the home page */
.secname      { font-weight: 400; font-style: italic; opacity: .92; }

/* ============================================================
   Linnaean contents list — GENERATED FROM SOURCE (Linnaean Source/build.py).
   Understated, book-like: for collections (short stories, collected works, the
   Common Purpose remembrances). ============================================ */
.bp-contents{float:right;width:320px;max-width:42%;margin:.2em 0 1.2em 1.6em;clear:right}
.bp-contents h3{font:600 13px/1 Arial,Helvetica,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#666;margin:0 0 10px;padding-bottom:6px;border-bottom:1px solid #333}
.bp-contents table{border-collapse:collapse;width:100%}
.bp-contents td{padding:4px 6px;vertical-align:baseline;border-bottom:1px solid #f0f0f0}
.bp-contents .cn{width:2.2em;text-align:right;color:#aaa;font-size:.82em;font-variant-numeric:tabular-nums}
.bp-contents .ca{width:11em;color:#555}
.bp-contents .ct{color:#111}

/* Library-binding hype panel — under the buy button on fiction reprints (Miko). */
.libhype{border:1px solid #cfcabb;background:#faf8f2;padding:10px 12px;margin:12px 0;max-width:340px;font-size:.9em;line-height:1.45;color:#333}
/* Readability pass (Miko): a touch more air in the description column. NEEDS VISUAL TUNING. */
.desc{font-size:1.04em;line-height:1.62}
.bp-contents .bp-stories{margin:0;padding-left:1.15em}
.bp-contents .bp-stories li{padding:3px 0;color:#111}
/* Match Bentley's cart badge: a white circle with a clear, bold number (Miko 2026-07-15). */
.cartbadge{display:inline-block;min-width:18px;padding:2px 6px;border-radius:11px;background:#fff;color:#00529b;font-size:12px;font-weight:700;line-height:1.15;text-align:center;box-shadow:0 1px 3px rgba(0,0,0,.28);vertical-align:middle;margin-left:5px}
.cartbadge.empty{display:none}
/* Readability (Miko 2026-07-14): constrain line length; reviews as catchy blurbs. */
.desc{max-width:34em}
/* Review excerpts — indented BOTH sides, larger, italic; source on the next line after an
   em-dash, tight. Looks like an excerpt from a book review. */
.bp-review{font-style:italic;font-size:1.18em;line-height:1.45;color:#2c2f33;margin:1.3em 2.2em}
.bp-review .src{display:block;font-style:normal;font-weight:700;font-size:.8em;color:#444;margin-top:.1em}
/* Included stories — a recognizable list, aligned LEFT with the body text (not inset like the
   reviews), two columns so it does not run too tall. */
.bp-included{margin:1.4em 0}
.bp-included h3{font:600 13px/1 Arial,Helvetica,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#666;margin:0 0 10px}
.bp-included ul{margin:0;padding-left:1.2em;columns:2;column-gap:2.4em}
.bp-included li{padding:3px 0;line-height:1.5;break-inside:avoid}
/* RUN-IN REVIEW — a special category. Sometimes the house copy flows straight into the reviewer's
   quoted words in one sentence ("…the novel, which the Times called ‘a masterpiece’…"). We do NOT
   pull these out into a block (the boundary between our copy and the quote can't be found reliably).
   Instead the paragraph stays in the description and the QUOTED span — delimited by its own quote
   marks, the one reliable signal — is italicised and set a touch larger inline; the attribution
   follows in small bold. Identification + treatment are documented in the Linnaean style guide. */
.bp-runin-q{font-style:italic;font-size:1.08em}
.bp-runin-src{font-weight:700;font-size:.82em;color:#444;white-space:nowrap}
/* ===== A Common Purpose (5WW2) — bespoke special page, built to the announcement data sheet =====
   A hand-authored layout, unlike the generic product description: contributor photographs set into
   the top copy, the 72 stories grouped under their nine parts (author • title, kept legible because
   69 families scan for their own name), then the alphabetical contributor index as a resource. */
.cp-top::after{content:'';display:block;clear:both}
.cp-top p{margin:.1em 0 .8em}
.cp-preface{margin:.4em 0 .6em;padding-left:14px;border-left:3px solid #e0d8c8;font-style:italic;color:#42474d}
.cp-preface .by{display:block;font-style:normal;font-size:.85em;color:#666;margin-top:.3em}
.cp-figs{float:right;width:160px;margin:2px 0 12px 24px}
.cp-figs figure{margin:0 0 14px}
.cp-figs img{width:160px;height:auto;border:1px solid #ddd;display:block}
.cp-figs figcaption{font:italic 11px/1.35 Georgia,serif;color:#666;margin-top:4px}
.cp-contents{margin-top:20px;padding-top:14px;border-top:1px solid #ddd;clear:both}
.cp-contents>h3,.cp-index>h3{font:600 12px/1 Arial,Helvetica,sans-serif;letter-spacing:.09em;text-transform:uppercase;color:#666;margin:0 0 12px}
.cp-grid{columns:2;column-gap:38px}
.cp-part{break-inside:avoid;margin:0 0 15px}
.cp-part h4{font-size:14px;font-weight:700;color:#7a2d18;margin:0 0 5px;border-bottom:1px solid #eee;padding-bottom:3px}
.cp-e{padding:3px 0;line-height:1.4;break-inside:avoid}
.cp-a{font-weight:600;color:#1a1a1c;font-size:13.5px}
.cp-a::after{content:' • ';color:#bbb;font-weight:400}
.cp-t{color:#333;font-size:13.5px}
.cp-index{margin-top:18px;padding-top:14px;border-top:1px solid #eee}
.cp-names{font-size:12.5px;line-height:1.7;color:#333;columns:3;column-gap:28px}
.cp-dl{margin:16px 0 4px;font-size:13px}
.cp-dl a{color:#33506b;font-weight:600}
.cp-credit{margin-top:16px;padding-top:12px;border-top:1px solid #eee;font-size:12.5px;color:#777;text-align:center}
.cp-credit a{color:#33506b}
/* the info-sheet link in the Bibliographic Information block */
.isheet{margin-top:8px;font-size:.92em}
.isheet a{color:#33506b;font-weight:600}
/* prev/next ring (v022; hit-target fix v023) — small, plain, upper right of the product page.
   ⚠️ It must NOT be overlapped: the product grid below it was pulled up by a negative margin and
   covered the links (the right-hand details column sat over "next", which is why "next" was the
   hard one to click). Positive spacing + a raised stacking context keep the whole nav clickable,
   and each link is a padded inline-block so the hit area is comfortably larger than the glyphs. */
.pn{position:relative;z-index:3;text-align:right;font-size:13px;color:#9aa0a6;margin:2px 0 8px;line-height:1.5}
.pn a{display:inline-block;color:#33506b;text-decoration:none;padding:6px 10px;border-radius:5px}
.pn a:hover{text-decoration:underline;background:#eef3f8}
.pn .sep{color:#c8ccd0;margin:0 3px}
@media(max-width:640px){.cp-grid{columns:1}.cp-names{columns:2}.cp-figs{float:none;width:auto;margin:0 0 14px}.cp-figs img{width:150px}}
