.st-configurator{
    /* Live configurator state — updated by JS. Inherits --bone, --ink, --serif
       etc. from the theme's :root. */
    --frame-w: 34px;
    --frame-color: #1a1612;
    --frame-bevel: rgba(255,255,255,.10);
    --mat-w: 8%;
    --mat-color: #f7f4ee;
    --wall-color: #d9d3c7;
    --photo-ratio: 1.5;
    color:var(--ink);
  }
  .st-configurator *{box-sizing:border-box}
  .st-configurator img{display:block;max-width:100%}

  /* ============ LAYOUT ============ */
.st-configurator .config{max-width:1640px;margin:0 auto;padding:48px 40px 90px;display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:64px;align-items:start}
  @media(max-width:1200px){.st-configurator .config{grid-template-columns:minmax(0,1fr) 400px;gap:48px}}
  @media(max-width:980px){.st-configurator .config{grid-template-columns:1fr;gap:36px;padding:24px 20px 60px}}

  /* ============ STAGE (left) ============ */
.st-configurator .stage-wrap{position:sticky;top:24px}
  @media(max-width:980px){.st-configurator .stage-wrap{position:static}}

.st-configurator .stage{
    background:var(--wall-color);
    border-radius:4px;
    padding:8% 8% 9%;
    display:flex;align-items:center;justify-content:center;
    min-height:520px;
    transition:background .4s ease, padding .4s ease;
    position:relative;
    overflow:hidden;
  }
  /* DEFAULT: unframed, photo-first. No grey wall, no padding, big clean image —
     like a normal WooCommerce product image. */
.st-configurator .stage.is-unframed{
    background:transparent;
    padding:0;
    min-height:0;
    border-radius:2px;
    overflow:visible;
    display:block;            /* stop flex-centering so children can be full width */
  }
.st-configurator .stage.is-unframed::after,
.st-configurator .stage.is-unframed::before{display:none !important}
.st-configurator .stage.is-unframed .frame{
    background:transparent !important;
    background-image:none !important;
    padding:0 !important;
    box-shadow:none !important;
    max-height:none;
    max-width:none;
    width:100%;
    display:block;
  }
.st-configurator .stage.is-unframed .frame::after{display:none}
.st-configurator .stage.is-unframed .mat{
    background:transparent !important;
    padding:0 !important;
    width:100%;
    display:block;
  }
.st-configurator .stage.is-unframed .photo-holder{
    width:100%;
    line-height:0;
  }
.st-configurator .stage.is-unframed .photo-holder img{
    width:100%;             /* fill the column — horizontal photos no longer sit small */
    height:auto;
    max-width:100%;
    max-height:80vh;        /* tall/square photos still capped so they don't dominate */
    object-fit:contain;
    margin:0 auto;
    box-shadow:0 8px 30px rgba(26,22,18,.16);
    border-radius:2px;
  }
  @media(max-width:980px){.st-configurator .stage{min-height:380px;padding:12% 10%}}
  @media(max-width:980px){.st-configurator .stage.is-unframed{min-height:0;padding:0}}
  /* On mobile, cap the framed photo by available width so the frame never overflows */
  @media(max-width:980px){
.st-configurator .stage:not(.is-unframed){padding:8% 6%}
.st-configurator .stage:not(.is-unframed) .frame{max-height:none;max-width:88vw}
.st-configurator .stage:not(.is-unframed) .photo-holder img{max-height:48vh;max-width:100%}
  }
  @media(max-width:600px){
.st-configurator .stage:not(.is-unframed){padding:7% 5%}
.st-configurator .stage:not(.is-unframed) .frame{max-width:90vw}
.st-configurator .stage:not(.is-unframed) .photo-holder img{max-width:100%;max-height:44vh}
  }
  @media(max-width:980px){
.st-configurator .stage.is-unframed .photo-holder img{max-height:none;max-width:100%;width:100%}
  }

  /* subtle wall vignette + floor line for room realism (framed preview only) */
