/* ==========================================================================
   Glagoslav — global brand stylesheet (Phase 1)
   Source of truth: reference/glagoslav-design-system.md
   Loaded site-wide via the glg-main enqueue in functions.php.

   SAFE-FOR-LIVE scope: design tokens, brand font-family defaults, and the
   shared/global component classes only. The prototypes' universal
   `*{margin:0;padding:0}` reset is intentionally NOT included here — it would
   collapse Astra / Elementor / WooCommerce spacing on existing pages. Page-
   specific components (hero, catalogue block, A–Z directory, stats band) live
   with their Elementor templates, not here.
   ========================================================================== */

/* 1. Colour tokens -------------------------------------------------------- */
:root{
  --paper:#ffffff;       /* base background            */
  --paper-soft:#faf9f6;  /* alternate sections, footer */
  --tint:#f1f8f8;        /* teal-tint blocks           */
  --ink:#171717;         /* text                       */
  --muted:#6b6b6b;       /* secondary text             */
  --teal:#008b96;        /* buttons, icons, fills      */
  --teal-dark:#006b73;   /* teal TEXT and links (AA)   */
  --line:#e7e5e0;        /* hairlines, borders         */
  --ph:#ece9e3;          /* image placeholder fill     */
}

/* 2. Brand typography defaults -------------------------------------------
   Font-family only, so Elementor / Astra inherit the right faces while their
   own sizing and spacing are left intact. DM Serif Display ships weight 400
   only — pin headings to 400 to avoid faux-bold.                            */
body{font-family:"Libre Franklin",system-ui,-apple-system,sans-serif;}
h1,h2,h3,h4,h5,h6{font-family:"DM Serif Display",Georgia,serif;font-weight:400;}

/* 3. Content frame -------------------------------------------------------- */
.glg .wrap,
.wrap{max-width:1180px;margin:0 auto;padding:0 40px;}

/* 4. Section rhythm ------------------------------------------------------- */
.sec{padding:72px 0;}
.sec.alt{background:var(--paper-soft);}
.sec.tint{background:var(--tint);}

/* 5. Section heading pattern (.shead) ------------------------------------- */
.eyebrow{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:14px;}
.shead{margin-bottom:40px;}
.shead h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2rem,3vw,2.5rem);line-height:1.08;}
.shead p{color:var(--muted);font-size:.98rem;margin-top:8px;max-width:44ch;}
.shead.row{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;}
.tlink{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:500;font-size:.94rem;white-space:nowrap;border-bottom:1px solid var(--ink);padding-bottom:3px;transition:color .2s,border-color .2s;}
.tlink:hover{color:var(--teal-dark);border-color:var(--teal);}
.tlink svg{width:15px;height:15px;}

/* 6. Buttons (real page CTAs only — never on book cards) ------------------ */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--teal);color:#fff;border:none;border-radius:2px;padding:0 30px;height:52px;font-family:"Libre Franklin",system-ui,sans-serif;font-weight:600;font-size:1rem;line-height:1;cursor:pointer;transition:background .2s,transform .2s;}
.btn:hover{background:var(--teal-dark);transform:translateY(-1px);color:#fff;}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);}
.btn.ghost:hover{border-color:var(--teal);color:var(--teal-dark);}

/* 7. Covers + the two book-grid patterns --------------------------------- */
/* Cover aspect ratio is locked at 127:203. */

/* (a) Marketing book row — 4-up, text centred, author above title */
.bookgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:44px 34px;}
.bcard{display:block;box-sizing:border-box;}
.bcover{margin-bottom:18px;overflow:hidden;}
.bcover img{width:100%;height:auto;box-shadow:0 12px 28px rgba(20,20,20,.14);transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;}
.bcard:hover .bcover img{transform:translateY(-7px);box-shadow:0 20px 38px rgba(20,20,20,.2);}
.bmeta{text-align:center;display:flex;flex-direction:column;}
.bmeta .au{font-size:.83rem;color:var(--muted);margin-bottom:6px;order:-1;}
.bmeta h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.16rem;line-height:1.2;margin-bottom:7px;}
.bmeta .pr{font-size:.84rem;color:var(--ink);}

/* (b) Archive / listing grid — fixed 210px covers, left-aligned */
.shopgrid{display:grid;grid-template-columns:repeat(auto-fit,210px);justify-content:start;gap:46px 34px;}
.scard{display:block;box-sizing:border-box;}
.scard .cv{aspect-ratio:127/203;overflow:hidden;border-radius:2px;background:var(--ph);}
.scard .cv img{width:100%;height:100%;object-fit:cover;}

/* 8. Responsive breakpoints (match the prototypes) ----------------------- */
@media(max-width:900px){
  .bookgrid{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:560px){
  .shopgrid{grid-template-columns:repeat(2,1fr);}
}
@media(max-width:480px){
  .glg .wrap,
  .wrap{padding:0 22px;}
}

/* ==========================================================================
   Site header + footer (Phase 2)
   Scoped under #glg-header / #glg-mobnav / #glg-mobBackdrop / #glg-footer so the
   prototype's generic class names (.nav, .menu, .social, .cart) cannot collide
   with Astra / WooCommerce / Elementor. No universal reset.
   ========================================================================== */
body.glg-noscroll{overflow:hidden;}

/* header */
#glg-header{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1180px;margin:0 auto;padding:24px 40px;border-bottom:1px solid var(--line);background:var(--paper);box-sizing:border-box;}
#glg-header *{box-sizing:border-box;}
#glg-header .brand b{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.7rem;color:var(--ink);}
#glg-header .brand span{display:block;font-size:.6rem;letter-spacing:.36em;color:var(--muted);text-transform:uppercase;margin-top:4px;}
#glg-header .brand{display:inline-flex;align-items:center;}
#glg-header .glg-logo{height:38px;width:auto;max-width:none;display:block;}
#glg-mobnav .mobnav-top .glg-logo{height:30px;width:auto;max-width:none;display:block;margin-left:-3px;}
#glg-header .nav{display:flex;gap:24px;font-size:.92rem;}
#glg-header .nav a{padding:4px 0;border-bottom:1px solid transparent;white-space:nowrap;color:var(--ink);transition:border-color .2s,color .2s;}
#glg-header .nav a:hover,#glg-header .nav a.on{color:var(--teal-dark);border-color:var(--teal);}
#glg-header .tools{display:flex;align-items:center;gap:16px;}
#glg-header .tools a,#glg-header .tools button{color:var(--ink);display:inline-flex;align-items:center;}
#glg-header .tools svg{width:21px;height:21px;display:block;}
#glg-header .cart{position:relative;}
#glg-header .cart i{position:absolute;top:-7px;right:-9px;background:var(--teal);color:#fff;font-style:normal;font-size:.62rem;font-weight:600;min-width:15px;height:15px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 3px;}
/* Hamburger: hidden on desktop, shown only ≤1040 (inverse of .nav). Scoped to `.tools .menu`
   (1,2,0) so its display wins over #glg-header .tools button{display:inline-flex} (1,1,1); without
   the bump that button rule forces the burger visible on desktop, duplicating the full nav. */
#glg-header .tools .menu{display:none;background:none;border:none;cursor:pointer;color:var(--ink);padding:0;}

/* slide-in drawer */
#glg-mobBackdrop{position:fixed;inset:0;background:rgba(20,20,20,.42);opacity:0;visibility:hidden;transition:opacity .3s;z-index:9998;}
#glg-mobBackdrop.open{opacity:1;visibility:visible;}
#glg-mobnav{position:fixed;top:0;right:0;height:100%;width:min(366px,86vw);background:var(--paper);box-shadow:-12px 0 44px rgba(0,0,0,.14);transform:translateX(100%);transition:transform .32s cubic-bezier(.4,0,.2,1);z-index:9999;display:flex;flex-direction:column;padding:22px 26px 28px;overflow-y:auto;box-sizing:border-box;}
#glg-mobnav *{box-sizing:border-box;}
#glg-mobnav.open{transform:none;}
#glg-mobnav .mobnav-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
#glg-mobnav .mobnav-top b{font-family:"DM Serif Display",Georgia,serif;font-size:1.45rem;color:var(--ink);}
#glg-mobnav .mobclose{background:none;border:none;cursor:pointer;color:var(--ink);padding:6px;line-height:0;}
#glg-mobnav .mobclose svg{width:22px;height:22px;}
#glg-mobnav .mobnav-links{display:flex;flex-direction:column;}
#glg-mobnav .mobnav-links a{font-size:1.1rem;padding:15px 2px;border-bottom:1px solid var(--line);color:var(--ink);transition:color .2s,padding-left .2s;}
#glg-mobnav .mobnav-links a:hover,#glg-mobnav .mobnav-links a.on{color:var(--teal-dark);padding-left:6px;}
#glg-mobnav .mobnav-foot{margin-top:auto;padding-top:22px;display:flex;gap:22px;}
#glg-mobnav .mobnav-foot a{font-size:.92rem;color:var(--teal-dark);display:inline-flex;align-items:center;gap:8px;}
#glg-mobnav .mobnav-foot svg{width:17px;height:17px;}

/* footer */
#glg-footer{background:var(--paper-soft);border-top:1px solid var(--line);box-sizing:border-box;}
#glg-footer *{box-sizing:border-box;}
#glg-footer .ftin{max-width:1180px;margin:0 auto;padding:56px 40px 44px;display:flex;flex-wrap:wrap;gap:40px 56px;justify-content:flex-start;}
#glg-footer .ftcol{min-width:150px;}
#glg-footer .ftcol h4{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;}
#glg-footer .ftcol a,#glg-footer .ftcol .ftnote{display:block;font-size:.9rem;margin-bottom:9px;color:var(--ink);transition:color .2s;}
#glg-footer .ftcol a:hover{color:var(--teal-dark);}
#glg-footer .ftcol .ftnote{color:var(--muted);}
#glg-footer .ftbrand b{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.3rem;color:var(--ink);}
#glg-footer .ftbrand-logo{display:inline-block;line-height:0;}
#glg-footer .ftbrand .glg-logo{height:32px;width:auto;max-width:none;display:block;margin-left:-3px;}
#glg-footer .ftbrand p{font-size:.88rem;color:var(--muted);margin-top:10px;max-width:34ch;}
#glg-footer .social{display:flex;gap:17px;margin-top:18px;}
#glg-footer .social a{color:var(--teal);font-size:1.15rem;line-height:1;transition:color .2s;display:inline-block;}
#glg-footer .social a:hover{color:var(--teal-dark);}
#glg-footer .glg-subscribe{color:var(--teal-dark);}
#glg-footer .ftbar{border-top:1px solid var(--line);}
#glg-footer .ftbar a{color:var(--teal-dark);text-decoration:none;}
#glg-footer .ftbar a:hover{text-decoration:underline;}
#glg-footer .ftbar > div{max-width:1180px;margin:0 auto;padding:18px 40px;font-size:.78rem;color:var(--muted);display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;}

@media(max-width:1040px){
  #glg-header .nav{display:none;}
  #glg-header .tools .menu{display:block;}
}
@media(max-width:480px){
  #glg-header{padding-left:22px;padding-right:22px;}
  #glg-header .glg-logo{height:32px;}
  #glg-footer .ftin{padding-left:22px;padding-right:22px;}
  #glg-footer .ftbar > div{padding-left:22px;padding-right:22px;}
}

/* ==========================================================================
   WooCommerce product cards + archive grid (Phase 3, step 1)
   Card markup: woocommerce/content-product.php (.glg-card). Scoped under the Woo
   loop containers + archive bodies so Astra / WooCommerce / Elementor defaults
   don't fight it. No universal reset.
   ========================================================================== */

/* the card — every loop using content-product.php (archives + related products) */
ul.products li.product .glg-card{display:block;color:var(--ink);}
ul.products li.product .glg-card__cv{position:relative;margin-bottom:16px;}
ul.products li.product .glg-card__cv img{width:100%;aspect-ratio:127/203;object-fit:cover;display:block;border-radius:2px;background:var(--ph);box-shadow:0 12px 28px rgba(20,20,20,.14);transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;}
ul.products li.product .glg-card:hover .glg-card__cv img{transform:translateY(-7px);box-shadow:0 20px 38px rgba(20,20,20,.2);}
/* Pre-order badge pinned to the cover's top-left (content-product.php renders it inside
   .glg-card__cv only when _glg_preorder=yes). Reuses the .glg-preorder palette (soft --tint
   bg + teal-dark text + teal border, NOT solid teal) sized down for a card corner — short,
   uppercase, no date (date stays on the single-product badge). tint bg (not transparent) keeps
   it legible on light AND dark covers; absolute so it doesn't shift the grid or 127:203 ratio;
   lifts with the cover on hover. It sits inside the whole-card <a>, so the link is unaffected. */
ul.products li.product .glg-card__badge{position:absolute;top:8px;left:8px;z-index:2;padding:4px 8px;background:var(--tint);border:1px solid var(--teal);border-radius:2px;color:var(--teal-dark);font-size:.62rem;line-height:1;text-transform:uppercase;letter-spacing:.1em;font-weight:600;text-decoration:none;transition:transform .35s cubic-bezier(.22,1,.36,1);}
ul.products li.product .glg-card:hover .glg-card__badge{transform:translateY(-7px);}
ul.products li.product .glg-card__ct{display:flex;flex-direction:column;text-align:left;}
ul.products li.product .glg-card__au{font-size:.83rem;color:var(--muted);margin-bottom:6px;}
ul.products li.product .glg-card__ti{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.16rem;line-height:1.2;margin:0 0 7px;color:var(--ink);}
ul.products li.product .glg-card__pr,
ul.products li.product .glg-card__pr .woocommerce-Price-amount{font-size:.84rem;color:var(--ink);font-weight:400;}
ul.products li.product .glg-card__pr del{color:var(--muted);}

/* archive/listing grid (.shopgrid): shop, category, tag, author, search */
body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) ul.products{
  display:grid;grid-template-columns:repeat(auto-fit,210px);justify-content:start;gap:46px 34px;margin:0;padding:0;list-style:none;
}
body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) ul.products::before,
body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) ul.products::after{content:none;}
body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) ul.products li.product{width:auto!important;margin:0!important;float:none!important;clear:none!important;}

