/* ═══════════════════════════════════════════════════════════════════════════
   Cedar Adin — Measurement visualizer + form layout
   Layout responds to the width of the measurement block itself (container
   queries), so it never squeezes a two-column layout into the narrow
   product details column.
   ═══════════════════════════════════════════════════════════════════════════ */

.ca-measurement-form { container-type: inline-size; container-name: meas; min-width: 0; }

/* Base (narrow): diagram on top, fields below — one column, nothing clipped */
.ca-measurement-form .ca-meas-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  align-items: start;
}
.ca-measurement-form .ca-meas-fields { min-width: 0; }
.ca-measurement-form .ca-meas-diagram { position: relative; top: auto; max-width: none; margin: 0; }
.ca-meas-field-row .ca-label { gap: 6px; flex-wrap: wrap; }
.ca-meas-field-row .ca-input { width: 100%; min-width: 0; box-sizing: border-box; }

/* Medium: fields in two columns under the diagram */
@container meas (min-width: 420px) {
  .ca-measurement-form:not(.ca-mstep-on) .ca-meas-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 14px;
  }
  .ca-measurement-form .ca-meas-fields > :not(.ca-meas-field-row),
  .ca-measurement-form .ca-meas-field-row:has(textarea) { grid-column: 1 / -1; }
}

/* Wide: diagram and fields side by side, diagram sticks while scrolling */
@container meas (min-width: 720px) {
  .ca-measurement-form .ca-meas-layout { grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 24px; }
  .ca-measurement-form .ca-meas-diagram { position: sticky; top: 100px; }
  .ca-measurement-form .ca-mv__stage { height: 600px; }
}

/* ── Stage ───────────────────────────────────────────────────────────── */
.ca-mv__stage {
  position: relative;
  overflow: hidden;
  height: clamp(400px, 110cqw, 560px);
  border-radius: var(--ca-radius-md);
  border: 0.5px solid var(--ca-border-2);
  background:
    linear-gradient(var(--ca-border) 1px, transparent 1px) 0 0 / 24px 24px,
    linear-gradient(90deg, var(--ca-border) 1px, transparent 1px) 0 0 / 24px 24px,
    var(--ca-surface-2);
  touch-action: pan-y;
}
.ca-mv__img {
  position: absolute;
  left: 0;
  top: 0;
  max-width: none !important;
  transform-origin: 0 0;
  transition: transform 0.45s cubic-bezier(0.2, 0.7, 0.2, 1);
  user-select: none;
  pointer-events: none;
}
.ca-mv__svg { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; overflow: visible; }
.ca-mv__labels { position: absolute; inset: 0; pointer-events: none; }

