/* ═══════════════════════════════════════════════════════════════════
   Orion Product Designer — Frontend
   Professional product configurator UI
   ═══════════════════════════════════════════════════════════════════ */

   @import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Syne:wght@600;700&display=swap');

   /* ─── Design tokens ──────────────────────────────────────────────── */
   #orion-designer {
     --fg:          #111827;
     --fg-muted:    #6b7280;
     --fg-faint:    #9ca3af;
     --bg-vp:       transparent;      /* transparent — page background shows through */
     --bg-hud:      #ffffff;
     --border:      rgba(0,0,0,.07);
     --accent:      #111827;
     --accent2:     #374151;
     --ring:        0 0 0 3px rgba(17,24,39,.18);
     --r:           14px;             /* global radius                    */
     --r-sm:        8px;
     --font:        'DM Sans', -apple-system, BlinkMacSystemFont, sans-serif;
     --font-display:'Syne', var(--font);
     --hud-h:       96px;
     --shadow-lg:   0 20px 60px rgba(0,0,0,.13), 0 4px 16px rgba(0,0,0,.07);
     --shadow-sm:   0 1px 4px rgba(0,0,0,.08);
     --trans:       .18s cubic-bezier(.4,0,.2,1);
   
     font-family: var(--font);
     color: var(--fg);
     box-sizing: border-box;
     -webkit-font-smoothing: antialiased;
   }
   #orion-designer *, #orion-designer *::before, #orion-designer *::after {
     box-sizing: inherit;
   }
   
   /* ─── Outer shell ────────────────────────────────────────────────── */
   .orion-designer {
     display: grid;
     grid-template-rows: 1fr auto;
     /*height: 640px;*/
     /*border-radius: var(--r);*/
     overflow: hidden;
     /*box-shadow: var(--shadow-lg);*/
     /*border: 1px solid var(--border);
     background: var(--bg-hud);*/
   }
   
   /* ═══════════════════════════════════════════════════════════════════
      VIEWPORT
      ═══════════════════════════════════════════════════════════════════ */
   .orion-viewport {
     position: relative;
     overflow: hidden;
     /* Transparent — Three.js canvas has alpha:true so the page background shows through */
     background: transparent;
     min-height: 0;      /* needed for grid row flex */
   }
   
   /* Three.js writes inline width/height — canvas just needs display:block */
   .orion-viewport canvas {
     display: block;
     position: relative;
     z-index: 2;
   }
   
   /* ─── Viewport top-right controls ────────────────────────────────── */
   .orion-viewport-top {
     position: absolute;
     top: 16px;
     right: 16px;
     display: flex;
     flex-direction: column;
     gap: 8px;
     z-index: 10;
   }
   
   .orion-vp-btn {
     width: 38px;
     height: 38px;
     background: rgba(255,255,255,.72);
     backdrop-filter: blur(12px);
     -webkit-backdrop-filter: blur(12px);
     border: 1px solid rgba(255,255,255,.9);
     border-radius: var(--r-sm);
     color: var(--fg);
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     padding: 9px;
     transition: background var(--trans), transform .12s;
     box-shadow: var(--shadow-sm);
   }
   .orion-vp-btn:hover  { background: rgba(255,255,255,.95); transform: scale(1.06); }
   .orion-vp-btn:active { transform: scale(.96); }
   .orion-vp-btn svg    { width: 100%; height: 100%; }
   
   /* ─── Loading overlay ────────────────────────────────────────────── */
   .orion-loading-overlay {
     position: absolute;
     inset: 0;
     background: rgba(240,238,234,.82);
     backdrop-filter: blur(6px);
     -webkit-backdrop-filter: blur(6px);
     display: flex;
     flex-direction: column;
     align-items: center;
     justify-content: center;
     gap: 16px;
     font-size: 12px;
     font-weight: 500;
     color: var(--fg-muted);
     letter-spacing: .04em;
     z-index: 30;
   }
   
   .orion-spinner {
     width: 28px;
     height: 28px;
     border: 2.5px solid rgba(17,24,39,.12);
     border-top-color: var(--fg);
     border-radius: 50%;
     animation: orion-spin .65s linear infinite;
   }
   @keyframes orion-spin { to { transform: rotate(360deg); } }
   
   /* ─── Parts overlay menu ─────────────────────────────────────────── */
   .orion-overlay {
     position: absolute;
     inset: 0;
     z-index: 50;
     display: flex;
    align-items: flex-end;
     background: rgba(30,26,22,.35);
     backdrop-filter: blur(2px);
     -webkit-backdrop-filter: blur(2px);
     animation: orion-overlay-in .2s ease;
   }
   .orion-overlay[hidden] { display: none; }
   
   @keyframes orion-overlay-in { from { opacity: 0; } to { opacity: 1; } }
   
   .orion-overlay-inner {
     width: 100%;
     background: rgba(255,255,255,.97);
     backdrop-filter: blur(20px);
     -webkit-backdrop-filter: blur(20px);
     border-radius: var(--r) var(--r) 0 0;
     border-top: 1px solid var(--border);
     animation: orion-slide-up .22s cubic-bezier(.34,1.4,.64,1);
     max-height: 70%;
     overflow: hidden;
     display: flex;
     flex-direction: column;
   }

  /* Desktop: side panel layout (matches reference screenshots more closely) */
  @media (min-width: 900px) {
    .orion-overlay {
      align-items: flex-start;
      justify-content: flex-start;
      background: rgba(30,26,22,.22);
    }
    .orion-overlay-inner {
      width: 340px;
      max-height: 100%;
      border-radius: var(--r) 0 0 var(--r);
      animation: orion-slide-left .24s cubic-bezier(.34,1.4,.64,1);
    }
    @keyframes orion-slide-left {
      from { transform: translateX(-18px); opacity: 0; }
      to   { transform: none; opacity: 1; }
    }
    .orion-overlay-header { padding: 18px 18px 14px; }
    .orion-overlay-list { padding: 6px 0 14px; }
    .orion-overlay-item { padding: 12px 18px; }
  }
   @keyframes orion-slide-up { from { transform: translateY(24px); opacity: 0; } to { transform: none; opacity: 1; } }
   
   .orion-overlay-header {
     display: flex;
     align-items: center;
     justify-content: space-between;
     padding: 18px 24px 14px;
     border-bottom: 1px solid var(--border);
     flex-shrink: 0;
   }
   
   .orion-overlay-title {
     font-family: var(--font-display);
     font-size: 13px;
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: .08em;
     color: var(--fg-muted);
   }
   
   .orion-overlay-close {
     width: 32px;
     height: 32px;
     background: none;
     border: 1px solid var(--border);
     border-radius: 50%;
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     padding: 7px;
     color: var(--fg);
     transition: background var(--trans);
   }
   .orion-overlay-close:hover { background: rgba(0,0,0,.05); }
   .orion-overlay-close svg  { width: 100%; height: 100%; }
   
   .orion-overlay-list {
     overflow-y: auto;
     padding: 8px 0 16px;
     scrollbar-width: thin;
     scrollbar-color: rgba(0,0,0,.12) transparent;
   }
   
   .orion-overlay-item {
     display: flex;
     align-items: center;
     gap: 16px;
     width: 100%;
     padding: 14px 24px;
     background: none;
     border: none;
     cursor: pointer;
     text-align: left;
     transition: background var(--trans);
     border-bottom: 1px solid var(--border);
   }
   .orion-overlay-item:last-child { border-bottom: none; }
   .orion-overlay-item:hover  { background: rgba(0,0,0,.03); }
   .orion-overlay-item.active { background: rgba(17,24,39,.04); }
   
   .orion-overlay-num {
     font-family: var(--font-display);
     font-size: 11px;
     font-weight: 700;
     color: var(--fg-faint);
     letter-spacing: .06em;
     min-width: 22px;
   }
   
   .orion-overlay-label {
     flex: 1;
     font-size: 14px;
     font-weight: 500;
     color: var(--fg);
   }
   .orion-overlay-item.active .orion-overlay-label { font-weight: 700; }
   
   .orion-overlay-chevron {
     width: 16px;
     height: 16px;
     color: var(--fg-faint);
     flex-shrink: 0;
   }
   .orion-overlay-item.active .orion-overlay-chevron { color: var(--fg); }
   
   /* ═══════════════════════════════════════════════════════════════════
      HUD BAR
      ═══════════════════════════════════════════════════════════════════ */
   .orion-hud {
     display: flex;
     align-items: center;
     gap: 0;
     min-height: var(--hud-h);
     background: var(--bg-hud);
     border-top: 1px solid var(--border);
     padding: 0;
     position: relative;
     z-index: 20;
   }
   
   /* ─── Part navigation ────────────────────────────────────────────── */
   .orion-hud-nav {
     display: flex;
     align-items: center;
     gap: 6px;
     padding: 0 20px 0 24px;
     flex-shrink: 0;
     height: 100%;
   }
   
   .orion-nav-btn {
     width: 32px;
     height: 32px;
     background: none;
     border: 1.5px solid var(--border);
     border-radius: 50%;
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     padding: 7px;
     color: var(--fg);
     transition: border-color var(--trans), background var(--trans), transform .12s;
     flex-shrink: 0;
   }
   .orion-nav-btn:hover  { border-color: var(--fg); background: rgba(0,0,0,.04); }
   .orion-nav-btn:active { transform: scale(.92); }
   .orion-nav-btn svg    { width: 100%; height: 100%; }
   
   .orion-part-counter {
     display: flex;
     align-items: baseline;
     gap: 1px;
     min-width: 40px;
     text-align: center;
   }
   .orion-part-idx {
     font-family: var(--font-display);
     font-size: 18px;
     font-weight: 700;
     letter-spacing: -.02em;
     color: var(--fg);
     line-height: 1;
   }
   .orion-part-sep {
     font-size: 12px;
     color: var(--fg-faint);
     font-weight: 400;
   }
   
   .orion-hud-vr {
     width: 1px;
     height: 28px;
     background: var(--border);
     margin: 0 8px;
     flex-shrink: 0;
   }
   
   .orion-part-name {
     font-size: 13px;
     font-weight: 600;
     color: var(--fg);
     white-space: nowrap;
     max-width: 160px;
     overflow: hidden;
     text-overflow: ellipsis;
   }
   
   .orion-menu-btn {
     width: 34px;
     height: 34px;
     background: none;
     border: 1.5px solid var(--border);
     border-radius: var(--r-sm);
     cursor: pointer;
     display: flex;
     align-items: center;
     justify-content: center;
     padding: 8px;
     color: var(--fg);
     transition: border-color var(--trans), background var(--trans);
     flex-shrink: 0;
     margin-left: 6px;
   }
   .orion-menu-btn:hover { border-color: var(--fg); background: rgba(0,0,0,.04); }
   .orion-menu-btn svg  { width: 100%; height: 100%; }
   
   /* ─── Vertical divider between nav and options ───────────────────── */
   .orion-hud-nav + .orion-hud-options {
     border-left: 1px solid var(--border);
   }
   .orion-hud-options + .orion-hud-right {
     border-left: 1px solid var(--border);
   }
   
   /* ─── Options area ───────────────────────────────────────────────── */
   .orion-hud-options {
     flex: 1;
     padding: 0 20px;
     height: 100%;
     display: flex;
     align-items: center;
     overflow: hidden;
     min-width: 0;
   }
   
   /* Only the active part's options are shown */
   .orion-hud-part { display: none; }
   .orion-hud-part.active {
     display: flex;
     align-items: center;
     gap: 8px;
     flex-wrap: wrap;
     animation: orion-fadein .2s ease;
   }
   
   @keyframes orion-fadein { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
   
   /* ─── Color swatches ─────────────────────────────────────────────── */
   .orion-swatches, .orion-swatches-wrap {
     display: flex;
     /* flex-wrap: wrap; */
     gap: 8px;
     align-items: center;
   }
   
   .orion-swatch, .orion-swatch-btn {
     position: relative;
     width: 28px;
     height: 28px;
     border-radius: 50%;
     border: 2.5px solid rgba(0,0,0,.10);
     cursor: pointer;
     padding: 0;
     overflow: visible;
     display: flex;
     align-items: center;
     justify-content: center;
     background: #ccc;
     flex-shrink: 0;
     transition: transform .15s cubic-bezier(.34,1.56,.64,1), box-shadow .15s;
   }
   
   .orion-swatch img,
   .orion-swatch-btn img {
     width: 100%; height: 100%;
     object-fit: cover;
     border-radius: 50%;
     display: block;
   }
   
   .orion-swatch-color {
     display: block; width: 100%; height: 100%; border-radius: 50%;
   }
   
   /* Tooltip via CSS attr() */
   .orion-swatch::after, .orion-swatch-btn::after {
     content: attr(title);
     position: absolute;
     bottom: calc(100% + 7px);
     left: 50%;
     transform: translateX(-50%) translateY(4px);
     background: var(--fg);
     color: #fff;
     font-size: 10px;
     font-weight: 500;
     white-space: nowrap;
     padding: 3px 8px;
     border-radius: 4px;
     pointer-events: none;
     opacity: 0;
     transition: opacity .15s, transform .15s;
     z-index: 100;
     font-family: var(--font);
   }
   .orion-swatch:hover::after, .orion-swatch-btn:hover::after {
     opacity: 1;
     transform: translateX(-50%) translateY(0);
   }
   
   .orion-swatch-text {
     font-size: 9px;
     font-weight: 600;
     text-transform: uppercase;
     color: var(--fg);
     padding: 2px;
     text-align: center;
     line-height: 1.1;
     pointer-events: none;
   }
   .orion-swatch-btn:has(.orion-swatch-text) {
     width: auto; border-radius: 20px; padding: 5px 11px;
     background: rgba(0,0,0,.04); border: 1.5px solid var(--border);
   }
   
   .orion-swatch:hover, .orion-swatch-btn:hover {
     transform: scale(1.18);
     box-shadow: 0 4px 12px rgba(0,0,0,.16);
   }
   .orion-swatch.active, .orion-swatch-btn.active,
   .orion-swatch:has(input:checked), .orion-swatch-btn:has(input:checked) {
     border-color: var(--fg);
     box-shadow: var(--ring);
     transform: scale(1.12);
   }
   
   /* ─── Pills / select ─────────────────────────────────────────────── */
   .orion-pills { display: flex; flex-wrap: wrap; gap: 5px; }
   
   .orion-pill {
     padding: 5px 13px;
     border-radius: 20px;
     border: 1.5px solid var(--border);
     background: transparent;
     font-size: 11px;
     font-weight: 500;
     font-family: var(--font);
     cursor: pointer;
     transition: all var(--trans);
     color: var(--fg);
   }
   .orion-pill:hover { border-color: var(--fg); background: rgba(0,0,0,.04); }
   .orion-pill.active,
   .orion-pill:has(input:checked) { background: var(--fg); border-color: var(--fg); color: #fff; }

   /* ─── Toggle ─────────────────────────────────────────────────────── */
   .orion-toggle {
     display: inline-flex;
     align-items: center;
     gap: 10px;
     cursor: pointer;
     user-select: none;
   }
   .orion-toggle input { display: none; }
   
   .orion-toggle-slider {
     position: relative;
     width: 42px; height: 23px;
     background: #d1d5db;
     border-radius: 12px;
     transition: background .2s;
     flex-shrink: 0;
   }
   .orion-toggle-slider::after {
     content: '';
     position: absolute;
     top: 3px; left: 3px;
     width: 17px; height: 17px;
     background: #fff;
     border-radius: 50%;
     transition: transform .2s cubic-bezier(.34,1.56,.64,1);
     box-shadow: 0 1px 3px rgba(0,0,0,.18);
   }
   .orion-toggle input:checked + .orion-toggle-slider { background: var(--accent); }
   .orion-toggle input:checked + .orion-toggle-slider::after { transform: translateX(19px); }
   .orion-toggle-label { font-size: 12px; font-weight: 500; }
   
   /* ─── Upload compact button ──────────────────────────────────────── */
   .orion-upload-btn {
     display: inline-flex;
     align-items: center;
     gap: 7px;
     padding: 8px 16px;
     border: 1.5px dashed var(--border);
     border-radius: var(--r-sm);
     font-size: 12px;
     font-weight: 500;
     color: var(--fg-muted);
     cursor: pointer;
     transition: border-color var(--trans), background var(--trans), color var(--trans);
     font-family: var(--font);
   }
   .orion-upload-btn:hover { border-color: var(--fg); color: var(--fg); background: rgba(0,0,0,.03); }
   .orion-upload-btn svg { width: 16px; height: 16px; flex-shrink: 0; }
   .orion-upload-input { display: none; }
   
   /* ─── HUD right (price + cart) ───────────────────────────────────── */
   .orion-hud-right {
     display: flex;
     align-items: center;
     gap: 10px;
     padding: 0 24px;
     flex-shrink: 0;
     height: 100%;
   }

  /* ─── Variation picker (Elementor/Home) ─────────────────────────── */
  .orion-var-picker { display: flex; flex-direction: column; gap: 10px; }
  .orion-var-group { display: flex; flex-direction: column; gap: 6px; }
  .orion-var-label {
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--fg-faint);
    font-weight: 700;
  }
  .orion-var-pills { display: flex; gap: 8px; flex-wrap: wrap; }
  .orion-var-pill {
    display: inline-flex;
    align-items: center;
    padding: 7px 12px;
    border-radius: 999px;
    border: 1px solid rgba(17,24,39,.18);
    background: rgba(255,255,255,.75);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: var(--fg);
    text-decoration: none;
    font-size: 12px;
    font-weight: 600;
    transition: background var(--trans), transform .12s, border-color var(--trans);
    box-shadow: 0 1px 2px rgba(0,0,0,.05);
    cursor: pointer;
  }
  .orion-var-pill:hover { background: rgba(255,255,255,.95); transform: translateY(-1px); }
  .orion-var-pill.active {
    background: rgba(17,24,39,.92);
    color: #fff;
    border-color: rgba(17,24,39,.92);
  }
   
   /* ─── Real-time price display ────────────────────────────────────── */
   .orion-price-display {
     position: relative;
   }

   .orion-price-display:empty { display: none; }

   .orion-price-total {
     font-family: var(--font-display);
     font-size: 20px;
     font-weight: 700;
     color: var(--fg);
     letter-spacing: -.04em;
     line-height: 1;
     cursor: default;
   }

   .orion-price-surcharge {
     font-size: 13px;
     font-weight: 600;
     color: var(--fg);
   }

   /* Breakdown tooltip — visible on hover / focus */
   .orion-price-breakdown {
     position: absolute;
     bottom: calc(100% + 10px);
     right: 0;
     margin: 0;
     padding: 12px 14px;
     list-style: none;
     background: var(--fg);
     color: #fff;
     border-radius: var(--r-sm);
     font-size: 11.5px;
     font-family: var(--font);
     font-weight: 400;
     min-width: 240px;
     box-shadow: 0 8px 24px rgba(0,0,0,.22);
     opacity: 0;
     pointer-events: none;
     transform: translateY(4px);
     transition: opacity .15s, transform .15s;
     z-index: 200;
   }

   .orion-price-display:hover .orion-price-breakdown,
   .orion-price-display:focus-within .orion-price-breakdown {
     opacity: 1;
     pointer-events: auto;
     transform: translateY(0);
   }

   .orion-price-breakdown li {
     display: flex;
     justify-content: space-between;
     gap: 16px;
     padding: 4px 0;
     border-bottom: 1px solid rgba(255,255,255,.1);
   }

   .orion-price-breakdown li:last-child { border-bottom: none; }

   .orion-price-breakdown .orion-price-base {
     opacity: .6;
     font-size: 11px;
   }

   .orion-price-line span:last-child {
     font-weight: 600;
     white-space: nowrap;
   }
   
   .orion-hud-actions { display: flex; gap: 8px; }
   
   /* ─── Buttons ────────────────────────────────────────────────────── */
   .orion-btn {
     display: inline-flex;
     align-items: center;
     gap: 6px;
     padding: 10px 18px;
     border-radius: var(--r-sm);
     font-size: 12px;
     font-weight: 600;
     font-family: var(--font);
     cursor: pointer;
     border: 1.5px solid transparent;
     transition: all var(--trans);
     line-height: 1;
     white-space: nowrap;
   }
   .orion-btn svg { width: 14px; height: 14px; flex-shrink: 0; }
   
   .orion-btn-primary {
     background: var(--fg);
     color: #fff;
     border-color: var(--fg);
   }
   .orion-btn-primary:hover { background: var(--accent2); border-color: var(--accent2); box-shadow: 0 4px 14px rgba(17,24,39,.22); }
   .orion-btn-primary:active { transform: scale(.98); }
   .orion-btn-primary:disabled { opacity: .4; cursor: default; box-shadow: none; }
   
   .orion-btn-ghost {
     background: transparent;
     color: var(--fg);
     border-color: var(--border);
   }
   .orion-btn-ghost:hover { border-color: var(--fg); background: rgba(0,0,0,.04); }
   
   /* ─── Notice ─────────────────────────────────────────────────────── */
   .orion-notice {
     position: absolute;
     top: 16px;
     left: 50%;
     transform: translateX(-50%);
     z-index: 60;
     padding: 10px 20px;
     border-radius: 99px;
     font-size: 12px;
     font-weight: 600;
     white-space: nowrap;
     animation: orion-notice-in .2s cubic-bezier(.34,1.4,.64,1);
     box-shadow: 0 4px 20px rgba(0,0,0,.14);
   }
   @keyframes orion-notice-in { from { opacity:0; transform: translateX(-50%) translateY(-8px); } to { opacity:1; transform: translateX(-50%) none; } }
   
   .orion-notice-success { background: #111827; color: #fff; }
   .orion-notice-error   { background: #dc2626; color: #fff; }
   .orion-notice-info    { background: #2563eb; color: #fff; }
   
   /* When notice is shown inside injected form (no .orion-viewport), keep it visible on screen */
   #orion-parts-form .orion-notice,
   body > .orion-notice {
     position: fixed;
     left: 50%;
     top: 16px;
     transform: translateX(-50%);
   }
   
   /* ─── WooCommerce native button ──────────────────────────────────── */
   .orion-btn-wc {
     /* Inherit WC theme styles while keeping our layout sizing */
     display: inline-flex !important;
     align-items: center !important;
     gap: 6px !important;
     padding: 10px 20px !important;
     font-size: 13px !important;
     font-weight: 600 !important;
     cursor: pointer !important;
     white-space: nowrap !important;
     transition: opacity .18s !important;
   }
   .orion-btn-wc:disabled { opacity: .45 !important; cursor: default !important; }
   
   /* ─── Layout templates ───────────────────────────────────────────── */
   
   /* accordion template — parts stacked vertically */
   .orion-tpl-accordion .orion-designer {
     height: auto;
     grid-template-rows: 480px auto;
   }
   .orion-tpl-accordion .orion-hud {
     flex-direction: column;
     height: auto;
     padding: 0;
   }
   .orion-tpl-accordion .orion-hud-nav   { width: 100%; border-right: none; border-bottom: 1px solid var(--border); padding: 14px 20px; }
   .orion-tpl-accordion .orion-hud-options { width: 100%; height: auto; overflow: visible; display: flex; flex-direction: column; }
   .orion-tpl-accordion .orion-hud-part {
     display: none;
     padding: 14px 20px;
     border-bottom: 1px solid var(--border);
     animation: orion-slide-in .18s ease;
   }
   .orion-tpl-accordion .orion-hud-part.active { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
   .orion-tpl-accordion .orion-hud-right { width: 100%; border-left: none; border-top: 1px solid var(--border); padding: 14px 20px; }
   @keyframes orion-slide-in { from { opacity:0; transform: translateY(-6px); } to { opacity:1; transform: none; } }
   
   /* blocks template — all parts visible at once in a grid */
   .orion-tpl-blocks .orion-designer {
     height: auto;
     grid-template-rows: 440px auto;
   }
   .orion-tpl-blocks .orion-hud {
     flex-direction: column;
     height: auto;
     padding: 16px;
     gap: 12px;
   }
   .orion-tpl-blocks .orion-hud-options {
     display: grid;
     grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
     gap: 12px;
     width: 100%;
     height: auto;
     overflow: visible;
   }
   .orion-tpl-blocks .orion-hud-part {
     display: flex !important;
     flex-direction: column;
     gap: 8px;
     padding: 12px;
     background: rgba(0,0,0,.02);
     border: 1px solid var(--border);
     border-radius: var(--r-sm);
   }
   .orion-tpl-blocks .orion-hud-nav { display: none; }
   .orion-tpl-blocks .orion-hud-right { width: 100%; border-left: none; border-top: 1px solid var(--border); padding: 12px 0 0; }
   
   /* wizard template — one part at a time with step indicators */
   .orion-tpl-wizard .orion-designer {
     height: auto;
     grid-template-rows: 480px auto;
   }
   .orion-tpl-wizard .orion-hud {
     flex-direction: column;
     height: auto;
     padding: 0;
   }
   .orion-tpl-wizard .orion-hud-nav {
     width: 100%;
     border-right: none;
     border-bottom: 1px solid var(--border);
     padding: 14px 20px;
     justify-content: space-between;
   }
   .orion-tpl-wizard .orion-hud-options {
     width: 100%;
     height: auto;
     overflow: visible;
   }
   .orion-tpl-wizard .orion-hud-part {
     display: none;
     padding: 20px;
     flex-wrap: wrap;
     gap: 10px;
     align-items: flex-start;
     animation: orion-slide-in .22s ease;
   }
   .orion-tpl-wizard .orion-hud-part.active { display: flex; }
   .orion-tpl-wizard .orion-hud-right { width: 100%; border-left: none; border-top: 1px solid var(--border); padding: 14px 20px; }
   
   /* ─── Responsive ─────────────────────────────────────────────────── */
   @media (max-width: 860px) {
     .orion-designer { height: auto; }
     .orion-viewport  { min-height: 50vw; }
     .orion-hud {
       flex-wrap: wrap;
       padding: 14px;
       gap: 12px;
       min-height: auto;
     }
     .orion-hud-nav,
     .orion-hud-options,
     .orion-hud-right {
       border: none !important;
       padding: 0;
       width: 100%;
       height: auto;
     }
     .orion-hud-right { justify-content: flex-end; }
     .orion-part-name { max-width: none; }
   }
   
   @media (max-width: 480px) {
     .orion-viewport { min-height: 260px; }
     .orion-btn { padding: 9px 14px; font-size: 11px; }
   }
   
   /* ─── Shared control primitives (HUD + injected form) ───────────
      Swatches, pills, toggles used in #orion-designer and #orion-parts-form
      ---------------------------------------------------------------- */

   /* Hidden radio/checkbox inside swatch labels — visually invisible but accessible */
   .orion-swatch-radio {
     position: absolute;
     opacity: 0;
     width: 0;
     height: 0;
     pointer-events: none;
   }

   .orion-swatches { display: flex; flex-wrap: wrap; gap: 8px; }

   .orion-swatch {
     width: 32px;
     height: 32px;
     border-radius: 50%;
     border: 2px solid rgba(0,0,0,.1);
     cursor: pointer;
     padding: 0;
     transition: transform .15s, box-shadow .15s;
     overflow: hidden;
     display: flex;
     align-items: center;
     justify-content: center;
     position: relative;
   }
   .orion-swatch img { width:100%;height:100%;object-fit:cover;border-radius:50%; }
   .orion-swatch:hover { transform: scale(1.12); box-shadow: 0 0 0 3px rgba(17,24,39,.2); }
   .orion-swatch.active,
   .orion-swatch:has(input:checked) {
     box-shadow: 0 0 0 3px rgba(17,24,39,.25);
     border-color: #111827;
     transform: scale(1.08);
   }
   .orion-swatch-text {
     font-size: 9px;
     font-weight: 600;
     mix-blend-mode: multiply;
     text-align: center;
     pointer-events: none;
     padding: 2px;
     line-height: 1.1;
   }
   /* WC swatches with text only — auto-expand to pill shape */
   .orion-wc-swatch:not(:has(img)):not([style*="background"]) {
     width: auto;
     border-radius: 20px;
     padding: 6px 12px;
     background: #f3f4f6;
     border: 1.5px solid #e5e7eb;
     color: #111827;
     font-size: 12px;
   }
   .orion-wc-swatch:not(:has(img)):not([style*="background"]).active {
     background: #111827;
     color: #fff;
     border-color: #111827;
   }
   .orion-no-attr { font-size: 12px; color: #9ca3af; margin: 0; }
   
   /* Pills */
   .orion-pills { display: flex; flex-wrap: wrap; gap: 6px; }
   .orion-pill {
     padding: 7px 14px;
     border-radius: 20px;
     border: 1.5px solid #e5e7eb;
     background: transparent;
     font-size: 12px;
     font-weight: 500;
     cursor: pointer;
     transition: all .15s;
     color: #111827;
   }
   .orion-pill:hover { border-color: #111827; }
   .orion-pill.active,
   .orion-pill:has(input:checked) { background: #111827; border-color: #111827; color: #fff; }

   /* Toggle */
   .orion-toggle-wrap {
     display: inline-flex;
     align-items: center;
     gap: 10px;
     cursor: pointer;
     user-select: none;
   }
   .orion-toggle {
     position: relative;
     display: inline-flex;
     align-items: center;
     flex-shrink: 0;
   }
   .orion-toggle-input { position: absolute; opacity: 0; width: 0; height: 0; }
   .orion-toggle-track {
     width: 44px;
     height: 24px;
     background: #d1d5db;
     border-radius: 12px;
     transition: background .2s;
   }
   .orion-toggle-thumb {
     position: absolute;
     left: 3px;
     width: 18px;
     height: 18px;
     background: #fff;
     border-radius: 50%;
     box-shadow: 0 1px 3px rgba(0,0,0,.2);
     transition: transform .2s;
   }
   .orion-toggle-input:checked ~ .orion-toggle-track { background: #111827; }
   .orion-toggle-input:checked ~ .orion-toggle-thumb { transform: translateX(20px); }
   .orion-toggle-text { font-size: 13px; font-weight: 500; }
   
   /* Upload */
   .orion-upload-label {
     display: inline-flex;
     align-items: center;
     gap: 10px;
     cursor: pointer;
   }
   .orion-upload-input { display: none; }
   .orion-upload-btn {
     display: inline-flex;
     align-items: center;
     gap: 6px;
     padding: 8px 14px;
     background: #f3f4f6;
     border: 1.5px solid #e5e7eb;
     border-radius: 6px;
     font-size: 12px;
     font-weight: 600;
     transition: background .15s;
   }
   .orion-upload-label:hover .orion-upload-btn { background: #e5e7eb; }
   .orion-upload-name { font-size: 11px; color: #9ca3af; }
   
   /* Number */
   .orion-number-input {
     padding: 7px 10px;
     border: 1.5px solid #e5e7eb;
     border-radius: 6px;
     font-size: 13px;
     width: 120px;
   }
   
   /* Canvas standalone wrapper */
   .orion-canvas-standalone, .orion-gallery-wrapper {
     width: 100%;
     position: relative;
   }
   .orion-canvas-standalone canvas { display: block; width: 100% !important; }
   
   .orion-canvas-controls {
     position: absolute;
     top: 12px;
     right: 12px;
     display: flex;
     flex-direction: column;
     gap: 6px;
     z-index: 10;
   }
   
   /* ─── Sub-controls (multiple controls per part) ────────────────── */
   .orion-ctrl-field > .orion-ctrl-label {
     display: block;
     font-size: 10px;
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: .07em;
     color: #9ca3af;
     margin: 0 0 4px;
   }
   
   /* ─── Image swatches (type=image) ──────────────────────────────── */
   .orion-img-swatches { gap: 8px; }
   
   .orion-img-swatch {
     width: 44px;
     height: 44px;
     border-radius: 6px;
     padding: 0;
     overflow: hidden;
     border: 2px solid transparent;
     cursor: pointer;
     transition: transform .15s, border-color .15s, box-shadow .15s;
     background: #1a1a1a;
   }
   .orion-img-swatch img {
     width: 100%;
     height: 100%;
     object-fit: cover;
     display: block;
     pointer-events: none;
   }
   .orion-img-swatch:hover { transform: scale(1.1); }
   .orion-img-swatch.active,
   .orion-img-swatch:has(input:checked) {
     border-color: var(--orion-fg, #111827);
     box-shadow: 0 0 0 2px rgba(17,24,39,.25);
   }

   /* ─── WC swatch with text only (auto-pill) ─────────────────────── */
   .orion-swatch-btn:has(.orion-swatch-text) {
     width: auto;
     border-radius: 20px;
     padding: 6px 13px;
     background: rgba(255,255,255,.08);
     font-size: 12px;
     font-weight: 500;
     color: #fff;
   }
   .orion-swatch-btn:has(.orion-swatch-text).active,
   .orion-swatch-btn:has(.orion-swatch-text):has(input:checked) {
     background: rgba(255,255,255,.25);
     box-shadow: 0 0 0 2px rgba(255,255,255,.4);
   }
   
   /* ═══════════════════════════════════════════════════════════════════
      Frontend injected form (#orion-parts-form)
      Renders at "Before/After Add to Cart" WC hook positions.
      Must be block-level, full-width, theme-agnostic.
   ═══════════════════════════════════════════════════════════════════ */
   #orion-parts-form {
     --orion-fg:          #111827;
     --orion-fg2:         #374151;
     --orion-muted:       #6b7280;
     --orion-border:      #e5e7eb;
     --orion-bg-soft:     #f9fafb;
     --orion-accent:      #111827;
     --orion-accent-ring: rgba(17,24,39,.2);
     --orion-radius:      8px;
   
     display: block !important;
     clear: both;
     width: 100%;
     visibility: visible;
     font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
     font-size: 14px;
     line-height: 1.5;
     color: var(--orion-fg);
     margin: 20px 0 8px;
     padding: 20px;
     box-sizing: border-box;
     background: var(--orion-bg-soft);
     border: 1px solid var(--orion-border);
     border-radius: var(--orion-radius);
   }
   
   /* When inside WC form.cart (before/after add to cart button) avoid flex squashing */
   .woocommerce form.cart #orion-parts-form,
   .woocommerce div.product form.cart #orion-parts-form {
     flex: 1 1 100%;
     min-width: 0;
     max-width: none;
   }
   /* Elementor widget: inherit block layout from parent rule */
   
   /* ── Tabs ── */
   .orion-form-tabs {
     display: flex;
     flex-wrap: wrap;
     gap: 4px;
     border-bottom: 2px solid var(--orion-border);
     margin-bottom: 18px;
     padding-bottom: 0;
   }
   .orion-form-tab {
     display: inline-block;
     padding: 6px 14px;
     border-bottom: 2px solid transparent;
     margin-bottom: -2px;
     font-size: 12px;
     font-weight: 600;
     text-transform: uppercase;
     letter-spacing: .05em;
     cursor: pointer;
     color: var(--orion-muted);
     text-decoration: none;
     transition: color .15s, border-color .15s;
     flex-basis: auto;
   }
   .orion-form-tab:hover,
   .orion-form-tab:focus {
     color: var(--orion-fg2);
     text-decoration: none;
     outline: none;
   }
   .orion-form-tab.active {
     color: var(--orion-fg);
     border-bottom-color: var(--orion-fg);
   }
   
   /* ── Parts ── */
   .orion-form-parts {display: flex;flex-direction: column;gap: 0;}
   .orion-form-part  { display: none; }
   .orion-form-part.active { display: block; }
   .orion-part-heading {
     font-size: 10px;
     font-weight: 700;
     text-transform: uppercase;
     letter-spacing: .08em;
     color: var(--orion-muted);
     margin: 0 0 12px;
   }
   /* Multiple controls stacked with separator */
   .orion-part-controls {
     display: flex;
     flex-direction: column;
     gap: 16px;
   }
   
   /* ── Control label (grouped with input in .orion-ctrl-field) ── */
   #orion-parts-form .orion-ctrl-field > .orion-ctrl-label {
     font-size: 11px;
     font-weight: 600;
     text-transform: uppercase;
     letter-spacing: .07em;
     color: var(--orion-muted);
     margin: 0 0 8px;
   }
   #orion-parts-form .orion-ctrl-field {
     display: flex;
     flex-direction: column;
     gap: 6px;
   }
   
   /* ── Color swatches ── */
   #orion-parts-form .orion-swatches {
     gap: 10px;
   }
   #orion-parts-form .orion-swatch {
     width: 36px;
     height: 36px;
     border: 2px solid rgba(0,0,0,.08);
     box-shadow: 0 1px 3px rgba(0,0,0,.1);
     flex-basis: auto;
   }
   #orion-parts-form .orion-swatch:hover {
     transform: scale(1.15);
     box-shadow: 0 2px 8px rgba(0,0,0,.2);
   }
   #orion-parts-form .orion-swatch.active,
   #orion-parts-form .orion-swatch:has(input:checked) {
     box-shadow: 0 0 0 3px var(--orion-accent-ring);
     border-color: var(--orion-accent);
     transform: scale(1.08);
   }

   /* ── Image swatches ── */
   #orion-parts-form .orion-img-swatch {
     width: 52px;
     height: 52px;
     border-radius: 6px;
     border: 2px solid var(--orion-border);
     box-shadow: 0 1px 3px rgba(0,0,0,.08);
   }
   #orion-parts-form .orion-img-swatch.active,
   #orion-parts-form .orion-img-swatch:has(input:checked) {
     border-color: var(--orion-accent);
     box-shadow: 0 0 0 3px var(--orion-accent-ring);
   }

   /* ── WC text-only swatches → pill shape ── */
   #orion-parts-form .orion-swatch-btn,
   #orion-parts-form .orion-wc-swatch:not(:has(img)):not([style*="background"]) {
     width: auto;
     border-radius: 20px;
     padding: 5px 13px;
     border: 1.5px solid var(--orion-border);
     background: #fff;
     color: var(--orion-fg);
     font-size: 12px;
     font-weight: 500;
   }
   #orion-parts-form .orion-swatch-btn.active,
   #orion-parts-form .orion-swatch-btn:has(input:checked),
   #orion-parts-form .orion-wc-swatch:not(:has(img)):not([style*="background"]).active,
   #orion-parts-form .orion-wc-swatch:not(:has(img)):not([style*="background"]):has(input:checked) {
     background: var(--orion-accent);
     color: #fff;
     border-color: var(--orion-accent);
   }

   /* ── Pills ── */
   #orion-parts-form .orion-pill {
     padding: 6px 14px;
     border-color: var(--orion-border);
     color: var(--orion-fg);
     background: #fff;
     font-size: 13px;
   }
   #orion-parts-form .orion-pill:hover { border-color: var(--orion-fg2); }
   #orion-parts-form .orion-pill.active,
   #orion-parts-form .orion-pill:has(input:checked) {
     background: var(--orion-accent);
     border-color: var(--orion-accent);
     color: #fff;
   }
   
   /* ── Toggle ── */
   #orion-parts-form .orion-toggle-track { background: #d1d5db; }
   #orion-parts-form .orion-toggle-input:checked ~ .orion-toggle-track { background: var(--orion-accent); }
   #orion-parts-form .orion-toggle-text { color: var(--orion-fg2); font-size: 13px; }
   
   /* ── Upload button ── */
   #orion-parts-form .orion-upload-btn {
     background: #fff;
     border: 1.5px solid var(--orion-border);
     color: var(--orion-fg);
     border-radius: 6px;
     cursor: pointer;
   }
   #orion-parts-form .orion-upload-btn:hover { border-color: var(--orion-fg); }
   
   /* ── Notice (fixed in viewport if inside form) ── */
   #orion-parts-form .orion-notice,
   body > .orion-notice {
     position: fixed;
     left: 50%;
     top: 16px;
     transform: translateX(-50%);
     z-index: 99999;
   }
   
   /* ── Canvas gallery replacement wrapper ── */
   .orion-gallery-replacement {
     position: relative;
     overflow: hidden;
     border-radius: 6px;
   }
   .orion-gallery-replacement .orion-canvas-wrap { display: block; }
   