@media(max-width:560px){
  body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) ul.products{grid-template-columns:repeat(2,1fr);gap:30px 18px;}
}

/* Related products row (Phase 3, step 5): "You may also like". Reuses the .glg-card card styles
   above (same as the archive; content-product.php, no buttons). 4-up here, 2-up ≤900. Strong
   body.single-product div.product prefix to beat Astra's flex/float related layout. */
body.single-product div.product .related.products{border-top:1px solid var(--line);padding:46px 0 0;margin:40px 0 0;clear:both;}
body.single-product div.product .related.products > h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.55rem;line-height:1.1;margin:0 0 24px;color:var(--ink);}
body.single-product div.product .related.products ul.products{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 30px;margin:0;padding:0;list-style:none;}
body.single-product div.product .related.products ul.products::before,
body.single-product div.product .related.products ul.products::after{content:none;}
body.single-product div.product .related.products ul.products li.product{width:auto!important;margin:0!important;float:none!important;clear:none!important;}
@media(max-width:900px){
  body.single-product div.product .related.products ul.products{grid-template-columns:repeat(2,1fr);gap:32px 22px;}
}

/* ==========================================================================
   WooCommerce archive layout (Phase 3, step 2): full-width, controls bar, pager
   ========================================================================== */

/* Unified content frame (design-system §3): cap Astra's wider container to the 1180px
   brand frame AND apply the 40px gutter (22px ≤480) so archive content shares the exact
   left/right edge of #glg-header (.hd), the footer (.ftin), and every .wrap page. Covers
   all product + post archives, the blog index, and search. repeat(auto-fit,210px) still
   lands 4 covers per row. */
body:is(.archive,.blog,.search,.single-product) .site-content > .ast-container{max-width:1180px !important;padding-left:40px !important;padding-right:40px !important;}
/* ≤480: tighten to the 22px mobile gutter. MUST stay AFTER the 40px rule above — same selector,
   both !important, equal specificity, so source order decides. Placed earlier (in the responsive
   block) it lost, and mobile content sat at 40px while header/footer were already 22px. */
@media(max-width:480px){
  body:is(.archive,.blog,.search,.single-product) .site-content > .ast-container{padding-left:22px !important;padding-right:22px !important;}
}

/* Top controls bar: result count (left) + ordering dropdown (right). */
.glg-shopbar{display:flex;align-items:center;flex-wrap:wrap;gap:14px 18px;margin:0 0 36px;}
.glg-shopbar .woocommerce-result-count{float:none;margin:0;font-size:.9rem;color:var(--muted);}
.glg-shopbar .woocommerce-ordering{float:none;margin:0;position:relative;}
.glg-shopbar .woocommerce-ordering select,
.glg-shopbar select.orderby{appearance:none;-webkit-appearance:none;background:var(--paper);border:1px solid var(--line);border-radius:2px;padding:9px 38px 9px 14px;font-family:"Libre Franklin",system-ui,sans-serif;font-size:.85rem;color:var(--ink);cursor:pointer;line-height:1.2;}
.glg-shopbar .woocommerce-ordering select:focus{outline:none;border-color:var(--teal);}
.glg-shopbar .woocommerce-ordering::after{content:"";position:absolute;right:16px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-72%) rotate(45deg);pointer-events:none;}
/* filter dropdowns (Category, and later Format) */
.glg-shopbar__filters{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-right:auto;}
.glg-shopbar .glg-select{position:relative;display:inline-block;}
.glg-shopbar .glg-filter{appearance:none;-webkit-appearance:none;background:var(--paper);border:1px solid var(--line);border-radius:2px;padding:9px 38px 9px 14px;font-family:"Libre Franklin",system-ui,sans-serif;font-size:.85rem;color:var(--ink);cursor:pointer;line-height:1.2;max-width:230px;}
.glg-shopbar .glg-filter:focus{outline:none;border-color:var(--teal);}
.glg-shopbar .glg-select::after{content:"";position:absolute;right:16px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-72%) rotate(45deg);pointer-events:none;}
/* Stack the controls into a full-width column at the design-system 560px archive breakpoint
   (matches .shopgrid -> 2-col, glagoslav.css ~83). Reset .glg-filter's 230px cap so the filter
   selects fill their wrappers — otherwise they stay 230px while the chevron pins to the full-width
   wrapper's right edge (detached) and only Sort (no cap) goes full-width. */
@media(max-width:560px){
  .glg-shopbar{flex-direction:column;align-items:stretch;gap:12px;}
  .glg-shopbar__filters{margin-right:0;width:100%;}
  .glg-shopbar__filters .glg-select,.glg-shopbar .glg-filter,.glg-shopbar .woocommerce-ordering,.glg-shopbar .woocommerce-ordering select{width:100%;}
  .glg-shopbar .glg-filter{max-width:none;}
}

/* archive header band (eyebrow + DM Serif title + one-line description) */
body:is(.post-type-archive-product,.tax-product_cat,.tax-product_tag,.tax-pwb-brand,.search) .woocommerce-products-header{display:none;}
.glg-archive-head{margin:0 0 30px;padding-top:40px;}
.glg-archive-head__eyebrow{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:14px;}
.glg-archive-head__title{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2.2rem,3.6vw,3rem);line-height:1.05;margin:0;color:var(--ink);}
.glg-archive-head__desc{font-size:1.05rem;line-height:1.6;color:var(--muted);max-width:62ch;margin:14px 0 0;}
/* Author (pwb-brand) archive bio — between the name band and the shopbar. Readable
   measure; matches the author prototype's .authbio. Renders only when a bio exists. */
