/*
================================================
Space Vanta Theme 1.0

Module:
On-Demand / Space 02 / Selected Viewport

Version:
ON-DEMAND-SELECTED-VIEWPORT-V007

Purpose:
Unified visual system for the single persistent Details /
Customize viewport.

Architecture:
Field -> Viewport Controller -> Single Viewport -> Details / Customize

Important:
- V005 Product JSON decoding remains supported.
- Viewport content scrolls independently.
- Body scroll is locked while the viewport is open.
- Do not add a second viewport wrapper.
================================================
*/

.sv-on-demand-selected-viewport[hidden] {
  display: none !important;
}

.sv-on-demand-selected-viewport {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: grid;
  place-items: center;
  padding: 24px;
}

.sv-on-demand-selected-viewport__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(20, 27, 34, .34);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
}

.sv-on-demand-selected-viewport__shell {
  position: relative;
  z-index: 2;
  width: min(1180px, 100%);
  height: min(820px, calc(100svh - 48px));
  max-height: calc(100svh - 48px);
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  isolation: isolate;
  border: 1px solid rgba(72, 88, 103, .22);
  background:
    radial-gradient(circle at 12% 12%, rgba(181, 205, 220, .16), transparent 30%),
    rgba(242, 245, 247, .98);
  box-shadow:
    0 40px 120px rgba(18, 24, 31, .24),
    inset 0 1px rgba(255, 255, 255, .82);
}

.sv-on-demand-selected-viewport__shell:focus {
  outline: none;
}

.sv-on-demand-selected-viewport__shell::before {
  content: "SPACE 02 / SELECTED";
  position: absolute;
  left: 24px;
  bottom: 14px;
  z-index: 5;
  pointer-events: none;
  font-size: 7px;
  letter-spacing: .20em;
  color: rgba(62, 76, 90, .32);
}

.sv-on-demand-selected-viewport__backdrop {
  cursor: default;
}

.sv-on-demand-selected-viewport__close {
  position: absolute;
  top: 14px;
  right: 14px;
  z-index: 20;
  width: 38px;
  height: 38px;
  border: 1px solid rgba(68, 84, 100, .20);
  background: rgba(255, 255, 255, .50);
  cursor: pointer;
}

.sv-on-demand-selected-viewport__close span {
  position: absolute;
  left: 9px;
  top: 18px;
  width: 18px;
  height: 1px;
  background: rgba(46, 58, 70, .72);
}

.sv-on-demand-selected-viewport__close span:first-child {
  transform: rotate(45deg);
}

.sv-on-demand-selected-viewport__close span:last-child {
  transform: rotate(-45deg);
}

.sv-on-demand-selected-viewport__mode {
  position: absolute;
  top: 18px;
  left: 24px;
  z-index: 15;
  display: inline-flex;
  gap: 3px;
  padding: 3px;
  border: 1px solid rgba(69, 86, 102, .14);
  background: rgba(255, 255, 255, .36);
  box-shadow: 0 8px 26px rgba(35, 48, 60, .06);
}

.sv-on-demand-selected-viewport__mode-button {
  min-height: 30px;
  padding: 0 12px;
  border: 0;
  background: transparent;
  color: rgba(62, 75, 88, .46);
  font: inherit;
  font-size: 8px;
  letter-spacing: .15em;
  cursor: pointer;
}

.sv-on-demand-selected-viewport__mode-button.is-active {
  background: rgba(213, 224, 233, .72);
  color: rgba(43, 66, 82, .88);
}

.sv-on-demand-selected-panel[hidden] {
  display: none !important;
}

.sv-on-demand-selected-panel {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, .92fr) minmax(420px, 1.08fr);
  height: 100%;
  overflow: hidden;
}

.sv-on-demand-selected-panel__media-column {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  padding: 70px 44px 32px;
  border-right: 1px solid rgba(82, 98, 113, .14);
  background:
    radial-gradient(circle at 76% 24%, rgba(119, 157, 182, .18), transparent 31%),
    radial-gradient(circle at 18% 82%, rgba(183, 194, 202, .20), transparent 28%),
    linear-gradient(135deg, rgba(255, 255, 255, .74), rgba(218, 224, 229, .46));
}

.sv-on-demand-selected-panel__grid {
  position: absolute;
  inset: 0;
  opacity: .8;
  background-image:
    linear-gradient(rgba(75, 91, 107, .045) 1px, transparent 1px),
    linear-gradient(90deg, rgba(75, 91, 107, .045) 1px, transparent 1px);
  background-size: 42px 42px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, .85), transparent);
}

