/*
  YANTRA — Sadhna / Breathwork Engine
  Full rebuild (2026-08-07): the old vertical single-column practice page
  (Quick Start grid → horizontal pattern strip → practice panel → journal →
  science accordion) is replaced with a three-column instrument layout —
  pattern library (left) · breathing stage (center, dominant) · pattern
  detail + controls (right) — same spirit as the master Breathwork Engine
  prompt Ashish supplied. Every color below still traces back to the same
  eight --sad-* tokens this page has always used (light = paper/ink/forest/
  gold/vermillion, dark = deep navy + antique gold) — no new palette, no
  glassmorphism, no photographic backgrounds. The reference mockup's
  top-bar/"Device Connected" chrome is intentionally NOT reproduced — this
  page lives inside YANTRA's real shell (yantra-topbar/yantra-sidebar),
  exactly like every other pillar page, so it reads as part of the app,
  not a bolted-on product.
*/

:root {
  /* ---------- Light (default) — YANTRA's own sacred-color tokens ---------- */
  --sad-paper: #F7F3EB;
  --sad-cream: #F2EEE6;
  --sad-stone: #D8D0C4;
  --sad-warm-gray: #9D9588;
  --sad-warm-gray-2: #C7C0B3;
  --sad-ink: #2E2B28;
  --sad-forest: #67795A;
  --sad-forest-2: #9FB897;
  --sad-gold: #B99149;
  --sad-gold-2: #E8D5A3;
  --sad-vermillion: #C45C3E;
  --sad-vermillion-2: #E3987C;

  --sad-shadow-sm: var(--shadow-sm);
  --sad-shadow-md: var(--shadow-md);
  --sad-shadow-lg: var(--shadow-lg);
  --sad-shadow-hover: 0 12px 36px rgba(46,43,40,0.12), 0 4px 12px rgba(46,43,40,0.08);
  --sad-ease: var(--ease-soft);
}

:root[data-yantra-theme="dark"] {
  color-scheme: dark;
  --sad-paper: #0a0f1f;
  --sad-cream: rgba(255, 255, 255, 0.03);
  --sad-stone: rgba(201, 168, 85, 0.16);
  --sad-warm-gray: #8b96b3;
  --sad-warm-gray-2: #c7cfe6;
  --sad-ink: #eef4f2;
  /* Living-glow palette (2026-08-07) — Ashish asked for the breath visuals
     to read closer to a luminous teal/mint lotus glow rather than the
     muted sage this page used before. Scoped entirely to this page's own
     --sad-* namespace (same pattern Sadhna/Smriti/Tarang already each use
     for their own dark-theme accents) — the shared eight sacred colors in
     css/tokens.css are untouched, so every other pillar is unaffected. */
  --sad-forest: #4FE0C4;
  --sad-forest-2: #C9FCEE;
  --sad-gold: #C9A855;
  --sad-gold-2: #E8D5A3;
  --sad-vermillion: #e0704f;
  --sad-vermillion-2: #f5b39c;

  --sad-shadow-sm: 0 1px 3px rgba(0,0,0,0.25), 0 1px 2px rgba(0,0,0,0.15);
  --sad-shadow-md: 0 4px 16px rgba(0,0,0,0.35), 0 1px 3px rgba(0,0,0,0.2);
  --sad-shadow-lg: 0 8px 28px rgba(0,0,0,0.4), 0 2px 8px rgba(0,0,0,0.25);
  --sad-shadow-hover: 0 12px 36px rgba(0,0,0,0.45), 0 4px 12px rgba(0,0,0,0.3);

  --surface-0: var(--sad-paper);
  --surface-1: var(--sad-cream);
  --surface-2: #1e3a5f;
  --text-primary: var(--sad-ink);
  --text-muted: var(--sad-warm-gray);
  --border-subtle: var(--sad-stone);
  --border-strong: rgba(201, 168, 85, 0.38);
  --color-forest: var(--sad-gold);
  --color-gold: var(--sad-gold);
  --color-vermillion: var(--sad-vermillion);
  --color-ink: var(--sad-ink);
  --color-paper: var(--sad-paper);
}

