.fv{--bg:var(--warm-white,#FAFAF7);--card:var(--cream,#F5F0E8);--ink:var(--charcoal,#1C1C1A);--mut:var(--dark-sage,#505E58);--line:var(--stone-light,#D4CEC6);--accent:var(--brand-green-dark);--fv-accent:var(--brand-green-dark);--accent-soft:color-mix(in srgb,var(--brand-green-dark) 14%,transparent);--stage:#161614;font:300 15px/1.55 var(--sans,'Jost',system-ui,sans-serif);color:var(--ink);-webkit-font-smoothing:antialiased}
html[data-theme="dark"] .fv{--bg:#141412;--card:#1d1d1a;--ink:#f1eee8;--mut:#a39d94;--line:#34322e;--accent:var(--brand-green);--fv-accent:var(--brand-green);--accent-soft:color-mix(in srgb,var(--brand-green) 16%,transparent);--stage:#0e0e0d}
.fv [hidden]{display:none!important}
.fv *,.fv *::before,.fv *::after{box-sizing:border-box}
.fv{max-width:1680px;margin:0 auto}
.fv .app{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:28px;align-items:start}
.fv .stage{min-width:0}
.fv .vp{position:relative;aspect-ratio:16/10;max-height:84vh;width:100%;background:var(--stage);overflow:hidden;border:.5px solid var(--line);touch-action:none}
.fv .vp canvas{width:100%;height:100%;display:block}
.fv .busy{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.35);color:#fff;font-size:.9rem;letter-spacing:.06em}
.fv .bar{display:flex;gap:10px;align-items:center;justify-content:space-between;flex-wrap:wrap;margin-top:10px}
.fv .hint{color:var(--mut);font-size:.82rem;margin:.4rem 0 0}
.fv .panel{display:flex;flex-direction:column;gap:20px;min-width:0}
.fv .panel h2,.fv .specbox h2{display:flex;align-items:center;gap:14px;font:500 11px/1 'Jost',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin:0 0 .8rem;padding-top:1.2rem;border-top:.5px solid var(--line)}
.fv .panel h2::before,.fv .specbox h2::before{content:'';display:block;width:28px;height:1.5px;background:var(--brand-green);flex-shrink:0}
.fv .panel h3.grp{font:400 .8rem/1.2 'Jost',sans-serif;color:var(--mut);margin:.9rem 0 .4rem}
.fv .cur{background:var(--card);border:.5px solid var(--line);padding:.9rem 1rem}
.fv .cur b{font:400 1.5rem/1.2 'Cormorant Garamond',Georgia,serif;display:block}
.fv .cur p{margin:.3rem 0 0;color:var(--mut);font-size:.88rem}
.fv .cur p.nt{color:var(--ink);font-style:italic;font-size:.82rem}
.fv #patterns{max-height:430px;overflow:auto;padding-right:6px}
.fv .tg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.fv .tile{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:4px;border:.5px solid var(--line);padding:4px;background:var(--card)}
.fv .tile img{width:100%;aspect-ratio:1;display:block;object-fit:cover}
.fv .tile span{font-size:.72rem;line-height:1.2;color:var(--mut);min-height:2.4em}
.fv .tile.on{border-color:var(--accent);background:var(--accent-soft)}
.fv .tile.on span{color:var(--ink)}
.fv .tile:focus-visible,.fv .chip:focus-visible,.fv .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fv .chips{display:flex;flex-wrap:wrap;gap:6px}
.fv .chip,.fv .btn{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:7px;border:.5px solid var(--line);padding:6px 11px;font-size:.84rem;background:var(--card);color:var(--ink)}
.fv .chip i{width:16px;height:16px;display:block;border:.5px solid rgba(0,0,0,.25)}
.fv .chip.on{border-color:var(--accent);background:var(--accent-soft)}
.fv .btn{font-size:.8rem;color:var(--mut)}
.fv .btn.primary{background:var(--brand-green);color:var(--near-black,#141412);border-color:var(--brand-green);text-transform:uppercase;letter-spacing:.14em;font-weight:500;font-size:.72rem;padding:11px 18px}
.fv .btn.primary:hover{background:var(--brand-green-dark);border-color:var(--brand-green-dark);color:var(--warm-white,#FAFAF7)}
.fv .btn:not(.primary):hover{color:var(--ink);border-color:var(--accent)}
.fv a.btn{text-decoration:none}
.fv .lab{display:block;font-size:.8rem;color:var(--mut);margin:.8rem 0 .3rem}
.fv .row{display:flex;align-items:center;gap:10px}
.fv .row output{min-width:3.2em;text-align:right;font-variant-numeric:tabular-nums;color:var(--mut);font-size:.84rem}
.fv input[type=range]{flex:1;min-width:0;accent-color:var(--accent)}
.fv .specbox{background:var(--card);border:.5px solid var(--line);padding:.9rem 1rem}
.fv .specbox p{margin:0 0 .7rem}
.fv .fine{font-size:.78rem;color:var(--mut);margin:0}
.fv .modes{margin:0 0 10px}
.fv .lnk{all:unset;cursor:pointer;text-decoration:underline;margin:0 .3rem}
.fv .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.fv #photoWrap{position:absolute;inset:0;display:grid;place-items:center}
.fv #photoWrap canvas{position:absolute;display:block;width:auto;height:auto}
.fv #pov{touch-action:none;cursor:crosshair}
.fv .drop{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:24px;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.45));color:#fff}
.fv .drop b{font:500 1.5rem/1.2 'Cormorant Garamond',Georgia,serif;display:block;margin-bottom:.4rem}
.fv .drop p{margin:.3rem auto .9rem;max-width:34ch;opacity:.9}
.fv .drop p.small{font-size:.8rem;margin:.8rem 0 0}
.fv .steps{margin:0;padding-left:1.2rem;display:flex;flex-direction:column;gap:16px}
.fv .steps li{padding-left:.2rem}
.fv .steps li>b{display:block;margin-bottom:.4rem}
.fv .num{width:5.2em;background:var(--card);color:var(--ink);border:.5px solid var(--line);padding:5px 8px;font:inherit}
.fv .mut{color:var(--mut)}
.fv .hint.hl{color:var(--ink)}
.fv .cur p.cl{color:var(--accent);font-size:.82rem}
.fv .panel h3.grp{margin:.8rem 0 .4rem}
.fv .tile img{background:var(--line)}
@media (max-width:900px){.fv #photoWrap{inset:0}}
@media (max-width:900px){.fv .app{grid-template-columns:minmax(0,1fr);gap:14px}
.fv .vp{aspect-ratio:4/3;max-height:42vh;width:100%}
.fv #patterns{max-height:none;overflow:visible;padding:0}

}



.fv .tile:focus-visible,.fv .chip:focus-visible,.fv .btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.fv .chips .chip span,.fv .btn{font-family:var(--sans,'Jost',system-ui,sans-serif)}
.fv .enq-note{font-size:.78rem;color:var(--mut);margin:.7rem 0 0}
@media (prefers-reduced-motion:reduce){.fv *{transition:none!important}}

.fv .specbox h2{border-top:0;padding-top:0}
/* Bigger stage and full-screen mode (12 Oct 2026) */
.fv .vtools{position:absolute;top:10px;right:10px;display:flex;gap:6px;z-index:8}
.fv .vt{all:unset;box-sizing:border-box;cursor:pointer;display:inline-flex;align-items:center;gap:8px;background:rgba(20,20,18,.72);color:#fff;border:.5px solid rgba(255,255,255,.28);padding:8px 12px;font:500 .68rem/1 'Jost',system-ui,sans-serif;letter-spacing:.14em;text-transform:uppercase}
.fv .vt:hover{background:rgba(20,20,18,.9);border-color:rgba(255,255,255,.6)}
.fv .vt:focus-visible{outline:2px solid #fff;outline-offset:2px}
.fv.fs{position:fixed;inset:0;z-index:2147483000;max-width:none;margin:0;padding:12px 14px;background:var(--bg);overflow:auto}
.fv:fullscreen{max-width:none;margin:0;padding:12px 14px;background:var(--bg);overflow:auto}
.fv.fs .app{grid-template-columns:minmax(0,1fr) 360px;height:100%;align-items:stretch}
.fv.fs .stage{display:flex;flex-direction:column;min-height:0}
.fv.fs .vp{aspect-ratio:auto;max-height:none;flex:1;min-height:320px;height:auto}
.fv.fs .panel{overflow:auto;max-height:calc(100vh - 24px);padding-right:6px}
.fv.fs.nopanel .app{grid-template-columns:minmax(0,1fr)}
.fv.fs.nopanel .panel{display:none}
html.fv-fs-lock,html.fv-fs-lock body{overflow:hidden}
@media (max-width:900px){
  .fv.fs .app{grid-template-columns:minmax(0,1fr);height:auto}
  .fv.fs .vp{flex:none;height:62vh;min-height:0}
  .fv.fs .panel{max-height:none;overflow:visible}
  .fv .vt span{display:none}
  .fv .vt{padding:9px 10px}
}
