/* PRODUCT page (THM Huade v2). Tokens only; every class is prefixed pd-. */
.pd-root{color:var(--ink);font-family:var(--font-body);padding-bottom:var(--s8);overflow-x:clip}
.pd-root *,.pd-root *::before,.pd-root *::after{box-sizing:border-box}
.pd-wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gutter)}
.pd-root h1,.pd-root h2,.pd-root h3{font-family:var(--font-head);margin:0;color:var(--ink);line-height:1.15}
.pd-root a{color:inherit}
.pd-kicker{display:inline-block;font:600 var(--fs-xs)/1 var(--font-head);letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}

/* breadcrumbs */
.pd-crumbs{padding:var(--s5) 0 var(--s4)}
.pd-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s1) var(--s2);font-size:var(--fs-sm);color:var(--muted)}
.pd-crumbs li+li::before{content:"/";margin-right:var(--s2);color:var(--steel-2)}
.pd-crumbs a{text-decoration:none;display:inline-flex;align-items:center;min-height:44px;padding:0 var(--s1)}
.pd-crumbs a:hover{color:var(--accent)}
.pd-crumbs [aria-current]{color:var(--ink);min-width:0;overflow-wrap:anywhere}

/* hero split */
.pd-top{display:grid;gap:var(--s5);grid-template-columns:minmax(0,1fr);align-items:start}
@media(min-width:900px){.pd-top{grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:var(--s7)}.pd-galcol{position:sticky;top:calc(var(--s8) + var(--s3))}}
.pd-title{font-size:var(--fs-2xl);letter-spacing:-.01em;margin:var(--s3) 0 var(--s4);overflow-wrap:anywhere}
.pd-price{margin:0 0 var(--s4);display:flex;align-items:baseline;gap:var(--s3);color:var(--muted)}
.pd-price strong{font:700 var(--fs-xl)/1 var(--font-head);color:var(--ink)}
.pd-sum{font-size:var(--fs-lg);line-height:1.55;color:var(--ink-2);margin:0 0 var(--s5)}
.pd-sum-html{margin-bottom:var(--s5);color:var(--ink-2)}

/* gallery: 3D stage */
.pd-gal{min-width:0}
.pd-stage{position:relative;aspect-ratio:1/1;width:100%;border-radius:var(--r-xl);background:var(--grad-metal);border:1px solid var(--glass-edge);box-shadow:var(--sh-2);overflow:hidden;perspective:var(--persp);touch-action:pan-y;outline-offset:3px;user-select:none;-webkit-user-select:none}
.pd-stage::after{content:"";position:absolute;inset:auto 0 0 0;height:34%;background:linear-gradient(to top,color-mix(in srgb,var(--ink) 10%,transparent),transparent);pointer-events:none}
.pd-scene{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .35s var(--ease);will-change:transform}
.pd-stage.is-live .pd-scene{transition:transform .08s linear}
.pd-l{position:absolute;display:block;pointer-events:none}
.pd-l-glow{left:14%;right:14%;top:10%;bottom:30%;border-radius:50%;background:radial-gradient(closest-side,color-mix(in srgb,var(--accent) 38%,transparent),transparent);transform:translateZ(-90px) translate(calc(var(--ry,0deg)*-1.4),calc(var(--rx,0deg)*1.4));filter:blur(8px)}
.pd-l-ring{left:20%;right:20%;top:14%;aspect-ratio:1/1;border-radius:50%;border:2px solid color-mix(in srgb,var(--accent) 55%,transparent);transform:translateZ(-45px) translate(calc(var(--ry,0deg)*-.7),calc(var(--rx,0deg)*.7))}
.pd-l-shadow{left:18%;right:18%;bottom:6%;height:6%;border-radius:50%;background:color-mix(in srgb,var(--ink) 30%,transparent);filter:blur(14px);transform:translateZ(-20px) translateX(calc(var(--ry,0deg)*-1.2))}
.pd-obj{position:absolute;left:13%;right:13%;top:8%;height:62%;transform:translateZ(46px);transform-style:preserve-3d}
.pd-slab{position:absolute;inset:0;border-radius:var(--r-lg);background:white; /* photo slab stays white in dark mode: product photos have white backgrounds */
 box-shadow:var(--sh-3),0 0 0 1px var(--line),inset 0 0 0 1px var(--glass-edge);display:grid;place-items:center;padding:var(--s3);overflow:hidden}