.glg-author-bio{max-width:680px;margin:0 0 32px;text-align:justify;}
.glg-author-bio p{font-size:.95rem;line-height:1.7;color:#333;margin:0 0 12px;}
.glg-author-bio p:last-child{margin-bottom:0;}
.glg-author-bio a{color:var(--teal-dark);border-bottom:1px solid rgba(0,107,115,.4);transition:border-color .2s;}
.glg-author-bio a:hover{border-color:var(--teal-dark);}
.glg-author-bio em{font-style:italic;}
.glg-author-bio ul,.glg-author-bio ol{margin:0 0 12px;padding-left:1.25em;}
.glg-author-bio li{font-size:.95rem;line-height:1.7;color:#333;margin:0 0 4px;}

/* Pagination: spaced above, left-aligned, brand-styled (teal active). */
/* Pagination — WooCommerce shop/archives + Astra blog (.ast-pagination), unified.
   Scoped strictly to the pager. Square 40x40 cells, no radius/shadow/outline. */
nav.woocommerce-pagination{display:block;width:100%;text-align:left;margin-top:56px;}
.woocommerce-pagination ul.page-numbers,
.ast-pagination{display:flex !important;flex-flow:row wrap;align-items:center;justify-content:flex-start;gap:6px;list-style:none;margin:0 auto;padding:0;border:0;width:100%;}
.woocommerce-pagination ul.page-numbers > li,
.ast-pagination > li{display:flex;margin:0;padding:0;border:0;background:none;}
/* Flush-left the pager: Astra's ul{margin:1px} (spec 0,2,2) overrode our margin, and WooCommerce's
   ::before/::after clearfix become leading/trailing flex items (+gap:6px) that push the first cell
   ~7px off the content edge. Kill both so row 1 and any wrapped rows align to the card's left edge. */
.woocommerce-pagination ul.page-numbers{margin:0 !important;}
.woocommerce-pagination ul.page-numbers::before,
.woocommerce-pagination ul.page-numbers::after{content:none !important;display:none !important;}
/* Astra's WC-compat draws a 1px var(--ast-border-color) border + 5px margins on the <li>
   (.woocommerce-js nav.woocommerce-pagination ul li, specificity 0,2,3), out-specifying the reset
   above and double-bordering every cell (the "dark outer frame"). Kill it so only our single
   .page-numbers border shows; spacing then comes from the ul's gap alone. */
nav.woocommerce-pagination ul.page-numbers li,
.woocommerce nav.woocommerce-pagination ul.page-numbers li{border:0 !important;margin:0 !important;}
.woocommerce-pagination .page-numbers,
.ast-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;min-width:40px;padding:0;box-sizing:border-box;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--ink);font-size:.9rem;line-height:1;box-shadow:none;outline:none;transition:color .2s,background .2s,border-color .2s;}
.woocommerce-pagination a.page-numbers:hover,
.ast-pagination a.page-numbers:hover{background:var(--teal-dark)!important;border-color:var(--teal-dark)!important;color:#fff!important;}
.woocommerce-pagination .page-numbers.current,
.ast-pagination .page-numbers.current{background:var(--teal)!important;border:1px solid var(--teal)!important;color:#fff!important;box-shadow:none!important;outline:none!important;}
.woocommerce-pagination .page-numbers:focus,
.woocommerce-pagination .page-numbers:focus-visible,
.ast-pagination .page-numbers:focus,
.ast-pagination .page-numbers:focus-visible{outline:none!important;box-shadow:none!important;}
.woocommerce-pagination .page-numbers.dots,
.ast-pagination .page-numbers.dots{border:0;background:transparent;width:auto;min-width:24px;}

/* Header breathing room at full desktop width (#5). */
#glg-header{padding-top:28px;padding-bottom:28px;}
/* #2 Balance the desktop header (≥1180, where the 1180 frame has slack): logo + nav as a tight
   block on the LEFT, icon cluster pushed to the right edge (variant 1b). justify-content:flex-start
   packs from the left with a 40px logo↔nav gap (nav items stay 24px); margin-left:auto on .tools
   absorbs the slack so search/cart sit flush at the frame's right edge. Scoped ≥1180 so the tighter
   1040–1180 nav still fits; ≤1040 .nav is display:none, .tools has no auto-margin, and the
   hamburger (logo + tools, space-between) is untouched. */
@media(min-width:1180px){
  #glg-header{justify-content:flex-start;gap:40px;}
  #glg-header .nav{gap:24px;}
  #glg-header .tools{margin-left:auto;}
}

/* Cookie-consent (plugin: beautiful-and-responsive-cookie-consent / cookieconsent v2).
   Hide ONLY the persistent floating revoke/settings button. The GDPR banner (.cc-window)
   is untouched and still shows for fresh visitors. Re-opening consent is handled by our
   footer "Cookie Settings" link, which carries the plugin's OWN .nsc-bara-manage-cookie-settings
   class — the plugin auto-wires that class to revokeChoice() at init (no plugin edits). */
.cc-revoke{display:none !important;}

/* ==========================================================================
   Single product page — Phase 3, step 1: hero layout + heading system.
   Cover at NATURAL ratio (not the 127:203 archive lock). Variations/cart
   (step 2) and tabs (step 3) are intentionally left at WooCommerce default.
   The 1180/40 frame is shared via the .ast-container cap above (.single-product
   was added to its :is()).
   ========================================================================== */

/* Kill Astra's horizontal padding (~107px) so the product fills the 1180/40 frame, AND its
   ~85px container padding-top. That top padding is set ONLY on single products (Astra's
   woocommerce.min.css); the shop archive container is padding-top:0. Zeroing it here drops the
   header->breadcrumb gap down to the shared #primary 64px top margin — the exact value already
   approved on the shop archive. (padding-bottom is left as-is: below-the-fold, not in scope.) */
.single-product .ast-woocommerce-container{padding-top:0 !important;padding-left:0 !important;padding-right:0 !important;}

/* Breadcrumb — moved above .product (functions.php). Brand .crumb look. The #primary 64px top
   margin already supplies the header gap (matches the archive), so NO top padding here; the 34px
   margin-bottom is the breadcrumb->hero breathing room (= the prototype's .prod top padding). The
   gap lives on the breadcrumb because Astra's .ast-separate-container.single-product
   .ast-article-single{padding:0} (0,3,0) beats any .product padding we set (0,2,1). */
.single-product .woocommerce-breadcrumb{font-size:.82rem;color:var(--muted);margin:0 0 34px;padding:0;}
.single-product .woocommerce-breadcrumb a{color:var(--muted);transition:color .2s;}
.single-product .woocommerce-breadcrumb a:hover{color:var(--ink);}
.single-product .summary .woocommerce-breadcrumb{display:none;} /* belt-and-suspenders if the move misses */

/* Hero grid lives in a .glg-hero wrapper (added via functions.php), NOT on .product — so the
   sticky gallery's containing block is the hero (gallery + summary) only, not the whole .product
   (which also holds the tabs/related below; sticking through that whole height made the cover ride
   over the tabs on scroll). 460 cover column + 1fr details. Tabs/related are plain blocks under it.
   NOTE: .product padding-top is intentionally NOT set — Astra's woocommerce.min.css forces
   .ast-separate-container.single-product .ast-article-single{padding:0} at (0,3,0), which our
   (0,2,1) can't beat; the breadcrumb's margin-bottom owns the breadcrumb->hero gap instead. */
.single-product .glg-hero{display:grid;grid-template-columns:460px minmax(0,1fr);gap:60px;align-items:start;margin-bottom:14px;}
/* margin-bottom:0 kills Astra's 2em (32px) bottom margin on .summary + the gallery, which (as grid
   items) was padding the grid row 32px below the content and inflating the buybox->tabs gap. */
.single-product .glg-hero > *{float:none !important;width:auto !important;margin-bottom:0 !important;}
.single-product .glg-hero > .woocommerce-product-gallery{grid-column:1;}
.single-product .glg-hero > .summary{grid-column:2;}

/* Media column: sticky; cover at natural ratio with a deep shadow; thumbs as a left strip. */
.single-product .woocommerce-product-gallery{position:sticky !important;top:30px;float:none;width:auto;margin:0;display:flex;flex-direction:row-reverse;gap:14px;align-items:flex-start;}
.single-product .woocommerce-product-gallery .flex-viewport,
.single-product .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper{flex:1 1 auto;min-width:0;}
.single-product .woocommerce-product-gallery img{height:auto;box-shadow:0 26px 54px rgba(20,20,20,.18);}
.single-product .woocommerce-product-gallery .flex-control-thumbs{flex:0 0 58px;display:block;width:58px;list-style:none;margin:0;padding:0;}
.single-product .woocommerce-product-gallery .flex-control-thumbs li{display:block !important;width:58px !important;float:none !important;margin:0 0 10px !important;padding:0 !important;}
.single-product .woocommerce-product-gallery .flex-control-thumbs img{display:block;width:100% !important;height:auto !important;border:1px solid var(--line);border-radius:2px;padding:3px;background:#fff;box-sizing:border-box;cursor:pointer;box-shadow:none;transition:border-color .2s;}
.single-product .woocommerce-product-gallery .flex-control-thumbs img.flex-active,
.single-product .woocommerce-product-gallery .flex-control-thumbs img:hover{border-color:var(--teal);}
.single-product .woocommerce-product-gallery__trigger{z-index:2;}

/* Details column: flex column so CSS `order` controls the heading system regardless
   of Astra's DOM order. author -> title -> edition -> blurb -> credits -> preview -> cart. */
.single-product .summary{display:flex !important;flex-direction:column;}
.single-product .summary > *{order:5;}
.single-product .summary .pwb-single-product-brands{order:1;font-size:.96rem;margin:0 0 10px;}
.single-product .summary .pwb-single-product-brands a{color:var(--teal-dark);}
.single-product .summary .pwb-single-product-brands a:hover{color:var(--ink);}
/* Multi-author: Perfect Brands prints adjacent <a> links with no separator (the
   separator option is empty), so two+ authors jam together. Add a comma between them. */
.single-product .summary .pwb-single-product-brands a:not(:last-child)::after{content:", ";color:var(--muted);}
.single-product .summary h1.product_title{order:2;font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:2.7rem;line-height:1.08;margin:0 0 10px;color:var(--ink);}
.single-product .summary .glg-edition{order:3;font-style:italic;color:var(--muted);font-size:1rem;margin:0 0 20px;}
.single-product .summary .woocommerce-product-details__short-description{order:4;font-size:1.06rem;line-height:1.6;max-width:46ch;color:var(--ink);margin:0 0 18px;}
.single-product .summary .glg-credits{order:5;display:flex;flex-direction:column;gap:5px;font-size:.85rem;color:var(--muted);margin:0 0 8px;}
.single-product .summary .glg-preview{order:6;display:inline-flex;align-items:center;gap:8px;width:max-content;margin:4px 0 0;font-size:.86rem;color:var(--teal-dark);}
.single-product .summary .glg-preview:hover{color:var(--ink);}

/* Step 4.2: hide Perfect Brands' "Author:" prefix span — keep the bare clickable teal-dark name
   link (the prototype shows the name only, no label). CSS only; Perfect Brands output untouched. */
.single-product .summary .pwb-single-product-brands .pwb-text-before-brands-links{display:none;}

/* Step 4.2: pre-order badge — soft TINT pill + teal-dark text (NOT solid teal, so it doesn't compete
   with the teal Add-to-basket button). order:6 ties with .glg-preview, but the hook fires at pri 25
   (preview is 26) so it precedes the preview in the DOM → sits after credits, before preview/buybox.
   align-self:flex-start keeps it content-width (a pill, not full-width). Reusable component; product
   page only for now (cards reuse it later). */
.single-product .summary .glg-preorder{order:6;align-self:flex-start;display:inline-flex;align-items:center;gap:8px;margin:2px 0 6px;padding:8px 14px;background:var(--tint);border:1px solid var(--teal);border-radius:2px;color:var(--teal-dark);font-size:.74rem;line-height:1;}
.single-product .summary .glg-preorder-ico{width:14px;height:14px;flex:0 0 auto;}
.single-product .summary .glg-preorder-label{text-transform:uppercase;letter-spacing:.14em;font-weight:600;}
.single-product .summary .glg-preorder-date{letter-spacing:.01em;}
.single-product .summary form.cart{order:7;}
.single-product .summary #mollie-applepayDirect-button{order:8;}
.single-product .summary .product_meta{order:9;}
/* Hide the category line + the default variable-price range. The price moves into the
   format pills in step 2 — REVERSIBLE: delete these two rules to restore the WC price. */
.single-product .summary .single-product-category{display:none !important;}
/* Hide the variable price range ONLY (it moved into the format pills + button). SIMPLE products
   have no pills, so their price must stay visible — scope the hide to .product-type-variable. */
.single-product div.product.product-type-variable .summary > p.price{display:none !important;}
/* Simple-product price: shown above the buybox (no pills carry it), brand-styled. */
.single-product div.product.product-type-simple .summary > p.price{order:6;display:block;margin:4px 0 16px;font-size:1.4rem;line-height:1.2;color:var(--ink);}
.single-product div.product.product-type-simple .summary > p.price .amount,
.single-product div.product.product-type-simple .summary > p.price del,
.single-product div.product.product-type-simple .summary > p.price ins{color:var(--ink);text-decoration:none;}
.single-product div.product.product-type-simple .summary > p.price del{color:var(--muted);}
/* Simple-product cart: qty + Add-to-basket inline (the variable form has its own flex wrap).
   margin-top:24px matches the breathing room the variable buybox gets from
   form.variations_form.cart (margin:24px 0 14px) below — without it the PDF preview link
   (.glg-preview) sat flush (0px) against the Add-to-basket button on simple products (e.g. Quo Vadis). */
.single-product div.product.product-type-simple .summary form.cart{display:flex;align-items:center;flex-wrap:wrap;gap:12px;margin-top:24px;}

/* Step 2: format pills + add-to-basket. The variable form is the bordered buybox. */
/* margin-bottom trimmed (24->14): until the step-4 .also/.basics blocks fill this space, the buybox
   bottom border -> product_meta -> tabs-top line read as an empty "band"; tightening pulls the meta
   up under the buybox so the gap isn't an empty rectangle. */
.single-product .summary form.variations_form.cart{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:24px 0;margin:24px 0 14px;}
.single-product .variations_form .variations{display:none !important;}        /* native dropdown — pills replace it */
.single-product .variations_form .reset_variations{display:none !important;}   /* "Clear" link */
.single-product .single_variation .price,
.single-product .woocommerce-variation-price{display:none !important;}          /* price lives in the pill + the button */
.single-product .glg-fmt-label{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;}
.single-product .glg-formats{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 22px;}
/* font-weight/letter-spacing/text-transform are set explicitly: pills are <button>s, so they
   otherwise inherit Astra's customizer button typography (.menu-toggle,button,.ast-button,.button,
   input[type=submit]{font-weight:700;letter-spacing:1px;text-transform:capitalize}, inline) and read
   like bold headings. Our .single-product .glg-format-pill (0,2,1) beats Astra's `button` (0,0,1) with
   no !important; the .glg-pill-price span inherits 400/normal/none from here (prototype .opt = .9rem/400). */
.single-product .glg-format-pill{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);background:#fff;border-radius:2px;padding:11px 16px;font-family:inherit;font-size:.9rem;font-weight:400;letter-spacing:normal;text-transform:none;line-height:1;color:var(--ink);cursor:pointer;transition:border-color .2s,color .2s,background .2s;}
.single-product .glg-format-pill .glg-pill-price{color:var(--muted);font-size:.85rem;}
.single-product .glg-format-pill .glg-pill-price .amount{color:inherit;}
.single-product .glg-format-pill:hover{border-color:var(--teal);}
.single-product .glg-format-pill.glg-sel{border-color:var(--teal);color:var(--teal-dark);background:var(--tint);}
.single-product .glg-format-pill.glg-sel .glg-pill-price{color:var(--teal-dark);}
.single-product .woocommerce-variation-add-to-cart{display:flex;align-items:center;flex-wrap:wrap;gap:12px;}
.single-product .summary .quantity{margin:0;}
.single-product .summary .quantity input.qty{width:62px !important;height:50px !important;text-align:center;border:1px solid var(--line) !important;border-radius:2px;font-size:1rem;font-family:inherit;}
.single-product .summary .single_add_to_cart_button{display:inline-flex;align-items:center;gap:7px;background:var(--teal) !important;color:#fff !important;border:none !important;border-radius:2px !important;padding:0 30px !important;height:50px !important;font-weight:600 !important;font-size:.98rem !important;font-family:inherit !important;line-height:1 !important;text-transform:none !important;letter-spacing:normal !important;cursor:pointer;transition:background .2s !important;}
.single-product .summary .single_add_to_cart_button:hover{background:var(--teal-dark) !important;transform:none !important;}
.single-product .summary .single_add_to_cart_button .glg-btn-price{font-weight:500;}
.single-product .summary .product_meta{font-size:.85rem;color:var(--muted);}
.single-product .summary .product_meta a{color:var(--teal-dark);}
/* Remove Astra's redundant divider on .product_meta AND set the breathing room above it.
   woocommerce.min.css draws `.woocommerce-js div.product .product_meta{border-top:1px solid
   var(--ast-border-color); padding-top:.5em; margin:0 0 .8em}` (0,3,1): the border left a 3rd
   hairline "band" under the buybox, and the `margin:0` shorthand ATE the margin-top we set on
   `.single-product .summary .product_meta` (0,3,0) — so the .also where-to-buy block sat flush
   (0px) against SKU/Categories/Tags. The prototype has NO divider here and `.basics{margin-top:24px}`.
   body.single-product div.product (0,3,2) beats Astra without !important. */
body.single-product div.product .product_meta{border-top:0;padding-top:0;margin-top:24px;}

/* ==========================================================================
   Single product — Phase 3, step 3: tabs (Custom Product Tabs + Woo tabs).
   CSS-first restyle to the prototype's .tabnav / .panel / .detail / .review.
   Content stays plugin/Woo-driven (Max edits per product); we only style here.
   ========================================================================== */

/* Tabs section: top hairline + breathing room (prototype .tabs{padding:46px 0;border-top}). The
   hero's 28px margin-bottom gives space above the line; padding-top here gives space below it to the
   nav. Astra's `.woocommerce-js div.product .woocommerce-tabs{padding-top:2em}` (0,3,1) beat our
   (0,2,1) 46px, so prefix body.single-product div.product (0,3,2) to win and set a tighter 40px. */
body.single-product div.product .woocommerce-tabs{border-top:1px solid var(--line);padding:40px 0 0;margin:0;clear:both;}

/* Tab nav: flat underlined row (prototype .tabnav). Neutralise Astra/Woo folder-tab chrome.
   The tabs are <li><a> (NOT <button>); Astra's winning link rule is
   `.woocommerce-js div.product .woocommerce-tabs ul.tabs li a{font-weight:700}` (0,4,4) in
   woocommerce.min.css — so prefix `body.single-product div.product` (0,4,5) to beat it without
   !important, and reset weight/letter-spacing/text-transform like the pills. */
body.single-product div.product .woocommerce-tabs ul.tabs{display:flex;flex-wrap:wrap;gap:30px;margin:0 0 28px;padding:0;border:0;border-bottom:1px solid var(--line);list-style:none;overflow:visible;}
/* Kill the WooCommerce/Astra tabs clearfix pseudo-bars. ul.tabs::before draws a 1px #EBEBEB
   (--ast-border-color) bar via woocommerce.min.css and is kept visible by a clearfix rule that
   uses an ID — `.woocommerce #content div.product .woocommerce-tabs ul.tabs::before,::after
   {display:table;content:" "}` (1,4,3) — which an ID makes out-rank our (0,4,4) display:none. So
   force content:none + display:none with !important (same class of bug as the pagination ::before).
   ::after is a transparent clearfix; killed too. Our intended dividers are border-lines in --line. */
body.single-product div.product .woocommerce-tabs ul.tabs::before,
body.single-product div.product .woocommerce-tabs ul.tabs::after{content:none !important;display:none !important;background:none !important;}
body.single-product div.product .woocommerce-tabs ul.tabs li{margin:0;padding:0;background:none;border:0;border-radius:0;}
body.single-product div.product .woocommerce-tabs ul.tabs li::before,
body.single-product div.product .woocommerce-tabs ul.tabs li::after{display:none;}
body.single-product div.product .woocommerce-tabs ul.tabs li a{display:inline-block;margin:0 0 -1px;padding:0 0 14px;font-family:inherit;font-size:1rem;font-weight:400;letter-spacing:normal;text-transform:none;color:var(--muted);border-bottom:2px solid transparent;border-radius:0;transition:color .2s,border-color .2s;}
body.single-product div.product .woocommerce-tabs ul.tabs li a:hover{color:var(--ink);}
body.single-product div.product .woocommerce-tabs ul.tabs li.active a{color:var(--ink);border-bottom-color:var(--teal);}

/* Panels (prototype .panel): max 680, body rhythm. Hide the YIKES tab-title h2 (the nav labels it). */
.single-product .woocommerce-Tabs-panel{max-width:680px;}
.single-product .woocommerce-Tabs-panel>.yikes-custom-woo-tab-title{display:none;}
.single-product .woocommerce-Tabs-panel p{margin:0 0 14px;line-height:1.7;font-size:.95rem;color:var(--ink);}
/* Justify the Description tab via CSS (inline text-align:justify was stripped from the
   HTML by the formatting cleanup; the author bio matches this size + justify). */
.single-product .woocommerce-Tabs-panel--description p{text-align:justify;}
.single-product .woocommerce-Tabs-panel h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.15rem;margin:22px 0 8px;color:var(--ink);}
.single-product .woocommerce-Tabs-panel a{color:var(--teal-dark);}

/* Details (Additional information): restyle the attributes table to the prototype .detail dl (1fr 2fr).
   ISBN is homed here as a .glg-isbn-row appended via JS (functions.php), per-variation (CTL WC Isbn). */
.single-product .woocommerce-product-attributes{display:block;width:100%;margin:0;border:0 !important;font-size:.92rem;}
.single-product .woocommerce-product-attributes tbody{display:block;}
.single-product .woocommerce-product-attributes tr{display:grid;grid-template-columns:1fr 2fr;gap:10px 20px;border:0 !important;background:none !important;}
.single-product .woocommerce-product-attributes th,
.single-product .woocommerce-product-attributes td{width:auto;border:0 !important;padding:0 !important;margin:0;text-align:left;background:none !important;}
/* !important: Astra's .woocommerce-js div.product .woocommerce-tabs .shop_attributes th (0,4,2)
   sets color:--ast-global-color-2 + .woocommerce-js table.shop_attributes th (0,2,2) sets weight:500
   (the table also carries .shop_attributes); ours is (0,2,1), so force muted/400. */
.single-product .woocommerce-product-attributes th{color:var(--muted) !important;font-weight:400 !important;font-style:normal;}
.single-product .woocommerce-product-attributes td,
.single-product .woocommerce-product-attributes td p{color:var(--ink);margin:0;}
/* ISBN is homed in the Details tab (row built from the per-variation _isbn map in functions.php);
   hide the CTL plugin's original copy in .product_meta so it isn't duplicated. The wrapper is a
   <span> directly in .product_meta, so Astra's `.woocommerce-js div.product .product_meta > span
   {display:inline-block}` (0,3,2) was beating a (0,3,0) hide — prefix body.single-product div.product
   (0,4,2) to win. SIMPLE products have no Details ISBN row (no variation map), so their single ISBN
   stays in .product_meta — scope the hide to .product-type-variable only. */
body.single-product div.product.product-type-variable .product_meta .ctl-wc-isbn-isbn_wrapper{display:none;}

/* Step 4.3: "Also available" where-to-buy links (.also), rendered after the buybox (functions.php
   glg_single_also). Prototype .also/.extlink: teal-dark pill links, --line border, hover teal.
   order:8 places the block after the buybox (cart order 7), before product_meta (9). Info col only. */
.single-product .summary .also{order:8;margin:18px 0 0;}
.single-product .summary .also-label{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:0 0 12px;}
.single-product .summary .extbtns{display:flex;flex-wrap:wrap;gap:10px;}
.single-product .summary .extlink{display:inline-flex;align-items:center;gap:8px;font-size:.88rem;line-height:1;color:var(--teal-dark);border:1px solid var(--line);border-radius:2px;padding:11px 16px;transition:border-color .2s;}
.single-product .summary .extlink:hover{border-color:var(--teal);}
.single-product .summary .extlink svg{width:14px;height:14px;flex:0 0 auto;}

/* Endorsements & Reviews: real critic quotes styled as .review when present as <blockquote>
   (content is plugin-driven — we provide the look, never fabricate quotes). */
.single-product .woocommerce-Tabs-panel blockquote{border-left:2px solid var(--teal);margin:0 0 26px;padding:0 0 0 20px;}
.single-product .woocommerce-Tabs-panel blockquote p{font-family:"DM Serif Display",Georgia,serif;font-size:1.2rem;line-height:1.4;color:var(--ink);margin:0 0 8px;}
.single-product .woocommerce-Tabs-panel blockquote cite,
.single-product .woocommerce-Tabs-panel blockquote footer{display:block;font-style:normal;font-size:.85rem;color:var(--muted);}

/* Details dl -> single column on small screens (prototype @480). */
@media(max-width:480px){
  .single-product .woocommerce-product-attributes tr{grid-template-columns:1fr;gap:2px 0;}
  .single-product .woocommerce-product-attributes th{margin-top:8px;}
}

/* Mobile tab nav: a single-line horizontal scroll row instead of a ragged 2-row wrap. The 5 tabs
   (esp. the long "Endorsements and Review Quotes") don't fit a phone width, and flex-wrap stacked
   them unevenly. nowrap + overflow-x:auto keeps one clean line that scrolls only when it overflows
   (so 600-768 still fits without a scrollbar); the 1px underline stays put under the row. */
@media(max-width:768px){
  body.single-product div.product .woocommerce-tabs ul.tabs{flex-wrap:nowrap;overflow-x:auto;gap:24px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
  body.single-product div.product .woocommerce-tabs ul.tabs::-webkit-scrollbar{display:none;}
  body.single-product div.product .woocommerce-tabs ul.tabs li{flex:0 0 auto;}
  body.single-product div.product .woocommerce-tabs ul.tabs li a{white-space:nowrap;}
}

/* Collapse to one column at the design-system 900px breakpoint. */
@media(max-width:900px){
  body.single-product .glg-hero{grid-template-columns:minmax(0,1fr);gap:36px;}
  body.single-product .glg-hero > *{grid-column:1 / -1 !important;}
  /* Gallery stacks for phones: cover full-width on top, thumbnails as a centred horizontal row
     below (prototype mobile .gallery{flex-direction:column-reverse}+.thumbs{row}). Without this the
     desktop 58px left thumb-strip stays and crowds the cover on narrow screens. */
  body.single-product .woocommerce-product-gallery{position:static !important;flex-direction:column;align-items:stretch;}
  .single-product .woocommerce-product-gallery .flex-viewport,
  .single-product .woocommerce-product-gallery > .woocommerce-product-gallery__wrapper{width:100% !important;}
  .single-product .woocommerce-product-gallery .flex-control-thumbs{flex:0 0 auto;display:flex;flex-flow:row wrap;justify-content:center;gap:10px;width:auto;margin:14px 0 0;}
  .single-product .woocommerce-product-gallery .flex-control-thumbs li{width:58px !important;margin:0 !important;}
  .single-product .summary h1.product_title{font-size:2.05rem;}
}

/* ==========================================================================
   CART & CHECKOUT — ported to the design system (prototypes: glagoslav-cart /
   glagoslav-checkout). CSS-first; only the sidebar-drop + per-line ISBN live in
   functions.php. Astra beaten with body.woocommerce-cart / body.woocommerce-checkout
   prefixes; the #content clearfix is killed with content:none (an ID out-ranks classes).
   ========================================================================== */

/* ---- shared: 1180 frame + page-title hero (Astra prints header.entry-header) ---- */
/* Match the 1180 site frame (header/footer use max-width:1180 + padding:0 40px). Astra's
   .ast-container only had ~20px padding, so cart/checkout content sat 20px wider each side
   than the header/footer — pin it to the frame's 40px (22px on mobile). */
body.woocommerce-cart .ast-container,
body.woocommerce-checkout .ast-container,
body.woocommerce-account .ast-container{max-width:1180px;margin-left:auto;margin-right:auto;padding-left:40px;padding-right:40px;}
@media(max-width:480px){
  body.woocommerce-cart .ast-container,
  body.woocommerce-checkout .ast-container,
  body.woocommerce-account .ast-container{padding-left:22px;padding-right:22px;}
}
body.woocommerce-cart .entry-header,
body.woocommerce-checkout .entry-header,
body.woocommerce-account .entry-header{margin:0 0 4px;padding:0;border:0;text-align:left;}
body.woocommerce-cart .entry-title,
body.woocommerce-checkout .entry-title,
body.woocommerce-account .entry-title{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2.2rem,3.6vw,2.9rem);line-height:1.06;color:var(--ink);}
body.woocommerce-cart .entry-title::before,
body.woocommerce-checkout .entry-title::before,
body.woocommerce-account .entry-title::before{display:block;font-family:"Libre Franklin",system-ui,sans-serif;font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:14px;}
body.woocommerce-cart .entry-title::before{content:"Your basket";}
body.woocommerce-checkout .entry-title::before{content:"Secure checkout";}
body.woocommerce-account .entry-title::before{content:"Your account";}
/* our checkout notices (coupon / login toggles) to the brand look, slim */
body.woocommerce-checkout .woocommerce-form-coupon-toggle .woocommerce-info,
body.woocommerce-cart .woocommerce-info{background:var(--tint);border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:2px;color:var(--ink);font-size:.9rem;}
/* the expanded coupon form (Coupon code + Apply) needs no box border — WC's own reset
   gives it border:0 + a 2em bottom gap; keep it plain (the "Have a coupon?" toggle above
   keeps its tinted bar). */
body.woocommerce-checkout form.checkout_coupon{border:0;border-radius:0;}

/* ============================ CART ============================ */
/* two columns: items | totals (notices span full width) */
body.woocommerce-cart .woocommerce{display:grid;grid-template-columns:1fr 360px;gap:0 54px;align-items:start;}
body.woocommerce-cart .woocommerce-notices-wrapper{grid-column:1 / -1;}
body.woocommerce-cart .woocommerce-cart-form{grid-column:1;min-width:0;}
body.woocommerce-cart .cart-collaterals{grid-column:2;width:auto;float:none;margin:0;position:sticky;top:30px;}
body.woocommerce-cart .cross-sells{display:none;}

/* items table -> grid rows */
body.woocommerce-cart .woocommerce-cart-form table.cart{display:block;border:0;margin:0;background:none;}
body.woocommerce-cart .woocommerce-cart-form table.cart thead,
body.woocommerce-cart .woocommerce-cart-form table.cart tbody{display:block;}
/* WooCommerce paints `table.shop_table thead{background:#fbfbfb}` on the thead element (a grey band). Null it. */
body.woocommerce-cart .woocommerce-cart-form table.cart thead{background:none;}
body.woocommerce-cart table.cart thead tr{display:grid;grid-template-columns:72px 1fr 96px 132px 96px;gap:18px;padding:0 0 14px;border-bottom:1px solid var(--line);}
body.woocommerce-cart table.cart thead th{padding:0;border:0;background:none;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500;text-align:left;}
body.woocommerce-cart table.cart thead th.product-remove{display:none;}
body.woocommerce-cart table.cart thead th.product-price,
body.woocommerce-cart table.cart thead th.product-subtotal{text-align:right;}
body.woocommerce-cart table.cart thead th.product-quantity{text-align:center;}

body.woocommerce-cart table.cart tr.cart_item{display:grid;grid-template-columns:72px 1fr 96px 132px 96px;grid-template-areas:"thumb name price qty sub" "thumb remove price qty sub";gap:4px 18px;align-items:center;padding:24px 0;border-bottom:1px solid var(--line);}
body.woocommerce-cart table.cart tr.cart_item td{padding:0;border:0;background:none;}
body.woocommerce-cart td.product-thumbnail{grid-area:thumb;align-self:start;}
body.woocommerce-cart td.product-thumbnail a,body.woocommerce-cart td.product-thumbnail img{display:block;width:72px;}
body.woocommerce-cart td.product-thumbnail img{aspect-ratio:127/203;object-fit:cover;border-radius:2px;background:var(--ph);box-shadow:0 6px 16px -8px rgba(0,0,0,.4);}
body.woocommerce-cart td.product-name{grid-area:name;align-self:end;font-size:1rem;}
body.woocommerce-cart td.product-name a{font-family:"DM Serif Display",Georgia,serif;font-size:1.18rem;line-height:1.2;color:var(--ink);}
body.woocommerce-cart td.product-name a:hover{color:var(--teal-dark);}
body.woocommerce-cart td.product-name .glg-line-isbn{font-size:.8rem;color:var(--muted);margin-top:4px;}
body.woocommerce-cart td.product-name dl.variation{font-size:.8rem;color:var(--muted);margin:4px 0 0;}
body.woocommerce-cart td.product-name dl.variation dt,body.woocommerce-cart td.product-name dl.variation dd{display:inline;margin:0;font-weight:400;}
body.woocommerce-cart td.product-name dl.variation dd{margin-right:8px;}
/* remove: the small "× Remove" control, moved under the name */
body.woocommerce-cart td.product-remove{grid-area:remove;align-self:start;justify-self:start;text-align:left;width:auto;padding:0;}
body.woocommerce-cart td.product-remove a.remove{display:inline-flex;align-items:center;white-space:nowrap;width:auto;height:auto;line-height:1;color:var(--muted);background:none !important;border-radius:0;font-size:0;}
body.woocommerce-cart td.product-remove a.remove *{display:none !important;}
body.woocommerce-cart td.product-remove a.remove::before{content:"\00d7\00a0Remove";font-size:.8rem;font-weight:400;letter-spacing:.01em;white-space:nowrap;border:0 !important;border-radius:0 !important;background:none !important;}
body.woocommerce-cart td.product-remove a.remove:hover{color:#b4453b;background:none !important;}
body.woocommerce-cart td.product-price{grid-area:price;text-align:right;font-size:.96rem;color:#2c2c2c;}
body.woocommerce-cart td.product-subtotal{grid-area:sub;text-align:right;font-size:.98rem;font-weight:600;color:var(--ink);}
body.woocommerce-cart td.product-quantity{grid-area:qty;justify-self:center;}
body.woocommerce-cart td.product-quantity .quantity{margin:0;}
body.woocommerce-cart td.product-quantity input.qty{width:74px;height:44px;text-align:center;border:1px solid var(--line);border-radius:5px;font-family:inherit;font-size:.95rem;color:var(--ink);background:#fff;}

/* coupon + update-cart actions row (full width) */
body.woocommerce-cart table.cart tr:has(td.actions){display:block;}
body.woocommerce-cart td.actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:26px 0 0;border:0;width:100%;}
body.woocommerce-cart td.actions .coupon{display:flex;flex:1;flex-wrap:wrap;align-items:center;gap:12px;margin:0;}
body.woocommerce-cart td.actions .coupon input#coupon_code{flex:1;min-width:180px;border:1px solid var(--line);border-radius:4px;padding:13px 16px;height:auto;font-family:inherit;font-size:.92rem;color:var(--ink);}
body.woocommerce-cart td.actions .coupon input#coupon_code:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,139,150,.12);}
body.woocommerce-cart td.actions button[name="update_cart"]{margin-left:auto;}
body.woocommerce-cart td.actions button{background:transparent;color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:13px 24px;font-family:inherit;font-weight:500;font-size:.92rem;white-space:nowrap;transition:border-color .2s,color .2s;}
body.woocommerce-cart td.actions button:hover:not([disabled]){border-color:var(--teal);color:var(--teal-dark);background:transparent;}

/* totals card + proceed button */
body.woocommerce-cart .cart-collaterals .cart_totals{width:100%;float:none;border:1px solid var(--line);border-radius:8px;background:#fff;overflow:hidden;}
body.woocommerce-cart .cart_totals > h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.5rem;padding:24px 26px 18px;margin:0;color:var(--ink);}
body.woocommerce-cart .cart_totals table.shop_table{border:0;margin:0;width:100%;}
body.woocommerce-cart .cart_totals table.shop_table tr{display:flex;justify-content:space-between;gap:18px;border-top:1px solid var(--line);}
body.woocommerce-cart .cart_totals table.shop_table th,
body.woocommerce-cart .cart_totals table.shop_table td{padding:16px 26px;border:0;background:none;font-size:.96rem;text-align:left;}
body.woocommerce-cart .cart_totals table.shop_table th{color:var(--muted);font-weight:400;}
body.woocommerce-cart .cart_totals table.shop_table td{text-align:right;color:#2c2c2c;}
body.woocommerce-cart .cart_totals table.shop_table td .amount{color:inherit;}
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods,
body.woocommerce-cart .cart_totals .shipping-calculator-form{margin:0;padding:0;font-size:.9rem;}
body.woocommerce-cart .cart_totals .woocommerce-shipping-methods li{margin:0 0 4px;list-style:none;}
body.woocommerce-cart .cart_totals .woocommerce-shipping-destination{font-size:.85rem;color:var(--muted);}
body.woocommerce-cart .cart_totals .shipping-calculator-button{color:var(--teal-dark);border-bottom:1px solid rgba(0,107,115,.4);}
body.woocommerce-cart .cart_totals tr.order-total{border-top:2px solid var(--ink);}
body.woocommerce-cart .cart_totals tr.order-total th{color:var(--ink);font-weight:600;font-size:1.05rem;}
body.woocommerce-cart .cart_totals tr.order-total td{font-family:"Libre Franklin",system-ui,sans-serif;font-weight:600;font-size:1.25rem;color:var(--ink);}
body.woocommerce-cart .cart_totals tr.order-total td .amount{font-weight:400;}
body.woocommerce-cart .wc-proceed-to-checkout{padding:20px 26px 26px;}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;background:var(--teal) !important;color:#fff !important;border:0 !important;height:54px;font-family:inherit;font-weight:600;font-size:1rem;border-radius:2px;text-decoration:none;text-transform:none;letter-spacing:normal;transition:background .2s;}
body.woocommerce-cart .wc-proceed-to-checkout a.checkout-button:hover{background:var(--teal-dark) !important;}

/* empty cart */
body.woocommerce-cart .cart-empty,body.woocommerce-cart .wc-empty-cart-message{font-size:1.02rem;color:var(--muted);}
body.woocommerce-cart .return-to-shop{margin-top:18px;}
body.woocommerce-cart .return-to-shop a.button{display:inline-flex;align-items:center;background:var(--teal) !important;color:#fff !important;border:0 !important;border-radius:2px;padding:13px 26px;font-weight:600;text-transform:none;letter-spacing:normal;}
body.woocommerce-cart .return-to-shop a.button:hover{background:var(--teal-dark) !important;}

/* ============================ CHECKOUT ============================ */
/* two columns: billing | order (heading + review stacked in the right column) */
body.woocommerce-checkout form.checkout{display:grid;grid-template-columns:1fr 396px;grid-template-areas:"bill orderhead" "bill order";column-gap:56px;row-gap:0;align-items:start;}
body.woocommerce-checkout #customer_details{grid-area:bill;min-width:0;width:100% !important;float:none !important;}
body.woocommerce-checkout #order_review_heading{grid-area:orderhead;width:100% !important;float:none !important;justify-self:stretch;}
body.woocommerce-checkout #order_review{grid-area:order;width:100% !important;float:none !important;justify-self:stretch;min-width:0;}
body.woocommerce-checkout .col2-set,
body.woocommerce-checkout #customer_details .col-1,
body.woocommerce-checkout #customer_details .col-2{width:100%;max-width:none;float:none;padding:0;margin:0;}
body.woocommerce-checkout #customer_details .col-2:empty{display:none;}

/* section headings */
body.woocommerce-checkout .woocommerce-billing-fields > h3,
body.woocommerce-checkout .woocommerce-shipping-fields > h3,
body.woocommerce-checkout .woocommerce-additional-fields > h3,
body.woocommerce-checkout #ship-to-different-address label{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.55rem;margin:0 0 22px;color:var(--ink);}
body.woocommerce-checkout .woocommerce-additional-fields > h3{font-size:1.2rem;margin-top:8px;}

/* billing fields: 2-up first/last, everything else full width */
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;}
/* Kill WooCommerce's .form-row-first/last float+47% width so the grid drives the
   50/50 row and each field fills its cell (inputs are already width:100%). */
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row{grid-column:1 / -1;float:none !important;width:100% !important;margin-right:0 !important;}
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-first{grid-column:1;}
body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-last{grid-column:2;}
body.woocommerce-checkout .form-row{margin:0 0 18px;padding:0;}
body.woocommerce-checkout .form-row label{display:block;font-size:.84rem;font-weight:500;color:var(--ink);margin-bottom:7px;}
body.woocommerce-checkout .form-row label .required,
body.woocommerce-checkout .form-row label .optional{color:var(--teal-dark);text-decoration:none;border:0;}
body.woocommerce-checkout .form-row .input-text,
body.woocommerce-checkout .form-row textarea,
body.woocommerce-checkout #customer_details select:not(.select2-hidden-accessible){width:100%;border:1px solid var(--line);border-radius:5px;padding:13px 15px;font-family:inherit;font-size:.95rem;color:var(--ink);background:#fff;transition:border-color .2s,box-shadow .2s;}
body.woocommerce-checkout .form-row textarea{min-height:96px;resize:vertical;}
body.woocommerce-checkout .form-row .input-text:focus,
body.woocommerce-checkout .form-row textarea:focus,
body.woocommerce-checkout #customer_details select:not(.select2-hidden-accessible):focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,139,150,.12);}
/* select2 (country/state) look like our inputs */
body.woocommerce-checkout .select2-container--default .select2-selection--single{height:48px;display:flex;align-items:center;border:1px solid var(--line);border-radius:5px;background:#fff;padding:0 !important;}
body.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__rendered{flex:1;line-height:normal;padding:0 40px 0 15px;color:var(--ink);}
body.woocommerce-checkout .select2-container--default .select2-selection--single .select2-selection__arrow{top:0;height:100%;right:12px;}
body.woocommerce-checkout .select2-container--default.select2-container--focus .select2-selection--single,
body.woocommerce-checkout .select2-container--open .select2-selection--single{border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,139,150,.12);}
/* ship-to-different-address: plain checkbox + bold label, no box (the input styling
   was leaking a border/background). Reset border/bg/padding on the block + its label. */
body.woocommerce-checkout #ship-to-different-address{margin:8px 0 22px;padding:0;border:0;background:none;border-radius:0;}
body.woocommerce-checkout #ship-to-different-address label{font-family:inherit;font-size:.95rem;font-weight:600;color:var(--ink);margin:0;padding:0;border:0;background:none;display:flex;align-items:center;gap:11px;cursor:pointer;}
body.woocommerce-checkout #ship-to-different-address input{accent-color:var(--teal);width:17px;height:17px;margin:0;padding:0;border:0;background:none;box-shadow:none;}
/* Order notes label: guarantee a gap between the label and the textarea. */
body.woocommerce-checkout .woocommerce-additional-fields label,
body.woocommerce-checkout label[for="order_comments"]{display:block;margin-bottom:8px;}

/* order box: heading + review joined into one card. Astra's WooCommerce compat ships
   ID-level rules (`...form #order_review td/th` and `...form #order_review_heading`
   {padding-left:0}) that out-rank our class selectors and zero the LEFT inset. That was
   masked by a container padding until batch-2 set #order_review{padding:0} (to widen the
   payment list) -> the heading/rows/totals then sat flush against the card border. Fix:
   re-assert the prototype's 26px inset with !important on the self-padded rows, and KEEP
   #order_review at padding:0 so the row divider lines stay full-bleed (as in the prototype
   .orderbox, where each .oline carries the 26px and the border-bottom runs edge to edge). */
body.woocommerce-checkout #order_review_heading{background:#fff;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;margin:0;padding:24px 26px 4px !important;font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.5rem;color:var(--ink);}
body.woocommerce-checkout #order_review{background:#fff;border:1px solid var(--line);border-radius:0 0 8px 8px;overflow:hidden;padding:0 !important;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table{border:0;margin:0;width:100%;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table thead{display:none;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody tr.cart_item td{border:0;border-bottom:1px solid var(--line);padding:18px 26px !important;background:none;vertical-align:top;}
/* Astra/WC make td.product-name display:flex, which laid the name, "× N" quantity and the
   ISBN <div> out in one row (they overlapped) — force block so the ISBN wraps to its own line. */
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name{display:block !important;font-size:.94rem;color:var(--ink);line-height:1.35;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name .product-quantity{color:var(--muted);font-weight:400;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name .glg-line-isbn{font-size:.78rem;color:var(--muted);margin-top:4px;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name dl.variation{font-size:.78rem;color:var(--muted);margin:4px 0 0;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name dl.variation dt,
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-name dl.variation dd{display:inline;margin:0;font-weight:400;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-total{text-align:right;white-space:nowrap;font-size:.94rem;color:#2c2c2c;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot td{border:0;padding:13px 26px !important;background:none;font-size:.92rem;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th{color:var(--muted);font-weight:400;text-align:left;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot td{text-align:right;color:#2c2c2c;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total th{color:var(--ink);font-weight:600;font-size:1.05rem;}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total{border-top:2px solid var(--ink);}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total td{font-family:"Libre Franklin",system-ui,sans-serif;font-weight:600;font-size:1.2rem;color:var(--ink);}
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot tr.order-total td .amount{font-weight:400;}

/* payment methods (dynamic Mollie output — styled generically, never hardcoded) */
/* #payment shrinks (float/width quirk, like #order_review); the whole payment list
   then narrows and the per-row border gets overridden to 0 by Astra. Force full width
   on the container, the ul, and each li, and re-assert an even 1px --line row border. */
body.woocommerce-checkout #payment{width:100% !important;float:none !important;box-sizing:border-box;background:none;border-top:1px solid var(--line);padding:18px 26px 24px;border-radius:0;}
/* Astra WooCommerce compat `#payment ul.payment_methods{border-bottom:0;margin-bottom:1em}`
   (0,1,3,1) out-ranks the class rule below and stripped the box's BOTTOM border (leaving
   top/left/right) + added a 1em bottom margin. !important on our border+margin restores the
   full 1px --line box (rounded all four corners, like the prototype .paylist). */
body.woocommerce-checkout #payment .wc_payment_methods{width:100% !important;float:none;box-sizing:border-box;border:1px solid var(--line) !important;border-radius:7px;overflow:hidden;margin:0 !important;padding:0;list-style:none;}
body.woocommerce-checkout #payment li.wc_payment_method{width:100% !important;float:none;box-sizing:border-box;display:flex;flex-wrap:wrap;align-items:center;gap:11px;padding:13px 16px;margin:0;border-top:1px solid var(--line) !important;list-style:none;background:none;}
body.woocommerce-checkout #payment li.wc_payment_method:first-child{border-top:0 !important;}
body.woocommerce-checkout #payment li.wc_payment_method > input.input-radio{width:16px;height:16px;flex:none;margin:0;accent-color:var(--teal);}
body.woocommerce-checkout #payment li.wc_payment_method > label{display:flex;align-items:center;gap:9px;flex:1;margin:0;padding:0;font-size:.93rem;color:var(--ink);cursor:pointer;}
body.woocommerce-checkout #payment li.wc_payment_method > label img{max-height:24px;width:auto;display:inline-block;margin:0;}
body.woocommerce-checkout #payment li.wc_payment_method:has(> input.input-radio:checked){background:var(--tint);}
/* WC/Astra force a grey #efefef background on .payment_box (our earlier background:none lost the
   cascade), which clashed with the selected row's --tint and, with the lopsided 27px-left/0-right
   padding, read as an uneven grey fill. Make it transparent (inherits the row tint) with even padding. */
body.woocommerce-checkout #payment .payment_box{flex:0 0 100%;margin:0;padding:8px 18px 14px 27px !important;background:transparent !important;border:0;font-size:.84rem;color:var(--muted);line-height:1.5;}
body.woocommerce-checkout #payment .payment_box::before{display:none !important;content:none !important;border:0 !important;}
body.woocommerce-checkout #payment .payment_box p:last-child{margin-bottom:0;}

/* terms + privacy + place order */
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper{margin:20px 0 6px;font-size:.9rem;color:#2c2c2c;}
body.woocommerce-checkout .woocommerce-privacy-policy-text{font-size:.82rem;color:var(--muted);line-height:1.55;margin:14px 0 18px;}
/* terms + privacy links read as links (teal-dark + subtle underline, like the prototype
   .terms a) instead of the surrounding body colour. The WC privacy link needs the id-less
   class beaten -> scope under the wrapper so we win without !important. */
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a,
body.woocommerce-checkout .woocommerce-privacy-policy-text a,
body.woocommerce-checkout .woocommerce-privacy-policy-text a.woocommerce-privacy-policy-link{color:var(--teal-dark);border-bottom:1px solid rgba(0,107,115,.4);text-decoration:none;}
body.woocommerce-checkout .woocommerce-terms-and-conditions-wrapper a:hover,
body.woocommerce-checkout .woocommerce-privacy-policy-text a:hover{border-bottom-color:var(--teal-dark);}
body.woocommerce-checkout .validate-required label.checkbox,
body.woocommerce-checkout .woocommerce-terms-and-conditions-checkbox-text{font-size:.9rem;}
body.woocommerce-checkout #payment .form-row.place-order,
body.woocommerce-checkout #payment .place-order{padding:0;margin:0;border:0;}
body.woocommerce-checkout #place_order{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;background:var(--teal) !important;color:#fff !important;border:0 !important;height:56px;float:none;font-family:inherit;font-weight:600;font-size:1.02rem;border-radius:2px;text-transform:none;letter-spacing:normal;transition:background .2s;}
body.woocommerce-checkout #place_order:hover{background:var(--teal-dark) !important;}
/* Advanced-Coupons "Apply store credit discounts?" accordion — injected between the totals
   and #payment. The plugin ships it as a full-bleed grey #f5f5f5 h3 bar with #ebebeb borders
   (that grey bar hit the card frame). Re-skin to the card: transparent h3, content inset to
   the same 26px as the rows, a single full-bleed --line divider on top (like #payment), and
   our teal apply button. Our #order_review + class selectors out-rank the plugin's class-only
   rules, so no !important is needed here. */
body.woocommerce-checkout #order_review .acfw-checkout-ui-block{margin:0;background:none;border-top:1px solid var(--line);}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block .acfw-accordion{border:0;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block .acfw-accordion h3{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:15px 26px;background:none;font-family:inherit;font-weight:500;font-size:.92rem;color:var(--ink);cursor:pointer;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block .acfw-accordion h3 .caret{position:static;top:0;margin:0;flex:none;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block .acfw-accordion-inner{background:none;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block .acfw-accordion-content{padding:0 26px 18px;font-size:.86rem;color:var(--muted);}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block input[type="text"]{border:1px solid var(--line);border-radius:5px;padding:11px 14px;font-family:inherit;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block button.button{background:var(--teal) !important;color:#fff !important;border:0 !important;border-radius:2px;padding:12px 18px;font-weight:600;text-transform:none;letter-spacing:normal;}
body.woocommerce-checkout #order_review .acfw-checkout-ui-block button.button:hover{background:var(--teal-dark) !important;}
/* redeem form: the plugin floats two 47% columns — input (its label is EMPTY = 0px tall) +
   button (its label is `&nbsp;` = 27px tall), so the button dropped ~27px below the input and
   the pair looked broken. Flatten to a clean flex row: input grows, Apply hugs its text and
   stretches to the input's height, both spacer labels hidden. */
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field{display:flex;gap:10px;align-items:stretch;margin-top:16px;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field .form-row{float:none !important;width:auto !important;margin:0 !important;padding:0;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field .form-row-first{flex:1;min-width:0;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field .form-row-last{flex:none;display:flex;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field .form-row label{display:none;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field input[type="text"]{width:100% !important;margin:0;}
body.woocommerce-checkout #order_review .acfw-redeem-store-credit-form-field button.button{display:flex;align-items:center;justify-content:center;padding-top:0 !important;padding-bottom:0 !important;}

/* WooCommerce #content clearfix pseudo-bars (ID out-ranks classes -> content:none) */
body.woocommerce-cart #content .woocommerce::before,body.woocommerce-cart #content .woocommerce::after,
body.woocommerce-checkout #content form.checkout::before,body.woocommerce-checkout #content form.checkout::after{content:none !important;display:none !important;}

/* ---- responsive ---- */
@media(max-width:900px){
  body.woocommerce-cart .woocommerce{grid-template-columns:1fr;gap:36px;}
  body.woocommerce-cart .cart-collaterals{grid-column:1;position:static;}
  body.woocommerce-checkout form.checkout{grid-template-columns:1fr;grid-template-areas:"bill" "orderhead" "order";row-gap:0;}
  body.woocommerce-checkout #order_review_heading{margin-top:44px;}
}
@media(max-width:620px){
  body.woocommerce-cart table.cart thead tr{display:none;}
  body.woocommerce-cart table.cart tr.cart_item{grid-template-columns:64px 1fr;grid-template-areas:"thumb name" "thumb remove" "thumb price" "thumb qty" "thumb sub";gap:6px 16px;padding:22px 0;align-items:center;}
  body.woocommerce-cart td.product-thumbnail a,body.woocommerce-cart td.product-thumbnail img{width:64px;}
  body.woocommerce-cart td.product-price,body.woocommerce-cart td.product-subtotal{text-align:left;}
  body.woocommerce-cart td.product-quantity{justify-self:start;}
}
@media(max-width:480px){
  body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper{grid-template-columns:1fr;}
  body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-first,
  body.woocommerce-checkout .woocommerce-billing-fields__field-wrapper > .form-row-last{grid-column:1;}
}

/* ============================ MY ACCOUNT ============================ */
/* Sidebar dropped via astra_page_layout (functions.php), like cart/checkout. CSS-first on
   WooCommerce's own markup + 3 functions.php hooks (dashboard cards, order-status pill);
   NO template copies. Scoped under body.woocommerce-account, mirrors the account prototype. */
body.woocommerce-account #content .woocommerce::before,
body.woocommerce-account #content .woocommerce::after{content:none !important;display:none !important;}
/* a little breathing room under the "My account" page title (was ~9px, too tight) */
body.woocommerce-account .entry-header{margin-bottom:30px;}

/* two columns (logged-in): text nav | content */
body.woocommerce-account.logged-in .woocommerce{display:grid;grid-template-columns:250px 1fr;gap:54px;align-items:start;}
body.woocommerce-account .woocommerce-MyAccount-navigation,
body.woocommerce-account .woocommerce-MyAccount-content{width:auto !important;float:none !important;margin:0;min-width:0;}
body.woocommerce-account .woocommerce-MyAccount-navigation{grid-column:1;position:sticky;top:26px;}
body.woocommerce-account .woocommerce-MyAccount-content{grid-column:2;}
body.woocommerce-account .woocommerce > .woocommerce-notices-wrapper{grid-column:1 / -1;}

/* left nav — bordered box, active + hover states */
body.woocommerce-account .woocommerce-MyAccount-navigation ul{margin:0;padding:0;list-style:none;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
body.woocommerce-account .woocommerce-MyAccount-navigation li{margin:0;padding:0;border:0;}
body.woocommerce-account .woocommerce-MyAccount-navigation li a{display:block;padding:14px 20px;font-size:.95rem;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line);border-left:3px solid transparent;transition:background .18s,color .18s,border-color .18s;}
body.woocommerce-account .woocommerce-MyAccount-navigation li:last-child a{border-bottom:0;}
body.woocommerce-account .woocommerce-MyAccount-navigation li a:hover{background:var(--paper-soft);color:var(--teal-dark);}
body.woocommerce-account .woocommerce-MyAccount-navigation li.is-active a{background:var(--tint);color:var(--teal-dark);border-left-color:var(--teal);}
body.woocommerce-account .woocommerce-MyAccount-navigation li.woocommerce-MyAccount-navigation-link--customer-logout a{color:var(--muted);}

/* content: dashboard intro (WooCommerce prints two <p>s; first = greeting) + section headings */
body.woocommerce-account .woocommerce-MyAccount-content{color:#444;font-size:1.04rem;}
body.woocommerce-account .woocommerce-MyAccount-content > p{line-height:1.6;max-width:62ch;margin:0 0 6px;}
body.glg-account-dashboard .woocommerce-MyAccount-content > p:first-of-type{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.8rem;line-height:1.14;color:var(--ink);margin-bottom:12px;}
body.glg-account-dashboard .woocommerce-MyAccount-content > p:first-of-type a{font-family:"Libre Franklin",system-ui,sans-serif;font-size:.88rem;color:var(--muted);border-bottom:1px solid rgba(0,107,115,.35);}
body.woocommerce-account .woocommerce-MyAccount-content > h2,
body.woocommerce-account .woocommerce-MyAccount-content .woocommerce-column__title{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.5rem;color:var(--ink);margin:0 0 16px;}

/* dashboard cards (woocommerce_account_dashboard hook) */
body.woocommerce-account .glg-acct-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px;}
body.woocommerce-account .glg-acard{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:8px;padding:22px 20px 18px;color:var(--ink);transition:border-color .2s,transform .2s,box-shadow .2s;}
body.woocommerce-account .glg-acard:hover{border-color:var(--teal);transform:translateY(-2px);box-shadow:0 12px 26px rgba(20,20,20,.07);}
body.woocommerce-account .glg-acard .ic{width:40px;height:40px;border-radius:50%;background:var(--tint);color:var(--teal-dark);display:flex;align-items:center;justify-content:center;margin-bottom:16px;}
body.woocommerce-account .glg-acard .ic svg{width:20px;height:20px;}
body.woocommerce-account .glg-acard h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.16rem;margin:0 0 5px;}
body.woocommerce-account .glg-acard p{font-size:.9rem;color:var(--muted);margin:0 0 16px;}
body.woocommerce-account .glg-acard .go{margin-top:auto;font-size:.9rem;font-weight:600;color:var(--teal-dark);display:inline-flex;align-items:center;gap:7px;}
body.woocommerce-account .glg-acard .go svg{width:14px;height:14px;}

/* tables (orders + downloads) */
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table{width:100%;border-collapse:collapse;border:0;margin:0;font-size:.92rem;}
/* WooCommerce paints table.shop_table thead{background:#fbfbfb} (a grey band) on the thead element — null it (the th cells are already cleared below). */
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table thead,
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table thead tr{background:none;}
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table thead th{background:none;text-align:left;font-size:.7rem;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:600;padding:0 14px 12px;border:0;border-bottom:1px solid var(--line);}
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table td{background:none;padding:16px 14px;border:0;border-bottom:1px solid var(--line);vertical-align:middle;}
body.woocommerce-account .woocommerce-MyAccount-content table.shop_table tbody tr:last-child td{border-bottom:0;}
body.woocommerce-account .woocommerce-orders-table__cell-order-number a{font-weight:600;color:var(--teal-dark);}
body.woocommerce-account .glg-pill{display:inline-block;font-size:.76rem;font-weight:600;padding:4px 11px;border-radius:2px;}
body.woocommerce-account .glg-pill.is-done{background:var(--tint);color:var(--teal-dark);}
body.woocommerce-account .glg-pill.is-proc{background:#f3f1ec;color:var(--muted);}

/* addresses */
body.woocommerce-account .woocommerce-Addresses{display:flex;flex-wrap:wrap;gap:20px;margin:20px 0 0;}
/* Astra/WC clearfix ::before/::after become phantom flex items here; the flex `gap` then
   offsets the first card (~20px) and the title's h2 label (~25px). Kill them so the cards
   align to the intro text's left and the label aligns to the address name. */
body.woocommerce-account .woocommerce-Addresses::before,
body.woocommerce-account .woocommerce-Addresses::after,
body.woocommerce-account .woocommerce-Address-title::before,
body.woocommerce-account .woocommerce-Address-title::after{content:none !important;display:none !important;}
body.woocommerce-account .woocommerce-Address{flex:1 1 300px;float:none !important;width:auto !important;max-width:none !important;margin:0 !important;border:1px solid var(--line);border-radius:8px;padding:22px 22px 20px;}
body.woocommerce-account .woocommerce-Address-title{display:flex;align-items:baseline;justify-content:space-between;gap:12px;background:none !important;border:0 !important;padding:0 !important;margin:0 0 14px !important;}
body.woocommerce-account .woocommerce-Address-title h2,
body.woocommerce-account .woocommerce-Address-title h3{font-family:"Libre Franklin",system-ui,sans-serif;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:600;margin:0;line-height:1.3;white-space:nowrap;}
body.woocommerce-account .woocommerce-Address-title a{font-size:.82rem;font-weight:600;color:var(--teal-dark);white-space:nowrap;flex:none;}
body.woocommerce-account .woocommerce-Address address{font-style:normal;font-size:.95rem;color:var(--ink);line-height:1.7;border:0;padding:0;}

/* forms (account details, login, register) */
body.woocommerce-account .woocommerce form .woocommerce-form-row{margin:0 0 18px;padding:0;}
body.woocommerce-account .woocommerce form .woocommerce-form-row label,
body.woocommerce-account #customer_login label:not(.woocommerce-form-login__rememberme){display:block;font-size:.82rem;font-weight:500;color:var(--ink);margin-bottom:7px;}
body.woocommerce-account .woocommerce form .woocommerce-form-row label span,
body.woocommerce-account .woocommerce form .woocommerce-form-row em{color:var(--muted);font-style:normal;font-weight:400;}
body.woocommerce-account .woocommerce form input.input-text,
body.woocommerce-account .woocommerce form input[type="text"],
body.woocommerce-account .woocommerce form input[type="email"],
body.woocommerce-account .woocommerce form input[type="password"],
body.woocommerce-account .woocommerce form input[type="tel"]{width:100%;border:1px solid var(--line);border-radius:5px;background:#fff;padding:12px 14px;font-family:inherit;font-size:.96rem;color:var(--ink);transition:border-color .2s,box-shadow .2s;}
body.woocommerce-account .woocommerce form input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,139,150,.12);}
/* password fields wrap the input + a show/hide toggle; Astra was painting the bare
   <button> teal and it flowed as a block. Keep it a small muted icon inside the field. */
body.woocommerce-account .woocommerce form .password-input{position:relative;display:block;}
body.woocommerce-account .woocommerce form .password-input .input-text{width:100%;padding-right:44px;}
body.woocommerce-account .woocommerce form .show-password-input{position:absolute;right:0;top:0;width:44px;height:100%;min-height:0;display:flex;align-items:center;justify-content:center;background:none !important;border:0 !important;padding:0;margin:0;color:var(--muted);cursor:pointer;transform:none;}
body.woocommerce-account .woocommerce form .show-password-input::after{color:var(--muted);}
body.woocommerce-account .woocommerce-EditAccountForm fieldset{border:0;padding:0;margin:0;}
body.woocommerce-account .woocommerce-EditAccountForm legend{font-family:"DM Serif Display",Georgia,serif;font-size:1.12rem;color:var(--ink);margin:26px 0 16px;padding-top:22px;border-top:1px solid var(--line);width:100%;}
/* account details: 2-up first/last */
body.woocommerce-account .woocommerce-EditAccountForm .woocommerce-form-row--first{float:left;width:48%;clear:left;}
body.woocommerce-account .woocommerce-EditAccountForm .woocommerce-form-row--last{float:right;width:48%;}
body.woocommerce-account .woocommerce-EditAccountForm fieldset,
body.woocommerce-account .woocommerce-EditAccountForm > p.woocommerce-form-row:not(.woocommerce-form-row--first):not(.woocommerce-form-row--last),
body.woocommerce-account .woocommerce-EditAccountForm > .clear{clear:both;}

/* submit buttons -> teal blocks; table/address action anchors -> quiet teal links */
body.woocommerce-account .woocommerce button.button,
body.woocommerce-account .woocommerce button.woocommerce-Button,
body.woocommerce-account .woocommerce input[type="submit"].button{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--teal) !important;color:#fff !important;border:0 !important;border-radius:2px;padding:0 30px;min-height:50px;height:auto;font-family:inherit;font-weight:600;font-size:1rem;text-transform:none;letter-spacing:normal;cursor:pointer;transition:background .2s,transform .2s;}
body.woocommerce-account .woocommerce button.button:hover,
body.woocommerce-account .woocommerce button.woocommerce-Button:hover,
body.woocommerce-account .woocommerce input[type="submit"].button:hover{background:var(--teal-dark) !important;transform:translateY(-1px);}
body.woocommerce-account .woocommerce-MyAccount-content a.button,
body.woocommerce-account .woocommerce-MyAccount-content a.woocommerce-button{display:inline-flex;align-items:center;gap:6px;background:none !important;color:var(--teal-dark) !important;border:0 !important;padding:0 !important;min-height:0;height:auto;font-size:.86rem;font-weight:600;}

/* remember-me + lost password */
body.woocommerce-account #customer_login .woocommerce-form-login__rememberme{display:flex;align-items:center;gap:9px;font-size:.9rem;color:#444;margin:4px 0 18px;}
body.woocommerce-account #customer_login .woocommerce-form-login__rememberme input{width:16px;height:16px;accent-color:var(--teal);}
body.woocommerce-account .woocommerce-LostPassword{margin-top:14px;font-size:.88rem;}
body.woocommerce-account .woocommerce-LostPassword a{color:var(--teal-dark);}

/* login / register two-column */
body.woocommerce-account #customer_login.u-columns{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
body.woocommerce-account #customer_login .col-1,
body.woocommerce-account #customer_login .col-2,
body.woocommerce-account #customer_login .u-column1,
body.woocommerce-account #customer_login .u-column2{width:auto;float:none;margin:0;border:1px solid var(--line);border-radius:8px;padding:30px 30px 32px;}
body.woocommerce-account #customer_login h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.4rem;margin:0 0 20px;}
body.woocommerce-account #customer_login .woocommerce-privacy-policy-text{font-size:.85rem;color:var(--muted);margin:2px 0 18px;}

/* ---- account responsive ---- */
@media(max-width:860px){
  body.woocommerce-account.logged-in .woocommerce{grid-template-columns:1fr;gap:30px;}
  body.woocommerce-account .woocommerce-MyAccount-navigation,
  body.woocommerce-account .woocommerce-MyAccount-content{grid-column:auto;}
  body.woocommerce-account .woocommerce-MyAccount-navigation{position:static;}
  body.woocommerce-account .glg-acct-cards{grid-template-columns:1fr;}
}
@media(max-width:640px){
  body.woocommerce-account .woocommerce-Addresses{grid-template-columns:1fr;}
  body.woocommerce-account #customer_login.u-columns{grid-template-columns:1fr;}
  body.woocommerce-account .woocommerce-EditAccountForm .woocommerce-form-row--first,
  body.woocommerce-account .woocommerce-EditAccountForm .woocommerce-form-row--last{float:none;width:100%;}
}
@media(max-width:480px){
  body.woocommerce-account .ast-container{padding-left:22px;padding-right:22px;}
}

/* ==========================================================================
   BLOG — index (home.php) + single post (single.php). Ported from
   glagoslav-blog-prototype / glagoslav-singlepost-prototype. Site chrome is the
   theme header/footer; these rules only style the post list + the article,
   scoped under #glgBlog / #glgPost (reusing the global .wrap 1180 frame and
   .eyebrow). The soft-bg bands run full-bleed, so Astra's content container is
   released edge-to-edge and .wrap / .art-grid re-establish the 1180 frame.
   ========================================================================== */

/* release the container so .pagehead / .rel can go full-bleed. The Phase-3 frame
   rule (body:is(.archive,.blog,…) .site-content > .ast-container) caps this at
   1180px !important, so match it with !important — our selector out-ranks it on
   specificity (the #content id beats the frame's classes). The inner .wrap /
   .art-grid re-establish the 1180 frame, exactly like the prototype. */
body.blog #content .ast-container,
body.single-post #content .ast-container,
body.category #content .ast-container,
body.tag #content .ast-container,
body.search #content .ast-container,
body.error404 #content .ast-container{max-width:none !important;padding:0 !important;}
body.blog #content,
body.single-post #content,
body.category #content,
body.tag #content,
body.search #content,
body.error404 #content{padding-top:0;padding-bottom:0;}

/* shared image placeholder (real featured images load over it) */
#glgBlog .ph,
#glgPost .ph{background:var(--ph);overflow:hidden;display:flex;align-items:center;justify-content:center;}
#glgBlog .ph img,
#glgPost .ph img{width:100%;height:100%;object-fit:cover;}
#glgBlog .ph svg,
#glgPost .ph svg{color:var(--ph-ic);}

/* shared breadcrumb */
#glgBlog .crumb,
#glgPost .crumb{font-size:.82rem;color:var(--muted);}
#glgBlog .crumb a,
#glgPost .crumb a{transition:color .2s;}
#glgBlog .crumb a:hover,
#glgPost .crumb a:hover{color:var(--teal-dark);}
#glgBlog .crumb .sep,
#glgPost .crumb .sep{margin:0 9px;opacity:.6;}
#glgBlog .crumb .cur,
#glgPost .crumb .cur{color:var(--ink);}

/* ---------------------------- blog index ---------------------------- */
#glgBlog .pagehead{background:var(--paper-soft);padding:48px 0 58px;}
#glgBlog .pagehead .crumb{margin-bottom:30px;}
#glgBlog .pagehead h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2.6rem,4.4vw,3.6rem);line-height:1.03;margin-bottom:18px;}
#glgBlog .pagehead .lead{font-size:1.1rem;line-height:1.65;color:#3a3a3a;max-width:58ch;}

#glgBlog .blog{padding:60px 0 92px;}

/* featured (newest) post */
#glgBlog .feat{border-top:2px solid var(--ink);padding-top:34px;margin-bottom:30px;display:grid;grid-template-columns:1.3fr 1fr;gap:50px;align-items:center;}
#glgBlog .feat .ph{aspect-ratio:16/9;}
#glgBlog .feat .ph svg{width:54px;height:54px;}
#glgBlog .feat .ph img{transition:transform .4s cubic-bezier(.22,1,.36,1);}
#glgBlog .feat:hover .ph img{transform:scale(1.03);}
#glgBlog .feat .meta{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;}
#glgBlog .feat h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(1.9rem,2.9vw,2.5rem);line-height:1.1;margin-bottom:16px;transition:color .2s;}
#glgBlog .feat:hover h2{color:var(--teal-dark);}
#glgBlog .feat p{font-size:1.08rem;line-height:1.64;color:#333;max-width:52ch;margin-bottom:22px;}
#glgBlog .feat .more{display:inline-flex;align-items:center;gap:8px;font-size:.92rem;font-weight:600;color:var(--teal-dark);}
#glgBlog .feat .more svg{width:15px;height:15px;transition:transform .25s;}
#glgBlog .feat:hover .more svg{transform:translateX(4px);}

#glgBlog .more-label{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin:54px 0 26px;}

/* post grid */
#glgBlog .postgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:48px 38px;}
#glgBlog .post{display:block;}
#glgBlog .post .ph{aspect-ratio:16/9;margin-bottom:18px;}
#glgBlog .post .ph svg{width:38px;height:38px;}
#glgBlog .post .ph img{transition:transform .4s cubic-bezier(.22,1,.36,1);}
#glgBlog .post:hover .ph img{transform:scale(1.04);}
#glgBlog .post .meta{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:12px;}
#glgBlog .post h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.3rem;line-height:1.22;margin-bottom:11px;transition:color .2s;}
#glgBlog .post:hover h3{color:var(--teal-dark);}
#glgBlog .post p{font-size:.93rem;color:var(--muted);line-height:1.62;margin-bottom:16px;}
#glgBlog .post .more{display:inline-flex;align-items:center;gap:7px;font-size:.85rem;font-weight:600;color:var(--teal-dark);}
#glgBlog .post .more svg{width:13px;height:13px;transition:transform .25s;}
#glgBlog .post:hover .more svg{transform:translateX(4px);}

/* pagination (WordPress paginate_links output) */
#glgBlog .pager{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:7px;margin-top:70px;}
#glgBlog .pager .page-numbers{min-width:40px;height:40px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;font-size:.9rem;color:var(--ink);border:1px solid var(--line);border-radius:2px;transition:color .2s,border-color .2s;}
#glgBlog .pager a.page-numbers:hover{border-color:var(--teal);color:var(--teal-dark);}
#glgBlog .pager .page-numbers.current{background:var(--tint);border-color:var(--tint);color:var(--ink);}
#glgBlog .pager .page-numbers.dots{border-color:transparent;min-width:auto;padding:0 4px;}
#glgBlog .pager .page-numbers.next,#glgBlog .pager .page-numbers.prev{padding:0 18px;gap:8px;}
#glgBlog .pager .page-numbers.next svg,#glgBlog .pager .page-numbers.prev svg{width:14px;height:14px;}

#glgBlog .glg-noposts{color:var(--muted);font-size:1.02rem;}
#glgBlog .glg-noposts a{color:var(--teal-dark);border-bottom:1px solid rgba(0,107,115,.4);}
/* term-archive lead can be a term_description() wrapped in <p> — keep it tight */
#glgBlog .pagehead .lead p{margin:0;}

/* ---------------------------- single post ---------------------------- */
#glgPost .article{padding:46px 0 30px;}
#glgPost .art-grid{max-width:1180px;margin:0 auto;padding:0 40px;display:grid;grid-template-columns:200px minmax(0,1fr);gap:60px;align-items:start;}
#glgPost .art-grid.no-toc{grid-template-columns:minmax(0,1fr);max-width:720px;}

/* sidebar Contents — scope to the direct-child aside so a post's OWN in-content
   <nav class="toc"> is never made sticky (that caused the overlap-on-scroll glitch). */
#glgPost .art-grid > .toc{position:sticky;top:30px;}
#glgPost .art-grid > .toc .lbl{font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:14px;}
#glgPost .art-grid > .toc a{display:block;font-size:.87rem;color:var(--muted);line-height:1.32;padding:6px 0 6px 14px;margin-left:-14px;border-left:2px solid transparent;transition:color .2s,border-color .2s;}
#glgPost .art-grid > .toc a:hover{color:var(--teal-dark);}
#glgPost .art-grid > .toc a.on{color:var(--ink);border-color:var(--teal);}
/* on desktop the sticky sidebar replaces a post's in-content TOC → hide the in-body copy
   (it stays as the mobile TOC, since the sidebar is hidden <900px). */
@media(min-width:901px){#glgPost .art-grid:has(> .toc) .art-body .toc{display:none;}}

#glgPost .crumb{margin-bottom:24px;}
#glgPost .art-meta{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:16px;}
#glgPost .art-main h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2rem,3.3vw,2.9rem);line-height:1.08;}
#glgPost .art-hero{aspect-ratio:16/9;background:var(--ph);overflow:hidden;display:flex;align-items:center;justify-content:center;margin:28px 0 38px;}
#glgPost .art-hero svg{width:52px;height:52px;color:var(--ph-ic);}
#glgPost .art-hero img{width:100%;height:100%;object-fit:cover;}

#glgPost .art-body{font-size:1.1rem;line-height:1.78;color:#2b2b2b;max-width:680px;}
#glgPost .art-body > p:first-of-type{font-size:1.2rem;line-height:1.62;color:#1a1a1a;margin-bottom:30px;}
#glgPost .art-body p{margin-bottom:22px;}
#glgPost .art-body h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.62rem;line-height:1.22;margin:46px 0 16px;scroll-margin-top:24px;}
#glgPost .art-body h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.3rem;line-height:1.25;margin:34px 0 12px;}
#glgPost .art-body a{color:var(--teal-dark);border-bottom:1px solid rgba(0,107,115,.4);transition:color .2s;}
#glgPost .art-body a:hover{color:var(--teal);}
#glgPost .art-body ul,#glgPost .art-body ol{margin:0 0 22px 1.15em;}
#glgPost .art-body li{margin-bottom:8px;}
#glgPost .art-body img{margin:28px 0;border-radius:2px;}
#glgPost .art-body blockquote{border-left:2px solid var(--teal);padding-left:24px;margin:32px 0;}
#glgPost .art-body blockquote p{font-family:"DM Serif Display",Georgia,serif;font-size:1.32rem;line-height:1.45;color:#1a1a1a;margin-bottom:0;}

/* related row */
#glgPost .rel{background:var(--tint);border-top:1px solid var(--line);padding:72px 0 86px;margin-top:40px;}
#glgPost .rel .lbl{font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:30px;}
#glgPost .rel .postgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 36px;}
#glgPost .rel .post{display:block;}
#glgPost .rel .post .ph{aspect-ratio:16/9;margin-bottom:16px;}
#glgPost .rel .post .ph svg{width:34px;height:34px;}
#glgPost .rel .post .ph img{transition:transform .4s cubic-bezier(.22,1,.36,1);}
#glgPost .rel .post:hover .ph img{transform:scale(1.04);}
#glgPost .rel .post .meta{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:11px;}
#glgPost .rel .post h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.24rem;line-height:1.22;transition:color .2s;}
#glgPost .rel .post:hover h3{color:var(--teal-dark);}

/* smooth anchor scroll on the single post only */
html:has(body.single-post){scroll-behavior:smooth;}

/* ---- blog responsive ---- */
@media(max-width:900px){
  #glgBlog .postgrid{grid-template-columns:repeat(2,1fr);gap:40px 30px;}
  #glgPost .art-grid{grid-template-columns:minmax(0,1fr);gap:0;max-width:720px;}
  #glgPost .art-grid > .toc{display:none;}
  #glgPost .art-body{max-width:none;}
  #glgPost .rel .postgrid{grid-template-columns:repeat(2,1fr);gap:34px 26px;}
}
@media(max-width:700px){
  #glgBlog .feat{grid-template-columns:1fr;gap:24px;}
}
@media(max-width:560px){
  #glgBlog .postgrid{grid-template-columns:1fr;gap:40px;}
  #glgPost .rel .postgrid{grid-template-columns:1fr;gap:34px;}
}
@media(max-width:480px){
  #glgPost .art-grid{padding-left:22px;padding-right:22px;}
}

/* ==========================================================================
   404 + SEARCH — ported from glagoslav-404-prototype / glagoslav-search-prototype.
   Full-bleed container is released above (body.error404 / body.search); the .wrap
   restores the 1180 frame. 404 is scoped under #glg404; search reuses the blog
   #glgBlog scope (.pagehead band, .postgrid/.post journal cards, .pager) and the
   global .shopgrid/.scard cover grid — only the card text + a few bits are new.
   ========================================================================== */

/* shared search field (404 hero + search band) */
#glg404 .searchbar,
#glgBlog.glg-search .searchbar{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:#fff;transition:border-color .2s,box-shadow .2s;}
#glg404 .searchbar:focus-within,
#glgBlog.glg-search .searchbar:focus-within{border-color:var(--teal);box-shadow:0 0 0 3px rgba(0,139,150,.12);}
#glg404 .searchbar .ic,
#glgBlog.glg-search .searchbar .ic{padding:0 14px;color:var(--muted);display:flex;}
#glg404 .searchbar .ic svg,
#glgBlog.glg-search .searchbar .ic svg{width:19px;height:19px;}
#glg404 .searchbar input,
#glgBlog.glg-search .searchbar input{flex:1;min-width:0;border:none;padding:15px 8px 15px 0;font-family:inherit;font-size:.98rem;color:var(--ink);background:transparent;}
#glg404 .searchbar input:focus,
#glgBlog.glg-search .searchbar input:focus{outline:none;}
#glg404 .searchbar button,
#glgBlog.glg-search .searchbar button{background:var(--teal);color:#fff;border:none;padding:0 24px;align-self:stretch;font-family:inherit;font-weight:600;font-size:.94rem;cursor:pointer;transition:background .2s;}
#glg404 .searchbar button:hover,
#glgBlog.glg-search .searchbar button:hover{background:var(--teal-dark);}

/* shared link tiles (404 "Or go to" + search no-results) */
#glg404 .nflinks,
#glgBlog.glg-search .noresults .nflinks{display:flex;flex-wrap:wrap;gap:12px;}
#glg404 .nflinks{justify-content:center;}
#glg404 .nflinks a,
#glgBlog.glg-search .noresults .nflinks a{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:2px;padding:11px 22px;font-size:.94rem;font-weight:500;color:var(--ink);transition:border-color .2s,color .2s,transform .2s;}
#glg404 .nflinks a:hover,
#glgBlog.glg-search .noresults .nflinks a:hover{border-color:var(--teal);color:var(--teal-dark);transform:translateY(-1px);}
#glg404 .nflinks a svg{width:14px;height:14px;color:var(--teal);}

/* ---- 404 ---- */
#glg404 .nf{padding:90px 0 100px;text-align:center;}
#glg404 .nf .code{font-family:"DM Serif Display",Georgia,serif;font-size:clamp(5rem,14vw,9rem);line-height:.9;color:var(--teal-dark);letter-spacing:.02em;}
#glg404 .nf .eyebrow{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);margin:20px 0 14px;}
#glg404 .nf h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(1.9rem,3.4vw,2.6rem);line-height:1.1;color:var(--ink);}
#glg404 .nf p{font-size:1.08rem;color:#444;max-width:46ch;margin:16px auto 0;}
#glg404 .nf .searchbar{max-width:480px;margin:34px auto 0;}
#glg404 .nf .or{font-size:.84rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin:38px 0 18px;}

/* ---- search ---- */
#glgBlog.glg-search .pagehead h1{font-size:clamp(2.1rem,3.6vw,2.9rem);}
#glgBlog.glg-search .pagehead h1 em{font-style:italic;color:var(--teal-dark);}
#glgBlog.glg-search .searchbar{max-width:560px;margin:24px 0 0;}
#glgBlog.glg-search .results{padding:48px 0 90px;}
#glgBlog.glg-search .rescount{font-size:.95rem;color:var(--muted);margin-bottom:30px;}
#glgBlog.glg-search .rescount b{color:var(--ink);font-weight:600;}
#glgBlog.glg-search .noresults{padding:6px 0 20px;}
#glgBlog.glg-search .noresults p{font-size:1.06rem;color:#444;max-width:48ch;margin-bottom:22px;}

/* book cover card (.shopgrid/.scard base already exist §b) — add the text + lift */
.scard .cv{overflow:visible;}
.scard .cv img{border-radius:2px;box-shadow:0 12px 28px rgba(20,20,20,.14);transition:transform .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;}
.scard:hover .cv img{transform:translateY(-7px);box-shadow:0 20px 38px rgba(20,20,20,.2);}
.scard .cv .glg-cvph{display:flex;width:100%;height:100%;align-items:center;justify-content:center;}
.scard .cv .glg-cvph svg{width:40px;height:40px;color:#bdb7ac;}
.scard .au{font-size:.82rem;color:var(--muted);margin-top:15px;}
.scard h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.1rem;line-height:1.22;margin-top:4px;color:var(--ink);}
.scard:hover h3{color:var(--teal-dark);}
.scard .pr{font-size:.86rem;color:var(--ink);margin-top:7px;}

/* ---- 404 responsive ---- */
@media(max-width:560px){
  #glg404 .nf{padding:60px 0 70px;}
}

/* ==========================================================================
   ORDER RECEIVED (thank-you) — native Woo order-received restyled to the brand.
   Prototype: reference/glagoslav-thank-you-prototype.html. Rendered inside the
   checkout page via woocommerce/checkout/thankyou.php (Astra header/footer wrap it;
   sidebar already dropped by the is_checkout() layout filter). Scoped #glgThankyou;
   totals come from WC get_order_item_totals() so shipping shows with its method.
   No universal reset on the live site, so <dl>/<dd> margins are zeroed here.
   ========================================================================== */

/* hide Astra's page title (reads "Checkout" + our "Secure checkout" eyebrow) — the
   confirmation hero replaces it on the order-received endpoint. */
body.woocommerce-order-received .entry-header{display:none;}

#glgThankyou{padding:64px 0 90px;}
#glgThankyou .ty{max-width:760px;margin:0 auto;}

/* hero */
#glgThankyou .ty-hero{text-align:center;margin-bottom:44px;}
#glgThankyou .ty-check{width:60px;height:60px;border-radius:50%;background:var(--tint);color:var(--teal-dark);display:flex;align-items:center;justify-content:center;margin:0 auto 22px;}
#glgThankyou .ty-check svg{width:28px;height:28px;}
#glgThankyou .ty-eyebrow{font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;color:var(--teal-dark);margin-bottom:14px;}
#glgThankyou .ty-hero h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:clamp(2.1rem,4vw,2.9rem);line-height:1.08;color:var(--ink);}
#glgThankyou .ty-hero p{font-size:1.08rem;color:#444;max-width:52ch;margin:16px auto 0;}

/* order summary card */
#glgThankyou .ty-card{border:1px solid var(--line);border-radius:8px;overflow:hidden;}
#glgThankyou .ty-meta{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line);margin:0;}
#glgThankyou .ty-meta div{padding:18px 22px;border-right:1px solid var(--line);}
#glgThankyou .ty-meta div:last-child{border-right:none;}
#glgThankyou .ty-meta dt{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;}
#glgThankyou .ty-meta dd{font-size:.95rem;font-weight:500;color:var(--ink);margin:0;}
#glgThankyou .ty-items{padding:6px 22px;}
#glgThankyou .ty-row{display:flex;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid var(--line);}
#glgThankyou .ty-row:last-child{border-bottom:none;}
#glgThankyou .ty-cv{width:46px;flex:0 0 46px;aspect-ratio:127/203;background:var(--ph);border-radius:2px;overflow:hidden;}
#glgThankyou .ty-cv img{width:100%;height:100%;object-fit:cover;display:block;}
#glgThankyou .ty-info{flex:1;min-width:0;}
#glgThankyou .ty-info .au{font-size:.8rem;color:var(--muted);}
#glgThankyou .ty-info h3{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.06rem;line-height:1.2;color:var(--ink);}
#glgThankyou .ty-qty{font-size:.85rem;color:var(--muted);white-space:nowrap;}
#glgThankyou .ty-price{font-size:.95rem;font-weight:500;white-space:nowrap;color:var(--ink);}
#glgThankyou .ty-sum{padding:14px 22px;border-top:1px solid var(--line);}
#glgThankyou .ty-sumrow{display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:.94rem;color:#444;padding:5px 0;}
#glgThankyou .ty-sumrow > span:last-child{text-align:right;}
/* WC wraps the shipping method in <small class="shipped_via">via …</small>; mute it like the prototype's em */
#glgThankyou .ty-sumrow .shipped_via,
#glgThankyou .ty-sumrow em,
#glgThankyou .ty-sumrow small{font-style:normal;color:var(--muted);font-size:.86rem;}
#glgThankyou .ty-total{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;border-top:2px solid var(--ink);}
#glgThankyou .ty-total .lbl{font-weight:600;color:var(--ink);}
#glgThankyou .ty-total .val{font-family:"Libre Franklin",system-ui,sans-serif;font-weight:600;font-size:1.2rem;color:var(--ink);}
/* WC price markup (.amount / .tax_label) inside our cells inherits our type */
#glgThankyou .ty-price .amount,
#glgThankyou .ty-meta dd .amount,
#glgThankyou .ty-sumrow .amount,
#glgThankyou .ty-total .val .amount{color:inherit;font-weight:inherit;font-family:inherit;}
#glgThankyou .tax_label{color:var(--muted);font-weight:400;font-size:.82em;}

/* next steps */
#glgThankyou .ty-next{margin-top:40px;}
#glgThankyou .ty-next h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.4rem;margin-bottom:18px;color:var(--ink);}
#glgThankyou .ty-steps{display:grid;gap:2px;border:1px solid var(--line);border-radius:8px;overflow:hidden;}
#glgThankyou .ty-step{display:flex;gap:15px;padding:18px 22px;background:var(--paper);border-bottom:1px solid var(--line);}
#glgThankyou .ty-step:last-child{border-bottom:none;}
#glgThankyou .ty-step .ic{width:34px;height:34px;flex:0 0 34px;border-radius:50%;background:var(--tint);color:var(--teal-dark);display:flex;align-items:center;justify-content:center;}
#glgThankyou .ty-step .ic svg{width:17px;height:17px;}
#glgThankyou .ty-step .tx h4{font-size:.98rem;font-weight:600;margin-bottom:3px;color:var(--ink);}
#glgThankyou .ty-step .tx p{font-size:.92rem;color:var(--muted);}

/* downloads callout (only rendered for downloadable items) */
#glgThankyou .ty-callout{margin-top:22px;background:var(--tint);border:1px solid var(--line);border-radius:8px;padding:20px 24px;}
#glgThankyou .ty-callout h4{font-size:.98rem;font-weight:600;margin-bottom:5px;color:var(--ink);}
#glgThankyou .ty-callout p{font-size:.92rem;color:#444;}
#glgThankyou .ty-callout a.dl{display:inline-flex;align-items:center;gap:8px;margin-top:12px;font-weight:600;color:var(--teal-dark);font-size:.92rem;}
#glgThankyou .ty-callout a.dl svg{width:15px;height:15px;}

/* review */
#glgThankyou .ty-review{margin-top:40px;text-align:center;background:var(--paper-soft);border:1px solid var(--line);border-radius:8px;padding:36px 30px;}
#glgThankyou .ty-review h2{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:1.5rem;margin-bottom:10px;color:var(--ink);}
#glgThankyou .ty-review p{font-size:1rem;color:#444;max-width:46ch;margin:0 auto 22px;}
#glgThankyou .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--teal);color:#fff;border:none;border-radius:2px;padding:0 30px;height:52px;font-family:inherit;font-weight:600;font-size:1rem;cursor:pointer;text-decoration:none;transition:background .2s,transform .2s;}
#glgThankyou .btn:hover{background:var(--teal-dark);transform:translateY(-1px);color:#fff;}
#glgThankyou .btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);}
#glgThankyou .btn.ghost:hover{border-color:var(--teal);color:var(--teal-dark);}
#glgThankyou .ty-review .btn svg{width:18px;height:18px;}

/* support + actions + newsletter */
#glgThankyou .ty-support{margin-top:34px;text-align:center;font-size:.98rem;color:#444;}
#glgThankyou .ty-support a{color:var(--teal-dark);font-weight:500;}
#glgThankyou .ty-actions{margin-top:26px;display:flex;justify-content:center;gap:14px;flex-wrap:wrap;}
#glgThankyou .ty-news{margin-top:40px;border-top:1px solid var(--line);padding-top:26px;text-align:center;font-size:.94rem;color:var(--muted);}
#glgThankyou .ty-news a{color:var(--teal-dark);font-weight:600;}

/* gateway payment note (Mollie "payment completed" / bank-transfer instructions) — output by
   the woocommerce_thankyou hooks as a sibling after #glgThankyou. Center it to the card width and
   give it the brand-notice look instead of the default grey WC info bar. */
body.woocommerce-order-received .woocommerce > .mollie-instructions,
body.woocommerce-order-received .woocommerce > .woocommerce-info,
body.woocommerce-order-received .woocommerce > .woocommerce-message{max-width:760px;margin:26px auto 0;background:var(--tint);border:1px solid var(--line);border-left:3px solid var(--teal);border-radius:8px;padding:16px 20px;font-size:.92rem;line-height:1.5;color:var(--ink);}
body.woocommerce-order-received .woocommerce > .mollie-instructions::before,
body.woocommerce-order-received .woocommerce > .woocommerce-info::before,
body.woocommerce-order-received .woocommerce > .woocommerce-message::before{display:none;}
body.woocommerce-order-received .woocommerce > .mollie-instructions p{margin:0;}
body.woocommerce-order-received .woocommerce > .mollie-instructions strong{font-weight:600;}
body.woocommerce-order-received .woocommerce > .mollie-instructions a,
body.woocommerce-order-received .woocommerce > .woocommerce-info a,
body.woocommerce-order-received .woocommerce > .woocommerce-message a{color:var(--teal-dark);font-weight:500;}

/* responsive */
@media(max-width:620px){
  #glgThankyou .ty-meta{grid-template-columns:1fr 1fr;}
  #glgThankyou .ty-meta div:nth-child(2){border-right:none;}
  #glgThankyou .ty-meta div:nth-child(1),
  #glgThankyou .ty-meta div:nth-child(2){border-bottom:1px solid var(--line);}
}
@media(max-width:480px){
  #glgThankyou{padding:44px 0 70px;}
  #glgThankyou .ty-meta{grid-template-columns:1fr;}
  #glgThankyou .ty-meta div{border-right:none;border-bottom:1px solid var(--line);}
  #glgThankyou .ty-meta div:last-child{border-bottom:none;}
}