/* ─── Orion 2D Fabric Editor ────────────────────────────────────── */
.orion-2d-toolbar {
  display: flex;
  flex-direction: column;
  gap: 6px;
  background: #1e1e1e;
  border-bottom: 1px solid #333;
  padding: 8px 12px;
  flex-shrink: 0;
}

.o2d-tools {
  display: flex;
  align-items: center;
  gap: 3px;
  flex-wrap: wrap;
}

.o2d-tool, .o2d-act {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 5px;
  cursor: pointer;
  color: #a1a1aa;
  font-size: 13px;
  transition: background .12s, color .12s, border-color .12s;
  flex-shrink: 0;
  padding: 0;
}
.o2d-act { width: auto; padding: 0 8px; font-size: 13px; }
.o2d-tool svg { width: 16px; height: 16px; pointer-events: none; }
.o2d-tool:hover, .o2d-act:hover { background: rgba(255,255,255,.1); color: #fff; }
.o2d-tool.active { background: rgba(99,102,241,.3); border-color: #6366f1; color: #a5b4fc; }

.o2d-sep {
  width: 1px;
  height: 22px;
  background: #333;
  margin: 0 4px;
  flex-shrink: 0;
}

/* Properties panel */
.o2d-props {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 6px 0 2px;
  border-top: 1px solid #2a2a2a;
  margin-top: 4px;
}

.o2d-prop-label {
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .06em;
  color: #71717a;
  flex-shrink: 0;
}

.o2d-color-input {
  width: 28px;
  height: 28px;
  padding: 2px;
  border: 1px solid #444;
  border-radius: 4px;
  cursor: pointer;
  background: #111;
  flex-shrink: 0;
}

.o2d-num-input {
  background: #111;
  border: 1px solid #444;
  border-radius: 4px;
  color: #e4e4e7;
  padding: 3px 5px;
  font-size: 12px;
  width: 52px;
}

.o2d-select {
  background: #111;
  border: 1px solid #444;
  border-radius: 4px;
  color: #e4e4e7;
  padding: 3px 5px;
  font-size: 12px;
  max-width: 140px;
}

.o2d-btn-sm {
  height: 26px;
  padding: 0 7px;
  background: #222;
  border: 1px solid #444;
  border-radius: 4px;
  color: #a1a1aa;
  cursor: pointer;
  font-size: 12px;
  transition: background .12s, color .12s;
}
.o2d-btn-sm:hover, .o2d-btn-sm.active { background: rgba(99,102,241,.3); border-color: #6366f1; color: #a5b4fc; }

.o2d-fmt { font-size: 13px; font-weight: 700; min-width: 26px; }

.o2d-align-btns { display: inline-flex; gap: 2px; }
.o2d-small-val  { font-size: 10px; color: #71717a; min-width: 32px; }

/* Canvas wrapper inside the designer */
.orion-2d-canvas-wrap {
  flex: 1;
  min-height: 0;
  position: relative;
  overflow: hidden;
}
.orion-2d-canvas-wrap canvas {
  display: block;
}

/* When 2D mode is active, make the viewport flex-column */
#orion-designer.orion-2d-active .orion-viewport {
  display: flex;
  flex-direction: column;
}

/* Loading spinner inside 2D wrap */
.orion-2d-canvas-wrap .orion-loading-overlay {
  background: rgba(240,240,240,.8);
  color: #374151;
}

/* ─── Frontend Form Layout Variants ────────────────────────────── */

/* Accordion */
.orion-form-layout-accordion .orion-form-parts { gap: 0; }
.orion-accordion-header {
  width: 100%; text-align: left;
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px;
  background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 6px;
  font-size: 13px; font-weight: 600; color: #111827;
  cursor: pointer; transition: background .15s;
}
.orion-accordion-header:hover { background: #f1f5f9; }
.orion-accordion-header.open  { border-radius: 6px 6px 0 0; border-bottom-color: transparent; }
.orion-accordion-arrow { font-size: 14px; transition: transform .2s; }
.orion-accordion-header.open .orion-accordion-arrow { transform: rotate(180deg); }
.orion-accordion-body {
  border: 1px solid #e5e7eb; border-top: none;
  border-radius: 0 0 6px 6px;
  padding: 12px 14px;
}
.orion-accordion-part { margin-bottom: 8px; }
/* Accordion: parts always shown (accordion controls visibility) */
.orion-form-layout-accordion .orion-form-part { display: block; }

/* Blocks — all parts shown at once in a flex wrap */
.orion-form-layout-blocks .orion-form-tabs { display: none; }
.orion-form-layout-blocks .orion-form-parts {
  display: flex; flex-wrap: wrap; gap: 16px;
}
.orion-form-layout-blocks .orion-form-part {
  display: flex; flex-direction: column;
  flex: 1 1 180px; min-width: 140px;
  background: #f8fafc; border: 1px solid #e5e7eb;
  border-radius: 8px; padding: 12px;
}

/* Wizard */
.orion-wizard-steps {
  display: flex; align-items: center; gap: 0;
  margin-bottom: 20px; overflow: hidden; border-radius: 8px;
  border: 1px solid #e5e7eb;
}
.orion-wizard-step {
  flex: 1; display: flex; align-items: center; gap: 8px;
  padding: 10px 14px; background: #f8fafc;
  border-right: 1px solid #e5e7eb; font-size: 12px; color: #6b7280;
  transition: background .15s;
}
.orion-wizard-step:last-child { border-right: none; }
.orion-wizard-step.active { background: #111827; color: #fff; }
.orion-wizard-num {
  width: 22px; height: 22px; border-radius: 50%;
  background: currentColor; color: inherit;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700; flex-shrink: 0;
}
.orion-wizard-step.active .orion-wizard-num { background: rgba(255,255,255,.25); }
.orion-wizard-step .orion-wizard-label { font-weight: 500; }

.orion-wizard-nav {
  display: flex; justify-content: space-between;
  margin-top: 14px; padding-top: 12px;
  border-top: 1px solid #e5e7eb;
}
.orion-wizard-prev, .orion-wizard-next {
  padding: 9px 18px; border-radius: 6px; font-size: 13px;
  font-weight: 600; cursor: pointer; border: 1.5px solid #e5e7eb;
  background: transparent; transition: all .15s;
}
.orion-wizard-prev:disabled { opacity: .4; cursor: default; }
.orion-wizard-prev:not(:disabled):hover { border-color: #111827; }
.orion-wizard-next {
  background: #111827; color: #fff; border-color: #111827;
}
.orion-wizard-next:hover { background: #374151; }
.orion-wizard-next.finish { background: #16a34a; border-color: #16a34a; }

/* ─── Fabric cascade: select then color ────────────────────────── */
/* The fabric type pills sit above the filtered color swatches */
.orion-hud-part .orion-ctrl-field > .orion-ctrl-label {
  display: block;
  font-size: 9px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .08em;
  color: rgba(255,255,255,.45);
  margin: 0 0 4px;
}
.orion-hud-part > .orion-ctrl-field:first-child > .orion-ctrl-label { margin-top: 0; }

/* Fabric pills in HUD — slightly more compact */
.orion-hud-part .orion-pill {
  font-size: 10px;
  padding: 4px 9px;
  border-radius: 12px;
}

/* Color swatches hidden by fabric filter */
.orion-swatch[style*="display:none"] { display: none !important; }

/* Transition when swatches appear/disappear */
.orion-swatches .orion-swatch { transition: opacity .15s, transform .15s; }

/* ═══════════════════════════════════════════════════════════════════
   HUD flow — mockups 06 / 07 / 08 (pack step, wizard bar, dual rails)
   ═══════════════════════════════════════════════════════════════════ */

.orion-tpl-hud .orion-hud-part .orion-ctrl-field > .orion-ctrl-label {
  color: var(--fg-faint);
}

.orion-hud-stack {
  display: flex;
  flex-direction: column;
  flex: 0 0 auto;
  background: var(--bg-hud);
}

/* ─── Step 1: variation / pack (06) ─────────────────────────────── */
.orion-pack-step {
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 6;
  padding: 0px 16px 36px;
  background: linear-gradient(to top, rgba(255,255,255,.96) 0%, rgba(255,255,255,.78) 45%, transparent 100%);
  pointer-events: none;
  margin-top: -62px;
}
.orion-pack-step-inner {
  pointer-events: auto;
  max-width: 920px;
  margin: 0 auto;
  text-align: center;
}
.orion-pack-maker-title {
  font-family: 'Plus Jakarta Sans';
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  margin: 0 0 20px;
  color: var(--fg);
}
.orion-pack-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-bottom: 18px;
}
.orion-pack-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 140px;
  max-width: 200px;
  padding: 10px 10px;
  border-radius: 18px;
  border: 1.5px solid rgba(17,24,39,.12);
  background: rgba(255,255,255,.92);
  color: var(--fg);
  text-decoration: none;
  font-size: 13px;
  font-weight: 700;
  box-shadow: 0 2px 10px rgba(0,0,0,.06);
  transition: border-color var(--trans), transform .15s, background var(--trans), box-shadow var(--trans);
  cursor: pointer;
}
.orion-pack-card:hover {
  border-color: rgba(17,24,39,.35);
  transform: translateY(-2px);
  box-shadow: 0 8px 24px rgba(0,0,0,.1);
}
.orion-pack-card.active {
  border-color: rgba(120, 150, 90, 0.85);
  background: rgba(210, 220, 185, 0.55);
  box-shadow: 0 4px 18px rgba(120, 150, 90, 0.25);
}
.orion-pack-card-title { display: block; line-height: 1.25; }
.orion-pack-card-sub {
  display: block;
  margin-top: 6px;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--fg-muted);
}
.orion-pack-continue {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 10px 22px;
  border-radius: 999px;
  border: 1.5px solid var(--fg);
  background: var(--fg);
  color: #fff;
  font-size: 13px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: opacity var(--trans), transform .12s;
}
.orion-pack-continue:hover { opacity: 0.92; transform: translateY(-1px); }
.orion-pack-continue .bi { font-size: 1.25rem; line-height: 0; }

/* ─── Dual part rails (08) ──────────────────────────────────────── */
.orion-parts-dual {
  position: absolute;
  inset: 0;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 16px 6px 96px;
  z-index: 4;
  pointer-events: none;
}
.orion-parts-col {
  pointer-events: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-width: 132px;
}
.orion-part-link {
  display: block;
  padding: 6px 8px;
  border-radius: 8px;
  font-size: 11px;
  font-weight: 500;
  color: var(--fg-muted);
  text-decoration: none;
  text-align: left;
  line-height: 1.25;
  transition: color var(--trans), background var(--trans);
  cursor: pointer;
  border: none;
  background: rgba(255,255,255,.55);
  backdrop-filter: blur(8px);
}
.orion-part-link:hover { color: var(--fg); background: rgba(255,255,255,.85); }
.orion-part-link.active {
  color: var(--fg);
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  background: rgba(255,255,255,.9);
}
.orion-part-link-num { opacity: 0.55; margin-right: 4px; }

@media (max-width: 720px) {
  .orion-parts-dual { display: none; }
}

/* ─── Fabric <select> (08) ──────────────────────────────────────── */
.orion-select-wrap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-start;
}
.orion-ctrl-select {
 /* min-width: 200px;*/
  max-width: min(380px, 92vw);
  padding: 10px 38px 10px 16px;
  border-radius: 999px;
  border: 1.5px solid rgba(17,24,39,.12);
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%236b7280' d='M3 4.5L6 8l3-3.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  font-family: var(--font);
  font-size: 13px;
  font-weight: 500;
  color: var(--fg);
  appearance: none;
  cursor: pointer;
  box-shadow: 0 1px 3px rgba(0,0,0,.05);
}
.orion-ctrl-select:focus {
  outline: none;
  border-color: rgba(17,24,39,.35);
  box-shadow: var(--ring);
}

/* ─── Wizard bar (07) ─────────────────────────────────────────────── */
.orion-wizard-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 12px 20px;
  background: #2b2f36;
  color: #f9fafb;
  border-top: 1px solid rgba(255,255,255,.08);
}
.orion-wizard-back,
.orion-wizard-next {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.25);
  color: #f9fafb;
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  background: transparent;
  transition: background var(--trans), border-color var(--trans);
}
.orion-wizard-back:hover,
.orion-wizard-next:hover {
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.4);
}
.orion-wizard-step-title {
  flex: 1;
  text-align: center;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: rgba(249,250,251,.85);
  min-width: 120px;
}
.orion-wizard-track {
  display: none;
  align-items: center;
  gap: 4px;
}
@media (min-width: 900px) {
  .orion-wizard-track { display: flex; }
}
.orion-wizard-dot {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,.08);
  color: rgba(255,255,255,.45);
  transition: background var(--trans), color var(--trans), transform .15s;
}
.orion-wizard-dot .bi { font-size: 1rem; }
.orion-wizard-dot.active {
  background: rgba(255,255,255,.95);
  color: #1f2937;
  transform: scale(1.06);
}
.orion-wizard-connector {
  width: 18px;
  height: 2px;
  background: rgba(255,255,255,.2);
  border-radius: 1px;
}
.orion-wizard-bar .orion-btn-wc {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  border-radius: 999px;
  border: 1.5px solid rgba(255,255,255,.85) !important;
  background: transparent !important;
  color: #fff !important;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.orion-wizard-bar .orion-btn-wc:hover {
  background: rgba(255,255,255,.12) !important;
}

