/* Jame Harlo — showcase design system.

   Typography from direction 01 (Stillness): Cormorant Garamond at 300 for
   display, Inter for anything functional. The light weight is the point — at
   400 it reads as a bookshop, at 300 it reads as a gallery.

   Palette from direction 03 (Breathing Room): deep blue-black ground with a
   cool light behind each cover. The covers are already vivid and saturated, so
   nothing in the interface is allowed to be — the artwork supplies every bit of
   colour on the page, and the one accent exists only for things you can click.

   The showcase rule is structural, not stylistic: no price appears on a listing
   page, so there is deliberately no price style available to a .bk card.
*/
:root{
  --ground:#0D1017;
  --raise:#141922;          /* cards and panels, one step up from the ground */
  --line:#1F2530;
  --line-2:#191E27;
  --ink:#E4E7EE;
  --ink-2:#A2AAB9;          /* 7.4:1 on the ground — carries real sentences */
  --ink-3:#79808F;          /* 4.9:1 — captions and fine print only */
  --accent:#8FA6D8;         /* 9.1:1 on the ground; only ever on interactive things */
  --accent-ink:#0D1017;     /* what sits ON the accent */
  --glow:rgba(150,170,220,.26);
  --maxw:1180px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--ground);color:var(--ink);
  font:17px/1.7 Inter,system-ui,-apple-system,"Segoe UI",sans-serif;font-weight:300;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 28px}
main.wrap{padding-bottom:40px}
img{max-width:100%;height:auto;display:block}
a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}

h1,h2,h3{margin:0;font-family:"Cormorant Garamond",Georgia,serif;font-weight:300;
  line-height:1.06;letter-spacing:.005em;text-wrap:balance}
h1{font-size:clamp(2.4rem,5.4vw,3.9rem)}
h2{font-size:clamp(1.6rem,3vw,2.15rem);font-weight:400}
p{margin:0}

/* ---------- header ---------- */
.top{border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:26px;min-height:78px;flex-wrap:wrap;padding-top:14px;padding-bottom:14px}
.brand{font-family:"Cormorant Garamond",serif;font-weight:400;font-size:1.28rem;
  letter-spacing:.2em;text-transform:uppercase;color:var(--ink);text-decoration:none;flex:none}
.nav{margin-left:auto;display:flex;gap:22px;flex-wrap:wrap}
.nav a{color:var(--ink-3);text-decoration:none;font-size:.72rem;letter-spacing:.13em;
  text-transform:uppercase;padding:4px 0;border-bottom:1px solid transparent}
.nav a:hover,.nav a:focus-visible{color:var(--ink)}
.nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}

/* ---------- lede ---------- */
.lede-block{padding:66px 0 8px;max-width:34ch}
main.wide .lede-block{max-width:none}
.lede{color:var(--ink-2);max-width:52ch;margin-top:20px;font-size:1.05rem;line-height:1.8}

/* ---------- rooms ---------- */
.rooms{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:1px;background:var(--line);border:1px solid var(--line);border-radius:3px;
  overflow:hidden;margin-top:44px}
.room{background:var(--ground);padding:26px 24px;text-decoration:none;color:inherit;
  display:flex;flex-direction:column;gap:7px;transition:background .15s ease}
.room:hover,.room:focus-visible{background:var(--raise)}
.rn{font-family:"Cormorant Garamond",serif;font-size:1.34rem;font-weight:400;line-height:1.15}
.rc{font-size:.72rem;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3)}

/* ---------- sections ---------- */
.block{margin-top:78px}
.block h2{margin-bottom:26px}
.prose{max-width:64ch}
.prose h2{margin-top:40px;margin-bottom:16px}
.prose p{color:var(--ink-2);margin-bottom:16px}
.prose p:last-child{margin-bottom:0}
.opener{color:var(--ink-2);font-size:1.06rem;line-height:1.8;max-width:60ch}
.opener b{color:var(--ink);font-weight:400}

/* ---------- the listing grid ----------
   No price rule lives here: a .bk carries a cover, a title and a design count,
   and there is deliberately no class for a price on it. */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:38px 26px;margin-top:38px}
