/*
Theme Name: John House
Theme URI: https://johnhouse.co.uk
Author: John House
Description: Portfolio, books and research site for John House. A playful "table" of prints on the homepage with a plain list view, calm project and book pages, a sequence viewer for book spreads, and WooCommerce styling for selling books directly.
Version: 1.4.0
Requires at least: 6.4
Tested up to: 6.8
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: johnhouse
*/

/* ---------- Fonts (self-hosted, SIL Open Font Licence) ---------- */
@font-face{font-family:"Instrument Sans";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/instrument-sans-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"Instrument Sans";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/instrument-sans-latin-500-normal.woff2") format("woff2")}
@font-face{font-family:"Instrument Sans";font-style:italic;font-weight:400;font-display:swap;src:url("assets/fonts/instrument-sans-latin-400-italic.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/ibm-plex-mono-latin-400-normal.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2")}

/* ---------- Tokens ---------- */
:root{
  --jh-table:#f4f3f0;        /* the table the prints lie on */
  --jh-page:#ffffff;         /* inner pages */
  --jh-paper:#fbf9f4;        /* print borders, labels */
  --jh-ink:#141414;
  --jh-muted:#555555;
  --jh-line:#d9d6cf;
  --jh-archive:#b9c2bd;      /* archive box green: book viewer surface */
  --jh-archive-light:#dfe4e1;/* footer strip, list hover */
  --jh-dark:#1d1b18;         /* museum print */
  /* The ground: one colour for every page. Visitors can swap it (see "Grounds" below). */
  --jh-bg:#f4f3f0;
  --jh-mount:#fbf9f4;        /* mounts behind gallery images and book covers */
  --jh-panel:#fbf9f4;        /* buy box, notices */
  --jh-card:#e8e5df;         /* card image placeholder */
  --jh-footer:#dfe4e1;
  --jh-field:#ffffff;
  --jh-on-ink:#ffffff;       /* text on dark buttons */
  --jh-ink-hover:#3a3733;
  --jh-print-ink:#141414;    /* text on prints and labels (always paper) */
  --jh-sans:"Instrument Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --jh-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --jh-gutter:40px;
  --jh-max:1240px;
}
@media (max-width:760px){:root{--jh-gutter:16px}}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--jh-bg);color:var(--jh-ink);font-family:var(--jh-sans);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;display:flex;flex-direction:column;min-height:100vh}
img{max-width:100%;height:auto}
a{color:inherit;text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{color:#6e877a}
:focus-visible{outline:2px solid #2f5d8a;outline-offset:3px}
h1,h2,h3,h4{font-weight:400;line-height:1.15;letter-spacing:-.01em;margin:0 0 .6em}
h1{font-size:clamp(40px,5vw,64px);letter-spacing:-.02em}
h2{font-size:clamp(26px,3vw,34px)}
h3{font-size:22px}
.jh-mono{font-family:var(--jh-mono);font-size:13px;letter-spacing:.01em}
.jh-kicker{font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted);margin:0 0 14px}
.jh-kicker a{color:inherit}
.screen-reader-text,.jh-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.jh-skip{position:absolute;left:-9999px;top:8px;background:var(--jh-ink);color:var(--jh-on-ink);padding:10px 16px;z-index:1000}
.jh-skip:focus{left:8px}
.jh-wrap{width:100%;max-width:var(--jh-max);margin:0 auto;padding:0 var(--jh-gutter)}
.jh-main{flex:1 0 auto;width:100%}

/* ---------- Header ---------- */
.jh-header{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px 32px;padding:28px var(--jh-gutter) 20px;border-bottom:1px solid var(--jh-line)}
.home .jh-header{border-bottom:0;padding-bottom:8px}
.jh-header__brand{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 20px}
.jh-brand{font-size:22px;font-weight:500;text-decoration:none;letter-spacing:-.01em}
.jh-tagline{font-size:15px;color:var(--jh-muted)}
.jh-nav{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 24px;font-size:15px}
.jh-menu{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px 24px}
.jh-menu a,.jh-basket{text-decoration:none;display:inline-block;padding:4px 0}
.jh-menu a:hover,.jh-basket:hover{text-decoration:underline}
.jh-menu .current-menu-item>a,.jh-menu .current_page_item>a,.jh-menu .current-menu-ancestor>a{text-decoration:underline}

/* ---------- Footer ---------- */
.jh-footer{margin-top:64px;background:var(--jh-footer);border-top:1px solid var(--jh-line);padding:28px var(--jh-gutter);display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;font-size:15px}
.home .jh-footer{margin-top:0}
.jh-footer__left{display:flex;flex-direction:column;gap:10px;max-width:560px}
.jh-footer__links{display:flex;flex-wrap:wrap;gap:8px 20px;list-style:none;margin:0;padding:0}
.jh-footer__links a{text-decoration:none}
.jh-footer__links a:hover{text-decoration:underline}
.jh-footer .widget{margin:0}
.jh-footer .widget-title{font-size:16px;margin:0 0 8px}
.jh-footer input[type=email],.jh-footer input[type=text]{font:inherit;font-size:15px;padding:10px 12px;min-height:44px;border:1px solid var(--jh-ink);background:var(--jh-field);color:var(--jh-ink);max-width:100%}
.jh-footer button,.jh-footer input[type=submit]{font:inherit;font-size:15px;padding:10px 18px;min-height:44px;background:var(--jh-ink);color:var(--jh-on-ink);border:0;cursor:pointer}

/* ---------- Buttons ---------- */
.jh-btn,.woocommerce .jh-book button.button,.woocommerce .jh-book .single_add_to_cart_button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 22px;background:var(--jh-ink)!important;color:var(--jh-on-ink)!important;border:0;border-radius:0!important;font:inherit!important;font-size:17px!important;font-weight:400!important;text-decoration:none;cursor:pointer}
.jh-btn:hover,.woocommerce .jh-book .single_add_to_cart_button:hover{background:var(--jh-ink-hover)!important;color:var(--jh-on-ink)!important}
.jh-btn--ghost{background:transparent!important;color:var(--jh-ink)!important;border:1px solid var(--jh-ink)}
.jh-btn--ghost:hover{background:var(--jh-ink)!important;color:var(--jh-on-ink)!important}

/* ---------- Homepage: the table ---------- */
.jh-home__bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px var(--jh-gutter) 0}
.jh-toggle{display:inline-flex;border:1px solid var(--jh-ink);font-family:var(--jh-mono);font-size:13px}
.jh-toggle a{display:inline-flex;align-items:center;min-height:44px;padding:0 16px;text-decoration:none}
.jh-toggle a[aria-current="true"]{background:var(--jh-ink);color:var(--jh-bg)}
.jh-shuffle{font-family:var(--jh-mono);font-size:13px;background:none;border:0;padding:12px 0;min-height:44px;cursor:pointer;color:inherit}
.jh-shuffle:hover{text-decoration:underline}
.jh-table{position:relative;width:100%;max-width:1440px;margin:0 auto 24px;aspect-ratio:4/3}
.jh-print{position:absolute;display:block;left:calc(var(--x)*1%);top:calc(var(--y)*1%);width:calc(var(--w)*1%);transform:rotate(calc(var(--r)*1deg));color:var(--jh-print-ink);text-decoration:none}
.jh-print[hidden]{display:none}
.jh-table.is-animated .jh-print{transition:left .7s cubic-bezier(.2,.7,.2,1),top .7s cubic-bezier(.2,.7,.2,1),width .7s cubic-bezier(.2,.7,.2,1),transform .7s cubic-bezier(.2,.7,.2,1),opacity .4s}
.jh-js .jh-table:not(.is-ready) .jh-print[data-slot="loose"]{opacity:0}
.jh-print:hover,.jh-print:focus-visible{z-index:50!important;color:var(--jh-ink)}
.jh-print__paper{display:block;background:var(--jh-paper);padding:clamp(5px,.7vw,10px);box-shadow:0 1px 0 rgba(0,0,0,.08),0 8px 20px rgba(0,0,0,.16);transition:box-shadow .3s}
.jh-print:hover .jh-print__paper,.jh-print:focus-visible .jh-print__paper{box-shadow:0 2px 0 rgba(0,0,0,.08),0 20px 40px rgba(0,0,0,.24)}
.jh-print__paper img{display:block;width:100%;height:auto;aspect-ratio:var(--ratio)}
.jh-print__blank{display:block;aspect-ratio:var(--ratio,1.5);background:#d9d4ca}
.jh-print__label{display:inline-block;margin-top:8px;white-space:normal;max-width:max(100%,15em);background:var(--jh-paper);padding:4px 8px;font-family:var(--jh-mono);font-size:12px;line-height:1.4;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.jh-print__label b{font-weight:500}
.jh-print__label span{color:#5a544b}
.jh-print--museum .jh-print__paper{background:var(--jh-dark);color:var(--jh-paper)}
.jh-print--museum .jh-museum{aspect-ratio:1;border:1px solid var(--jh-paper);display:flex;flex-direction:column;justify-content:center;align-items:center;gap:10px;text-align:center;padding:12px}
.jh-museum__name{font-size:clamp(16px,1.8vw,26px);font-weight:500;line-height:1.05;letter-spacing:.04em;text-transform:uppercase}
.jh-museum__line{font-family:var(--jh-mono);font-size:12px}
.jh-print--note .jh-print__paper{padding:clamp(14px,1.4vw,22px)}
.jh-print--note p{margin:0;font-size:clamp(14px,1.2vw,17px);line-height:1.45}
.jh-print--note .jh-note__more{display:block;margin-top:12px;font-family:var(--jh-mono);font-size:12px}
.jh-empty{max-width:640px;margin:48px auto;padding:24px;background:var(--jh-panel);font-size:15px}

/* list view */
.jh-list{width:100%;max-width:1100px;margin:0 auto;padding:40px var(--jh-gutter) 72px}
.jh-list[hidden],.jh-table[hidden]{display:none}
.jh-list__row{display:grid;grid-template-columns:100px minmax(0,1fr) 220px 32px;gap:16px;align-items:baseline;padding:14px 8px;border-bottom:1px solid var(--jh-line);text-decoration:none;color:inherit}
a.jh-list__row:hover{background:rgba(110,135,122,.18);color:inherit}
.jh-list__head{font-family:var(--jh-mono);font-size:12px;color:var(--jh-muted);text-transform:uppercase;letter-spacing:.06em;padding-top:0}
.jh-list__year,.jh-list__type{font-family:var(--jh-mono);font-size:14px;color:var(--jh-muted)}
.jh-list__title{font-size:22px;line-height:1.3}
.jh-list__arrow{text-align:right}

@media (max-width:760px){
  .jh-table{aspect-ratio:auto;display:flex;flex-direction:column;gap:36px;padding:16px var(--jh-gutter) 40px}
  .jh-print{position:relative;left:auto;top:auto;width:86%!important;transform:rotate(calc(var(--r)*.5deg))}
  .jh-print:nth-of-type(even){align-self:flex-end}
  .jh-js .jh-table:not(.is-ready) .jh-print[data-slot="loose"]{opacity:1}
  .jh-list__row{grid-template-columns:72px minmax(0,1fr) 20px}
  .jh-list__type{display:none}
  .jh-list__title{font-size:19px}
}
@media (prefers-reduced-motion:reduce){
  .jh-table.is-animated .jh-print,.jh-print__paper{transition:none}
  .jh-viewer__track{scroll-behavior:auto!important}
}

/* ---------- Inner pages ---------- */
.jh-page{padding:40px 0 0}
.jh-page__head{margin-bottom:40px}
.jh-page__head h1{margin:0}
.jh-subtitle{font-size:20px;color:var(--jh-muted);margin:14px 0 0;max-width:760px}
.jh-content{font-size:18px;line-height:1.65}
.jh-content>*{max-width:720px}
.jh-content>.alignwide,.jh-content>.wp-block-gallery,.jh-content>.gallery,.jh-content>.wp-block-image.alignwide,.jh-content>.wp-block-embed,.jh-content>figure.alignwide,.jh-content>.wp-block-columns,.jh-content>.wp-block-video,.jh-content>.wp-block-cover{max-width:100%}
.jh-content>.alignfull{max-width:none}
.jh-content h2{margin-top:1.6em}
.jh-content h3{margin-top:1.4em}
.jh-content blockquote{margin:1.5em 0;padding-left:20px;border-left:2px solid var(--jh-archive);font-style:italic}
.jh-content hr,.jh-content .wp-block-separator{border:0;border-top:1px solid var(--jh-line);margin:2.4em 0;max-width:720px}
.jh-content figure{margin:1.6em 0}
.jh-content figcaption,.wp-caption-text{font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted);margin-top:8px}
.jh-content iframe{max-width:100%}
.jh-content .wp-block-embed__wrapper{position:relative}
.jh-content .wp-video,.jh-content video{max-width:100%!important}
.jh-content table{border-collapse:collapse;width:100%;font-size:16px}
.jh-content td,.jh-content th{border-bottom:1px solid var(--jh-line);padding:10px 8px;text-align:left;vertical-align:top}
.aligncenter{display:block;margin-left:auto;margin-right:auto}
.alignleft{float:left;margin:0 24px 16px 0}
.alignright{float:right;margin:0 0 16px 24px}
.wp-caption{max-width:100%}

/* classic [gallery] shortcode */
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:1.6em 0!important}
.gallery-columns-1{grid-template-columns:minmax(0,1fr)}
.gallery-columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery-columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.gallery-columns-5,.gallery-columns-6,.gallery-columns-7,.gallery-columns-8,.gallery-columns-9{grid-template-columns:repeat(5,minmax(0,1fr))}
.gallery br{display:none}
.gallery-item{margin:0!important;width:auto!important;float:none!important}
.gallery-item .gallery-icon{aspect-ratio:1;background:var(--jh-mount);display:flex;align-items:center;justify-content:center;padding:9%}
.gallery-item .gallery-icon a{display:flex;align-items:center;justify-content:center;width:100%;height:100%}
.gallery-item img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border:0!important}
.gallery-caption{margin-top:8px}
.gallery-caption{font-family:var(--jh-mono);font-size:12px;color:var(--jh-muted)}
@media (max-width:760px){.gallery{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* ---------- Sequence viewer ---------- */
.jh-viewer{margin:0 0 56px}
.jh-viewer__stage{background:var(--jh-archive);padding:clamp(16px,4vw,48px)}
.jh-viewer__track{list-style:none;margin:0;padding:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scrollbar-width:none}
.jh-viewer__track::-webkit-scrollbar{display:none}
.jh-viewer__slide{flex:0 0 100%;scroll-snap-align:center;display:flex;justify-content:center;align-items:center;min-height:240px}
.jh-viewer__slide figure{margin:0;display:flex;flex-direction:column;align-items:center}
.jh-viewer__slide img{display:block;max-height:min(72vh,760px);width:auto;max-width:100%;object-fit:contain;box-shadow:0 2px 0 rgba(0,0,0,.06),0 14px 32px rgba(0,0,0,.18)}
.jh-viewer__slide figcaption{font-family:var(--jh-mono);font-size:12px;color:#1c2421;margin-top:12px;text-align:center}
.jh-viewer__bar{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px}
.jh-viewer__count{font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted)}
.jh-viewer__btns{display:flex;gap:8px}
.jh-viewer__btn{font-family:var(--jh-mono);font-size:16px;background:transparent;border:1px solid var(--jh-ink);color:var(--jh-ink);min-width:48px;min-height:48px;cursor:pointer}
.jh-viewer__btn:hover{background:var(--jh-ink);color:var(--jh-on-ink)}
.jh-viewer__btn[disabled]{opacity:.3;cursor:default;background:transparent;color:var(--jh-ink)}
.jh-viewer__thumbs{list-style:none;margin:12px 0 0;padding:0;display:flex;gap:8px;overflow-x:auto}
.jh-viewer__thumbs button{padding:0;border:2px solid transparent;background:none;cursor:pointer;display:block;width:64px;height:48px}
.jh-viewer__thumbs img{display:block;width:100%;height:100%;object-fit:cover}
.jh-viewer__thumbs button[aria-current="true"]{border-color:var(--jh-ink)}

/* ---------- Cards (work index, books, "more from the table") ---------- */
.jh-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px}
@media (max-width:960px){.jh-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.jh-cards{grid-template-columns:minmax(0,1fr)}}
.jh-card{display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit}
.jh-card:hover{color:inherit}
.jh-card__img{display:block;aspect-ratio:3/2;background:var(--jh-card);overflow:hidden}
.jh-card__img img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .5s}
.jh-card:hover .jh-card__img img{transform:scale(1.02)}
.jh-card__meta{font-family:var(--jh-mono);font-size:12px;color:var(--jh-muted)}
.jh-card__title{font-size:21px;line-height:1.3}
.jh-card:hover .jh-card__title{text-decoration:underline}
.jh-card__price{font-family:var(--jh-mono);font-size:14px}
.jh-card--museum .jh-card__img{background:var(--jh-dark);color:var(--jh-paper);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}
.jh-more{border-top:1px solid var(--jh-line);padding-top:28px;margin-top:72px}
.jh-more h2{font-size:26px;margin-bottom:24px}
.jh-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 36px;padding:0;list-style:none;font-family:var(--jh-mono);font-size:13px}
.jh-filters a{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border:1px solid var(--jh-ink);text-decoration:none}
.jh-filters a[aria-current="page"]{background:var(--jh-ink);color:var(--jh-on-ink)}