.pd-slab::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,color-mix(in srgb,white 70%,transparent) 48%,transparent 60%);transform:translateX(calc(var(--ry,0deg)*6%));pointer-events:none;mix-blend-mode:soft-light}
.pd-main{width:100%;height:100%;object-fit:contain;display:block}
.pd-refl{position:absolute;left:0;right:0;top:calc(100% + var(--s2));height:100%;transform:scaleY(-1);opacity:.28;pointer-events:none;-webkit-mask-image:linear-gradient(to top,black 0,transparent 38%);mask-image:linear-gradient(to top,black 0,transparent 38%);border-radius:var(--r-lg);overflow:hidden;background:white;padding:var(--s3)}
.pd-refl img{width:100%;height:100%;object-fit:contain;display:block}
.pd-noimg{display:grid;place-items:center}
.pd-noimg span{font:700 var(--fs-xl)/1 var(--font-head);letter-spacing:.12em;color:var(--steel-2);text-transform:uppercase}
.pd-zoom,.pd-nav{position:absolute;z-index:3;width:44px;height:44px;border-radius:50%;border:1px solid var(--glass-edge);background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:var(--sh-1);padding:0}
.pd-zoom:hover,.pd-nav:hover{color:var(--accent)}
.pd-zoom{right:var(--s4);top:var(--s4)}
.pd-nav{top:42%;margin-top:-22px}
.pd-prev{left:var(--s3)}.pd-prev svg{transform:scaleX(-1)}
.pd-next{right:var(--s3)}
.pd-count{position:absolute;z-index:3;left:var(--s4);bottom:var(--s4);padding:var(--s1) var(--s3);border-radius:99px;background:var(--glass);border:1px solid var(--glass-edge);font-size:var(--fs-xs);color:var(--ink-2);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.pd-thumbs{display:flex;gap:var(--s3);margin-top:var(--s4);overflow-x:auto;padding:var(--s2) var(--s1) var(--s3);scroll-snap-type:x proximity}
.pd-th{flex:0 0 72px;width:72px;height:72px;border-radius:var(--r-md);border:2px solid transparent;background:white;padding:var(--s1);cursor:pointer;box-shadow:var(--sh-1);scroll-snap-align:start;transition:transform var(--dur) var(--ease),border-color var(--dur)}
.pd-th img{width:100%;height:100%;object-fit:contain;display:block;border-radius:var(--r-sm)}
.pd-th:hover{transform:translateY(-3px)}
.pd-th.is-on{border-color:var(--accent);box-shadow:var(--sh-glow)}

/* actions */
.pd-acts{display:flex;flex-wrap:wrap;gap:var(--s3);margin-bottom:var(--s4)}
.pd-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);min-height:48px;padding:0 var(--s5);border-radius:99px;font:600 var(--fs-md)/1 var(--font-head);text-decoration:none!important;border:1px solid var(--line);background:var(--surface);color:var(--ink);box-shadow:var(--sh-1);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.pd-btn:hover{transform:translateY(-2px);box-shadow:var(--sh-2)}
.pd-btn-main{background:linear-gradient(135deg,var(--accent),var(--accent-2));color:var(--accent-ink)!important;border-color:transparent;box-shadow:var(--sh-glow)}
.pd-btn-wa{background:var(--ok);color:var(--accent-ink)!important;border-color:transparent}
.pd-brochure{display:inline-flex;align-items:center;gap:var(--s2);min-height:44px;font-weight:600;color:var(--ink-2);text-decoration:none;border-bottom:1px dashed var(--steel-2);margin-bottom:var(--s4)}
.pd-brochure:hover{color:var(--accent)}
.pd-tags{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3)}
.pd-tags a{padding:var(--s2) var(--s3);border-radius:99px;background:var(--bg-2);font-size:var(--fs-sm);color:var(--ink-2);text-decoration:none;min-height:44px;display:inline-flex;align-items:center}
.pd-tags a:hover{background:var(--accent);color:var(--accent-ink)}