.sv-on-demand-selected-panel__signal,
.sv-on-demand-selected-panel__media,
.sv-on-demand-selected-panel__media-meta {
  position: relative;
  z-index: 2;
}

.sv-on-demand-selected-panel__signal {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 8px;
  letter-spacing: .17em;
  color: rgba(62, 76, 90, .46);
}

.sv-on-demand-selected-panel__signal i {
  width: 7px;
  height: 7px;
  border: 1px solid rgba(69, 106, 132, .56);
  border-radius: 50%;
  box-shadow: 0 0 0 7px rgba(95, 137, 167, .06);
}

.sv-on-demand-selected-panel__media {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 0;
  flex: 1 1 auto;
  margin: 24px 0;
}

.sv-on-demand-selected-panel__media::after {
  content: "";
  width: min(52%, 250px);
  height: 1px;
  position: absolute;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  background: linear-gradient(90deg, transparent, rgba(67, 99, 120, .26), transparent);
}

.sv-on-demand-selected-panel__media img {
  display: block;
  width: min(84%, 440px);
  max-height: min(58vh, 410px);
  object-fit: contain;
  filter: drop-shadow(0 24px 30px rgba(35, 44, 54, .12));
}

.sv-on-demand-selected-panel__media-meta {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  font-size: 8px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(65, 79, 92, .46);
}

.sv-on-demand-selected-panel__content {
  min-width: 0;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 82px 52px 56px;
  scrollbar-width: thin;
  scrollbar-color: rgba(73, 93, 108, .28) transparent;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}

.sv-on-demand-selected-panel__content::-webkit-scrollbar {
  width: 5px;
}

.sv-on-demand-selected-panel__content::-webkit-scrollbar-thumb {
  background: rgba(73, 93, 108, .24);
}

.sv-on-demand-selected-panel__eyebrow {
  margin: 0;
  font-size: 9px;
  letter-spacing: .18em;
  color: rgba(68, 78, 90, .48);
}

.sv-on-demand-selected-panel__title {
  margin: 10px 0 10px;
  max-width: 650px;
  font-size: clamp(28px, 4vw, 50px);
  line-height: .98;
  letter-spacing: -.045em;
  font-weight: 500;
}

.sv-on-demand-selected-panel__price {
  margin: 0 0 28px;
  font-size: 13px;
  color: rgba(42, 54, 66, .76);
}

.sv-on-demand-selected-panel__description,
.sv-on-demand-selected-panel__intro {
  max-width: 650px;
  margin: 0;
  font-size: 13px;
  line-height: 1.75;
  color: rgba(60, 70, 80, .62);
}

.sv-on-demand-selected-panel__description p:first-child {
  margin-top: 0;
}

.sv-on-demand-selected-panel__description p:last-child {
  margin-bottom: 0;
}

.sv-on-demand-selected-panel__options {
  display: grid;
  gap: 18px;
  margin: 30px 0;
}

.sv-on-demand-selected-panel__option-label {
  display: block;
  margin-bottom: 8px;
  font-size: 8px;
  letter-spacing: .16em;
  color: rgba(68, 78, 90, .52);
}

.sv-on-demand-selected-panel__option-values {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

.sv-on-demand-selected-panel__option-value {
  padding: 9px 11px;
  border: 1px solid rgba(70, 86, 101, .18);
  background: rgba(255, 255, 255, .34);
  font: inherit;
  font-size: 9px;
  cursor: pointer;
}

.sv-on-demand-selected-panel__option-value.is-selected {
  border-color: rgba(54, 86, 107, .46);
  background: rgba(210, 222, 231, .72);
}

.sv-on-demand-selected-panel__status {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding: 13px 0;
  border-top: 1px solid rgba(79, 94, 109, .15);
  border-bottom: 1px solid rgba(79, 94, 109, .10);
  font-size: 8px;
  letter-spacing: .14em;
  color: rgba(68, 78, 90, .48);
}

.sv-on-demand-selected-panel__status strong {
  font-weight: 500;
  color: rgba(43, 66, 82, .78);
}

.sv-on-demand-selected-panel__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 28px;
}

