/* Hallmark · macrostructure: Ecosystem Index · P5 H4 E5 S4 R5 V5 · gates: pass */
:root{--paper:oklch(97% .014 88);--paper-2:oklch(93% .018 88);--ink:oklch(20% .018 72);--muted:oklch(45% .018 72);--rule:oklch(79% .018 80);--accent:oklch(53% .14 45);--focus:oklch(58% .18 45);--display:"Fraunces",ui-serif,serif;--body:"Be Vietnam Pro",Tahoma,Arial,sans-serif;--xs:.75rem;--sm:.9rem;--base:1rem;--md:1.25rem;--lg:1.563rem;--xl:1.953rem;--2xl:2.441rem;--display-size:clamp(2.9rem,5vw + 1rem,5.2rem);--max:1280px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);font-size:var(--base);line-height:1.62}a{color:inherit}button,input,textarea,select{font:inherit}.skip-link{position:absolute;left:-999px}.skip-link:focus{left:1rem;top:1rem;z-index:5;background:var(--ink);color:var(--paper);padding:.7rem 1rem}.masthead,main>section,footer{padding-left:max(1.4rem,calc((100vw - var(--max))/2));padding-right:max(1.4rem,calc((100vw - var(--max))/2))}.masthead{position:sticky;top:0;z-index:20;border-bottom:1px solid var(--rule);height:82px;display:flex;align-items:center;gap:2rem;justify-content:space-between;background:color-mix(in oklch,var(--paper) 94%,transparent);backdrop-filter:blur(12px)}.brand{display:flex;align-items:center;max-width:215px}.brand img{width:100%;height:48px;object-fit:contain;object-position:left center}.masthead nav{display:flex;gap:1.8rem;font-size:var(--sm)}.masthead nav a{text-decoration:none}.masthead nav a:hover,.text-link:hover{color:var(--accent)}.masthead__actions{display:flex;align-items:center;gap:.65rem}.language-switch{min-width:42px;padding:.57rem .5rem;background:transparent;border:1px solid var(--ink);color:var(--ink);font-size:var(--xs);font-weight:700;cursor:pointer}.header-cta,.primary-button{border:1px solid var(--ink);background:var(--ink);color:var(--paper);text-decoration:none;padding:.62rem .95rem;font-size:var(--sm);font-weight:700}.header-cta span,.primary-button span{color:oklch(78% .15 80);font-size:1.1em}.intro{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,8vw,9rem);padding-top:clamp(3.5rem,8vw,8rem);padding-bottom:clamp(3.5rem,8vw,8rem);border-bottom:1px solid var(--rule)}.intro__copy{align-self:center}.eyebrow{font-size:var(--xs);text-transform:uppercase;letter-spacing:.13em;font-weight:700;margin:0 0 1rem;color:var(--muted)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--display);line-height:1.04;letter-spacing:-.038em}h1{font-size:var(--display-size);max-width:11ch;margin-bottom:1.35rem}h2{font-size:clamp(2.3rem,4vw,4.5rem);max-width:12ch;margin-bottom:1.4rem}.lede{font-size:var(--md);max-width:47ch;color:var(--muted);margin-bottom:2rem}.text-link{font-size:var(--sm);font-weight:700;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:.18rem}.hero-photo{margin:0;background:var(--paper-2);align-self:start}.hero-photo img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;mix-blend-mode:multiply}.hero-photo figcaption{padding:.75rem 1rem;font-family:var(--body);font-size:var(--xs);letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.index{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid var(--rule)}.index a{padding:1.4rem 0;text-decoration:none;border-right:1px solid var(--rule);display:flex;align-items:baseline;gap:.75rem}.index a:last-child{border:0}.index b{font-family:var(--display);font-size:var(--xl);letter-spacing:-.04em}.index span{font-size:var(--sm);color:var(--muted)}.catalogue-section{padding-top:clamp(4rem,9vw,9rem);padding-bottom:clamp(4rem,9vw,9rem)}.section-head{display:flex;justify-content:space-between;gap:4rem;align-items:end;margin-bottom:3rem}.section-head p:last-child{max-width:36ch;color:var(--muted);margin-bottom:.3rem}.filters{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);display:flex;gap:0;overflow:auto;margin-bottom:2rem}.filter{background:transparent;border:0;border-right:1px solid var(--rule);padding:.85rem 1.1rem;white-space:nowrap;cursor:pointer;font-size:var(--sm)}.filter.is-active{background:var(--ink);color:var(--paper)}.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule)}.product-card{background:var(--paper)}.product-card__open{border:0;background:var(--paper);padding:1rem;text-align:left;width:100%;height:100%;cursor:pointer;transition:background .2s}.product-card__open:hover{background:var(--paper-2)}.product-card__image{background:var(--paper-2);height:250px}.product-card__image img{width:100%;height:100%;object-fit:cover;mix-blend-mode:multiply}.product-card__number{font-size:var(--xs);color:var(--muted);letter-spacing:.1em;margin:1rem 0 .4rem}.product-card h3{font-size:var(--lg);margin-bottom:.65rem}.product-card__excerpt{color:var(--muted);font-size:var(--sm);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.product-card .text-link{font-size:var(--xs);display:inline-block;margin-top:.7rem}.source-section{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--paper-2);display:grid;grid-template-columns:1fr 1fr;gap:4rem;padding-top:clamp(4rem,8vw,7rem);padding-bottom:clamp(4rem,8vw,7rem)}.source-section__body{max-width:50ch}.source-section ul{list-style:'—  ';padding-left:1.4rem}.source-section li{padding:.4rem 0;border-bottom:1px solid var(--rule)}.enquiry{display:grid;grid-template-columns:.7fr 1.3fr;gap:clamp(2rem,8vw,8rem);padding-top:clamp(4rem,8vw,8rem);padding-bottom:clamp(4rem,8vw,8rem)}.enquiry>div p:last-child{color:var(--muted);max-width:35ch}form{display:grid;grid-template-columns:1fr 1fr;gap:1rem}label{font-size:var(--sm);font-weight:700}label span{font-weight:400;color:var(--muted)}input,textarea,select{display:block;width:100%;margin-top:.35rem;border:1px solid var(--rule);background:var(--paper);padding:.7rem;border-radius:0;color:var(--ink)}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.form-wide,.form-status{grid-column:1/-1}.primary-button{width:max-content;cursor:pointer}.form-status{min-height:1.5rem;margin:0;color:var(--accent);font-size:var(--sm)}footer{border-top:1px solid var(--rule);padding-top:2rem;padding-bottom:2rem;display:flex;justify-content:space-between;gap:1rem;font-size:var(--sm)}footer p{margin:0;color:var(--muted)}.product-dialog{border:0;padding:0;background:var(--paper);width:min(920px,calc(100vw - 2rem));max-height:90vh;color:var(--ink);box-shadow:0 1rem 4rem oklch(20% .02 72/.25)}.product-dialog::backdrop{background:oklch(20% .02 72/.65)}.dialog-close{position:sticky;top:1rem;float:right;margin:1rem;border:1px solid var(--ink);width:2.6rem;height:2.6rem;border-radius:50%;background:var(--paper);font-size:1.5rem;cursor:pointer;z-index:2}.dialog-product{display:grid;grid-template-columns:1fr 1fr;gap:2.3rem;padding:clamp(1.5rem,4vw,3.5rem)}.dialog-product__image{width:100%;aspect-ratio:1/1;object-fit:cover;background:var(--paper-2);mix-blend-mode:multiply}.dialog-product h2{font-size:clamp(2rem,4vw,3.8rem)}.dialog-product__content{color:var(--muted);font-size:var(--sm)}.dialog-product__content img{max-width:100%;height:auto}.dialog-actions{display:flex;gap:.8rem;flex-wrap:wrap;margin:1.5rem 0}.secondary-button{padding:.62rem .95rem;background:transparent;border:1px solid var(--ink);cursor:pointer;text-decoration:none;font-size:var(--sm);font-weight:700}.comments{border-top:1px solid var(--rule);padding-top:1.5rem}.comments h3{font-size:var(--lg)}.comment{padding:1rem 0;border-bottom:1px solid var(--rule);font-size:var(--sm)}.comment b{display:block}.comment-form{grid-template-columns:1fr}.comment-form .primary-button{margin-top:.2rem}@media(max-width:760px){.masthead{height:auto;padding-top:1rem;padding-bottom:1rem;flex-wrap:wrap;gap:.8rem}.masthead nav{order:3;width:100%;justify-content:space-between;gap:.5rem}.header-cta{display:none}.intro,.source-section,.enquiry,.dialog-product{grid-template-columns:1fr}.intro{gap:2rem}.hero-photo{max-width:530px}.index{grid-template-columns:1fr}.index a{border-right:0;border-bottom:1px solid var(--rule)}.section-head{display:block}.product-grid{grid-template-columns:1fr}.product-card__image{height:220px}.source-section{gap:1rem}form{grid-template-columns:1fr}footer{display:grid}.dialog-product{padding:1.5rem}.dialog-close{position:relative}}footer{align-items:center}.footer-brand{display:flex;align-items:center;gap:1rem}.footer-brand img{width:72px;height:50px;object-fit:contain}.footer-links{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;justify-content:flex-end}.footer-links a{color:var(--muted);text-decoration:none}.footer-links a:hover{color:var(--accent)}.hero-photo{overflow:hidden;position:relative}.hero-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 15%,oklch(92% .08 85/.26) 50%,transparent 80%);transform:translateX(-120%);animation:hero-sheen 9s ease-in-out infinite;pointer-events:none}.hero-photo img{animation:hero-drift 11s ease-in-out infinite}@keyframes hero-drift{0%,100%{transform:scale(1.01) translate3d(0,0,0)}50%{transform:scale(1.055) translate3d(-1.2%,-.7%,0)}}@keyframes hero-sheen{0%,20%{transform:translateX(-120%)}50%,100%{transform:translateX(125%)}}@media(max-width:760px){.masthead{position:sticky;height:auto;padding-top:.65rem;padding-bottom:.65rem;gap:.65rem}.brand{max-width:150px}.brand img{height:38px}.masthead nav{order:3;width:100%;justify-content:space-between;gap:.5rem}.masthead__actions{margin-left:auto}.header-cta{display:none}.intro,.source-section,.enquiry,.dialog-product{grid-template-columns:1fr}.intro{gap:2rem}.hero-photo{max-width:530px}.index{grid-template-columns:1fr}.index a{border-right:0;border-bottom:1px solid var(--rule)}.section-head{display:block}.product-grid{grid-template-columns:1fr}.product-card__image{height:220px}.source-section{gap:1rem}form{grid-template-columns:1fr}footer{display:grid}.footer-links{justify-content:start}.dialog-product{padding:1.5rem}.dialog-close{position:relative}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.product-card__open,.hero-photo img{transition:none;animation:none}.hero-photo::after{animation:none}}