/* body cards */
.pd-body{display:grid;gap:var(--s5);margin-top:var(--s7);grid-template-columns:minmax(0,1fr);align-items:start}
@media(min-width:1000px){.pd-body{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr)}}
.pd-col{display:grid;gap:var(--s5);min-width:0}
.pd-card{background:var(--glass);border:1px solid var(--glass-edge);border-radius:var(--r-lg);box-shadow:var(--sh-2);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);padding:var(--s5);min-width:0}
@media(min-width:700px){.pd-card{padding:var(--s6)}}
.pd-card>h2{font-size:var(--fs-xl);margin-bottom:var(--s4);padding-bottom:var(--s3);border-bottom:2px solid var(--accent);display:inline-block}
.pd-sub{font-size:var(--fs-lg);margin:var(--s5) 0 var(--s3)}
.pd-spec{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.pd-spec th,.pd-spec td{text-align:left;vertical-align:top;padding:var(--s3) var(--s2);border-bottom:1px solid var(--line)}
.pd-spec th{width:34%;font-weight:600;color:var(--muted)}
.pd-spec td{color:var(--ink);overflow-wrap:anywhere}
.pd-spec a{color:var(--accent);text-decoration:none}
.pd-chips{display:flex;flex-wrap:wrap;gap:var(--s1) var(--s2)}
.pd-chip{padding:var(--s1) var(--s3);border-radius:var(--r-sm);background:var(--bg-2);border:1px solid var(--line);font-size:var(--fs-xs);line-height:1.6}
.pd-vars{list-style:none;margin:0;padding:0;display:grid;gap:var(--s2)}
.pd-vars li{padding:var(--s3);border-radius:var(--r-md);background:var(--bg-2);border-left:3px solid var(--accent);font-size:var(--fs-sm);overflow-wrap:anywhere}
.pd-hl{list-style:none;margin:0;padding:0;display:grid;gap:var(--s3)}
.pd-hl li{display:grid;grid-template-columns:auto 1fr;gap:var(--s4);align-items:start;padding:var(--s3) var(--s4);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--sh-1);transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.pd-hl li:hover{transform:translateZ(0) translateY(-3px) rotateX(2deg);box-shadow:var(--sh-2)}
.pd-hl-n{font:700 var(--fs-lg)/1.3 var(--font-head);color:var(--accent)}
.pd-apps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s2)}
.pd-apps li{padding:var(--s2) var(--s4);border-radius:99px;background:var(--ink);color:var(--surface);font-size:var(--fs-sm)}
html[data-theme=dark] .pd-apps li{background:var(--bg-2);color:var(--ink)}
.pd-prose{line-height:1.7;color:var(--ink-2);overflow-wrap:anywhere}
.pd-prose h2,.pd-prose h3,.pd-prose h4{margin:var(--s5) 0 var(--s3);font-size:var(--fs-lg)}
.pd-card.pd-prose>h2{font-size:var(--fs-xl);margin:0 0 var(--s4)}
.pd-prose p,.pd-prose ul,.pd-prose ol{margin:0 0 var(--s4)}
.pd-prose img{max-width:100%;height:auto;border-radius:var(--r-md)}
.pd-prose ul,.pd-prose ol{padding-left:var(--s5)}
.pd-prose li{margin-bottom:var(--s2)}
.pd-prose a{color:var(--accent)}
.pd-prose table{display:block;max-width:100%;overflow-x:auto;border-collapse:collapse}
.pd-prose td,.pd-prose th{border:1px solid var(--line);padding:var(--s2) var(--s3);text-align:left}
.pd-prose iframe,.pd-prose video{max-width:100%}
.pd-prose pre{max-width:100%;overflow-x:auto}