.sv-on-demand-selected-panel__secondary,
.sv-on-demand-selected-panel__primary {
  min-height: 42px;
  padding: 0 15px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(68, 84, 100, .20);
  font: inherit;
  font-size: 8px;
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
}

.sv-on-demand-selected-panel__secondary {
  color: rgba(52, 67, 80, .68);
  background: rgba(255, 255, 255, .34);
}

.sv-on-demand-selected-panel__primary {
  color: rgba(255, 255, 255, .94);
  background: rgba(48, 63, 75, .88);
  min-width: min(100%, 280px);
  box-shadow: 0 10px 28px rgba(40, 54, 66, .10);
  transition: transform 220ms ease, box-shadow 220ms ease, opacity 220ms ease;
}

.sv-on-demand-selected-panel__primary:hover:not(:disabled) {
  transform: translateY(-2px);
  box-shadow: 0 14px 34px rgba(40, 54, 66, .14);
}

.sv-on-demand-selected-panel__primary:disabled {
  opacity: .42;
  cursor: not-allowed;
}

.sv-on-demand-selected-panel__primary[aria-busy="true"] {
  opacity: .66;
  cursor: wait;
}

.sv-on-demand-customize-form {
  display: grid;
  gap: 18px;
  margin: 30px 0 22px;
}

.sv-on-demand-customize-form label {
  display: grid;
  gap: 8px;
}

.sv-on-demand-customize-form label>span {
  font-size: 8px;
  letter-spacing: .16em;
  color: rgba(68, 78, 90, .52);
}

.sv-on-demand-customize-form input,
.sv-on-demand-customize-form textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid rgba(70, 86, 101, .18);
  background: rgba(255, 255, 255, .40);
  padding: 12px 13px;
  font: inherit;
  font-size: 12px;
  color: rgba(42, 54, 66, .82);
  outline: none;
}

.sv-on-demand-customize-form input:focus,
.sv-on-demand-customize-form textarea:focus {
  border-color: rgba(54, 86, 107, .48);
}

.sv-on-demand-customize-form textarea {
  resize: vertical;
  min-height: 110px;
}

.sv-on-demand-selected-panel__customize-feedback {
  min-height: 20px;
  margin-bottom: 10px;
  font-size: 9px;
  letter-spacing: .08em;
  color: rgba(54, 86, 107, .72);
}

.sv-on-demand-selected-panel__service-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}

.sv-on-demand-selected-panel__service-state {
  padding: 6px 8px;
  border: 1px solid rgba(70, 91, 107, .14);
  background: rgba(255, 255, 255, .32);
  font-size: 7px;
  letter-spacing: .16em;
  color: rgba(54, 79, 96, .48);
}

.sv-on-demand-selected-panel__boundary {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  margin: 22px 0 26px;
  padding: 13px 14px;
  border: 1px solid rgba(70, 90, 105, .12);
  background: rgba(225, 232, 237, .30);
}

.sv-on-demand-selected-panel__boundary-mark {
  width: 7px;
  height: 7px;
  margin-top: 4px;
  border: 1px solid rgba(65, 101, 125, .52);
  border-radius: 50%;
  box-shadow: 0 0 0 5px rgba(92, 130, 153, .06);
}

.sv-on-demand-selected-panel__boundary p,
.sv-on-demand-selected-panel__service-note {
  margin: 0;
  font-size: 10px;
  line-height: 1.65;
  color: rgba(62, 73, 83, .54);
}

.sv-on-demand-selected-panel__service-note {
  margin-top: 14px;
  max-width: 560px;
}

body.sv-on-demand-selected-viewport-open {
  overflow: hidden;
  overscroll-behavior: none;
}