.st-configurator .stage::after{
    content:'';position:absolute;inset:0;pointer-events:none;
    background:radial-gradient(120% 90% at 50% 30%, transparent 60%, rgba(0,0,0,.10) 100%);
  }
.st-configurator .stage.has-floor::before{
    content:'';position:absolute;left:0;right:0;bottom:0;height:22%;
    background:linear-gradient(180deg, rgba(0,0,0,.04), rgba(0,0,0,.13));
    pointer-events:none;
  }

  /* ---- The framed piece ---- */
.st-configurator .frame{
    position:relative;
    background:var(--frame-color);
    background-image:var(--frame-texture, none);
    background-size:cover;
    padding:var(--frame-w);
    max-width:100%;
    max-height:62vh;
    box-shadow:
      0 2px 4px rgba(0,0,0,.18),
      0 18px 40px rgba(0,0,0,.32),
      0 40px 80px rgba(0,0,0,.22);
    transition:padding .25s ease, background .35s ease;
    border-radius:1px;
    display:flex;
  }

  /* floating frame variant — photo appears to float, frame is a back-tray */
.st-configurator .frame.floating{padding:calc(var(--frame-w) + 10px);}
.st-configurator .frame.floating .mat{box-shadow:0 6px 16px rgba(0,0,0,.22);}

  /* gallery frame — wide flat profile */
.st-configurator .frame.gallery{padding:calc(var(--frame-w) + 14px);}

  /* borderless — no frame, just the print (with mat optionally) */
.st-configurator .frame.borderless{padding:0;background:transparent;background-image:none;box-shadow:0 10px 30px rgba(0,0,0,.25);}

  /* ---- Frame finish textures ---- */
  /* Painted: subtle satin sheen */
.st-configurator .frame.fin-paint{
    background-image:
      linear-gradient(180deg, rgba(255,255,255,.06) 0%, transparent 14%, transparent 86%, rgba(0,0,0,.10) 100%),
      linear-gradient(90deg, rgba(255,255,255,.04), transparent 8%, transparent 92%, rgba(0,0,0,.08));
  }
  /* Wood grain: layered repeating gradients along the moulding length */