body { font-family: 'Inter', -apple-system, sans-serif; transition: background 0.35s ease; }

:root[data-yantra-theme="dark"] body {
  background: linear-gradient(160deg, #0a0e1a 0%, #0f1729 50%, #050714 100%);
  background-attachment: fixed;
}

/* ---------- Back link + page head ---------- */
.sad-back { display:inline-flex; padding: var(--space-md) var(--space-lg) 0; font-size:0.88rem; color:var(--sad-warm-gray); transition: color 0.35s var(--sad-ease); }
.sad-back:hover { color: var(--sad-forest); }

.brw-pagehead { display:flex; align-items:baseline; justify-content:space-between; flex-wrap:wrap; gap:var(--space-sm); max-width:96rem; margin:0 auto; padding: var(--space-md) var(--space-lg) var(--space-lg); }
.brw-pagehead__title-wrap { display:flex; align-items:baseline; gap:var(--space-sm); flex-wrap:baseline; }
.brw-pagehead__eyebrow { font-family:'Noto Serif Devanagari', serif; font-style:italic; color:var(--sad-gold); font-size:0.95rem; }
.brw-pagehead__title { font-family:'Playfair Display', serif; font-size:1.6rem; color:var(--sad-ink); max-width:none; }
.brw-pagehead__tagline { font-size:0.82rem; color:var(--sad-warm-gray); max-width:none; }

.brw-modes { display:flex; gap:6px; flex-wrap:wrap; }
.brw-mode-chip {
  padding:5px 12px; border-radius:999px; border:1px solid var(--sad-stone); background:transparent;
  color:var(--sad-warm-gray); font-size:0.74rem; font-weight:600; letter-spacing:0.02em; cursor:pointer;
  transition: all 0.25s var(--sad-ease);
}
.brw-mode-chip:hover { color:var(--sad-ink); border-color:var(--sad-gold); }
.brw-mode-chip--active { background:var(--sad-gold); border-color:var(--sad-gold); color:var(--sad-paper); }

/* ---------- Three-column shell ---------- */
.brw-shell {
  display:grid;
  grid-template-columns: 264px minmax(0,1fr) 308px;
  gap: var(--space-lg);
  max-width: 96rem;
  margin:0 auto;
  padding: 0 var(--space-lg) var(--space-2xl);
  align-items:start;
}
@media (max-width: 1180px) {
  .brw-shell { grid-template-columns: 240px minmax(0,1fr); }
  .brw-info { grid-column: 1 / -1; order:3; }
}
@media (max-width: 860px) {
  .brw-shell { grid-template-columns: 1fr; }
  .brw-library { order:2; }
  .brw-stage { order:1; }
  .brw-info { order:3; }
}

.brw-panel {
  background:var(--sad-cream); border:1px solid var(--sad-stone); border-radius:16px;
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
}

/* ================= LEFT — Pattern Library ================= */
.brw-library { padding: var(--space-md); position:sticky; top: var(--space-lg); max-height: calc(100vh - 2*var(--space-lg)); display:flex; flex-direction:column; min-height:0; }
.brw-library__search { position:relative; margin-bottom:var(--space-sm); flex-shrink:0; }
.brw-library__search svg { position:absolute; left:10px; top:50%; transform:translateY(-50%); width:15px; height:15px; color:var(--sad-warm-gray); pointer-events:none; }
.brw-library__search input {
  width:100%; padding:8px 10px 8px 32px; border-radius:var(--radius-md); border:1px solid var(--sad-stone);
  background:var(--sad-paper); color:var(--sad-ink); font-size:0.84rem; font-family:inherit;
}
.brw-library__search input:focus { outline:none; border-color:var(--sad-gold); }

.brw-library__views { display:flex; gap:4px; margin-bottom:var(--space-sm); flex-shrink:0; flex-wrap:wrap; }
.brw-view-btn {
  flex:1; padding:6px 4px; border-radius:var(--radius-sm); border:1px solid transparent; background:transparent;
  color:var(--sad-warm-gray); font-size:0.68rem; font-weight:700; letter-spacing:0.03em; text-transform:uppercase;
  cursor:pointer; transition: all 0.25s var(--sad-ease); text-align:center;
}
.brw-view-btn:hover { color:var(--sad-ink); }
.brw-view-btn--active { background:var(--sad-paper); border-color:var(--sad-stone); color:var(--sad-gold); }

.brw-library__cats { display:flex; gap:6px; overflow-x:auto; margin-bottom:var(--space-sm); flex-shrink:0; scrollbar-width:none; }
.brw-library__cats::-webkit-scrollbar { display:none; }
.brw-cat-chip {
  flex:0 0 auto; padding:4px 11px; border-radius:999px; border:1px solid var(--sad-stone); background:transparent;
  color:var(--sad-warm-gray); font-size:0.72rem; font-weight:600; cursor:pointer; transition: all 0.25s var(--sad-ease); white-space:nowrap;
}
.brw-cat-chip:hover { color:var(--sad-ink); border-color:var(--sad-gold); }
.brw-cat-chip--active { background:var(--sad-forest); border-color:var(--sad-forest); color:var(--sad-paper); }

.brw-library__list { overflow-y:auto; flex:1; min-height:120px; margin:0 calc(var(--space-md) * -1); padding:0 var(--space-sm); }
.brw-library__group-title { font-size:0.68rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--sad-warm-gray); padding: var(--space-sm) var(--space-sm) 4px; }