/* Bootstrap Icons sizing in HUD / viewport */
.orion-vp-btn .bi,
.orion-nav-btn .bi,
.orion-menu-btn .bi,
.orion-overlay-close .bi {
  font-size: 1.1rem;
  line-height: 1;
}
.orion-btn .bi { font-size: 1rem; }

/* In HUD flow, controls sit in a responsive grid (label+input grouped per .orion-ctrl-field) */
.orion-tpl-hud .orion-hud-part.active {
  /*display: grid;*/
  grid-template-columns: repeat(auto-fill, minmax(132px, 1fr));
  align-items: start;
  justify-content: start;
  justify-items: stretch;
  gap: 12px 14px;
  flex-wrap: unset;
}

.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field .orion-ctrl-body {
  min-width: 0;
  width: 100%;
}

/* Wide controls span the full row */
.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field[data-ctrl-type="color"],
.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field[data-ctrl-type="image"],
.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field[data-ctrl-type="wc_attribute"],
.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field[data-ctrl-type="wc_global_attribute"],
.orion-tpl-hud .orion-hud-part.active > .orion-ctrl-field[data-ctrl-type="image_upload"] {
  /* grid-column: 1 / -1; */
}

.orion-tpl-hud .orion-hud-options {
  /*align-items: flex-start;*/
  padding-top: 10px;
  padding-bottom: 10px;
}