.st-configurator .frame.fin-wood-oak{
    background-image:
      repeating-linear-gradient(92deg, rgba(0,0,0,.05) 0 2px, transparent 2px 7px, rgba(0,0,0,.04) 7px 8px, transparent 8px 16px),
      repeating-linear-gradient(88deg, rgba(255,255,255,.06) 0 1px, transparent 1px 11px),
      linear-gradient(135deg, #d9c19a, #bd9c6a);
  }
.st-configurator .frame.fin-wood-walnut{
    background-image:
      repeating-linear-gradient(91deg, rgba(0,0,0,.16) 0 2px, transparent 2px 6px, rgba(0,0,0,.10) 6px 7px, transparent 7px 15px),
      repeating-linear-gradient(89deg, rgba(255,255,255,.04) 0 1px, transparent 1px 9px),
      linear-gradient(135deg, #6b4730, #3f2817);
  }
.st-configurator .frame.fin-wood-maple{
    background-image:
      repeating-linear-gradient(90deg, rgba(0,0,0,.04) 0 2px, transparent 2px 9px, rgba(0,0,0,.03) 9px 10px, transparent 10px 19px),
      repeating-linear-gradient(88deg, rgba(255,255,255,.07) 0 1px, transparent 1px 13px),
      linear-gradient(135deg, #e6d6b8, #cdb389);
  }
  /* moulding profile — soft inner & outer edge so the frame reads 3D without a hard line */
.st-configurator .frame::after{
    content:'';position:absolute;inset:0;pointer-events:none;border-radius:1px;
    box-shadow:
      inset 0 1px 1px rgba(255,255,255,.10),
      inset 0 -2px 3px rgba(0,0,0,.22),
      inset 2px 0 3px rgba(0,0,0,.10),
      inset -2px 0 3px rgba(0,0,0,.10);
  }
.st-configurator .frame.borderless::after{display:none}

  /* ---- The mat (gallery mount) ---- */
.st-configurator .mat{
    background:var(--mat-color);
    padding:var(--mat-w);
    position:relative;
    transition:padding .25s ease, background .35s ease;
    display:flex;align-items:center;justify-content:center;
  }
.st-configurator .mat.no-mat{padding:0}

  /* ---- The photo itself ---- */
.st-configurator .photo-holder{
    position:relative;
    line-height:0;
  }
.st-configurator .photo-holder img{
    display:block;
    width:auto;
    height:auto;
    max-height:52vh;
    max-width:100%;
    object-fit:contain;
  }

.st-configurator .size-label{
    position:absolute;left:50%;bottom:14px;transform:translateX(-50%);
    font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
    color:var(--ink);background:rgba(244,239,230,.86);
    padding:5px 12px;border-radius:999px;z-index:6;white-space:nowrap;
    backdrop-filter:blur(4px);
  }
.st-configurator .stage:not(.show-size) .size-label{display:none}

  /* ============ PANEL (right) ============ */
.st-configurator .panel h1{font-family:var(--serif);font-weight:300;font-size:clamp(30px,3.4vw,46px);line-height:1.04;letter-spacing:-.02em;margin-bottom:6px}
.st-configurator .panel h1 em{font-style:italic}
.st-configurator .panel .loc{font-family:var(--serif);font-style:italic;font-size:17px;color:var(--ash);margin-bottom:4px}
.st-configurator .panel .byline{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ash);margin-bottom:24px}

.st-configurator .price-row{display:flex;align-items:baseline;gap:12px;padding:18px 0;border-top:1px solid rgba(26,22,18,.12);border-bottom:1px solid rgba(26,22,18,.12);margin-bottom:26px}
.st-configurator .price{font-family:var(--serif);font-size:34px;font-weight:400}
.st-configurator .price-note{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--ash)}

.st-configurator .control{margin-bottom:26px}
.st-configurator .control-label{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:12px;display:flex;justify-content:space-between;align-items:center}
.st-configurator .control-label .val{color:var(--ash);font-size:11px}
.st-configurator .unit-note{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--ash);margin-top:8px;opacity:.8}
.st-configurator #framedNote{font-family:var(--sans);font-size:13.5px;line-height:1.5;letter-spacing:0;color:var(--ash);opacity:1;margin-top:10px;padding:10px 12px;background:rgba(184,83,58,.06);border-left:2px solid var(--clay);border-radius:0 3px 3px 0}
.st-configurator #framedNote strong{color:var(--ink);font-weight:600}
.st-configurator .srow-preview span:last-child{color:var(--ash);font-style:italic}

.st-configurator .opts{display:flex;flex-wrap:wrap;gap:8px}
.st-configurator .opt{
    font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;
    padding:9px 14px;border:1px solid rgba(26,22,18,.2);border-radius:999px;
    background:transparent;cursor:pointer;color:var(--ink-soft);
    transition:all .18s ease;white-space:nowrap;
  }
.st-configurator .opt:hover{border-color:var(--ink)}
.st-configurator .opt.active{background:var(--ink);color:var(--bone);border-color:var(--ink)}

  /* swatch options (colours) */
.st-configurator .swatches{display:flex;flex-wrap:wrap;gap:10px}
.st-configurator .swatch{
    width:38px;height:38px;border-radius:999px;cursor:pointer;position:relative;
    border:1px solid rgba(26,22,18,.18);transition:transform .15s ease;
    background-size:cover;background-position:center;
  }
