/* Shared reading system. Commerce states and page-specific imagery remain local. */
@font-face {
  font-family: "Origins Reading";
  src: url("/fonts/EBGaramond.ttf") format("truetype");
  font-weight: 400 800;
  font-display: swap;
}
@font-face {
  font-family: "Origins Interface";
  src: url("/fonts/Inter.ttf") format("truetype");
  font-weight: 100 900;
  font-display: swap;
}
html:root:root {
  --ink: #111514;
  --paper: #f3f3ef;
  --dim: #bec7c1;
  --muted: #bec7c1;
  --tx: #f3f3ef;
  --tx2: #c5cdc7;
  --tx3: #bec7c1;
  --accent: #d3e0d9;
  --acid: #d3e0d9;
  --line: #ffffff38;
  --line2: #ffffff29;
  --serif: "Origins Reading", Georgia, serif;
  --sans: "Origins Interface", Arial, sans-serif;
  --d: "Origins Reading", Georgia, serif;
  --s: "Origins Interface", Arial, sans-serif;
  --m: "Origins Interface", Arial, sans-serif;
}
html body {
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  font-weight: 400;
  text-rendering: optimizeLegibility;
}
html body :is(h1,h2,h3) {
  font-family: var(--serif);
  font-weight: 500;
  letter-spacing: 0;
  overflow-wrap: break-word;
}
html body :is(h1,h2,h3) em {
  font-family: inherit;
  font-style: normal;
  font-weight: inherit;
  color: inherit;
}
html body :is(input,select,textarea) {
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.5;
}
html body :is(button,a,input,select,textarea,summary):focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 4px;
}
html body :is(button,.cta,.light-button,.dark-button,.line-button,.text-button,.go) {
  font-weight: 500;
}
html body .identity > span { font-size: 14px; line-height: 1.25; }
html body .identity { min-width: 0; }
html body .masthead nav { font-size: 14px; gap: 26px; }
html body .nav-create { font-size: 15px; }
html body .eyebrow { font-size: 14px; line-height: 1.55; }
html body .price-note { font-size: 15px; color: #f3f3ef; line-height: 1.5; }
html body :is(.light-button,.dark-button,.line-button,.text-button,.cta,.discovery-cta,.header-create) {
  font-size: 16px;
  line-height: 1.45;
  min-height: 50px;
}
html body .opening h1 { font-size: 108px; line-height: .98; font-weight: 500; }
html body .opening h1 .title-second { margin-top: 0; margin-left: 0; }
html body .opening-offer > p { font: 500 30px/1.2 var(--serif); }
html body .opening-offer > p em { font-style: normal; }
html body .opening-offer .small { display: block; font-size: 16px; line-height: 1.6; }
html body .opening-offer { max-width: 430px; gap: 18px; }
html body .opening-copy { padding-top: 132px; }
html body .opening { min-height: 800px; }
html body .opening-image img { object-position: 65% center; }
html body :is(.prologue-foot p,.universe-copy>p,.featured-copy>p,.object-copy>p,.room-copy>p) {
  font-size: 17px; line-height: 1.65;
}
html body .prologue h2 { font-size: 68px; line-height: 1.12; }
html body .prologue h2 em { color: #35433b; }
html body .prologue-foot { gap: 32px; }
html body .prologue-foot p { max-width: 62ch; }
html body :is(.object-copy,.prologue) { background-color: #f0f1ed; color: #18201d; }
html body .object-copy .material-note { font-size: 14px!important; opacity: 1; color: #4c5851; max-width: 52ch; line-height: 1.65; }
html body .object-copy .size-options label > span { font-size: 15px; }
html body .object-copy .object-sizes legend { color: #4c5851; font-size: 15px; }
html body .answers summary { font-size: 18px; line-height: 1.5; }
html body .answers details p { font-size: 16px; line-height: 1.7; color: var(--dim); }
html body .chapters-list button { line-height: 1.5; }
html body .home-gift-label { font-size: 15px; }
html body .home-gifts-grid h3 { font-size: 30px; line-height: 1.2; }
html body .home-gifts-more a { font-size: 15px; min-height: 44px; }
html body .footer-bottom { font-size: 14px; line-height: 1.65; }
html body .footer-bottom nav { gap: 12px; }
html body .footer-bottom nav a { padding-block: 4px; }

/* Personalisation: plain, comfortably spaced reading next to the artwork. */
html body .studio-content h2 { font-size: 48px; line-height: 1.15; }
html body .studio-content { padding: 44px 40px 64px; }
html body .studio-intro { font-size: 17px; line-height: 1.65; color: var(--dim); }
html body .field { font-size: 15px; line-height: 1.5; }
html body .field input { height: 54px; }
html body .field-foot { font-size: 14px; line-height: 1.55; min-height: 22px; }
html body .occasion-options span { font-size: 14px; min-height: 48px; display: grid; place-items: center; line-height: 1.4; }
html body :is(.form-note,.disclosure,.preview-notice,.proof-loading) { font-size: 14px; line-height: 1.65; color: var(--dim); }
html body .form-error { font-size: 16px; color: #ffd2c8; }
html body .art-data { gap: 24px; }
html body .art-data dt { font-size: 14px; }
html body .art-data dd { font-size: 16px; }
html body .edition-total strong { font-family: var(--sans); font-size: 30px; font-weight: 500; font-variant-numeric: tabular-nums; }
html body .review-details { font-size: 16px; }
html body .review-details dd { font-size: 16px; }
html body .review-details dt { font-size: 14px; }
html body .size-options label > span { font-size: 14px; line-height: 1.5; min-height: 58px; padding-inline: 8px; }
html body #studio .finish-description { font-size: 17px; line-height: 1.65; color: #c5cdc7; }
html body #studio #finish-title { font-family: var(--serif); font-weight: 500; line-height: 1.12; }
html body #studio #finish-personal { font: 400 18px/1.6 var(--sans); color: #edf0eb; }
html body #studio :is(.finish-reassurance,.finish-source-note,.raw-capture figcaption,.finish-bottom) { color: #bec7c1; font-size: 14px; line-height: 1.6; }
html body #studio .finish-wait { font-size: 16px; }
html body #studio .finish-visual { padding-bottom: 90px; }
html body #studio .raw-capture { bottom: 100px; }
html body #studio .finish-source-note { top: calc(100% - 42px); }

/* Product viewer controls must wrap rather than shrink the labels. */
html body .product-viewer .pv-toolbar { gap: 8px 18px; padding: 12px 16px; }
html body .product-viewer .pv-toolbar button { font-size: 14px; line-height: 1.45; min-height: 44px; color: #c5cdc7; }
html body .product-viewer .pv-toolbar button[aria-pressed=true] { color: #fff; border-bottom-color: #f3f3ef; }
html body .product-viewer .pv-caption { font-size: 14px; color: #c5cdc7; line-height: 1.55; }
html body .product-viewer .pv-dimension { font-size: 14px; color: #18201d; background: #f3f3ef; }
html body .product-viewer .pv-profile figcaption { font-size: 16px; line-height: 1.6; }
html body .product-viewer .pv-profile figcaption > span:first-child { font: 500 28px/1.2 var(--serif); }

/* Articles, factual pages and occasions share a reading size, not a hero size. */
html body article :is(p,li),html body .faq p,
html body .occasion-chapter :is(p,li),
html body .occasion-page .occasion-chapter :is(p,li),
html body .occasion-page .occasion-faq p {
  font-size: 17px; line-height: 1.75;
}
html body .body article { max-width: 72ch; }
html body .body aside { font-size: 14px; line-height: 1.6; }
html body .hero .lede { font: 400 18px/1.65 var(--sans); max-width: 42ch; }
html body .hero h1 { font-family: var(--serif); font-weight: 500; line-height: 1.1; }
html body .occasion-page { --ink: #111514; --paper: #f3f3ef; --dim: #bec7c1; background: #111514; }
html body.occasion-page { --ink: #111514; --paper: #f3f3ef; --dim: #bec7c1; background: #111514; }
html body .occasion-intro .lede { font-size: 17px; line-height: 1.65; }
html body .occasion-intro .note { font-size: 14px; line-height: 1.6; max-width: 42ch; }
html body.occasion-page h1 { font-family: var(--serif); font-weight: 500; line-height: 1.1; }
html body.occasion-page .occasion-chapter h2 { font-family: var(--serif); font-weight: 500; }
html body .occasion-chapter:nth-child(even) { background: #f0f1ed; color: #18201d; }
html body .occasion-chapter:nth-child(even) :is(p,li) { color: #35433b; }
html body .occasion-close { background: #e9ece7; color: #18201d; }
html body .occasion-index a { font-size: 14px; }
html body .occasion-page .occasion-faq summary,html body.occasion-page .occasion-faq summary { font-size: 18px; line-height: 1.55; }
html body .occasion-size-note { font-size: 14px; color: #c5cdc7; }
html body .occasion-dock span { font-size: 14px; }
html body .occasion-dock strong { font-size: 24px; line-height: 1.2; font-weight: 500; }
html body .occasion-close .cta { background: #18201d; color: #f3f3ef; }
html body .credits .source-list p { font-size: 16px; line-height: 1.7; }
html body .gallery .note-line { font-size: 16px; line-height: 1.6; }
html body .gallery :is(span,.price) { font-size: 14px; line-height: 1.6; }
html body .gallery .price { font-size: 16px; color: #f3f3ef; }
html body .gallery b { font-weight: 500; line-height: 1.2; }
html body .lookup input { font: 400 16px/1.5 var(--sans); }
html body :is(.discovery-chapter p,.product-details>p,.product-intro>p,.gift-edit>p,.gift-practical-copy>p) { font-size: 17px; line-height: 1.7; }
html body :is(.discovery-header,.discovery-footer) { font-family: var(--sans); }
html body .product-specs > div { font-size: 16px; }
html body .product-specs dt { font-size: 14px; }
html body .size-choice { font-size: 14px; }
html body .size-choice strong { font-size: 16px; font-weight: 500; }
html body .gift-edit h3 { font-family: var(--serif); font-weight: 500; }

/* Checkout: selected rows retain dark text; legally required text stays visible. */
html body main :is(.sub,.tiles i,.chips li,.ofaq p,.incl li,.guar,.eta) { font-size: 16px; line-height: 1.65; }
html body main :is(.hint,.fine,.note,.vat,.ack,.viewing-preview-note) { font-size: 14px; line-height: 1.7; color: var(--tx2); }
html body main :is(.fi label,legend,.facts dt,.trust span) { font-size: 14px; line-height: 1.55; }
html body main .facts dd { font-size: 16px; }
html body main .tiles b { font-size: 17px; }
html body main .ol :is(b,i) { font-size: 16px; }
html body main .ol em,html body main .ol.pay i { font-size: 14px; }
html body main .opt input:checked + .ol,
html body main .opt input:checked + .ol :is(b,i,em,span) { color: #18201d; }
html body main .opt input:checked + .ol { background: #f0f1ed; border-color: #f0f1ed; }
html body main .go { font-size: 17px; min-height: 58px; }
html body main .sum .row { font-size: 16px; line-height: 1.6; }
html body main .sum .row.tot span:last-child { font: 500 30px/1.3 var(--sans); font-variant-numeric: tabular-nums; }
html body main .ofaq summary { font-size: 17px; line-height: 1.5; }
html body .ack input { margin-top: 3px; width: 20px; height: 20px; }

@media(min-width:1500px) {
  html body .opening h1 { font-size: 128px; }
}
@media(min-width:701px) and (max-height:800px) {
  html body .opening h1 { font-size: 86px; }
  html body .opening-copy { padding-top: 122px; }
  html body .opening { min-height: 740px; }
}
@media(max-width:1000px) {
  html body .masthead nav { gap: 18px; }
  html body .prologue h2 { font-size: 52px; }
  html body .studio-content { padding-inline: 28px; }
}
@media(max-width:700px) {
  html body .masthead { min-height: 80px; height: auto; padding-block: 12px; gap: 12px; }
  html body .nav-create { font-size: 14px; gap: 12px; }
  html body .identity .logo-mark { width: 32px; height: 32px; }
  html body .identity > span { font-size: 12px; }
  html body .opening { height: auto; min-height: 0; max-height: none; padding: 104px 22px 24px; display: flex; flex-direction: column; }
  html body .opening-copy { display: contents; }
  html body .opening-copy > .eyebrow { order: 0; font-size: 13px; margin-bottom: 14px; }
  html body .opening h1 { order: 1; font-size: 56px; line-height: 1.05; padding: 0; margin: 0 0 24px; max-width: none; }
  html body .opening h1 > span:not(.sr-only) { display: inline; }
  html body .opening h1 .title-second::before { content: " "; }
  html body .opening-image { order: 2; position: relative; inset: auto; z-index: 0; margin-inline: -22px; aspect-ratio: 1.15; }
  html body .opening-image img { object-fit: cover; object-position: 75% center; }
  html body .opening-offer { order: 3; position: static; display: block; max-width: none; margin: 24px 0 0; }
  html body .opening-offer > p { font-size: 30px; margin-bottom: 16px; }
  html body .opening-offer .small { display: block; font-size: 16px; margin-bottom: 18px; }
  html body .opening-offer .light-button { width: 100%; margin: 0; font-size: 16px; min-height: 54px; }
  html body .price-note { font-size: 15px; margin-top: 12px; }
  html body .opening-bottom { order: 4; position: static; height: auto; margin-top: 24px; padding-top: 18px; gap: 16px; flex-wrap: wrap; font-size: 14px; }
  html body .opening-bottom .visual-label { max-width: 100%; font-size: 13px; }
  html body .opening::after { display: none; }
  html body .prologue { padding-block: 64px; }
  html body .prologue h2 { font-size: 38px; line-height: 1.18; }
  html body .prologue-foot { display: block; margin-top: 32px; }
  html body .prologue-foot .folio { display: none; }
  html body .prologue-foot .text-button { margin-top: 18px; }
  html body :is(.universe-copy>p,.featured-copy>p,.object-copy>p,.room-copy>p) { font-size: 16px; }
  html body .home-gifts-grid { grid-template-columns: 1fr; gap: 32px; }
  html body .home-gifts-grid figure { aspect-ratio: 1.25; }
  html body .home-gifts-grid h3 { font-size: 30px; }
  html body .studio-content { padding: 32px 22px 48px; }
  html body .studio-content h2 { font-size: 38px; }
  html body .studio-header { padding: 14px 20px; height: auto; min-height: 80px; gap: 12px; }
  html body .studio-header #studio-step { font-size: 12px; max-width: 120px; line-height: 1.4; }
  html body .occasion-options { gap: 8px; display: grid; grid-template-columns: 1fr 1fr; }
  html body .size-options > div { grid-template-columns: 1fr 1fr; }
  html body .review-details > div { grid-template-columns: 90px minmax(0,1fr); gap: 16px; }
  html body #studio .finish-visual { max-width: 300px; padding-bottom: 90px; }
  html body #studio .raw-capture { bottom: 100px; }
  html body .product-viewer .pv-toolbar { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 6px; padding: 10px; }
  html body .product-viewer .pv-toolbar button { white-space: normal; font-size: 14px; padding: 8px 4px; min-width: 0; }
  html body .product-viewer .pv-toolbar .pv-zoom { grid-column: 4; justify-self: end; width: 44px; min-height: 44px; }
  html body .product-viewer .pv-caption { display: block; font-size: 14px; }
  html body .product-viewer .pv-caption > span { display: block; max-width: none; text-align: left; }
  html body .product-viewer .pv-caption > span + span { margin-top: 8px; }
  html body .product-viewer .pv-profile { padding: 20px; gap: 16px; grid-template-columns: 1fr 1fr; }
  html body .product-viewer .pv-profile figcaption { font-size: 14px; gap: 14px; }
  html body .product-viewer .pv-profile figcaption > span:first-child { font-size: 22px; }
  html body article :is(p,li),html body .faq p,
  html body.occasion-page .occasion-chapter :is(p,li),
  html body.occasion-page .occasion-faq p { font-size: 16px; line-height: 1.75; }
  html body .occasion-intro .lede { font-size: 16px; line-height: 1.7; }
  html body.occasion-page .occasion-intro .eyebrow { font-size: 13px; }
  html body.occasion-page .occasion-intro .cta { font-size: 16px; min-height: 54px; }
  html body .occasion-intro .note { font-size: 14px; }
  html body .occasion-page .occasion-chapter .facts,
  html body.occasion-page .occasion-chapter .facts { grid-template-columns: 1fr; gap: 22px; }
  html body .occasion-page .occasion-chapter .facts span,
  html body.occasion-page .occasion-chapter .facts span { font-size: 14px; }
  html body .occasion-dock strong { font-size: 20px; max-width: 18ch; }
  html body .occasion-dock .cta { font-size: 14px; padding-inline: 16px; }
  html body .occasion-dock span { font-size: 13px; }
  html body .gallery ul { grid-template-columns: 1fr; gap: 36px; }
  html body main .two { grid-template-columns: minmax(0,1fr); gap: 0; }
  html body main .ol :is(b,i) { font-size: 16px; }
  html body main .ol { align-items: start; padding: 18px 14px; }
  html body main .trust { gap: 16px; grid-template-columns: 1fr; }
  html body main .trust li { display: flex; align-items: baseline; justify-content: space-between; gap: 18px; }
  html body main .trust span { max-width: 55%; text-align: right; }
  html body main .facts { grid-template-columns: 100px minmax(0,1fr); }
  html body :is(.product-sizes,.occasion-size-options) { grid-template-columns: 1fr 1fr; }
  html body .gift-practical-copy > p { font-size: 16px; }
  html body .discovery-chapter p { font-size: 16px; }
  html body .discovery-footer nav { font-size: 14px; line-height: 1.65; }
}
@media(max-width:370px) {
  html body .opening h1 { font-size: 48px; }
  html body .studio-header #studio-step { display: block; max-width: 90px; }
}
@media(prefers-reduced-motion:reduce) {
  html { scroll-behavior: auto; }
}