.grid.small{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:26px 18px}
.bk{text-decoration:none;color:inherit;display:block}
.bk img{width:100%;aspect-ratio:2/3;object-fit:cover;background:#000;border-radius:2px;
  box-shadow:0 0 0 1px var(--line), 0 18px 34px -22px rgba(0,0,0,.9);
  transition:box-shadow .22s ease,transform .22s ease}
.bk:hover img,.bk:focus-visible img{
  box-shadow:0 0 0 1px var(--line), 0 0 44px -8px var(--glow), 0 18px 34px -22px rgba(0,0,0,.9);
  transform:translateY(-3px)}
.bk b{display:block;font-family:"Cormorant Garamond",serif;font-size:1.14rem;
  font-weight:400;margin-top:15px;line-height:1.25;min-height:2.5em}
.bk small{display:block;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;
  color:var(--ink-3);margin-top:5px}

/* ---------- book page ---------- */
.book{display:grid;grid-template-columns:300px minmax(0,1fr);gap:56px;align-items:start;margin-top:44px}
@media (max-width:820px){.book{grid-template-columns:1fr;gap:34px}}
.bcov img{width:100%;aspect-ratio:2/3;object-fit:cover;background:#000;border-radius:2px;
  box-shadow:0 0 0 1px var(--line), 0 0 60px -14px var(--glow), 0 24px 44px -26px rgba(0,0,0,.95)}
.note{color:var(--ink-2);font-size:1.06rem;line-height:1.8;max-width:56ch}

.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));
  gap:0;margin:34px 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.facts div{padding:16px 22px 16px 0;display:flex;flex-direction:column;gap:6px}
.facts dt{color:var(--ink-3);font-size:.66rem;letter-spacing:.13em;text-transform:uppercase;margin:0}
.facts dd{margin:0;font-size:.95rem;color:var(--ink);white-space:nowrap}

/* the two buy options — the only prices on the whole site */
.buys{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
.opt{flex:1 1 220px;text-decoration:none;color:inherit;border:1px solid var(--line);
  border-radius:3px;padding:18px 20px;display:block;transition:border-color .15s ease,background .15s ease}
.opt:hover,.opt:focus-visible{border-color:var(--accent);background:var(--raise)}
.opt .k{display:block;font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--ink-3)}
.opt .v{display:block;font-family:"Cormorant Garamond",serif;font-size:2rem;
  font-weight:400;line-height:1.1;margin-top:8px}
.opt .n{display:block;font-size:.78rem;color:var(--ink-3);margin-top:7px;line-height:1.55}
.opt.pdf{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.opt.pdf .k,.opt.pdf .n{color:rgba(13,16,23,.72)}
.opt.pdf:hover,.opt.pdf:focus-visible{background:#A5B8E4;border-color:#A5B8E4}

/* ---------- interior previews ---------- */
.pages{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
@media (max-width:780px){.pages{grid-template-columns:repeat(2,1fr)}}
.pages img{width:100%;aspect-ratio:440/654;object-fit:contain;background:#fff;
  border-radius:2px;padding:10px}

.btn{display:inline-block;background:var(--accent);color:var(--accent-ink);
  text-decoration:none;padding:14px 26px;border-radius:3px;font-size:.85rem;font-weight:500}
.btn:hover,.btn:focus-visible{background:#A5B8E4}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);margin-top:96px;padding:38px 0 76px}
.fnav{font-size:.78rem;color:var(--ink-3)}
.fnav a{color:var(--ink-2);text-decoration:none}
.fnav a:hover{color:var(--ink)}
.fine{color:var(--ink-3);font-size:.78rem;margin-top:14px;max-width:70ch;line-height:1.7}

:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* cookie notice */
.consent{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;gap:18px;flex-wrap:wrap;
  align-items:center;justify-content:center;padding:16px 22px;background:var(--raise);
  border-top:1px solid var(--line)}
.consent p{font-size:.84rem;color:var(--ink-2);max-width:62ch;margin:0}
.consent-btns{display:flex;gap:9px;flex-wrap:wrap}
.consent button{border:1px solid var(--line);background:transparent;color:var(--ink-2);
  border-radius:3px;padding:10px 18px;cursor:pointer;font:400 .82rem/1 Inter,sans-serif}
.consent button:hover{border-color:var(--accent);color:var(--ink)}
.consent button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
