/* Frey Enrique Bookshop · v2 redesign
   Type: Literata (display, optical sizes), Hanken Grotesk (body), IBM Plex Mono (labels). Self-hosted, OFL.
   Colour: one accent (brand green) on a cool sage paper; covers carry the colour. Light and dark. */
@font-face{font-family:"Literata";font-style:normal;font-weight:200 900;font-display:swap;src:url(assets/brand/fonts/literata-latin-opsz-normal.woff2) format("woff2-variations"),url(assets/brand/fonts/literata-latin-opsz-normal.woff2) format("woff2")}
@font-face{font-family:"Literata";font-style:italic;font-weight:200 900;font-display:swap;src:url(assets/brand/fonts/literata-latin-opsz-italic.woff2) format("woff2-variations"),url(assets/brand/fonts/literata-latin-opsz-italic.woff2) format("woff2")}
@font-face{font-family:"Hanken Grotesk";font-style:normal;font-weight:100 900;font-display:swap;src:url(assets/brand/fonts/hanken-grotesk-latin-wght-normal.woff2) format("woff2-variations"),url(assets/brand/fonts/hanken-grotesk-latin-wght-normal.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url(assets/brand/fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}

:root{
  --paper:#eef0ea;--raised:#f7f8f3;--field:#fbfcf8;--ink:#16302a;--body-ink:#2c433b;--muted:#55635b;--line:#d2d8cd;--line-strong:#a9b5a8;
  --accent:#173e35;--on-accent:#f3f5ef;--shadow:23 62 53;
  --t-travel:#e3e6df;--t-cooking:#ecdfd4;--t-plants:#dce5d4;--t-fiction:#dedde4;--shelf:#c3ccb7;--arch-a:#f6f8f2;--arch-b:#d7dece;
  --display:"Literata",Georgia,"Times New Roman",serif;
  --sans:"Hanken Grotesk",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ease-out:cubic-bezier(.23,1,.32,1);--ease-in-out:cubic-bezier(.77,0,.175,1);
  --radius-l:22px;--radius-m:14px;--radius-s:10px;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --paper:#0f1714;--raised:#16201c;--field:#121b17;--ink:#e4eae3;--body-ink:#c9d3cb;--muted:#9aa89f;--line:#26332d;--line-strong:#3f5048;
  --accent:#9cc7ad;--on-accent:#0f1714;--shadow:0 0 0;
  --t-travel:#1a221e;--t-cooking:#241c18;--t-plants:#17221a;--t-fiction:#1b1c24;--shelf:#2c3a33;--arch-a:#1a2420;--arch-b:#131c18;
  color-scheme:dark}}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px}
button,input,select{font:inherit;color:inherit}
button,a,input,select,summary{-webkit-tap-highlight-color:transparent}
button,summary{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}
img{max-width:100%;display:block}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-family:var(--display);font-weight:400;text-wrap:balance;font-optical-sizing:auto}
p{text-wrap:pretty}
h1{font-size:clamp(42px,5.8vw,84px);line-height:1;letter-spacing:-.032em;font-weight:360}
h1 em{font-style:italic;font-weight:300;color:var(--accent)}
h2{font-size:clamp(32px,3.4vw,50px);line-height:1.06;letter-spacing:-.024em;font-weight:380}
h3{font-size:24px;line-height:1.2;letter-spacing:-.01em}
main:focus{outline:none}
.wrap{max-width:1360px;margin-inline:auto;padding-inline:clamp(16px,4.6vw,64px)}
.skip{position:absolute;top:-80px;left:16px;background:var(--accent);color:var(--on-accent);padding:10px 16px;border-radius:999px;z-index:10;font-weight:500}
.skip:focus{top:12px}
.kicker{font-family:var(--mono);font-size:12.5px;line-height:1.5;letter-spacing:.01em;color:var(--muted)}

