:root{--ink:#14100D;--espresso:#2A1E15;--bark:#6B5442;--paper:#F4EEE6;--white:#FAF6EF;--sunk:#E9E0D2;--gold:#D4A63C;--gold-dark:#7A5714;--gold-bright:#E0B44E;--emerald:#0E6B4C;--emerald-dark:#0B5A40;--emerald-bright:#4FC79A;--line:#D8CCBA;--muted:#5E5142;--green:#0E6B4C;/* Display — Ụdị Foundry, Lagos. African-culture typeface mission; carries the brand voice. */--display:'Ojuju','Trebuchet MS',sans-serif;/* UI — Archivo, variable width 62-125. Normal width for chrome; Expanded for the wide gesture. */--ui:'Archivo','Helvetica Neue',Arial,sans-serif;--body:'Archivo','Helvetica Neue',Arial,sans-serif;/* Reading — Literata (TypeTogether), optical-size axis. Long-form prose only. */--reading:'Literata',Georgia,'Times New Roman',serif;--serif:var(--reading);--sans:var(--body);--mono:'SFMono-Regular',Consolas,'Liberation Mono',monospace;--max:1280px;
/* Hue semantic layer — roles reference primitives above; components use roles, never raw hex */
--surface-canvas:var(--paper);--surface-raised:var(--white);--surface-sunk:var(--sunk);--surface-inverse:var(--ink);
--text-primary:var(--ink);--text-secondary:var(--muted);--text-on-inverse:var(--paper);--text-accent:var(--gold-dark);
--border-subtle:var(--line);--border-strong:var(--bark);--accent:var(--gold);--accent-ink:var(--gold-dark);
--scrollbar-thumb:#8A7358;--focus-ring:var(--gold-dark);--focus-ring-inverse:var(--gold-bright);
/* 4-unit base spacing scale (Impeccable layout.md: 8-only scales miss the useful middle steps) */
--space-2xs:4px;--space-xs:8px;--space-sm:12px;--space-md:20px;--space-lg:32px;--space-xl:52px;--space-2xl:84px;
--ease-out:cubic-bezier(.16,1,.3,1);--dur-micro:140ms;--dur-standard:260ms}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:115px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6}body:has(dialog[open]){overflow:hidden}button,input,select,textarea{font:inherit}button,a,input,select{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}a:hover{text-decoration:underline;text-underline-offset:5px}button:hover{filter:brightness(.94)}:focus-visible{outline:3px solid #926c15;outline-offset:4px}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.01;letter-spacing:-.025em}h1{font-size:clamp(42px,5vw,72px)}h2{font-size:clamp(32px,3.8vw,48px)}h3{font-size:27px;letter-spacing:-.025em}p+p{margin-top:14px}img{max-width:100%;display:block}button{color:inherit}svg{flex-shrink:0}.wrap{width:min(var(--max),calc(100% - 80px));margin-inline:auto}.eyebrow{font-size:10px;letter-spacing:.23em;font-weight:650;text-transform:uppercase;color:var(--gold-dark);margin-bottom:16px}.muted{color:var(--muted)}.small{font-size:12px}.text-link{display:inline-flex;align-items:center;gap:20px;border-bottom:1px solid var(--gold);padding-bottom:4px;font-size:13px}.text-link:hover{text-decoration:none;border-color:currentColor}.btn{display:inline-flex;justify-content:center;align-items:center;gap:14px;min-height:46px;padding:11px 20px;background:var(--ink);border:1px solid var(--ink);color:var(--paper);font-size:13px;font-weight:600;line-height:1.4;border-radius:0;text-align:center}.btn:hover{text-decoration:none}.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--ink)}.btn.outline{background:transparent;color:var(--ink);border-color:var(--gold)}.btn.light{background:var(--paper);border-color:var(--paper);color:var(--ink)}.btn.small{min-height:38px;padding:8px 12px;font-size:12px}.btn.full{width:100%}.icon-button{display:inline-flex;align-items:center;justify-content:center;min-width:42px;min-height:42px;border:0;background:transparent}.inline-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.spaced{margin-top:24px}.utility{background:var(--gold);color:var(--ink);font-size:11px}.utility>.wrap{display:flex;justify-content:space-between;gap:12px;padding-block:8px}.utility .wrap>span{font-family:var(--serif);font-size:14px}.site-header{background:var(--ink);color:var(--paper);position:sticky;top:0;z-index:20;border-bottom:1px solid #4b493e}.header-inner{min-height:96px;display:flex;align-items:center;justify-content:space-between;gap:26px}.brand{display:flex;align-items:center;gap:14px;flex-shrink:0}.brand:hover{text-decoration:none}.brand svg{color:var(--gold);width:52px;height:42px}.brand-name{font-family:var(--serif);font-size:37px;line-height:.95;letter-spacing:-.025em}.brand-tagline{font-size:8px;letter-spacing:.36em;color:var(--gold);margin-top:9px;text-transform:uppercase}.primary-nav{display:flex;gap:30px;align-items:center}.primary-nav a{font-size:13px;white-space:nowrap}.primary-nav a.active{color:var(--gold)}.header-tools{display:flex;align-items:center;gap:16px;border-left:1px solid #726345;padding-left:24px}.header-tools a{display:flex;align-items:center;gap:8px;font-size:12px}.bag-count{font-size:11px;background:var(--gold);color:var(--ink);min-width:19px;text-align:center;line-height:19px;border-radius:50%}.mobile-toggle{display:none}.hero{background:var(--ink);color:var(--paper);position:relative;overflow:hidden}.hero-inner{display:grid;grid-template-columns:1.1fr 1fr;min-height:524px;align-items:center;position:relative}.hero-copy{z-index:2;padding-block:52px;padding-right:34px}.hero .eyebrow{color:var(--gold);margin-bottom:20px}.hero h1{font-size:clamp(54px,6vw,88px);font-weight:400;letter-spacing:-.025em;line-height:.96}.hero h1 em{font-style:normal;display:inline-block;position:relative}.hero h1 em:after{content:'';display:block;position:absolute;bottom:-13px;left:30%;width:55%;height:10px;border-top:4px solid var(--gold);border-radius:50%/* impeccable-disable-line border-accent-on-rounded -- decorative swash underline, not a card accent */;transform:rotate(-3deg)}.hero-description{color:#ddddd2;font-size:17px;max-width:395px;margin:30px 0 24px;line-height:1.55}.hero-art{align-self:stretch;position:relative;margin-right:-40px;display:flex;align-items:end;justify-content:end}.hero-art img{width:100%;height:100%;object-fit:cover;object-position:left bottom}.hero-art:after{content:'';position:absolute;inset:0;box-shadow:inset 24px 0 25px -16px var(--ink);pointer-events:none}.search-form{display:flex;align-items:center;background:var(--white);color:var(--ink);border:1px solid var(--line);min-height:54px}.search-form svg{margin-left:17px}.search-form input{width:100%;min-width:0;border:0;background:transparent;padding:15px;outline-offset:-4px;font-size:13px;color:var(--ink)}.search-form button{border:0;background:var(--gold);align-self:stretch;min-width:56px;font-size:23px}.hero-links{display:flex;gap:32px;margin-top:20px;color:var(--gold)}.hero-links a{font-size:12px}.genre-strip{border-bottom:1px solid var(--line);background:var(--white)}.genre-inner{display:flex;align-items:center;justify-content:space-between;gap:0;padding-block:17px;overflow-x:auto;scrollbar-width:thin}.genre-inner a{font-family:var(--serif);font-size:16px;padding:0 22px;border-right:1px solid var(--line);white-space:nowrap;text-align:center;flex:1}.genre-inner a:first-child{padding-left:0}.genre-inner a:last-child{border:0;padding-right:0;font-family:var(--sans);font-size:12px}.section{padding-block:58px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:24px;margin-bottom:30px}.section-heading .eyebrow{margin-bottom:12px}.book-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:25px}.book-card{display:flex;flex-direction:column;min-width:0;position:relative}.jacket-link{display:block;position:relative}.jacket-link:hover{text-decoration:none}.jacket{aspect-ratio:2/3;position:relative;overflow:hidden;color:var(--cover-ink,#f7edd8);background:var(--cover-bg,#263c34);padding:12% 10%;display:flex;flex-direction:column;align-items:center;text-align:center;isolation:isolate;box-shadow:2px 3px 7px #1111;border:1px solid #0002}.jacket:before{content:'';position:absolute;inset:7px;border:1px solid currentColor;opacity:.35;z-index:-1}.jacket:after{content:'';position:absolute;width:130%;aspect-ratio:1;left:-16%;top:36%;border-radius:50%;border:20px solid currentColor;opacity:.1;z-index:-1;transform:rotate(15deg)}.jacket .cover-overline{font-size:8px;text-transform:uppercase;letter-spacing:.22em;line-height:1.4;opacity:.92}.cover-title{font-family:var(--serif);font-size:clamp(22px,2.4vw,35px);line-height:1.07;letter-spacing:-.025em;margin-top:16%;width:100%;overflow-wrap:break-word}.jacket.long .cover-title{font-size:clamp(19px,2vw,29px)}.cover-author{font-family:var(--sans);font-size:11px;letter-spacing:.10em;text-transform:uppercase;margin-top:auto;padding-top:20px;line-height:1.6}.jacket .cover-rule{width:34px;height:1px;background:currentColor;margin:16px auto 0;opacity:.65}.jacket .edition-label{font-size:7px;letter-spacing:.13em;margin-top:14px;text-transform:uppercase;opacity:.82}.jacket.theme-1{--cover-bg:#5E1B27;--cover-ink:#F2E5CA}.jacket.theme-2{--cover-bg:#2A1E15;--cover-ink:#E0B44E}.jacket.theme-3{--cover-bg:#0C5D42;--cover-ink:#F4EEE6}.jacket.theme-4{--cover-bg:#14100D;--cover-ink:#D4A63C}.jacket.theme-5{--cover-bg:#4A2118;--cover-ink:#F0D886}.jacket.theme-6{--cover-bg:#E9E0D2;--cover-ink:#2A1E15}.jacket.theme-7{--cover-bg:#6B5442;--cover-ink:#FAF6EF}.jacket.theme-8{--cover-bg:#0B3D2E;--cover-ink:#E9E0D2}.jacket.theme-2:after,.jacket.theme-6:after{border-radius:0;transform:rotate(35deg);top:35%;border-width:35px;opacity:.12}.jacket.theme-4:after,.jacket.theme-7:after{border-radius:48% 48% 0 0;width:70%;left:15%;height:70%;top:60%;opacity:.16}.jacket.theme-5:after{width:60%;left:20%;top:60%;opacity:.18;border-width:1px;box-shadow:0 0 0 13px #e7cd9130,0 0 0 27px #e7cd9120,0 0 0 40px #e7cd9110}.save-overlay{position:absolute;right:8px;top:8px;background:var(--white);border:0;width:32px;height:34px;display:flex;align-items:center;justify-content:center;z-index:2}.save-overlay[aria-pressed=true]{background:var(--gold)}.book-card h3{font-size:20px;line-height:1.2;letter-spacing:-.025em;margin:14px 0 5px}.book-byline{font-size:12px;margin-bottom:6px}.book-genre{font-family:var(--serif);font-size:13px;color:var(--muted);margin-bottom:6px}.availability{font-size:11px;display:flex;align-items:center;gap:7px;margin-top:auto;margin-bottom:13px;padding-top:7px}.availability:before{content:'';width:6px;height:6px;border-radius:50%;background:#929589}.availability.available:before{background:var(--green)}.book-card .btn{margin-top:0;min-height:40px;padding:8px;font-size:11px;justify-content:space-between}.art-note{font-size:10px;color:var(--muted);margin-top:22px;letter-spacing:.02em}.promo-grid{display:grid;grid-template-columns:1.35fr 1fr}.membership-promo{background:var(--gold);padding:45px max(35px,calc((100vw - var(--max))/2));padding-right:38px;display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:center}.membership-promo h2{font-size:37px}.membership-promo p{font-family:var(--serif);font-size:16px;margin-top:16px}.membership-promo .btn{margin-top:23px}.library-card{background:#141612;color:var(--gold);aspect-ratio:1.58;padding:24px;border:1px solid #625132;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden;box-shadow:7px 10px 20px #1113;border-radius:8px;max-width:420px;width:100%;text-align:left}.library-card:after{content:'';position:absolute;width:240px;height:240px;border:1px solid #74603144;border-radius:50%;top:-90px;right:-60px;box-shadow:0 0 0 18px #74603111,0 0 0 38px #74603111,0 0 0 60px #74603111;pointer-events:none}.card-brand{text-align:center;letter-spacing:.15em;font-family:var(--serif);font-size:21px}.card-brand svg{display:block;margin:auto auto 6px}.card-tag{font:6px var(--sans);letter-spacing:.32em;text-align:center;margin:5px 0 20px}.card-label{font-size:7px;letter-spacing:.2em;color:#bbac87}.card-reader{font-family:var(--sans);color:var(--paper);font-size:12px;margin:2px 0}.card-id{font:8px monospace;color:var(--paper);word-break:break-all;letter-spacing:.035em}.barcode{height:23px;width:90%;margin:8px 0;background:repeating-linear-gradient(90deg,var(--paper) 0px,var(--paper) 1px,transparent 1px,transparent 3px,var(--paper) 3px,var(--paper) 5px,transparent 5px,transparent 7px,var(--paper) 7px,var(--paper) 8px,transparent 8px,transparent 11px)}.card-foot{font:6px var(--sans);letter-spacing:.14em}.membership-promo .library-card{transform:rotate(-5deg)}.research-promo{background:#191d17;color:var(--paper);padding:44px 48px}.research-promo h2{font-size:37px;max-width:330px}.research-promo .eyebrow{color:var(--gold)}.research-promo .research-link{display:flex;justify-content:space-between;padding:12px 0;border-bottom:1px solid #686249;font-size:14px}.research-promo .small{color:#bfc0b1;margin-top:25px;max-width:320px}.directory-home{display:grid;grid-template-columns:1.1fr .9fr;gap:65px;align-items:center}.directory-home p{font-family:var(--serif);font-size:19px;margin:15px 0 25px;max-width:520px}.directory-photo{position:relative;aspect-ratio:1.5;overflow:hidden}.directory-photo img{width:100%;height:100%;object-fit:cover}.directory-photo figcaption{position:absolute;bottom:6px;right:8px;background:#111c;color:#fff;font-size:8px;padding:3px 6px}.city-list{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.pill{border:1px solid var(--line);padding:5px 11px;font-size:11px;border-radius:20px;background:transparent}.pill.selected{background:var(--ink);color:var(--paper);border-color:var(--ink)}.collection-tally{display:flex;gap:40px;margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}.collection-tally strong{display:block;font-family:var(--serif);font-size:30px;line-height:1.1;font-weight:normal}.collection-tally span{font-size:11px;color:var(--muted)}.footer{background:var(--ink);color:var(--paper);padding-block:42px}.footer-top{display:flex;align-items:center;justify-content:space-between;gap:35px;margin-bottom:30px}.footer .brand-name{font-size:28px}.footer .brand svg{width:42px}.footer-nav{display:flex;flex-wrap:wrap;gap:24px;font-size:11px}.footer-bottom{border-top:1px solid #766233;display:flex;justify-content:space-between;gap:24px;padding-top:19px;font-size:11px;color:#c5c5b9}.footer-bottom .motto{font-size:8px;letter-spacing:.2em;color:var(--gold)}.site-foot{font-size:9px;letter-spacing:.05em;color:#a3a394;margin-top:23px}.page-intro{padding:44px 0 32px}.page-intro p{color:var(--muted);max-width:680px;margin-top:18px;font-size:15px}.breadcrumb{display:flex;gap:10px;font-size:11px;color:var(--muted);margin-bottom:25px;flex-wrap:wrap}.search-band{display:flex;gap:18px;align-items:center;margin-bottom:24px}.search-band .search-form{flex:1}.results-layout{display:grid;grid-template-columns:185px minmax(0,1fr);gap:36px}.filter-panel{border-top:1px solid var(--ink);padding-top:18px;align-self:start;position:sticky;top:124px}.filter-title{font-size:11px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:15px}.filter-group{padding-bottom:24px;margin-bottom:20px;border-bottom:1px solid var(--line)}.filter-link{display:flex;justify-content:space-between;gap:8px;font-size:12px;padding:8px 10px;margin-left:-10px}.filter-link.active{background:#e7dfcc;font-weight:600}.filter-link:hover{text-decoration:none;background:#e7dfcc}.filter-link span{font-size:10px;color:var(--muted)}.check{display:flex;gap:10px;align-items:flex-start;font-size:12px;line-height:1.5}.check input{accent-color:var(--ink);width:16px;height:16px;flex-shrink:0;margin-top:2px}.results-top{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:24px}.results-top .count{font-size:12px}.results-top select,.field select{background:transparent;padding:8px 28px 8px 10px;border:1px solid var(--line);font-size:12px;color:var(--ink);max-width:100%}.results-tools{display:flex;gap:8px;align-items:center}.view-switch{display:flex;border:1px solid var(--line)}.view-switch button{background:transparent;border:0;width:35px;height:34px}.view-switch button.active{background:var(--ink);color:var(--paper)}.catalog-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:28px 22px}.catalog-grid .cover-title{font-size:25px}.catalog-grid .jacket.long .cover-title{font-size:22px}.catalog-grid .book-card h3{font-size:19px}.pagination{display:flex;align-items:center;justify-content:center;gap:8px;margin:38px 0 5px;flex-wrap:wrap}.page-button{border:1px solid var(--line);background:transparent;min-width:39px;min-height:39px;font-size:12px}.page-button.active{background:var(--ink);color:var(--paper)}.empty{padding:60px 24px;text-align:center;border:1px solid var(--line);width:100%}.empty h2,.empty h3{margin-bottom:15px}.empty p{color:var(--muted);max-width:490px;margin-inline:auto}.empty .btn{margin-top:24px}.list-view{display:flex;flex-direction:column;gap:0}.list-view .book-card{display:grid;grid-template-columns:70px minmax(0,1fr) 165px;gap:22px;align-items:center;border-bottom:1px solid var(--line);padding:18px 0}.list-view .jacket{padding:12px 7px}.list-view .cover-title,.list-view .jacket.long .cover-title{font-size:11px!important}.list-view .cover-author{font-size:5px;padding-top:8px}.list-view .cover-overline,.list-view .cover-rule,.list-view .edition-label{display:none}.list-view .book-card h3{margin-top:0}.list-view .save-overlay{right:0;top:16px;position:static;width:30px;height:30px;grid-column:3;justify-self:end;display:none}.list-view .book-meta{align-self:center}.list-view .availability{margin:0 0 10px}.list-view .card-bottom{align-self:center}.book-detail{display:grid;grid-template-columns:310px minmax(0,1fr);gap:70px;align-items:start}.book-detail .jacket{min-height:430px}.book-detail .cover-title{font-size:40px}.book-detail .jacket.long .cover-title{font-size:32px}.book-detail .cover-author{font-size:15px}.book-detail h1{max-width:800px;font-size:clamp(40px,4.7vw,65px)}.detail-byline{font-family:var(--serif);font-size:22px;margin:15px 0}.synopsis-label{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-dark);font-weight:700;margin-top:25px}.detail-summary{font-family:var(--serif);font-size:22px;line-height:1.6;margin:8px 0 22px;color:#373b31}.metadata{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-block:1px solid var(--line);padding:22px 0;margin-top:27px}.metadata dt{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.metadata dd{margin:3px 0 0;font-size:13px}.source-note{font-size:11px;color:var(--muted);margin-top:20px;line-height:1.8}.notice{border:1px solid var(--line);padding:18px 22px;background:#ece7d9;font-size:12px;line-height:1.65}.notice strong{font-weight:600}.notice a{text-decoration:underline;text-underline-offset:3px}.notice.gold{border-color:#c7b170;background:#eae0c2}.detail-actions{margin-top:24px}.author-mini{display:flex;align-items:center;gap:22px;margin:30px 0;padding:25px 0;border-top:1px solid var(--line)}.monogram{width:72px;height:72px;flex-shrink:0;border-radius:50%;background:#ded8c5;display:flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:26px;letter-spacing:-.04em;color:#55452a}.author-mini h3{font-size:26px;margin-bottom:8px}.author-mini p{font-size:13px;color:var(--muted)}.author-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0 28px}.author-card{border-top:1px solid var(--line);padding:25px 0;display:flex;flex-direction:column;align-items:flex-start;gap:13px}.author-card h3{font-size:25px}.author-card p{font-size:12px;color:var(--muted);flex:1}.author-card .text-link{font-size:11px;margin-top:5px}.alphabet{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:28px}.alphabet a{font-size:12px;padding:4px 9px;min-height:32px;border-bottom:1px solid var(--line)}.alphabet .active{background:var(--ink);color:var(--paper)}.author-hero{display:grid;grid-template-columns:140px minmax(0,1fr);gap:40px;align-items:center}.author-hero .monogram{width:140px;height:140px;font-size:58px}.author-hero p{max-width:760px;font-family:var(--serif);font-size:22px;margin-top:18px}.member-layout{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.member-layout .library-card{max-width:460px;padding:32px}.member-layout .card-brand{font-size:27px}.member-layout .card-reader{font-size:16px}.member-layout .card-id{font-size:10px}.member-layout .card-tag{font-size:8px;margin-bottom:20px}.member-layout .card-foot{font-size:8px}.member-layout .barcode{height:32px}.field{display:block;margin-bottom:20px}.field>span{display:block;font-size:11px;font-weight:600;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;border:1px solid #bbb5a6;background:var(--white);padding:12px 13px;border-radius:0;font-size:14px;line-height:1.5;color:var(--ink)}.field textarea{min-height:100px;resize:vertical}.form-error{color:#992b24;font-size:12px;margin:14px 0}.tabs{display:flex;gap:30px;border-bottom:1px solid var(--line);margin-top:45px;margin-bottom:30px;overflow:auto}.tabs a{font-size:13px;padding:12px 0;white-space:nowrap}.tabs .active{border-bottom:2px solid var(--ink);font-weight:600}.request-item{display:grid;grid-template-columns:1fr auto;gap:24px;border:1px solid var(--line);padding:24px;margin-bottom:18px}.request-item h3{font-size:26px;margin-bottom:12px}.status{display:inline-block;background:#e5dbc0;color:#443c27;font-size:10px;font-weight:600;padding:4px 9px;text-transform:uppercase;letter-spacing:.08em}.request-item .small{color:var(--muted);margin-top:8px;overflow-wrap:anywhere}.request-progress{display:flex;gap:3px;margin-top:16px}.request-progress span{font-size:9px;/* impeccable-disable-line border-accent-on-rounded -- progress step rule, not a rounded card */border-top:3px solid var(--line);padding-top:8px;flex:1;color:var(--muted)}.request-progress span.done{border-color:var(--gold);color:var(--ink)}.bag-layout{display:grid;grid-template-columns:1fr 340px;gap:48px;align-items:start}.bag-row{display:grid;grid-template-columns:100px 1fr auto;align-items:center;gap:25px;padding:23px 0;border-bottom:1px solid var(--line)}.bag-row .jacket{padding:15px 10px}.bag-row .cover-title,.bag-row .jacket.long .cover-title{font-size:16px}.bag-row .cover-author{font-size:6px;padding-top:10px}.bag-row .cover-overline,.bag-row .cover-rule,.bag-row .edition-label{display:none}.bag-row h3{font-size:26px;margin-bottom:8px}.checkout-summary{padding:28px;border:1px solid #c1b591;background:#eee8d7;position:sticky;top:122px}.checkout-summary h3{margin-bottom:23px}.summary-line{display:flex;justify-content:space-between;font-size:13px;padding:9px 0;border-bottom:1px solid #d3c7ad}.checkout-summary .field{margin-top:23px}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin:28px 0}.metric{padding:25px 22px;background:var(--ink);color:var(--paper);display:flex;flex-direction:column}.metric-number{font-family:var(--serif);font-size:51px;line-height:1.1;letter-spacing:-.04em;color:var(--gold)}.metric h3{font-family:var(--sans);font-size:13px;letter-spacing:0;line-height:1.5;margin:10px 0 8px}.metric .small{color:#bfbfb0;font-size:10px;margin-bottom:22px}.metric a{color:var(--gold);font-size:11px;margin-top:auto}.research-layout{display:grid;grid-template-columns:1fr 340px;gap:40px}.report{border-top:1px solid var(--line);padding:24px 0}.report .eyebrow{margin-bottom:11px}.report h3{font-size:29px;line-height:1.15}.report p{font-size:13px;color:var(--muted);margin:14px 0}.report details{font-size:12px;margin-top:17px}.report summary{cursor:pointer;color:#514426}.report details p{font-size:12px}.report-actions{display:flex;gap:22px;flex-wrap:wrap;align-items:center}.report-actions button{border:0;background:none;padding:0;border-bottom:1px solid var(--gold);font-size:12px;line-height:1.8}.research-aside{background:#e9e2d1;padding:27px;align-self:start}.research-aside h3{margin-bottom:16px}.research-aside p{font-size:13px;color:#575a50}.definition{padding:19px 0;border-top:1px solid var(--line)}.definition strong{display:block;font-size:13px;margin-bottom:8px}.definition p{font-size:12px;color:var(--muted)}.store-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px}.store-card{border:1px solid var(--line);display:flex;flex-direction:column;padding:27px;background:#f8f5ec}.store-media{display:block;aspect-ratio:16/10;overflow:hidden;margin:-27px -27px 22px;background:#ded8c5;border-bottom:1px solid var(--line)}.store-media:hover{text-decoration:none}.store-media img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.9) contrast(1.02);transition:transform .25s ease}.store-media:hover img{transform:scale(1.015)}.store-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:32px}.store-index{font-family:var(--serif);font-size:31px;color:#b09a63}.store-place{font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}.store-card h3{font-size:29px;line-height:1.1}.store-card p{font-size:12px;color:var(--muted);margin:14px 0 22px;flex:1}.store-card .text-link{align-self:flex-start}.store-source{font-size:10px;color:var(--muted);margin-top:12px}.reading-width{max-width:810px}.prose{font-family:var(--serif);font-size:20px;line-height:1.65}.prose h2{font-size:33px;margin:34px 0 20px}.prose a{text-decoration:underline;text-underline-offset:4px}.prose p{margin-bottom:19px}.faq-item{border-top:1px solid var(--line);padding:20px 0}.faq-item summary{cursor:pointer;font-family:var(--serif);font-size:23px}.faq-item p{font-size:14px;margin-top:18px;color:var(--muted)}dialog{border:1px solid var(--line);padding:36px;background:var(--paper);color:var(--ink);width:min(550px,calc(100% - 32px));max-height:85vh;overflow-y:auto;box-shadow:0 20px 100px #0005}dialog::backdrop{background:#10130fcc;backdrop-filter:blur(4px)}.dialog-close{position:absolute;top:12px;right:12px}dialog h2{font-size:35px;margin-bottom:21px;padding-right:25px}dialog p{font-size:13px;color:var(--muted);margin-bottom:21px}.dialog-actions{display:flex;gap:12px;margin-top:24px}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,15px);padding:14px 24px;background:var(--ink);color:var(--paper);font-size:13px;border:1px solid var(--gold);z-index:100;max-width:calc(100% - 30px);width:max-content;opacity:0;pointer-events:none;transition:opacity .15s,transform .15s;box-shadow:0 5px 25px #0003}#toast.visible{opacity:1;transform:translate(-50%,0)}.skip-link{position:fixed;top:0;left:20px;background:var(--gold);padding:12px;z-index:300;transform:translateY(-120%)}.skip-link:focus{transform:none}.storage-warning{padding:12px;background:#f3ded2;font-size:12px;color:#542817;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.no-margin{margin:0}.fine-print{font-size:10px;color:var(--muted);line-height:1.6}.divider{border:0;border-top:1px solid var(--line);margin:35px 0}.desktop-only{display:initial}@media(min-width:1500px){.hero-art{margin-right:calc((1280px - 100vw)/2)}.hero-art img{max-width:750px}.hero-inner{min-height:570px}.hero-copy{padding-block:70px}}
@media(max-width:1100px){.wrap{width:calc(100% - 48px)}.primary-nav{gap:18px}.header-tools{padding-left:17px;gap:12px}.brand-name{font-size:30px}.brand svg{width:44px}.hero-inner{min-height:460px}.hero h1{font-size:68px}.hero-art{margin-right:-24px}.book-grid{gap:18px}.membership-promo{padding:35px 24px;gap:20px}.membership-promo h2,.research-promo h2{font-size:32px}.library-card{padding:18px}.card-brand{font-size:17px}.research-promo{padding:35px}.catalog-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.results-layout{grid-template-columns:165px 1fr;gap:25px}.results-top{flex-wrap:wrap}.author-grid{grid-template-columns:repeat(3,1fr)}.member-layout{gap:40px}.book-detail{grid-template-columns:260px 1fr;gap:42px}.metrics-grid{grid-template-columns:repeat(2,1fr)}.research-layout{grid-template-columns:1fr 290px}.bag-layout{gap:30px;grid-template-columns:1fr 300px}.membership-promo .card-tag{margin-bottom:10px}.cover-author{font-size:9px}.catalog-grid .cover-title{font-size:24px}}
@media(max-width:850px){.primary-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--ink);padding:20px 24px;flex-direction:column;align-items:flex-start;border-bottom:1px solid var(--gold);gap:0}.primary-nav.open{display:flex}.primary-nav a{width:100%;padding:12px 0}.mobile-toggle{display:flex}.header-inner{min-height:84px;gap:15px}.header-tools{margin-left:auto}.hero h1{font-size:58px}.hero-copy{padding-right:18px}.hero-description{font-size:15px}.hero-inner{min-height:430px}.hero-art img{object-position:28% bottom}.book-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.home-books .book-card:nth-child(n+4){display:none}.promo-grid{grid-template-columns:1fr}.membership-promo{padding:40px}.membership-promo .library-card{max-width:280px;justify-self:end}.research-promo{padding:40px;display:grid;grid-template-columns:1fr 1fr;gap:10px 35px}.research-promo .eyebrow{grid-column:1/-1}.research-promo .small{grid-column:1/-1}.directory-home{gap:35px}.directory-photo{aspect-ratio:1}.footer-top{align-items:start}.footer-nav{gap:15px}.results-layout{grid-template-columns:1fr}.filter-panel{position:static;display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:12px}.filter-panel .filter-title{width:100%;margin-bottom:0}.filter-group{padding:0;margin:0;border:0;display:flex;gap:7px;flex-wrap:wrap}.filter-link{padding:6px 10px;margin:0;border:1px solid var(--line)}.filter-link span{display:none}.filter-panel .fine-print{display:none}.catalog-grid .cover-title{font-size:28px}.catalog-grid .jacket.long .cover-title{font-size:25px}.filter-panel .check{padding-top:7px}.book-detail{grid-template-columns:220px 1fr;gap:28px}.book-detail .jacket{min-height:330px}.book-detail .cover-title{font-size:30px}.book-detail .jacket.long .cover-title{font-size:26px}.book-detail .cover-author{font-size:12px}.detail-summary{font-size:19px}.author-grid{grid-template-columns:repeat(2,1fr)}.research-layout{grid-template-columns:1fr}.store-grid{grid-template-columns:repeat(2,1fr)}.bag-layout{grid-template-columns:1fr}.checkout-summary{position:static}.member-layout{gap:28px}.member-layout .library-card{padding:20px}.member-layout .card-brand{font-size:20px}.member-layout .card-id{font-size:8px}.member-layout .card-tag{font-size:6px}.member-layout .card-reader{font-size:13px}.section{padding-block:42px}.cover-title{font-size:32px}.request-item{grid-template-columns:1fr}.research-promo .research-links{grid-column:2;grid-row:2/4}.research-promo h2{grid-row:2}}
@media(max-width:600px){body{font-size:14px}.wrap{width:calc(100% - 36px)}.utility .wrap{padding-block:7px;gap:6px}.utility .wrap>span{font-size:11px}.utility a{font-size:8px;max-width:130px;text-align:right}.header-inner{min-height:75px;gap:10px}.brand{gap:8px}.brand svg{width:35px;height:30px}.brand-name{font-size:26px}.brand-tagline{font-size:6px;letter-spacing:.3em;margin-top:6px}.header-tools{padding-left:10px;gap:5px}.header-tools .tool-label{display:none}.header-tools a{min-width:33px;min-height:42px;justify-content:center;gap:5px}.header-tools svg{width:18px}.mobile-toggle{min-width:33px}.hero-inner{display:flex;flex-direction:column;min-height:0}.hero-copy{width:100%;padding:39px 0 25px}.hero .eyebrow{font-size:9px;letter-spacing:.19em;margin-bottom:20px}.hero h1{font-size:59px;max-width:380px}.hero-description{max-width:340px;margin-top:28px;margin-bottom:23px;font-size:14px}.hero-art{height:250px;width:100%;margin-right:-18px;align-self:end;margin-top:-5px}.hero-art img{object-fit:contain;object-position:right bottom;width:100%}.hero-art:after{box-shadow:inset 30px 0 25px -20px var(--ink)}.hero-links{gap:26px}.hero-links a{font-size:11px}.genre-inner{padding-block:14px;justify-content:flex-start}.genre-inner a{font-size:14px;padding:0 20px;flex:none}.section{padding-block:35px}.section-heading{gap:15px;margin-bottom:25px;align-items:start}.section-heading h2{font-size:33px}.section-heading>.text-link{font-size:10px;gap:7px;flex-shrink:0;margin-top:15px;max-width:100px}.section-heading .eyebrow{font-size:9px}.book-grid,.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:27px 17px}.home-books .book-card:nth-child(4){display:flex}.book-card h3{font-size:18px}.book-byline{font-size:11px}.cover-title,.catalog-grid .cover-title{font-size:25px}.jacket.long .cover-title,.catalog-grid .jacket.long .cover-title{font-size:21px}.cover-author{font-size:9px;letter-spacing:.07em}.cover-overline{font-size:6px!important}.edition-label{font-size:5px!important}.book-card .btn{font-size:10px;padding:9px 8px;gap:8px}.save-overlay{width:29px;height:30px;right:5px;top:5px}.availability{font-size:10px}.membership-promo{padding:32px 20px;grid-template-columns:1fr;gap:32px}.membership-promo h2{font-size:37px;max-width:350px}.membership-promo p{max-width:310px;font-size:16px}.membership-promo .library-card{justify-self:center;max-width:310px;padding:25px;transform:rotate(-4deg)}.card-brand{font-size:22px}.research-promo{padding:32px 20px;display:block}.research-promo h2{font-size:35px;max-width:400px;margin-bottom:20px}.research-promo .small{margin-top:20px}.directory-home{grid-template-columns:1fr;gap:28px}.directory-home h2{font-size:36px}.directory-home p{font-size:17px}.directory-photo{aspect-ratio:1.6;margin:0}.collection-tally{gap:35px}.footer-top{display:block}.footer-nav{margin-top:30px;gap:13px 22px}.footer-bottom{flex-direction:column;gap:14px}.footer{padding-block:32px}.page-intro{padding:28px 0 25px}.page-intro h1{font-size:44px}.page-intro p{font-size:13px;margin-top:17px}.breadcrumb{font-size:10px;margin-bottom:22px}.search-band{gap:10px;flex-wrap:wrap}.search-band .search-form{min-width:100%}.search-band>.btn{font-size:11px}.results-top{gap:12px}.results-tools{width:100%;justify-content:space-between}.results-tools select{min-width:180px}.results-top .count{font-size:11px}.results-layout{gap:25px}.filter-link{font-size:10px;padding:5px 8px}.filter-group{gap:5px}.filter-panel .check{font-size:11px}.filter-panel .btn{font-size:11px;min-height:30px;padding:6px 10px}.list-view{display:flex}.list-view .book-card{grid-template-columns:58px 1fr;gap:13px}.list-view .card-bottom{grid-column:2}.list-view .book-card h3{font-size:19px}.list-view .availability{display:none}.list-view .jacket-link{grid-row:1/3;align-self:start}.list-view .book-meta{align-self:end}.list-view .btn{max-width:200px}.book-detail{grid-template-columns:1fr;gap:25px}.book-detail>.book-art{max-width:230px;justify-self:center}.book-detail .jacket{min-height:340px}.book-detail h1{font-size:43px}.book-detail .detail-summary{font-size:20px}.book-detail .metadata{gap:17px}.detail-byline{font-size:21px}.author-mini{align-items:flex-start;gap:17px}.author-mini .monogram{width:55px;height:55px;font-size:21px}.author-mini h3{font-size:25px}.author-grid{grid-template-columns:1fr 1fr;gap:0 21px}.author-card{padding:22px 0;gap:12px}.author-card h3{font-size:22px}.author-card p{font-size:11px}.author-card .monogram{width:57px;height:57px;font-size:23px}.alphabet{gap:3px}.alphabet a{padding:4px 8px}.author-hero{grid-template-columns:1fr;gap:20px}.author-hero .monogram{width:95px;height:95px;font-size:38px}.author-hero p{font-size:21px}.member-layout{grid-template-columns:1fr;gap:30px}.member-layout .library-card{padding:25px;max-width:390px;margin:auto}.member-layout .card-brand{font-size:23px}.member-layout .card-id{font-size:9px}.member-layout .card-tag{font-size:7px}.member-layout .card-reader{font-size:14px}.tabs{margin-top:30px;gap:22px}.tabs a{font-size:12px}.request-item{padding:20px}.request-item .btn{font-size:11px}.bag-row{grid-template-columns:70px 1fr;gap:17px}.bag-row .jacket{padding:12px 7px}.bag-row .cover-title,.bag-row .jacket.long .cover-title{font-size:12px}.bag-row h3{font-size:22px}.bag-row>.icon-button{grid-column:2;justify-self:start;font-size:11px;padding:0;min-height:25px}.checkout-summary{padding:22px}.metrics-grid{gap:13px}.metric{padding:21px 15px}.metric-number{font-size:40px}.metric h3{font-size:12px}.metric .small{font-size:9px}.metric a{font-size:10px}.research-layout{gap:28px}.report h3{font-size:27px}.report-actions{gap:18px}.store-grid{grid-template-columns:1fr;gap:17px}.store-card{padding:24px}.store-top{margin-bottom:19px}.store-card h3{font-size:30px}.store-card p{font-size:13px}.prose{font-size:18px}.prose h2{font-size:30px}.notice{padding:16px;font-size:11px}.desktop-only{display:none}dialog{padding:28px 23px}dialog h2{font-size:31px}.dialog-actions{flex-wrap:wrap}#toast{font-size:12px;padding:13px 18px;text-align:center}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media print{.site-header,.utility,footer,.btn,.search-form,.tabs,#toast,.save-overlay{display:none!important}.wrap{width:100%}.page-intro{padding-top:0}body{background:white}.jacket{print-color-adjust:exact}.book-grid{grid-template-columns:repeat(4,1fr)}}