.st-configurator .swatch:hover{transform:scale(1.08)}
.st-configurator .swatch.active{box-shadow:0 0 0 2px var(--bone),0 0 0 4px var(--ink)}
.st-configurator .swatch.active::after{content:'✓';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:13px;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.st-configurator .swatch.custom{background:conic-gradient(from 0deg,#e74c3c,#f1c40f,#2ecc71,#3498db,#9b59b6,#e74c3c);display:flex;align-items:center;justify-content:center}
.st-configurator .swatch.custom input{opacity:0;width:100%;height:100%;cursor:pointer}

  /* slider */
.st-configurator .slider-row{display:flex;align-items:center;gap:14px}
.st-configurator input[type=range]{flex:1;accent-color:var(--clay);height:4px}
.st-configurator .slider-val{font-family:var(--mono);font-size:12px;color:var(--ash);min-width:42px;text-align:right}

.st-configurator .toggle-row{display:flex;align-items:center;gap:10px;margin-top:12px}
.st-configurator .toggle-row label{font-family:var(--sans);font-size:14.5px;color:var(--ink-soft);cursor:pointer;display:flex;align-items:center;gap:8px}
.st-configurator .toggle-row input{accent-color:var(--clay);width:16px;height:16px;cursor:pointer}

.st-configurator .reset-btn{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--clay);background:none;border:none;cursor:pointer;padding:4px 0;text-decoration:underline;text-underline-offset:3px}

.st-configurator .actions{display:flex;flex-direction:column;gap:10px;margin-top:32px}
.st-configurator .btn{font-family:var(--mono);font-size:13.5px;letter-spacing:.12em;text-transform:uppercase;padding:16px;border-radius:999px;cursor:pointer;border:1px solid var(--ink);transition:all .2s ease;text-align:center;text-decoration:none}
.st-configurator .btn-primary{background:var(--ink);color:var(--bone)}
.st-configurator .btn-primary:hover{background:var(--clay);border-color:var(--clay)}
.st-configurator .btn-ghost{background:transparent;color:var(--ink)}
.st-configurator .btn-ghost:hover{background:var(--ink);color:var(--bone)}

.st-configurator .summary{margin-top:24px;padding:20px;background:var(--paper);border-radius:8px;font-family:var(--mono);font-size:12.5px;line-height:1.9;letter-spacing:.04em;color:var(--ink-soft)}
.st-configurator .summary .srow{display:flex;justify-content:space-between;gap:16px}
.st-configurator .summary .srow span:first-child{color:var(--ash);text-transform:uppercase;font-size:11px;letter-spacing:.1em}

.st-configurator .meta-list{margin-top:24px;font-size:14.5px;line-height:1.7;color:var(--ash)}
.st-configurator .meta-list dt{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-top:14px;margin-bottom:3px}
.st-configurator .meta-list dd{color:var(--ash)}

  /* photo picker strip */
.st-configurator .photo-strip{display:flex;gap:10px;overflow-x:auto;padding:16px 0 8px;margin-bottom:8px}
.st-configurator .photo-strip img{width:64px;height:64px;object-fit:cover;border-radius:4px;cursor:pointer;opacity:.55;transition:opacity .2s,outline .2s;outline:2px solid transparent;flex-shrink:0}
.st-configurator .photo-strip img:hover{opacity:.85}
.st-configurator .photo-strip img.active{opacity:1;outline-color:var(--clay)}

.st-configurator .proto-note{max-width:1500px;margin:0 auto;padding:20px 32px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--ash);border-top:1px solid rgba(26,22,18,.1)}
.st-configurator .proto-head{max-width:1500px;margin:0 auto;padding:28px 32px 0}
.st-configurator .proto-head .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--clay);margin-bottom:8px}
.st-configurator .proto-head h2{font-family:var(--serif);font-weight:300;font-size:26px;font-style:italic}
  /* ============ Standalone configurator page ============ */
  .configurator-page{background:var(--bone);min-height:60vh}
  .configurator-intro{max-width:1500px;margin:0 auto;padding:64px 32px 8px}
  .configurator-intro-inner{max-width:680px}
  .configurator-intro .eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--clay);margin-bottom:14px}
  .configurator-intro h1{font-family:var(--serif);font-weight:300;font-size:clamp(34px,4.4vw,60px);line-height:1.02;letter-spacing:-.02em;margin-bottom:18px}
  .configurator-intro .lede{font-family:var(--sans);font-size:clamp(15px,1.5vw,18px);line-height:1.6;color:var(--ash);max-width:560px}
  @media(max-width:980px){.configurator-intro{padding:40px 20px 0}}