/* Header */
.header{min-height:84px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}
.header .brand{display:inline-flex;align-items:center;gap:12px;flex-shrink:0;text-decoration:none}
.header .brand-icon{width:44px;height:44px;flex:none;border-radius:11px}
.brand{font-family:var(--display);font-size:22px;font-weight:450;line-height:1.1;letter-spacing:-.015em}
.header .brand-wordmark{font:inherit;letter-spacing:inherit;margin:0}
.header .brand-wordmark small{display:block;font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:.16em;margin-top:4px;color:var(--muted)}
.header nav{display:flex;align-items:center;gap:4px;font-size:14.5px;font-weight:500}
.header nav:not(.languages) a{padding:8px 14px;border-radius:999px;transition:background-color 180ms ease}
.header nav a:hover{text-decoration:none}
.header .languages{gap:2px;padding:3px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:12px;font-weight:400}
.languages a{display:grid;place-items:center;min-width:40px;min-height:32px;padding:0 10px;border-radius:999px;color:var(--muted);transition:background-color 180ms ease,color 180ms ease,scale 140ms var(--ease-out)}
.languages a[aria-current]{background:var(--accent);color:var(--on-accent)}
.languages span{display:none}
@media (hover:hover) and (pointer:fine){.header nav:not(.languages) a:hover{background:color-mix(in srgb,var(--ink) 7%,transparent)}.languages a:not([aria-current]):hover{color:var(--ink)}}

/* Buttons and links */
.button{display:inline-flex;align-items:center;gap:14px;min-height:48px;padding:0 24px;border-radius:999px;font-size:15px;font-weight:500;transition:scale 160ms var(--ease-out),background-color 200ms ease}
.button:hover{text-decoration:none}
.primary{background:var(--accent);color:var(--on-accent);margin-top:34px}
.primary span{display:inline-block;transition:translate 240ms var(--ease-out)}
.button:active,.languages a:active,.category-filters button:active,.feature-edition a:active,.format-link:active,.feature-controls button:active:not(:disabled){scale:.97}
.text-link{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;font-size:15px;font-weight:500}
.text-link:hover{text-decoration-thickness:2px}
@media (hover:hover) and (pointer:fine){.primary:hover span{translate:0 3px}.primary:hover{background:color-mix(in srgb,var(--accent) 88%,var(--ink))}}

/* Hero */
.hero{display:grid;grid-template-columns:minmax(0,1.04fr) minmax(0,1fr);gap:clamp(32px,5vw,88px);align-items:center;padding-top:clamp(48px,7vw,104px);padding-bottom:clamp(56px,8vw,120px)}
.hero h1{margin:20px 0 26px}
.intro{font-size:clamp(17px,1.35vw,19px);max-width:42ch;color:var(--muted);line-height:1.65}
.hero-foot{font-family:var(--mono);font-size:12px;margin-top:22px;color:var(--muted)}
.hero-shelf{position:relative;aspect-ratio:1.18;max-width:100%;background:radial-gradient(120% 95% at 50% 8%,var(--arch-a),var(--arch-b));border-radius:999px 999px 18px 18px;isolation:isolate}
.hero-shelf:after{content:'';position:absolute;left:-4%;right:-4%;bottom:12%;height:12px;border-radius:3px;background:var(--shelf);box-shadow:0 22px 28px rgb(var(--shadow)/.16);z-index:-1}
.hero-book{position:absolute;bottom:calc(12% + 10px);width:33%;filter:drop-shadow(6px 14px 12px rgb(var(--shadow)/.28));transform-origin:50% 100%;transition:translate 320ms var(--ease-out);animation:book-drop 1100ms var(--ease-out) 380ms backwards}
.hero-book img{width:100%;height:auto;border-radius:2px 4px 4px 2px}
.hero-book:hover{text-decoration:none}
.hb0{left:4%;rotate:-8deg;z-index:1;animation-delay:470ms}
.hb1{left:33.5%;bottom:calc(12% + 16px);z-index:3}
.hb2{right:2%;rotate:8deg;z-index:2;animation-delay:560ms}
@keyframes book-drop{from{opacity:0;translate:0 44px;scale:.94}55%{opacity:1}}
@media (hover:hover) and (pointer:fine){.hero-book:hover{translate:0 -12px}}
.shelf-caption{position:absolute;bottom:3.5%;left:0;right:0;text-align:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--muted)}