/* related */
.pd-rel{margin-top:var(--s8)}
.pd-rel-h{margin-bottom:var(--s5)}
.pd-rel-h h2{font-size:var(--fs-2xl);margin-top:var(--s2)}
.pd-rail{display:flex;gap:var(--s4);overflow-x:auto;padding:var(--s3) var(--s1) var(--s5);scroll-snap-type:x mandatory;perspective:var(--persp)}
.pd-rc{flex:0 0 min(70vw,260px);scroll-snap-align:start;text-decoration:none;background:var(--surface);border-radius:var(--r-lg);border:1px solid var(--line);box-shadow:var(--sh-1);overflow:hidden;display:flex;flex-direction:column;transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease)}
.pd-rc:hover{transform:translateY(-6px) rotateX(3deg);box-shadow:var(--sh-3)}
.pd-rc-i{aspect-ratio:1/1;background:white;display:grid;place-items:center;padding:var(--s3)}
.pd-rc-i img{width:100%;height:100%;object-fit:contain}
.pd-rc-no{font:700 var(--fs-md)/1 var(--font-head);color:var(--steel-2);letter-spacing:.1em}
.pd-rc-b{padding:var(--s4);display:grid;gap:var(--s3);flex:1}
.pd-rc-n{font:600 var(--fs-sm)/1.4 var(--font-head);color:var(--ink);overflow-wrap:anywhere}
.pd-rc-go{display:inline-flex;align-items:center;gap:var(--s2);font-size:var(--fs-xs);color:var(--accent);font-weight:600;align-self:end}

/* scroll reveal (only when JS is running) */
.pd-js .pd-rv{opacity:0;transform:translateY(22px);transition:opacity .6s var(--ease),transform .6s var(--ease)}
.pd-js .pd-rv.pd-in{opacity:1;transform:none}

/* lightbox */
.pd-lb{position:fixed;inset:0;z-index:1000;background:color-mix(in srgb,var(--ink) 92%,transparent);display:grid;place-items:center;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.pd-lb[hidden]{display:none}
.pd-lb-stage{width:min(94vw,1100px);height:min(80vh,1100px);overflow:hidden;border-radius:var(--r-lg);background:white;display:grid;place-items:center;cursor:zoom-in;touch-action:pan-y}
.pd-lb-stage.is-zoom{cursor:zoom-out;touch-action:none}
.pd-lb-stage img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .25s var(--ease);transform-origin:var(--ox,50%) var(--oy,50%)}
.pd-lb-stage.is-zoom img{transform:scale(2.4)}
.pd-lb-x{position:absolute;top:var(--s4);right:var(--s4);width:48px;height:48px;border-radius:50%;border:1px solid var(--glass-edge);background:var(--glass);color:var(--ink);display:grid;place-items:center;cursor:pointer;z-index:2;padding:0}
.pd-lb .pd-nav{position:absolute;top:50%}
.pd-lb-hint{position:absolute;bottom:var(--s4);margin:0;font-size:var(--fs-xs);color:var(--steel)}
body.pd-lock{overflow:hidden}

@media(max-width:480px){
 .pd-btn{flex:1 1 100%}
 .pd-spec th{width:38%}
 .pd-obj{left:9%;right:9%}
}
@media(prefers-reduced-motion:reduce){
 .pd-scene,.pd-btn,.pd-rc,.pd-hl li,.pd-th{transition:none!important}
 .pd-js .pd-rv{opacity:1;transform:none;transition:none}
}