/* v3.1 typography: Afrofuturist display, technical UI, professional reading text. */
body{font-kerning:normal;font-size:15.5px;-webkit-font-smoothing:antialiased}
h1,h2{letter-spacing:-.038em;line-height:1.08;text-wrap:balance}
h3{letter-spacing:-.022em;line-height:1.16}
.brand-name{letter-spacing:-.045em}
.hero h1{letter-spacing:-.045em;line-height:1.03}
.hero h1 em{font-style:italic;font-weight:normal}
.book-meta h3{font-size:22px;line-height:1.16;font-weight:600;letter-spacing:-.023em;overflow-wrap:anywhere}
.book-byline{font-size:12.5px;line-height:1.6}
.book-genre,.availability{font-size:11.5px}
.cover-title{font-family:var(--serif);font-weight:600;line-height:1.05;letter-spacing:-.035em;overflow-wrap:anywhere}
.jacket.very-long .cover-title{font-size:clamp(16px,1.8vw,25px)}
.jacket.extra-long .cover-title{font-size:clamp(13px,1.6vw,21px)}
.metadata dd,.count,.store-index,.site-foot{font-variant-numeric:tabular-nums}
.metadata dd{overflow-wrap:anywhere}
.metadata dd.isbn,.record-badge{font-family:var(--mono)}
.collection-update{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:0 0 26px;padding:14px 0;border-block:1px solid var(--line);font-size:13px}
.collection-update strong{font-weight:600}.collection-update .eyebrow{display:inline;margin:0 14px 0 0;font-size:9px}
.record-badge{display:inline-block;margin:0 0 18px;padding:5px 9px;border:1px solid var(--gold);color:var(--gold-dark);font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.author-book-count{font-size:10px!important;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-dark)!important;margin:15px 0 0!important}
.author-books{grid-template-columns:repeat(3,minmax(0,1fr));max-width:920px}
.author-books.single-book{grid-template-columns:minmax(0,240px)}
.provenance{border-top:1px solid var(--line);margin-top:18px;padding-top:12px;font-size:12px;line-height:1.65;overflow-wrap:anywhere}
.provenance summary{cursor:pointer;font-weight:600;list-style-position:inside}
.provenance p{margin:10px 0}.provenance a{font-size:12px}.provenance[open]{padding-bottom:5px}
.provenance.wide{margin-bottom:22px}.provenance .small{font-size:11px}
.directory-controls{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin:22px 0}
.directory-controls a{border-bottom:1px solid transparent;padding:5px 0;font-size:13px}.directory-controls a.active{border-color:var(--gold-dark);font-weight:600}
.directory-controls .directory-count{margin-left:auto;font-size:12px;color:var(--muted)}
.store-format{font-size:10px;text-transform:uppercase;letter-spacing:.09em;color:var(--gold-dark);margin-top:12px}
.store-card h3{font-size:30px;overflow-wrap:anywhere}.store-card .provenance{margin-top:20px}
.store-status{font-size:11px;line-height:1.55;border-left:2px solid var(--gold);padding-left:10px;margin-top:16px;color:var(--muted)}
.store-card>p{flex-grow:0}.store-card>.text-link{margin-top:auto;padding-top:20px}
.pagination{flex-wrap:wrap;gap:6px}.page-button{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px}
.page-ellipsis{padding:8px 3px;color:var(--muted);font-size:13px}.page-arrow{font-size:16px}
@media(min-width:1000px){.hero h1{font-size:clamp(60px,5.8vw,84px)}.book-detail h1{font-size:clamp(44px,4.5vw,66px)}}
@media(max-width:700px){.book-meta h3{font-size:20px}.book-byline{font-size:12px}.author-books{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-update{align-items:flex-start;gap:12px}.collection-update .eyebrow{display:block;margin:0 0 5px}.collection-update .text-link{flex-shrink:0;font-size:12px}.jacket.very-long .cover-title{font-size:18px}.jacket.extra-long .cover-title{font-size:15px}.store-card h3{font-size:29px}.directory-controls{gap:13px}.page-button{min-width:36px;min-height:40px}.hero h1{font-size:clamp(44px,12.8vw,61px);letter-spacing:-.045em;line-height:1.07}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* v3.1 approved typography system — Ojuju / Space Grotesk / Plus Jakarta Sans. */
body{font-family:var(--body)}
h1,h2{font-family:var(--display);font-weight:600;letter-spacing:-.014em;line-height:.98}
h3{font-family:var(--ui);font-weight:600;letter-spacing:-.018em}
button,input,select,textarea,.primary-nav,.header-tools,.brand-tagline,.eyebrow,.text-link,.btn,.book-byline,.book-genre,.availability,.cover-author,.card-tag,.card-label,.card-reader,.card-foot,.filter-title,.filter-link,.check,.results-top,.tabs,.status,.store-place,.store-format,.store-status,.provenance,.directory-controls,.page-button,.field>span,.report-actions,.fine-print,.site-foot{font-family:var(--ui)}
.brand-name,.utility .wrap>span,.card-brand,.collection-tally strong,.store-index,.monogram{font-family:var(--display)}
.metric-number{font-family:var(--display)}
.hero h1{font-family:var(--display);font-weight:650;letter-spacing:-.018em;line-height:.93}
.hero h1 em{font-style:normal;font-weight:650}
.cover-title{font-family:var(--display);font-weight:650;letter-spacing:-.012em;line-height:1.01}
.brand-name{font-weight:650;letter-spacing:-.018em;line-height:.9}
.card-brand{font-weight:600;letter-spacing:.08em}
.library-card{font-family:var(--ui)}
.prose,.detail-summary,.author-hero p,.membership-promo p,.directory-home p,.hero-description,.report p,.faq-item p,.author-card p,.author-mini p,.store-card p,dialog p{font-family:var(--body)}
.prose{font-family:var(--body);font-size:18px;line-height:1.75}
.detail-summary{font-size:19px;line-height:1.7}
.detail-byline,.faq-item summary,.genre-inner a{font-family:var(--ui)}
.metric h3{font-family:var(--ui);font-weight:600}
@media(max-width:600px){.hero h1{font-size:clamp(48px,14vw,66px);letter-spacing:-.015em;line-height:.94}.brand-name{font-size:28px}.prose{font-size:17px}}

/* v4 account onboarding, newsletter, and account-linked checkout. */
.footer-newsletter{width:min(var(--max),calc(100% - 80px));margin:0 auto 42px;padding:34px 0 36px;border-bottom:1px solid #766233;display:grid;grid-template-columns:minmax(0,.9fr) minmax(480px,1.1fr);gap:60px;align-items:end}
.footer-newsletter .eyebrow{color:var(--gold);margin-bottom:8px}.footer-newsletter h3{font-family:var(--display);font-size:34px;line-height:1}.footer-newsletter p{color:#c5c5b9;font-size:12px;margin-top:11px;max-width:520px}.newsletter-form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:10px 12px;align-items:center}.newsletter-form>input[type=email]{min-height:48px;background:#f8f5ec;border:1px solid #766233;padding:12px 14px;color:var(--ink);width:100%}.newsletter-form .check{grid-column:1/2;color:#d8d5ca}.newsletter-form .form-error{grid-column:1/-1;color:#f3b29b;margin:0}.newsletter-form .btn{grid-column:2;grid-row:1/3;align-self:stretch}
.onboarding-layout{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(0,1.28fr);gap:70px;align-items:start}.onboarding-layout>.onboarding-shell{border-top:1px solid var(--ink);padding-top:24px}.onboarding-shell h2{font-size:clamp(38px,4vw,56px)}.onboarding-shell>p{max-width:650px;margin-top:18px;color:var(--muted)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.form-grid .field.full{grid-column:1/-1}.field span em{font-size:9px;font-style:normal;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-left:5px}.field input[readonly]{background:#ece7d9;color:#555}
.account-layout{grid-template-columns:minmax(330px,.75fr) minmax(0,1.25fr);align-items:start}.account-layout>.profile-card{border-top:1px solid var(--ink);padding-top:22px}.profile-card h3{font-size:30px}.profile-card .form-grid{margin-top:18px}.account-facts{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:28px;border-top:1px solid var(--line)}.account-facts>div{padding:14px 0;border-bottom:1px solid var(--line);min-width:0}.account-facts>div:nth-child(odd){padding-right:12px}.account-facts>div:nth-child(even){padding-left:12px;border-left:1px solid var(--line)}.account-facts span,.account-row span,.request-data dt{display:block;font-family:var(--ui);font-size:9px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:4px}.account-facts strong{font-family:var(--ui);font-size:12px;font-weight:600;overflow-wrap:anywhere}.mono-value{font-family:var(--mono)!important;letter-spacing:.02em;overflow-wrap:anywhere}
.checkout-account{margin:22px 0;padding:17px 0;border-block:1px solid #c8bb97}.checkout-account .eyebrow{margin-bottom:12px}.account-row{padding:9px 0;border-bottom:1px solid #d8ccb0}.account-row:last-of-type{border-bottom:0}.account-row strong{display:block;font-size:12px;line-height:1.55;overflow-wrap:anywhere}.checkout-account .text-link{margin-top:14px}.checkout-gate{margin-top:25px;padding-top:18px;border-top:1px solid #c8bb97}.checkout-gate p{font-size:12px;color:var(--muted)}
.request-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px;margin:22px 0 0;border-top:1px solid var(--line)}.request-data>div{padding:12px 0;border-bottom:1px solid var(--line);min-width:0}.request-data dd{margin:0;font-size:12px;line-height:1.55;overflow-wrap:anywhere}
@media(max-width:950px){.footer-newsletter{grid-template-columns:1fr;gap:26px}.newsletter-form{max-width:700px}.onboarding-layout,.account-layout{grid-template-columns:1fr;gap:40px}.onboarding-layout>.onboarding-shell,.account-layout>.profile-card{border-top:1px solid var(--line);padding-top:28px}}
@media(max-width:600px){.footer-newsletter{width:calc(100% - 36px);margin-bottom:30px;padding-bottom:30px}.footer-newsletter h3{font-size:30px}.newsletter-form{grid-template-columns:1fr}.newsletter-form .check,.newsletter-form .btn,.newsletter-form .form-error{grid-column:1;grid-row:auto}.form-grid{grid-template-columns:1fr;gap:0}.form-grid .field.full{grid-column:auto}.account-facts,.request-data{grid-template-columns:1fr}.account-facts>div:nth-child(even){padding-left:0;border-left:0}.account-facts>div:nth-child(odd){padding-right:0}.onboarding-layout{gap:30px}.onboarding-layout .library-card{max-width:330px;margin:auto}.profile-card h3{font-size:27px}}

/* ============================================================
   Craft floor — browser surfaces the design must own
   (Impeccable craft-floor.md: selection, caret, scrollbar,
   focus ring, underline offset, tabular figures)
   ============================================================ */
::selection{background:var(--accent);color:var(--ink)}
.site-header ::selection,.hero ::selection,.metric ::selection,footer ::selection{background:var(--accent);color:var(--ink)}
input,textarea,select{caret-color:var(--accent-ink)}
html{scrollbar-color:var(--scrollbar-thumb) var(--surface-canvas);scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
*::-webkit-scrollbar{width:12px;height:12px}
*::-webkit-scrollbar-track{background:var(--surface-canvas)}
*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border:3px solid var(--surface-canvas)}
*::-webkit-scrollbar-thumb:hover{background:var(--accent-ink)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.site-header :focus-visible,.hero :focus-visible,.metric :focus-visible,footer :focus-visible,.library-card :focus-visible{outline-color:var(--focus-ring-inverse)}
/* Tabular figures wherever numbers are compared down a column */
.count,.metric-number,.card-id,.mono-value,.isbn,.store-index,.collection-tally strong,.filter-link span,.author-book-count,.shelf-count{font-variant-numeric:tabular-nums}
/* Orphan control on display type */
h1,h2,h3,.hero h1,.shelf-title{text-wrap:balance}
p,.detail-summary,.shelf-blurb{text-wrap:pretty}
/* iOS Safari force-zooms focused inputs below 16px — pin the control floor */
input,select,textarea{font-size:max(16px,1rem)}

/* ============================================================
   Curated shelves · bookstore records · freedom-to-read
   Layout note: the shelf index is an alternating editorial list,
   not a row of equal cards (craft-floor: "same-size cards as the
   page structure" is the lazy container).
   ============================================================ */
.shelf-index{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2xl)}
.shelf-row{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:var(--space-xl);align-items:center}
.shelf-row:nth-child(even) .shelf-visual{order:2}
.shelf-row:nth-child(even){grid-template-columns:minmax(0,1fr) minmax(0,420px)}
.shelf-visual{display:block;text-decoration:none}
.spine-stack{display:flex;padding-block:var(--space-md);perspective:1200px;isolation:isolate}
/* Ascending fan: each card sits on top of the one before it, so the front
   jacket is always fully legible and the ones behind read as layered
   rather than as truncated text. */
.spine-slot{width:44%;flex:none;z-index:calc(var(--i) + 1);transform-origin:60% 100%;transform:rotate(calc((var(--i) - 1) * 3deg)) translateY(calc(var(--i) * -5px));transition:transform var(--dur-standard) var(--ease-out)}
.spine-slot:not(:first-child){margin-left:-16%}
.spine-slot .jacket{box-shadow:-6px 10px 26px rgba(17,19,15,.28)}
/* The one authored motion moment on these pages: the stack fans from an
   already-visible default, so nothing depends on JS or motion to be readable. */
.shelf-row:hover .spine-slot,.shelf-visual:focus-visible .spine-slot,.shelf-row:focus-within .spine-slot{transform:rotate(calc((var(--i) - 1) * 6.5deg)) translateY(calc(var(--i) * -11px)) translateX(calc((var(--i) - 1) * 16px))}
@media (prefers-reduced-motion:reduce){.spine-slot{transition:none}.shelf-row:hover .spine-slot,.shelf-visual:focus-visible .spine-slot,.shelf-row:focus-within .spine-slot{transform:rotate(calc((var(--i) - 1) * 3deg)) translateY(calc(var(--i) * -5px))}}
.shelf-copy{min-width:0}
.shelf-title{font-family:var(--display);font-size:clamp(30px,4vw,46px);line-height:1.04;letter-spacing:-.02em;margin:0 0 var(--space-sm)}
.shelf-title a{color:inherit;text-decoration:none}
.shelf-title a:hover{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:2px}
.shelf-blurb{max-width:64ch;margin:0 0 var(--space-md);color:var(--text-primary)}
.shelf-meta{display:flex;align-items:baseline;gap:var(--space-xs);margin-bottom:var(--space-md);font-family:var(--ui);font-size:13px;color:var(--text-secondary)}
.shelf-count{font-family:var(--display);font-size:34px;line-height:1;color:var(--text-primary)}
.shelf-hero{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:var(--space-xl);align-items:center;padding-block:var(--space-lg) var(--space-xl)}
.shelf-hero h1{font-family:var(--display);font-size:clamp(36px,6vw,68px);line-height:1.02;letter-spacing:-.025em;margin:0 0 var(--space-md)}
.shelf-lede{max-width:60ch;font-size:18px;line-height:1.6;margin:0 0 var(--space-lg)}
.shelf-facts{display:flex;flex-wrap:wrap;gap:var(--space-lg);margin:0 0 var(--space-lg)}
.shelf-facts dt{font-family:var(--ui);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-secondary);margin-bottom:var(--space-2xs)}
.shelf-facts dd{margin:0;font-family:var(--display);font-size:29px;line-height:1;font-variant-numeric:tabular-nums}
/* Bookstore record */
.store-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:var(--space-xl);padding-block:var(--space-md) var(--space-xl);align-items:start}
.store-detail-media{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--surface-sunk);border:1px solid var(--border-subtle)}
.store-detail-media img{width:100%;height:100%;object-fit:cover;display:block}
.store-detail-body h1{font-family:var(--display);font-size:clamp(32px,5vw,54px);line-height:1.04;letter-spacing:-.02em;margin:var(--space-xs) 0 var(--space-sm)}
.store-grid.compact{grid-template-columns:repeat(auto-fill,minmax(258px,1fr))}
.store-card h3 a{color:inherit;text-decoration:none}
.store-card h3 a:hover{text-decoration:underline;text-underline-offset:4px}
/* Freedom to read */
.measure-list{display:flex;flex-direction:column;gap:var(--space-md);margin-block:var(--space-lg)}
.measure{display:grid;grid-template-columns:minmax(0,168px) minmax(0,1fr);gap:var(--space-lg);align-items:start;padding:var(--space-md) 0;border-top:1px solid var(--border-subtle)}
.measure-value{font-family:var(--display);font-size:clamp(38px,5vw,60px);line-height:.95;letter-spacing:-.03em;font-variant-numeric:tabular-nums;color:var(--text-primary)}
.measure-body h3{margin:0 0 var(--space-2xs);font-family:var(--ui);font-size:17px}
.measure-period{font-family:var(--ui);font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-accent);margin-bottom:var(--space-xs)}
.measure-body p{margin:0 0 var(--space-xs);max-width:68ch}
.reading-lede{max-width:68ch;font-size:17px;line-height:1.65}
.pressure-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-md);margin-top:var(--space-lg)}
.pressure-card{display:flex;flex-direction:column;gap:var(--space-xs);padding:var(--space-md);min-height:44px;background:var(--surface-inverse);color:var(--text-on-inverse);text-decoration:none;transition:background var(--dur-micro) var(--ease-out)}
.pressure-card:hover{background:#1c1f18;text-decoration:none}
.pressure-count{font-family:var(--display);font-size:46px;line-height:1;font-variant-numeric:tabular-nums;color:var(--accent)}
.pressure-label{font-family:var(--ui);font-size:14px}
.pressure-card .text-link{color:var(--accent);margin-top:auto;padding-top:var(--space-xs)}
@media (max-width:900px){
 .shelf-row,.shelf-row:nth-child(even){grid-template-columns:minmax(0,1fr);gap:var(--space-md)}
 .shelf-row:nth-child(even) .shelf-visual{order:0}
 .shelf-visual{max-width:340px}
 .shelf-hero,.store-detail{grid-template-columns:minmax(0,1fr);gap:var(--space-md)}
 .measure{grid-template-columns:minmax(0,1fr);gap:var(--space-xs)}
 .shelf-index{gap:var(--space-xl)}
}
/* Boot state — the data bundle is large; never show a blank frame */
.boot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);min-height:60vh;text-align:center;color:var(--text-secondary)}
.boot p{margin:0}
.boot-note{font-size:13px;color:var(--text-secondary)}
.boot-mark{width:34px;height:44px;border:2px solid var(--accent-ink);background-image:linear-gradient(var(--surface-sunk),var(--surface-sunk)),linear-gradient(90deg,var(--accent-ink) 0 3px,transparent 3px);background-repeat:no-repeat;background-position:bottom left,top left;background-size:100% 12%,100% 100%;animation:boot-fill 1.4s var(--ease-out) infinite alternate}
@keyframes boot-fill{from{background-size:100% 12%,100% 100%}to{background-size:100% 88%,100% 100%}}
@media (prefers-reduced-motion:reduce){.boot-mark{animation:none;background-size:100% 50%,100% 100%}}
/* Standalone actions on the new pages reach the 44px touch target.
   Scoped deliberately: .text-link is also used inline mid-sentence
   elsewhere, where a min-height would break the text flow. */
