/* =========================================================================
   CORA PANEL v5 — REFRAKSI · view styles (Home · Produk · Katalog · Kontak)
   ========================================================================= */

/* ---- lens-room recipe extras (shared) ---- */
.lens-room .over{position:absolute;inset:0}
.lens-room .motif{position:absolute;inset:0;background:linear-gradient(135deg,#C9A24A,#F1DDA0);opacity:.28;mix-blend-mode:screen;-webkit-mask-image:repeating-conic-gradient(from 15deg at 62% 38%,#000 0 8deg,transparent 8deg 36deg);mask-image:repeating-conic-gradient(from 15deg at 62% 38%,#000 0 8deg,transparent 8deg 36deg)}
.lens-room .drift{background-size:140% 140%;animation:drift 9s ease-in-out infinite alternate}
@keyframes drift{from{background-position:0% 0%}to{background-position:100% 100%}}
/* the LED behind a Moru sheet becomes lines of light: the glow is masked through the flute pitch */
.lens-room .bl{position:absolute;inset:0;mix-blend-mode:screen;background:radial-gradient(60% 70% at 50% 62%,rgba(255,221,180,.95),rgba(255,221,180,.3) 45%,transparent 76%);opacity:var(--bl,0);-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 2px,rgba(0,0,0,.12) 2px var(--rib-w,14px));mask-image:repeating-linear-gradient(90deg,#000 0 2px,rgba(0,0,0,.12) 2px var(--rib-w,14px))}
.lens-room .ribs{opacity:calc(.75 + .25*var(--bl,0))}
.pl[data-pl=moru] .blur5,.h-story .l-moru .blur5{opacity:calc(1 - .5*var(--bl,0))}
.pl[data-pl=moru] .sharp,.h-story .l-moru .sharp{opacity:calc(.85 - .5*var(--bl,0))}
.lens-room .smoke{background:#3A2E28;opacity:var(--smk,.55);mix-blend-mode:multiply}
.lens-room .edge{transition:opacity .4s,background .4s}
.lens-room .edge.glow{opacity:1;background:linear-gradient(90deg,rgba(241,213,198,.4),transparent 9%,transparent 91%,rgba(241,213,198,.4)),linear-gradient(180deg,rgba(241,213,198,.4),transparent 9%,transparent 91%,rgba(241,213,198,.4))}
.lens-room .door i{position:absolute;border:1px solid rgba(0,0,0,.2)}
.lens-room .door .r1{inset:8% 52% 8% 8%}.lens-room .door .r2{inset:8% 8% 8% 52%}
.lens-room .door .hd{left:46.5%;top:46%;width:2px;height:8%;background:rgba(0,0,0,.35);border:0}
.lens-room .bm{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr}
.lens-room .half{position:relative;transition:transform .6s var(--ease-io)}
.lens-room .bm.on .half:last-child{transform:scaleX(-1)}
.lens-room .vig{position:absolute;inset:0;background:radial-gradient(transparent 55%,rgba(0,0,0,.5));opacity:.6}
.line-mask{padding:.04em 0 .12em;margin:-.04em 0 -.12em}

/* =========================== HOME =========================== */
.h-hero{position:relative;height:100vh;height:100svh;min-height:620px;overflow:hidden;background:#0B0A09;color:#EDE6DC;--rp:7px}
.h-hero .gl{position:absolute;inset:0}
.h-hero .gl-in{position:absolute;inset:0;transform-origin:50% 50%}
.h-hero canvas,.h-hero .hero-fallback,.h-hero .hero-sharp{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.h-hero .hero-fallback,.h-hero .hero-sharp{display:none}
.h-hero.nogl canvas{display:none}
/* no WebGL (phones, tablets, lite): a CSS flute — softened room under per-rib highlight/shadow, pitch --rp driven by the same RIBS table */
.h-hero.nogl .hero-fallback{display:block;filter:blur(2.4px);transform:scale(1.04)}
.h-hero.nogl .hero-sharp{display:block;opacity:0}
.h-hero .ribcss{position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.30) 0 1px,transparent 1px 3px,rgba(0,0,0,.22) 3px 4px,transparent 4px);background-size:var(--rp,7px) 100%;opacity:.7;display:none}
.h-hero.nogl .ribcss{display:block}
/* a local lamp fall-off travels with the caption so ivory reads on the sunlit floor (≤ .5, nothing else dimmed) */
.h-hero .hero-cap .in{position:relative;isolation:isolate}
.h-hero .hero-cap .in::before{content:"";position:absolute;left:calc(-1*var(--gutter));right:-140px;top:-72px;bottom:-96px;background:radial-gradient(farthest-side at 28% 55%,rgba(11,10,9,.5),transparent);pointer-events:none;z-index:-1}
.h-hero .hero-rays{position:absolute;left:0;top:-8%;width:100%;height:116%;object-fit:cover;opacity:.35;mix-blend-mode:screen;pointer-events:none}
.h-hero .hero-lamp{position:absolute;inset:0;background:#0B0A09;opacity:.88;pointer-events:none}
.h-hero .hero-density{position:absolute;top:calc(64px + 28px);right:var(--gutter);color:#CDBFB2;overflow:hidden}
.h-hero .hero-density .in{display:inline-block}
.h-hero .hero-density b{display:inline-block;font-weight:500;color:#F1D5C6;min-width:8.5em}
.h-hero .hero-cap{position:absolute;left:var(--gutter);bottom:clamp(150px,24vh,240px);max-width:min(460px,70vw)}
.h-hero .hero-cap .in{display:grid;gap:20px}
.h-hero .hero-cap h1{color:#EDE6DC;text-wrap:pretty}
.h-hero .hero-cap .t5{color:#EDE6DC}
.h-hero .hero-cap .cta{color:#EDE6DC;justify-self:start}
.h-hero .hero-wm{position:absolute;left:calc(var(--gutter) - .05em);bottom:-.22em;color:#EDE6DC;pointer-events:none;user-select:none;line-height:.8}
.h-hero .hero-wm .tm{display:block}
.h-hero .hero-cue{color:#CDBFB2}
@media (max-width:1023px){.h-hero .hero-cap{bottom:120px}.h-hero .hero-density{top:84px}}

.h-man .dateline{align-self:start;padding-top:.4em}
.h-man h2{max-width:22ch}

.h-toc .toc{list-style:none;margin:0;padding:0}
.h-toc .toc-aside{display:grid;gap:18px;align-content:start}
.toc-row{position:relative;display:grid;grid-template-columns:72px 1fr auto;align-items:center;gap:24px;min-height:112px;padding:20px 0;cursor:pointer;outline-offset:-1px}
.toc-row .ttl{font-size:clamp(32px,3.6vw,54px);line-height:1.02}
.toc-row .num{background:var(--metal);-webkit-background-clip:text;background-clip:text;color:transparent}
.toc-row .ttl{transition:transform .4s var(--ease-out)}
.toc-row:hover .ttl{transform:translateX(12px)}
.toc-row .sub{text-align:right}
.toc-row > .hair{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--hair)}
.toc-row > .hair i{position:absolute;inset:0;background:var(--metal);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.toc-row:hover > .hair i{transform:scaleX(1)}
.toc-prev{position:fixed;left:0;top:0;width:280px;height:200px;z-index:5;pointer-events:none;opacity:0}
.toc-prev .smoke{opacity:0;transition:opacity .3s}
.toc-prev.smoked .smoke{opacity:1}
@media (max-width:1023px){.toc-row{grid-template-columns:48px 1fr;height:auto;padding:22px 0}.toc-row .sub{grid-column:2;text-align:left}}

.h-story{position:relative;height:100vh;height:100svh;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--col-gap);align-items:center;padding-inline:var(--gutter);overflow:hidden}
.h-story .plate{grid-column:1/8;height:72vh;overflow:hidden}
.h-story .plate .top{position:absolute;left:0;right:0;top:0;height:1px;background:var(--spec);opacity:.8;z-index:2}
.story-plate{position:absolute;inset:0}
.story-plate .half{clip-path:inset(0 0 0 50%)}
.story-plate.l-mirror::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;background:var(--spec);opacity:.6}
.h-story .story-rail{grid-column:8;justify-self:center;width:1px;height:40vh;background:var(--hair);position:relative}
.h-story .story-rail i{position:absolute;left:0;right:0;top:0;height:0;background:var(--fg)}
.h-story .caps{grid-column:9/13;position:relative;height:40vh}
.story-step{position:absolute;inset:0;display:grid;align-content:center;gap:16px}
@media (max-width:1023px){.h-story{grid-template-rows:1fr auto;align-content:center;height:auto;min-height:100svh;padding-block:80px 40px}.h-story .plate{grid-column:1/-1;height:46vh}.h-story .story-rail{display:none}.h-story .caps{grid-column:1/-1;height:34vh}}

.h-stack{position:relative;height:160vh;min-height:900px;overflow:hidden}
.h-stack h2{position:absolute;left:var(--gutter);top:var(--seam);max-width:min(420px,40vw);z-index:2}
.h-stack .rays{position:absolute;left:0;top:-20%;width:100%;height:140%;object-fit:cover;opacity:.35;mix-blend-mode:screen;pointer-events:none}
.h-stack .dust{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.25;mix-blend-mode:screen;pointer-events:none}
.h-stack img.sheet{position:absolute;height:auto;will-change:transform}
.h-stack .s-marble{right:6%;top:12%;width:min(34vw,520px)}
.h-stack .s-mirror{left:5%;top:34%;width:min(38vw,560px)}
.h-stack .s-fluted{left:36%;top:50%;width:min(36vw,540px);z-index:1}
.callout{position:absolute;display:grid;gap:10px;width:min(300px,40vw);z-index:2}
.callout .hair{width:100%}
.co-marble{right:6%;top:calc(12% - 56px)}
.co-mirror{left:5%;top:calc(34% - 56px)}
.co-fluted{left:calc(36% + min(36vw,540px) + 24px);top:calc(50% + 8px)}
@media (max-width:1023px){.h-stack{height:120vh}.h-stack .s-marble{width:48vw;right:4%;top:18%}.h-stack .s-mirror{width:56vw;left:4%;top:40%}.h-stack .s-fluted{width:52vw;left:30%;top:60%}.co-marble{top:calc(18% - 50px)}.co-mirror{top:calc(40% - 50px)}.co-fluted{left:30%;top:calc(60% - 50px)}}

.h-mirrors{position:relative;height:100vh;height:100svh;min-height:640px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;gap:32px}
.h-mirrors header{display:flex;justify-content:space-between;align-items:flex-end;width:100%}
.strip-track{display:flex;gap:24px;padding-inline:var(--gutter);will-change:transform}
.strip-panel.card{flex:0 0 min(48vw,760px);height:62vh;position:relative;overflow:hidden;background:#0B0A09;clip-path:inset(0 0 0 0)}
.card .flipwrap{position:absolute;inset:0;transform:scaleX(-1);-webkit-mask-image:linear-gradient(#000 60%,rgba(0,0,0,.35));mask-image:linear-gradient(#000 60%,rgba(0,0,0,.35))}
.card .flipwrap img{position:absolute;top:0;left:-6%;width:112%;height:100%;object-fit:cover}
.card .tint{position:absolute;inset:0;mix-blend-mode:multiply}
.card .spec{position:absolute;top:0;bottom:0;left:-25%;width:22%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.08) 40%,rgba(255,255,255,.22) 50%,rgba(255,255,255,.08) 60%,transparent);pointer-events:none}
.card .top{position:absolute;left:0;right:0;top:0;height:1px;background:var(--spec)}
.card .lbl{position:absolute;left:24px;bottom:24px;display:grid;gap:8px;color:#EDE6DC}
.card .lbl .t5{color:#CDBFB2}
.card .idx{position:absolute;right:24px;top:20px;color:#CDBFB2}
@media (max-width:1023px){.strip-panel.card{flex-basis:80vw;height:52vh}}

.h-wall .wall{display:flex;height:72vh;min-height:420px;border-right:1px solid var(--hair);margin-top:48px}
.strip{position:relative;flex:1 1 0;min-width:0;border-left:1px solid var(--hair);overflow:hidden;cursor:pointer;clip-path:inset(0 0 0 0);text-align:left;color:inherit}
.strip .sw{position:absolute;inset:0}
.strip .shade{position:absolute;inset:0;background:var(--ink);opacity:0;pointer-events:none}
.strip .top{position:absolute;left:0;right:0;top:0;height:1px;background:var(--spec);opacity:.8;transition:height .3s,background .3s}
.strip.on .top{background:var(--metal);height:3px;opacity:1}
.strip.on::after{content:"✓";position:absolute;right:12px;top:12px;font:600 11px/1 var(--f-label);color:#0B0A09;background:#F1D5C6;padding:5px 6px}
.strip .lblwrap{position:absolute;left:16px;bottom:16px;width:calc(72vh - 32px);transform-origin:left bottom;pointer-events:none;transition:transform .5s var(--ease-out)}
.strip:hover .lblwrap{transform:translateY(-44px)}
.strip .lbl{display:inline-block;transform-origin:left bottom;transform:rotate(-90deg) translate(0,100%);white-space:nowrap;color:#fff;mix-blend-mode:difference;line-height:1}
.strip .spec{position:absolute;left:16px;bottom:16px;transform:translateY(8px);opacity:0;visibility:hidden;color:#fff;mix-blend-mode:difference;white-space:nowrap;pointer-events:none}
.h-wall .wall-live{margin-top:14px;min-height:1em}
.h-wall .wall-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;margin-top:32px}
.h-wall .wall-foot p{max-width:30ch}
@media (max-width:1023px){
  .h-wall .wall{height:48vh;flex-wrap:nowrap}
  .strip .lblwrap{left:0;right:0;bottom:12px;width:auto;display:flex;justify-content:center;transform:none}
  .strip:hover .lblwrap{transform:none}
  .strip .lbl{transform:rotate(180deg);writing-mode:vertical-rl;font:600 10px/1 var(--f-label);letter-spacing:.12em;text-transform:uppercase;max-height:calc(48vh - 56px);overflow:hidden}
  .strip.on::after{right:50%;transform:translateX(50%);top:10px}
}

.h-stat .grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--col-gap);padding-block:40px}
.h-stat .grid4 div{display:grid;gap:14px}
.h-stat .grid4 b{font-weight:300;white-space:nowrap;font-size:clamp(48px,6.2vw,100px)}
.h-stat .line{margin-top:40px;max-width:60ch}
@media (max-width:1023px){.h-stat .grid4{grid-template-columns:1fr 1fr}.h-stat .grid4 b{font-size:clamp(44px,11vw,80px)}}

/* =========================== PRODUK =========================== */
/* one control bar, two layouts (Tabel / Kartu) over the same Catalog; the configurator is shared by both */
.p-head{padding:calc(64px + clamp(40px,7vh,88px)) 0 28px}
.p-head .sub{margin-top:14px}
.p-ctl{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px 24px;margin-top:32px;padding-top:20px;border-top:1px solid var(--hair)}
.p-ctl .chips{display:flex;flex-wrap:wrap;gap:8px}
.p-opts{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.p-list{padding-bottom:var(--seam)}
.p-list .note{margin-top:28px;max-width:72ch;line-height:1.7}
.p-list .empty{padding:48px 0}

/* Tabel */
.ptable{border-top:1px solid var(--fg)}
.prow-h,.pt-head{display:grid;grid-template-columns:40px minmax(0,2.2fr) minmax(110px,.8fr) minmax(100px,.7fr) minmax(140px,.9fr) 24px;gap:24px;align-items:center}
.pt-head{padding:12px 0;border-bottom:1px solid var(--hair)}
.pt-head span:nth-child(5){text-align:right}
.pg-head{display:flex;justify-content:space-between;gap:16px;padding:28px 0 10px;border-bottom:1px solid var(--hair);font:inherit}
.pg-head .t5:first-child{color:var(--fg)}
.prow{border-bottom:1px solid var(--hair)}
.prow-h{width:100%;padding:14px 0;text-align:left;color:inherit;transition:background .3s}
.prow-h:hover,.prow.open .prow-h{background:var(--surface)}
.prow-h .sw{width:40px;height:80px}
.prow-h .nm{display:grid;gap:4px;min-width:0}
.prow-h .nm b{font-weight:500}
.prow-h .tag{font:400 14px/1.4 var(--f-body);color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow-h .pr{text-align:right;font-size:16px}
.prow-h .chev{width:9px;height:9px;border-right:1px solid var(--fg);border-bottom:1px solid var(--fg);transform:rotate(45deg);transition:transform .4s var(--ease-out);justify-self:center}
.prow.open .chev{transform:rotate(225deg)}
.prow-x{height:0;overflow:hidden}
.prow-x .in{padding:16px 0 32px 64px}

/* configurator */
.cfg{display:grid;grid-template-columns:minmax(240px,34%) minmax(0,1fr);gap:48px;align-items:start}
/* large picture: the finish seen in a room, with the flat sheet colour as a specimen chip */
.cfg-vis{display:grid;gap:12px;position:sticky;top:88px}
.cfg .vis{position:relative;aspect-ratio:4/5;max-height:560px;border:1px solid var(--hair);overflow:hidden;background:var(--surface)}
.cfg .vis > img,.cfg .vis .vis-room{position:absolute;inset:0;width:100%;height:100%}
.cfg .vis > img{object-fit:cover}
.cfg .vis .lens-room .over.door{inset:8% 22% 10%}
.cfg .vis .vis-room{background:linear-gradient(180deg,#DCD6CD 0 84%,#C9C1B5 84% 100%)}
.cfg .vis-tag{position:absolute;top:10px;right:10px;padding:4px 8px;background:rgba(244,243,239,.82);color:#2A2522;font-size:10px;letter-spacing:.12em}
.cfg .vis .spec{position:absolute;left:12px;bottom:12px;width:44px;height:88px;border:2px solid rgba(244,243,239,.9);box-shadow:0 6px 18px rgba(0,0,0,.25)}
.cfg-vis .cap{line-height:1.5}
.cfg-vis .cap b{font-weight:500;color:var(--fg)}
.cfg-main{display:grid;gap:26px;min-width:0}
.cfg .desc{max-width:62ch;color:var(--muted)}
.cfg .opt{display:grid;gap:12px}
.cfg .opt > .t5 b{font-weight:500;color:var(--fg)}
.cfg .note{color:var(--muted)}
/* finish tiles, in named groups */
.fgroup{display:grid;gap:8px}
.fgroup + .fgroup{margin-top:6px}
.fg-h{display:flex;gap:8px;align-items:baseline;color:var(--muted)}
.fg-h span{opacity:.6}
.ftiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(68px,1fr));gap:10px 8px}
.ftile{display:grid;gap:6px;text-align:left;color:var(--fg);min-width:0;padding:0}
.ftile i{display:block;width:100%;aspect-ratio:1/1;border:1px solid var(--hair);outline:1px solid transparent;outline-offset:2px;transition:outline-color .2s,transform .3s var(--ease-out)}
.ftile span{font:400 12px/1.25 var(--f-num);overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--muted)}
.ftile:hover i{transform:translateY(-2px)}
.ftile.on i{outline-color:var(--fg)}
.ftile.on span{color:var(--fg)}
.ftile:focus-visible{outline:none}.ftile:focus-visible i{outline:2px solid var(--metal-solid)}
/* thickness × price table */
.mmtab{display:grid;border-top:1px solid var(--hair)}
.mmrow{display:grid;grid-template-columns:18px 72px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 10px;border-bottom:1px solid var(--hair);text-align:left;color:var(--fg);font:500 14px/1 var(--f-num);font-variant-numeric:tabular-nums;transition:background .2s}
.mmrow .muted{color:var(--muted);font-size:12px}
.mmrow .r{text-align:right}
.mmrow .rd{width:14px;height:14px;border:1px solid var(--fg);border-radius:50%;display:grid;place-items:center}
.mmrow.on{background:var(--surface)}
.mmrow.on .rd::after{content:"";width:6px;height:6px;border-radius:50%;background:var(--fg)}
.mmrow.on .r{color:var(--metal-solid)}
.mmrow:hover{background:var(--surface)}
.mmrow:only-child{cursor:default}
.mmrow:has(.wide){grid-template-columns:18px minmax(0,1fr) auto}
.mmrow .wide{font:400 14px/1.35 var(--f-num)}
.cfg-vis .code{color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.cfg-vis .code b{font-weight:500;color:var(--fg);letter-spacing:.02em}
.linkbtn{font:500 12px/1 var(--f-num);color:var(--fg);text-decoration:underline;text-underline-offset:3px;padding:2px 0}
.linkbtn:hover{color:var(--metal-solid)}
#drawer .addon-l,.it .addon-l{margin-top:4px;color:var(--muted)}
/* m² → sheets */
.calc{display:grid;gap:10px;padding:16px 18px;border:1px solid var(--hair)}
.calc-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px}
.calc-in{display:inline-flex;align-items:center;gap:8px;border-bottom:1px solid var(--fg);padding:4px 2px}
.calc-in input{width:7ch;border:0;background:transparent;color:var(--fg);font:500 18px/1.2 var(--f-num);outline:none}
.calc-in input::placeholder{color:var(--muted);opacity:.5}
.calc .waste{display:inline-flex;align-items:center;gap:8px;cursor:pointer}
.calc .waste input{accent-color:var(--metal-solid)}
.calc [data-usecalc]{margin-left:auto}
.calc [data-usecalc]:disabled{opacity:.4;pointer-events:none}
.calc .muted{color:var(--muted)}
.buy{display:grid;grid-template-columns:auto auto minmax(0,1fr);align-items:center;gap:16px 24px;padding-top:20px;border-top:1px solid var(--hair)}
.pricebox{display:grid;gap:6px}
.pnow{font:600 26px/1 var(--f-num);letter-spacing:-.01em;font-variant-numeric:tabular-nums;color:var(--metal-solid)}
.cta-row{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
/* added-to-cart confirmation */
.added{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:14px 16px;padding:14px 16px;border:1px solid var(--metal-solid);background:var(--surface)}
.added .ok{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--metal-solid);color:var(--paper);font-size:14px}
.added-txt{display:grid;gap:4px;line-height:1.45}
.added-txt b{font-weight:500}
.added-acts{display:flex;gap:8px;flex-wrap:wrap}
.cfg .extra{line-height:1.6}
.cfg .dd{font-size:15px;line-height:1.6;color:var(--muted)}
.cfg .dd b{font-weight:400;color:var(--fg)}

/* Kartu */
.pcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--fg);border-left:1px solid var(--hair)}
.pcard{display:grid;grid-template-rows:auto 1fr;text-align:left;color:inherit;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);transition:background .3s;min-width:0}
.pcard:hover,.pcard:focus-visible{background:var(--surface)}
.pc-sw{display:grid;place-items:center;padding:28px 24px 8px}
.pc-sw .sw{height:clamp(180px,26vh,300px);aspect-ratio:1/2;max-width:100%;transition:transform .6s var(--ease-out)}
.pcard:hover .pc-sw .sw{transform:translateY(-6px)}
.pc-sw:has(.pc-img){padding:0;overflow:hidden}
.pc-img{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform .8s var(--ease-out)}
.pcard:hover .pc-img{transform:scale(1.03)}
.pc-meta{display:grid;gap:8px;padding:16px 24px 24px;align-content:end;min-width:0}
.pc-meta b{font-weight:500}
.pc-meta .price{margin-top:6px}

/* side panel for Kartu (sits under the header) */
.pside-bd{position:fixed;inset:0;z-index:30;background:rgba(20,18,17,.28);opacity:0;pointer-events:none;transition:opacity .4s}
.pside-bd.on{opacity:1;pointer-events:auto}
.pside{position:fixed;top:64px;right:0;bottom:0;z-index:31;width:min(560px,100vw);background:var(--paper);border-left:1px solid var(--hair);display:flex;flex-direction:column;transform:translateX(100%);visibility:hidden;transition:transform .55s var(--ease-io),visibility 0s .55s}
.pside.on{transform:none;visibility:visible;transition-delay:0s}
.pside header{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px var(--gutter);border-bottom:1px solid var(--hair)}
.pside .x{width:36px;height:36px;display:grid;place-items:center;border:1px solid var(--hair)}
.pside .body{flex:1;overflow:auto;padding:24px var(--gutter) 40px;scrollbar-width:none}
.pside .body::-webkit-scrollbar{display:none}
.pside .cfg{grid-template-columns:1fr;gap:24px}
.pside .cfg-vis{position:static}
.pside .cfg .vis{aspect-ratio:16/11}
.pside .buy{grid-template-columns:1fr auto}
.pside .cta-row{grid-column:1/-1;justify-content:stretch}
.pside .cta-row .btn{flex:1}
.pside .added{grid-template-columns:28px minmax(0,1fr)}
.pside .added-acts{grid-column:1/-1}.pside .added-acts .btn{flex:1}

.prod-prev{position:fixed;left:0;top:0;width:280px;height:200px;z-index:5;pointer-events:none;opacity:0;border:1px solid var(--hair)}

@media (min-width:1440px){.pcards{grid-template-columns:repeat(5,minmax(0,1fr))}}
@media (max-width:1180px){.pcards{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:1023px){
  .prow-h{grid-template-columns:32px minmax(0,1fr) auto 16px;gap:16px}
  .pt-head{display:none}
  .prow-h .thk,.prow-h .fin{display:none}
  .prow-h .sw{width:32px;height:64px}
  .prow-h .pr{font-size:14px}
  .prow-x .in{padding:8px 0 24px}
  .cfg{grid-template-columns:1fr;gap:22px}
  .cfg-vis{position:static}
  .cfg .vis{aspect-ratio:4/3}
  .ftiles{grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:10px 6px}
  .mmrow{grid-template-columns:18px 60px minmax(0,1fr) auto;padding:12px 6px}
  .calc [data-usecalc]{margin-left:0;flex:1 1 100%}
  .added{grid-template-columns:28px minmax(0,1fr)}
  .added-acts{grid-column:1/-1}.added-acts .btn{flex:1}
  .buy{grid-template-columns:1fr auto}
  .cta-row{grid-column:1/-1;justify-content:stretch}
  .cta-row .btn{flex:1}
  .pcards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .pc-sw{padding:20px 12px 4px}.pc-meta{padding:12px 14px 18px}
  .pside{top:56px}
}
@media (max-width:599px){.p-opts{width:100%;justify-content:space-between}.prow-h .tag{display:none}.pg-head .muted{display:none}}

/* =========================== CHECKOUT =========================== */
.co{padding:calc(64px + clamp(40px,7vh,88px)) 0 var(--seam)}
.co-head{display:grid;gap:14px;padding-bottom:28px;border-bottom:1px solid var(--fg)}
.co-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:clamp(32px,5vw,80px);align-items:start;padding-top:8px}
.co-form fieldset{border:0;margin:0;padding:28px 0 32px;border-bottom:1px solid var(--hair);min-width:0}
.co-form legend{display:flex;align-items:baseline;gap:14px;padding:0;margin-bottom:20px}
.co-form legend .t5{color:var(--metal-solid)}
.co-form .fields{display:grid;grid-template-columns:1fr 1fr;gap:22px 24px}
.co-form .full{grid-column:1/-1}
.field{display:grid;gap:8px;min-width:0;align-content:start}
.field input,.field select,.field textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--hair);border-radius:0;padding:10px 0;font:400 16px/1.4 var(--f-body);color:var(--fg);outline:0;transition:border-color .3s;resize:vertical}
.field select{-webkit-appearance:none;appearance:none;padding-right:22px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6' fill='none' stroke='%236E635A'/%3E%3C/svg%3E") right 2px center/10px 6px no-repeat}
.field select:disabled{opacity:.45}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--fg)}
.field input::placeholder,.field textarea::placeholder{color:var(--muted);opacity:.8}
.field .hint{color:var(--muted)}
.field .err{color:#9B2C2C}
.field .err:empty{display:none}
.field.bad input,.field.bad select,.field.bad textarea{border-color:#9B2C2C}
.ship{display:grid;gap:12px}
.ship .opts{display:grid;border-top:1px solid var(--hair)}
.ship .opt{display:grid;grid-template-columns:20px 1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--hair);cursor:pointer}
.co-sum{position:sticky;top:96px;display:grid;gap:16px;padding:24px;background:var(--surface)}
.items{list-style:none;margin:0;padding:0;display:grid}
.it{display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:12px;align-items:start;padding:12px 0;border-bottom:1px solid var(--hair)}
.it .sw{display:block;width:28px;height:56px}
.it .kitsw{display:flex}.it .kitsw b{flex:1}
.it-main{display:grid;gap:6px;min-width:0}
.it-main .t3{font-size:19px;line-height:1.15}
.it-ctl{display:flex;align-items:center;gap:12px;margin-top:4px}
.it .rm{font:600 10px/1 var(--f-label);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.it .rm:hover{color:var(--fg)}
.it-sum{font:500 14px/1.3 var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap}
.co-sum .tots{display:grid}
.co-sum .tot{display:flex;justify-content:space-between;gap:16px;padding:7px 0;font:400 14px/1.4 var(--f-num);color:var(--muted)}
.co-sum .tot b{font-weight:400;color:var(--fg);text-align:right;font-variant-numeric:tabular-nums}
.co-sum .tot.big{border-top:1px solid var(--fg);margin-top:6px;padding-top:12px;color:var(--fg)}
.co-sum .tot.big b{font-size:20px}
.co-sum .tot.warn b{color:#9B2C2C}
.co-sum .hint{line-height:1.6}
.co-empty,.co-done{display:grid;gap:14px;max-width:640px;padding:40px 0}
.co-empty .acts,.co-done .acts{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.co-done pre.order{white-space:pre-wrap;font:400 14px/1.6 var(--f-num);background:var(--surface);padding:20px;margin:8px 0 0;overflow:auto;max-height:50vh;scrollbar-width:none}
@media (max-width:1023px){.co-grid{grid-template-columns:1fr}.co-sum{position:static}.co-form .fields{grid-template-columns:1fr}}

/* ARSIP: gaya Katalog di bawah tetap disimpan untuk assets/js/archive/view-katalog.js */
/* =========================== KATALOG =========================== */
.k-open{position:relative;min-height:100vh;min-height:100svh;display:flex;align-items:center;padding:calc(64px + 6vh) 0 var(--seam)}
.k-open .wrap{width:100%}
.k-open .grid12{row-gap:clamp(40px,6vh,72px);align-items:end}
.k-open h1{grid-column:1/9;max-width:16ch}
.k-open .lead{grid-column:1/7;max-width:46ch}
.k-open .k-nav{grid-column:8/13;display:grid;gap:12px;justify-items:start}
.k-open .k-nav a{position:relative;padding:4px 0;transition:color .3s}
.k-open .k-nav a:hover{color:var(--fg)}
.k-open .k-frame{grid-column:9/13;perspective:1400px;justify-self:end;align-self:end}
.k-frame .sheet{position:relative;width:clamp(120px,13vw,200px);aspect-ratio:122/244;border:1px solid;border-image:var(--metal) 1;transform-style:preserve-3d}
.k-frame .dim{position:absolute;color:var(--muted);white-space:nowrap}
.k-frame .dim.w{left:0;top:-28px}
.k-frame .dim.h{right:calc(100% + 14px);top:50%;transform:rotate(-90deg) translateX(-50%);transform-origin:right top}
.k-frame .pln{position:absolute;left:12px;bottom:12px;color:var(--muted)}
@media (max-width:1023px){.k-open .k-frame{grid-column:1/-1;justify-self:start;margin-top:12px}.k-open .k-nav{display:none}}

.k-bab{position:relative;padding:var(--seam) 0 clamp(40px,6vh,80px);overflow:hidden}
.k-bab .wrap{position:relative;display:grid;gap:20px}
.k-bab .roman{position:absolute;right:var(--gutter);top:-.1em;color:var(--fg);opacity:.06;pointer-events:none;user-select:none;line-height:.8}
.k-bab h2{max-width:14ch}
.k-bab .line{max-width:52ch}

.pl{position:relative;min-height:100vh;min-height:100svh;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--col-gap);align-items:center;padding:8vh var(--gutter)}
.pl .plate{grid-column:1/8;position:relative;height:64vh;min-height:380px;overflow:hidden;background:#0B0A09}
.pl .plate .lens-room{position:absolute;inset:-4% 0;height:108%}
.pl .plate .exp{position:absolute;inset:0;background:var(--ink);opacity:.85;pointer-events:none}
.pl .plate .top{position:absolute;left:0;right:0;top:0;height:1px;background:var(--spec);opacity:.8;z-index:2}
.pl .plate .pln{position:absolute;left:18px;bottom:16px;color:#CDBFB2;z-index:2}
.pl .plate .corner{z-index:2}
.pl .txt{grid-column:8/13;display:grid;gap:22px;align-content:center}
.pl .txt .rule{height:1px;background:var(--metal);transform-origin:left;margin-top:-10px}
.pl .txt h2{max-width:16ch}
.pl .specs{display:grid;gap:10px;margin-top:6px}
.pl .specs > div{display:flex;justify-content:space-between;gap:18px;align-items:baseline;padding-bottom:10px;border-bottom:1px solid var(--hair);font-size:15px}
.pl .specs > div > span:last-child{text-align:right;max-width:60%}
.pl .dd{display:grid;grid-template-columns:1fr 1fr;gap:24px;font-size:15px}
.pl .dd p.t4{font-size:15px;line-height:1.5;margin-top:8px}
.pl .acts{display:flex;gap:28px;flex-wrap:wrap}
.ctl{display:grid;gap:12px;padding:16px 0 4px}
.ctl label b,.ctl p b{font-weight:500;color:var(--fg)}
.ctl input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:1px;background:var(--hair);outline:0;margin:10px 0}
.ctl input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:24px;background:var(--fg);border:0;cursor:pointer}
.ctl input[type=range]::-moz-range-thumb{width:12px;height:24px;background:var(--fg);border:0;border-radius:0;cursor:pointer}
.ctl input[type=range]:focus-visible::-webkit-slider-thumb{outline:1px solid var(--metal-solid);outline-offset:3px}
.lchips{display:flex;flex-wrap:wrap;gap:8px}
.lchip{width:22px;height:44px;border:1px solid rgba(255,255,255,.12);position:relative;transition:transform .3s var(--ease-out)}
.lchip:hover{transform:translateY(-3px)}
.lchip.on::after{content:"";position:absolute;left:-4px;right:-4px;bottom:-7px;height:1px;background:var(--metal)}
@media (max-width:1023px){.pl{min-height:0;padding:10vh var(--gutter) 6vh}.pl .plate{grid-column:1/-1;height:48vh}.pl .txt{grid-column:1/-1}}

.k-mx .mx-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px 40px;flex-wrap:wrap;margin-bottom:48px}
.k-mx .mx-head > div{display:grid;gap:14px}
.k-mx .mx-head > .chips{display:flex;flex-wrap:wrap;gap:8px}
.mx-grid{display:grid;grid-template-columns:280px 1fr;gap:var(--col-gap);align-items:start}
.mx-prev{position:sticky;top:96px;display:grid;gap:12px}
.mx-prev .lens-room{height:360px;border:1px solid var(--hair)}
table.mx{width:100%;border-collapse:collapse}
table.mx th{position:sticky;top:64px;z-index:1;background:var(--paper);text-align:left;padding:14px 12px 14px 0;border-bottom:1px solid var(--hair);font-weight:400}
table.mx td{padding:18px 12px 18px 0;border-bottom:1px solid var(--hair);vertical-align:top;font-size:14px;line-height:1.45}
table.mx td.t3{font-size:var(--t3);line-height:1.1}
table.mx td.bar{position:relative}
table.mx td.bar i{display:block;height:1px;background:var(--metal);margin-top:8px;width:calc(var(--w,0)*100%);transform-origin:left}
table.mx td.num{font-family:var(--f-num);font-size:13px;white-space:nowrap}
table.mx tr.mxr{cursor:pointer;transition:background .3s}
table.mx tr.mxr:hover td{background:var(--surface)}
table.mx tr.off{display:none}
@media (max-width:1023px){.mx-grid{grid-template-columns:1fr}.mx-prev{display:none}table.mx th:nth-child(n+4):not(:last-child),table.mx td:nth-child(n+4):not(:last-child){display:none}}

.k-rooms aside,.k-faq aside{display:grid;gap:18px;align-content:start;position:sticky;top:96px}
.rooms{display:grid}
.room-row{position:relative;padding:22px 0;cursor:pointer}
.room-row .ttl{text-align:left;transition:transform .4s var(--ease-out)}
.room-row:hover .ttl{transform:translateX(12px)}
.room-row .recs{height:0;overflow:hidden;display:flex;gap:8px;flex-wrap:wrap;padding-left:12px}
.room-row .recs .chip{margin:12px 0 6px}
.room-row > .hair{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--hair)}
.room-row > .hair i{position:absolute;inset:0;background:var(--metal);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}
.room-row:hover > .hair i{transform:scaleX(1)}
.room-prev{position:fixed;left:0;top:0;width:280px;height:200px;z-index:5;pointer-events:none;opacity:0;overflow:hidden;background:var(--surface)}
.room-prev img{width:100%;height:100%;object-fit:cover}

.k-steps .steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px var(--col-gap)}
.k-steps .step{display:grid;gap:14px;align-content:start}
.k-steps .step .num{background:var(--metal);-webkit-background-clip:text;background-clip:text;color:transparent}
@media (max-width:1023px){.k-steps .steps{grid-template-columns:1fr 1fr}}

.faq{display:grid}
.q{position:relative}
.qh{width:100%;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:26px 0;text-align:left}
.qh .pm{position:relative;width:14px;height:14px;flex:0 0 14px;transition:transform .5s var(--ease-out)}
.qh .pm::before,.qh .pm::after{content:"";position:absolute;background:var(--fg)}
.qh .pm::before{left:6.5px;top:0;width:1px;height:14px}.qh .pm::after{top:6.5px;left:0;width:14px;height:1px}
.qh[aria-expanded="true"] .pm{transform:rotate(45deg)}
.qa{height:0;overflow:hidden}
.qa p{padding:0 0 26px;max-width:60ch}
.q > .hair{display:block;height:1px;background:var(--hair);transform-origin:left}

.k-cta .wrap{display:grid}
.k-cta .wrap > .t5{margin-bottom:8px}
.k-cta .giant{text-align:left;width:100%}

/* =========================== KONTAK =========================== */
.c-plate{position:relative;height:100vh;height:100svh;min-height:560px;overflow:hidden;background:#0B0A09;color:#EDE6DC}
.c-plate .lens-room{position:absolute;inset:0}
.c-plate .lens-room img{top:-12%;height:124%}
.c-plate .c-lead{position:absolute;left:var(--gutter);top:calc(64px + 28px);color:#EDE6DC;opacity:.85}
.c-plate h1{position:absolute;left:calc(var(--gutter) - .04em);bottom:-.2em;color:#EDE6DC;line-height:.8}
.c-links{padding:var(--seam) 0}
.c-links .wrap{display:grid}
.giant{position:relative;display:grid;grid-template-columns:140px 1fr auto;align-items:baseline;gap:24px;padding:32px 0}
.giant > .hair{position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--hair);transform-origin:left}
.giant .v{font-variant-numeric:tabular-nums;transition:transform .4s var(--ease-out)}
.giant:hover .v{transform:translateX(10px)}
.giant .ar{display:inline-block;font-style:normal}
.giant[aria-disabled="true"] .v{color:var(--muted)}
@media (max-width:1023px){.giant{grid-template-columns:1fr auto;gap:8px 16px}.giant .k{grid-column:1/-1}}
.c-form{background:var(--surface)}
.c-form aside{display:grid;gap:18px;align-content:start}
.sform{display:grid;gap:36px}
.sform .fields{display:grid;grid-template-columns:1fr 1fr;gap:28px var(--col-gap)}
.sform .field{display:grid;gap:10px}
.sform .field.full{grid-column:1/-1}
.sform input,.sform textarea{background:transparent;border:0;border-bottom:1px solid var(--hair);padding:12px 0;font:400 16px/1.4 var(--f-body);color:var(--fg);outline:0;transition:border-color .3s;resize:vertical}
.sform input:focus,.sform textarea:focus{border-color:var(--fg)}
.sform input::placeholder,.sform textarea::placeholder{color:var(--muted);font-family:var(--f-num);font-size:14px}
.sform .kitchips{display:grid;gap:14px}
.sform .schip{display:inline-flex;align-items:center;gap:10px;padding:8px 12px 8px 8px}
.sform .schip i{display:block;width:12px;height:24px;flex:0 0 12px}
.sform .schip.on i{outline:1px solid var(--paper);outline-offset:-2px}
.sform .kitchips b{font-weight:500;color:var(--fg);margin-left:.5em}
.sform .acts{display:flex;align-items:center;gap:32px;flex-wrap:wrap}
@media (max-width:1023px){.sform .fields{grid-template-columns:1fr}}
.c-map{position:relative;aspect-ratio:16/10;border:1px solid var(--hair);overflow:hidden;display:grid;place-items:center}
.c-map .mapgrid{position:absolute;inset:0;background:linear-gradient(var(--hair) 1px,transparent 1px) 0 0/64px 64px,linear-gradient(90deg,var(--hair) 1px,transparent 1px) 0 0/64px 64px;opacity:.6;-webkit-mask-image:radial-gradient(#000 40%,transparent 80%);mask-image:radial-gradient(#000 40%,transparent 80%)}
.c-map p{position:relative;color:var(--muted)}
.c-loc .jam{display:grid;gap:14px;align-content:start}
.c-loc .jam .hair{margin:8px 0}
.c-ig .ig-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:40px}
.c-ig .ig-head > div{display:grid;gap:12px}
.c-ig .tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.c-ig .tile{position:relative;aspect-ratio:4/5;overflow:hidden;clip-path:inset(0 0 0 0)}
.c-ig .tile .sw{position:absolute;inset:0}
.c-ig .tile .t5{position:absolute;left:12px;bottom:12px;color:#fff;mix-blend-mode:difference}
@media (max-width:1023px){.c-ig .tiles{grid-template-columns:repeat(3,1fr)}}
/* Kontak — Get a Sample block */
.kitblock{display:grid;gap:28px;min-width:0}
.kitgrid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--hair);border-left:1px solid var(--hair)}
.kitgrid li{display:grid;gap:8px;align-content:start;padding:16px;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);min-width:0}
.kitgrid .sw{display:block;height:96px;aspect-ratio:1/2;margin-bottom:6px}
.kitgrid .t3{font-size:20px;line-height:1.1}
.kitblock .acts{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.kitblock .acts .t5{margin-left:.4em}
@media (max-width:767px){.kitgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