.brw-item {
  display:flex; align-items:center; gap:10px; width:100%; text-align:left;
  padding:8px var(--space-sm); border-radius:var(--radius-md); border:1px solid transparent; border-left:2px solid transparent;
  background:transparent; cursor:pointer; transition: all 0.22s var(--sad-ease); margin-bottom:2px;
}
.brw-item:hover { background:var(--sad-paper); }
.brw-item--active { background:var(--sad-paper); border-left-color:var(--item-color, var(--sad-gold)); box-shadow: inset 0 0 0 1px var(--sad-stone); }
.brw-item__icon { flex:0 0 auto; width:26px; height:26px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:var(--item-color, var(--sad-gold)); background: color-mix(in srgb, var(--item-color, var(--sad-gold)) 14%, transparent); }
.brw-item__icon svg { width:14px; height:14px; }
.brw-item__body { flex:1; min-width:0; }
.brw-item__name { font-size:0.84rem; color:var(--sad-ink); font-weight:600; line-height:1.25; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.brw-item__meta { font-size:0.7rem; color:var(--sad-warm-gray); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.brw-item__fav { flex:0 0 auto; background:none; border:none; padding:2px; color:var(--sad-stone); cursor:pointer; }
.brw-item__fav svg { width:14px; height:14px; }
.brw-item__fav--on { color:var(--sad-gold); }
.brw-library__empty { text-align:center; color:var(--sad-warm-gray); font-size:0.8rem; padding: var(--space-lg) var(--space-sm); }

.brw-custom-btn {
  flex-shrink:0; margin-top:var(--space-sm); width:100%; padding:9px; border-radius:var(--radius-md);
  border:1.5px dashed var(--sad-stone); background:transparent; color:var(--sad-warm-gray);
  font-size:0.8rem; font-weight:600; cursor:pointer; transition: all 0.25s var(--sad-ease);
  display:flex; align-items:center; justify-content:center; gap:6px;
}
.brw-custom-btn:hover { border-color:var(--sad-gold); color:var(--sad-gold); }

/* ================= CENTER — Breathing Stage ================= */
.brw-stage { display:flex; flex-direction:column; align-items:center; text-align:center; min-width:0; }

.brw-stage__head { width:100%; display:flex; align-items:flex-start; justify-content:space-between; gap:var(--space-md); margin-bottom:var(--space-md); text-align:left; }
.brw-stage__name { font-family:'Playfair Display', serif; font-size:1.7rem; color:var(--sad-ink); max-width:none; }
.brw-stage__hindi { font-family:'Noto Serif Devanagari', serif; color:var(--sad-gold); font-size:1rem; max-width:none; }
.brw-stage__desc { font-size:0.85rem; color:var(--sad-warm-gray); max-width:46ch; margin-top:2px; }
.brw-stage__round { flex-shrink:0; padding:6px 14px; border-radius:999px; border:1px solid var(--sad-stone); background:var(--sad-cream); color:var(--sad-warm-gray); font-size:0.78rem; font-weight:600; white-space:nowrap; }

.brw-canvas-wrap { position:relative; width:min(440px, 84vw); height:min(440px, 84vw); margin: var(--space-md) 0; }
@media (max-width:768px){ .brw-canvas-wrap{ width:min(320px,84vw); height:min(320px,84vw);} }
.brw-canvas-wrap::before {
  content:''; position:absolute; inset:-18%; z-index:0; border-radius:50%; pointer-events:none;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--pattern-color, var(--sad-gold)) 30%, transparent), color-mix(in srgb, var(--pattern-color, var(--sad-gold)) 8%, transparent) 55%, transparent 78%);
  filter: blur(18px);
  opacity:0.85;
}
:root:not([data-yantra-theme="dark"]) .brw-canvas-wrap::before { opacity:0.35; filter: blur(22px); }
.brw-canvas-wrap canvas { position:absolute; inset:0; z-index:1; width:100%; height:100%; cursor:pointer; }
.brw-readout { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; pointer-events:none; z-index:2; }
.brw-readout__phase { font-family:'Playfair Display', serif; font-size:1.5rem; color:var(--sad-ink); transition: opacity 0.3s ease; }
@media (max-width:768px){ .brw-readout__phase{ font-size:1.2rem; } }
.brw-readout__count { font-family:'Playfair Display', serif; font-size:4.4rem; color:var(--sad-ink); font-variant-numeric:tabular-nums; line-height:1; margin:2px 0; text-shadow: 0 0 24px color-mix(in srgb, var(--pattern-color, var(--sad-gold)) 45%, transparent); }
@media (max-width:768px){ .brw-readout__count{ font-size:3rem; } }
.brw-readout__unit { font-size:0.78rem; letter-spacing:0.14em; text-transform:uppercase; color:var(--sad-warm-gray); }
.brw-readout--pulse .brw-readout__phase, .brw-readout--pulse .brw-readout__count { animation: sad-pulse 1.6s ease-in-out infinite; }
@keyframes sad-pulse { 0%,100%{opacity:0.5;} 50%{opacity:1;} }
.brw-stage__hint { font-size:0.78rem; color:var(--sad-warm-gray); margin-bottom:var(--space-sm); min-height:1.1em; }