/* Featured */
.featured{padding-top:clamp(48px,6vw,88px);padding-bottom:clamp(48px,6vw,88px);border-top:1px solid var(--line)}
.feature-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:30px}
.feature-heading h2{margin-top:10px}
.feature-rail{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;padding-bottom:12px}
.feature-card{flex:0 0 100%;min-width:0;scroll-snap-align:start;background:var(--raised);border:1px solid var(--line);border-radius:var(--radius-l);padding:clamp(20px,3vw,40px);display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:28px clamp(28px,4vw,56px);align-items:center}
.feature-book{display:grid;grid-template-columns:minmax(96px,150px) minmax(0,1fr);align-items:center;gap:26px}
.feature-cover img{width:100%;height:auto;border-radius:2px 4px 4px 2px;box-shadow:0 1px 2px rgb(var(--shadow)/.15),0 18px 28px -14px rgb(var(--shadow)/.5);transition:translate 260ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){.feature-cover:hover img{translate:0 -6px}}
.feature-copy h3{font-size:clamp(28px,2.6vw,38px);line-height:1.08;letter-spacing:-.02em;margin:10px 0 14px}
.feature-copy>p:not(.kicker){font-size:15.5px;color:var(--muted);margin-bottom:18px;max-width:40ch}
.feature-video{margin:0;min-width:0}
.video-frame{position:relative;border-radius:var(--radius-m);overflow:hidden;background:#131a17;box-shadow:0 24px 40px -28px rgb(var(--shadow)/.6)}
.feature-video video{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:contain;background:#131a17}
.feature-video figcaption{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:12px}
.video-toggle{position:absolute;inset:0 0 64px;border:0;padding:0;background:transparent;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;touch-action:auto}
.video-toggle-icon{position:absolute;top:calc(50% + 32px);transform:translateY(-50%);display:grid;place-items:center;width:60px;height:60px;border:1px solid rgb(255 255 255/.45);border-radius:50%;background:rgb(15 23 20/.55);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 4px 18px rgb(0 0 0/.35);transition:opacity 180ms ease,background-color 180ms ease,scale 160ms var(--ease-out);pointer-events:none}
.video-toggle-icon:before{content:'';width:0;height:0;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:14px solid #f3f5ef;margin-left:4px}
.video-toggle:hover .video-toggle-icon{background:rgb(23 62 53/.85)}
.video-toggle:active .video-toggle-icon{scale:.94}
.video-toggle:focus-visible{outline:2px solid #f3f5ef;outline-offset:-6px;border-radius:var(--radius-m)}
.is-playing .video-toggle-icon{opacity:0}
.is-playing .video-toggle:hover .video-toggle-icon,.is-playing .video-toggle:focus-visible .video-toggle-icon{opacity:1}
.is-playing .video-toggle-icon:before{width:14px;height:18px;border:0;border-left:5px solid #f3f5ef;border-right:5px solid #f3f5ef;margin:0}
@media (hover:none){.is-playing .video-toggle:hover .video-toggle-icon{opacity:0}.is-playing .video-toggle:focus-visible .video-toggle-icon{opacity:1}}
.feature-buy{grid-column:1/-1;border-top:1px solid var(--line);padding-top:22px}
.feature-editions{display:grid;grid-template-columns:1fr 1fr;gap:16px 32px}
.feature-edition{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.feature-edition>span{font-size:14px;font-weight:600}
.feature-edition>div{display:flex;gap:8px}
.feature-edition a{display:inline-flex;align-items:center;gap:12px;min-height:44px;padding:0 18px;border:1px solid var(--line-strong);border-radius:999px;background:var(--paper);font-size:14px;font-weight:500;transition:border-color 180ms ease,background-color 180ms ease,scale 160ms var(--ease-out)}
.feature-edition a:hover{text-decoration:none}
@media (hover:hover) and (pointer:fine){.feature-edition a:hover{border-color:var(--accent);background:var(--field)}}
.feature-buy>.small{margin-top:16px}
.feature-controls{display:flex;align-items:center;gap:12px}
.feature-controls button{width:44px;height:44px;border:1px solid var(--line-strong);border-radius:50%;background:transparent;font-size:18px;transition:border-color 180ms ease,scale 160ms var(--ease-out)}
.feature-controls button:disabled{opacity:.35;cursor:default}
.feature-position{font-family:var(--mono);font-size:12px;min-width:40px;text-align:center;font-variant-numeric:tabular-nums}
.small{font-size:13px;color:var(--muted);line-height:1.6}

/* Catalog */
.catalog{border-top:1px solid var(--line);padding-top:clamp(48px,6vw,88px);padding-bottom:clamp(64px,8vw,112px)}
.section-heading{display:flex;justify-content:space-between;gap:32px;align-items:end;margin-bottom:36px}
.section-heading h2{margin-top:10px}
.section-heading>p{max-width:30ch;font-size:14px;color:var(--muted)}
.category-filters{position:relative;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-top:1px solid var(--line)}
.category-filters button{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:44px;padding:16px 16px 15px 0;border:0;border-bottom:1px solid var(--line);background:none;text-align:left;transition:scale 140ms var(--ease-out)}
.filter-count{font-family:var(--mono);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.filter-label{font-family:var(--display);font-size:clamp(17px,1.6vw,22px);line-height:1.2;letter-spacing:-.01em;color:var(--muted);transition:color 180ms ease}
.category-filters button:after{content:'';position:absolute;left:0;right:16px;bottom:-1px;height:2px;background:var(--accent);scale:0 1;transform-origin:left;transition:scale 280ms var(--ease-out)}
.category-filters button[aria-pressed=true] .filter-label{color:var(--ink)}
.category-filters button[aria-pressed=true]:after{scale:1 1}
@media (hover:hover) and (pointer:fine){.category-filters button:hover .filter-label{color:var(--ink)}}
.search-row{display:flex;align-items:end;gap:14px;padding-top:24px}
.search-row label{display:flex;flex-direction:column;gap:7px;font-size:13px;font-weight:500;color:var(--muted)}
.search{flex:1}
input,select{background:var(--field);border:1px solid var(--line-strong);border-radius:var(--radius-s);min-height:48px;padding:0 14px;color:var(--ink);font-size:16px;transition:border-color 160ms ease,box-shadow 160ms ease}
input:focus-visible,select:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent)}
input{width:100%}
input::placeholder{color:color-mix(in srgb,var(--muted) 75%,transparent)}
select{min-width:190px;padding-right:36px}
.reset{border:0;background:none;min-height:48px;padding:0 4px;color:var(--muted);font-size:14px;font-weight:500;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:5px;transition:color 160ms ease,opacity 160ms ease}
.reset[aria-disabled=true]{opacity:.4;cursor:default}
@media (hover:hover) and (pointer:fine){.reset:not([aria-disabled=true]):hover{color:var(--ink)}}
.results{font-family:var(--mono);font-size:12.5px;color:var(--muted);margin:28px 0 24px}
#count{color:var(--ink);font-variant-numeric:tabular-nums}
.book-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(196px,1fr));gap:48px 28px}
.book-card{display:flex;flex-direction:column;min-width:0}
.book-card.is-entering{animation:rise 280ms var(--ease-out) backwards;animation-delay:calc(var(--i,0) * 24ms);transition:none}
@keyframes rise{from{opacity:0;translate:0 10px}}
.cover-stage{display:flex;aspect-ratio:4/5;align-items:center;justify-content:center;padding:13%;border-radius:var(--radius-m);background:var(--t-travel);overflow:hidden}
.cover-stage.cooking{background:var(--t-cooking)}.cover-stage.plants{background:var(--t-plants)}.cover-stage.fiction{background:var(--t-fiction)}
.cover-stage img{width:auto;height:100%;max-width:100%;object-fit:contain;border-radius:2px 4px 4px 2px;box-shadow:0 1px 2px rgb(var(--shadow)/.16),0 16px 24px -12px rgb(var(--shadow)/.48);transition:translate 300ms var(--ease-out),rotate 300ms var(--ease-out),scale 160ms var(--ease-out),opacity 500ms ease}
.cover-stage:hover{text-decoration:none}
@media (hover:hover) and (pointer:fine){.book-card:hover .cover-stage img{translate:0 -8px;rotate:-1.2deg}}
.cover-stage:active img{scale:.98}
.book-card h3{font-size:19px;line-height:1.25;margin-top:16px}
.book-card h3 a:hover{text-decoration-thickness:1px}
.edition{display:flex;flex-direction:column;font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:6px;line-height:1.55}
.empty{padding:40px 0 8px;font-family:var(--display);font-size:22px;line-height:1.4;max-width:34ch;color:var(--body-ink)}

/* Author */
.author-section{background:var(--raised);border-block:1px solid var(--line);padding:clamp(56px,8vw,112px) 0}
.author-grid{display:grid;grid-template-columns:minmax(0,280px) minmax(0,640px);justify-content:center;gap:clamp(36px,7vw,96px);align-items:start}
.portrait img{width:100%;max-width:280px;aspect-ratio:4/5;height:auto;object-fit:cover;object-position:50% 22%;border-radius:var(--radius-l);background:#fff;box-shadow:14px 14px 0 color-mix(in srgb,var(--accent) 16%,var(--paper))}
.author-grid h2{margin:12px 0 26px}
.author-grid p:not(.kicker){margin-bottom:16px;color:var(--body-ink);font-size:17px;max-width:62ch}
.author-grid h2+p{font-family:var(--display);font-size:21px!important;line-height:1.5;color:var(--ink)!important}
details{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.author-grid details{margin:24px 0 28px;font-size:16px}
summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;font-weight:500}
summary::-webkit-details-marker{display:none}
summary:after{content:'+';font-family:var(--mono);font-size:18px;color:var(--muted);transition:rotate 220ms var(--ease-out)}
details[open] summary:after{rotate:45deg}
.author-grid details p{margin-top:4px}

/* Detail pages */
.detail{padding-top:28px;padding-bottom:clamp(56px,7vw,96px)}
.back{display:inline-flex;align-items:center;font-size:14px;font-weight:500;color:var(--muted);padding:12px 0;margin-bottom:24px;transition:color 160ms ease}
.back:hover{color:var(--ink)}
.detail-grid{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1fr);gap:clamp(36px,6vw,88px);align-items:start}
.detail-cover{display:flex;justify-content:center;padding:clamp(32px,5vw,64px);border-radius:var(--radius-l);background:var(--t-travel)}
.detail-cover.cooking{background:var(--t-cooking)}.detail-cover.plants{background:var(--t-plants)}.detail-cover.fiction{background:var(--t-fiction)}
.detail-cover img{max-width:340px;width:100%;height:auto;border-radius:2px 5px 5px 2px;box-shadow:0 1px 2px rgb(var(--shadow)/.16),0 28px 40px -20px rgb(var(--shadow)/.55)}
.detail-copy{padding-top:8px}
.detail-copy h1{font-size:clamp(38px,4vw,60px);margin:14px 0 14px;letter-spacing:-.028em}
.subtitle{font-family:var(--display);font-style:italic;font-size:clamp(19px,1.6vw,22px);font-weight:350;color:var(--muted);line-height:1.45;max-width:36ch}
.byline{font-family:var(--mono);font-size:13px;margin:16px 0 28px;color:var(--muted)}
.detail-copy>p:not(.kicker):not(.subtitle):not(.byline):not(.small){margin-bottom:16px;max-width:60ch;color:var(--body-ink);font-size:17px}
.detail-copy>.small{margin-bottom:12px}
.buy-section{margin:34px 0 30px}
.buy-section h2{font-size:24px;margin-bottom:14px;letter-spacing:-.01em}
.format-link{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:16px 20px;margin:10px 0;border:1px solid var(--line-strong);border-radius:var(--radius-m);background:var(--raised);font-size:14px;font-weight:500;transition:border-color 180ms ease,background-color 180ms ease,scale 160ms var(--ease-out)}
.format-link:hover{text-decoration:none}
@media (hover:hover) and (pointer:fine){.format-link:hover{border-color:var(--accent);background:var(--field)}}
.format-link strong{display:block;font-size:17px;font-weight:600}
.format-link small{display:block;font-family:var(--mono);color:var(--muted);font-size:11.5px;font-weight:400;margin-top:3px}
.sample{display:inline-block;margin-top:22px;margin-bottom:10px}
.art-section{padding-top:clamp(48px,6vw,80px);padding-bottom:clamp(56px,7vw,96px);border-top:1px solid var(--line)}
.art-section h2{margin:10px 0 14px}
.art-section>p{max-width:60ch;color:var(--body-ink)}
.art-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:32px}
.art-grid img{height:auto;border-radius:var(--radius-m)}

/* Footer */
footer{display:grid;grid-template-columns:1.5fr 1fr auto;gap:40px;padding-top:52px!important;padding-bottom:56px!important;font-size:14px;align-items:start}
footer .brand{font-size:24px}
footer p{margin:12px 0;color:var(--muted);max-width:34ch}
footer details{max-width:380px}
footer details p{max-width:none}
footer small{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
footer>a{font-weight:500;padding:14px 0}
[hidden]{display:none!important}

/* Responsive */
@media(max-width:1100px){
  .hero{gap:40px}
  .feature-card{grid-template-columns:1fr 1fr;gap:24px}
  .feature-book{grid-template-columns:110px minmax(0,1fr);gap:18px}
  .feature-edition{align-items:flex-start;flex-direction:column;gap:10px}
  .category-filters{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
  .header{height:auto;min-height:0;flex-wrap:wrap;gap:12px 16px;padding-top:16px;padding-bottom:12px}
  .header .brand-icon{width:40px;height:40px}
  .brand{font-size:20px}
  .header>nav:not(.languages){order:3;width:100%;justify-content:flex-start;margin-left:-14px;font-size:14px}
  .hero{grid-template-columns:1fr;padding-top:36px;padding-bottom:48px;gap:36px}
  .hero h1{margin:16px 0 20px}
  .primary{margin-top:28px}
  .hero-shelf{max-width:440px;width:100%;margin:0 auto}
  .hero-shelf:after{left:0;right:0}
  .hero-book{width:30%}
  .hb0{left:6%}.hb1{left:35%}.hb2{right:5%}
  .feature-heading{align-items:center}
  .feature-card{display:flex;flex-direction:column;align-items:stretch;padding:20px;gap:24px}
  .feature-book{grid-template-columns:96px minmax(0,1fr);gap:18px}
  .feature-editions{grid-template-columns:1fr;gap:18px}
  .feature-edition{flex-direction:row;align-items:center}
  .feature-rail{gap:16px}
  .section-heading{display:block}
  .section-heading>p{max-width:none;margin-top:14px}
  .category-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .category-filters li:first-child,.category-filters button:first-child{grid-column:1/-1}
  .search-row{flex-wrap:wrap;gap:12px}
  .search{flex-basis:100%}
  .search-row>label:not(.search){flex:1}
  select{min-width:0;width:100%}
  .book-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 14px}
  .book-card h3{font-size:17px;margin-top:12px}
  .edition{font-size:11.5px}
  .author-grid{grid-template-columns:1fr;gap:40px}
  .portrait img{max-width:220px}
  .detail{padding-top:12px}
  .back{margin-bottom:12px}
  .detail-grid{grid-template-columns:1fr;gap:28px}
  .detail-cover{padding:32px}
  .detail-cover img{max-width:240px}
  .art-grid{gap:10px}
  footer{grid-template-columns:1fr;gap:24px}
}
@media(max-width:420px){
  .feature-book{grid-template-columns:84px minmax(0,1fr);gap:16px}
  .feature-edition{flex-direction:column;align-items:flex-start}
  .feature-edition>div{width:100%}
  .feature-edition a{flex:1;justify-content:space-between}
  .feature-heading:has(.feature-controls:not([hidden])){flex-wrap:wrap}
  .video-toggle-icon{width:48px;height:48px}
  .feature-video video{min-height:144px}
  .format-link{padding:14px 16px}
  .format-link strong{font-size:15px}
}
@media(max-width:350px){
  .header .brand{gap:8px}
  .header .brand-icon{width:34px;height:34px}
  .brand{font-size:18px}
  .format-link{align-items:flex-start;flex-direction:column}
  .art-grid{grid-template-columns:1fr}
}
/* Motion. Page loads and first views get the expressive moments; things people repeat stay quick.
   Hero: headline lines rise out of a mask, copy follows, then the books drop onto the shelf. */
.hero h1 .line{display:block;overflow:clip;padding:0 .06em .14em;margin:0 -.06em -.14em}
.hero h1 .line>span{display:block;animation:line-up 1000ms var(--ease-out) 80ms backwards}
.hero h1 .line+.line>span{animation-delay:190ms}
@keyframes line-up{from{translate:0 118%}}
.hero-copy>:not(h1){animation:rise-in 900ms var(--ease-out) backwards}
.hero-copy>.intro{animation-delay:280ms}.hero-copy>.primary{animation-delay:360ms}.hero-copy>.hero-foot{animation-delay:440ms}
.hero-shelf{animation:arch-in 1200ms var(--ease-out) 120ms backwards}
@keyframes arch-in{from{opacity:0;scale:.96}}
@keyframes rise-in{from{opacity:0;translate:0 16px}}

/* Scroll reveal, once per element. site.js adds .reveal-ready, so nothing hides without JavaScript. */
.reveal-ready :is(.feature-heading,.feature-card,.section-heading,.filter-panel,.results,.book-card,.author-grid>*,.art-section>*,footer>*):not([data-visible]){opacity:0;translate:0 28px}
:is(.feature-heading,.feature-card,.section-heading,.filter-panel,.results,.book-card,.author-grid>*,.art-section>*,footer>*)[data-visible]{transition:opacity 700ms var(--ease-out),translate 900ms var(--ease-out)}

/* Detail pages: the copy steps in while the cover flies over from the grid. */
.detail-copy>*{animation:rise-in 700ms var(--ease-out) backwards}
.detail-copy>:nth-child(2){animation-delay:50ms}.detail-copy>:nth-child(3){animation-delay:100ms}.detail-copy>:nth-child(4){animation-delay:150ms}.detail-copy>:nth-child(5){animation-delay:200ms}.detail-copy>:nth-child(6){animation-delay:250ms}.detail-copy>:nth-child(n+7){animation-delay:300ms}
.detail-cover{animation:arch-in 800ms var(--ease-out) backwards}
.back{animation:rise-in 600ms var(--ease-out) backwards}

/* Cross-page transitions: a short crossfade, and the clicked cover morphs into the detail cover. */
@view-transition{navigation:auto}
::view-transition-group(book-cover){animation-duration:460ms;animation-timing-function:cubic-bezier(.77,0,.175,1)}
::view-transition-old(book-cover),::view-transition-new(book-cover){animation-duration:460ms;animation-timing-function:cubic-bezier(.77,0,.175,1)}
::view-transition-group(root),::view-transition-old(root),::view-transition-new(root){animation-duration:260ms}

/* Filters: one indicator slides between categories; the count ticks; the empty note eases in. */
.filter-indicator{position:absolute;left:0;top:0;width:100px;height:2px;background:var(--accent);transform-origin:0 0;pointer-events:none;transition:transform 300ms var(--ease-in-out)}
.category-filters.has-indicator button:after{display:none}
#count{display:inline-block}
#count.tick{animation:tick 260ms var(--ease-out)}
@keyframes tick{from{opacity:0;translate:0 -6px}}
.empty{transition:opacity 260ms ease,translate 320ms var(--ease-out)}
@starting-style{.empty{opacity:0;translate:0 8px}}
.cover-stage img.is-loading{opacity:0}

/* Accordions open with height where the browser supports it. */
:root{interpolate-size:allow-keywords}
details::details-content{block-size:0;overflow-y:clip;transition:block-size 320ms var(--ease-out),content-visibility 320ms allow-discrete}
details[open]::details-content{block-size:auto}
details>p{transition:opacity 300ms ease}
details:not([open])>p{opacity:0}

/* The trailer's play button pings twice when the featured card first appears. */
.video-toggle-icon:after{content:'';position:absolute;inset:-1px;border-radius:50%;border:1px solid rgb(255 255 255/.75);opacity:0;pointer-events:none}
.invite .video-toggle-icon:after{animation:ping 1800ms var(--ease-out) 700ms 2}
.is-playing .video-toggle-icon:after{animation:none}
@keyframes ping{from{opacity:.85;scale:1}to{opacity:0;scale:1.75}}

/* Reduced motion keeps fades and colour changes, drops movement. */
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  @view-transition{navigation:none}
  .hero h1 .line>span,.hero-copy>:not(h1),.hero-book,.hero-shelf,.detail-copy>*,.detail-cover,.back,.book-card.is-entering,#count.tick{animation-name:fade}
  .reveal-ready :is(.feature-heading,.feature-card,.section-heading,.filter-panel,.results,.book-card,.author-grid>*,.art-section>*,footer>*):not([data-visible]){translate:none}
  .filter-indicator{transition:none}
  .invite .video-toggle-icon:after{animation:none}
  .book-card:hover .cover-stage img{rotate:none!important}
  .hero-book:hover,.book-card:hover .cover-stage img,.feature-cover:hover img,.primary:hover span{translate:none!important}
  *,*:before,*:after{transition-property:opacity,color,background-color,border-color,box-shadow!important}
}
@keyframes fade{from{opacity:0}}