.shelf-copy>.text-link,.store-detail-body .inline-actions .text-link,.pressure-card .text-link,.measure-body>.text-link,.shelf-index .text-link{min-height:44px;align-items:center}
.store-grid.compact .store-card>.text-link{min-height:44px;align-items:center}

/* ============================================================
   Type roles — Ojuju (display) · Archivo (chrome) · Literata (reading)
   Archivo carries a 62-125 width axis; Expanded is used only for the
   uppercase label voice, where the wide gesture reads as intent
   rather than as a stretched font.
   ============================================================ */
.eyebrow,.measure-period,.shelf-facts dt,.card-label,.card-tag,.filter-title,
.synopsis-label,.metadata dt,.request-data dt,.account-facts span,.store-format{
 font-family:var(--ui);font-stretch:117%;font-variation-settings:'wdth' 117}
/* Long-form reading gets the serif and a comfortable measure. */
.detail-summary,.shelf-blurb,.shelf-lede,.reading-lede,.author-hero p,.author-mini p,
.measure-body p,.report p,.faq-item p,.empty p,.store-detail-body .detail-summary,
.page-intro p,.prose p,.prose li{font-family:var(--reading)}
.detail-summary,.shelf-lede,.reading-lede,.page-intro p{font-size:18px;line-height:1.62;max-width:68ch}
.prose{font-size:19px;line-height:1.7}
.prose p{max-width:70ch}
/* Literata sets a touch large next to Archivo; optical size keeps small text tight. */
.measure-body p,.report p,.faq-item p,.author-mini p{font-size:16px;line-height:1.62}
/* Emerald is the affirmative/availability role — it never decorates. */
.availability.available{color:var(--emerald-dark);font-weight:600}
.store-status{color:var(--emerald-dark)}
.notice.gold strong{color:var(--gold-dark)}
/* Gold text sitting on the dark surfaces uses the brighter step. */
.site-header .brand-name,.hero .eyebrow,.metric a,.footer-newsletter .eyebrow,
.card-brand,.card-tag,.card-label,.pressure-count,.site-foot{color:var(--gold-bright)}
.utility{background:var(--gold);color:var(--ink)}

