
/* ---- consistentie-polish (2026-08-07) --------------------------------------
   Kleine dingen die een site verzorgd laten aanvoelen: merk-kleurige tekst-
   selectie, rustige scrollbars, prijzen in tabellaire cijfers zodat bedragen
   onder elkaar uitlijnen, en respect voor prefers-reduced-motion. */
::selection{background:#0f7a5f;color:#fff;}
html{-webkit-tap-highlight-color:transparent;scrollbar-color:#d8d3c6 #f6f2ea;}
::-webkit-scrollbar{width:12px;height:12px;}
::-webkit-scrollbar-track{background:transparent;}
::-webkit-scrollbar-thumb{background:#d8d3c6;border-radius:99px;border:3px solid #f6f2ea;}
::-webkit-scrollbar-thumb:hover{background:#c6c1b1;}
[class*='price'],[class*='Price']{font-variant-numeric:tabular-nums;}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important;}}
  :root{--ink:#23241f;--ink2:#6a6b62;--ink3:#6e6f68;--line:#e7e1d4;--bg:#f6f2ea;--paper:#fff;--accent:#0f7a5f;--accent-d:#0a5e49;--accent-soft:#e7f1ec;--sand:#efe7d8;}
  *{box-sizing:border-box;} body{margin:0;background:var(--bg);color:var(--ink);line-height:1.6;
    font-family:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;}
  a{color:inherit;text-decoration:none;} img,svg{display:block;max-width:100%;}
  h1,h2,h3{font-weight:800;letter-spacing:-.02em;}
  .sf-announce{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;background:var(--accent-d);color:#fff;font-size:13.5px;font-weight:600;padding:9px 16px;}
  .sf-announce .sep{opacity:.55;}
  .sf-top{position:sticky;top:0;z-index:20;background:rgba(246,242,234,.86);backdrop-filter:saturate(150%) blur(12px);border-bottom:1px solid var(--line);}
  .sf-top__in{max-width:1180px;margin:0 auto;display:flex;align-items:center;gap:20px;padding:12px 24px;}
  .sf-brand{display:flex;align-items:center;gap:11px;flex-shrink:0;}
  .sf-brand__txt{display:flex;flex-direction:column;line-height:1.15;}
  .sf-brand__txt strong{font-size:19px;font-weight:800;letter-spacing:-.03em;}
  .sf-brand__txt small{font-size:10.5px;color:var(--ink3);letter-spacing:.06em;text-transform:uppercase;margin-top:3px;}
  .sf-nav{display:flex;gap:20px;font-size:14.5px;font-weight:600;color:var(--ink2);margin-left:auto;flex-wrap:wrap;align-items:center;}
  .sf-burger{display:none;}
  .sf-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;}
  .sf-acct{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:var(--accent);border:1px solid var(--accent);color:#fff;flex-shrink:0;transition:background .16s,color .16s,border-color .16s;}
  .sf-acct:hover,.sf-acct.on{background:var(--accent-d);border-color:var(--accent-d);color:#fff;}
  .sf-login{display:inline-flex;align-items:center;justify-content:center;background:var(--accent);color:#fff;border-radius:999px;padding:8px 17px;font-size:13.5px;font-weight:700;flex-shrink:0;}
  .sf-login:hover{background:var(--accent-d);}
  .sf-tabbar{display:none;}
  .sf-nav a:hover{color:var(--accent-d);}
  .sf-nav a.on{color:var(--accent-d);}
  .sf-nav .sf-cart{background:var(--ink);color:#fff;border-radius:999px;padding:8px 16px;font-size:13px;}
  .sf-nav .sf-cart:hover{background:var(--accent-d);color:#fff;}
  .sf-wrap{max-width:1180px;margin:0 auto;padding:30px 24px 10px;}
  .sf-crumb{font-size:13px;color:var(--ink3);margin-bottom:18px;}
  .sf-crumb a:hover{color:var(--accent-d);text-decoration:underline;}
  h1{font-size:clamp(28px,4vw,38px);letter-spacing:-.03em;margin:0 0 10px;} .sf-lead{color:var(--ink2);margin:0 0 24px;max-width:760px;font-size:16.5px;}
  .sf-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px;padding-bottom:44px;}
  /* The whole card is the link. An empty overlay on the title anchor is stretched
   across the card, so a click on the price, the whitespace or the image all land
   on the product page - not just the photo. It stays a real <a>, so right-click,
   middle-click and crawlers keep working. The size picker and Add button sit
   above the overlay so they still do their own job. */
.pc{background:var(--paper);border:1px solid var(--line);border-radius:20px;overflow:hidden;display:flex;flex-direction:column;transition:box-shadow .16s,transform .16s;position:relative;}
  .pc__body > a::after{content:'';position:absolute;inset:0;z-index:1;}
  .pc__size,.sf-add{position:relative;z-index:2;}
  .pc:focus-within{box-shadow:0 0 0 3px rgba(14,124,102,.25);}
  .pc:hover{box-shadow:0 18px 40px -22px rgba(40,35,20,.4);transform:translateY(-3px);}
  .pc__media{position:relative;aspect-ratio:1;background:linear-gradient(160deg,var(--accent-soft),var(--sand));display:grid;place-items:center;padding:22px;}
  .pc__media svg{width:74%;height:74%;}
  .pc__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
  .pc__cat{position:absolute;left:12px;top:12px;font-size:11px;font-weight:700;background:#fff;border-radius:999px;padding:4px 11px;color:var(--ink2);box-shadow:0 1px 4px rgba(40,35,20,.1);}
  .pc__av{position:absolute;left:12px;bottom:12px;font-size:11px;font-weight:700;background:#fff;border-radius:999px;padding:4px 11px;box-shadow:0 1px 4px rgba(40,35,20,.1);display:inline-flex;align-items:center;gap:5px;}
  .pc__av::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;}
  /* In stock is groen; alles op extended dispatch deelt dezelfde amberkleur. */
  .av-in{color:#0f7a5f;} .av-made{color:#b26a00;} .av-oos{color:#b0392c;} .av-low{color:#0f7a5f;}
  .av-pre{color:#b26a00;}
  .pc__body{padding:15px 17px 17px;display:flex;flex-direction:column;gap:4px;flex:1;}
  .pc__name{font-size:16px;font-weight:700;margin:0;letter-spacing:-.01em;}
  .pc__spec{font-size:12.5px;color:var(--ink3);}
  .pc__foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;padding-top:12px;gap:8px;}
  .pc__price b{font-size:18px;font-weight:800;} .pc__price s{color:var(--ink3);font-size:13px;margin-left:5px;font-weight:600;}
  .sf-add{background:var(--accent);color:#fff;border-radius:999px;padding:9px 16px;font-size:13px;font-weight:700;white-space:nowrap;}
  .sf-add:hover{background:var(--accent-d);} .sf-add--off{background:#eae3d5;color:var(--ink3);pointer-events:none;}
  /* product detail */
  .pd{display:grid;grid-template-columns:1fr 1fr;gap:38px;align-items:start;padding-bottom:34px;}
  .pd__media{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--accent-soft),var(--sand));border:1px solid var(--line);border-radius:26px;aspect-ratio:1;display:grid;place-items:center;padding:44px;}
  .pd__media svg{width:68%;height:68%;}
  .pd__media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
  .pd__cat{font-size:12px;font-weight:700;color:var(--accent-d);text-transform:uppercase;letter-spacing:.06em;}
  .pd h1{font-size:clamp(28px,3.4vw,36px);margin:10px 0 6px;}
  .pd__spec{color:var(--ink2);font-size:15px;margin-bottom:16px;}
  .pd__detail{margin:2px 0 14px;font-size:14px;color:var(--ink2);background:#faf7f0;border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:10px 13px;line-height:1.5;}
  .pd__sizewrap{margin:8px 0 18px;}
  .pd__sizelbl{display:block;font-size:11.5px;font-weight:700;color:var(--ink3);text-transform:uppercase;letter-spacing:.06em;margin-bottom:8px;}
  .pd__size{font:inherit;font-size:15px;font-weight:700;letter-spacing:-.01em;color:var(--ink);background-color:#fff;border:1.5px solid var(--line);border-radius:12px;padding:11px 42px 11px 16px;min-width:180px;cursor:pointer;-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%236a6b62' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 15px center;box-shadow:0 1px 2px rgba(40,35,20,.05);transition:border-color .16s ease,box-shadow .16s ease,background-color .16s ease;}
  .pd__size:hover{border-color:var(--accent);background-color:var(--accent-soft,#e7f1ec);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='13' height='13' viewBox='0 0 24 24' fill='none' stroke='%230f7a5f' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");}
  .pd__size:focus-visible{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft,rgba(15,122,95,.16));}
  .pd__price{font-size:32px;font-weight:800;letter-spacing:-.02em;} .pd__price s{font-size:18px;color:var(--ink3);font-weight:600;margin-left:8px;}
  .pd__av{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;margin:16px 0 4px;}
  .pd__av::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;}
  .pd__ship{font-size:13.5px;color:var(--ink2);margin-bottom:20px;}
  .pd__desc,.pd__descp{color:var(--ink2);margin:0 0 14px;}
  .pd__descp:last-of-type{margin-bottom:24px;}
  .pd__buy{display:inline-block;background:var(--accent);color:#fff;border-radius:999px;padding:15px 34px;font-size:15px;font-weight:700;}
  .pd__buy:hover{background:var(--accent-d);} .pd__buy--off{background:#eae3d5;color:var(--ink3);pointer-events:none;}
  .pd__ruo{font-size:12px;color:var(--ink3);margin-top:18px;max-width:440px;line-height:1.5;}
  .sf-h2{font-size:22px;letter-spacing:-.02em;margin:34px 0 16px;}
  .pd-specs{width:100%;max-width:660px;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;}
  .pd-specs th,.pd-specs td{text-align:left;padding:13px 17px;font-size:14px;border-bottom:1px solid var(--line);vertical-align:top;}
  .pd-specs tr:last-child th,.pd-specs tr:last-child td{border-bottom:none;}
  .pd-specs th{width:150px;color:var(--ink2);font-weight:600;background:#faf7f0;white-space:nowrap;}
  .pd-trust{margin:32px 0 0;background:var(--accent-soft);border:1px solid #cfe6dc;border-radius:20px;padding:20px 22px;}
  .pd-trust__row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
  .pd-trust__i strong{display:block;font-size:13.5px;color:var(--ink);} .pd-trust__i span{font-size:12.5px;color:var(--ink2);}
  .pd-trust__note{font-size:12.5px;color:var(--ink2);margin:14px 0 0;line-height:1.55;}
  /* COA library */
  .coa-search{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:6px 8px 6px 18px;max-width:560px;margin:0 0 26px;}
  .coa-search svg{color:var(--ink3);flex:none;}
  .coa-search input{flex:1;border:none;outline:none;background:none;font-size:15px;font-family:inherit;padding:8px 0;min-width:0;}
  .coa-search button{background:var(--accent);color:#fff;border:none;border-radius:999px;padding:10px 20px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;}
  .coa-search button:hover{background:var(--accent-d);}
  .coa-list{display:flex;flex-direction:column;gap:10px;max-width:760px;padding-bottom:10px;}
  .coa{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;}
  .coa__ic{width:40px;height:40px;border-radius:11px;background:var(--accent-soft);color:var(--accent-d);display:grid;place-items:center;flex:none;}
  .coa__info{flex:1;min-width:0;}
  .coa__info b{display:block;font-size:15px;}
  .coa__info span{font-size:12.5px;color:var(--ink2);}
  .coa__view{background:var(--accent);color:#fff;border-radius:999px;padding:9px 18px;font-size:13px;font-weight:700;white-space:nowrap;}
  .coa__view:hover{background:var(--accent-d);}
  .coa-empty{background:#fff;border:1px solid var(--line);border-radius:14px;padding:28px;color:var(--ink2);max-width:760px;}
  /* category nav pills */
  .sf-cats{display:flex;flex-wrap:wrap;gap:9px;margin-bottom:26px;}
  .sf-cats a{font-size:13px;font-weight:600;color:var(--ink2);background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 15px;}
  .sf-cats a:hover,.sf-cats a.on{background:var(--accent);border-color:var(--accent);color:#fff;}
  .sf-intro{max-width:820px;margin:40px 0 10px;color:var(--ink2);}
  .sf-intro h2{font-size:22px;color:var(--ink);letter-spacing:-.02em;margin:0 0 12px;}
  .sf-intro p{margin:0 0 14px;} .sf-intro a{color:var(--accent-d);text-decoration:underline;}
  .sf-foot{border-top:1px solid var(--line);background:#fff;margin-top:24px;}
  .sf-foot__in{max-width:1180px;margin:0 auto;padding:40px 24px 28px;display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:26px;}
  .sf-foot h3,.sf-foot h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink3);margin:0 0 12px;}
  .sf-foot a{display:block;font-size:13.5px;color:var(--ink2);margin-bottom:7px;} .sf-foot a:hover{color:var(--accent-d);}
  .sf-foot .sf-brand{margin-bottom:12px;}
  .sf-foot__blurb{font-size:13.5px;color:var(--ink2);margin:0 0 10px;max-width:30ch;line-height:1.55;}
  .sf-foot__bottom{max-width:1180px;margin:0 auto;padding:16px 24px 30px;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink3);border-top:1px solid var(--line);}
  @media (max-width:760px){ .pd{grid-template-columns:1fr;gap:22px;} .pd-trust__row{grid-template-columns:repeat(2,1fr);} .sf-foot__in{grid-template-columns:1fr 1fr;}
    /* bigger tap targets on mobile -> fewer dead clicks */
    .sf-top__in{padding-top:10px;padding-bottom:8px;}
    .sf-top .sf-brand__txt small{display:none;}
    .sf-top .sf-brand{margin-bottom:4px;}
    .sf-burger{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:11px;border:1px solid var(--line);background:#fff;color:var(--ink);cursor:pointer;}
    .sf-nav{position:absolute;top:100%;left:0;right:0;margin:0;flex-direction:column;align-items:stretch;gap:0;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 10px 30px -12px rgba(40,35,20,.3);padding:4px 24px 12px;display:none;z-index:19;font-size:15px;}
    .sf-navcb:checked ~ .sf-nav{display:flex;}
    .sf-nav a{padding:13px 4px;border-top:1px solid var(--line2,#efeae0);min-height:auto;}
    .sf-nav a:first-child{border-top:0;}
    .sf-nav a{padding:6px 2px;display:inline-flex;align-items:center;min-height:38px;}
    .sf-crumb a{display:inline-block;padding:6px 3px;}
    /* Category chips: one swipeable row instead of a big stacked block (bol.com-style). */
    .sf-cats{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;gap:8px;margin:0 -20px 18px;padding:2px 20px 8px;scrollbar-width:none;-ms-overflow-style:none;}
    .sf-cats::-webkit-scrollbar{display:none;}
    .sf-cats a{flex:0 0 auto;white-space:nowrap;scroll-snap-align:start;}
    /* Never let a wide element force sideways page scroll on phones. */
    body{overflow-x:clip;}
  }
  @media (max-width:760px){
    .sf-actions{margin-left:auto;}
    body{padding-bottom:62px;}
    .sf-tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:30;background:rgba(255,255,255,.97);backdrop-filter:saturate(150%) blur(10px);border-top:1px solid var(--line);padding:6px 4px;padding-bottom:calc(6px + env(safe-area-inset-bottom));}
    .sf-tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10.5px;font-weight:600;color:var(--ink2);padding:4px 0;min-height:auto;border:0;}
    .sf-tabbar a.on{color:var(--accent-d);}
    .sf-tabbar svg{width:23px;height:23px;}
  }
  /* Size picker on the grid card. Same slot as .pc__spec, so the card keeps its
     height; only multi-size products render one. */
  .pc__size{font-size:12.5px;color:var(--ink2);background:#fff;border:1px solid var(--line);border-radius:8px;padding:4px 26px 4px 8px;font-family:inherit;font-weight:600;cursor:pointer;-webkit-appearance:none;appearance:none;align-self:flex-start;max-width:100%;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%237a7c72' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 7px center;background-size:12px;}
  .pc__size:hover{border-color:var(--accent);} .pc__size:focus{outline:2px solid var(--accent);outline-offset:1px;}
  /* Cart button: the SSR pages have no drawer, so it links to / where the SPA
     opens it (?cart=1). The count comes from the shared localStorage basket. */
  /* Same dark pill as the homepage cart button, and in the same place (after
     the account button). The two headers used to disagree: a white circle here
     and a dark pill there, so the control moved and changed colour the moment
     a shopper clicked through to a product. */
  .sf-cartb{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;background:#fff;border:1px solid var(--line);color:var(--ink2);flex-shrink:0;transition:border-color .15s,color .15s;}
  .sf-cartb:hover{border-color:var(--accent);color:var(--accent-d);}
  .sf-cartn{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:800;line-height:18px;text-align:center;}
  /* width:max-content matters: a fixed box at left:50% otherwise shrink-to-fits
     inside the right half of the screen, so on a phone the text wrapped to three
     lines and the toast grew up into the tab bar. */
  .sf-toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,14px);z-index:60;background:var(--ink,#23241f);color:#fff;font-size:13.5px;font-weight:600;padding:11px 18px;border-radius:999px;box-shadow:0 8px 26px rgba(0,0,0,.22);opacity:0;pointer-events:none;transition:opacity .18s ease,transform .18s ease;width:max-content;max-width:calc(100vw - 32px);text-align:center;}
  .sf-toast.on{opacity:1;transform:translate(-50%,0);}
  @media (max-width:760px){ .sf-toast{bottom:80px;} }

/* ---- afwerkingsronde (2026-08-23): SSR-pagina's in de pas met de homepage ----
   De homepage heeft rustschaduwen, actieve knop-states en zachte overgangen;
   de servergerenderde pagina's misten die. Zelfde waarden als styles-2.css. */
html{color-scheme:light;}
.pc{box-shadow:0 4px 16px -12px rgba(40,35,20,.28);}
.sf-add,.pd__buy,.coa__view,.sf-login,.coa-search button{transition:background .15s,transform .12s;}
.sf-add:active,.coa__view:active,.sf-login:active,.coa-search button:active{transform:scale(.94);}
.pd__buy:active{transform:translateY(1px);}
.sf-cats a{transition:background .15s,color .15s,border-color .15s;}
.sf-nav a,.sf-foot a,.sf-crumb a,.sf-cartb{transition:color .15s,border-color .15s;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
/* zelfde kaartradius als de homepage-kaarten (was 20px) */
.pc{border-radius:18px;}