/* Shapes */
.ca-mv__shape ellipse,
.ca-mv__shape line { fill: none; stroke: rgba(154, 48, 64, 0.38); stroke-width: 1.25; stroke-dasharray: 4 3; transition: stroke 0.2s, stroke-width 0.2s; }
.ca-mv__shape .tick { stroke-dasharray: none; }
.ca-mv__shape.has-value ellipse,
.ca-mv__shape.has-value line { stroke: #9A3040; stroke-width: 1.6; stroke-dasharray: none; }
.ca-mv__shape.is-active ellipse,
.ca-mv__shape.is-active line { stroke: #C04055; stroke-width: 2.4; stroke-dasharray: none; filter: drop-shadow(0 0 4px rgba(192, 64, 85, 0.75)); }

/* Leaders */
.ca-mv__leader { fill: none; stroke: rgba(28, 28, 28, 0.28); stroke-width: 1; }
.ca-mv__leader.dot { fill: rgba(154, 48, 64, 0.55); stroke: none; }
.ca-mv__leader.has-value { stroke: rgba(154, 48, 64, 0.6); }
.ca-mv__leader.has-value.dot { fill: #9A3040; }
.ca-mv__leader.is-active { stroke: #C04055; stroke-width: 1.5; }
.ca-mv__leader.is-active.dot { fill: #C04055; stroke: #fff; stroke-width: 1.5; }
[data-theme="dark"] .ca-mv__leader { stroke: rgba(240, 240, 238, 0.3); }

/* Labels */
.ca-mv__label {
  position: absolute;
  display: grid;
  gap: 1px;
  padding: 5px 8px;
  border-radius: 6px;
  border: 0.5px solid var(--ca-border-2);
  background: var(--ca-surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  text-align: left;
  pointer-events: auto;
  cursor: pointer;
  font: inherit;
  transition: background 0.2s, color 0.2s, border-color 0.2s, top 0.25s;
}
.ca-mv__label.is-R { text-align: left; }
.ca-mv__label.is-L { text-align: right; }
.ca-mv__label .n {
  font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
  font-size: 9px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ca-text-3);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ca-mv__label .v { font-size: 13px; line-height: 1.2; color: var(--ca-text-4); font-variant-numeric: tabular-nums; }
.ca-mv__label.has-value { border-color: rgba(154, 48, 64, 0.45); }
.ca-mv__label.has-value .v { color: var(--ca-text); font-weight: 600; }
.ca-mv__label.is-active { background: var(--ca-bordeaux); border-color: var(--ca-bordeaux); box-shadow: 0 4px 14px rgba(107, 30, 42, 0.35); }
.ca-mv__label.is-active .n { color: rgba(255, 255, 255, 0.75); }
.ca-mv__label.is-active .v { color: #fff; }

/* Field rows */
.ca-meas-field-row.ca-meas-active .ca-input,
.ca-meas-field-row .ca-input:focus { border-color: var(--ca-bordeaux); box-shadow: 0 0 0 3px rgba(154, 48, 64, 0.14); }
.ca-meas-hint {
  margin: 6px 0 0;
  padding: 7px 10px;
  border-radius: 6px;
  background: #FFF8EC;
  color: #7A5C00;
  font-size: 12px;
  line-height: 1.45;
}
[data-theme="dark"] .ca-meas-hint { background: #2E2200; color: #F0C040; }

/* ── Mobile step-by-step ─────────────────────────────────────────────── */
.ca-mstep__head, .ca-mstep__nav, .ca-mstep__review, .ca-mstep__tip { display: none; }
.ca-mstep-on .ca-mv__stage { height: min(44vh, 360px); }
.ca-mstep-on .ca-meas-field-row { display: none; }
.ca-mstep-on .ca-meas-field-row.is-current { display: block; }
.ca-mstep-on .ca-meas-field-row.is-current .ca-input { height: 52px; font-size: 18px; }
.ca-mstep-on .ca-mstep__head:not([hidden]) { display: grid; gap: 6px; margin-bottom: 12px; }
.ca-mstep-on .ca-mstep__nav:not([hidden]) { display: flex; align-items: center; gap: 8px; margin: 14px 0 6px; }
.ca-mstep-on .ca-mstep__review:not([hidden]) { display: block; }
.ca-mstep-on .ca-mstep__tip:not([hidden]) { display: block; }
.ca-mstep__count {
  font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--ca-text-2);
}
.ca-mstep__bar { height: 3px; border-radius: 3px; background: var(--ca-surface-3); overflow: hidden; }
.ca-mstep__bar i { display: block; height: 100%; background: var(--ca-bordeaux); transition: width 0.3s ease; }
.ca-mstep__tip { margin: 0 0 8px; font-size: 13px; line-height: 1.45; color: var(--ca-text-2); }
.ca-mstep__nav button {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 40px;
  padding: 0 14px;
  border-radius: var(--ca-radius-pill);
  border: 0.5px solid var(--ca-border-3);
  background: var(--ca-surface);
  color: var(--ca-text);
  font-size: 12px;
  letter-spacing: 0.04em;
  cursor: pointer;
}
.ca-mstep__nav button[disabled] { opacity: 0.35; cursor: default; }
.ca-mstep__nav button[hidden] { display: none; }
.ca-mstep__skip { margin-left: auto; border: 0 !important; background: none !important; color: var(--ca-text-3) !important; }
.ca-mstep__next { background: var(--ca-bordeaux) !important; border-color: var(--ca-bordeaux) !important; color: #fff !important; font-weight: 600; }
.ca-mstep__skip[hidden] + .ca-mstep__next { margin-left: auto; }
.ca-mstep__review-title { margin: 0 0 8px; font-size: 13px; color: var(--ca-text-2); }
.ca-mstep__chips { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.ca-mstep__chip {
  display: grid;
  gap: 2px;
  padding: 8px 10px;
  border-radius: 8px;
  border: 0.5px solid var(--ca-border-2);
  background: var(--ca-surface);
  text-align: left;
  cursor: pointer;
}
.ca-mstep__chip span { font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ca-text-3); }
.ca-mstep__chip strong { font-size: 14px; color: var(--ca-text); }
.ca-mstep__chip.is-empty strong { color: var(--ca-bordeaux); font-weight: 500; }

@media (prefers-reduced-motion: reduce) {
  .ca-mv__img, .ca-mv__label, .ca-mstep__bar i { transition: none; }
}

/* Compact labels; keep the diagram clear of the sticky header when scrolled to */
.ca-mv__label { padding: 4px 7px; }
.ca-mv__label .v { font-size: 12px; }
.ca-mv { scroll-margin-top: calc(var(--ca-header-height, 120px) + 16px); }

/* Taller stage when stacked; long label names wrap instead of truncating */
.ca-mv__stage { height: clamp(460px, 140cqw, 620px); }
@container meas (min-width: 720px) { .ca-measurement-form .ca-mv__stage { height: 620px; } }
.ca-mstep-on .ca-mv__stage { height: min(44vh, 360px); }
.ca-mv__label .n { white-space: normal; line-height: 1.25; overflow: visible; }

/* ═══ Measurement studio pop-up ═══════════════════════════════════════════ */
/* Lift the croquis so the figure reads clearly on the light stage */
.ca-mv__img { filter: brightness(1.38) contrast(1.06) saturate(0.95); }

/* Trigger in the sizing panel */
.ca-mstudio-trigger { display: grid; gap: 6px; margin: 4px 0 8px; }
.ca-mstudio-trigger[hidden] { display: none; }
.ca-mstudio-trigger__btn {
  display: flex; align-items: center; gap: 10px;
  width: 100%; padding: 14px 16px;
  border: 1px solid var(--ca-bordeaux); border-radius: var(--ca-radius-md);
  background: var(--ca-bordeaux); color: #fff;
  font-size: 13px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase;
  cursor: pointer; transition: background var(--ca-transition);
}
.ca-mstudio-trigger__btn:hover { background: var(--ca-bordeaux-hover); }
.ca-mstudio-trigger__btn i { font-size: 18px; }
.ca-mstudio-trigger__btn i:last-child { margin-left: auto; }
.ca-mstudio-trigger__status { font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ca-text-3); }

/* Closed: hidden (inputs stay in the form and still submit) */
.ca-mstudio:not(.is-open) { display: none !important; }

/* Open: full-viewport backdrop + centred panel */
.ca-mstudio.is-open {
  position: fixed;
  inset: 0;
  z-index: 10050;
  display: flex !important;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(20, 12, 14, 0.55);
  backdrop-filter: blur(4px);
  animation: ca-mstudio-in 0.2s ease;
}
body.ca-mstudio-lock { overflow: hidden; }
@keyframes ca-mstudio-in { from { opacity: 0; } to { opacity: 1; } }

.ca-mstudio__panel {
  display: flex;
  flex-direction: column;
  width: min(1180px, 100%);
  height: min(92vh, 920px);
  background: var(--ca-bg);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.35);
}
.ca-mstudio__bar {
  flex: none;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 14px 20px;
  border-bottom: 0.5px solid var(--ca-border-2);
  background: var(--ca-surface);
}
.ca-mstudio__bar strong { display: block; font-family: var(--font-display); font-size: 22px; font-weight: 400; line-height: 1.1; }
.ca-mstudio__eyebrow { font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ca-text-3); }
.ca-mstudio__close { width: 40px; height: 40px; display: grid; place-items: center; border: 0; border-radius: 50%; background: var(--ca-surface-2); color: var(--ca-text); font-size: 20px; cursor: pointer; }
.ca-mstudio__close:hover { background: var(--ca-surface-3); }

.ca-mstudio .ca-meas-layout { flex: 1; min-height: 0; padding: 16px 20px; overflow: auto; }
.ca-mstudio__foot {
  flex: none;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 12px 20px;
  border-top: 0.5px solid var(--ca-border-2);
  background: var(--ca-surface);
}
.ca-mstudio__status { font-family: "JetBrains Mono", ui-monospace, Menlo, Consolas, monospace; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ca-text-2); }
.ca-mstudio__done { height: 42px; padding: 0 26px; border: 0; border-radius: var(--ca-radius-pill); background: var(--ca-bordeaux); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; cursor: pointer; }

/* Side by side inside the pop-up whenever there's room */
@container meas (min-width: 720px) {
  .ca-mstudio .ca-meas-layout { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 24px; overflow: hidden; }
  .ca-mstudio .ca-meas-diagram { position: relative; top: auto; height: 100%; }
  .ca-mstudio .ca-mv__stage { height: 100% !important; min-height: 0; }
  .ca-mstudio .ca-meas-fields { height: 100%; overflow: auto; padding-right: 6px; align-content: start; }
}

/* Phones: full-screen sheet with the step-by-step flow */
@media (max-width: 600px) {
  .ca-mstudio.is-open { padding: 0; align-items: stretch; }
  .ca-mstudio__panel { width: 100%; height: 100dvh; max-height: none; border-radius: 0; }
  .ca-mstudio__bar { padding: 10px 14px; }
  .ca-mstudio__bar strong { font-size: 19px; }
  .ca-mstudio .ca-meas-layout { padding: 12px 14px; gap: 12px; }
  .ca-mstudio.ca-mstep-on .ca-mv__stage { height: min(42vh, 360px); }
  .ca-mstudio__foot { padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); }
}
.ca-mstudio-trigger__restored { font-size: 12px; color: var(--ca-sage-text); }

/* ── Mobile checklist: everything to measure, before the steps ─────────── */
.ca-mstep__over { display: none; }
.ca-mstep-on .ca-mstep__over:not([hidden]) { display: block; }
.ca-mstep__head { grid-template-columns: 1fr auto; align-items: center; }
.ca-mstep-on .ca-mstep__head:not([hidden]) { grid-template-columns: 1fr auto; }
.ca-mstep__head .ca-mstep__bar { grid-column: 1 / -1; }
.ca-mstep__list { display: inline-flex; align-items: center; gap: 4px; padding: 4px 10px; border: 0.5px solid var(--ca-border-3); border-radius: 99px; background: var(--ca-surface); color: var(--ca-text-2); font-size: 11px; cursor: pointer; }
.ca-mstep__list[hidden] { display: none; }
.ca-mstep__over-intro { margin: 0 0 8px; font-size: 13px; color: var(--ca-text-2); }
.ca-mstep__over-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.ca-mstep__over-list button {
  width: 100%; display: grid; grid-template-columns: 26px 1fr auto; align-items: center; gap: 10px;
  padding: 9px 10px; border-radius: 10px; border: 0.5px solid var(--ca-border-2); background: var(--ca-surface);
  text-align: left; cursor: pointer; font: inherit; color: var(--ca-text);
}
.ca-mstep__over-list .n { width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; background: var(--ca-bordeaux-light); color: var(--ca-bordeaux); font-size: 12px; font-weight: 700; }
.ca-mstep__over-list .t { display: grid; gap: 1px; min-width: 0; }
.ca-mstep__over-list strong { font-size: 13.5px; font-weight: 600; }
.ca-mstep__over-list em { font-style: normal; font-size: 11.5px; line-height: 1.35; color: var(--ca-text-3); }
.ca-mstep__over-list .v { font-size: 13px; font-weight: 600; color: var(--ca-text-4); white-space: nowrap; }
.ca-mstep__over-list .is-done { border-color: rgba(106, 148, 101, 0.5); }
.ca-mstep__over-list .is-done .n { background: var(--ca-sage-light); color: var(--ca-sage-text); }
.ca-mstep__over-list .is-done .v { color: var(--ca-text); }
.ca-mstep__start { width: 100%; height: 46px; margin-top: 12px; border: 0; border-radius: 99px; background: var(--ca-bordeaux); color: #fff; font-size: 12px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; cursor: pointer; }
/* Smaller figure on the checklist so the list is the focus */
.ca-mstudio.ca-mstep-on .ca-meas-layout:has(.ca-mstep__over:not([hidden])) .ca-mv__stage { height: min(30vh, 240px); }

/* "Back to list" — shaded pill so it reads as a clear action */
.ca-mstep__list {
  gap: 4px; padding: 6px 12px 6px 8px;
  border: 1px solid rgba(154, 48, 64, 0.35);
  background: var(--ca-bordeaux-light);
  color: var(--ca-bordeaux);
  font-size: 11.5px; font-weight: 600; letter-spacing: 0.02em;
  box-shadow: 0 1px 3px rgba(107, 30, 42, 0.12);
  transition: background var(--ca-transition), color var(--ca-transition);
}
.ca-mstep__list i { font-size: 14px; }
.ca-mstep__list:hover, .ca-mstep__list:focus-visible { background: var(--ca-bordeaux); color: #fff; border-color: var(--ca-bordeaux); }