/* ---------- Timeline ---------- */
.brw-timeline { width:100%; max-width:34rem; margin: var(--space-sm) 0 var(--space-lg); }
.brw-timeline__labels { display:flex; justify-content:space-between; margin-bottom:8px; }
.brw-timeline__label { flex:1; text-align:center; font-size:0.72rem; font-weight:600; color:var(--sad-stone); transition:color 0.3s var(--sad-ease); }
.brw-timeline__label small { display:block; font-weight:400; font-size:0.66rem; color:var(--sad-stone); }
.brw-timeline__label--past { color:var(--sad-warm-gray); }
.brw-timeline__label--past small { color:var(--sad-warm-gray); }
.brw-timeline__label--current { color:var(--pattern-color, var(--sad-gold)); }
.brw-timeline__label--current small { color:var(--pattern-color, var(--sad-gold)); }
.brw-timeline__track { position:relative; height:6px; background:var(--sad-stone); border-radius:3px; }
.brw-timeline__fill { position:absolute; left:0; top:0; height:100%; width:0%; background:var(--pattern-color, var(--sad-gold)); border-radius:3px; transition: width 0.3s var(--sad-ease); }
.brw-timeline__dot { position:absolute; top:50%; width:9px; height:9px; border-radius:50%; background:var(--sad-paper); border:2px solid var(--sad-stone); transform:translate(-50%,-50%); }
.brw-timeline__dot--past { border-color:var(--sad-warm-gray); background:var(--sad-warm-gray); }
.brw-timeline__dot--current { border-color:var(--phase-color, var(--sad-gold)); background:var(--phase-color, var(--sad-gold)); box-shadow:0 0 10px color-mix(in srgb, var(--phase-color, var(--sad-gold)) 60%, transparent); }