/* ---------- Blog / archive ---------- */
.jh-posts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.jh-posts li{border-bottom:1px solid var(--jh-line);padding:20px 0}
.jh-posts a{text-decoration:none;font-size:22px}
.jh-posts time{display:block;font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted)}
.jh-pagination{margin-top:32px;font-family:var(--jh-mono);font-size:14px}
.jh-pagination .page-numbers{padding:6px 10px}

/* ---------- Lightbox ---------- */
.jh-lightbox{border:0;padding:0;margin:0;width:100vw;height:100vh;max-width:100vw;max-height:100vh;background:rgba(20,20,20,.94);color:#fff}
.jh-lightbox::backdrop{background:rgba(20,20,20,.94)}
.jh-lightbox__inner{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:56px 72px}
.jh-lightbox img{max-width:100%;max-height:calc(100vh - 140px);object-fit:contain}
.jh-lightbox__count{font-family:var(--jh-mono);font-size:13px;margin-top:14px;color:#ccc}
.jh-lightbox button{position:absolute;background:none;border:1px solid rgba(255,255,255,.6);color:#fff;min-width:48px;min-height:48px;font-size:18px;cursor:pointer;font-family:var(--jh-mono)}
.jh-lightbox button:hover{background:rgba(255,255,255,.12)}
.jh-lightbox__close{top:16px;right:16px}
.jh-lightbox__prev{left:16px;top:50%;transform:translateY(-50%)}
.jh-lightbox__next{right:16px;top:50%;transform:translateY(-50%)}
@media (max-width:760px){.jh-lightbox__inner{padding:64px 12px}.jh-lightbox__prev,.jh-lightbox__next{top:auto;bottom:16px;transform:none}}

/* ---------- WooCommerce: book page ---------- */
.woocommerce-notices-wrapper:not(:empty){max-width:var(--jh-max);margin:24px auto 0;padding:0 var(--jh-gutter)}
.woocommerce .woocommerce-message,.woocommerce .woocommerce-info,.woocommerce .woocommerce-error{border-top-color:var(--jh-archive);background:var(--jh-panel);font-size:16px}
.woocommerce .woocommerce-message::before,.woocommerce .woocommerce-info::before{color:#4a5a52}
.woocommerce .woocommerce-message .button{background:var(--jh-ink);color:var(--jh-on-ink);border-radius:0}
.woocommerce div.product.jh-book{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-template-areas:"head head" "viewer viewer" "desc buy" "more more";column-gap:56px;align-items:start}
.jh-book .jh-book__head{grid-area:head;margin-bottom:32px}
.jh-book .jh-viewer{grid-area:viewer}
.woocommerce div.product.jh-book div.summary{grid-area:buy;float:none;width:auto;margin:0;background:var(--jh-panel);border:1px solid var(--jh-line);padding:28px;display:flex;flex-direction:column;gap:18px;position:sticky;top:24px}
.jh-book .jh-book__desc{grid-area:desc;font-size:18px;line-height:1.65}
.jh-book .jh-book__desc>*{max-width:720px}
.jh-book .jh-more{grid-area:more}
.woocommerce div.product.jh-book p.price{font-size:30px;color:var(--jh-ink);margin:0;font-family:var(--jh-sans)}
.woocommerce div.product.jh-book p.price del{opacity:.5;font-size:20px}
.woocommerce div.product.jh-book p.price ins{text-decoration:none}
.jh-book__stock{font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted);margin:-10px 0 0}
.jh-book__stock--out{color:#8a2b1e}
.jh-book__details{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;font-family:var(--jh-mono);font-size:13px;line-height:1.4}
.jh-book__details dt{color:var(--jh-muted)}
.jh-book__details dd{margin:0}
.woocommerce div.product.jh-book form.cart{margin:0;display:flex;flex-wrap:wrap;gap:12px;align-items:stretch}
.woocommerce div.product.jh-book form.cart div.quantity{float:none;margin:0}
.woocommerce div.product.jh-book form.cart::before,.woocommerce div.product.jh-book form.cart::after{display:none}
.woocommerce .jh-book .quantity .qty{width:72px;min-height:48px;font:inherit;font-family:var(--jh-mono);border:1px solid var(--jh-ink);background:var(--jh-field);color:var(--jh-ink);text-align:center}
.woocommerce div.product.jh-book form.cart .single_add_to_cart_button{flex:1 1 auto;float:none}
.jh-book__note{font-size:14px;line-height:1.5;color:var(--jh-muted);margin:0}
.jh-book .jh-viewer--single .jh-viewer__bar{display:none}
@media (max-width:900px){
  .woocommerce div.product.jh-book{grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "viewer" "buy" "desc" "more"}
  .woocommerce div.product.jh-book div.summary{position:static;margin-bottom:40px}
}

/* shop archive */
.woocommerce ul.products{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px;margin:0}
.woocommerce ul.products::before,.woocommerce ul.products::after{display:none}
.woocommerce ul.products li.product{width:auto!important;float:none!important;margin:0!important}
.woocommerce ul.products li.product a img{aspect-ratio:3/2;object-fit:cover;margin-bottom:12px}
.woocommerce ul.products li.product .woocommerce-loop-product__title{font-size:21px!important;font-weight:400;padding:0!important;font-family:var(--jh-sans)}
.woocommerce ul.products li.product .price{color:var(--jh-ink)!important;font-family:var(--jh-mono);font-size:14px!important}
.woocommerce ul.products li.product .button{background:var(--jh-ink);color:var(--jh-on-ink);border-radius:0;font-weight:400}
@media (max-width:760px){.woocommerce ul.products{grid-template-columns:minmax(0,1fr)}}
.woocommerce a.button,.woocommerce button.button,.woocommerce input.button,.wc-block-components-button:not(.is-link){border-radius:0!important}
.woocommerce a.button.alt,.woocommerce button.button.alt{background:var(--jh-ink);color:var(--jh-on-ink)}
.woocommerce a.button.alt:hover,.woocommerce button.button.alt:hover{background:var(--jh-ink-hover)}

/* Basket and checkout (block versions) */
.wc-block-cart__submit-button,.wc-block-components-checkout-place-order-button,.wp-block-woocommerce-empty-cart-block .wp-block-button__link{background:var(--jh-ink)!important;color:var(--jh-on-ink)!important;min-height:52px;text-decoration:none!important;border:0!important;font-size:17px}
.wc-block-cart__submit-button:hover,.wc-block-components-checkout-place-order-button:hover{background:var(--jh-ink-hover)!important}
.wc-block-components-text-input input,.wc-block-components-select select,.wc-block-components-text-input input:focus{border-radius:0!important}

/* ---------- Gallery layouts that never crop ---------- */
/* Mounts: every image centred in an equal square, so rows and columns line up whatever the orientation. */
.wp-block-gallery.is-style-jh-mounts{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px!important;align-items:start}
.wp-block-gallery.is-style-jh-mounts.columns-1{grid-template-columns:minmax(0,1fr)}
.wp-block-gallery.is-style-jh-mounts.columns-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.wp-block-gallery.is-style-jh-mounts.columns-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.wp-block-gallery.is-style-jh-mounts.columns-5,.wp-block-gallery.is-style-jh-mounts.columns-6,.wp-block-gallery.is-style-jh-mounts.columns-7,.wp-block-gallery.is-style-jh-mounts.columns-8{grid-template-columns:repeat(5,minmax(0,1fr))}
.wp-block-gallery.is-style-jh-mounts.has-nested-images figure.wp-block-image{width:auto!important;margin:0!important;flex-direction:column!important;align-items:stretch!important}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image>a{display:block!important;position:relative;aspect-ratio:1;background:var(--jh-mount);width:100%;height:auto!important;flex:0 0 auto!important}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image>a img,.wp-block-gallery.is-style-jh-mounts figure.wp-block-image>img{position:absolute!important;inset:9%!important;width:82%!important;height:82%!important;max-width:none!important;object-fit:contain!important;flex:none!important}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image:not(:has(>a)){position:relative;aspect-ratio:1;background:var(--jh-mount)}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image figcaption,.wp-block-gallery.is-style-jh-rows figure.wp-block-image figcaption{position:static!important;background:none!important;color:var(--jh-muted)!important;padding:8px 0 0!important;margin:0!important;max-height:none!important;overflow:visible!important;text-align:left!important;font-family:var(--jh-mono);font-size:12px!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;-webkit-mask-image:none!important;mask-image:none!important}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image figcaption::before,.wp-block-gallery.is-style-jh-rows figure.wp-block-image figcaption::before{display:none!important}
@media (max-width:760px){.wp-block-gallery.is-style-jh-mounts{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}}

/* Rows: each row shares one height; widths follow each photograph's proportions, nothing is cropped. */
.wp-block-gallery.is-style-jh-rows{display:flex!important;flex-wrap:wrap!important;gap:12px!important;--jh-row:clamp(160px,24vw,300px)}
.wp-block-gallery.is-style-jh-rows::after{content:"";flex:999 1 0}
.wp-block-gallery.is-style-jh-rows.has-nested-images figure.wp-block-image{flex:var(--ar,1.5) 1 calc(var(--ar,1.5) * var(--jh-row))!important;width:auto!important;margin:0!important;flex-direction:column!important;align-items:stretch!important}
.wp-block-gallery.is-style-jh-rows figure.wp-block-image>a{display:block;width:100%}
.wp-block-gallery.is-style-jh-rows figure.wp-block-image img{width:100%!important;height:auto!important;aspect-ratio:var(--ar,1.5);object-fit:cover!important;flex:none!important}
@media (max-width:560px){.wp-block-gallery.is-style-jh-rows{--jh-row:120px;gap:8px!important}}
.wp-block-gallery.is-style-jh-mounts.has-nested-images figure.wp-block-image,.wp-block-gallery.is-style-jh-rows.has-nested-images figure.wp-block-image{justify-content:flex-start!important;align-self:start!important}
.wp-block-gallery.is-style-jh-mounts figure.wp-block-image::before,.wp-block-gallery.is-style-jh-rows figure.wp-block-image::before{display:none!important;content:none!important}

/* Image + text: each photograph beside its words, for galleries with long captions (e.g. one story per image). */
.wp-block-gallery.is-style-jh-stories{display:block!important;margin:2em 0!important}
.wp-block-gallery.is-style-jh-stories.has-nested-images figure.wp-block-image{display:grid!important;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(20px,4vw,56px);align-items:start;width:100%!important;max-width:100%!important;margin:0!important;padding:clamp(28px,5vw,56px) 0!important;border-top:1px solid var(--jh-line);flex-direction:initial!important;justify-content:initial!important}
.wp-block-gallery.is-style-jh-stories.has-nested-images figure.wp-block-image:first-child{border-top:0;padding-top:0!important}
.wp-block-gallery.is-style-jh-stories figure.wp-block-image::before,.wp-block-gallery.is-style-jh-stories figure.wp-block-image figcaption::before{display:none!important;content:none!important}
.wp-block-gallery.is-style-jh-stories figure.wp-block-image>a{display:block;width:100%}
.wp-block-gallery.is-style-jh-stories figure.wp-block-image img{display:block;width:100%!important;height:auto!important;max-height:80vh;object-fit:contain!important;object-position:left top;flex:none!important}
.wp-block-gallery.is-style-jh-stories figure.wp-block-image figcaption{position:static!important;background:none!important;color:var(--jh-ink)!important;padding:0!important;margin:0!important;max-height:none!important;overflow:visible!important;text-align:left!important;font-family:var(--jh-sans,"Instrument Sans",system-ui,sans-serif)!important;font-size:16px!important;line-height:1.65!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;-webkit-mask-image:none!important;mask-image:none!important;max-width:46ch}
.wp-block-gallery.is-style-jh-stories figure.wp-block-image figcaption strong,.wp-block-gallery.is-style-jh-stories figure.wp-block-image figcaption em:first-child{font-family:var(--jh-mono);font-style:normal;font-weight:400;font-size:13px;letter-spacing:.02em;color:var(--jh-muted);display:block;margin-bottom:10px}
.wp-block-gallery.is-style-jh-stories>figcaption{font-family:var(--jh-mono);font-size:13px;color:var(--jh-muted);text-align:left}
@media (max-width:760px){.wp-block-gallery.is-style-jh-stories.has-nested-images figure.wp-block-image{grid-template-columns:minmax(0,1fr);gap:16px}.wp-block-gallery.is-style-jh-stories figure.wp-block-image figcaption{max-width:none}}

/* Lightbox caption (shown when the image has one). */
.jh-lightbox__text{font-family:var(--jh-sans,"Instrument Sans",system-ui,sans-serif);font-size:15px;line-height:1.6;color:#e8e6e1;max-width:62ch;margin:14px auto 0;text-align:left;max-height:26vh;overflow:auto}
.jh-lightbox__text:empty{display:none}
.jh-lightbox--long .jh-lightbox__inner{flex-direction:row;gap:40px;align-items:center}
.jh-lightbox--long .jh-lightbox__inner>img{max-width:58vw}
.jh-lightbox--long .jh-lightbox__text{max-height:calc(100vh - 160px);margin:0;max-width:44ch;font-size:16px}
.jh-lightbox__inner>.jh-lightbox__count{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);margin:0}
@media (max-width:900px){.jh-lightbox--long .jh-lightbox__inner{flex-direction:column;gap:14px;justify-content:flex-start;overflow:auto}.jh-lightbox--long .jh-lightbox__inner>img{max-width:100%;max-height:55vh}.jh-lightbox--long .jh-lightbox__text{max-height:none;max-width:62ch}}

/* Viewer: long captions read as text, not a label. */
.jh-viewer__slide figcaption.is-long{font-family:var(--jh-sans,"Instrument Sans",system-ui,sans-serif);font-size:15px;line-height:1.6;text-align:left;max-width:62ch}

/* Default gallery layout: captions sit underneath each image, never over it. */
.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image{flex-direction:column!important;justify-content:flex-start!important}
.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image::before{display:none!important;content:none!important}
.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image>a,.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image>img{flex:1 1 auto!important;min-height:0}
.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image figcaption{position:static!important;flex:none!important;width:100%!important;max-height:none!important;overflow:visible!important;margin:0!important;padding:8px 0 0!important;background:none!important;color:var(--jh-muted)!important;text-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;-webkit-mask-image:none!important;mask-image:none!important;font-family:var(--jh-mono);font-size:12px!important;line-height:1.4!important;text-align:left!important}
.wp-block-gallery.has-nested-images:not([class*="is-style-jh-"]) figure.wp-block-image figcaption::before{display:none!important}

/* Book volumes (In Amber series page): cover on a mount, catalogue line, synopsis, link. */
.jh-volumes{display:grid;gap:64px;margin:48px 0}
.jh-volume{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:44px;align-items:start}
.jh-volume__mount{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:var(--jh-mount,#fbf9f4);text-decoration:none;border:0}
.jh-volume__mount img{display:block;width:auto!important;height:auto!important;max-width:70%!important;max-height:80%!important;object-fit:contain;transition:transform .35s ease}
.jh-volume__mount:hover img{transform:translateY(-6px)}
.jh-volume__text{padding-top:4px}
.jh-volume__meta{font-family:var(--jh-mono,monospace);font-size:12px;color:var(--jh-muted,#555);margin:0 0 8px;letter-spacing:.01em}
.jh-volume__title{font-size:clamp(24px,2.6vw,32px);font-weight:500;line-height:1.15;margin:0 0 18px}
.jh-volume__title a{color:inherit;text-decoration:none;border:0}
.jh-volume__title a:hover{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}
.jh-volume__synopsis{max-width:56ch;font-size:16px;line-height:1.65;color:var(--jh-ink,#141414)}
.jh-volume__synopsis p{margin:0 0 .8em}
.jh-volume__link{display:inline-block;margin-top:10px;color:var(--jh-ink,#141414);text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px;font-size:15px}
.jh-volume__link:hover{border-bottom-color:transparent}
.jh-volumes__empty{font-family:var(--jh-mono,monospace);font-size:13px;color:var(--jh-muted);background:var(--jh-panel);padding:16px}
@media (max-width:700px){.jh-volumes{gap:48px}.jh-volume{grid-template-columns:minmax(0,1fr);gap:20px}}

/* Museum print with a chosen picture: an ordinary print, same as the others. */
.jh-print--museum.jh-print--museum-img .jh-print__paper{background:var(--jh-paper);color:var(--jh-print-ink)}


/* ---------- Grounds: the colour switcher (html[data-ground]) ---------- */
html[data-ground="white"]{--jh-bg:#ffffff;--jh-mount:#f4f3f0;--jh-panel:#f7f6f3}
html[data-ground="archive"]{--jh-bg:#dfe4e1;--jh-mount:#eef1ef;--jh-panel:#eef1ef;--jh-card:#cdd5d0;--jh-footer:#c9d2cd;--jh-line:#bcc6c0;--jh-muted:#47524c}
html[data-ground="dark"]{--jh-bg:#1d1b18;--jh-ink:#efebe3;--jh-muted:#b3ac9f;--jh-line:#3b3732;--jh-mount:#27241f;--jh-panel:#27241f;--jh-card:#2e2a25;--jh-footer:#15130f;--jh-field:#27241f;--jh-on-ink:#1d1b18;--jh-ink-hover:#d6d0c4;--jh-dark:#0c0b09;--jh-archive:#3c4741;color-scheme:dark}
html[data-ground="dark"] a:hover{color:#a9c2b4}
html[data-ground="dark"] .jh-viewer__slide figcaption{color:#e8e4dc}
html[data-ground="dark"] .jh-print__label span{color:#5a544b}

.jh-grounds{align-self:center;display:flex;align-items:center;gap:8px;margin:0;padding:0;border:0}
.jh-grounds legend{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
.jh-grounds button{width:22px;height:22px;min-width:22px;padding:0;border-radius:50%;border:1px solid var(--jh-muted);background:var(--sw);cursor:pointer;position:relative}
.jh-grounds button::after{content:"";position:absolute;inset:-11px}
.jh-grounds button[aria-pressed="true"]{box-shadow:0 0 0 2px var(--jh-bg),0 0 0 3px var(--jh-ink)}
