/* Magic Color site group — tokens mirror DESIGN.md */
:root{--ink:#1F1A1C;--ink-2:#4A4145;--muted:#6B6064;--paper:#FBF7F3;--card:#fff;--line:#E8DFD6;
--r-s:6px;--r-m:12px;--r-l:20px;--shadow:0 1px 2px rgb(31 26 28/.06),0 8px 24px -12px rgb(31 26 28/.18);
--ease-out:cubic-bezier(.22,1,.36,1);--ease-io:cubic-bezier(.65,0,.35,1);
--f-display:"Plus Jakarta Sans",ui-sans-serif,system-ui,sans-serif;--f-body:"Plus Jakarta Sans",ui-sans-serif,system-ui,sans-serif;
--wrap:1240px;--gut:20px}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:88px;touch-action:manipulation;-webkit-tap-highlight-color:rgb(31 26 28/.08)}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.65 var(--f-body);text-rendering:optimizeLegibility}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
h1,h2,h3,h4{font-family:var(--f-display);line-height:1.15;letter-spacing:-.015em;margin:0 0 .5em;font-weight:700;text-wrap:balance}
h1{font-size:clamp(2.2rem,4.6vw,3.9rem)}
h2{font-size:clamp(1.65rem,3vw,2.55rem)}
h3{font-size:1.25rem;letter-spacing:-.01em}
p{margin:0 0 1em;max-width:68ch}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.eyebrow{font:600 .76rem/1.2 var(--f-body);letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0 0 .9rem}
.lede{font-size:1.15rem;color:var(--ink-2)}
.muted{color:var(--muted)}
.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:#fff;padding:8px 14px;border-radius:var(--r-s);z-index:99}
.skip:focus{left:8px}
section{padding:96px 0}
.tint{background:var(--tint)}
.soft{background:var(--accent-soft)}
.dark{background:var(--ink);color:#F5EFEA}
.dark .muted,.dark p{color:#D6CCC6}
.dark .eyebrow{color:#F2B7A6}

/* header */
.top{position:sticky;top:0;z-index:50;background:rgb(251 247 243/.92);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:28px;min-height:72px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font:700 1.08rem/1.1 var(--f-display);letter-spacing:-.01em;white-space:nowrap}
.brand-mark{width:30px;height:30px;border-radius:50%;background:conic-gradient(from 210deg,var(--accent),var(--tint),var(--accent));box-shadow:inset 0 0 0 5px var(--paper)}
.brand small{display:block;font:500 .7rem/1.2 var(--f-body);color:var(--muted);letter-spacing:.02em}
.nav{display:flex;gap:4px;margin-left:auto;align-items:center}
.nav a{padding:8px 10px;border-radius:var(--r-s);text-decoration:none;font-size:.92rem;font-weight:500;color:var(--ink-2)}
.nav a[aria-current=page]{color:var(--accent);font-weight:600}
.nav a.btn-primary{color:#fff;margin-left:8px}
.nav-toggle{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:var(--r-s);padding:8px 10px;font:inherit;cursor:pointer;color:var(--ink)}
@media (max-width:1100px){.nav a{padding:8px 7px;font-size:.88rem}}
@media (max-width:960px){
 .nav-toggle{display:inline-flex;align-items:center;gap:6px}
 .nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;background:var(--paper);border-bottom:1px solid var(--line);padding:8px var(--gut) 16px}
 .nav.open{display:flex}
 .nav a{padding:12px 4px;font-size:1rem;border-bottom:1px solid var(--line)}
 .top .btn-quote{display:none}
}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;border-radius:999px;font:600 .98rem/1 var(--f-body);text-decoration:none;border:1px solid transparent;cursor:pointer;transition:transform .16s var(--ease-out),background-color .2s var(--ease-out),color .2s var(--ease-out),box-shadow .2s var(--ease-out)}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--accent);color:#fff}
.btn-ghost{background:transparent;border-color:currentColor;color:var(--ink)}
.btn-light{background:#fff;color:var(--ink)}
@media (hover:hover){.btn-primary:hover{color:#fff;box-shadow:0 10px 24px -12px var(--accent)}.btn-ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn-light:hover{color:var(--accent)}}
.btn-quote{padding:10px 18px;font-size:.9rem}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}

/* hero */
.hero{padding:56px 0 72px;position:relative;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:5fr 7fr;gap:48px;align-items:center}
.hero-copy{position:relative;z-index:2}
.hero-media{position:relative;display:grid;grid-template-columns:1.25fr 1fr;grid-template-rows:auto auto;gap:14px;min-width:0}
.hero-media figure{margin:0;border-radius:var(--r-l);overflow:hidden;background:var(--card);box-shadow:var(--shadow);min-width:0}
.hero-media figure img{width:100%;height:100%;object-fit:cover}
.hero-media .m1{grid-row:span 2;aspect-ratio:4/5}
.hero-media .m2{aspect-ratio:4/3}
.hero-media .m3{aspect-ratio:4/3;background:#fff}
.hero-media .m3 img{object-fit:contain;padding:6px}
.hero-tex{position:absolute;inset:0 0 auto auto;width:62%;height:100%;z-index:0;opacity:.32;mask-image:linear-gradient(to left,#000 30%,transparent);-webkit-mask-image:linear-gradient(to left,#000 30%,transparent)}
.hero-tex img{width:100%;height:100%;object-fit:cover}
.trust{display:flex;flex-wrap:wrap;gap:8px;margin-top:30px;padding:0;list-style:none}
.trust li{font:600 .78rem/1 var(--f-body);letter-spacing:.04em;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink-2)}
@media (max-width:900px){.hero .wrap{grid-template-columns:1fr}.hero-tex{width:100%;opacity:.18}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.stat{padding:32px 24px;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat b{display:block;font-variant-numeric:tabular-nums;font:700 clamp(2.2rem,4vw,3.2rem)/1 var(--f-display);letter-spacing:-.03em;color:var(--accent)}
.stat>span{display:block;margin-top:8px;color:var(--muted);font-size:.92rem}
@media (max-width:760px){.stats{grid-template-columns:1fr 1fr}.stat:nth-child(2){border-right:0}.stat:nth-child(-n+2){border-bottom:1px solid var(--line)}}

/* section heads */
.head{display:grid;grid-template-columns:5fr 7fr;gap:40px;align-items:end;margin-bottom:44px}
.head p{margin:0}
@media (max-width:860px){.head{grid-template-columns:1fr;gap:12px}}

/* bento */
.bento{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-auto-rows:minmax(150px,auto);gap:16px}
.tile{position:relative;display:flex;flex-direction:column;justify-content:flex-end;border-radius:var(--r-l);overflow:hidden;background:var(--card);text-decoration:none;min-width:0;border:1px solid var(--line);min-height:260px;isolation:isolate}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform .5s var(--ease-out)}
.tile::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgb(31 26 28/.78),rgb(31 26 28/.05) 60%)}
.tile .t-body{padding:22px;color:#fff}
.tile h3{margin:0 0 4px;color:#fff}
.tile p{margin:0;font-size:.92rem;color:#EFE6E1;overflow-wrap:break-word}
.tile .count{font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;opacity:.85}
.t-a{grid-column:span 3;grid-row:span 2}.t-b{grid-column:span 3}.t-c{grid-column:span 3}.t-d{grid-column:span 2}.t-e{grid-column:span 2}.t-f{grid-column:span 2}
@media (hover:hover){.tile:hover img{transform:scale(1.04)}}
@media (max-width:860px){.bento{grid-template-columns:1fr 1fr}.t-a,.t-b,.t-c,.t-d,.t-e,.t-f{grid-column:span 2;grid-row:auto}}

/* split / prose */
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split.rev>:first-child{order:2}
.split figure{margin:0;border-radius:var(--r-l);overflow:hidden;box-shadow:var(--shadow)}
.split figure img{width:100%;aspect-ratio:4/3;object-fit:cover}
@media (max-width:860px){.split{grid-template-columns:1fr;gap:28px}.split.rev>:first-child{order:0}}
.ticks{list-style:none;padding:0;margin:0 0 1em}
.ticks li{position:relative;padding:7px 0 7px 30px;border-bottom:1px dashed var(--line)}
.ticks li::before{content:"";position:absolute;left:4px;top:15px;width:12px;height:7px;border-left:2px solid var(--accent);border-bottom:2px solid var(--accent);transform:rotate(-45deg)}

/* cards & grids */
.grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
@media (max-width:600px){.grid{grid-template-columns:1fr 1fr;gap:12px}.pcard .pc-body{padding:12px}.pcard h3{font-size:.92rem}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);padding:24px;min-width:0}
.card h3{margin-bottom:8px}
.card p:last-child{margin-bottom:0}
.pcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;text-decoration:none;min-width:0;transition:box-shadow .22s var(--ease-out),transform .22s var(--ease-out)}
.pcard figure{margin:0;aspect-ratio:1;background:#fff;border-bottom:1px solid var(--line)}
.pcard figure img{width:100%;height:100%;object-fit:contain}
.pcard .pc-body{padding:16px 18px 20px}
.pcard h3{font-size:1.02rem;line-height:1.3;margin:0 0 6px;font-family:var(--f-body);font-weight:600;letter-spacing:0}
.pcard .code{font-size:.78rem;color:var(--muted);letter-spacing:.06em}
@media (hover:hover){.pcard:hover{box-shadow:var(--shadow);transform:translateY(-2px)}}

/* steps */
.steps{counter-reset:s;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:1px solid var(--line)}
.step{counter-increment:s;padding:26px 22px 30px 0;border-bottom:1px solid var(--line)}
.step::before{content:counter(s,decimal-leading-zero);display:block;font:700 .9rem/1 var(--f-display);color:var(--accent);margin-bottom:12px}
.step h3{font-size:1.1rem}
.step p{font-size:.94rem;color:var(--ink-2);margin:0}
@media (max-width:860px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.steps{grid-template-columns:1fr}}

/* tables */
.table{width:100%;border-collapse:collapse;font-size:.96rem;background:var(--card);border-radius:var(--r-m);overflow:hidden;border:1px solid var(--line)}
.table th,.table td{text-align:left;padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:top}
.table th{font-weight:600;background:var(--tint);width:44%}
.table tr:last-child td,.table tr:last-child th{border-bottom:0}
.tscroll{overflow-x:auto}

/* certs */
.certs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px}
.certs figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:var(--r-m);padding:10px;text-align:center}
.certs img{aspect-ratio:3/4;object-fit:contain;width:100%}
.certs figcaption{font:600 .82rem/1.2 var(--f-body);margin-top:8px}
@media (max-width:860px){.certs{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* gallery */
.gallery{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.gallery figure{margin:0;border-radius:var(--r-m);overflow:hidden}
.gallery img{width:100%;aspect-ratio:4/3;object-fit:cover}
.gallery figure:first-child{grid-column:span 2;grid-row:span 2}
.gallery figure:first-child img{aspect-ratio:auto;height:100%}
.gallery figcaption{font-size:.8rem;color:var(--muted);padding:6px 2px 0}
@media (max-width:760px){.gallery{grid-template-columns:1fr 1fr}}

/* faq */
.faq details{border-bottom:1px solid var(--line);padding:4px 0}
.faq summary{cursor:pointer;list-style:none;padding:18px 40px 18px 0;font:600 1.06rem/1.4 var(--f-body);position:relative}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";position:absolute;right:8px;top:26px;width:10px;height:10px;border-right:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(45deg);transition:transform .2s var(--ease-out)}
.faq details[open] summary::after{transform:rotate(-135deg);top:30px}
.faq details p{color:var(--ink-2);padding-bottom:12px}

/* product page */
.crumbs{font-size:.85rem;color:var(--muted);padding-top:18px}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0}
.crumbs li+li::before{content:"/";margin-right:6px;color:var(--line)}
.crumbs a{text-decoration:none}
.pd{display:grid;grid-template-columns:6fr 5fr;gap:48px;padding:28px 0 72px;align-items:start}
.pd-media{position:sticky;top:96px;display:grid;gap:12px;min-width:0}
.pd-media .main{background:#fff;border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden}
.pd-media .main img{width:100%;aspect-ratio:1;object-fit:contain}
.pd-thumbs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.pd-thumbs button{padding:0;border:1px solid var(--line);border-radius:var(--r-s);background:#fff;cursor:pointer;overflow:hidden}
.pd-thumbs button[aria-current=true]{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.pd-thumbs img{aspect-ratio:1;object-fit:contain;width:100%}
.pd-meta{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px;padding:0;list-style:none}
.pd-meta li{font-size:.8rem;padding:6px 10px;border-radius:999px;background:var(--accent-soft);color:var(--ink)}
.pd-body h2{font-size:1.4rem;margin-top:36px}
.sticky-cta{position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--ink);color:#fff;padding:10px 0;transform:translateY(110%);transition:transform .28s var(--ease-out)}
.sticky-cta.show{transform:none}
.sticky-cta .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px}
.sticky-cta span{font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:900px){.pd{grid-template-columns:1fr}.pd-media{position:static}}

/* form */
.quote{display:grid;grid-template-columns:5fr 7fr;gap:56px;align-items:start}
@media (max-width:900px){.quote{grid-template-columns:1fr}}
form.inq{background:var(--card);border:1px solid var(--line);border-radius:var(--r-l);padding:28px;display:grid;grid-template-columns:1fr 1fr;gap:16px;color:var(--ink)}
form.inq .full{grid-column:1/-1}
form.inq label{display:block;font-size:.86rem;font-weight:600;margin-bottom:6px}
form.inq label .req{color:var(--accent)}
form.inq input,form.inq select,form.inq textarea{width:100%;font:inherit;font-size:16px;padding:12px 14px;border:1px solid #D9CEC4;border-radius:var(--r-s);background:#fff;color:var(--ink)}
form.inq textarea{min-height:120px;resize:vertical}
form.inq [aria-invalid=true]{border-color:#B42318;box-shadow:0 0 0 3px #FDE4E1}
form.inq .err{display:block;color:#B42318;font-size:.82rem;margin-top:4px;min-height:1em}
form.inq .hp{position:absolute;left:-9999px}
form.inq .note{font-size:.84rem;color:var(--muted);margin:0}
form.inq .status{grid-column:1/-1;font-weight:600;margin:0}
@media (max-width:560px){form.inq{grid-template-columns:1fr;padding:20px}}
.contact-list{list-style:none;padding:0;margin:24px 0 0}
.contact-list li{padding:10px 0;border-bottom:1px solid rgb(255 255 255/.12)}
.contact-list a{text-decoration:none}

/* blog */
.post{max-width:760px;margin:0 auto;padding:40px 0 80px}
.post h2{font-size:1.7rem;margin-top:44px}
.post h3{margin-top:28px}
.post table{width:100%;border-collapse:collapse;margin:20px 0;font-size:.95rem}
.post th,.post td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
.post th{background:var(--tint)}
.post figure{margin:28px 0}
.post .meta{color:var(--muted);font-size:.9rem}
.post .sources{font-size:.88rem;color:var(--muted);border-top:1px solid var(--line);margin-top:40px;padding-top:16px}
.blist{display:grid;gap:22px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.bcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--r-m);overflow:hidden;text-decoration:none}
.bcard img{aspect-ratio:16/9;object-fit:cover;width:100%}
.bcard div{padding:18px 20px 22px}
.bcard h3{font-size:1.12rem;font-family:var(--f-body);font-weight:700;letter-spacing:0;line-height:1.35}

/* footer */
.foot{background:var(--ink);color:#D6CCC6;padding:64px 0 28px;font-size:.93rem}
.foot .cols{display:grid;grid-template-columns:2fr 1fr 1fr 1.4fr;gap:32px}
.foot h4{color:#fff;font-size:.95rem;margin-bottom:12px}
.foot ul{list-style:none;padding:0;margin:0}
.foot li{padding:4px 0}
.foot a{text-decoration:none}
.foot a:hover{color:#fff}
.foot .legal{border-top:1px solid rgb(255 255 255/.12);margin-top:40px;padding-top:20px;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;font-size:.82rem}
@media (max-width:860px){.foot .cols{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.foot .cols{grid-template-columns:1fr}}

/* reveal (JS-gated) */
html.js .rv{opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out)}
html.js .rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}html.js .rv{opacity:1;transform:none}}