/* ---------- Transport ---------- */
.brw-transport { display:flex; align-items:center; justify-content:center; gap:var(--space-md); }
.brw-icon-btn {
  width:44px; height:44px; border-radius:50%; border:1.5px solid var(--sad-stone); background:transparent;
  color:var(--sad-warm-gray); display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition: all 0.25s var(--sad-ease); flex-shrink:0;
}
.brw-icon-btn svg { width:17px; height:17px; }
.brw-icon-btn:hover { border-color:var(--sad-gold); color:var(--sad-gold); }
.brw-icon-btn--active { border-color:var(--sad-gold); color:var(--sad-gold); }
.brw-transport__play {
  width:66px; height:66px; border-radius:50%; border:1.5px solid var(--sad-gold); background:rgba(0,0,0,0.02);
  display:flex; align-items:center; justify-content:center; cursor:pointer; transition: all 0.3s var(--sad-ease); flex-shrink:0;
}
.brw-transport__play:hover { background:var(--sad-gold); box-shadow: 0 0 28px color-mix(in srgb, var(--sad-gold) 55%, transparent); }
.brw-transport__play svg { width:22px; height:22px; color:var(--sad-gold); transition:color 0.3s var(--sad-ease); }
.brw-transport__play:hover svg { color:var(--sad-paper); }
.brw-transport__restart { order:-1; }

/* ================= RIGHT — About / Controls ================= */
.brw-info { padding: var(--space-lg); position:sticky; top: var(--space-lg); max-height: calc(100vh - 2*var(--space-lg)); overflow-y:auto; }
.brw-info__title { font-size:0.7rem; text-transform:uppercase; letter-spacing:0.1em; color:var(--sad-warm-gray); margin: var(--space-lg) 0 var(--space-sm); }
.brw-info__title:first-child { margin-top:0; }
.brw-info__body { font-size:0.86rem; line-height:1.7; color:var(--sad-ink); }
.brw-info__list { list-style:none; padding:0; margin:0; }
.brw-info__list li { position:relative; padding-left:1.1em; margin-bottom:5px; font-size:0.85rem; line-height:1.5; color:var(--sad-ink); }
.brw-info__list li::before { content:'·'; position:absolute; left:0; color:var(--sad-gold); font-weight:700; }
.brw-info__list--warn li::before { content:'!'; color:var(--sad-vermillion); }
.brw-info__list--warn li { color:var(--sad-vermillion); }
.brw-info__none { font-size:0.82rem; color:var(--sad-warm-gray); font-style:italic; }
.brw-divider { height:1px; background:var(--sad-stone); margin: var(--space-lg) 0 0; }

.brw-duration { display:flex; align-items:center; justify-content:space-between; gap:var(--space-sm); }
.brw-duration__value { font-family:'Playfair Display', serif; font-size:1.5rem; color:var(--sad-ink); font-variant-numeric:tabular-nums; }
.brw-duration__unit { font-size:0.72rem; color:var(--sad-warm-gray); margin-left:4px; }
.brw-stepper { display:flex; gap:6px; }
.brw-stepper button {
  width:32px; height:32px; border-radius:50%; border:1px solid var(--sad-stone); background:transparent;
  color:var(--sad-ink); font-size:1.1rem; line-height:1; cursor:pointer; transition: all 0.25s var(--sad-ease);
  display:flex; align-items:center; justify-content:center;
}
.brw-stepper button:hover { border-color:var(--sad-gold); color:var(--sad-gold); }
.brw-stepper button:disabled { opacity:0.35; cursor:not-allowed; }