/* Accessibility statement page */
.a11y-features{display:grid;gap:var(--space-md);margin:var(--space-lg) 0 var(--space-xl)}
.a11y-features>div{display:grid;grid-template-columns:minmax(0,230px) minmax(0,1fr);gap:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--border-subtle)}
.a11y-features dt{font-family:var(--ui);font-weight:650;font-size:15px}
.a11y-features dd{margin:0;font-family:var(--reading);font-size:16px;line-height:1.6;color:var(--text-secondary)}
@media (max-width:700px){.a11y-features>div{grid-template-columns:minmax(0,1fr);gap:var(--space-2xs)}}


/* ============================================================
   v6 — bookshop map, generated shop previews, catalog
   skeletons, theme toggle, and a true dark theme.
   ============================================================ */
/* Generated bookshop preview (replaces the third-party screenshot service) */
.store-art{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;padding:16px;background:var(--sa-bg,#2A1E15);color:var(--sa-ink,#F4EEE6);text-align:left;isolation:isolate;text-decoration:none}
.store-art:hover{text-decoration:none}
.store-art:before{content:'';position:absolute;inset:0;background:radial-gradient(130% 120% at 88% -10%,rgba(255,255,255,.16),transparent 60%);z-index:-1}
.store-art:after{content:'';position:absolute;right:-32px;bottom:-46px;width:150px;height:150px;border:14px solid currentColor;border-radius:50%;opacity:.12;z-index:-1}
.store-art .store-art-mono{position:absolute;top:12px;left:15px;margin:0;font-family:var(--display);font-weight:650;font-size:32px;letter-spacing:-.02em;opacity:.9}
.store-art .store-art-name{font-family:var(--display);font-weight:600;font-size:19px;line-height:1.08;letter-spacing:-.01em}
.store-art .store-art-place{font-family:var(--ui);font-size:9px;letter-spacing:.16em;text-transform:uppercase;opacity:.82}
.store-art.store-art-big{padding:26px}
.store-art.store-art-big .store-art-name{font-size:clamp(26px,3.2vw,36px)}
.store-art.store-art-big .store-art-mono{font-size:54px;top:20px;left:24px}
.store-art.theme-1{--sa-bg:#5E1B27;--sa-ink:#F2E5CA}
.store-art.theme-2{--sa-bg:#14100D;--sa-ink:#E0B44E}
.store-art.theme-3{--sa-bg:#0C5D42;--sa-ink:#F4EEE6}
.store-art.theme-4{--sa-bg:#2A1E15;--sa-ink:#F0D886}
.store-art.theme-5{--sa-bg:#4A2118;--sa-ink:#F0D886}
.store-art.theme-6{--sa-bg:#0B3D2E;--sa-ink:#E9E0D2}
.store-art.theme-7{--sa-bg:#6B5442;--sa-ink:#FAF6EF}
.store-art.theme-8{--sa-bg:#7A5714;--sa-ink:#FAF6EF}
/* Directory view switch */
.store-view-switch{display:flex;border:1px solid var(--border-subtle);flex-shrink:0}
.store-view-switch a{display:inline-flex;align-items:center;gap:6px;padding:10px 15px;font-family:var(--ui);font-size:12px;white-space:nowrap;color:inherit}
.store-view-switch a+a{border-left:1px solid var(--border-subtle)}
.store-view-switch a:hover{text-decoration:none;background:var(--surface-sunk)}
.store-view-switch a.active{background:var(--surface-inverse);color:var(--text-on-inverse)}
/* Bookshop map */
.bookshop-map{height:min(70vh,640px);width:100%;border:1px solid var(--border-subtle);background:var(--surface-sunk)}
.bookshop-map .leaflet-container{font-family:var(--ui)}
.map-pop{min-width:150px}
.map-pop strong{display:block;font-family:var(--display);font-size:17px;line-height:1.1;color:#14100D}
.map-pop span{display:block;font-family:var(--ui);font-size:11px;letter-spacing:.05em;color:#5E5142;margin:3px 0 7px}
.map-pop em{display:block;font-size:10px;color:#7A5714;margin:0 0 7px;font-style:normal}
.map-pop a{font-family:var(--ui);font-size:12px;font-weight:600;color:#0B5A40;border-bottom:1px solid #0B5A40}
/* Catalog skeletons */
:root{--sk-a:#e7dece;--sk-b:#f2ebde}
.skeleton-wrap{padding-top:20px}
.skeleton-line{height:14px;border-radius:3px;background:linear-gradient(90deg,var(--sk-a) 25%,var(--sk-b) 37%,var(--sk-a) 63%);background-size:400% 100%;animation:sk 1.4s ease infinite;margin:8px 0}
.skeleton-title{height:44px;width:min(320px,60%);margin-bottom:28px}
.skeleton-card{display:flex;flex-direction:column}
.skeleton-jacket{aspect-ratio:2/3;background:linear-gradient(90deg,var(--sk-a) 25%,var(--sk-b) 37%,var(--sk-a) 63%);background-size:400% 100%;animation:sk 1.4s ease infinite;margin-bottom:14px}
.skeleton-line.short{width:60%}
@keyframes sk{0%{background-position:100% 0}100%{background-position:0 0}}
@media(prefers-reduced-motion:reduce){.skeleton-line,.skeleton-jacket{animation:none}}
/* ---- True dark theme ---- */
[data-theme="dark"]{--white:#241C15;--sunk:#0F0B08;--line:#3A2E23;--muted:#B7A992;--bark:#8A6E55;--gold-dark:#E0B44E;
--surface-canvas:#17120E;--surface-raised:#241C15;--surface-sunk:#0F0B08;--surface-inverse:#0A0705;
--text-primary:#F4EEE6;--text-secondary:#B7A992;--text-accent:#E0B44E;--text-on-inverse:#F4EEE6;
--border-subtle:#3A2E23;--border-strong:#8A6E55;--accent-ink:#E0B44E;--focus-ring:#E0B44E;
--scrollbar-thumb:#5A4835;--sk-a:#241C15;--sk-b:#33281f}
[data-theme="dark"] body{background:var(--surface-canvas);color:var(--text-primary)}
[data-theme="dark"] .search-form,[data-theme="dark"] .search-form input{color:var(--text-primary)}
[data-theme="dark"] .search-form input::placeholder{color:#8f8271}
[data-theme="dark"] .notice{background:#221A13;border-color:var(--border-subtle);color:var(--text-primary)}
[data-theme="dark"] .notice.gold{background:#2A2113;border-color:#7A5714}
[data-theme="dark"] .filter-link.active,[data-theme="dark"] .filter-link:hover{background:#2E251C}
[data-theme="dark"] .checkout-summary{background:#221A13;border-color:var(--border-subtle)}
[data-theme="dark"] .summary-line{border-color:var(--border-subtle)}
[data-theme="dark"] .checkout-account,[data-theme="dark"] .account-row,[data-theme="dark"] .checkout-gate{border-color:var(--border-subtle)}
[data-theme="dark"] .research-aside{background:#201911}
[data-theme="dark"] .research-aside p{color:var(--text-secondary)}
[data-theme="dark"] .report summary{color:var(--text-accent)}
[data-theme="dark"] .store-card{background:var(--surface-raised);border-color:var(--border-subtle)}
[data-theme="dark"] .field input,[data-theme="dark"] .field select,[data-theme="dark"] .field textarea{background:#1E1710;border-color:var(--border-strong);color:var(--text-primary)}
[data-theme="dark"] .field input[readonly]{background:#2A2119;color:#b7a992}
[data-theme="dark"] .results-top select,[data-theme="dark"] .field select{color:var(--text-primary)}
[data-theme="dark"] dialog{background:var(--surface-raised);color:var(--text-primary);border-color:var(--border-subtle)}
[data-theme="dark"] .newsletter-form>input[type=email]{background:#1E1710;color:var(--text-primary)}
[data-theme="dark"] .storage-warning{background:#3a2018;color:#f3c9b6}
[data-theme="dark"] .status{background:#2E251C;color:var(--text-accent)}
[data-theme="dark"] .detail-summary{color:var(--text-primary)}
[data-theme="dark"] .filter-panel,[data-theme="dark"] .onboarding-layout>.onboarding-shell,[data-theme="dark"] .account-layout>.profile-card{border-color:var(--border-strong)}
[data-theme="dark"] .tabs .active{border-color:var(--text-primary)}
[data-theme="dark"] .btn{border-color:var(--border-strong)}
[data-theme="dark"] .btn.outline{color:var(--text-primary);border-color:var(--gold)}
[data-theme="dark"] .page-button.active,[data-theme="dark"] .alphabet .active,[data-theme="dark"] .view-switch button.active,[data-theme="dark"] .store-view-switch a.active,[data-theme="dark"] .pill.selected{background:var(--gold);color:#14100D;border-color:var(--gold)}
[data-theme="dark"] .empty{border-color:var(--border-subtle)}
[data-theme="dark"] .site-header{border-bottom-color:#3a2e23}