@media (max-width: 760px) {
  .sv-on-demand-selected-viewport {
    padding: 10px;
  }

  .sv-on-demand-selected-viewport__shell {
    width: 100%;
    height: calc(100svh - 20px);
    max-height: calc(100svh - 20px);
    overflow: hidden;
  }

  .sv-on-demand-selected-viewport__mode {
    top: 12px;
    left: 12px;
  }

  .sv-on-demand-selected-viewport__shell::before {
    display: none;
  }

  .sv-on-demand-selected-panel {
    grid-template-columns: 1fr;
    height: 100%;
    overflow: hidden;
  }

  .sv-on-demand-selected-panel__media-column {
    min-height: 300px;
    flex: 0 0 300px;
    padding: 62px 24px 22px;
    border-right: 0;
    border-bottom: 1px solid rgba(82, 98, 113, .14);
  }

  .sv-on-demand-selected-panel__media {
    margin: 14px 0;
  }

  .sv-on-demand-selected-panel__media img {
    max-height: 250px;
  }

  .sv-on-demand-selected-panel__content {
    min-height: 0;
    overflow-y: auto;
    padding: 30px 24px 34px;
  }

  .sv-on-demand-selected-panel__title {
    font-size: 34px;
  }

  .sv-on-demand-selected-panel__actions {
    flex-direction: row;
  }

  .sv-on-demand-selected-panel__secondary,
  .sv-on-demand-selected-panel__primary {
    flex: 1;
  }

  .sv-on-demand-selected-panel__service-head {
    align-items: flex-start;
    flex-direction: column;
  }

  .sv-on-demand-selected-panel__service-state {
    align-self: flex-start;
  }

  .sv-on-demand-selected-panel__primary {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {

  .sv-on-demand-selected-panel__content,
  .sv-on-demand-selected-panel__primary {
    scroll-behavior: auto;
    transition: none;
  }
}

/* =========================================================
   ON-DEMAND-SELECTED-VIEWPORT-V008 — Mode Switch DNA
   Visual-only override. Existing tab attributes and JS hooks stay intact.
========================================================= */
.sv-on-demand-selected-viewport__mode{
  position:relative;
  display:flex;
  align-items:stretch;
  gap:6px;
  width:max-content;
  max-width:calc(100% - 72px);
  margin:18px 22px 12px;
  padding:5px;
  border:1px solid rgba(75,96,113,.20);
  background:
    linear-gradient(120deg,rgba(255,255,255,.84),rgba(225,233,239,.64));
  box-shadow:inset 0 1px rgba(255,255,255,.85);
}
.sv-on-demand-selected-viewport__mode:before{
  content:"SV / MODE";
  align-self:center;
  padding:0 10px;
  color:rgba(64,84,101,.52);
  font-size:7px;
  letter-spacing:.16em;
  white-space:nowrap;
}
.sv-on-demand-selected-viewport__mode-button{
  position:relative;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:12px;
  min-height:38px;
  padding:0 16px;
  border:1px solid transparent;
  background:transparent;
  color:rgba(54,69,82,.66);
  font:inherit;
  font-size:8px;
  letter-spacing:.14em;
  cursor:pointer;
  transition:background 200ms ease,border-color 200ms ease,color 200ms ease,box-shadow 200ms ease;
}
.sv-on-demand-selected-viewport__mode-button:after{
  content:"";
  width:13px;height:13px;
  border:1px solid currentColor;
  transform:rotate(45deg) scale(.72);
  opacity:.68;
}
.sv-on-demand-selected-viewport__mode-button[data-on-demand-viewport-mode="details"]:before{
  content:"01";
  font-size:7px;
  letter-spacing:.08em;
  opacity:.62;
}
.sv-on-demand-selected-viewport__mode-button[data-on-demand-viewport-mode="customize"]:before{
  content:"02";
  font-size:7px;
  letter-spacing:.08em;
  opacity:.62;
}
.sv-on-demand-selected-viewport__mode-button.is-active{
  border-color:rgba(68,103,128,.30);
  background:linear-gradient(120deg,rgba(219,231,239,.96),rgba(237,242,246,.9));
  color:rgba(35,62,81,.96);
  box-shadow:inset 0 1px rgba(255,255,255,.95),0 4px 12px rgba(43,65,82,.06);
}
.sv-on-demand-selected-viewport__mode-button.is-active:after{
  background:rgba(108,153,183,.14);
  box-shadow:0 0 0 3px rgba(116,157,184,.08);
  opacity:1;
}
.sv-on-demand-selected-viewport__mode-button:hover{
  border-color:rgba(68,103,128,.30);
  color:rgba(35,62,81,.96);
}
@media(max-width:700px){
  .sv-on-demand-selected-viewport__mode{
    width:calc(100% - 28px);
    max-width:none;
    margin:12px 14px 8px;
    gap:3px;
    padding:4px;
  }
  .sv-on-demand-selected-viewport__mode:before{display:none}
  .sv-on-demand-selected-viewport__mode-button{
    flex:1 1 0;
    gap:8px;
    min-width:0;
    min-height:40px;
    padding:0 8px;
    font-size:7px;
    letter-spacing:.09em;
  }
}