.brw-select-row { display:flex; align-items:center; justify-content:space-between; gap:var(--space-sm); margin-bottom:8px; }
.brw-select-row:last-child { margin-bottom:0; }
.brw-select-row label { font-size:0.85rem; color:var(--sad-ink); }
.brw-select {
  appearance:none; -webkit-appearance:none; padding:6px 26px 6px 10px; border-radius:var(--radius-md);
  border:1px solid var(--sad-stone); background:var(--sad-paper) url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="%239D9588" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg>') no-repeat right 6px center / 13px;
  color:var(--sad-ink); font-size:0.82rem; font-family:inherit; cursor:pointer; max-width:150px;
}
.brw-select:focus { outline:none; border-color:var(--sad-gold); }

.brw-toggle { position:relative; width:38px; height:22px; border-radius:999px; background:var(--sad-stone); border:none; cursor:pointer; flex-shrink:0; transition: background 0.25s var(--sad-ease); }
.brw-toggle::before { content:''; position:absolute; top:2px; left:2px; width:18px; height:18px; border-radius:50%; background:var(--sad-paper); transition: transform 0.25s var(--sad-ease); box-shadow:var(--sad-shadow-sm); }
.brw-toggle--on { background:var(--sad-forest); }
.brw-toggle--on::before { transform:translateX(16px); }

.brw-anim-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.brw-anim-btn {
  aspect-ratio:1; border-radius:var(--radius-md); border:1px solid var(--sad-stone); background:var(--sad-paper);
  color:var(--sad-warm-gray); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
  cursor:pointer; transition: all 0.25s var(--sad-ease); padding:2px;
}
.brw-anim-btn svg { width:15px; height:15px; }
.brw-anim-btn span { font-size:0.56rem; font-weight:600; line-height:1.05; text-align:center; }
.brw-anim-btn:hover { border-color:var(--sad-gold); color:var(--sad-ink); }
.brw-anim-btn--active { border-color:var(--sad-gold); background: color-mix(in srgb, var(--sad-gold) 12%, var(--sad-paper)); color:var(--sad-gold); }

.brw-actions { display:flex; flex-direction:column; gap:8px; margin-top: var(--space-lg); }
.brw-btn {
  width:100%; padding:12px; border-radius:var(--radius-md); border:none; font-size:0.9rem; font-weight:700;
  cursor:pointer; transition: all 0.3s var(--sad-ease); display:flex; align-items:center; justify-content:center; gap:8px;
  letter-spacing:0.01em;
}
.brw-btn svg { width:15px; height:15px; }
.brw-btn--primary { background:var(--sad-forest); color:var(--sad-paper); }
.brw-btn--primary:hover { filter:brightness(1.08); box-shadow:var(--sad-shadow-hover); }
.brw-btn--ghost { background:transparent; border:1.5px solid var(--sad-stone); color:var(--sad-ink); }
.brw-btn--ghost:hover { border-color:var(--sad-gold); color:var(--sad-gold); }
.brw-btn--ghost.brw-btn--fav-on { border-color:var(--sad-gold); color:var(--sad-gold); background: color-mix(in srgb, var(--sad-gold) 10%, transparent); }
.brw-btn:focus-visible { outline:2px solid var(--sad-gold); outline-offset:2px; }

/* ---------- Completion overlay (inside stage) ---------- */
.brw-completion { display:none; flex-direction:column; align-items:center; text-align:center; gap:var(--space-sm); padding: var(--space-xl) 0; }
.brw-completion--show { display:flex; }
.brw-completion__title { font-family:'Playfair Display', serif; font-size:1.5rem; color:var(--sad-gold); }
.brw-completion__stats { display:flex; gap:var(--space-lg); margin: var(--space-sm) 0; flex-wrap:wrap; justify-content:center; }
.brw-completion__stat-value { font-family:'Playfair Display', serif; font-size:1.3rem; color:var(--sad-ink); }
.brw-completion__stat-label { font-size:0.72rem; color:var(--sad-warm-gray); }
.brw-completion__actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:center; }

/* ---------- Tier warning banner ---------- */
.brw-tier-banner { display:flex; align-items:flex-start; gap:8px; margin-bottom:var(--space-md); padding:10px 14px; border-left:3px solid var(--sad-vermillion); background: rgba(196,92,62,0.08); border-radius: var(--radius-md); color: var(--sad-vermillion); font-size:0.8rem; text-align:left; }
.brw-tier-banner svg { flex-shrink:0; width:16px; height:16px; margin-top:2px; }
.brw-tier-banner.hidden { display:none; }

/* ---------- Custom pattern builder ---------- */
.brw-builder__row { display:flex; align-items:center; gap:8px; margin-bottom:8px; }
.brw-builder__row label { flex:1; font-size:0.85rem; color:var(--sad-ink); }
.brw-builder__row input[type="number"] { width:64px; padding:6px 8px; border-radius:var(--radius-sm); border:1px solid var(--sad-stone); background:var(--sad-paper); color:var(--sad-ink); font-family:inherit; font-size:0.85rem; }
.brw-builder__row input[type="text"] { flex:1; padding:6px 8px; border-radius:var(--radius-sm); border:1px solid var(--sad-stone); background:var(--sad-paper); color:var(--sad-ink); font-family:inherit; font-size:0.85rem; }
.brw-builder__hint { font-size:0.76rem; color:var(--sad-warm-gray); margin-bottom:var(--space-md); }

/* ---------- Shared modal chrome (reused for builder + gate) ---------- */
.sad-modal { position:fixed; inset:0; z-index:1000; display:none; align-items:center; justify-content:center; background:rgba(46,43,40,0.6); padding:var(--space-lg); }
.sad-modal--open { display:flex; }
.sad-modal__content { max-width:30rem; width:100%; max-height:88vh; overflow-y:auto; background:var(--sad-paper); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); border:1px solid var(--sad-stone); border-radius:16px; padding:var(--space-xl); }
.sad-modal__title { font-family:'Playfair Display', serif; font-size:1.2rem; color:var(--sad-ink); margin-bottom:var(--space-md); display:flex; align-items:center; gap:8px; }
.sad-modal__actions { display:flex; justify-content:flex-end; gap:var(--space-sm); margin-top:var(--space-md); }
.sad-btn { padding:var(--space-sm) var(--space-lg); border-radius:var(--radius-md); border:none; font-size:0.88rem; font-weight:600; cursor:pointer; transition: all 0.3s var(--sad-ease); color:var(--sad-paper); }
.sad-btn--start { background:var(--sad-forest); }
.sad-btn--stop { background:var(--sad-vermillion); }
.sad-btn--ghost { background:transparent; border:1.5px solid var(--sad-stone); color:var(--sad-ink); }
.sad-gate__title { color:var(--sad-vermillion); }
.sad-gate__title svg { width:18px; height:18px; flex-shrink:0; }
.sad-gate__list { text-align:left; margin: var(--space-sm) 0 var(--space-md); padding-left:1.2em; font-size:0.85rem; color:var(--sad-ink); }
.sad-gate__list li { margin-bottom:4px; }

/* ---------- Fullscreen ---------- */
.brw-stage:fullscreen { background:var(--sad-paper); display:flex; align-items:center; justify-content:center; padding:var(--space-2xl); }
.brw-stage:fullscreen .brw-canvas-wrap { width:min(70vh,70vw); height:min(70vh,70vw); }

.hidden { display:none !important; }

@media (prefers-reduced-motion: reduce) {
  .brw-readout, .brw-readout__phase, .brw-readout__count, .brw-timeline__fill, * { transition:none !important; }
}
