/* ── inline block 1 (client_v2.html L35–L2373 pre-extracción) ── */
@import url("https://fonts.googleapis.com/css2?family=Instrument+Sans:ital,wght@0,400;0,500;0,600;1,700&family=DM+Mono:wght@400;500&display=swap");
:root {
  --navy:    #1B2D5C;
  --navy2:   #152347;
  --blue:    #4BA3D3;
  --blue2:   #3A8DBB;
  --bg:      #F5F7FA;
  --white:   #FFFFFF;
  --s2:      #F8FAFC;
  --s3:      #EEF2F7;
  --b1:      #E2E8F0;
  --b2:      #CBD5E1;
  --tx:      #0F172A;
  --mu:      #64748B;
  --dim:     #94A3B8;
  --gr:      #16A34A;
  --ye:      #B45309;
  --re:      #DC2626;
  --shadow:  0 1px 3px rgba(15,23,42,.07), 0 1px 2px rgba(15,23,42,.04);
  --shadow-md: 0 4px 16px rgba(15,23,42,.10), 0 2px 4px rgba(15,23,42,.05);
  --shadow-lg: 0 12px 40px rgba(15,23,42,.14);
  --mono:    'DM Mono', monospace;
  --sans:    'Instrument Sans', system-ui, sans-serif;
  --r:       10px;
  --rx:      14px;
  /* ── FEX Brand semantic aliases (single source of truth) ── */
  --fex-primary:  #0F172A;   /* slate-900 — texto fuerte, matches FEX.color_primary */
  --fex-accent:   #0369A1;   /* sky-700 — marca, matches FEX.color_accent */
  --fex-warn:     #B45309;   /* amber-700, matches FEX.color_warn */
  --fex-danger:   #B91C1C;   /* red-700, matches FEX.color_danger */
  --fex-good:     #15803D;   /* green-700, matches FEX.color_good */
  --fex-muted:    #64748B;   /* slate-500, matches FEX.color_muted */
  --fex-bg:       #F8FAFC;   /* slate-50, matches FEX.color_bg */
  --fex-border:   #CBD5E1;   /* slate-300, matches FEX.color_border */
  /* ── Session 7e-UX: refined typography + spacing tokens ── */
  --fs-xs:  11px;   /* micro labels, caps */
  --fs-sm:  12px;   /* secondary text, metadata */
  --fs-md:  13px;   /* body default */
  --fs-lg:  14px;   /* emphasized body, card titles */
  --fs-xl:  16px;   /* small headers */
  --fs-2xl: 18px;   /* section headers */
  --fs-3xl: 22px;   /* page titles */
  --fw-reg: 400; --fw-med: 500; --fw-semi: 600; --fw-bold: 700;
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px;  --sp-4: 16px;
  --sp-5: 20px; --sp-6: 24px; --sp-8: 32px;  --sp-10: 40px;
  --rd-sm: 6px; --rd-md: 8px; --rd-lg: 12px; --rd-xl: 16px;
  /* ── 7ui.0 brand-shell tokens (premium shell only — never used inside
        clinical-module scoped blocks; do NOT redefine these variables
        inside .m4b-frozen-card / .outcome-card / .command-card / etc.) ── */
  --fex-brand-mark:         #1B2D5C;             /* SVG mark fill */
  --fex-brand-mark-bg:      rgba(27,45,92,.08);  /* mark background tint */
  --fex-brand-gradient:     linear-gradient(135deg, #1B2D5C 0%, #2A4178 100%);
  --fex-brand-accent:       #0369A1;             /* sky-700 secondary accent */
  --fex-brand-accent-light: #E0F2FE;             /* tinted hover/active */
  --fex-brand-divider:      #E2E8F0;             /* topbar separator */
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--sans);background:var(--bg);color:var(--tx);min-height:100vh;
  font-size:var(--fs-md);line-height:1.55;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility}

/* ── LOGIN ── */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(145deg,#EBF3FB 0%,#F5F7FA 45%,#EDF5EE 100%)}
.login-box{background:var(--white);border:1px solid var(--b1);border-radius:20px;
  padding:32px 40px 44px;width:100%;max-width:400px;box-shadow:var(--shadow-lg)}
.login-logo-area{margin-bottom:28px;text-align:center;padding:16px 0 0}
.login-icon{flex-shrink:0}
.login-wordmark .wm-fex{font-family:var(--sans);font-size:26px;font-weight:700;
  font-style:italic;color:var(--navy);letter-spacing:-.5px;line-height:1}
.login-wordmark .wm-clinical{font-size:15px;font-weight:400;color:var(--dim);letter-spacing:.2px}
.login-tagline{font-size:13px;color:var(--mu);margin-bottom:16px;line-height:1.5}
.login-tagline strong{color:var(--navy);font-weight:600}
.lang-row{display:flex;gap:4px;margin-bottom:16px;justify-content:flex-start}
.lang-pill{background:none;border:1px solid var(--b1);color:var(--mu);
  font:500 11px var(--mono);padding:4px 10px;border-radius:20px;cursor:pointer;transition:all .15s}
.lang-pill:hover{border-color:var(--navy);color:var(--navy)}
.lang-pill.active{background:var(--navy);border-color:var(--navy);color:#fff}
.login-h{font-size:18px;font-weight:600;color:var(--tx);margin-bottom:16px;letter-spacing:-.02em}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}
/* 6b.2: primary clinical input — larger for AGE and AMH (required fields) */
.field.field-primary input{font-size:18px !important;font-weight:600 !important;padding:14px 16px !important;color:var(--navy) !important}
.field.field-primary label{color:var(--navy) !important;font-weight:700 !important}
label{font-size:11px;font-weight:600;letter-spacing:.07em;color:var(--mu);text-transform:uppercase}
input,select,textarea{background:var(--white);border:1px solid var(--b2);border-radius:var(--r);
  color:var(--tx);font:14px var(--sans);padding:10px 13px;transition:all .15s;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(27,45,92,.1)}
input::placeholder{color:var(--b2)}
select option{background:var(--white);font-family:var(--sans)}
.btn{border:none;border-radius:var(--rd-md);font:600 13px var(--sans);padding:11px 22px;
  cursor:pointer;transition:all .15s;letter-spacing:.01em;display:inline-flex;align-items:center;gap:7px}
.btn-navy{background:var(--navy);color:#fff;box-shadow:0 1px 4px rgba(27,45,92,.3)}
.btn-navy:hover{background:var(--navy2);transform:translateY(-1px);box-shadow:0 3px 10px rgba(27,45,92,.35)}
.btn-ghost{background:none;border:1px solid var(--b2);color:var(--mu)}
.btn-ghost:hover{border-color:var(--navy);color:var(--navy);background:var(--s3)}
.btn-blue{background:var(--blue);color:#fff}
.btn-blue:hover{background:var(--blue2)}
.btn-gr{background:var(--gr);color:#fff}
.btn:disabled{opacity:.45;cursor:default;transform:none}

/* ── APP SHELL ── */
#app{display:none;min-height:100vh;flex-direction:column}
#app.active{display:flex}
.topbar{background:var(--white);border-bottom:1px solid var(--b1);padding:0 24px;
  height:64px;min-height:64px;display:flex;align-items:center;gap:18px;position:sticky;top:0;z-index:200;
  box-shadow:var(--shadow);flex-wrap:nowrap;overflow:hidden;width:100%;box-sizing:border-box}
/* ─── 7ui.0: SVG mark + wordmark (Option A — inline SVG, no /static mount) ─── */
.tb-logo{display:flex;align-items:center;gap:8px;text-decoration:none;padding:4px 0;cursor:default;user-select:none}
.tb-logo img{display:none !important}  /* legacy base64 path; never rendered */
.tb-logo-mark{display:block;flex-shrink:0;width:28px;height:28px}
.tb-logo .wm-fex{font-size:20px;font-weight:800;font-style:normal;color:var(--navy);letter-spacing:-.02em;line-height:1}
.tb-logo .wm-clinical{font-size:12px;font-weight:500;color:var(--mu);letter-spacing:.06em;line-height:1;text-transform:uppercase}
.tb-sep{width:1px;height:22px;background:var(--fex-brand-divider)}
.tb-nav{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}
.tb-btn{background:none;border:none;color:var(--mu);font:500 12.5px var(--sans);
  padding:6px 13px;border-radius:var(--rd-md);cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0}
.tb-btn:hover{color:var(--tx);background:var(--s3)}
.tb-btn.active{color:var(--navy);background:rgba(27,45,92,.07);font-weight:600}
.spacer{flex:1}
/* ─── Session 6b.1: user-chip → professional identity block ─── */
.user-chip{font-family:var(--sans);background:transparent;border:none;padding:0;border-radius:0;
  display:flex;flex-direction:column;align-items:flex-end;line-height:1.15;gap:1px}
.user-chip-name{font-size:13px;font-weight:600;color:var(--tx);letter-spacing:-.005em}
.user-chip-role{font-size:10px;font-weight:500;color:var(--mu);text-transform:uppercase;letter-spacing:.08em}
.lang-toggle{display:flex;gap:2px;background:var(--s3);border:1px solid var(--b1);
  border-radius:var(--rd-md);padding:2px}
.lang-btn-top{background:none;border:none;color:var(--mu);font:600 10px var(--mono);
  padding:3px 8px;border-radius:5px;cursor:pointer;transition:all .15s;letter-spacing:.06em}
.lang-btn-top.active{background:var(--white);color:var(--navy);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.btn-logout{background:none;border:1px solid var(--b1);color:var(--mu);
  font:500 11.5px var(--sans);padding:5px 11px;border-radius:var(--rd-md);cursor:pointer;transition:all .15s;letter-spacing:0}
.btn-logout:hover{border-color:var(--re);color:var(--re)}

/* ─── Session 7e-UX: Premium navigation redesign ─── */
/* 3-section nav buttons (Home · Patients · Tools) */
.tb-nav-btn{
  /* WINDOW-POLISH W1: la nav primaria JAMÁS degrada — sin nowrap/no-shrink,
     el modo caso comprimía "Laboratorio" hasta "La" y expulsaba "Mi perfil"
     (evidencia pixel m05b). El overflow del contenedor ya scrollea. */
  white-space:nowrap;flex:0 0 auto;
  font:500 13.5px var(--sans);color:var(--mu);padding:8px 14px 6px;border-radius:var(--rd-md);
  letter-spacing:-.005em;transition:color .12s,background .12s,border-color .12s;
  border-bottom:2px solid transparent
}
.tb-nav-btn:hover{color:var(--tx);background:var(--s3)}
/* 7ui.0: clean border-bottom underline replaces previous inset shadow */
.tb-nav-btn.active{color:var(--navy);background:transparent;font-weight:600;
  border-bottom:2px solid var(--navy);border-radius:var(--rd-md) var(--rd-md) 0 0}
.tb-chev{font-size:10px;opacity:.6;margin-left:2px}

/* Tools dropdown */
.tb-tools-wrap{position:relative}
.tb-tools-menu{
  position:absolute;top:calc(100% + 6px);left:0;min-width:210px;
  background:var(--white);border:1px solid var(--b1);border-radius:var(--rd-lg);
  box-shadow:var(--shadow-lg);padding:6px;z-index:300;
  animation:dropdownIn .14s ease-out
}
@keyframes dropdownIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.tb-tools-item{
  display:block;width:100%;text-align:left;background:none;border:none;
  padding:8px 12px;border-radius:var(--rd-md);cursor:pointer;
  font:500 13px var(--sans);color:var(--tx);transition:background .1s
}
.tb-tools-item:hover{background:var(--s2);color:var(--navy)}
.tb-tools-sep{height:1px;background:var(--b1);margin:5px 4px}

/* Cycle breadcrumb: contextual bar below topbar when a cycle is active */
.cycle-breadcrumb{
  background:linear-gradient(180deg,#F8FAFC 0%,#F1F5F9 100%);
  border-bottom:1px solid var(--b1);padding:8px 24px;
  display:flex;align-items:center;gap:12px;font-size:13px;
  position:sticky;top:64px;z-index:190
}
.cycle-breadcrumb[hidden]{display:none}
.cyc-patient{font-weight:600;color:var(--tx);letter-spacing:-.005em}
.cyc-sep{color:var(--dim)}
.cyc-meta{color:var(--mu);font-family:var(--mono);font-size:12px}
.cyc-tabs{display:flex;gap:2px;margin-left:auto}
.cyc-tab{
  background:transparent;border:1px solid transparent;color:var(--mu);
  font:500 12px var(--sans);padding:5px 12px;border-radius:var(--rd-md);
  cursor:pointer;transition:all .12s;letter-spacing:.01em
}
.cyc-tab:hover{color:var(--tx);background:var(--white);border-color:var(--b1)}
.cyc-tab.active{color:var(--navy);background:var(--white);border-color:var(--b2);
  font-weight:600;box-shadow:var(--shadow)}
.cyc-clear{
  background:none;border:1px solid var(--b1);color:var(--mu);
  width:24px;height:24px;border-radius:50%;cursor:pointer;font-size:14px;
  line-height:1;display:flex;align-items:center;justify-content:center;
  transition:all .12s;margin-left:4px
}
.cyc-clear:hover{border-color:var(--re);color:var(--re);background:#FEF2F2}

/* Adjust sticky positioning for views when breadcrumb is visible */
.has-cycle .view{padding-top:0}

/* ─── Session 7e-UX: Home dashboard — "what to do now" ─── */
.home-wrap{
  max-width:960px;margin:0 auto;padding:32px 24px 48px;
  display:flex;flex-direction:column;gap:24px
}
.home-greet-title{
  font-size:22px;font-weight:600;color:var(--navy);
  letter-spacing:-.02em;line-height:1.2
}
.home-greet-sub{
  font-size:13px;color:var(--mu);margin-top:4px;letter-spacing:-.005em
}

/* Quick-action cards: 3-up grid */
.home-actions{
  display:grid;grid-template-columns:repeat(3, 1fr);gap:12px
}
@media (max-width: 720px){
  .home-actions{grid-template-columns:1fr}
}
.home-action{
  background:var(--white);border:1px solid var(--b1);border-radius:12px;
  padding:18px;display:flex;align-items:flex-start;gap:12px;cursor:pointer;
  text-align:left;transition:all .15s;
  box-shadow:var(--shadow)
}
.home-action:hover{
  border-color:var(--navy);transform:translateY(-1px);
  box-shadow:var(--shadow-md)
}
.home-action-primary{
  background:linear-gradient(145deg,#1B2D5C 0%,#2A4178 100%);
  border-color:var(--navy);color:#fff
}
.home-action-primary .home-action-title{color:#fff}
.home-action-primary .home-action-sub{color:rgba(255,255,255,.78)}
.home-action-primary:hover{background:linear-gradient(145deg,#152347 0%,#243769 100%)}
.home-action-icon{
  width:36px;height:36px;border-radius:8px;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:18px;font-weight:500;
  background:rgba(27,45,92,.08);color:var(--navy)
}
.home-action-primary .home-action-icon{
  background:rgba(255,255,255,.15);color:#fff
}
.home-action-body{flex:1;min-width:0}
.home-action-title{
  font-size:14px;font-weight:600;color:var(--tx);
  letter-spacing:-.01em;line-height:1.3;margin-bottom:4px
}
.home-action-sub{
  font-size:12px;color:var(--mu);line-height:1.45;letter-spacing:-.003em
}

/* Sections */
.home-section{
  background:var(--white);border:1px solid var(--b1);border-radius:12px;
  padding:18px 20px;box-shadow:var(--shadow)
}
.home-section[hidden]{display:none}
.home-section-head{
  display:flex;justify-content:space-between;align-items:center;gap:12px;
  margin-bottom:12px;flex-wrap:wrap
}
.home-section-title{
  font-size:14px;font-weight:600;color:var(--tx);
  letter-spacing:-.005em;display:flex;align-items:center;gap:8px
}
.home-section-sub{
  font-size:12px;color:var(--mu);margin-top:2px;letter-spacing:-.003em
}
.home-badge{
  background:var(--s3);color:var(--mu);font-family:var(--mono);
  font-size:11px;padding:2px 8px;border-radius:12px;font-weight:500
}
.home-section-actions{display:flex;gap:8px;align-items:center}
.home-search{
  width:260px;max-width:100%;padding:7px 12px;
  border:1px solid var(--b1);border-radius:8px;
  font:13px var(--sans);background:var(--s2);transition:all .12s
}
.home-search:focus{outline:none;background:var(--white);border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(27,45,92,.08)}

/* Cycles list */
.home-cases-list{display:flex;flex-direction:column;gap:8px}
.home-empty{
  text-align:center;padding:32px 16px;border:1px dashed var(--b1);
  border-radius:10px;background:var(--s2)
}
.home-empty[hidden]{display:none}
.home-empty-title{font-size:14px;font-weight:500;color:var(--tx);margin-bottom:4px}
.m0-postsign-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
/* MANUAL-P1 — empty-day quick moves under "Sin actividad pendiente" */
.frx-empty-day-actions{display:flex;gap:8px;margin-top:10px}
.frx-empty-day-actions[hidden]{display:none}
.home-empty-sub{font-size:12px;color:var(--mu)}

/* Intake list */
.home-intake-list{display:flex;flex-direction:column;gap:6px}
.home-intake-row{
  display:flex;align-items:center;gap:12px;padding:10px 12px;
  background:var(--s2);border:1px solid var(--b1);border-radius:8px;
  cursor:pointer;transition:all .12s
}
.home-intake-row:hover{border-color:var(--navy);background:var(--white)}
.home-intake-name{font-weight:500;color:var(--tx);font-size:13px;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-intake-time{font-size:11px;color:var(--mu);font-family:var(--mono)}
.home-intake-cta{
  font-size:11px;color:var(--navy);font-weight:600;padding:4px 10px;
  background:rgba(27,45,92,.06);border-radius:6px;letter-spacing:.02em
}


/* ── VIEWS ── */
.view{display:none}
/* Bug fix (2026-05-03): the .view nodes are flex items inside
   #app{display:flex;flex-direction:column}. Without an explicit
   min-height they collapse to 0px (Mario observed view-patients
   computed height:0, opacity:0 even though the inner main-wrap
   had real content). Two guards:
     · min-height ensures the view fills the viewport below the
       64px sticky topbar regardless of inner layout.
     · animation-fill-mode + explicit opacity:1 keeps the post-
       animation state stable if the browser interrupts fadeUp on
       a re-show (the issue Mario hit on Find a patient and on
       any Tools menu navigation). */
.view.active{
  display:block !important;
  animation:fadeUp .2s ease;
  animation-fill-mode:both;
  opacity:1 !important;
  min-height:calc(100vh - 64px) !important;
}
@keyframes fadeUp{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.main-wrap{max-width:780px;margin:0 auto;padding:28px 24px 60px}

/* ══ AI CAPTURE — Captura clínica drawer (Phase AI-1A, 2026-05-05) ════
   - Full-screen overlay drawer launched from view-m0-assessment.
   - 3-column grid (transcript / extraction / drafts), responsive
     collapse to one column under 1100px.
   - Mock-provider badge surfaces only when the backend reports
     model_provider='mock' on the latest extraction.                   */
.ai-cap-backdrop{
  position:fixed;inset:0;background:rgba(15,23,42,.55);
  z-index:1100;display:none;align-items:flex-start;justify-content:center;
  overflow-y:auto;padding:24px
}
.ai-cap-backdrop.is-open{display:flex}
.ai-cap-drawer{
  background:var(--white);border-radius:14px;box-shadow:0 20px 60px rgba(0,0,0,.25);
  width:min(100%, 1280px);
  max-height:calc(100vh - 48px);
  overflow:hidden;display:flex;flex-direction:column;
  box-sizing:border-box
}
.ai-cap-head{
  display:flex;justify-content:space-between;align-items:center;
  padding:16px 22px;border-bottom:1px solid var(--b1);gap:12px;flex-wrap:wrap
}
.ai-cap-title{font-size:15px;font-weight:600;color:var(--tx)}
.ai-cap-sub{font-size:12px;color:var(--mu);margin-top:2px}
.ai-cap-mock-badge{
  display:inline-flex;align-items:center;gap:6px;
  font:600 10px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  background:rgba(204,150,46,.14);color:var(--ye);
  padding:4px 10px;border-radius:999px;border:1px solid rgba(204,150,46,.35)
}
.ai-cap-body{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr);
  gap:16px;padding:18px 22px;overflow-y:auto;
  align-items:flex-start
}
@media (max-width: 1100px){
  .ai-cap-body{grid-template-columns:minmax(0, 1fr)}
}
.ai-cap-col{display:flex;flex-direction:column;gap:10px;min-width:0}
.ai-cap-col h4{
  font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;
  color:var(--mu);margin:0
}
.ai-cap-textarea{
  width:100%;box-sizing:border-box;
  font:400 13px var(--sans);color:var(--tx);
  border:1px solid var(--b1);border-radius:8px;
  padding:10px 12px;min-height:240px;resize:vertical;
  background:var(--white)
}
.ai-cap-card{
  border:1px solid var(--b1);border-radius:8px;padding:12px;background:var(--white)
}
.ai-cap-card-title{
  font:600 11px var(--mono);letter-spacing:.04em;text-transform:uppercase;
  color:var(--mu);margin-bottom:6px
}
.ai-cap-kv{display:grid;grid-template-columns:140px 1fr;gap:4px 10px;font-size:12px}
.ai-cap-kv dt{color:var(--mu)}
.ai-cap-kv dd{margin:0;color:var(--tx);overflow-wrap:anywhere}
.ai-cap-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.ai-cap-chip{
  display:inline-block;padding:3px 9px;border-radius:999px;font-size:11px;
  border:1px solid var(--b1);background:var(--s4);color:var(--mu);
  font-family:var(--mono)
}
.ai-cap-chip--warn{
  background:rgba(214,77,69,.12);color:var(--re);border-color:rgba(214,77,69,.35)
}
.ai-cap-draft-block{
  display:flex;flex-direction:column;gap:6px
}
.ai-cap-draft-block label{
  font:600 11px var(--mono);letter-spacing:.04em;text-transform:uppercase;
  color:var(--mu)
}
.ai-cap-draft-block textarea{
  width:100%;box-sizing:border-box;font:400 12px var(--sans);
  border:1px solid var(--b1);border-radius:6px;padding:8px 10px;
  min-height:90px;resize:vertical;color:var(--tx);background:var(--white)
}
.ai-cap-actions{
  display:flex;gap:8px;flex-wrap:wrap;
  padding:14px 22px;border-top:1px solid var(--b1);background:var(--s4)
}
.ai-cap-actions .btn{font-size:12px}
.ai-cap-status{
  font-size:11px;color:var(--mu);margin-left:auto;align-self:center;font-family:var(--mono)
}
.ai-cap-status.is-error{color:var(--re)}
.ai-cap-status.is-ok{color:var(--gr)}
.ai-cap-disclaimer{
  font-size:11px;color:var(--mu);line-height:1.5;
  padding:0 22px 14px;background:var(--white)
}

/* ══ AGENDA — operational hub layout (Fase 1 hotfix, 2026-05-04) ══════
   - Wider container than the default 780px to host two cards side-by-side.
   - Pills live inside view-agenda (the generic subnav DOM mounts in the
     first .main-wrap on the page, which breaks for views with their own
     main-wrap — Agenda renders its own pill nav for full control).
   - Grid uses minmax(0, 1fr) so children with overflow-prone content
     (link tokens, JSON dumps, search results) cannot push the grid wider
     than the viewport. Collapses to one column < 980px.                */
#view-agenda .main-wrap{max-width:1180px;width:100%;box-sizing:border-box}
#view-agenda *{box-sizing:border-box}
.agenda-pills{
  display:flex;gap:4px;margin:6px 0 22px;
  border-bottom:1px solid var(--b1);
  overflow-x:auto;flex-wrap:nowrap
}
.agenda-pill{
  background:none;border:none;
  padding:9px 16px 11px;
  font:500 13px var(--sans);
  color:var(--mu);
  cursor:pointer;
  border-bottom:2px solid transparent;
  transition:color .15s, border-color .15s;
  white-space:nowrap
}
.agenda-pill:hover{color:var(--tx)}
.agenda-pill.active{
  color:var(--navy);
  border-bottom-color:var(--navy);
  font-weight:600
}
.agenda-pill[aria-disabled="true"]{opacity:.55;cursor:default}
.agenda-pill[aria-disabled="true"]:hover{color:var(--mu)}
.agenda-intake-grid{
  display:grid;
  grid-template-columns:minmax(0, 1fr) minmax(0, 1fr);
  gap:18px;
  align-items:flex-start;
  width:100%
}
@media (max-width: 980px){
  .agenda-intake-grid{grid-template-columns:minmax(0, 1fr)}
}
.agenda-intake-grid > *{min-width:0}
#view-agenda .agenda-intake-grid input,
#view-agenda .agenda-intake-grid select,
#view-agenda .agenda-intake-grid textarea{
  width:100%;box-sizing:border-box;max-width:100%
}
.agenda-intake-filter-row{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap}
.agenda-intake-filter-row > input{flex:1 1 180px;min-width:0}
.agenda-intake-filter-row > select{flex:0 0 auto}
#agenda-intake-urlbox,
#view-agenda pre{overflow-wrap:anywhere;word-break:break-word;max-width:100%}
#view-agenda .m0-card{box-sizing:border-box;max-width:100%}
.agenda-intake-table-wrap{width:100%;overflow-x:auto}

/* ── CLINICAL FLOW (main screen) ── */
.flow-header{margin-bottom:28px}
.flow-title{font-size:22px;font-weight:600;color:var(--tx);letter-spacing:-.03em;margin-bottom:4px}
.flow-sub{font-size:13px;color:var(--mu)}
.consult-hero{background:linear-gradient(135deg,#FFFFFF 0%,#F7FAFD 68%,#EEF5FB 100%);
  border:1px solid var(--b1);border-radius:20px;padding:28px;box-shadow:var(--shadow-md);margin-bottom:18px}
.consult-kicker{display:inline-flex;align-items:center;gap:8px;font:600 10px var(--mono);
  color:var(--navy);letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;
  border:1px solid rgba(27,45,92,.12);background:rgba(27,45,92,.04);margin-bottom:16px}
.consult-grid{display:grid;grid-template-columns:1.3fr .9fr;gap:18px;align-items:end}
.consult-lead{font-size:31px;font-weight:600;letter-spacing:-.04em;line-height:1.08;color:var(--tx);max-width:11ch}
.consult-sub{font-size:14px;color:var(--mu);max-width:60ch;margin-top:12px}
.consult-points{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}
.consult-point{background:rgba(255,255,255,.88);border:1px solid rgba(27,45,92,.08);border-radius:12px;padding:12px}
.consult-point-k{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--mu);margin-bottom:4px}
.consult-point-v{font-size:13px;font-weight:600;color:var(--tx)}
.quick-hint{font-size:12px;color:var(--mu);margin-top:12px}
.value-strip{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.value-pill{font:500 11px var(--mono);color:var(--navy);background:rgba(27,45,92,.05);
  border:1px solid rgba(27,45,92,.1);border-radius:999px;padding:5px 10px}
.section-divider{display:flex;align-items:center;gap:10px;margin:14px 0}
.section-divider::before,.section-divider::after{content:'';flex:1;height:1px;background:var(--b1)}
.section-divider span{font-size:10px;color:var(--mu);letter-spacing:.08em;text-transform:uppercase}
/* 6b.2: Outcome intelligence — collapsible chip (was always-expanded card) */
.outcome-highlight{background:transparent;border:1px solid var(--b1);border-radius:10px;
  padding:0;margin-top:20px;overflow:hidden;transition:all .2s ease}
.outcome-highlight summary{list-style:none;padding:10px 14px;cursor:pointer;display:flex;
  align-items:center;gap:10px;font-size:11px;font-weight:600;letter-spacing:.06em;
  color:var(--mu);text-transform:uppercase;user-select:none}
.outcome-highlight summary::-webkit-details-marker{display:none}
.outcome-highlight summary::before{content:'▸';color:var(--mu);font-size:9px;transition:transform .15s ease}
.outcome-highlight[open] summary::before{transform:rotate(90deg)}
.outcome-highlight[open]{background:linear-gradient(135deg,#F8FBFE 0%,#FFFFFF 100%)}
.outcome-highlight summary:hover{color:var(--tx)}
.outcome-title{display:inline;font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--navy);text-transform:uppercase}
.outcome-copy{font-size:12px;color:var(--mu);line-height:1.55;padding:0 14px 14px 28px}
.decision-summary{font-size:12px;color:var(--mu);margin-bottom:16px;max-width:58ch}
/* 6b.2: contextual hint next to disabled Generate estimate button */
.eval-hint{font-size:11px;color:var(--mu);font-style:italic;transition:opacity .2s ease}
.eval-hint.ready{opacity:0;pointer-events:none}
.stim-card{background:var(--white);border:1px solid var(--b1);border-radius:16px;padding:20px;margin-top:16px;display:none;box-shadow:var(--shadow)}
.stim-card.show{display:block;animation:fadeUp .25s ease}
.stim-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}
.stim-title{font-size:12px;font-weight:600;letter-spacing:.08em;color:var(--navy);text-transform:uppercase}
.stim-sub{font-size:13px;color:var(--mu);max-width:58ch}
.stim-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.stim-result{background:linear-gradient(135deg,#F8FBFE 0%,#FFFFFF 100%);border:1px solid var(--b1);border-radius:14px;padding:16px;margin-top:14px;display:none}
.stim-result.show{display:block}
.stim-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.stim-kpi{background:var(--white);border:1px solid rgba(27,45,92,.08);border-radius:10px;padding:12px}
.stim-kpi-v{font-family:var(--mono);font-size:18px;color:var(--tx);font-weight:600}
.stim-kpi-k{font-size:10px;color:var(--mu);text-transform:uppercase;letter-spacing:.06em;margin-top:4px}
.stim-list{font-size:12px;color:var(--mu);line-height:1.7}
.stim-list strong{color:var(--tx)}

/* Patient bar */
.patient-bar{display:flex;gap:10px;align-items:flex-end;background:var(--white);
  border:1px solid var(--b1);border-radius:var(--rx);padding:12px 16px;
  margin-bottom:14px;box-shadow:var(--shadow);transition:padding .15s ease}
.patient-bar .field{margin-bottom:0;flex:1}
.patient-bar .field:first-child{max-width:260px}
.patient-bar .field label{font-size:10px !important}

/* Entry card */
.entry-card{background:var(--white);border:1px solid var(--b1);border-radius:var(--rx);
  padding:24px;margin-bottom:16px;box-shadow:var(--shadow)}
.entry-card-title{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--mu);margin-bottom:16px;display:flex;align-items:center;gap:8px}
.entry-card-title::before{content:'';width:3px;height:13px;border-radius:2px;background:var(--navy)}
.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.entry-grid.g3{grid-template-columns:1fr 1fr 1fr}
.entry-grid .field{margin-bottom:0}
.opt-tag{font-size:10px;font-weight:400;color:var(--dim);margin-left:4px;
  text-transform:none;letter-spacing:0}

/* ── CLINICAL SNAPSHOT ── */
.snapshot{background:linear-gradient(135deg,#EBF3FB 0%,#F0F7EF 100%);
  border:1px solid var(--b1);border-radius:var(--rx);padding:24px;
  margin-bottom:16px;display:none}
.snapshot.show{display:block;animation:fadeUp .3s ease}
.snapshot-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px}
.snapshot-title{font-size:13px;font-weight:600;color:var(--navy);letter-spacing:.02em}
.snapshot-badge{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:20px;
  border:1px solid rgba(27,45,92,.2);background:rgba(27,45,92,.06);color:var(--navy)}
.snap-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}
.snap-card{background:var(--white);border:1px solid rgba(27,45,92,.08);border-radius:10px;
  padding:14px;text-align:center;box-shadow:0 1px 3px rgba(15,23,42,.05)}
.snap-val{font-family:var(--mono);font-size:22px;font-weight:500;line-height:1;
  margin-bottom:4px;color:var(--tx)}
.snap-val.hi{color:var(--gr)} .snap-val.mid{color:var(--ye)} .snap-val.lo{color:var(--re)}
.snap-label{font-size:10px;color:var(--mu);text-transform:uppercase;letter-spacing:.06em}
.snap-sub{font-size:10px;color:var(--dim);margin-top:2px}
.snap-insight{font-size:12px;color:var(--mu);border-left:3px solid rgba(27,45,92,.2);
  padding-left:12px;line-height:1.6;font-style:italic}

/* ── PRECISION UPGRADE ── */
.upgrade-card{background:var(--white);border:1px dashed var(--b2);border-radius:var(--rx);
  padding:20px 24px;margin-bottom:16px;display:none;transition:all .3s}
.upgrade-card.show{display:block;animation:fadeUp .25s ease}
.upgrade-card.upgraded{border-style:solid;border-color:rgba(22,163,74,.3);
  background:linear-gradient(135deg,#F0FDF4 0%,#FFFFFF 100%)}
.upgrade-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.upgrade-title{font-size:12px;font-weight:600;color:var(--mu);letter-spacing:.05em;text-transform:uppercase}
.upgrade-badge{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:20px}
.badge-lite{background:#EFF6FF;color:#1D4ED8;border:1px solid #BFDBFE}
.badge-strong{background:#F0FDF4;color:var(--gr);border:1px solid #BBF7D0}
.model-upgrade-label{font-size:12px;color:var(--gr);font-weight:600;
  display:flex;align-items:center;gap:5px}
.upgrade-sub{font-size:12px;color:var(--mu);margin-bottom:16px}

/* ── DECISION LAYER ── */
.decision-card{background:var(--white);border:1px solid var(--b1);border-radius:var(--rx);
  padding:24px;margin-bottom:16px;display:none}
.decision-card.show{display:block;animation:fadeUp .25s ease}
.fcf-row{display:flex;align-items:baseline;gap:16px;margin-bottom:20px}
.fcf-score{font-family:var(--mono);font-size:56px;font-weight:500;line-height:1;letter-spacing:-.02em}
.fcf-score.t1{color:var(--gr)} .fcf-score.t2{color:var(--ye)} .fcf-score.t3{color:var(--re)}
.fcf-meta{display:flex;flex-direction:column;gap:6px}
.fcf-rec{font-size:15px;font-weight:600;color:var(--tx)}
.fcf-ic{font-family:var(--mono);font-size:11px;color:var(--mu)}
.tier-chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{font-family:var(--mono);font-size:10px;padding:2px 9px;border-radius:20px;border:1px solid}
.chip-navy{color:var(--navy);border-color:rgba(27,45,92,.25);background:rgba(27,45,92,.05)}
.chip-gr{color:var(--gr);border-color:#BBF7D0;background:#F0FDF4}
.chip-ye{color:var(--ye);border-color:#FDE68A;background:#FFFBEB}
.chip-re{color:var(--re);border-color:#FECACA;background:#FEF2F2}
.divider{border:none;border-top:1px solid var(--b1);margin:18px 0}
.dec-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:16px}
.dec-grid .field{margin-bottom:0}
.dec-full{margin-bottom:14px}
.dec-full .field{margin-bottom:0}

/* Decision options — visual select */
.dec-options{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:0}
.dec-opt{border:2px solid var(--b1);border-radius:10px;padding:12px;text-align:center;
  cursor:pointer;transition:all .15s;background:var(--white)}
.dec-opt:hover{border-color:var(--navy);background:var(--s3)}
.dec-opt.selected{border-color:var(--navy);background:rgba(27,45,92,.05)}
.dec-opt-title{font-weight:600;font-size:13px;color:var(--tx);margin-bottom:2px}
.dec-opt-sub{font-size:11px;color:var(--mu)}

/* ── SAVED CONFIRMATION ── */
.saved-card{background:linear-gradient(135deg,#F0FDF4 0%,#FFFFFF 100%);
  border:1px solid #BBF7D0;border-radius:var(--rx);padding:20px 24px;
  margin-bottom:16px;display:none}
.saved-card.show{display:block;animation:fadeUp .25s ease}
.saved-header{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.saved-icon{width:28px;height:28px;background:var(--gr);border-radius:50%;
  display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px}
.saved-title{font-weight:600;color:var(--gr);font-size:14px}
.saved-sub{font-size:12px;color:var(--mu)}
.saved-actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}

@media (max-width: 900px){
  .consult-grid{grid-template-columns:1fr}
  .consult-points{grid-template-columns:1fr}
  .stim-grid,.stim-kpis{grid-template-columns:1fr 1fr}
  /* ─── Session 6b.1: responsive topbar ─── */
  .topbar{padding:0 14px;gap:12px}
  .tb-logo .wm-fex{font-size:20px}
  .tb-logo .wm-clinical{display:none}  /* hide descriptor on narrow screens */
  .user-chip-role{display:none}         /* show only name on narrow screens */
  .tb-btn{padding:5px 10px;font-size:12px}
}
/* 7ui.0: very narrow phones — show only the SVG mark to free horizontal
   space for nav buttons + user chip + logout. Wordmark text comes back
   above this breakpoint. */
@media (max-width: 480px){
  .tb-logo .wm-fex{display:none}
  .tb-logo-mark{width:24px;height:24px}
  .tb-sep{display:none}
}

/* ── NOTE BOX ── */
.note-area{background:var(--s3);border:1px solid var(--b1);border-radius:9px;
  padding:14px 16px;font-family:var(--mono);font-size:11px;line-height:1.8;
  color:var(--tx);white-space:pre-wrap;position:relative;margin-top:12px}
.note-copy{position:absolute;top:10px;right:10px;background:var(--navy);border:none;
  color:#fff;font:500 10px var(--sans);padding:4px 10px;border-radius:5px;cursor:pointer}

/* ── DASHBOARD ── */
.dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.dash-card{background:var(--white);border:1px solid var(--b1);border-radius:var(--rx);
  padding:18px;text-align:center;box-shadow:var(--shadow)}
.dash-val{font-family:var(--mono);font-size:30px;font-weight:500;margin-bottom:3px;letter-spacing:-.02em}
.dash-lbl{font-size:10px;color:var(--mu);text-transform:uppercase;letter-spacing:.06em}
.activity-item{display:flex;align-items:center;justify-content:space-between;
  padding:9px 0;border-bottom:1px solid var(--b1);font-size:12px}
.activity-item:last-child{border-bottom:none}
.activity-tag{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:20px;
  background:var(--s3);border:1px solid var(--b1);color:var(--mu)}
.active-table{width:100%;border-collapse:collapse;font-size:12px}
.active-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--mu);padding:8px 14px;background:var(--s3);border-bottom:1px solid var(--b1)}
.active-table td{padding:10px 14px;border-bottom:1px solid var(--b1)}
.active-table tr:last-child td{border-bottom:none}
.active-table tr:hover td{background:var(--s3)}

/* ── PATIENT HISTORY TAB ── */
.hcard{background:var(--white);border:1px solid var(--b1);border-radius:10px;
  overflow:hidden;margin-bottom:10px;box-shadow:var(--shadow)}
.hcard-head{background:var(--s3);border-bottom:1px solid var(--b1);padding:10px 16px;
  display:flex;align-items:center;gap:10px;font-size:12px;font-family:var(--mono)}
.hcard-body{padding:12px 16px;font-size:12px;color:var(--mu);
  display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.hrow{display:flex;flex-direction:column;gap:1px}
.hkey{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.05em}
.hval{font-family:var(--mono);font-size:11px;color:var(--tx)}

/* ── PATIENT SEARCH ── */
.patient-search-wrap{display:flex;gap:10px;margin-bottom:16px}
.patient-search-wrap input{flex:1}
.patient-item{display:flex;align-items:center;justify-content:space-between;
  padding:12px 16px;background:var(--white);border:1px solid var(--b1);
  border-radius:10px;margin-bottom:6px;cursor:pointer;transition:all .15s;box-shadow:var(--shadow)}
.patient-item:hover{border-color:var(--navy);background:rgba(27,45,92,.03)}
.pat-id{font-family:var(--mono);font-size:13px;font-weight:500}
.pat-meta{font-size:11px;color:var(--mu)}
.stage-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}

/* ── PATIENT REGISTRY (Patient Registry UI) ── */
.patreg-header{display:flex;align-items:flex-end;justify-content:space-between;
  gap:var(--sp-4);margin-bottom:var(--sp-6);flex-wrap:wrap}
.patreg-header-text{flex:1;min-width:0}
.patreg-header .flow-sub{margin:0}
.patreg-cta-new{white-space:nowrap}
.patreg-controls{display:flex;flex-wrap:wrap;gap:var(--sp-3);align-items:flex-end;
  margin-bottom:var(--sp-5)}
.patreg-search-wrap{flex:1 1 320px;min-width:240px}
.patreg-search-input{width:100%;padding:11px 14px;border:1px solid var(--b1);
  border-radius:var(--rd-md);font-size:var(--fs-md);background:var(--white)}
.patreg-search-input:focus{outline:none;border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(27,45,92,.10)}
.patreg-filters{display:flex;gap:var(--sp-3);flex-wrap:wrap}
.patreg-filter{display:flex;flex-direction:column;gap:var(--sp-1);min-width:180px}
.patreg-filter-label{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.07em;color:var(--mu);text-transform:uppercase}
.patreg-filter select{padding:9px 12px;border:1px solid var(--b1);
  border-radius:var(--rd-md);font-size:var(--fs-md);background:var(--white);color:var(--tx)}
.patreg-filter select:focus{outline:none;border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(27,45,92,.10)}
.patreg-status{font-size:var(--fs-sm);color:var(--mu);min-height:18px;
  margin-bottom:var(--sp-3)}
.patreg-status.is-error{color:var(--re)}
.patreg-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
  gap:var(--sp-4)}
.patreg-card{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-lg);padding:var(--sp-5);box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:var(--sp-3);transition:all .15s}
.patreg-card:hover{border-color:var(--navy);box-shadow:var(--shadow-md);
  transform:translateY(-1px)}
.patreg-card-head{display:flex;align-items:flex-start;justify-content:space-between;
  gap:var(--sp-2)}
.patreg-card-name{font-size:var(--fs-lg);font-weight:var(--fw-semi);color:var(--tx);
  letter-spacing:-.01em;line-height:1.25}
.patreg-card-age{font-size:var(--fs-sm);color:var(--mu);margin-top:2px}
.patreg-badge-active{display:inline-flex;align-items:center;gap:4px;
  font-size:10px;font-weight:var(--fw-semi);letter-spacing:.06em;
  text-transform:uppercase;color:var(--gr);
  background:rgba(22,163,74,.10);border:1px solid rgba(22,163,74,.25);
  padding:3px 8px;border-radius:999px}
.patreg-card-meta{display:flex;flex-direction:column;gap:4px}
.patreg-card-line{font-size:var(--fs-sm);color:var(--mu);line-height:1.4;
  display:flex;gap:6px;align-items:baseline}
.patreg-card-line strong{font-weight:var(--fw-med);color:var(--tx);
  font-size:var(--fs-sm)}
/* CLINICAL-READ-1.0 — inline KPI scent. Value dominant over muted label
   (visual doctrine: clinical values dominate their labels). Numbers in mono.
   Rendered by fex_patient_registry_ui.js; CSS stays here with the other
   .patreg-* rules (keeps the module's VG hex/var baseline at 0/0). */
.patreg-card-kpis{display:flex;flex-wrap:wrap;gap:6px 14px;padding:8px 0;
  margin:2px 0;border-top:1px solid var(--b1);border-bottom:1px solid var(--b1)}
.patreg-kpi{display:inline-flex;align-items:baseline;gap:5px}
.patreg-kpi-k{font-size:var(--fs-xs);color:var(--mu);font-weight:var(--fw-med);
  text-transform:uppercase;letter-spacing:.04em}
.patreg-kpi-v{font-size:var(--fs-sm);color:var(--tx);font-weight:var(--fw-semi)}
.patreg-kpi-v.is-mono{font-family:var(--mono)}
.patreg-chips{display:flex;flex-wrap:wrap;gap:6px}
.patreg-chip{font-size:var(--fs-xs);color:var(--mu);background:var(--s2);
  border:1px solid var(--b1);padding:3px 9px;border-radius:999px;
  white-space:nowrap}
.patreg-card-foot{display:flex;align-items:center;justify-content:space-between;
  margin-top:auto;padding-top:var(--sp-3);border-top:1px dashed var(--b1)}
.patreg-card-last{font-size:var(--fs-xs);color:var(--dim)}
.patreg-card-open{background:none;border:none;color:var(--navy);
  font-weight:var(--fw-semi);font-size:var(--fs-sm);cursor:pointer;
  padding:0;letter-spacing:.01em}
.patreg-card-open:hover{text-decoration:underline}
.patreg-empty{text-align:center;padding:48px 20px;color:var(--mu);
  background:var(--s2);border:1px dashed var(--b1);border-radius:var(--rd-lg)}
.patreg-empty-title{font-size:var(--fs-lg);color:var(--tx);font-weight:var(--fw-semi);
  margin-bottom:6px}
.patreg-empty-sub{font-size:var(--fs-sm);color:var(--mu)}
.patreg-detail{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-lg);padding:var(--sp-6);box-shadow:var(--shadow);
  margin-top:var(--sp-3)}
.patreg-detail-back{margin-bottom:var(--sp-4)}
.patreg-detail-body{display:flex;flex-direction:column;gap:var(--sp-4)}
.patreg-detail-name{font-size:var(--fs-2xl);font-weight:var(--fw-semi);
  color:var(--tx);letter-spacing:-.01em}
.patreg-detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:var(--sp-4)}
.patreg-detail-field{display:flex;flex-direction:column;gap:2px}
.patreg-detail-field-label{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.08em;text-transform:uppercase;color:var(--mu)}
.patreg-detail-field-value{font-size:var(--fs-md);color:var(--tx)}
.patreg-detail-note{margin-top:var(--sp-5);padding:var(--sp-3) var(--sp-4);
  background:var(--s2);border:1px dashed var(--b1);border-radius:var(--rd-md);
  font-size:var(--fs-sm);color:var(--mu);text-align:center}
.patreg-cta-new-callout{background:#FFFBEB;border:1px solid #FDE68A;
  color:var(--ye);padding:10px 14px;border-radius:var(--rd-md);
  font-size:var(--fs-sm);margin-bottom:var(--sp-3)}

/* ── PATIENT CREATE MODAL (Patient Registry — full create flow) ── */
.patreg-modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.55);
  z-index:9500;display:none;align-items:center;justify-content:center;
  padding:var(--sp-4);backdrop-filter:blur(3px)}
.patreg-modal-bg.is-open{display:flex;animation:fadeUp .18s ease}
.patreg-modal{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-xl);width:min(640px,100%);max-height:92vh;
  overflow:auto;box-shadow:var(--shadow-lg);display:flex;flex-direction:column}
.patreg-modal-head{position:sticky;top:0;z-index:1;background:var(--white);
  border-bottom:1px solid var(--b1);padding:var(--sp-5) var(--sp-6);
  display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4)}
.patreg-modal-head-text{flex:1;min-width:0}
.patreg-modal-title{font-size:var(--fs-2xl);font-weight:var(--fw-semi);
  color:var(--tx);letter-spacing:-.01em;line-height:1.2}
.patreg-modal-sub{font-size:var(--fs-sm);color:var(--mu);margin-top:4px}
.patreg-modal-close{background:none;border:none;font-size:22px;line-height:1;
  color:var(--mu);cursor:pointer;padding:4px 8px;border-radius:var(--rd-sm)}
.patreg-modal-close:hover{background:var(--s2);color:var(--tx)}
.patreg-modal-body{padding:var(--sp-5) var(--sp-6);
  display:flex;flex-direction:column;gap:var(--sp-6)}
.patreg-create-section{display:flex;flex-direction:column;gap:var(--sp-3)}
.patreg-create-section-title{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.08em;text-transform:uppercase;color:var(--mu);
  border-left:3px solid var(--navy);padding-left:var(--sp-2);line-height:1}
.patreg-create-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:var(--sp-3) var(--sp-4)}
.patreg-create-field{display:flex;flex-direction:column;gap:4px;min-width:0}
.patreg-create-label{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.07em;text-transform:uppercase;color:var(--mu)}
.patreg-create-label .req{color:var(--re);margin-left:3px}
.patreg-create-label .opt{color:var(--dim);font-weight:var(--fw-reg);
  letter-spacing:0;text-transform:none;margin-left:4px}
.patreg-create-input,
.patreg-create-select,
.patreg-create-textarea{width:100%;padding:10px 12px;border:1px solid var(--b1);
  border-radius:var(--rd-md);font-size:var(--fs-md);background:var(--white);
  color:var(--tx);font-family:var(--sans);box-sizing:border-box}
.patreg-create-input:focus,
.patreg-create-select:focus,
.patreg-create-textarea:focus{outline:none;border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(27,45,92,.10)}
.patreg-create-input.is-invalid,
.patreg-create-select.is-invalid,
.patreg-create-textarea.is-invalid{border-color:var(--re);
  box-shadow:0 0 0 3px rgba(220,38,38,.10)}
.patreg-create-textarea{min-height:64px;resize:vertical}
.patreg-create-err{font-size:var(--fs-xs);color:var(--re);min-height:14px}
.patreg-create-hint{font-size:var(--fs-xs);color:var(--dim)}
.patreg-create-radio-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
  gap:var(--sp-2)}
.patreg-create-radio{display:flex;align-items:center;gap:var(--sp-2);
  padding:10px 12px;border:1px solid var(--b1);border-radius:var(--rd-md);
  cursor:pointer;font-size:var(--fs-md);color:var(--tx);
  transition:border-color .12s,background .12s}
.patreg-create-radio:hover{border-color:var(--navy);background:rgba(27,45,92,.03)}
.patreg-create-radio.is-checked{border-color:var(--navy);background:rgba(27,45,92,.06)}
.patreg-create-radio input{margin:0;accent-color:var(--navy)}
.patreg-create-checkbox{display:flex;align-items:center;gap:var(--sp-2);
  font-size:var(--fs-md);color:var(--tx);cursor:pointer}
.patreg-create-checkbox input{accent-color:var(--navy);width:16px;height:16px}
.patreg-create-banner{padding:10px 12px;border-radius:var(--rd-md);
  font-size:var(--fs-sm);line-height:1.4}
.patreg-create-banner.is-error{background:#FEF2F2;border:1px solid #FECACA;
  color:var(--re)}
.patreg-create-banner.is-warn{background:#FFFBEB;border:1px solid #FDE68A;
  color:var(--ye)}
.patreg-create-foot{position:sticky;bottom:0;background:var(--white);
  border-top:1px solid var(--b1);padding:var(--sp-4) var(--sp-6);
  display:flex;align-items:center;justify-content:space-between;
  gap:var(--sp-3);flex-wrap:wrap}
.patreg-create-foot-actions{display:flex;gap:var(--sp-2);margin-left:auto}
.patreg-create-privacy{font-size:var(--fs-xs);color:var(--dim);
  flex:1 1 240px;line-height:1.4}
@media (max-width:640px){
  .patreg-header{align-items:stretch}
  .patreg-cta-new{align-self:flex-start}
  .patreg-cards{grid-template-columns:1fr}
  .patreg-filters{width:100%}
  .patreg-filter{flex:1 1 140px;min-width:140px}
  .patreg-modal-bg{padding:0;align-items:stretch}
  .patreg-modal{width:100%;max-height:100vh;border-radius:0;height:100vh}
  .patreg-modal-head,
  .patreg-modal-body,
  .patreg-create-foot{padding-left:var(--sp-4);padding-right:var(--sp-4)}
  .patreg-create-grid{grid-template-columns:1fr}
  .patreg-create-radio-group{grid-template-columns:1fr}
}

/* ── PATIENT COCKPIT (Patient detail shell — read-only) ── */
.patcock{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;
  gap:var(--sp-4)}
.patcock-back{display:inline-flex;align-items:center;gap:6px;background:none;
  border:none;color:var(--navy);font-weight:var(--fw-semi);font-size:var(--fs-md);
  cursor:pointer;padding:0;align-self:flex-start;font-family:var(--sans)}
.patcock-back:hover{text-decoration:underline}
.patcock-header{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-lg);padding:var(--sp-5) var(--sp-6);
  display:flex;align-items:flex-start;justify-content:space-between;
  gap:var(--sp-4);flex-wrap:wrap;box-shadow:var(--shadow)}
.patcock-header-main{flex:1;min-width:260px;display:flex;flex-direction:column;
  gap:var(--sp-2)}
.patcock-name{font-size:var(--fs-3xl);font-weight:var(--fw-semi);color:var(--tx);
  letter-spacing:-.01em;line-height:1.2}
.patcock-sub{font-size:var(--fs-sm);color:var(--mu);display:flex;flex-wrap:wrap;
  gap:6px;align-items:center}
.patcock-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;
  border:1px solid var(--b1);border-radius:999px;background:var(--s2);
  font-size:var(--fs-xs);color:var(--mu);white-space:nowrap}
.patcock-chip strong{color:var(--tx);font-weight:var(--fw-med)}
.patcock-owner{font-family:var(--mono);font-size:var(--fs-xs);color:var(--mu);
  white-space:nowrap}
.patcock-grid{display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 480px), 1fr));
  gap:var(--sp-4)}
/* ── CARRY-FORWARD-LITE-1.0 — longitudinal reference strip in the hoja ── */
.m0c-carryforward{display:flex;flex-direction:column;gap:3px;background:var(--s2);
  border:1px solid var(--b1);border-left:3px solid var(--navy);border-radius:var(--rd-sm);
  padding:9px 12px;margin:10px 0 4px}
.m0c-cf-title{font-size:var(--fs-xs);font-weight:var(--fw-semi);text-transform:uppercase;
  letter-spacing:.06em;color:var(--tx)}
.m0c-cf-vals{font-family:var(--mono);font-size:var(--fs-sm);color:var(--tx)}
.m0c-cf-imp{font-size:var(--fs-sm);color:var(--mu)}
.m0c-cf-boundary{font-size:var(--fs-xs);color:var(--mu)}
/* ── ARCO-DEL-TRATAMIENTO-1.0 — documentary treatment ribbon ── */
.patcock-arc-rail{display:flex;align-items:flex-start;gap:0;flex-wrap:nowrap;overflow-x:auto;padding:6px 2px 2px}
.patcock-arc-stage{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:86px;flex:0 0 auto}
.patcock-arc-link{flex:1 1 18px;min-width:14px;height:1px;background:var(--b2);margin-top:11px}
.patcock-arc-dot{width:12px;height:12px;border-radius:50%;border:2px solid var(--b2);background:var(--white);box-sizing:border-box}
.patcock-arc-stage.is-done .patcock-arc-dot{background:var(--navy);border-color:var(--navy)}
.patcock-arc-stage.is-part .patcock-arc-dot{border-color:var(--navy);background:var(--s3)}
.patcock-arc-stage.is-active .patcock-arc-dot{box-shadow:0 0 0 3px var(--fex-brand-mark-bg);border-color:var(--fex-accent)}
.patcock-arc-label{font-size:var(--fs-xs);color:var(--mu);letter-spacing:.02em;text-align:center}
.patcock-arc-stage.is-done .patcock-arc-label,.patcock-arc-stage.is-active .patcock-arc-label{color:var(--tx);font-weight:var(--fw-med)}
.patcock-arc-sub{font-family:var(--mono);font-size:9px;color:var(--mu)}
.patcock-arc-boundary{font-size:var(--fs-xs);color:var(--mu);margin-top:8px}
.patcock-card{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-lg);padding:var(--sp-5);display:flex;
  flex-direction:column;gap:var(--sp-3);box-shadow:var(--shadow)}
.patcock-card-title{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.10em;text-transform:uppercase;color:var(--mu);
  border-left:3px solid var(--navy);padding-left:var(--sp-2);line-height:1}
.patcock-active-case,.patcock-empty-case{grid-column:1 / -1}
/* PR E — follow-up display shell (read-only preview card). Full-width,
   mobile-safe (inherits the responsive single-column grid at narrow
   widths). No capture, no sign, no recommendation. */
.patcock-fu{grid-column:1 / -1}
.patcock-fu-sec{font-size:var(--fs-sm);color:var(--tx);background:var(--s2);
  border:1px solid var(--b1);border-radius:8px;padding:8px 11px;
  display:flex;flex-direction:column;gap:var(--sp-2)}
.patcock-fu-sec-label{font-weight:var(--fw-semi)}
.patcock-fu-badge{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.03em;border-radius:6px;padding:2px 7px;border:1px solid var(--b1)}
.patcock-fu-sec[data-fu-kind="structured"] .patcock-fu-badge{color:var(--tx)}
.patcock-fu-sec[data-fu-kind="free_text"] .patcock-fu-badge{color:var(--mu)}
.patcock-fu-fallback-note{font-size:var(--fs-xs);color:var(--mu);
  margin-top:var(--sp-2);line-height:1.5}
.patcock-fu-check{display:flex;align-items:center;gap:6px;font-size:var(--fs-sm)}
.patcock-fu-dxlist,.patcock-fu-docs{display:flex;flex-direction:column;gap:4px;
  max-height:180px;overflow-y:auto}
.patcock-fu-pendrow{display:flex;align-items:center;gap:6px}
.patcock-fu-pendrow input[type="text"]{flex:1;font:inherit;font-size:var(--fs-sm);
  padding:5px 8px;border:1px solid var(--b2);border-radius:6px}
.patcock-fu-pend-del{border:0;background:none;color:var(--mu);cursor:pointer;
  font-size:var(--fs-sm);line-height:1;padding:2px 6px}
.patcock-fu-refs{margin:0;padding-left:18px}
.patcock-fu-empty{font-size:var(--fs-xs);color:var(--mu);font-style:italic}
.patcock-fu-footnote{font-size:var(--fs-xs);color:var(--mu);
  margin-top:var(--sp-3);line-height:1.5;font-style:italic}
.patcock-case-row{display:flex;flex-wrap:wrap;gap:var(--sp-3) var(--sp-4);
  font-size:var(--fs-md);color:var(--tx)}
.patcock-case-field{display:flex;flex-direction:column;gap:2px;min-width:120px}
.patcock-case-field .k{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.06em;text-transform:uppercase;color:var(--mu)}
.patcock-case-field .v{color:var(--tx);font-size:var(--fs-md)}
.patcock-case-field .v.is-mono{font-family:var(--mono);font-size:var(--fs-sm)}
.patcock-status-active{display:inline-flex;align-items:center;color:var(--gr);
  font-weight:var(--fw-semi);font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;background:rgba(22,163,74,.10);
  border:1px solid rgba(22,163,74,.25);padding:2px 8px;border-radius:999px;
  width:fit-content}
.patcock-card-empty{font-size:var(--fs-md);color:var(--mu);padding:var(--sp-2) 0;
  line-height:1.5}
.patcock-card-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);
  margin-top:var(--sp-2)}
.patcock-btn{padding:9px 16px;border:1px solid var(--b1);background:var(--white);
  color:var(--tx);border-radius:var(--rd-md);font-size:var(--fs-md);
  font-weight:var(--fw-semi);cursor:pointer;font-family:var(--sans)}
.patcock-btn:hover{border-color:var(--navy);background:var(--s2)}
.patcock-btn--primary{background:var(--navy);border-color:var(--navy);color:#fff}
.patcock-btn--primary:hover{background:var(--navy2);border-color:var(--navy2)}
.patcock-btn[disabled],
.patcock-btn[aria-disabled="true"]{opacity:.55;cursor:not-allowed;
  background:var(--white);border-color:var(--b1);color:var(--mu)}
.patcock-btn-hint{font-size:var(--fs-xs);color:var(--mu);
  margin-left:var(--sp-2);align-self:center}
.patcock-skel{background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-lg);padding:var(--sp-5);
  display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)}
.patcock-skel-bar{height:14px;background:linear-gradient(90deg,var(--s3) 0%,
  var(--s2) 50%,var(--s3) 100%);background-size:200% 100%;
  animation:patcock-shimmer 1.4s infinite ease-in-out;border-radius:6px}
.patcock-skel-bar.is-short{width:48%}
.patcock-skel-bar.is-medium{width:72%}
@keyframes patcock-shimmer{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}
.patcock-error{background:#FEF2F2;border:1px solid #FECACA;color:var(--re);
  border-radius:var(--rd-lg);padding:var(--sp-5);font-size:var(--fs-md);
  line-height:1.5}
.patcock-error-actions{display:flex;gap:var(--sp-2);margin-top:var(--sp-3)}
.patcock-card-actions .patcock-btn-helper-row{display:flex;
  align-items:center;gap:var(--sp-2)}
/* OPS-1C-B — Patient Cockpit appointments card */
.patcock-appts{grid-column:1 / -1}
.patcock-appts-grid{display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 280px), 1fr));
  gap:var(--sp-3) var(--sp-4)}
.patcock-appts-slot{display:flex;flex-direction:column;gap:6px;
  padding:var(--sp-3);background:var(--s2);border:1px solid var(--b1);
  border-radius:var(--rd-md)}
.patcock-appts-slot-label{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.06em;text-transform:uppercase;color:var(--mu)}
.patcock-appts-slot-when{font-size:var(--fs-md);color:var(--tx);
  font-weight:var(--fw-med);font-feature-settings:"tnum" 1}
.patcock-appts-slot-meta{font-size:var(--fs-sm);color:var(--mu);
  display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.patcock-appts-status{display:inline-flex;align-items:center;
  font-size:10px;font-weight:var(--fw-semi);letter-spacing:.06em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  background:rgba(15,42,82,.06);color:var(--navy);
  border:1px solid rgba(15,42,82,.18)}
.patcock-appts-status.is-cancelled{background:rgba(220,38,38,.06);
  color:var(--re);border-color:rgba(220,38,38,.18)}
.patcock-appts-status.is-completed{background:rgba(22,163,74,.10);
  color:var(--gr);border-color:rgba(22,163,74,.25)}
.patcock-appts-empty{font-size:var(--fs-sm);color:var(--mu);
  font-style:italic}
.patcock-appts-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);
  margin-top:var(--sp-2)}
.patcock-btn--ghost{background:transparent;border:1px dashed var(--b1)}
.patcock-btn--small{padding:6px 12px;font-size:var(--fs-sm)}
/* OPS-1C-C — Patient Cockpit documents / labs / AI tiles */
.patcock-sum{grid-column:1 / -1}
.patcock-sum-grid{display:grid;
  grid-template-columns:repeat(auto-fit, minmax(min(100%, 240px), 1fr));
  gap:var(--sp-3) var(--sp-4)}
.patcock-sum-tile{display:flex;flex-direction:column;gap:var(--sp-2);
  padding:var(--sp-3) var(--sp-3) var(--sp-3) var(--sp-3);
  background:var(--white);border:1px solid var(--b1);
  border-radius:var(--rd-md)}
.patcock-sum-tile.is-unavailable{background:var(--s2);
  border-style:dashed}
.patcock-sum-tile-label{font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.06em;text-transform:uppercase;color:var(--mu)}
.patcock-sum-tile-num-row{display:flex;align-items:baseline;gap:var(--sp-3);
  flex-wrap:wrap}
.patcock-sum-total{font-size:var(--fs-3xl);font-weight:var(--fw-semi);
  color:var(--tx);line-height:1;font-feature-settings:"tnum" 1}
.patcock-sum-total.is-unknown{color:var(--mu);font-weight:var(--fw-med)}
.patcock-sum-pending{display:inline-flex;align-items:center;gap:4px;
  font-size:var(--fs-xs);font-weight:var(--fw-semi);
  letter-spacing:.06em;text-transform:uppercase;padding:2px 8px;
  border-radius:999px;background:rgba(217,119,6,.08);color:#9A3412;
  border:1px solid rgba(217,119,6,.22)}
.patcock-sum-pending.is-zero{background:rgba(22,163,74,.08);color:var(--gr);
  border-color:rgba(22,163,74,.22)}
.patcock-sum-pending.is-unknown{background:transparent;color:var(--mu);
  border-color:var(--b1)}
.patcock-sum-pending-num{font-feature-settings:"tnum" 1}
.patcock-sum-note{font-size:var(--fs-xs);color:var(--mu);line-height:1.4}
.patcock-sum-note.is-strong{color:var(--tx);font-weight:var(--fw-med)}
.patcock-sum-tile-actions{display:flex;gap:var(--sp-2);
  margin-top:auto;padding-top:var(--sp-2)}
/* OPS-1C-E — Timeline / Reports / Private-insights placeholders */
.patcock-tl{grid-column:1 / -1}
.patcock-tl-list{display:flex;flex-direction:column;gap:var(--sp-3)}
.patcock-tl-row{display:flex;align-items:flex-start;gap:var(--sp-3);
  padding-left:6px}
.patcock-tl-dot{flex:0 0 auto;width:10px;height:10px;border-radius:50%;
  background:var(--navy);margin-top:7px;
  box-shadow:0 0 0 3px rgba(15,42,82,.10)}
.patcock-tl-body{display:flex;flex-direction:column;gap:2px;
  font-size:var(--fs-sm);color:var(--tx);min-width:0}
.patcock-tl-when{font-size:var(--fs-xs);color:var(--mu);
  font-feature-settings:"tnum" 1}
.patcock-tl-label{font-size:var(--fs-md);color:var(--tx);
  font-weight:var(--fw-med);word-break:break-word}
.patcock-tl-meta{font-size:var(--fs-xs);color:var(--mu);
  display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.patcock-tl-source{display:inline-flex;align-items:center;
  font-size:10px;font-weight:var(--fw-semi);letter-spacing:.06em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  background:var(--s2);color:var(--mu);border:1px solid var(--b1)}
.patcock-tl-empty{font-size:var(--fs-sm);color:var(--mu);
  font-style:italic;padding:var(--sp-2) 0}
.patcock-tl-footnote{font-size:var(--fs-xs);color:var(--mu);
  border-top:1px dashed var(--b1);padding-top:var(--sp-2);
  margin-top:var(--sp-2);line-height:1.5}
.patcock-rep{display:flex;flex-direction:column;gap:var(--sp-2)}
.patcock-rep-empty{font-size:var(--fs-md);color:var(--mu);
  padding:var(--sp-2) 0}
/* R-D export status chip — Patient-Cockpit live wiring (per case).
   Sober console grammar: a single semantic dot (muted = blocked/checking,
   green = export-ready), mono-free, no gradient/badge. Read-only status. */
.patcock-rep-export{display:flex;flex-direction:column;gap:4px;
  font-size:var(--fs-md);padding:var(--sp-2) 0}
.patcock-rep-export-chip{display:inline-flex;align-items:center;gap:6px;
  font-weight:var(--fw-semi);color:var(--mu)}
.patcock-rep-export-chip::before{content:"";width:7px;height:7px;
  border-radius:50%;background:var(--mu);flex:none}
.patcock-rep-export[data-state="ready"] .patcock-rep-export-chip{color:var(--gr)}
.patcock-rep-export[data-state="ready"] .patcock-rep-export-chip::before{
  background:var(--gr)}
.patcock-rep-export-note{font-size:var(--fs-xs);color:var(--mu)}
.patcock-ins{display:flex;flex-direction:column;gap:var(--sp-2);
  border-style:dashed}
.patcock-ins-head{display:flex;align-items:center;gap:var(--sp-2);
  flex-wrap:wrap}
.patcock-ins-badge{display:inline-flex;align-items:center;
  font-size:10px;font-weight:var(--fw-semi);letter-spacing:.06em;
  text-transform:uppercase;padding:2px 8px;border-radius:999px;
  background:rgba(15,42,82,.06);color:var(--navy);
  border:1px solid rgba(15,42,82,.18)}
.patcock-ins-list{display:flex;flex-direction:column;gap:6px;
  margin:0;padding:0;list-style:none}
.patcock-ins-list li{font-size:var(--fs-sm);color:var(--mu);
  line-height:1.5;padding-left:14px;position:relative}
.patcock-ins-list li::before{content:"";position:absolute;left:0;top:8px;
  width:6px;height:6px;border-radius:50%;background:var(--mu)}
@media (max-width:880px){
  .patcock-header{padding:var(--sp-4)}
  .patcock-name{font-size:var(--fs-2xl)}
}

/* ════════════ UI-1B — FEX Clinical OS shell (Patient Cockpit only) ════════════
   Additive, fex-shell-* / fex-* namespaced. Wraps ONLY #view-patient-detail.
   No patcock-* collisions: the existing cockpit cards keep their classes and
   render unchanged inside .fex-workspace > .patcock#patcock-root > #patcock-content.
   The within-case module sidebar is shell chrome — Agenda remains the app home
   (the "‹ Agenda" link returns there); the breadcrumb root returns to the
   Patient Registry. No primary-actions footbar on the cockpit (it is a read
   surface, not a draftable document — see decision (d)). */
#view-patient-detail .main-wrap{max-width:none;width:100%;margin:0;padding:0}
/* Owner decision (2026-06-09): the right "Recorrido del caso" rail (fexrail)
   duplicated the left sidebar's case-stage navigation, so the shell drops to
   two columns (sidebar + workspace) and the workspace reclaims the width. The
   rail markup + its JS stay in the DOM (display:none below) so the ui1b shell
   smoke / browser-QA structural assertions hold and it can be re-enabled. */
.fex-shell{display:grid;grid-template-columns:236px minmax(0,1fr);grid-template-rows:auto 1fr;
  grid-template-areas:"fexside fexhdr" "fexside fexws";min-height:calc(100vh - 64px);background:var(--bg)}
/* ── sidebar ── */
.fex-sidebar{grid-area:fexside;background:var(--fex-brand-gradient);color:#C8D2E6;display:flex;flex-direction:column;
  min-width:0;position:sticky;top:64px;align-self:start;height:calc(100vh - 64px);overflow-y:auto}
.fex-sidebar-top{padding:12px 14px 6px}
.fex-agenda-link{display:flex;align-items:center;gap:8px;width:100%;text-align:left;color:#9FB0CE;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.09);border-radius:8px;padding:7px 10px;font-size:var(--fs-sm);font-weight:var(--fw-semi);
  letter-spacing:.02em;cursor:pointer}
.fex-agenda-link:hover{color:#fff;background:rgba(255,255,255,.10)}
.fex-sidebar-brand{display:flex;align-items:center;gap:9px;padding:10px 14px 4px}
.fex-sidebar-mark{flex:0 0 30px;width:30px;height:30px;border-radius:8px;background:#fff;color:var(--navy);display:flex;
  align-items:center;justify-content:center;font-weight:var(--fw-bold);letter-spacing:.04em;font-size:12px}
.fex-sidebar-brand-name{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:#fff;line-height:1.1}
.fex-sidebar-brand-sub{font-size:10px;color:#8FA0BE;margin-top:1px;letter-spacing:.02em}
.fex-mode-chip{display:inline-flex;align-items:center;gap:6px;margin:8px 14px 8px;font-size:10px;font-weight:var(--fw-bold);
  letter-spacing:.04em;text-transform:uppercase;color:#C8D2E6;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.10);
  border-radius:7px;padding:4px 9px;width:max-content}
.fex-mode-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--blue)}
.fex-mode-chip.is-record::before{background:#7AAE6A}
.fex-nav{flex:1;padding:2px 10px 14px;display:flex;flex-direction:column}
.fex-nav-group{font-size:9px;font-weight:var(--fw-bold);letter-spacing:.09em;text-transform:uppercase;color:#8093B2;padding:12px 10px 6px}
.fex-nav-item{display:flex;align-items:center;gap:11px;padding:9px 10px;border-radius:8px;color:#C8D2E6;text-decoration:none;
  font-size:var(--fs-md);font-weight:var(--fw-med);margin:1px 0;position:relative;background:none;border:0;width:100%;text-align:left;cursor:pointer}
.fex-nav-item .fex-nav-ic{flex:0 0 16px;width:16px;height:16px;opacity:.85;display:flex;align-items:center;justify-content:center}
.fex-nav-item .fex-nav-ic svg{width:16px;height:16px}
.fex-nav-item:hover{background:rgba(255,255,255,.06);color:#fff}
.fex-nav-item.is-active{background:rgba(255,255,255,.12);color:#fff;font-weight:var(--fw-semi)}
.fex-nav-item.is-active::before{content:"";position:absolute;left:-10px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--blue)}
.fex-nav-item.is-disabled{opacity:.42;cursor:not-allowed}
.fex-nav-item .fex-nav-tag{margin-left:auto;font-size:8.5px;font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase;color:#8FA0BE}
.fex-sidebar-foot{border-top:1px solid rgba(255,255,255,.08);padding:10px 14px 14px}
.fex-tenant-chip{display:flex;align-items:center;gap:8px;font-size:10px;color:#8FA0BE;background:rgba(255,255,255,.05);border-radius:8px;padding:6px 9px;margin-bottom:8px}
.fex-tenant-chip::before{content:"";width:6px;height:6px;border-radius:50%;background:#6EBF93;flex:0 0 6px}
.fex-user-chip{display:flex;align-items:center;gap:9px}
.fex-user-av{flex:0 0 28px;width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;font-size:10px;
  font-weight:var(--fw-bold);display:flex;align-items:center;justify-content:center;letter-spacing:.03em}
.fex-user-nm{font-size:var(--fs-sm);color:#fff;font-weight:var(--fw-semi);line-height:1.1}
.fex-user-rl{font-size:10px;color:#8FA0BE}
/* ── shell header ── */
.fex-shell-header{grid-area:fexhdr;background:var(--white);border-bottom:1px solid var(--b1);display:flex;align-items:center;
  gap:12px;padding:0 var(--sp-6);min-height:54px;position:sticky;top:64px;z-index:6;flex-wrap:wrap}
.fex-shell-hamburger{display:none;border:1px solid var(--b1);background:var(--white);border-radius:8px;width:32px;height:32px;
  align-items:center;justify-content:center;color:var(--mu);cursor:pointer}
.fex-clinical-breadcrumb{display:flex;align-items:center;gap:7px;min-width:0;flex:1 1 auto;overflow:hidden}
.fex-crumb-back{background:none;border:0;color:var(--mu);font-size:var(--fs-md);font-weight:var(--fw-med);cursor:pointer;
  padding:2px 4px;flex:0 0 auto;border-radius:6px}
.fex-crumb-back:hover{color:var(--fex-accent);text-decoration:underline}
.fex-crumb-sep{color:var(--dim);font-size:11px;flex:0 0 auto}
.fex-crumb-mid{font-size:var(--fs-md);color:var(--mu);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:24px}
.fex-crumb-cur{font-size:var(--fs-md);color:var(--tx);font-weight:var(--fw-semi);flex:0 0 auto;white-space:nowrap}
.fex-crumb-kind{font-size:9px;font-weight:var(--fw-bold);letter-spacing:.04em;text-transform:uppercase;color:var(--mu);
  background:var(--s2);border:1px solid var(--b1);border-radius:5px;padding:1px 6px;margin-left:3px}
.fex-shell-header-spacer{flex:1 1 0}
.fex-owner-chip{display:flex;align-items:center;gap:7px;flex:0 0 auto;background:var(--s2);border:1px solid var(--b1);
  border-radius:999px;padding:3px 10px 3px 4px;font-size:var(--fs-sm);color:var(--mu);white-space:nowrap;max-width:260px;overflow:hidden}
.fex-owner-chip .fex-owner-av{flex:0 0 20px;width:20px;height:20px;border-radius:50%;background:var(--s3);color:var(--navy);font-size:9px;
  font-weight:var(--fw-bold);display:flex;align-items:center;justify-content:center}
.fex-owner-chip .fex-owner-nm{color:var(--tx);font-weight:var(--fw-semi);overflow:hidden;text-overflow:ellipsis}
.fex-review-status{display:inline-flex;align-items:center;gap:6px;flex:0 0 auto;font-size:var(--fs-sm);font-weight:var(--fw-semi);
  border-radius:999px;padding:4px 11px 4px 9px;border:1px solid var(--b1);background:var(--s2);color:var(--mu);white-space:nowrap}
.fex-review-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.7}
.fex-review-status.is-active{background:rgba(22,163,74,.10);color:var(--fex-good);border-color:rgba(22,163,74,.25)}
.fex-review-status.is-muted{background:var(--s2);color:var(--dim);border-color:var(--b1)}
.fex-shell-header .fex-mode-chip{margin:0;color:var(--mu);background:var(--s2);border:1px solid var(--b1);flex:0 0 auto}
.fex-shell-header .fex-mode-chip::before{background:var(--fex-accent)}
.fex-shell-header .fex-mode-chip.is-record::before{background:var(--fex-good)}
.fex-icon-btn{border:1px solid var(--b1);background:var(--white);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;
  justify-content:center;color:var(--dim);cursor:pointer;flex:0 0 auto}
.fex-icon-btn svg{width:16px;height:16px}
.fex-icon-btn:hover{color:var(--tx);background:var(--s2)}
.fex-shell-header-utils{display:flex;align-items:center;gap:7px;flex:0 0 auto}
/* ── workspace ── */
.fex-workspace{grid-area:fexws;min-width:0;padding:var(--sp-6) var(--sp-6) var(--sp-10);overflow-x:hidden}
.fex-workspace .patcock{background:none;border:0;padding:0}
.fex-workspace .patcock-back{display:none}        /* the back affordance lives in the breadcrumb now */
/* CLIN-1A-B — the EXISTING M0 assessment surface (#view-m0-assessment),
   relocated into .fex-workspace by the Consultas module (it keeps its id —
   every M0 JS selector is `#view-m0-assessment …`; the cockpit cards in
   #patcock-root are hidden while it is hosted here). Neutralise the
   full-page `.view` layout: no `min-height:100vh`, no fadeUp animation, and
   let the inner `.main-wrap` fill the workspace like the cockpit cards do
   instead of being centred at 780px. */
.fex-workspace > #view-m0-assessment.fex-m0-host{display:block;min-height:0;animation:none;opacity:1}
.fex-workspace > #view-m0-assessment.fex-m0-host > .main-wrap{max-width:none;margin:0;padding:0}
/* ── M0-LEGACY-PANEL-CLEANUP-1 (2026-05-14) ──────────────────────────────
   Hide the legacy M0.4 pre-consult assessment card (#view-m0-assessment >
   .main-wrap > .m0-card:not(.m0-gate-banner)) and its "Sign assessment"
   button (#m0-sign-btn). CLIN-1A-C (#m0-consultation-panel) is now the
   canonical clinical surface for fertility_consult cases; both legacy and
   canonical sign buttons coexisted, which led to clinicians clicking the
   legacy button and hitting a 400 missing_critical from the same endpoint
   the canonical button would have called.
   Markup and JS handlers are intentionally preserved (smoke sentinels and
   existing M0.4b/c JS still query #m0-sign-btn / .m0-card via
   `_m0RenderAssessment` and `loadM0Assessment`); only the visual surface is
   retired. `!important` overrides any later inline `style.display = ''`
   from those handlers. Gate banner (#m0-needs-fertility-consult-case)
   remains visible because it has the `.m0-gate-banner` modifier. */
#view-m0-assessment > .main-wrap > .m0-card:not(.m0-gate-banner){display:none !important}
/* M0-UI-MODULE-EXTRACT-1.0: the CLIN-1A-C.C panel CSS (`.m0c-*`,
   ~108 lines including 3 media queries) that previously lived here
   inline is now injected by fex_m0_ui.js into document.head as
   <style id="m0c-injected-styles"> on script load. The
   #m0-consultation-panel defaults to display:none and only becomes
   visible after the existing clin1acRenderFromGet flow finds an
   assessment payload, so no observable behaviour changes. See
   docs/frontend/FRONTEND_MONOLITH_CONTAINMENT_1.md §6.2. */
/* ── case timeline rail ── */
.fex-case-timeline{display:none;grid-area:fexrail;background:var(--white);border-left:1px solid var(--b1);position:sticky;top:64px;align-self:start;
  height:calc(100vh - 64px);overflow-y:auto;padding:var(--sp-5) var(--sp-4) var(--sp-6)}
.fex-rail-title{font-size:var(--fs-md);font-weight:var(--fw-semi);color:var(--tx);margin-bottom:10px}
.fex-seg-bar{display:flex;gap:3px;margin-bottom:6px}
.fex-seg-bar span{height:5px;flex:1;border-radius:2px;background:var(--b1)}
.fex-seg-bar span.is-on{background:var(--fex-accent)}
.fex-seg-bar span.is-cur{background:var(--fex-accent);opacity:.5}
.fex-seg-cap{font-size:10px;color:var(--dim);margin-bottom:14px}
.fex-stages{display:flex;flex-direction:column;gap:2px}
.fex-stage{display:flex;align-items:center;gap:9px;padding:7px 8px;border-radius:7px;border:1px solid transparent}
.fex-stage .fex-stage-mk{flex:0 0 8px;width:8px;height:8px;border-radius:2.5px;background:var(--white);border:1.5px solid var(--b2)}
.fex-stage.is-done .fex-stage-mk{background:var(--fex-accent);border-color:var(--fex-accent)}
.fex-stage.is-cur{background:rgba(3,105,161,.07);border-color:rgba(3,105,161,.18)}
.fex-stage.is-cur .fex-stage-mk{background:linear-gradient(90deg,var(--fex-accent) 0 50%,#fff 50% 100%);border-color:var(--fex-accent)}
.fex-stage .fex-stage-nm{flex:1 1 auto;font-size:var(--fs-sm);font-weight:var(--fw-semi);color:var(--tx);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fex-stage.is-future .fex-stage-nm{color:var(--dim);font-weight:var(--fw-med)}
.fex-stage.is-cur .fex-stage-nm{color:var(--fex-accent)}
.fex-stage .fex-stage-dt{flex:0 0 auto;font-size:10px;color:var(--mu);white-space:nowrap}
.fex-stage.is-future .fex-stage-dt{color:var(--dim)}
.fex-stage .fex-stage-now{flex:0 0 auto;margin-left:5px;font-size:8.5px;font-weight:var(--fw-bold);letter-spacing:.05em;text-transform:uppercase;
  color:#fff;background:var(--fex-accent);border-radius:5px;padding:2px 6px}
.fex-rail-disclaimer{margin-top:16px;border-top:1px dashed var(--b1);padding-top:10px;font-size:10px;color:var(--dim);line-height:1.55}
/* ── mobile bottom nav + drawer ── */
.fex-shell-botnav{display:none;position:fixed;left:0;right:0;bottom:0;z-index:41;background:var(--navy);align-items:stretch;
  justify-content:space-around;padding:4px 6px;border-top:1px solid rgba(255,255,255,.08);height:54px}
.fex-shell-botnav button{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#8FA0BE;
  background:none;border:0;font-size:9px;font-weight:var(--fw-semi);cursor:pointer;border-radius:8px}
.fex-shell-botnav button .fex-nav-ic svg{width:17px;height:17px}
.fex-shell-botnav button.is-active{color:#fff}
.fex-shell-botnav button.is-active .fex-nav-ic{color:var(--blue)}
.fex-shell-scrim{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:60}
.fex-shell-drawer{display:none;position:fixed;top:0;left:0;bottom:0;width:262px;background:var(--fex-brand-gradient);z-index:61;
  color:#C8D2E6;flex-direction:column;box-shadow:var(--shadow-lg);overflow-y:auto}
body.fex-nav-open .fex-shell-scrim{display:block}
body.fex-nav-open .fex-shell-drawer{display:flex}
.fex-primary-actions{display:none}   /* reserved for future document modules (CLIN-1A); not used on the cockpit */
@media (max-width:980px){
  .fex-shell{grid-template-columns:1fr;grid-template-rows:auto auto;grid-template-areas:"fexhdr" "fexws";min-height:calc(100vh - 64px)}
  .fex-sidebar,.fex-case-timeline{display:none}
  .fex-shell-hamburger{display:flex}
  .fex-shell-header{padding:0 var(--sp-3);min-height:48px;position:static;flex-wrap:nowrap}
  /* Breadcrumb collapses to just the current module — the patient name is the
     page title (.patcock-name); the registry return lives in the bottom nav. */
  .fex-clinical-breadcrumb .fex-crumb-back,.fex-clinical-breadcrumb .fex-crumb-sep,
  .fex-clinical-breadcrumb .fex-crumb-mid,.fex-clinical-breadcrumb .fex-crumb-kind{display:none}
  .fex-clinical-breadcrumb .fex-crumb-cur{overflow:hidden;text-overflow:ellipsis}
  .fex-shell-header-spacer{display:none}
  .fex-owner-chip{display:none}
  .fex-shell-header .fex-mode-chip{display:none}
  .fex-shell-header-utils{display:none}
  .fex-workspace{padding:var(--sp-4) var(--sp-3) calc(54px + var(--sp-6))}
  .fex-shell-botnav{display:flex}
}

/* ── SECTION TITLE ── */
.sec{font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--mu);
  text-transform:uppercase;margin:20px 0 12px;display:flex;align-items:center;gap:8px}
.sec::before{content:'';display:block;width:3px;height:12px;border-radius:2px;background:var(--navy)}

/* ── MODAL ── */
.modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:500;
  display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px)}
.modal-bg.show{display:flex;animation:fadeUp .2s ease}
.modal{background:var(--white);border:1px solid var(--b1);border-radius:18px;
  padding:28px;max-width:480px;width:90%;box-shadow:var(--shadow-lg)}
.modal-title{font-size:16px;font-weight:600;color:var(--tx);margin-bottom:4px;letter-spacing:-.02em}
.modal-sub{font-size:12px;color:var(--mu);margin-bottom:18px}
.modal-data{background:var(--s3);border-radius:9px;padding:14px;margin-bottom:18px}
.mrow{display:flex;justify-content:space-between;padding:3px 0;font-size:12px}
.mkey{color:var(--mu)} .mval{font-family:var(--mono);color:var(--tx);font-weight:500}
.modal-actions{display:flex;gap:8px;justify-content:flex-end}

/* ── FRX-5A — signed-consultation report preview modal ──────────────────── */
.frx5a-modal{max-height:calc(100vh - 40px);display:flex;flex-direction:column}
.frx5a-doc{background:var(--s2);border:1px solid var(--b1);border-radius:var(--rd-md);
  padding:18px 22px;max-height:62vh;overflow:auto;font-size:var(--fs-sm);color:var(--tx)}
.frx5a-empty{font-size:var(--fs-sm);color:var(--mu);text-align:center;padding:24px 0;margin:0}
.frx5a-doc-header{border-bottom:1px solid var(--b1);padding-bottom:12px;margin-bottom:14px}
.frx5a-brand{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.frx5a-brand-mark{font-size:var(--fs-md);font-weight:var(--fw-semi);color:var(--fex-accent);letter-spacing:.02em}
.frx5a-brand-sep{color:var(--dim)}
.frx5a-brand-title{font-size:var(--fs-md);font-weight:var(--fw-med);color:var(--tx)}
.frx5a-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px;font-size:var(--fs-sm);color:var(--mu)}
.frx5a-meta strong{color:var(--tx);font-weight:var(--fw-med)}
.frx5a-attr-box{background:var(--white);border:1px solid var(--b1);border-radius:var(--rd-sm);
  padding:11px 13px;margin-bottom:14px}
.frx5a-attr-box h4{font-size:var(--fs-xs);font-weight:var(--fw-semi);text-transform:uppercase;
  letter-spacing:.05em;color:var(--mu);margin:0 0 7px}
.frx5a-attr-rows{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2px 14px;font-size:var(--fs-sm);color:var(--mu)}
.frx5a-attr-rows strong{color:var(--tx);font-weight:var(--fw-med)}
.frx5a-attr-rows code{font-family:var(--mono);font-size:var(--fs-xs);color:var(--mu);word-break:break-all}
.frx5a-completeness{font-size:var(--fs-xs);color:var(--mu);margin:9px 0 0;font-style:italic}
.frx5a-sections{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.frx5a-sec{background:var(--white);border:1px solid var(--b1);border-radius:var(--rd-sm);padding:10px 13px}
.frx5a-sec-name{font-size:var(--fs-md);font-weight:var(--fw-semi);color:var(--tx);margin:0 0 6px;display:flex;align-items:center;gap:8px}
.frx5a-sec-crit{font-size:var(--fs-xs);font-weight:var(--fw-med);padding:1px 6px;border-radius:999px;background:var(--s3);color:var(--mu);text-transform:uppercase;letter-spacing:.04em}
.frx5a-sec-field{display:flex;gap:8px;font-size:var(--fs-sm);color:var(--tx);padding:2px 0;flex-wrap:wrap}
.frx5a-sec-field-label{color:var(--mu);min-width:160px;flex:0 0 auto}
.frx5a-sec-field-value{color:var(--tx);flex:1 1 200px;white-space:pre-wrap;word-break:break-word}
.frx5a-sec-field-value.frx5a-undoc{color:var(--mu);font-style:italic}
.frx5a-sec-list{margin:4px 0 0;padding-left:20px;color:var(--tx);font-size:var(--fs-sm)}
.frx5a-sec-list li{margin:1px 0}
.frx5a-cycle-note{background:var(--s3);border:1px dashed var(--b2);border-radius:var(--rd-sm);
  padding:8px 12px;margin-bottom:12px;font-size:var(--fs-xs);color:var(--mu);font-style:italic}
.frx5a-cycle-note p{margin:0}
.frx5a-doc-footer{border-top:1px solid var(--b1);padding-top:11px}
.frx5a-safety{font-size:var(--fs-xs);color:var(--mu);margin:0;line-height:1.5}
@media (max-width:640px){
  .frx5a-modal{max-width:100% !important;width:96%;padding:18px}
  .frx5a-doc{padding:13px 14px;max-height:56vh}
  .frx5a-meta,.frx5a-attr-rows{grid-template-columns:1fr}
}

/* CHART-UI-MODULE-EXTRACT-1.0: the CHART-1A / 1B / 1D / 1C CSS block
   that previously lived here (~153 lines) moved to fex_chart_ui.js
   (injected as <style id="chart-injected-styles"> on script load).
   Selectors, declarations, and values are character-identical. See
   docs/frontend/FRONTEND_MONOLITH_CONTAINMENT_1.md §6.3. */

/* ── ALERT ── */
/* DEMO-POLISH-1.0: toasts sit ABOVE the fixed "Mi FEX" launcher pill
   (.fex-launcher, bottom:44px right:18px) — they used to overlap in the
   same corner and the pill covered save-confirmation toasts. */
#alert-box{position:fixed;bottom:112px;right:24px;background:var(--white);
  border:1px solid var(--b1);color:var(--tx);padding:12px 18px;border-radius:12px;
  z-index:600;font-size:13px;display:none;max-width:360px;box-shadow:var(--shadow-md)}
#alert-box.show{display:block;animation:fadeUp .25s ease}
#alert-box.error{border-left:3px solid var(--re);background:#FEF2F2}
#alert-box.success{border-left:3px solid var(--gr);background:#F0FDF4}
#alert-box.info{border-left:3px solid var(--navy);background:#EFF6FF}

/* ── UTILITIES ── */
.empty{color:var(--mu);font-size:13px;font-style:italic;padding:16px 0}
.admin-section{display:none}
.is-admin .admin-section{display:block}
@media(max-width:680px){
  .snap-grid{grid-template-columns:1fr 1fr}
  .entry-grid.g3{grid-template-columns:1fr 1fr}
  .main-wrap{padding:16px 16px 48px}
  .dec-options{grid-template-columns:1fr}
  .hcard-body{grid-template-columns:1fr 1fr}
}

  /* ── SIMULATOR ── */
  .sim-scenario{background:var(--white);border:1px solid var(--b1);border-radius:12px;
    padding:18px 20px;margin-bottom:10px;transition:all .2s;cursor:default}
  .sim-scenario.base-scenario{border-color:rgba(27,45,92,.2);background:rgba(27,45,92,.02)}
  .sim-scenario:hover{box-shadow:var(--shadow-md)}
  .sim-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
  .sim-label{font-weight:600;font-size:13px;color:var(--tx)}
  .sim-delta{font-family:var(--mono);font-size:12px;padding:2px 8px;border-radius:20px}
  .sim-delta.pos{color:var(--gr);background:#F0FDF4;border:1px solid #BBF7D0}
  .sim-delta.neg{color:var(--re);background:#FEF2F2;border:1px solid #FECACA}
  .sim-delta.neu{color:var(--mu);background:var(--s3);border:1px solid var(--b1)}
  .sim-bar-wrap{margin:10px 0}
  .sim-bar-track{height:8px;background:var(--s3);border-radius:4px;position:relative;overflow:visible}
  .sim-bar-range{position:absolute;height:100%;border-radius:4px;background:rgba(27,45,92,.15)}
  .sim-bar-p50{position:absolute;width:3px;height:14px;top:-3px;border-radius:2px;background:var(--navy)}
  .sim-bar-labels{display:flex;justify-content:space-between;font-family:var(--mono);
    font-size:10px;color:var(--mu);margin-top:4px}
  .sim-insight{font-size:12px;color:var(--mu);font-style:italic;margin-top:8px}
  .sim-metrics{display:flex;gap:12px;margin-top:8px}
  .sim-metric{text-align:center}
  .sim-metric-val{font-family:var(--mono);font-size:16px;font-weight:500}
  .sim-metric-lbl{font-size:10px;color:var(--mu);text-transform:uppercase;letter-spacing:.05em}

  /* ── PATIENT TRANSLATION ── */
  .patient-explain{background:linear-gradient(135deg,#F0F7EF 0%,#EBF3FB 100%);
    border:1px solid var(--b1);border-radius:12px;padding:20px;margin-top:12px;display:none}
  .patient-explain.show{display:block;animation:fadeUp .3s ease}
  .explain-title{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--mu);margin-bottom:12px;display:flex;align-items:center;gap:6px}
  .explain-main{font-size:16px;font-weight:600;color:var(--navy);margin-bottom:8px;line-height:1.4}
  .dots-row{display:flex;gap:5px;margin:12px 0}
  .dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;font-size:13px}
  .dot-success{background:#16A34A}
  .dot-fail{background:#E2E8F0}
  .explain-sub{font-size:12px;color:var(--mu);line-height:1.6}

  /* ── UNCERTAINTY ── */
  .uncertainty-bar{margin:8px 0 4px}
  .unc-track{height:6px;background:var(--s3);border-radius:3px;position:relative}
  .unc-fill{height:100%;border-radius:3px;transition:width .4s}
  .unc-label{font-size:10px;color:var(--mu);margin-top:3px;display:flex;justify-content:space-between}
  .flag-high{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);
    font-size:10px;color:var(--ye);background:#FFFBEB;border:1px solid #FDE68A;
    padding:2px 8px;border-radius:20px;margin-top:6px}

  /* ── TIMELINE ── */
  .timeline{position:relative;padding-left:28px}
  .timeline::before{content:'';position:absolute;left:10px;top:0;bottom:0;width:2px;background:var(--b1)}
  .tl-item{position:relative;margin-bottom:16px}
  .tl-dot{position:absolute;left:-22px;top:4px;width:16px;height:16px;border-radius:50%;
    border:2px solid var(--white);box-shadow:0 0 0 2px var(--b2)}
  .tl-dot.done{background:var(--gr);box-shadow:0 0 0 2px #BBF7D0}
  .tl-dot.active{background:var(--navy);box-shadow:0 0 0 2px rgba(27,45,92,.3)}
  .tl-dot.pending{background:var(--b2);box-shadow:0 0 0 2px var(--b1)}
  .tl-content{background:var(--white);border:1px solid var(--b1);border-radius:10px;
    padding:12px 14px;box-shadow:var(--shadow)}
  .tl-title{font-weight:600;font-size:13px;color:var(--tx);margin-bottom:2px}
  .tl-date{font-size:11px;color:var(--mu);font-family:var(--mono)}
  .tl-data{display:flex;gap:16px;margin-top:6px;flex-wrap:wrap}
  .tl-kv{font-size:11px;color:var(--mu)}
  .tl-kv span{font-family:var(--mono);color:var(--tx);font-weight:500}

  /* ── PENDING OUTCOMES ── */
  .pending-item{display:flex;align-items:center;justify-content:space-between;
    padding:10px 14px;background:var(--white);border:1px solid #FDE68A;
    border-left:3px solid var(--ye);border-radius:8px;margin-bottom:6px}
  .pending-days{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ye)}
  .pending-overdue{border-color:#FECACA;border-left-color:var(--re)}
  .pending-overdue .pending-days{color:var(--re)}

  /* ── KEYBOARD HINT ── */
  kbd{display:inline-block;background:var(--s3);border:1px solid var(--b2);border-radius:4px;
    font:11px var(--mono);padding:1px 5px;color:var(--mu);margin:0 2px}

  /* ── EIS ── */
  .eis-card{background:var(--white);border:1px solid var(--b1);border-radius:12px;
    padding:16px 20px;margin-bottom:8px;display:flex;align-items:center;gap:16px;
    transition:all .2s;cursor:default}
  .eis-card:hover{box-shadow:var(--shadow-md)}
  .eis-rank{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;
    justify-content:center;font:700 12px var(--mono);color:#fff;flex-shrink:0}
  .eis-grade{font-family:var(--mono);font-size:18px;font-weight:600;color:var(--tx);min-width:60px}
  .eis-bar{flex:1;height:6px;background:var(--s3);border-radius:3px;overflow:hidden}
  .eis-fill{height:100%;border-radius:3px;transition:width .5s}
  .eis-score{font-family:var(--mono);font-size:16px;font-weight:600;min-width:44px;text-align:right}
  .eis-tier{font-size:10px;padding:2px 8px;border-radius:20px;border:1px solid;font-family:var(--mono);white-space:nowrap}

  /* ── TWIN RISK ── */
  .twin-compare{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}
  .twin-col{border-radius:10px;padding:16px}
  .twin-col.set{background:#F0FDF4;border:1px solid #BBF7D0}
  .twin-col.det{background:#FEF2F2;border:1px solid #FECACA}
  .twin-col-title{font-weight:700;font-size:14px;margin-bottom:10px}
  .twin-row{display:flex;justify-content:space-between;font-size:12px;padding:3px 0;border-bottom:1px solid rgba(0,0,0,.06)}
  .twin-row:last-child{border:none}
  .twin-val{font-family:var(--mono);font-weight:600}

  /* ── CYCLE OPTIMIZER ── */
  .opt-scenario{background:var(--white);border:1px solid var(--b1);border-radius:12px;
    padding:16px 20px;margin-bottom:8px;display:grid;grid-template-columns:auto 1fr auto;
    align-items:center;gap:16px;cursor:default;transition:all .15s}
  .opt-scenario:hover{box-shadow:var(--shadow-md)}
  .opt-scenario.best{border-color:var(--gr);background:#F0FDF4}
  .opt-label{font-weight:600;font-size:13px;color:var(--tx)}
  .opt-sub{font-size:11px;color:var(--mu)}
  .opt-prob{text-align:right}
  .opt-prob-val{font-family:var(--mono);font-size:22px;font-weight:500}
  .opt-prob-lbl{font-size:10px;color:var(--mu)}

  /* ── SURVEILLANCE ── */
  .surv-timeline{display:flex;gap:0;margin:16px 0;overflow-x:auto}
  .surv-step{flex:1;min-width:80px;text-align:center;padding:8px 4px;border-right:1px solid var(--b1);cursor:pointer;transition:all .15s}
  .surv-step:last-child{border:none}
  .surv-step:hover{background:var(--s3)}
  .surv-step.active{background:rgba(27,45,92,.06);border-bottom:2px solid var(--navy)}
  .surv-week{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--navy)}
  .surv-label{font-size:10px;color:var(--mu);margin-top:2px}
  .bayes-update{display:flex;align-items:center;gap:8px;padding:6px 10px;
    background:var(--s3);border-radius:7px;margin-bottom:6px;font-size:12px}
  .bayes-arrow{font-family:var(--mono);font-weight:700}
  .arr-up{color:var(--gr)} .arr-dn{color:var(--re)}

  /* User management */
  .user-row{display:flex;align-items:center;justify-content:space-between;
    padding:10px 14px;background:var(--white);border:1px solid var(--b1);
    border-radius:8px;margin-bottom:6px}
  .user-row.inactive{opacity:.5}
  .user-info .user-name{font-weight:600;font-size:13px;font-family:var(--mono)}
  .user-info .user-meta{font-size:11px;color:var(--mu);margin-top:1px}
  .role-tag{font-family:var(--mono);font-size:10px;padding:2px 8px;border-radius:20px;border:1px solid}
  .role-medico{color:var(--navy);border-color:rgba(27,45,92,.25);background:rgba(27,45,92,.06)}
  .role-admin{color:var(--re);border-color:rgba(220,38,38,.25);background:rgba(220,38,38,.06)}
  .role-asistente{color:var(--ye);border-color:rgba(180,83,9,.25);background:rgba(180,83,9,.06)}
.role-embryology{color:var(--gr);border-color:rgba(21,128,61,.25);background:rgba(21,128,61,.06)}
.role-quality_auditor{color:var(--pu);border-color:rgba(107,33,168,.25);background:rgba(107,33,168,.06)}

  .stim-mode-badge{font-size:11px;padding:5px 12px;border-radius:20px;margin-bottom:12px;
    display:inline-block;font-weight:600;letter-spacing:.02em}
  .stim-mode-pre{background:#EFF6FF;color:#1D4ED8;border:1px solid #BFDBFE}
  .stim-mode-post{background:#F0FDF4;color:#16A34A;border:1px solid #BBF7D0}

  /* ── LANDING ── */
  #landing-view{min-height:100vh;background:#F8FAFC;display:flex;flex-direction:column}
  .land-nav{padding:16px 40px;display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;z-index:100;background:rgba(248,250,252,.95);backdrop-filter:blur(8px);
  border-bottom:1px solid var(--b1);flex-wrap:nowrap;gap:16px}
  .land-badge{font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--mu);
    background:rgba(27,45,92,.07);border:1px solid rgba(27,45,92,.15);
    padding:4px 14px;border-radius:20px;text-transform:uppercase}
  .land-body{flex:1;display:flex;align-items:center;max-width:1080px;margin:0 auto;padding-top:48px;
    padding:32px 48px 56px;gap:64px;width:100%}
  .land-left{flex:1.2;min-width:0}
  .land-eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.14em;
    color:var(--mu);text-transform:uppercase;margin-bottom:22px;
    display:flex;align-items:center;gap:10px}
  .land-eyebrow::before{content:'';width:28px;height:2px;background:var(--blue);border-radius:1px;flex-shrink:0}
  .land-h1{font-family:var(--sans);font-size:52px;font-weight:700;line-height:1.08;
    color:var(--navy);letter-spacing:-.035em;margin-bottom:22px}
  .land-h1 em{font-style:normal;color:var(--blue)}
  .land-sub{font-size:16px;color:var(--mu);line-height:1.75;max-width:480px;margin-bottom:36px}
  .land-chips{display:flex;flex-direction:column;gap:10px;margin-bottom:44px}
  .land-chip{display:inline-flex;align-items:center;gap:10px;background:var(--white);
    border:1px solid var(--b1);padding:10px 18px;border-radius:24px;
    font-family:var(--mono);font-size:12px;color:var(--tx);width:fit-content;
    box-shadow:var(--shadow)}
  .land-chip::before{content:'';width:7px;height:7px;border-radius:50%;
    background:var(--blue);flex-shrink:0}
  .land-cta-row{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
  .btn-land{background:var(--navy);color:#fff;border:none;border-radius:12px;
    font:600 15px var(--sans);padding:15px 36px;cursor:pointer;
    box-shadow:0 4px 18px rgba(27,45,92,.28);transition:all .2s;letter-spacing:.01em}
  .btn-land:hover{background:var(--navy2);transform:translateY(-1px);
    box-shadow:0 8px 24px rgba(27,45,92,.38)}
  .land-model-tag{font-family:var(--mono);font-size:11px;color:var(--dim);
    background:var(--s3);border:1px solid var(--b1);padding:5px 12px;border-radius:8px}
  .land-right{display:flex;flex-direction:column;gap:12px;min-width:260px;max-width:300px}
  .land-card{background:var(--white);border:1px solid var(--b1);border-radius:14px;
    padding:20px 22px;box-shadow:var(--shadow);transition:box-shadow .15s}
  .land-card:hover{box-shadow:var(--shadow-md)}
  .land-card-label{font-family:var(--mono);font-size:9px;letter-spacing:.14em;
    color:var(--mu);text-transform:uppercase;margin-bottom:8px}
  .land-card-title{font-size:15px;font-weight:600;color:var(--tx);line-height:1.35}
  .land-footer{padding:20px 48px;border-top:1px solid var(--b1);
    display:flex;align-items:center;justify-content:space-between;
    font-family:var(--mono);font-size:10px;color:var(--dim)}
  @media(max-width:800px){
    .land-body{flex-direction:column;padding:24px 24px 40px;gap:32px}
    .land-right{flex-direction:row;flex-wrap:wrap;max-width:100%}
    .land-card{flex:1;min-width:130px}
    .land-h1{font-size:36px}
    .land-nav{padding:16px 24px}
  }
  .stim-ext-row{font-size:12px;color:var(--tx);padding:4px 0;border-bottom:1px solid var(--b1);line-height:1.5}
  .stim-ext-row:last-child{border-bottom:none}
  .land-nav{padding:16px 40px;display:flex;align-items:center;justify-content:space-between}

  /* Stimulation recommendation cards */
  .stim-protocols{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:14px 0}
  .stim-rec-card{background:var(--s3);border:1px solid var(--b1);border-radius:12px;padding:16px 18px}
  .stim-rec-card.stim-rec-highlight{background:var(--navy);border-color:var(--navy)}
  .stim-rec-label{font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
    color:var(--mu);margin-bottom:6px}
  .stim-rec-highlight .stim-rec-label{color:rgba(255,255,255,.6)}
  .stim-rec-name{font-family:var(--sans);font-size:17px;font-weight:700;color:var(--tx);
    line-height:1.2;margin-bottom:4px}
  .stim-rec-highlight .stim-rec-name{color:#fff}
  .stim-rec-dose{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--navy);
    margin-bottom:4px}
  .stim-rec-highlight .stim-rec-dose{color:var(--blue)}
  .stim-rec-note{font-size:10px;color:var(--mu);line-height:1.4}
  .stim-rec-highlight .stim-rec-note{color:rgba(255,255,255,.5)}
  @media(max-width:680px){.stim-protocols{grid-template-columns:1fr}}

  /* ── BANKING ── */
  .bk-q-card{background:var(--white);border:1px solid var(--b1);border-radius:12px;padding:14px 16px}
  .bk-q-label{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mu);margin-bottom:6px}
  .bk-q-answer{font-size:14px;font-weight:700;margin-bottom:4px}
  .bk-q-answer.favorable{color:var(--gr)}
  .bk-q-answer.not_recommended{color:var(--re)}
  .bk-q-answer.impossible{color:var(--dim)}
  .bk-q-rationale{font-size:10px;color:var(--mu);line-height:1.5}
  .bk-u-card{background:var(--s3);border:1px solid var(--b1);border-radius:10px;padding:12px 14px;position:relative}
  .bk-u-card.best{background:var(--navy);border-color:var(--navy)}
  .bk-u-card.best .bk-u-label,.bk-u-card.best .bk-u-detail{color:rgba(255,255,255,.7)}
  .bk-u-card.best .bk-u-name,.bk-u-card.best .bk-u-score{color:#fff}
  .bk-u-label{font-size:9px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--mu);margin-bottom:4px}
  .bk-u-name{font-size:13px;font-weight:700;color:var(--tx);margin-bottom:4px}
  .bk-u-score{font-family:var(--mono);font-size:20px;font-weight:600;color:var(--navy);margin-bottom:4px}
  .bk-u-detail{font-size:10px;color:var(--mu);line-height:1.4}
  @media(max-width:768px){
    #bk-questions{grid-template-columns:1fr !important}
    #bk-utilities{grid-template-columns:1fr 1fr !important}
  }

  /* ── CYCLE CONTEXT BAR ── */
  .case-ctx{background:var(--white);border-bottom:1px solid var(--b1);padding:10px 20px;
    display:flex;align-items:center;gap:18px;flex-wrap:wrap;position:sticky;top:72px;z-index:90}
  .case-ctx[hidden]{display:none !important}
  /* 7ui.0: navy left-accent gives the patient ID anchor presence */
  /* H.9 (2026-05-03): patient name acts as toggle for the fertility
     consult subnav (Evaluación ↔ Centro de control). Subtle hover
     state so the affordance is visible. */
  .case-ctx-pid.cctx-pid-toggle{transition:background .12s,box-shadow .12s}
  .case-ctx-pid.cctx-pid-toggle:hover{
    background:var(--blue-soft);
    box-shadow:0 0 0 4px var(--blue-soft);
  }
  .case-ctx-pid{font-family:var(--mono);font-weight:700;font-size:13px;color:var(--navy);
    padding:4px 10px 4px 12px;background:var(--s3);border-radius:var(--rd-sm);
    border:1px solid var(--b1);border-left:3px solid var(--navy)}
  .case-ctx-item{display:flex;flex-direction:column;gap:2px}
  .case-ctx-label{font-size:9px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mu)}
  .case-ctx-val{font-size:12px;font-weight:600;color:var(--tx);font-family:var(--mono)}
  .case-ctx-val.empty{color:var(--dim);font-weight:400}
  /* D.3 — Patient identity v2 clinical signals */
  .case-ctx-val.is-warn{color:var(--re);font-weight:700}
  .case-ctx-item-extra .case-ctx-label{color:var(--mu)}
  .case-ctx-stage{margin-left:auto;display:flex;align-items:center;gap:10px}
  .case-ctx-stage-chip{font-size:10px;font-weight:600;color:#fff;background:var(--navy);
    padding:4px 10px;border-radius:var(--rd-sm);letter-spacing:.03em}
  .case-ctx-progress{width:100px;height:6px;background:var(--s3);border-radius:3px;overflow:hidden}
  .case-ctx-progress-fill{height:100%;background:var(--gr);transition:width .3s}
  .case-ctx-reset{font-size:10px;padding:3px 8px;border:1px solid var(--b1);
    background:var(--white);color:var(--mu);border-radius:var(--rd-md);cursor:pointer}
  .case-ctx-reset:hover{color:var(--re);border-color:var(--re)}
  .subnav{display:flex;gap:4px;padding:10px 20px 0;border-bottom:1px solid var(--b1);background:var(--s3);
    overflow-x:auto;flex-wrap:nowrap;margin-bottom:12px}
  .subnav-btn{padding:8px 14px;font-size:12px;font-weight:600;color:var(--mu);
    background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;
    white-space:nowrap;transition:all .15s}
  .subnav-btn:hover{color:var(--tx)}
  .subnav-btn.active{color:var(--navy);border-bottom-color:var(--navy)}
  @media(max-width:768px){
    .case-ctx{padding:8px 12px;gap:10px;top:60px}
    .case-ctx-stage{margin-left:0;width:100%}
  }

  /* ═══ PREMIUM AESTHETIC REFRESH ═══ */
  :root{
    --navy: #0A1F44;
    --navy-soft: #1B2D5C;
    --blue: #2C6FE8;
    --blue-soft: #EEF4FC;
    --tx: #0F172A;
    --mu: #64748B;
    --dim: #94A3B8;
    --b1: #E2E8F0;
    --b2: #CBD5E1;
    --s3: #F8FAFC;
    --s4: #F1F5F9;
    --white: #FFFFFF;
    --gr: #059669;
    --ye: #D97706;
    --re: #DC2626;
    --shadow-sm: 0 1px 2px 0 rgba(15,23,42,.04);
    --shadow-md: 0 4px 12px -2px rgba(15,23,42,.06), 0 2px 4px -1px rgba(15,23,42,.04);
    --shadow-lg: 0 10px 30px -6px rgba(15,23,42,.08), 0 4px 10px -2px rgba(15,23,42,.04);
  }

  body{
    background: linear-gradient(180deg, #FAFBFC 0%, #F4F6F9 100%) !important;
    color: var(--tx);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-feature-settings: "cv11","ss01";
  }

  /* Topbar — refined. Compacted from 64 → 52 px so the M0 canvas
     reclaims ~12 px vertical chrome on every screen. */
  .topbar{
    background: rgba(255,255,255,.85) !important;
    backdrop-filter: saturate(180%) blur(20px);
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    border-bottom: 1px solid var(--b1) !important;
    box-shadow: var(--shadow-sm);
    height: 52px !important;
    min-height: 52px !important;
    padding: 0 24px !important;
  }
  .tb-btn{
    font-weight: 500 !important;
    font-size: 13px !important;
    letter-spacing: -.01em;
    color: var(--mu) !important;
    padding: 8px 14px !important;
    border-radius: 8px !important;
    transition: all .15s ease;
  }
  .tb-btn:hover{color: var(--tx) !important; background: var(--s4);}
  .tb-btn.active{
    color: var(--navy) !important;
    background: var(--blue-soft) !important;
    font-weight: 600 !important;
  }

  /* Cycle context bar — refined. Compacted padding 12 → 6 px so the
     bar lands as a thin strip under the topbar instead of an extra
     row of chrome. Sticky top recomputed to 52 px to match the new
     topbar height. */
  .case-ctx{
    background: var(--white) !important;
    padding: 6px 32px !important;
    gap: 24px !important;
    box-shadow: var(--shadow-sm);
    border-bottom: 1px solid var(--b1) !important;
    top: 52px !important;
  }
  .case-ctx-pid{
    background: var(--navy) !important;
    color: var(--white) !important;
    border: none !important;
    padding: 6px 12px !important;
    letter-spacing: .02em;
    box-shadow: var(--shadow-sm);
  }
  .case-ctx-label{letter-spacing: .1em !important; font-size: 9px !important;}
  .case-ctx-stage-chip{
    background: var(--blue) !important;
    padding: 5px 12px !important;
    font-weight: 500 !important;
  }

  /* Cards — premium feel */
  .card, .entry-card, .stim-card, .snap-card{
    background: var(--white) !important;
    border: 1px solid var(--b1) !important;
    border-radius: 14px !important;
    box-shadow: var(--shadow-md) !important;
    transition: box-shadow .2s ease;
  }
  .card:hover{box-shadow: var(--shadow-lg) !important;}

  /* Inputs — premium */
  input[type="number"], input[type="text"], select, textarea{
    background: var(--s3) !important;
    border: 1px solid var(--b1) !important;
    border-radius: 10px !important;
    padding: 11px 14px !important;
    font-size: 14px !important;
    color: var(--tx) !important;
    transition: all .15s ease;
    font-weight: 500;
  }
  input:focus, select:focus, textarea:focus{
    outline: none !important;
    border-color: var(--blue) !important;
    background: var(--white) !important;
    box-shadow: 0 0 0 3px rgba(44,111,232,.1) !important;
  }
  label{
    font-weight: 600 !important;
    font-size: 11px !important;
    letter-spacing: .04em !important;
    text-transform: uppercase;
    color: var(--mu) !important;
    margin-bottom: 6px !important;
  }

  /* Buttons — premium */
  .btn, button.btn-navy{
    border-radius: 10px !important;
    font-weight: 600 !important;
    letter-spacing: -.005em;
    transition: all .15s ease;
    padding: 11px 20px;
  }
  .btn-navy{
    background: linear-gradient(180deg, var(--navy-soft) 0%, var(--navy) 100%) !important;
    color: var(--white) !important;
    box-shadow: var(--shadow-md), inset 0 1px 0 rgba(255,255,255,.1);
  }
  .btn-navy:hover{
    transform: translateY(-1px);
    box-shadow: var(--shadow-lg), inset 0 1px 0 rgba(255,255,255,.15);
  }
  .btn-navy:active{transform: translateY(0);}
  .btn-ghost{
    background: var(--white) !important;
    color: var(--tx) !important;
    border: 1px solid var(--b1) !important;
    box-shadow: var(--shadow-sm);
  }
  .btn-ghost:hover{background: var(--s4) !important; border-color: var(--b2) !important;}

  /* Subnav — premium */
  .subnav{
    background: var(--white) !important;
    padding: 0 32px !important;
    gap: 2px !important;
    box-shadow: var(--shadow-sm);
    border-bottom: 1px solid var(--b1) !important;
    margin-bottom: 0 !important;
  }
  .subnav-btn{
    padding: 14px 18px !important;
    font-size: 13px !important;
    color: var(--mu) !important;
    border-bottom: 2px solid transparent !important;
    letter-spacing: -.005em;
  }
  .subnav-btn:hover{color: var(--tx) !important;}
  .subnav-btn.active{
    color: var(--navy) !important;
    border-bottom-color: var(--blue) !important;
  }

  /* Headings */
  .flow-title{
    font-size: 22px !important;
    font-weight: 700 !important;
    letter-spacing: -.02em !important;
    color: var(--tx) !important;
  }
  /* 6b.2: entry-card-title is a section label, not a page title */
  .entry-card-title{
    font-size: 11px !important;
    font-weight: 600 !important;
    letter-spacing: .1em !important;
    text-transform: uppercase !important;
    color: var(--mu) !important;
    margin-bottom: 14px !important;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  /* 6b.2: remove the heavy navy vertical bar before every title */
  .entry-card-title::before{display: none !important;}
  .flow-sub, .quick-hint{
    color: var(--mu) !important;
    font-size: 14px !important;
    line-height: 1.55 !important;
  }

  /* Main wrap — breathing room */
  .main-wrap{padding: 32px 32px 60px !important; max-width: 1280px; margin: 0 auto;}

  /* Snapshot + banking cards */
  .snap-grid{gap: 14px !important;}
  .snap-card{padding: 16px 18px !important;}
  .snap-val{font-size: 22px !important; font-weight: 700 !important; letter-spacing: -.02em;}
  .snap-label{font-size: 10px !important; letter-spacing: .1em !important; font-weight: 600 !important;}

  /* Recommendation highlight card */
  .stim-rec-highlight{
    background: linear-gradient(180deg, var(--navy-soft) 0%, var(--navy) 100%) !important;
    color: var(--white) !important;
    border: none !important;
    box-shadow: var(--shadow-lg);
  }
  .stim-rec-highlight .stim-rec-label{color: rgba(255,255,255,.65) !important;}

  /* Banking utility cards */
  .bk-u-card{border-radius: 12px !important; padding: 16px !important;}
  .bk-u-card.best{box-shadow: var(--shadow-lg) !important;}
  .bk-u-score{font-size: 26px !important; font-weight: 700 !important; letter-spacing: -.02em;}

  /* Alert system — refined */
  .alert{border-radius: 10px !important; box-shadow: var(--shadow-lg);}

  @media(max-width:768px){
    .topbar{padding: 0 16px !important;}
    .case-ctx{padding: 10px 16px !important; gap: 14px !important;}
    .main-wrap{padding: 20px 16px 60px !important;}
    .subnav{padding: 0 16px !important;}
  }


  /* ═ Tab completeness indicator ═ */
  .tb-btn{position:relative}
  .tb-btn .tb-dot{
    position:absolute;top:6px;right:5px;width:7px;height:7px;border-radius:50%;
    background:var(--dim);transition:all .15s ease
  }
  .tb-btn .tb-dot.pending{background:var(--dim)}
  .tb-btn .tb-dot.partial{background:var(--ye)}
  .tb-btn .tb-dot.complete{background:var(--gr)}
  .tb-btn .tb-dot.blocked{background:var(--re);opacity:.5}
  .tb-btn .tb-dot.hidden{display:none}

  .subnav-sticky{margin:0 -32px 20px -32px; position:sticky; top:72px; z-index:40; background:var(--white); box-shadow: var(--shadow-sm); border-bottom: 1px solid var(--b1);}
  @media(max-width:768px){.subnav-sticky{margin:0 -16px 16px -16px}}

  /* ═══════════════════════════════════════════════════════════════════════════
     SESSION 7b.1 — Active case session model + badge variants
     Cosmetic/structural only. No changes to existing behavior when no case active.
     ═══════════════════════════════════════════════════════════════════════════ */

  /* Cycle mode: full patient name identifier replaces "No patient" */
  .case-ctx-pid.mode-case{
    background: var(--navy);
    color: var(--white);
    padding: 4px 10px;
    border-radius: 6px;
    font-weight: 600;
    font-size: 12px;
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .case-ctx-pid.mode-quick{
    color: var(--mu);
    font-style: normal;
    font-weight: 500;
  }

  /* Active case badge — distinct green with case label */
  .case-ctx-stage-chip.mode-case{
    background: var(--gr) !important;
    color: #0a2e1a;
    font-weight: 600 !important;
    padding: 5px 11px !important;
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  .case-ctx-stage-chip.mode-case::before{
    content: "●";
    color: #0a2e1a;
    font-size: 9px;
    line-height: 1;
  }
  .case-ctx-stage-chip.mode-quick{
    background: var(--blue) !important;
  }

  /* Ephemeral notice — only in quick mode */
  .quick-mode-notice{
    background: #f3f7fb;
    border: 1px solid #dce5ee;
    color: var(--mu);
    font-size: 11px;
    padding: 6px 12px;
    margin: 8px 20px 0 20px;
    border-radius: 6px;
    display: none;
  }
  body.fex-mode-quick .quick-mode-notice{ display: block; }
  body.fex-mode-case .quick-mode-notice{ display: none; }

  /* ── 7ui.1: Active Case Shell Cleanup ──
     In active v14 case mode, the legacy early-cycle landing surfaces
     inside #view-clinical (patient-bar, eval-card, snapshot, decision-card,
     outcome-highlight) collapse so the case cockpit (Command Center) is
     the canonical landing. DOM is preserved verbatim — only display is
     gated by body.fex-mode-case. Quick / Home flows are untouched. */
  body.fex-mode-case #view-clinical .patient-bar,
  body.fex-mode-case #view-clinical #eval-card,
  body.fex-mode-case #view-clinical #snapshot,
  body.fex-mode-case #view-clinical #decision-card,
  body.fex-mode-case #view-clinical .outcome-highlight{
    display: none !important;
  }

  /* COCKPIT-UI-MODULE-EXTRACT-1.0: the COCKPIT-1A / 1B / 1C / 1D CSS block
     that previously lived here (~759 lines) moved to fex_cockpit_ui.js
     (injected as <style id="cockpit-injected-styles"> on script load).
     Selectors, declarations, and values are character-identical. The
     COCKPIT-POLISH-1.2 / 1.3 / 7ui.0.2 / NAV-UX-1A blocks that follow
     stay inline — they operate on topbar / nav / launcher selectors,
     not the cockpit module. See FRONTEND_MONOLITH_CONTAINMENT_1.md §6.4. */

  /* ─── COCKPIT-POLISH-1.2 — responsive topbar navigation affordance ───
     At ≤1100 px the topbar nav buttons (Home / Agenda / Patients) start
     getting clipped by .topbar{overflow:hidden}. We add a compact
     hamburger button (.tb-menu-btn) that toggles the existing .tb-nav
     into a position:absolute dropdown directly under the topbar. The
     dropdown reuses the existing tb-btn nodes (no new nav system,
     no new routes), so navigateTo() keeps working. */
  .tb-menu-btn{
    display: none;
    background: none;
    border: 1px solid var(--b1);
    color: var(--tx);
    width: 36px;
    height: 36px;
    border-radius: var(--rd-md);
    align-items: center;
    justify-content: center;
    cursor: pointer;
    font-size: 18px;
    line-height: 1;
    padding: 0;
    flex-shrink: 0;
    transition: background .12s, border-color .12s;
  }
  .tb-menu-btn:hover{ background: var(--s3); border-color: var(--navy); color: var(--navy); }
  .tb-menu-btn[aria-expanded="true"]{ background: var(--s3); border-color: var(--navy); color: var(--navy); }

  @media (max-width: 1100px){
    .tb-menu-btn{ display: inline-flex; }
    .topbar .tb-nav{ display: none; }
    /* When the menu is open, drop the topbar's backdrop-filter +
       overflow:hidden so the position:fixed dropdown is laid out
       against the viewport instead of being clipped inside the
       backdrop-filter containing block (the PREMIUM AESTHETIC REFRESH
       block applies a backdrop-filter:blur, which silently turns the
       topbar into the containing block for any descendant fixed/abs
       node — same gotcha as transform / will-change). */
    .topbar[data-tb-menu-open="1"]{
      backdrop-filter: none !important;
      -webkit-backdrop-filter: none !important;
      overflow: visible !important;
    }
    .topbar[data-tb-menu-open="1"] .tb-nav{
      display: flex;
      flex-direction: column;
      gap: 4px;
      position: fixed;
      top: 52px;  /* topbar is compacted to 52 px in the premium refresh */
      left: 0;
      right: 0;
      padding: 10px 14px 12px;
      background: var(--white);
      border-bottom: 1px solid var(--b1);
      box-shadow: var(--shadow);
      z-index: 199;
      overflow-x: visible;
    }
    .topbar[data-tb-menu-open="1"] .tb-nav .tb-btn,
    .topbar[data-tb-menu-open="1"] .tb-nav .tb-nav-btn{
      width: 100%;
      min-height: 44px;
      padding: 10px 14px;
      justify-content: flex-start;
      text-align: left;
      border-radius: var(--rd-md);
    }
  }

  /* ─── COCKPIT-POLISH-1.3 — keep the floating .fex-launcher widget
     ("My FEX") out of the cockpit's clinical-signal cards on mobile.
     Doctrine: mobile is glance/lookup only; the FEX Decisions modal is
     a desktop review surface. At ≤767 px we hide the launcher in case
     mode so Latest Values / Signed Milestones / Document Inbox stay
     legible. The launcher remains reachable on desktop / tablet, and
     also remains reachable on mobile when not in case mode. */
  @media (max-width: 767px){
    body.fex-mode-case .fex-launcher{ display: none !important; }
  }

  /* ── 7ui.0.2: Clean early-cycle clinical flow ──
     Two UX corrections to keep baseline / retrieval planning focused:
     (1) STRONG model panel collapses to a low-key compact form before
         retrieval data is captured (.upgrade-card.show without .upgraded).
         Form remains fully functional — only padding, border, and
         typography are toned down. .upgraded styling (defined in the
         base .upgrade-card block) takes over once STRONG activates.
     (2) Outcome Intelligence panel is hidden by default in every mode
         and revealed only when the active case summary indicates
         outcome relevance (transfer_done captured OR outcome row exists).
         JS toggles body.fex-outcome-relevant from fex:caseLoaded. */
  .upgrade-card.show:not(.upgraded){
    padding: 12px 16px;
    border-style: solid;
    border-color: var(--b1);
    background: transparent;
  }
  .upgrade-card.show:not(.upgraded) .upgrade-header{ margin-bottom: 8px; }
  .upgrade-card.show:not(.upgraded) .upgrade-title{ font-size: 11px; }
  .upgrade-card.show:not(.upgraded) .upgrade-sub{ font-size: 11px; margin-bottom: 8px; }
  .upgrade-card.show:not(.upgraded) .entry-grid{ gap: 8px; margin-bottom: 8px; }

  .outcome-highlight{ display: none; }
  body.fex-outcome-relevant .outcome-highlight{ display: block !important; }

  /* ─── NAV-UX-1A — Hybrid global slim left rail ────────────────────────
     Persistent product-level orientation across all views. Sits BELOW the
     sticky topbar (top:64px) and ABOVE in-page content. Case-only items
     hide unless body.fex-mode-case is set. Stim/FET-specific items hide
     unless the cockpit1a variant marker is set. Quality entry mirrors the
     existing applyQualityNavGating gate. No new routes — every item calls
     existing navigateTo / switchView / FEXDecisionLog.open. Collapses
     entirely on mobile (≤1023 px), where the existing topbar hamburger
     (.tb-menu-btn) is the navigation affordance. */
  .fex-global-rail{
    position: fixed;
    top: 64px;
    left: 0;
    bottom: 0;
    width: 72px;
    background: var(--white);
    border-right: 1px solid var(--b1);
    z-index: 150;            /* under topbar (200), over content */
    display: none;           /* shown by body.fex-global-rail-on at ≥1024 */
    flex-direction: column;
    gap: 2px;
    padding: 8px 0;
    overflow-y: auto;
    scrollbar-width: thin;
    box-sizing: border-box;
  }
  .fex-grail-btn{
    width: 100%;
    min-height: 60px;
    border: 0;
    background: transparent;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    cursor: pointer;
    padding: 8px 4px;
    color: var(--mu);
    font: 600 10.5px var(--sans);
    line-height: 1.15;
    text-align: center;
    border-left: 3px solid transparent;
    transition: background .12s, color .12s, border-color .12s;
  }
  .fex-grail-btn:hover{
    background: var(--s3);
    color: var(--navy);
  }
  .fex-grail-btn.is-active{
    background: rgba(27,45,92,.06);
    color: var(--navy);
    border-left-color: var(--navy);
  }
  .fex-grail-btn:focus-visible{
    outline: 2px solid var(--navy);
    outline-offset: -2px;
  }
  .fex-grail-btn svg{
    width: 22px;
    height: 22px;
    stroke-width: 1.6;
  }
  .fex-grail-btn-label{
    display: block;
    max-width: 64px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .fex-grail-sep{
    height: 1px;
    margin: 6px 12px;
    background: var(--b1);
    flex-shrink: 0;
  }
  /* Case-only items hide when no case is active. */
  body:not(.fex-mode-case) .fex-grail-case-only{ display: none !important; }
  /* Variant-specific items: hidden unless body marker matches. */
  body:not(.fex-grail-stim) .fex-grail-stim-only{ display: none !important; }
  body:not(.fex-grail-fet)  .fex-grail-fet-only{  display: none !important; }
  /* Quality item mirrors applyQualityNavGating — hidden by default. */
  .fex-grail-quality-only{ display: none; }
  body.fex-quality-allowed .fex-grail-quality-only{ display: flex; }

  /* Activation: body.fex-global-rail-on pulls everything inside #app to
     the right by 72px so the fixed rail occupies the reclaimed gutter.
     The .topbar is position:sticky inside body; the body padding shifts
     its sticky box to start at left=72px, so it never overlaps the rail. */
  @media (min-width: 1024px){
    body.fex-global-rail-on{ padding-left: 72px; }
    body.fex-global-rail-on .fex-global-rail{ display: flex; }
  }
  /* Mobile fallback: rely on the existing topbar hamburger; do not push
     content right and do not render the rail. */
  @media (max-width: 1023px){
    body.fex-global-rail-on{ padding-left: 0; }
    .fex-global-rail{ display: none; }
  }
  /* ─── End NAV-UX-1A ──────────────────────────────────────────────── */

  /* ─── P1 RAIL VISIBLE CONSULT VARIANT ───────────────────────────────
     Host inside #view-m0-assessment that receives the existing
     #cockpit1a-right-rail DOM node when the active case is a consult
     (variant 'consult'). The rail's intrinsic CSS already stacks cards
     vertically; here we override the in-host layout to a responsive
     grid so the seven cycle-aware cards (Data Trust, Lab Readiness,
     Case Intelligence, M1/M2/M3, Outcome Capture) communicate the case
     journey ahead without overflowing the consultation surface. No
     visual claim, no marketing token, no patient-facing affordance —
     the host is structural. */
  .cockpit1a-rail-host-m0{
    display: block;
    padding: 0 20px 18px;
    margin-top: 18px;
    border-top: 1px solid var(--b1);
  }
  .cockpit1a-rail-host-m0[hidden]{ display: none; }
  .cockpit1a-rail-host-m0 > .cockpit1a-right-rail{
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 12px;
    padding-top: 14px;
  }
  @media (max-width: 768px){
    .cockpit1a-rail-host-m0{ padding: 0 14px 14px; margin-top: 14px; }
    .cockpit1a-rail-host-m0 > .cockpit1a-right-rail{
      grid-template-columns: 1fr;
      padding-top: 10px;
    }
  }
  /* ─── End P1 RAIL VISIBLE CONSULT VARIANT ─────────────────────────── */

  /* Home button in topbar (visible always, active in 7b.2) */
  .fex-home-btn{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 10px;
    border: 1px solid var(--b1);
    background: var(--white);
    color: var(--tx);
    border-radius: 6px;
    font-size: 11px;
    font-weight: 500;
    cursor: pointer;
    transition: border-color .15s;
  }
  .fex-home-btn:hover{ border-color: var(--navy); }
  .fex-home-btn[disabled]{ opacity: .5; cursor: not-allowed; }

  /* ── FEX Quality Shell (Q0.3) ─────────────────────────────────────── */
  /* Aggregate-only governance dashboard. No identified data, no engines. */
  #qual-tabs{display:flex;gap:4px;border-bottom:1px solid var(--b1);
             margin:14px 0 12px;flex-wrap:wrap}
  .qual-tab{background:none;border:none;padding:8px 14px;font:500 12.5px var(--sans);
            color:var(--mu);cursor:pointer;border-bottom:2px solid transparent;
            transition:color .15s,border-color .15s}
  .qual-tab:hover{color:var(--tx)}
  .qual-tab.active{color:var(--navy);border-bottom-color:var(--navy);font-weight:600}
  .qual-window-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px;
                       flex-wrap:wrap;font-size:12px;color:var(--mu)}
  .qual-window-btn{padding:5px 10px;border:1px solid var(--b1);background:var(--white);
                   border-radius:6px;font:500 11px var(--sans);color:var(--mu);
                   cursor:pointer}
  .qual-window-btn:hover{color:var(--navy);border-color:var(--navy)}
  .qual-window-btn.active{background:var(--navy);color:#fff;border-color:var(--navy)}
  .qual-state{display:none}
  .qual-state.is-active{display:block}
  .qual-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
                  gap:14px;margin-bottom:18px}
  .qual-card{background:var(--white);border:1px solid var(--b1);border-radius:8px;
             padding:14px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
  .qual-card:hover{border-color:var(--navy);box-shadow:0 2px 8px rgba(15,23,42,.06)}
  .qual-card-title{font-size:11px;font-weight:600;letter-spacing:.06em;
                   text-transform:uppercase;color:var(--mu);margin-bottom:6px}
  .qual-card-value{font:600 24px var(--mono);color:var(--navy);line-height:1.1}
  .qual-card-sub{font-size:11px;color:var(--mu);margin-top:6px}
  .qual-bar-row{display:flex;align-items:flex-end;gap:3px;height:42px;
                margin:8px 0;padding:0 2px}
  .qual-bar{flex:1;background:var(--s3);border-radius:2px 2px 0 0;min-height:2px;
            position:relative}
  .qual-bar.qual-bar-fill{background:var(--navy)}
  .qual-bar-month{font-size:9px;color:var(--mu);text-align:center;margin-top:4px}
  .qual-section-title{font-size:12px;font-weight:600;color:var(--tx);
                      letter-spacing:.04em;text-transform:uppercase;margin:16px 0 8px}
  .qual-table{width:100%;border-collapse:collapse;font-size:12px;
              background:var(--white);border:1px solid var(--b1);border-radius:8px;
              overflow:hidden}
  .qual-table th,.qual-table td{padding:8px 12px;text-align:left;
                                 border-bottom:1px solid var(--b1)}
  .qual-table th{background:var(--s2);font-weight:600;color:var(--tx);
                 font-size:11px;letter-spacing:.04em;text-transform:uppercase}
  .qual-table tr:last-child td{border-bottom:none}
  .qual-table td.num{font-family:var(--mono);text-align:right}
  .qual-row-undocumented{font-style:italic;color:var(--mu);background:var(--s2)}
  .qual-banner{padding:10px 14px;border-radius:6px;background:#fff8ea;
               border:1px solid #ead6a6;color:#6b4a06;font-size:12px;
               margin:8px 0 14px}
  .qual-disclaimer{margin-top:18px;padding-top:12px;border-top:1px solid var(--b1);
                   font-size:11px;color:var(--mu);font-style:italic}
  .qual-evo-grid{display:grid;grid-template-columns:auto repeat(12,minmax(48px,1fr));
                 gap:2px;margin:8px 0;font-size:10px;font-family:var(--mono)}
  .qual-evo-cell{padding:4px 2px;text-align:center;border:1px solid var(--b1);
                 background:var(--white);border-radius:3px}
  .qual-evo-cell.qual-evo-insufficient{background:var(--s3);color:var(--mu)}
  .qual-evo-cell.qual-evo-empty{background:transparent;border-color:transparent;color:var(--mu)}
  .qual-evo-phase-label{padding:4px 6px;font-weight:600;color:var(--tx);
                        font-size:11px;text-align:right}
  .qual-evo-month-header{font-size:9px;color:var(--mu);text-align:center;padding:2px}
  .qual-loading{display:flex;align-items:center;gap:8px;color:var(--mu);font-size:12px;padding:18px}
  .qual-error{color:#991b1b;font-size:12px;padding:14px;background:#fef2f2;
              border:1px solid #fecaca;border-radius:6px}
  .qual-empty{color:var(--mu);font-size:12px;padding:18px;font-style:italic}
  .qual-spin{display:inline-block;width:12px;height:12px;border:2px solid var(--b1);
             border-top-color:var(--navy);border-radius:50%;animation:qual-spin 1s linear infinite}
  @keyframes qual-spin{to{transform:rotate(360deg)}}

/* ── inline block 2 (client_v2.html L2962–L4222 pre-extracción) ── */
    /* ── FEX-HOME-OPERATIVO-1.0 — clinician day-start, not document inbox ──
       Owner mandate (2026-07-01): the home must open on the clinical day —
       the operational tray (active patients / today) + quick patient start —
       NOT the document-centric hero + upload/paste/review/report actions.
       This is a REORDER + DEMOTE over the existing home scaffolding: same
       DOM, same render/gating JS, same endpoints. The document tools are
       preserved but demoted into a secondary "Herramientas" block below the
       operational content. No endpoint / schema / engine change. */
    #frx-home-wrap { display: flex; flex-direction: column; }
    #frx-home-wrap > #cockpit1c-home-cta   { order: 1; }
    #frx-home-wrap > .frx-today            { order: 2; }
    #frx-home-wrap > #frx-quick-add-panel  { order: 3; }
    #frx-home-wrap > #frx-appointments-section { order: 4; }
    #frx-home-wrap > #frx-tasks-section    { order: 5; }
    #frx-home-wrap > .frx-section-recent   { order: 6; }
    #frx-home-wrap > #home-intake-section  { order: 7; }
    /* demoted document tools */
    #frx-home-wrap > #frx-hero             { order: 20; }
    #frx-home-wrap > .frx-actions          { order: 21; }
    #frx-home-wrap > #frx-pending-section  { order: 22; }
    #frx-home-wrap > .frx-disclaimer       { order: 30; }
    /* the active-patient tray (recent cases) must ALWAYS lead — override the
       mode-B rule that hid it when today has tasks */
    .frx-home-wrap.frx-home--has-tasks .frx-section-recent { display: block; }
    /* demote the document hero to a compact secondary "Herramientas" header */
    #frx-home-wrap > #frx-hero {
      margin: 26px 0 10px; padding-top: 18px;
      border-top: 1px solid var(--fex-border);
    }
    #frx-home-wrap > #frx-hero .frx-hero-headline {
      font-size: var(--fs-lg); color: var(--fex-muted);
      font-weight: var(--fw-semi); letter-spacing: .04em;
      text-transform: uppercase;
    }
    #frx-home-wrap > #frx-hero .frx-hero-sub { font-size: var(--fs-sm); }
    /* keep the 4 document actions as a compact tray in ALL modes */
    #frx-home-wrap > .frx-actions {
      grid-template-columns: repeat(4, 1fr); gap: 8px; margin-bottom: 18px;
    }
    @media (max-width: 720px){
      #frx-home-wrap > .frx-actions { grid-template-columns: repeat(2, 1fr); }
    }
    #frx-home-wrap > .frx-actions .frx-action { padding: 12px 14px; gap: 10px; }
    #frx-home-wrap > .frx-actions .frx-action-sub { display: none; }
    .frx-home-wrap { padding-top: 28px; }
    .frx-hero { margin: 4px 0 26px; }
    .frx-hero-eyebrow {
      font-size: var(--fs-xs); font-weight: var(--fw-semi);
      letter-spacing: .14em; text-transform: uppercase;
      color: var(--fex-muted); margin-bottom: 10px;
    }
    .frx-hero-headline {
      font-size: var(--fs-3xl); font-weight: var(--fw-semi);
      color: var(--fex-primary); line-height: 1.22;
      margin: 0 0 8px; letter-spacing: -.01em;
    }
    .frx-hero-sub {
      font-size: var(--fs-md); color: var(--fex-muted);
      margin: 0; line-height: 1.55; max-width: 70ch;
    }

    .frx-actions {
      display: grid; grid-template-columns: 1fr 1fr; gap: 14px;
      margin-bottom: 28px;
    }
    @media (max-width: 720px){ .frx-actions { grid-template-columns: 1fr; } }
    .frx-action {
      display: flex; gap: 14px; align-items: center;
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 18px;
      text-align: left;
      cursor: pointer;
      font-family: var(--sans);
      transition: box-shadow .15s, border-color .15s, transform .15s;
    }
    .frx-action:hover {
      border-color: var(--fex-accent);
      box-shadow: var(--shadow-md);
    }
    .frx-action:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-action-primary {
      background: var(--fex-brand-gradient);
      color: var(--white);
      border-color: transparent;
    }
    .frx-action-primary:hover {
      background: linear-gradient(135deg,#152347 0%,#243769 100%);
      border-color: transparent;
    }
    .frx-action-icon {
      flex: 0 0 44px;
      width: 44px; height: 44px;
      border-radius: 12px;
      background: var(--fex-brand-accent-light);
      color: var(--fex-accent);
      display: grid; place-items: center;
      font-size: 20px; font-weight: 700;
    }
    /* FRX home polish: SVG action icons inherit currentColor from
       .frx-action-icon (or the primary override), so they stay calm
       and reuse the existing FEX accent token. */
    .frx-action-icon > svg { width: 22px; height: 22px; display: block; }
    /* FRX home polish: auto-hide rules. Keep DOM hooks intact for
       future wiring; toggle visibility via attributes set by the
       render functions. No new color tokens, no new layout. */
    .home-badge[data-count="0"] { display: none; }
    .frx-section[data-empty="true"] { display: none; }
    #home-search-wrap[data-empty="true"] { display: none; }
    .frx-action-primary .frx-action-icon {
      background: rgba(255,255,255,.16);
      color: #fff;
    }
    .frx-action-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
    .frx-action-title {
      font-size: var(--fs-lg); font-weight: var(--fw-semi);
      color: var(--fex-primary);
    }
    .frx-action-primary .frx-action-title { color: #fff; }
    .frx-action-sub {
      font-size: var(--fs-sm); color: var(--fex-muted);
      line-height: 1.4;
    }
    .frx-action-primary .frx-action-sub { color: rgba(255,255,255,.8); }

    .frx-section {
      margin-bottom: 18px;
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 16px 18px;
    }
    .frx-section-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 12px; margin-bottom: 6px;
    }
    .frx-section-title {
      font-size: var(--fs-xl); font-weight: var(--fw-semi);
      color: var(--fex-primary);
    }
    .frx-section-link {
      font-size: var(--fs-sm); color: var(--fex-accent);
      background: none; border: none; cursor: pointer;
      padding: 6px 8px; border-radius: 6px;
      font-family: var(--sans);
    }
    .frx-section-link:hover { background: var(--fex-brand-accent-light); }
    .frx-section-link:focus-visible { outline: 2px solid var(--fex-accent); outline-offset: 2px; }
    .frx-empty {
      font-size: var(--fs-sm); color: var(--fex-muted);
      padding: 8px 0 4px; line-height: 1.5;
    }

    .frx-section-recent { margin-top: 4px; }

    .frx-disclaimer {
      margin-top: 22px;
      padding: 14px 16px;
      background: var(--s2);
      border: 1px solid var(--b1);
      border-radius: var(--rx);
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      line-height: 1.55;
    }

    /* ── FRX-1B.1 Today header + active tasks ───────────────────────── */
    .frx-today {
      margin: 0 0 22px;
    }
    .frx-today-eyebrow {
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--fex-muted);
      margin-bottom: 8px;
    }
    .frx-today-title {
      font-size: var(--fs-3xl);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      line-height: 1.22;
      margin: 0 0 6px;
      letter-spacing: -.01em;
    }
    .frx-today-subtitle {
      font-size: var(--fs-md);
      color: var(--fex-muted);
      margin: 0;
      line-height: 1.55;
      max-width: 70ch;
    }
    .frx-tasks-section {
      margin-bottom: 22px;
    }
    .frx-tasks-list {
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .frx-task-card {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex;
      align-items: center;
      gap: 12px;
      transition: border-color .15s, box-shadow .15s;
    }
    .frx-task-card:hover {
      border-color: var(--fex-accent);
      box-shadow: var(--shadow);
    }
    .frx-task-card-body {
      flex: 1 1 auto;
      min-width: 0;
    }
    .frx-task-card-name {
      font-size: var(--fs-lg);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      margin-bottom: 2px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .frx-task-card-meta {
      font-size: var(--fs-sm);
      color: var(--fex-muted);
      display: flex;
      gap: 10px;
      flex-wrap: wrap;
    }
    /* FASE 0 — Home worklist: the clinical phase the case is in, made prominent
       so Home reads as "what needs me next" rather than a flat list. */
    .frx-task-card-phase {
      color: var(--fex-accent);
      font-weight: var(--fw-semi);
    }
    .frx-task-card-cta {
      flex: 0 0 auto;
      background: var(--white);
      border: 1px solid var(--fex-border);
      color: var(--fex-primary);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 8px 14px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
      transition: background .15s, color .15s, border-color .15s;
    }
    .frx-task-card-cta:hover {
      background: var(--fex-accent);
      color: var(--white);
      border-color: var(--fex-accent);
    }
    .frx-task-card-cta:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }

    /* Mode toggles based on wrapper class */
    .frx-home-wrap.frx-home--has-tasks #frx-hero { display: none; }
    .frx-home-wrap.frx-home--has-tasks #frx-pending-section { display: none; }
    .frx-home-wrap.frx-home--has-tasks .frx-section-recent { display: none; }
    /* Tasks section is shown by removing the [hidden] attribute in JS */

    /* When has-tasks, the 4 action cards become a compact tray */
    .frx-home-wrap.frx-home--has-tasks .frx-actions {
      grid-template-columns: repeat(4, 1fr);
      gap: 8px;
      margin-bottom: 18px;
    }
    @media (max-width: 720px){
      .frx-home-wrap.frx-home--has-tasks .frx-actions {
        grid-template-columns: repeat(2, 1fr);
      }
    }
    .frx-home-wrap.frx-home--has-tasks .frx-action {
      padding: 12px 14px;
      gap: 10px;
    }
    .frx-home-wrap.frx-home--has-tasks .frx-action-icon {
      width: 32px;
      height: 32px;
      border-radius: 8px;
      font-size: 16px;
    }
    .frx-home-wrap.frx-home--has-tasks .frx-action-title {
      font-size: var(--fs-md);
    }
    .frx-home-wrap.frx-home--has-tasks .frx-action-sub {
      display: none;
    }

    /* ── FRX-1B.3 Appointments section (mode A) ─────────────────────── */
    .frx-appointments-section {
      margin-bottom: 22px;
    }
    .frx-appointments-list {
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .frx-appointment-card {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex;
      align-items: center;
      gap: 14px;
      transition: border-color .15s, box-shadow .15s;
    }
    .frx-appointment-card:hover {
      border-color: var(--fex-accent);
      box-shadow: var(--shadow);
    }
    .frx-appt-time {
      flex: 0 0 auto;
      font-family: var(--mono);
      font-size: var(--fs-lg);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      min-width: 56px;
      letter-spacing: .02em;
    }
    .frx-appt-body {
      flex: 1 1 auto;
      min-width: 0;
    }
    .frx-appt-name {
      font-size: var(--fs-lg);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      margin-bottom: 3px;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .frx-appt-meta {
      font-size: var(--fs-sm);
      color: var(--fex-muted);
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      align-items: center;
    }
    .frx-appt-type {
      font-weight: var(--fw-med);
    }
    .frx-appt-status-chip {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      letter-spacing: .04em;
      padding: 2px 8px;
      border-radius: 999px;
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-muted);
    }
    /* Status chip variants — text always present; color is reinforcement only */
    .frx-appt-status--scheduled .frx-appt-status-chip {
      color: var(--fex-muted);
      border-color: var(--fex-border);
      background: var(--s2);
    }
    .frx-appt-status--arrived .frx-appt-status-chip {
      color: var(--fex-accent);
      border-color: var(--fex-accent);
      background: var(--fex-brand-accent-light);
    }
    .frx-appt-status--in_progress .frx-appt-status-chip {
      color: var(--fex-warn);
      border-color: var(--fex-warn);
      background: rgba(180,83,9,.08);
    }
    .frx-appt-status--completed .frx-appt-status-chip {
      color: var(--fex-good);
      border-color: var(--fex-good);
      background: rgba(21,128,61,.08);
    }
    .frx-appt-status--cancelled .frx-appt-status-chip {
      color: var(--fex-muted);
      border-color: var(--fex-border);
      background: var(--s3);
    }
    .frx-appt-status--no_show .frx-appt-status-chip {
      color: var(--fex-danger);
      border-color: var(--fex-danger);
      background: rgba(185,28,28,.08);
    }
    /* De-emphasize cancelled / completed cards */
    .frx-appt-status--cancelled,
    .frx-appt-status--completed {
      opacity: .72;
    }
    .frx-appt-cta {
      flex: 0 0 auto;
      background: var(--white);
      border: 1px solid var(--fex-border);
      color: var(--fex-primary);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 8px 14px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
      transition: background .15s, color .15s, border-color .15s;
    }
    .frx-appt-cta:hover {
      background: var(--fex-accent);
      color: var(--white);
      border-color: var(--fex-accent);
    }
    .frx-appt-cta:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    /* FRX-1B.8 — assistant Mark-arrived chip on scheduled cards. */
    .frx-appt-cta.frx-appt-mark-arrived {
      background: var(--fex-accent);
      color: var(--white);
      border-color: var(--fex-accent);
    }
    .frx-appt-cta.frx-appt-mark-arrived:hover {
      filter: brightness(.95);
    }
    .frx-appt-cta.frx-appt-mark-arrived:disabled,
    .frx-appt-cta.frx-appt-mark-arrived[disabled] {
      opacity: .55; cursor: not-allowed;
    }
    /* FRX-1B.8 — discreet clinician marker for assistants supporting
       multiple clinicians. Tenant-agnostic: shows the username only,
       never a clinic name. */
    .frx-appt-clinician {
      font-family: var(--mono);
      font-size: var(--fs-xs);
      color: var(--fex-muted);
    }

    /* Skeleton + error states */
    .frx-appt-skeleton {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex;
      gap: 14px;
      align-items: center;
    }
    .frx-appt-skeleton-block {
      background: var(--s3);
      border-radius: 6px;
      height: 14px;
      animation: frxApptShimmer 1.4s infinite ease-in-out;
    }
    .frx-appt-skeleton-time { width: 56px; height: 18px; }
    .frx-appt-skeleton-body { flex: 1 1 auto; }
    .frx-appt-skeleton-line {
      background: var(--s3);
      border-radius: 6px;
      height: 12px;
      margin-bottom: 6px;
      animation: frxApptShimmer 1.4s infinite ease-in-out;
    }
    .frx-appt-skeleton-line:first-child { width: 60%; height: 14px; }
    .frx-appt-skeleton-line:last-child  { width: 40%; margin-bottom: 0; }
    @keyframes frxApptShimmer {
      0%, 100% { opacity: 1; }
      50%      { opacity: .55; }
    }
    .frx-appt-error {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 18px;
      text-align: center;
      font-size: var(--fs-sm);
      color: var(--fex-muted);
    }
    .frx-appt-error-cta {
      margin-top: 10px;
      background: none;
      border: 1px solid var(--fex-accent);
      color: var(--fex-accent);
      padding: 6px 12px;
      border-radius: 6px;
      cursor: pointer;
      font-family: var(--sans);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
    }
    .frx-appt-error-cta:hover {
      background: var(--fex-accent);
      color: var(--white);
    }

    /* Mode toggles — has-appointments hides FRX-1A primary content
       AND the FRX-1B.1 tasks fallback (mode A wins). */
    .frx-home-wrap.frx-home--has-appointments #frx-hero { display: none; }
    .frx-home-wrap.frx-home--has-appointments #frx-pending-section { display: none; }
    .frx-home-wrap.frx-home--has-appointments .frx-section-recent { display: none; }
    .frx-home-wrap.frx-home--has-appointments #frx-tasks-section { display: none; }

    /* When has-appointments, the 4 action cards become a compact tray
       (mirrors --has-tasks compaction). */
    .frx-home-wrap.frx-home--has-appointments .frx-actions {
      grid-template-columns: repeat(4, 1fr);
      gap: 8px;
      margin-bottom: 18px;
    }
    @media (max-width: 720px){
      .frx-home-wrap.frx-home--has-appointments .frx-actions {
        grid-template-columns: repeat(2, 1fr);
      }
    }
    .frx-home-wrap.frx-home--has-appointments .frx-action {
      padding: 12px 14px;
      gap: 10px;
    }
    .frx-home-wrap.frx-home--has-appointments .frx-action-icon {
      width: 32px;
      height: 32px;
      border-radius: 8px;
      font-size: 16px;
    }
    .frx-home-wrap.frx-home--has-appointments .frx-action-title {
      font-size: var(--fs-md);
    }
    .frx-home-wrap.frx-home--has-appointments .frx-action-sub {
      display: none;
    }

    /* Mobile: cards stack info if needed */
    @media (max-width: 540px){
      .frx-appointment-card {
        flex-wrap: wrap;
        row-gap: 8px;
      }
      .frx-appt-time {
        min-width: 48px;
      }
      .frx-appt-cta {
        margin-left: auto;
      }
    }

    /* ── FRX-1B.9 Quick-add — header CTA + inline panel ──────────────── */
    /* Two-column header so the primary CTA sits to the right of the
       title block. Falls back to stacked layout below 540px. */
    .frx-today-head {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
    }
    .frx-today-text {
      flex: 1 1 auto;
      min-width: 0;
    }
    .frx-today-actions {
      flex: 0 0 auto;
      padding-top: 4px;
    }
    .frx-quick-add-cta {
      background: var(--fex-brand-gradient);
      color: var(--white);
      border: none;
      border-radius: 10px;
      padding: 10px 18px;
      font-size: var(--fs-md);
      font-weight: var(--fw-semi);
      letter-spacing: -.005em;
      cursor: pointer;
      font-family: var(--sans);
      box-shadow: var(--shadow);
      transition: filter .15s, transform .05s;
    }
    .frx-quick-add-cta:hover {
      filter: brightness(1.06);
    }
    .frx-quick-add-cta:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-quick-add-cta:active {
      transform: translateY(1px);
    }
    /* Hidden-guard — mirror FRX-1B.7 to prevent the [hidden] vs
       page-author specificity bug. !important is intentional. */
    .frx-quick-add-cta[hidden] { display: none !important; }
    .frx-quick-add-inline-cta[hidden] { display: none !important; }
    .frx-quick-add-panel[hidden] { display: none !important; }

    .frx-quick-add-panel {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 18px 18px 16px;
      margin: 0 0 18px;
      box-shadow: var(--shadow);
      animation: frxQuickAddIn .16s ease-out both;
    }
    @keyframes frxQuickAddIn {
      from { opacity: 0; transform: translateY(-4px); }
      to   { opacity: 1; transform: translateY(0);    }
    }
    .frx-quick-add-head {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 12px;
    }
    .frx-quick-add-title {
      font-size: var(--fs-lg);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
    }
    .frx-quick-add-close {
      background: transparent;
      border: none;
      color: var(--fex-muted);
      font-size: 22px;
      line-height: 1;
      width: 32px; height: 32px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
    }
    .frx-quick-add-close:hover { background: var(--fex-brand-accent-light); color: var(--fex-accent); }
    .frx-quick-add-close:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-quick-add-blocked {
      background: #fff8e6;
      border: 1px solid #f1d68a;
      color: #6c5009;
      border-radius: 10px;
      padding: 10px 12px;
      font-size: var(--fs-sm);
      margin-bottom: 12px;
    }
    .frx-quick-add-blocked[hidden] { display: none !important; }
    .frx-quick-add-label {
      display: block;
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--fex-muted);
      margin-bottom: 6px;
    }
    .frx-quick-add-input {
      width: 100%;
      padding: 12px 14px;
      border: 1px solid var(--fex-border);
      border-radius: 10px;
      font-size: var(--fs-md);
      font-family: var(--sans);
      color: var(--fex-primary);
      background: var(--white);
      transition: border-color .15s, box-shadow .15s;
    }
    .frx-quick-add-input:focus {
      outline: none;
      border-color: var(--fex-accent);
      box-shadow: 0 0 0 3px var(--fex-brand-accent-light);
    }
    .frx-quick-add-input.is-error {
      border-color: #c33;
      box-shadow: 0 0 0 3px #fde6e6;
    }
    .frx-quick-add-input:disabled {
      background: #f5f6f8;
      color: var(--fex-muted);
      cursor: not-allowed;
    }
    .frx-quick-add-preview {
      display: flex; flex-wrap: wrap; gap: 6px;
      margin: 8px 0 4px;
      min-height: 22px;
    }
    .frx-quick-add-chip-preview {
      font-size: var(--fs-xs);
      padding: 3px 9px;
      border-radius: 999px;
      background: var(--fex-brand-accent-light);
      color: var(--fex-accent);
      font-weight: var(--fw-semi);
      border: 1px solid transparent;
    }
    .frx-quick-add-chip-preview.is-pending {
      background: #f1f3f6;
      color: var(--fex-muted);
    }
    .frx-quick-add-types-hint {
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      margin: 6px 0 14px;
      line-height: 1.5;
    }
    .frx-quick-add-row {
      display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
      margin-bottom: 12px;
    }
    .frx-quick-add-date-group {
      display: inline-flex; gap: 6px; flex-wrap: wrap;
    }
    .frx-quick-add-chip {
      background: var(--white);
      border: 1px solid var(--fex-border);
      color: var(--fex-primary);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 6px 12px;
      border-radius: 999px;
      cursor: pointer;
      font-family: var(--sans);
      transition: background .15s, border-color .15s, color .15s;
    }
    .frx-quick-add-chip:hover {
      border-color: var(--fex-accent);
      color: var(--fex-accent);
    }
    .frx-quick-add-chip.is-active {
      background: var(--fex-accent);
      border-color: var(--fex-accent);
      color: var(--white);
    }
    .frx-quick-add-chip:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-quick-add-custom-date {
      padding: 6px 10px;
      border: 1px solid var(--fex-border);
      border-radius: 8px;
      font-size: var(--fs-sm);
      font-family: var(--sans);
    }
    .frx-quick-add-custom-date[hidden] { display: none !important; }
    .frx-quick-add-error {
      background: #fff1f1;
      border: 1px solid #f5c9c9;
      color: #8a2a2a;
      border-radius: 10px;
      padding: 10px 12px;
      font-size: var(--fs-sm);
      margin-bottom: 12px;
      white-space: pre-wrap;
    }
    .frx-quick-add-error[hidden] { display: none !important; }
    .frx-quick-add-foot {
      display: flex; justify-content: flex-end; gap: 8px;
    }
    .frx-quick-add-secondary {
      background: var(--white);
      border: 1px solid var(--fex-border);
      color: var(--fex-primary);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 9px 16px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
    }
    .frx-quick-add-secondary:hover { border-color: var(--fex-accent); color: var(--fex-accent); }
    .frx-quick-add-secondary:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-quick-add-submit {
      background: var(--fex-brand-gradient);
      color: var(--white);
      border: none;
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 9px 18px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
      box-shadow: var(--shadow);
      transition: filter .15s;
    }
    .frx-quick-add-submit:hover { filter: brightness(1.06); }
    .frx-quick-add-submit:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }
    .frx-quick-add-submit:disabled,
    .frx-quick-add-submit[disabled] {
      filter: grayscale(.4);
      opacity: .65;
      cursor: not-allowed;
    }

    /* Inline secondary CTA at foot of list. Calmer styling — invites a
       second create without competing with the primary CTA. */
    .frx-quick-add-inline-wrap {
      margin-top: 14px;
      display: flex; justify-content: center;
    }
    .frx-quick-add-inline-cta {
      background: transparent;
      border: 1px dashed var(--fex-border);
      color: var(--fex-muted);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      padding: 9px 16px;
      border-radius: 10px;
      cursor: pointer;
      font-family: var(--sans);
      transition: color .15s, border-color .15s;
    }
    .frx-quick-add-inline-cta:hover {
      color: var(--fex-accent);
      border-color: var(--fex-accent);
    }
    .frx-quick-add-inline-cta:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }

    /* Subtle ring on a freshly-created card. Applied for ~1.5s by JS. */
    .frx-appointment-card.frx-appt-just-created {
      box-shadow: 0 0 0 2px var(--fex-accent), var(--shadow-md);
      transition: box-shadow .25s;
    }

    /* Mobile sizing */
    @media (max-width: 540px){
      .frx-today-head {
        flex-direction: column;
        align-items: stretch;
      }
      .frx-today-actions { padding-top: 0; }
      .frx-quick-add-cta { width: 100%; }
      .frx-quick-add-foot { flex-wrap: wrap; }
      .frx-quick-add-foot > * { flex: 1 1 auto; }
    }

    /* ── FRX-1B.10-A Agenda Time-Grid (static week render) ─────────────── */
    .frx-tg-wrap { padding: 0; }
    .frx-tg-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 14px;
    }
    .frx-tg-week-label {
      font-size: var(--fs-md);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      letter-spacing: -.005em;
    }
    /* AGENDA-FRIENDLY-1.0 — the one button an assistant reaches for */
    .frx-tg-add-btn {
      background: var(--navy); color: #fff; border: 0;
      border-radius: 8px; padding: 9px 18px; font: inherit;
      font-size: var(--fs-sm); font-weight: var(--fw-semi); cursor: pointer;
      white-space: nowrap; transition: filter .15s;
    }
    .frx-tg-add-btn:hover { filter: brightness(1.08); }
    .frx-tg-add-btn:focus-visible { outline: 2px solid var(--fex-accent); outline-offset: 2px; }
    .frx-tg-pending {
      display: flex; align-items: center; gap: 8px;
      background: #FFFBEB; border: 1px solid #FCD34D; border-radius: 8px;
      padding: 8px 14px; margin: 0 0 12px;
      font-size: var(--fs-sm); color: var(--ye);
    }
    .frx-tg-pending-count {
      background: var(--ye); color: #fff; font-weight: var(--fw-bold);
      min-width: 22px; height: 22px; border-radius: 999px;
      display: inline-flex; align-items: center; justify-content: center;
      font-size: var(--fs-xs); padding: 0 6px;
    }
    .frx-tg-noscope {
      display: flex; align-items: center; gap: 8px;
      background: #FEF2F2; border: 1px solid #FCA5A5; border-radius: 8px;
      padding: 10px 14px; margin: 0 0 12px;
      font-size: var(--fs-sm); color: var(--rd, #B91C1C);
      font-weight: var(--fw-semi);
    }
    .frx-tg-noscope[hidden] { display: none; }
    .frx-tg-nav {
      display: inline-flex;
      gap: 6px;
      align-items: center;
    }
    .frx-tg-nav-btn {
      background: var(--white);
      border: 1px solid var(--fex-border);
      padding: 7px 12px;
      border-radius: 8px;
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      cursor: pointer;
      font-family: var(--sans);
      transition: border-color .15s, color .15s;
    }
    .frx-tg-nav-btn:hover {
      border-color: var(--fex-accent);
      color: var(--fex-accent);
    }
    .frx-tg-nav-btn:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }

    .frx-tg-grid {
      display: grid;
      grid-template-columns: 60px repeat(7, 1fr);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      background: var(--white);
      overflow: hidden;
    }
    /* Hidden-guard mirrors FRX-1B.7 specificity defense. */
    .frx-tg-grid[hidden] { display: none !important; }

    .frx-tg-corner {
      border-right: 1px solid var(--fex-border);
      border-bottom: 1px solid var(--fex-border);
      background: var(--white);
      height: 44px;
    }
    .frx-tg-day-header {
      border-right: 1px solid var(--fex-border);
      border-bottom: 1px solid var(--fex-border);
      padding: 6px 8px;
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      background: var(--white);
      text-align: center;
      height: 44px;
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      justify-content: center;
    }
    .frx-tg-day-header:last-child { border-right: none; }
    .frx-tg-day-header[data-today="true"] {
      background: var(--fex-brand-accent-light);
      color: var(--fex-accent);
    }
    .frx-tg-day-header[data-day-state="off"] {
      background: rgba(0, 0, 0, 0.025);
    }
    .frx-tg-day-header-name {
      font-weight: var(--fw-semi);
      text-transform: capitalize;
      font-size: var(--fs-sm);
      color: inherit;
      letter-spacing: .005em;
    }
    .frx-tg-day-header-date {
      font-size: var(--fs-xs);
      margin-top: 1px;
      color: inherit;
    }

    .frx-tg-time-gutter {
      position: relative;
      border-right: 1px solid var(--fex-border);
      height: 616px;
      background: var(--white);
    }
    .frx-tg-time-label {
      position: absolute;
      right: 6px;
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      font-variant-numeric: tabular-nums;
      transform: translateY(-50%);
      pointer-events: none;
    }

    .frx-tg-day-col {
      position: relative;
      border-right: 1px solid var(--fex-border);
      height: 616px;
      background-image: linear-gradient(to bottom,
        var(--fex-border) 1px, transparent 1px);
      background-size: 100% 56px;
      background-position: 0 0;
    }
    .frx-tg-day-col:last-child { border-right: none; }
    .frx-tg-day-col[data-day-state="off"] {
      background-color: rgba(0, 0, 0, 0.025);
    }
    .frx-tg-day-col[data-day-state="off"]::before {
      content: attr(data-off-label);
      position: absolute;
      top: 16px; left: 0; right: 0;
      text-align: center;
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      letter-spacing: .04em;
      pointer-events: none;
      text-transform: uppercase;
    }

    .frx-tg-off-hours {
      position: absolute;
      left: 0; right: 0;
      background: rgba(0, 0, 0, 0.04);
      pointer-events: none;
    }

    /* AGENDA-WHATSAPP-CONFIRM-1.0 — one-tap confirm affordance on each block */
    .frx-tg-block-wa {
      position: absolute; top: 3px; right: 3px;
      width: 20px; height: 20px; padding: 0;
      display: inline-flex; align-items: center; justify-content: center;
      border: 0; border-radius: 5px; cursor: pointer;
      background: rgba(37,211,102,.14); color: #128C3E;
      transition: background .12s;
    }
    .frx-tg-block-wa:hover { background: rgba(37,211,102,.28); }
    .frx-tg-block-wa:focus-visible { outline: 2px solid #128C3E; outline-offset: 1px; }
    .frx-tg-block {
      position: absolute;
      border-radius: 8px;
      padding: 4px 8px;
      font-size: var(--fs-xs);
      background: var(--fex-brand-accent-light);
      border: 1px solid var(--fex-accent);
      color: var(--fex-primary);
      overflow: hidden;
      /* FRX-1B.10-C — block is now interactive (role=button + tabindex);
         pointer cursor + calm hover affordance to signal clickability. */
      cursor: pointer;
      line-height: 1.3;
      box-shadow: 0 1px 1px rgba(0, 0, 0, 0.02);
      transition: filter .12s, box-shadow .12s, transform .05s;
    }
    .frx-tg-block:hover {
      filter: brightness(0.97);
      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
    }
    .frx-tg-block:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 1px;
      box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08);
    }
    .frx-tg-block:active {
      transform: translateY(1px);
    }
    .frx-tg-block-time {
      font-weight: var(--fw-semi);
      margin-right: 4px;
      font-variant-numeric: tabular-nums;
    }
    .frx-tg-block-name {
      display: inline;
    }
    .frx-tg-block-meta {
      display: block;
      margin-top: 2px;
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .frx-tg-block-status {
      display: block;
      margin-top: 1px;
      font-size: 10px;
      color: var(--fex-muted);
      letter-spacing: .04em;
      text-transform: uppercase;
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }

    /* Color por appointment_type — paleta calma, lum >0.92, WCAG AA borders. */
    .frx-tg-block[data-type="initial_consult"]      { background:#eef2fa; border-color:#3b5998; }
    .frx-tg-block[data-type="followup"]             { background:#f0f5ee; border-color:#5a7a4d; }
    .frx-tg-block[data-type="follicular_monitoring"]{ background:#eaf3f1; border-color:#3f7a6a; }
    .frx-tg-block[data-type="pre_transfer"]         { background:#fdf3e9; border-color:#a06a32; }
    .frx-tg-block[data-type="transfer_day"]         { background:#fbecec; border-color:#a93f3f; }
    .frx-tg-block[data-type="retrieval"]            { background:#f5eef7; border-color:#7a4f8a; }
    .frx-tg-block[data-type="iui"]                  { background:#e9f1f6; border-color:#4a738f; }
    .frx-tg-block[data-type="hysteroscopy"]         { background:#f3eee8; border-color:#7a6543; }
    .frx-tg-block[data-type="outcome_review"]       { background:#eef5f3; border-color:#3f7a6a; }
    .frx-tg-block[data-type="intake_review"]        { background:#f1eef8; border-color:#5a4a85; }
    .frx-tg-block[data-type="other"]                { background:#f0f1f3; border-color:#5a5d68; }

    /* Status visual. Texto del status también lleva label, no solo color. */
    .frx-tg-block[data-status="arrived"]    { box-shadow: 0 0 0 2px var(--fex-accent) inset; }
    .frx-tg-block[data-status="in_progress"]{ background-image: linear-gradient(135deg, transparent 0%, rgba(255,255,255,0.45) 100%); }
    .frx-tg-block[data-status="completed"]  { opacity: .55; }
    .frx-tg-block[data-status="cancelled"]  {
      opacity: .42;
      background-image: repeating-linear-gradient(45deg, rgba(0,0,0,0.04) 0 4px, transparent 4px 8px);
    }
    .frx-tg-block[data-status="no_show"]    { opacity: .55; border-style: dashed; }

    /* Current-time line. */
    .frx-tg-now-line {
      position: absolute;
      left: 0; right: 0;
      height: 2px;
      background: var(--fex-accent);
      pointer-events: none;
      z-index: 5;
    }
    .frx-tg-now-line[hidden] { display: none !important; }
    .frx-tg-now-dot {
      position: absolute;
      left: -4px; top: -3px;
      width: 8px; height: 8px;
      border-radius: 50%;
      background: var(--fex-accent);
    }

    /* Empty / error / mobile fallback. */
    .frx-tg-empty {
      padding: 14px;
      text-align: center;
      color: var(--fex-muted);
      font-size: var(--fs-sm);
      margin-top: 10px;
    }
    .frx-tg-empty[hidden] { display: none !important; }

    .frx-tg-error {
      background: #fff1f1;
      border: 1px solid #f5c9c9;
      color: #8a2a2a;
      padding: 12px 14px;
      border-radius: 10px;
      font-size: var(--fs-sm);
      margin-top: 10px;
    }
    .frx-tg-error[hidden] { display: none !important; }

    .frx-tg-mobile-fallback {
      padding: 28px 18px;
      text-align: center;
      background: var(--white);
      border: 1px dashed var(--fex-border);
      border-radius: var(--rx);
    }
    .frx-tg-mobile-fallback[hidden] { display: none !important; }
    .frx-tg-mobile-msg {
      color: var(--fex-muted);
      font-size: var(--fs-sm);
      margin-bottom: 14px;
      line-height: 1.55;
      max-width: 40ch;
      margin-left: auto;
      margin-right: auto;
    }
    .frx-tg-mobile-btn {
      background: var(--fex-brand-gradient);
      color: var(--white);
      border: none;
      border-radius: 10px;
      padding: 10px 20px;
      font-size: var(--fs-md);
      font-weight: var(--fw-semi);
      cursor: pointer;
      font-family: var(--sans);
      box-shadow: var(--shadow);
    }
    .frx-tg-mobile-btn:hover { filter: brightness(1.06); }
    .frx-tg-mobile-btn:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: 2px;
    }

    /* Mobile: hide the grid entirely; honest fallback wins. */
    @media (max-width: 720px) {
      .frx-tg-grid          { display: none !important; }
      .frx-tg-empty         { display: none !important; }
      .frx-tg-header        { flex-direction: column; align-items: stretch; }
      .frx-tg-week-label    { text-align: center; }
      .frx-tg-nav           { justify-content: center; }
    }

    /* ── FRX-1B.10-B Empty-slot buttons + Quick-Add portal styling ─── */
    .frx-tg-empty-slot {
      position: absolute;
      left: 0;
      right: 0;
      background: transparent;
      border: none;
      padding: 0;
      margin: 0;
      cursor: pointer;
      font: inherit;
      color: inherit;
      z-index: 1;
      transition: background-color .12s;
    }
    .frx-tg-empty-slot:hover {
      background: rgba(74, 130, 196, 0.06);
    }
    .frx-tg-empty-slot:focus-visible {
      outline: 2px solid var(--fex-accent);
      outline-offset: -2px;
      background: var(--fex-brand-accent-light);
    }
    /* Off-hours slots are clickable but visually muted — clinicians
       may extend their schedule, but the affordance is calmer. */
    .frx-tg-empty-slot[data-out-of-hours="true"]:hover {
      background: rgba(0, 0, 0, 0.025);
    }

    /* Floating portal mode: panel re-parented to <body> when opened
       from a non-home view (e.g. Agenda → Semana). Centered overlay
       with a subtle shadow; no scrim — keeps it premium and minimal. */
    .frx-quick-add-panel.frx-quick-add-panel--floating {
      position: fixed;
      top: 88px;
      left: 50%;
      transform: translateX(-50%);
      width: min(640px, 92vw);
      z-index: 999;
      max-height: calc(100vh - 120px);
      overflow-y: auto;
      box-shadow: 0 20px 60px rgba(0, 0, 0, 0.18);
    }
    @media (max-width: 720px) {
      .frx-quick-add-panel.frx-quick-add-panel--floating {
        top: 72px;
        width: 94vw;
      }
    }

    /* Just-created ring on a newly-rendered grid block (mirrors the
       Today-Home card highlight pattern from FRX-1B.9). */
    .frx-tg-block.frx-tg-just-created {
      box-shadow: 0 0 0 2px var(--fex-accent),
                  0 1px 1px rgba(0, 0, 0, 0.02);
      transition: box-shadow .25s;
    }
    /* Blocks sit above the empty-slot click layer so an occupied
       region routes its click to the block (FRX-1B.10-C wires it). */
    .frx-tg-block { z-index: 2; }

/* ── inline block 3 (client_v2.html L10452–L10892 pre-extracción) ── */
  /* ═════════ Document Inbox v0 — clinical-grade styling ═════════ */
  #view-document-inbox {
    font: 400 14px/1.45 var(--sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
    color: var(--tx, #1c2330);
  }
  #view-document-inbox .main-wrap { max-width: 1080px; padding: 22px 0 64px; }
  .doc-inbox-head { margin-bottom: 22px; }
  .doc-inbox-eyebrow {
    font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
    letter-spacing: 1.4px; text-transform: uppercase;
    color: var(--mu, #6b7280); margin-bottom: 6px;
  }
  .doc-inbox-title {
    font-size: 22px; font-weight: 700; letter-spacing: -0.2px;
    color: var(--tx, #1c2330);
  }
  .doc-inbox-sub {
    margin-top: 6px; font-size: 13px; line-height: 1.5;
    color: var(--mu, #6b7280); max-width: 760px;
  }

  .doc-inbox-upload-card {
    background: var(--white, #fff);
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 14px;
    padding: 20px 22px; margin-bottom: 24px;
    box-shadow: 0 1px 0 rgba(12,18,28,0.02);
  }
  .doc-inbox-upload-card-head { margin-bottom: 14px; }
  .doc-inbox-upload-card-title {
    font: 600 14px/1.2 var(--sans);
    color: var(--tx, #1c2330);
    letter-spacing: 0.2px;
  }

  .doc-inbox-dropzone {
    display: block;
    border: 2px dashed var(--b1, #d8dde6);
    border-radius: 10px;
    padding: 28px 20px;
    text-align: center;
    background: #fbfbfd;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
  }
  .doc-inbox-dropzone:hover,
  .doc-inbox-dropzone.is-drag {
    border-color: #1f4d8f;
    background: #f0f5fb;
  }
  .doc-inbox-dropzone-icon {
    font: 300 32px/1 var(--sans);
    color: var(--mu, #94a0b3);
    margin-bottom: 10px;
  }
  .doc-inbox-dropzone-hint {
    font: 500 13px/1.4 var(--sans);
    color: var(--tx, #1c2330);
    margin-bottom: 4px;
  }
  .doc-inbox-dropzone-limits {
    font: 400 11px/1.4 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
    letter-spacing: 0.2px;
    color: var(--mu, #94a0b3);
  }
  .doc-inbox-selected {
    margin-top: 12px;
    padding: 8px 12px;
    background: #fff;
    border: 1px solid var(--b1, #d8dde6);
    border-radius: 6px;
    font: 500 12px/1.4 var(--sans);
    color: var(--tx, #1c2330);
    text-align: left;
    word-break: break-all;
  }

  .doc-inbox-fields { display: flex; flex-direction: column; gap: 14px; margin-top: 16px; }
  .doc-inbox-field-label {
    display: block;
    font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
    letter-spacing: 0.8px; text-transform: uppercase;
    color: var(--mu, #6b7280); margin-bottom: 6px;
  }
  .doc-inbox-cat-row {
    display: flex; flex-wrap: wrap; gap: 6px;
  }
  .doc-inbox-cat-chip {
    font: 500 12px/1.2 var(--sans);
    padding: 7px 12px; border-radius: 999px;
    border: 1px solid var(--b1, #d8dde6);
    background: var(--white, #fff); color: var(--tx, #1c2330);
    cursor: pointer; transition: all 0.12s;
  }
  .doc-inbox-cat-chip:hover { border-color: #94a3b8; }
  .doc-inbox-cat-chip.is-active {
    background: #1f4d8f; color: #fff; border-color: #1f4d8f;
  }
  .doc-inbox-notes-input {
    width: 100%; box-sizing: border-box;
    padding: 9px 12px;
    border: 1px solid var(--b1, #d8dde6); border-radius: 6px;
    font: 400 13px/1.4 var(--sans); background: #fff;
  }
  .doc-inbox-notes-input:focus {
    outline: none; border-color: #1f4d8f;
    box-shadow: 0 0 0 2px rgba(31,77,143,0.16);
  }

  .doc-inbox-warn {
    margin-top: 12px;
    padding: 10px 14px;
    border: 1px solid #f0c97a; background: #fff8e1; color: #6b4d00;
    border-radius: 8px; font-size: 12px; line-height: 1.5;
  }
  .doc-inbox-warn.is-error { border-color: #d94c4c; background: #fdecec; color: #8a1a1a; }

  .doc-inbox-actions {
    display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px;
  }
  .doc-inbox-actions .btn { min-width: 120px; }

  .doc-inbox-section {
    background: var(--white, #fff);
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 12px; margin-bottom: 16px;
    overflow: hidden;
  }
  .doc-inbox-section-ghost { background: #fafbfd; }
  .doc-inbox-section-head {
    display: flex; align-items: center; gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--b1, #e6e9ef);
  }
  .doc-inbox-section-head-toggle { cursor: pointer; }
  .doc-inbox-section-head-toggle:hover { background: #f3f5f9; }
  .doc-inbox-section-title {
    font: 600 13px/1.2 var(--sans);
    color: var(--tx, #1c2330); letter-spacing: 0.1px;
  }
  .doc-inbox-section-count {
    font: 600 11px/1 var(--mono);
    padding: 3px 8px; border-radius: 999px;
    background: #eef0f4; color: #5b6776;
  }
  .doc-inbox-chev {
    margin-left: auto; font-size: 12px; color: var(--mu, #94a0b3);
    transition: transform 0.15s;
  }
  .doc-inbox-section.is-open .doc-inbox-chev { transform: rotate(90deg); }

  .doc-inbox-list { list-style: none; margin: 0; padding: 0; }
  .doc-inbox-list li {
    display: flex; flex-direction: column; gap: 0;
    padding: 14px 18px;
    border-bottom: 1px solid var(--b1, #eef0f4);
  }
  .doc-inbox-list li:last-child { border-bottom: none; }
  .doc-inbox-list li.is-ghost { color: var(--mu, #6b7280); }
  .doc-inbox-row-top {
    display: flex; align-items: flex-start; gap: 12px;
  }

  .doc-inbox-cat-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px; border-radius: 999px;
    font: 600 11px/1.5 var(--sans); letter-spacing: 0.2px;
    flex-shrink: 0;
    background: #eef6ff; color: #1c4d7a;
  }
  .doc-inbox-cat-pill::before {
    content: ""; width: 6px; height: 6px; border-radius: 50%;
    background: #2c8f43;
  }
  .doc-inbox-cat-imaging_report   { background:#fff0d6; color:#8a4b00; }
  .doc-inbox-cat-imaging_report::before { background:#c87810; }
  .doc-inbox-cat-genetic_report   { background:#f0e8ff; color:#5b3a93; }
  .doc-inbox-cat-genetic_report::before { background:#7e57c2; }
  .doc-inbox-cat-semen_analysis   { background:#e8f3ec; color:#246b35; }
  .doc-inbox-cat-semen_analysis::before { background:#2c8f43; }
  .doc-inbox-cat-prior_ivf_report { background:#fde8f0; color:#8a2f5a; }
  .doc-inbox-cat-prior_ivf_report::before { background:#c8418a; }
  .doc-inbox-cat-consent_or_admin { background:#eef0f4; color:#5b6776; }
  .doc-inbox-cat-consent_or_admin::before { background:#94a3b8; }
  .doc-inbox-cat-referral_note    { background:#e8f6f7; color:#1f6b75; }
  .doc-inbox-cat-referral_note::before { background:#3aa0aa; }
  .doc-inbox-cat-other            { background:#f3f4f7; color:#94a0b3; }
  .doc-inbox-cat-other::before { background:#cfd6e0; }

  .doc-inbox-row-main { flex: 1; min-width: 0; }
  .doc-inbox-row-name {
    font: 600 13px/1.4 var(--sans);
    color: var(--tx, #1c2330);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  }
  .doc-inbox-row-meta {
    margin-top: 4px;
    font: 400 11px/1.4 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
    color: var(--mu, #94a0b3);
  }
  .doc-inbox-row-actions { display: flex; gap: 6px; flex-shrink: 0; }
  .doc-inbox-row-actions .btn-mini {
    font: 500 11px/1 var(--sans);
    padding: 6px 10px; border-radius: 6px;
    border: 1px solid var(--b1, #d8dde6); background: var(--white, #fff);
    color: var(--tx, #1c2330); cursor: pointer; transition: all 0.12s;
  }
  .doc-inbox-row-actions .btn-mini:hover { border-color: #94a3b8; }
  .doc-inbox-row-actions .btn-mini.is-primary {
    background: #1f4d8f; color: #fff; border-color: #1f4d8f;
  }
  .doc-inbox-row-actions .btn-mini.is-warn {
    color: #93570a;
  }
  .doc-inbox-row-actions .btn-mini.is-warn:hover {
    background: #fff7e7; border-color: #c87810;
  }

  .doc-inbox-empty {
    padding: 24px 18px;
    color: var(--mu, #94a0b3);
    font: 400 13px/1.5 var(--sans);
    text-align: center;
  }

  .doc-inbox-disclaimer {
    margin-top: 24px;
    font: 400 11px/1.5 var(--sans);
    color: var(--mu, #94a0b3);
  }

  /* Reject modal */
  .doc-inbox-modal-backdrop {
    position: fixed; inset: 0;
    background: rgba(12, 18, 28, 0.62);
    z-index: 8000;
    display: flex; align-items: center; justify-content: center;
    padding: 24px;
  }
  .doc-inbox-modal-card {
    background: var(--white, #fff);
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 12px;
    max-width: 480px; width: 100%;
    box-shadow: 0 24px 60px rgba(12,18,28,0.28);
  }
  .doc-inbox-modal-head {
    padding: 18px 22px 12px;
    border-bottom: 1px solid var(--b1, #e6e9ef);
  }
  .doc-inbox-modal-title {
    font: 700 16px/1.25 var(--sans); color: var(--tx, #1c2330);
  }
  .doc-inbox-modal-sub {
    margin-top: 4px; font-size: 12px; color: var(--mu, #6b7280);
  }
  .doc-inbox-modal-body { padding: 16px 22px; }
  .doc-inbox-modal-foot {
    padding: 12px 22px 18px;
    display: flex; justify-content: flex-end; gap: 10px;
    border-top: 1px solid var(--b1, #e6e9ef);
  }

  /* ═════════ Lab PDF Extraction v0 — inline panel ═════════ */
  .lab-extract-panel {
    margin-top: 12px;
    background: #fafbfd;
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 10px;
    padding: 16px 18px;
  }
  .lab-extract-panel-head { margin-bottom: 12px; }
  .lab-extract-eyebrow {
    font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
    letter-spacing: 1.4px; text-transform: uppercase;
    color: var(--mu, #6b7280); margin-bottom: 4px;
  }
  .lab-extract-title {
    font: 600 14px/1.25 var(--sans);
    color: var(--tx, #1c2330);
  }
  .lab-extract-sub {
    margin-top: 4px;
    font-size: 12px; color: var(--mu, #6b7280); line-height: 1.5;
    max-width: 720px;
  }
  .lab-extract-status-row {
    display: flex; gap: 8px; flex-wrap: wrap; margin-top: 10px;
  }
  .lab-extract-status-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px; border-radius: 999px;
    font: 600 11px/1.5 var(--sans); letter-spacing: 0.2px;
  }
  .lab-extract-status-pill::before {
    content: ""; width: 6px; height: 6px; border-radius: 50%;
  }
  .lab-extract-status-extracted             { background:#e8f3ec; color:#246b35; }
  .lab-extract-status-extracted::before     { background:#2c8f43; }
  .lab-extract-status-text_not_extractable  { background:#fdefda; color:#8a4b00; }
  .lab-extract-status-text_not_extractable::before { background:#c87810; }
  .lab-extract-status-parse_failed          { background:#fdecec; color:#8a1a1a; }
  .lab-extract-status-parse_failed::before  { background:#d94c4c; }
  .lab-extract-status-document_ineligible   { background:#eef0f4; color:#5b6776; }
  .lab-extract-status-document_ineligible::before { background:#94a3b8; }

  .lab-extract-meta-pill {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 3px 10px; border-radius: 999px;
    font: 500 11px/1.5 var(--mono);
    background: #eef0f4; color: #5b6776;
  }

  .lab-extract-banner {
    margin-top: 12px;
    padding: 10px 14px;
    border-radius: 8px;
    font: 400 12px/1.5 var(--sans);
  }
  .lab-extract-banner-warn {
    border: 1px solid #f0c97a; background: #fff8e1; color: #6b4d00;
  }
  .lab-extract-banner-error {
    border: 1px solid #d94c4c; background: #fdecec; color: #8a1a1a;
  }
  .lab-extract-banner-info {
    border: 1px solid var(--b1, #d8dde6); background: #fff; color: var(--mu, #6b7280);
  }

  .lab-extract-fields {
    display: flex; flex-direction: column; gap: 10px; margin-top: 12px;
  }
  .lab-extract-field-card {
    background: #fff;
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 8px;
    padding: 12px 14px;
  }
  .lab-extract-field-head {
    display: flex; align-items: center; gap: 10px;
  }
  .lab-extract-field-name {
    font: 600 13px/1.2 var(--sans); color: var(--tx, #1c2330);
  }
  .lab-extract-conf-pill {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 2px 8px; border-radius: 999px;
    font: 600 10px/1.4 var(--sans); letter-spacing: 0.4px;
    text-transform: uppercase;
  }
  .lab-extract-conf-pill::before {
    content: ""; width: 5px; height: 5px; border-radius: 50%;
  }
  .lab-extract-conf-high   { background:#e8f3ec; color:#246b35; }
  .lab-extract-conf-high::before { background:#2c8f43; }
  .lab-extract-conf-medium { background:#fdefda; color:#8a4b00; }
  .lab-extract-conf-medium::before { background:#c87810; }
  .lab-extract-conf-low    { background:#fdecec; color:#8a1a1a; }
  .lab-extract-conf-low::before { background:#d94c4c; }

  .lab-extract-page-badge {
    margin-left: auto;
    font: 500 10px/1 var(--mono);
    color: var(--mu, #94a0b3);
  }
  .lab-extract-decision-pill {
    margin-left: 8px;
    padding: 2px 8px; border-radius: 999px;
    font: 600 10px/1.4 var(--sans); letter-spacing: 0.3px;
  }
  .lab-extract-decision-accept  { background:#e8f3ec; color:#246b35; }
  .lab-extract-decision-edit    { background:#eef6ff; color:#1c4d7a; }
  .lab-extract-decision-discard { background:#eef0f4; color:#5b6776; }

  .lab-extract-field-grid {
    display: grid; grid-template-columns: max-content 1fr; gap: 4px 12px;
    margin-top: 10px;
    font: 400 12px/1.5 var(--sans);
  }
  .lab-extract-field-grid dt {
    font: 500 11px/1.4 var(--mono);
    color: var(--mu, #94a0b3);
    text-transform: uppercase; letter-spacing: 0.5px;
  }
  .lab-extract-field-grid dd {
    margin: 0; color: var(--tx, #1c2330);
  }

  .lab-extract-evidence {
    margin-top: 10px;
    padding: 8px 10px;
    background: #f7f7f9;
    border: 1px solid var(--b1, #e6e9ef);
    border-radius: 6px;
    font: 400 11px/1.5 var(--mono);
    color: var(--mu, #6b7280);
    word-break: break-all;
  }

  .lab-extract-actions { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px; }
  .lab-extract-actions .btn-mini {
    font: 500 11px/1 var(--sans);
    padding: 6px 10px; border-radius: 6px;
    border: 1px solid var(--b1, #d8dde6);
    background: var(--white, #fff); color: var(--tx, #1c2330);
    cursor: pointer; transition: all 0.12s;
  }
  .lab-extract-actions .btn-mini:hover { border-color: #94a3b8; }
  .lab-extract-actions .btn-mini.is-primary {
    background: #1f4d8f; color: #fff; border-color: #1f4d8f;
  }
  .lab-extract-actions .btn-mini.is-warn { color: #93570a; }
  .lab-extract-actions .btn-mini.is-warn:hover {
    background: #fff7e7; border-color: #c87810;
  }

  .lab-extract-edit-row {
    display: grid; grid-template-columns: 2fr 1fr;
    gap: 6px; margin-top: 8px;
  }
  .lab-extract-edit-input {
    padding: 6px 8px; border: 1px solid var(--b1, #d8dde6);
    border-radius: 6px; font: 400 12px/1.4 var(--sans);
  }

  .lab-extract-bulk {
    display: flex; gap: 10px; justify-content: flex-end;
    margin-top: 14px; padding-top: 12px;
    border-top: 1px solid var(--b1, #eef0f4);
  }
  .lab-extract-bulk .btn { min-width: 140px; }

  .lab-extract-disclaimer {
    margin-top: 10px;
    font: 400 11px/1.5 var(--sans);
    color: var(--mu, #94a0b3);
  }

/* ── inline block 4 (client_v2.html L11144–L11672 pre-extracción) ── */
    .frx-eb-drawer {
      position: fixed; inset: 0; z-index: 9000;
      display: flex; align-items: stretch; justify-content: flex-end;
    }
    .frx-eb-drawer[hidden] { display: none; }
    .frx-eb-backdrop {
      position: absolute; inset: 0;
      background: rgba(15, 23, 42, .42);
      animation: frx-eb-fade .15s ease-out;
    }
    .frx-eb-panel {
      position: relative;
      width: min(540px, 100vw);
      background: var(--white);
      display: flex; flex-direction: column;
      box-shadow: -8px 0 24px rgba(15,23,42,.12);
      animation: frx-eb-slide .18s ease-out;
      outline: none;
    }
    .frx-eb-header {
      display: flex; align-items: flex-start; gap: 12px;
      padding: 18px 22px 14px;
      border-bottom: 1px solid var(--fex-border);
      background: var(--white);
      position: sticky; top: 0; z-index: 1;
    }
    .frx-eb-header-text { flex: 1 1 auto; min-width: 0; }
    .frx-eb-eyebrow {
      font-size: var(--fs-xs);
      letter-spacing: .12em;
      text-transform: uppercase;
      color: var(--fex-muted);
      font-weight: var(--fw-semi);
      margin-bottom: 4px;
    }
    .frx-eb-title {
      font-size: var(--fs-xl);
      font-weight: var(--fw-semi);
      color: var(--fex-primary);
      margin: 0 0 4px;
      line-height: 1.25;
      letter-spacing: -.005em;
      word-break: break-word;
    }
    .frx-eb-subtitle {
      font-size: var(--fs-sm);
      color: var(--fex-muted);
      display: flex; gap: 6px; flex-wrap: wrap; align-items: center;
    }
    .frx-eb-close {
      flex: 0 0 auto;
      width: 36px; height: 36px;
      border: 1px solid var(--fex-border);
      background: var(--white);
      border-radius: 8px;
      cursor: pointer;
      color: var(--fex-muted);
      display: grid; place-items: center;
      transition: background .12s, color .12s, border-color .12s;
    }
    .frx-eb-close:hover { background: var(--s2); color: var(--fex-primary); }
    .frx-eb-close:focus-visible { outline: 2px solid var(--fex-accent); outline-offset: 2px; }
    .frx-eb-close svg { width: 18px; height: 18px; display: block; }
    .frx-eb-content {
      flex: 1 1 auto;
      overflow-y: auto;
      padding: 18px 22px;
      display: flex; flex-direction: column;
      gap: 14px;
      outline: none;
    }
    .frx-eb-band {
      background: var(--white);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex; flex-direction: column;
      gap: 10px;
    }
    .frx-eb-band-head {
      display: flex; align-items: center; justify-content: space-between;
      gap: 12px;
    }
    .frx-eb-band-title {
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      letter-spacing: .08em;
      text-transform: uppercase;
      color: var(--fex-muted);
    }
    .frx-eb-band-content {
      font-size: var(--fs-sm);
      color: var(--fex-primary);
      line-height: 1.55;
    }
    .frx-eb-kv {
      display: grid;
      grid-template-columns: 130px 1fr;
      gap: 4px 12px;
      font-size: var(--fs-sm);
      margin: 0;
    }
    .frx-eb-kv dt { color: var(--fex-muted); font-weight: var(--fw-med); }
    .frx-eb-kv dd { color: var(--fex-primary); margin: 0; word-break: break-word; }
    .frx-eb-empty {
      color: var(--fex-muted);
      font-style: italic;
      font-size: var(--fs-sm);
    }
    .frx-eb-flag-list {
      display: flex; flex-direction: column; gap: 6px;
    }
    .frx-eb-flag {
      display: inline-flex; align-items: center; gap: 8px;
      padding: 7px 12px;
      border-radius: 8px;
      background: var(--s2);
      border: 1px solid var(--fex-border);
      font-size: var(--fs-sm);
      color: var(--fex-primary);
      width: fit-content;
      max-width: 100%;
    }
    .frx-eb-flag-dot {
      width: 8px; height: 8px;
      border-radius: 999px;
      background: var(--fex-warn);
      flex: 0 0 auto;
    }
    .frx-eb-list { display: flex; flex-direction: column; }
    .frx-eb-row {
      display: flex; align-items: center; gap: 10px;
      padding: 8px 0;
      border-top: 1px solid var(--fex-border);
      font-size: var(--fs-sm);
    }
    .frx-eb-row:first-child { border-top: none; padding-top: 2px; }
    .frx-eb-row-name {
      color: var(--fex-primary);
      flex: 1 1 auto;
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .frx-eb-row-meta {
      color: var(--fex-muted);
      font-size: var(--fs-xs);
      flex: 0 0 auto;
    }
    .frx-eb-status {
      display: inline-flex; align-items: center;
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      padding: 2px 8px;
      border-radius: 999px;
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-muted);
      white-space: nowrap;
      flex: 0 0 auto;
    }
    .frx-eb-status--reviewed,
    .frx-eb-status--completed { color: var(--fex-good); border-color: var(--fex-good); background: rgba(21,128,61,.06); }
    .frx-eb-status--pending,
    .frx-eb-status--needs_review,
    .frx-eb-status--scheduled,
    .frx-eb-status--extracting,
    .frx-eb-status--in_progress { color: var(--fex-warn); border-color: var(--fex-warn); background: rgba(180,83,9,.06); }
    .frx-eb-status--rejected,
    .frx-eb-status--discarded,
    .frx-eb-status--no_show { color: var(--fex-danger); border-color: var(--fex-danger); background: rgba(185,28,28,.06); }
    .frx-eb-status--extracted,
    .frx-eb-status--arrived { color: var(--fex-accent); border-color: var(--fex-accent); background: var(--fex-brand-accent-light); }
    .frx-eb-status--cancelled { color: var(--fex-muted); border-color: var(--fex-border); background: var(--s3); }
    .frx-eb-counts {
      display: flex; gap: 14px;
      font-size: var(--fs-xs);
      color: var(--fex-muted);
      flex-wrap: wrap;
    }
    .frx-eb-counts strong {
      color: var(--fex-primary);
      font-weight: var(--fw-semi);
    }
    .frx-eb-skeleton { display: flex; flex-direction: column; gap: 14px; }
    .frx-eb-skeleton-card {
      background: var(--s2);
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 14px 16px;
      height: 88px;
      animation: frxApptShimmer 1.4s infinite ease-in-out;
    }
    .frx-eb-error {
      border: 1px solid var(--fex-border);
      border-radius: var(--rx);
      padding: 22px;
      text-align: center;
      background: var(--white);
    }
    .frx-eb-error-msg {
      color: var(--fex-muted);
      font-size: var(--fs-sm);
      margin-bottom: 12px;
      line-height: 1.5;
    }
    .frx-eb-retry {
      background: none;
      border: 1px solid var(--fex-accent);
      color: var(--fex-accent);
      padding: 7px 14px;
      border-radius: 8px;
      cursor: pointer;
      font-family: var(--sans);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
    }
    .frx-eb-retry:hover { background: var(--fex-accent); color: var(--white); }
    .frx-eb-footer {
      display: flex; gap: 10px;
      padding: 14px 22px;
      border-top: 1px solid var(--fex-border);
      background: var(--white);
      position: sticky; bottom: 0;
    }
    .frx-eb-secondary, .frx-eb-primary {
      flex: 1 1 auto;
      min-height: 44px;
      padding: 11px 18px;
      border-radius: 8px;
      font-family: var(--sans);
      font-size: var(--fs-md);
      font-weight: var(--fw-semi);
      cursor: pointer;
      transition: background .12s, color .12s, border-color .12s;
    }
    .frx-eb-secondary {
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-primary);
    }
    .frx-eb-secondary:hover { background: var(--s2); }
    .frx-eb-primary {
      border: 1px solid transparent;
      background: var(--fex-brand-gradient);
      color: var(--white);
    }
    .frx-eb-primary:hover {
      background: linear-gradient(135deg,#152347 0%,#243769 100%);
    }
    .frx-eb-primary:disabled,
    .frx-eb-primary[disabled] {
      background: var(--s3);
      color: var(--fex-muted);
      cursor: not-allowed;
      border-color: var(--fex-border);
      opacity: .92;
    }
    @keyframes frx-eb-slide {
      from { transform: translateX(24px); opacity: .6; }
      to   { transform: translateX(0);    opacity: 1; }
    }
    @keyframes frx-eb-fade {
      from { opacity: 0; }
      to   { opacity: 1; }
    }
    /* FRX-1B.6 — encounter lifecycle CTA + close confirmation. Reuses
       existing tokens (var(--fex-good), var(--fex-warn), --fex-border).
       The lifecycle button slots between secondary and primary; hidden
       by default and only shown for admin / clinician_authorized owner
       on appropriate state. The confirm dialog is layered above the
       drawer panel as alertdialog. */
    .frx-eb-lifecycle {
      flex: 1 1 auto;
      min-height: 44px;
      padding: 11px 18px;
      border-radius: 8px;
      font-family: var(--sans);
      font-size: var(--fs-md);
      font-weight: var(--fw-semi);
      cursor: pointer;
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-primary);
      transition: background .12s, color .12s, border-color .12s;
    }
    /* FRX-1B.7 — explicit [hidden] guard. Class rules `display: flex/...`
       above have the same specificity (0,0,1,0) as the user-agent
       `[hidden] { display: none }`, and the page-author rule wins by
       cascade order, leaving "hidden" elements visible. Raise specificity
       to (0,0,2,0) so [hidden] deterministically hides the element AND
       removes it from the flex layout (no reserved footer slot). */
    .frx-eb-lifecycle[hidden] { display: none !important; }
    /* FRX-1B.7 — Mark-arrived inline link. Lives inside the drawer
       header just below the subtitle. Visually subordinate to the
       primary footer CTAs by design — it is a workflow bridge, not a
       primary action. Hidden by default; shown by JS only when role
       and status both qualify. */
    .frx-eb-mark-arrived {
      align-self: flex-start;
      margin-top: 8px;
      min-height: 32px;
      padding: 6px 12px;
      border-radius: 999px;
      border: 1px solid var(--fex-accent);
      background: var(--white);
      color: var(--fex-accent);
      font-family: var(--sans);
      font-size: var(--fs-xs);
      font-weight: var(--fw-semi);
      cursor: pointer;
      transition: background .12s, color .12s;
    }
    .frx-eb-mark-arrived:hover {
      background: var(--fex-accent);
      color: var(--white);
    }
    .frx-eb-mark-arrived:disabled,
    .frx-eb-mark-arrived[disabled] {
      opacity: .55; cursor: not-allowed;
    }
    .frx-eb-mark-arrived[hidden] { display: none !important; }
    .frx-eb-lifecycle[data-action="open"] {
      background: var(--fex-good);
      color: var(--white);
      border-color: var(--fex-good);
    }
    .frx-eb-lifecycle[data-action="open"]:hover { filter: brightness(.95); }
    .frx-eb-lifecycle[data-action="close"] {
      background: var(--fex-warn);
      color: var(--white);
      border-color: var(--fex-warn);
    }
    .frx-eb-lifecycle[data-action="close"]:hover { filter: brightness(.95); }
    .frx-eb-lifecycle:disabled,
    .frx-eb-lifecycle[disabled] {
      opacity: .6;
      cursor: not-allowed;
    }
    .frx-eb-confirm {
      position: absolute;
      inset: 0;
      background: rgba(8, 14, 30, .42);
      display: flex; align-items: center; justify-content: center;
      padding: 24px;
      z-index: 2;
      animation: frx-eb-fade .12s ease;
    }
    /* FRX-1B.7 — see .frx-eb-lifecycle[hidden] above for rationale.
       Without this guard, the page-author `display: flex` defeats the
       user-agent default for [hidden] and the close-confirm modal
       remains visible across all drawer states. */
    .frx-eb-confirm[hidden] { display: none !important; }
    .frx-eb-confirm-panel {
      background: var(--white);
      color: var(--fex-primary);
      border: 1px solid var(--fex-border);
      border-radius: 12px;
      box-shadow: 0 10px 30px rgba(0,0,0,.18);
      max-width: 380px;
      width: 100%;
      padding: 22px 22px 18px;
      font-family: var(--sans);
    }
    .frx-eb-confirm-title {
      margin: 0 0 8px 0;
      font-size: var(--fs-lg);
      font-weight: var(--fw-semi);
    }
    .frx-eb-confirm-msg {
      margin: 0 0 16px 0;
      font-size: var(--fs-sm);
      color: var(--fex-muted);
      line-height: 1.5;
    }
    .frx-eb-confirm-actions {
      display: flex; gap: 10px; justify-content: flex-end;
    }
    .frx-eb-confirm-cancel,
    .frx-eb-confirm-ok {
      min-height: 40px;
      padding: 9px 16px;
      border-radius: 8px;
      font-family: var(--sans);
      font-size: var(--fs-sm);
      font-weight: var(--fw-semi);
      cursor: pointer;
      transition: background .12s, border-color .12s;
    }
    .frx-eb-confirm-cancel {
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-primary);
    }
    .frx-eb-confirm-cancel:hover { background: var(--s2); }
    .frx-eb-confirm-ok {
      border: 1px solid var(--fex-warn);
      background: var(--fex-warn);
      color: var(--white);
    }
    .frx-eb-confirm-ok:hover { filter: brightness(.95); }
    @media (max-width: 540px) {
      .frx-eb-panel { width: 100vw; }
      .frx-eb-header { padding: 14px 16px 12px; }
      .frx-eb-content { padding: 14px 16px; }
      .frx-eb-footer { padding: 12px 16px; flex-direction: column; }
      .frx-eb-secondary, .frx-eb-primary,
      .frx-eb-lifecycle { width: 100%; }
      .frx-eb-kv { grid-template-columns: 110px 1fr; }
    }

    /* ── Appointment ↔ patient/case link banner (in drawer) ── */
    .frx-link-band {
      background: #FFFBEB;
      border: 1px solid #FDE68A;
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex; flex-direction: column;
      gap: 10px;
    }
    .frx-link-msg {
      font-size: var(--fs-md);
      color: var(--fex-warn);
      line-height: 1.4;
    }
    .frx-link-actions {
      display: flex; flex-wrap: wrap; gap: 8px;
    }
    .frx-link-btn {
      border: 1px solid var(--fex-border);
      background: var(--white);
      color: var(--fex-primary);
      padding: 8px 14px;
      border-radius: var(--rd-md);
      font-size: var(--fs-sm);
      font-weight: 600;
      cursor: pointer;
      transition: background .12s, border-color .12s;
    }
    .frx-link-btn:hover {
      background: var(--s2);
      border-color: var(--navy);
    }
    .frx-link-btn--primary {
      background: var(--navy);
      border-color: var(--navy);
      color: #fff;
    }
    .frx-link-btn--primary:hover { background: var(--navy2); border-color: var(--navy2); }
    .frx-link-btn:disabled {
      opacity: .5;
      cursor: not-allowed;
    }
    .frx-link-panel {
      background: var(--white);
      border: 1px solid var(--b1);
      border-radius: var(--rx);
      padding: 14px 16px;
      display: flex; flex-direction: column;
      gap: 12px;
    }
    .frx-link-search {
      width: 100%;
      padding: 10px 12px;
      border: 1px solid var(--b1);
      border-radius: var(--rd-md);
      font-size: var(--fs-md);
      background: var(--white);
      color: var(--tx);
      box-sizing: border-box;
      font-family: var(--sans);
    }
    .frx-link-search:focus {
      outline: none;
      border-color: var(--navy);
      box-shadow: 0 0 0 3px rgba(27,45,92,.10);
    }
    .frx-link-results {
      display: flex; flex-direction: column;
      gap: 6px;
      max-height: 260px;
      overflow-y: auto;
    }
    .frx-link-result {
      display: flex; flex-direction: column;
      gap: 2px;
      padding: 8px 12px;
      border: 1px solid var(--b1);
      border-radius: var(--rd-md);
      background: var(--white);
      cursor: pointer;
      transition: border-color .12s, background .12s;
    }
    .frx-link-result:hover { border-color: var(--navy); background: rgba(27,45,92,.03); }
    .frx-link-result.is-selected { border-color: var(--navy); background: rgba(27,45,92,.06); }
    .frx-link-result-name { font-size: var(--fs-md); font-weight: 600; color: var(--tx); }
    .frx-link-result-meta { font-size: var(--fs-xs); color: var(--mu); }
    .frx-link-result-badge {
      font-size: 10px; font-weight: 600; letter-spacing: .06em;
      text-transform: uppercase; color: var(--gr);
      background: rgba(22,163,74,.10);
      border: 1px solid rgba(22,163,74,.25);
      padding: 2px 6px; border-radius: 999px;
      display: inline-block; margin-top: 2px;
    }
    .frx-link-empty {
      font-size: var(--fs-sm);
      color: var(--mu);
      padding: 8px 4px;
      text-align: center;
    }
    .frx-link-status {
      font-size: var(--fs-sm);
      color: var(--mu);
      min-height: 18px;
    }
    .frx-link-status.is-error { color: var(--re); }
    .frx-link-confirm {
      display: flex; align-items: center; justify-content: space-between;
      gap: 8px; padding-top: 8px; border-top: 1px dashed var(--b1);
      flex-wrap: wrap;
    }
    .frx-link-confirm-text {
      font-size: var(--fs-sm); color: var(--tx); flex: 1 1 200px;
    }

/* ── inline block 5 (client_v2.html L33376–L33471 pre-extracción) ── */
  .home-card {
    background: var(--white);
    border: 1px solid var(--b1);
    border-radius: 10px;
    padding: 14px 16px;
    transition: border-color .15s, box-shadow .15s;
  }
  .home-card:hover { border-color: var(--navy); box-shadow: var(--shadow-sm); }
  .home-card.closed { opacity: .7; border-style: dashed; }
  .home-card-top {
    display: flex; justify-content: space-between; align-items: center;
    gap: 10px; margin-bottom: 10px; flex-wrap: wrap;
  }
  .home-card-name {
    font-size: 14px; font-weight: 600; color: var(--tx);
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px;
  }
  .home-card-btn {
    background: var(--white); color: var(--navy);
    border: 1px solid var(--b1); border-radius: 6px;
    padding: 6px 12px; font-size: 12px; font-weight: 500;
    cursor: pointer; transition: all .15s;
    font-family: inherit;
  }
  .home-card-btn:hover { background: var(--navy); color: var(--white); border-color: var(--navy); }
  .home-card-dots {
    display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 8px;
  }
  .home-dot {
    font-size: 10px; padding: 3px 8px; border-radius: 4px;
    font-weight: 500; letter-spacing: .02em;
  }
  .home-dot.done { background: #e8f5ee; color: #0a7a35; border: 1px solid #bfe5cf; }
  .home-dot.pending { background: #f5f5f5; color: var(--mu); border: 1px solid var(--b1); }
  .home-card-bar {
    width: 100%; height: 4px; background: var(--s3);
    border-radius: 2px; overflow: hidden;
  }
  .home-card-bar-fill {
    height: 100%; background: var(--gr); transition: width .3s;
  }
  .home-card-meta {
    display: flex; justify-content: space-between; font-size: 11px;
    color: var(--mu); margin-top: 6px; font-family: var(--mono);
  }
  .home-card-meta-item { letter-spacing: .02em; }

  /* ── 7b.3: claims hardening — banner, confidence badge, footer ────── */
  .fex-est-banner {
    background: #fff8ea;
    border: 1px solid #ead6a6;
    color: #6b4a06;
    font-size:13px;
    padding: 10px 14px;
    border-radius: 8px;
    margin: 8px 0 12px 0;
    font-weight: 500;
    letter-spacing: .01em;
  }
  .fex-conf-badge {
    display: inline-block;
    font-size:11px;
    font-weight: 600;
    letter-spacing: .04em;
    padding: 3px 9px;
    border-radius: 12px;
    text-transform: uppercase;
    margin-left: 8px;
    vertical-align: middle;
  }
  .fex-conf-badge.high        { background: #e8f5ee; color: #0a7a35; border: 1px solid #bfe5cf; }
  .fex-conf-badge.limited     { background: #fff4dc; color: #8a5a00; border: 1px solid #ecd49a; }
  .fex-conf-badge.preliminary { background: #fdecec; color: #8e2525; border: 1px solid #ecbcbc; }
  .fex-conf-badge.external    { background: #eef1fb; color: #3b4a89; border: 1px solid #c7cfe8; }

  .fex-conf-tooltip {
    font-size: 11px;
    color: var(--mu);
    margin-left: 6px;
    font-weight: 400;
    letter-spacing: 0;
  }

  .fex-claims-footer {
    font-size:11px;
    color: var(--mu);
    text-align: center;
    padding: 10px 14px;
    border-top: 1px solid var(--b1);
    background: var(--white);
    letter-spacing: .01em;
    font-style: italic;
  }

/* ── inline block 6 (client_v2.html L33486–L33844 pre-extracción) ── */
  .m1-section {
    background: var(--white);
    border: 1px solid var(--b1);
    border-radius: 10px;
    margin-bottom: 14px;
    overflow: hidden;
  }
  .m1-section > summary {
    list-style: none;
    padding: 14px 18px;
    font-weight: 600;
    font-size: 14px;
    color: var(--tx);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 10px;
    background: #fafbfd;
    border-bottom: 1px solid transparent;
  }
  .m1-section > summary::-webkit-details-marker { display: none; }
  .m1-section > summary::before {
    content: '▸';
    font-size: 11px;
    color: var(--mu);
    transition: transform .15s;
  }
  .m1-section[open] > summary { border-bottom-color: var(--b1); }
  .m1-section[open] > summary::before { transform: rotate(90deg); }
  .m1-sec-num {
    display: inline-flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%;
    background: var(--navy); color: var(--white);
    font-size: 11px; font-weight: 700;
  }
  .m1-sec-status {
    margin-left: auto; font-size: 11px; font-weight: 500; color: var(--mu);
  }
  .m1-sec-status.saved { color: #0a7a35; }
  .m1-sec-status.pending { color: #8a5a00; }
  .m1-section-body {
    padding: 18px;
  }
  .m1-grid-1, .m1-grid-2, .m1-grid-3, .m1-grid-5 {
    display: grid; gap: 10px;
  }
  .m1-grid-1 { grid-template-columns: 1fr; }
  .m1-grid-2 { grid-template-columns: 1fr 1fr; }
  .m1-grid-3 { grid-template-columns: repeat(3, 1fr); }
  .m1-grid-5 { grid-template-columns: repeat(5, 1fr); }
  @media (max-width: 760px) {
    .m1-grid-2, .m1-grid-3, .m1-grid-5 { grid-template-columns: 1fr; }
  }
  .m1-section label {
    display: flex; flex-direction: column; gap: 4px;
    font-size: 11px; color: var(--mu); font-weight: 500;
    letter-spacing: .02em;
  }
  .m1-input {
    padding: 8px 10px; border: 1px solid var(--b1); border-radius: 6px;
    font-size: 13px; font-family: inherit; background: var(--white);
    color: var(--tx);
  }
  .m1-input:focus {
    outline: none; border-color: var(--navy);
    box-shadow: 0 0 0 3px rgba(27,45,92,.08);
  }
  .m1-hint {
    font-size:12px; color: var(--mu); font-style: italic;
  }
  .m1-chip-row {
    display: flex; flex-wrap: wrap; gap: 6px;
  }
  .m1-chip {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 6px 11px; border-radius: 16px;
    font-size:12px; font-weight: 500;
    background: var(--white); color: var(--tx);
    border: 1px solid var(--b1);
    cursor: pointer; user-select: none;
    transition: all .12s;
  }
  .m1-chip:hover { border-color: var(--navy); }
  .m1-chip.active {
    background: var(--navy); color: var(--white); border-color: var(--navy);
  }
  .m1-chip .m1-chip-check { font-weight: 700; }
  .m1-saving-chip {
    font-size: 11px; padding: 4px 10px; border-radius: 12px;
    background: #fff4dc; color: #8a5a00; border: 1px solid #ecd49a;
    letter-spacing: .02em;
  }
  .m1-saved-chip {
    font-size: 11px; padding: 4px 10px; border-radius: 12px;
    background: #e8f5ee; color: #0a7a35; border: 1px solid #bfe5cf;
  }
  .m1-asrm-ok {
    background: #e8f5ee; color: #0a7a35; border: 1px solid #bfe5cf;
  }
  .m1-asrm-warn {
    background: #fdecec; color: #8e2525; border: 1px solid #ecbcbc;
  }
  .m1-record-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 10px 12px; background: #fafbfd; border: 1px solid var(--b1);
    border-radius: 6px; margin-bottom: 6px; font-size:13px;
  }
  .m1-record-row .m1-record-meta {
    font-family: var(--mono); color: var(--mu); font-size: 11px;
  }

  /* 7d: Pronostic summary panel */
  .m1-prog-table {
    width: 100%; border-collapse: collapse; font-size: 13px;
  }
  .m1-prog-table th {
    text-align: left; padding: 8px 10px;
    font-size:11px; font-weight: 600;
    color: var(--mu); text-transform: uppercase; letter-spacing: .05em;
    border-bottom: 1px solid var(--b1);
  }
  .m1-prog-table th:nth-child(2) { text-align: right; }
  .m1-prog-table th:nth-child(3) { text-align: center; width: 120px; }
  .m1-prog-table td {
    padding: 10px 10px; border-bottom: 1px solid var(--b1);
    vertical-align: top;
  }
  .m1-prog-table tr:last-child td { border-bottom: none; }
  .m1-prog-table td:nth-child(2) {
    text-align: right; font-family: var(--mono);
    font-size: 14px; font-weight: 600; color: var(--tx);
  }
  .m1-prog-table td:nth-child(3) { text-align: center; }
  .m1-prog-sub {
    font-size:11px; color: var(--mu); font-weight: 400;
    margin-top: 2px;
  }
  .m1-prog-conf {
    display: inline-block; padding: 2px 8px; border-radius: 10px;
    font-size:11px; font-weight: 600; letter-spacing: .03em;
    text-transform: uppercase;
  }
  .m1-prog-conf.medium { background: #e8f5ee; color: #0a7a35; border: 1px solid #bfe5cf; }
  .m1-prog-conf.low    { background: #fff4dc; color: #8a5a00; border: 1px solid #ecd49a; }
  .m1-prog-conf.low-medium { background: #f0f4fa; color: #1b2d5c; border: 1px solid #cfd6e4; }
  .m1-prog-conf.insufficient { background: #f5f5f5; color: var(--mu); border: 1px solid var(--b1); }

  /* SET vs DET comparison block */
  .m1-prog-setdet {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  }
  @media (max-width: 720px) {
    .m1-prog-setdet { grid-template-columns: repeat(2, 1fr); }
  }
  .m1-prog-setdet-col {
    background: var(--white); border: 1px solid var(--b1); border-radius: 6px;
    padding: 10px 12px; text-align: center;
  }
  .m1-prog-setdet-col.m1-prog-setdet-warn {
    background: #fff8ea; border-color: #ead6a6;
  }
  .m1-prog-setdet-label {
    font-size:11px; font-weight: 600; color: var(--mu);
    text-transform: uppercase; letter-spacing: .04em;
  }
  .m1-prog-setdet-val {
    font-size: 20px; font-weight: 700; color: var(--navy);
    margin: 6px 0 2px; font-family: var(--mono);
  }
  .m1-prog-setdet-col.m1-prog-setdet-warn .m1-prog-setdet-val { color: #8a5a00; }

  /* ─── FASE 7h · Decision Log UI surfacing ────────────────────────────── */
  .cyc-log-badge{
    display:inline-flex;align-items:center;gap:6px;
    height:28px;padding:0 10px;margin-left:6px;
    background:var(--white);border:1px solid var(--b1);border-radius:var(--rd-md);
    font-family:var(--font-sans,inherit);font-size:var(--fs-sm);font-weight:var(--fw-med);
    color:var(--navy);cursor:pointer;transition:all .15s ease;
    line-height:1;user-select:none;
  }
  /* 7ui.0: hover lift to signal interactive */
  .cyc-log-badge:hover{background:var(--s3);border-color:var(--b2);box-shadow:var(--shadow-md)}
  .cyc-log-badge:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
  .cyc-log-badge .cyc-log-dot{color:var(--dim);font-weight:400}
  .cyc-log-badge .cyc-log-count{color:var(--blue2);font-variant-numeric:tabular-nums;font-weight:var(--fw-semi)}

  .decision-log-drawer{
    position:fixed;top:0;right:0;bottom:0;width:420px;max-width:100vw;
    z-index:800;pointer-events:none;
  }
  .decision-log-drawer .dld-backdrop{
    position:fixed;inset:0;background:rgba(15,23,42,.28);opacity:0;transition:opacity .24s ease;
    pointer-events:none;
  }
  .decision-log-drawer .dld-panel{
    position:absolute;top:0;right:0;bottom:0;width:420px;max-width:100vw;
    background:var(--white);border-left:1px solid var(--b1);
    box-shadow:-8px 0 24px rgba(15,23,42,.08);
    transform:translateX(100%);transition:transform .24s ease;
    display:flex;flex-direction:column;pointer-events:auto;
  }
  .decision-log-drawer.open .dld-panel{transform:translateX(0)}
  .decision-log-drawer.open .dld-backdrop{opacity:1;pointer-events:auto}

  .dld-header{
    display:flex;align-items:flex-start;justify-content:space-between;
    padding:var(--sp-4) var(--sp-5) var(--sp-3);
    border-bottom:1px solid var(--b1);
  }
  .dld-titles{display:flex;flex-direction:column;gap:2px;min-width:0}
  .dld-title{font-size:var(--fs-xl);font-weight:var(--fw-semi);color:var(--navy);line-height:1.2}
  .dld-subtitle{
    display:inline-flex;align-items:center;gap:6px;
    font-size:var(--fs-xs);color:var(--mu);font-family:var(--mono);letter-spacing:.02em;
  }
  .dld-lock{width:10px;height:10px;fill:none;stroke:var(--mu);stroke-width:1.8}
  .dld-close{
    background:transparent;border:1px solid var(--b1);border-radius:8px;
    width:28px;height:28px;font-size:16px;line-height:1;color:var(--mu);cursor:pointer;
    display:inline-flex;align-items:center;justify-content:center;
  }
  .dld-close:hover{background:var(--s2);color:var(--navy)}

  .dld-body{flex:1 1 auto;overflow-y:auto;padding:var(--sp-3) var(--sp-4) var(--sp-5)}

  .dld-empty{
    padding:var(--sp-6) var(--sp-3);text-align:center;color:var(--mu);
    font-size:var(--fs-sm);line-height:1.5;
  }

  .dld-row{
    display:grid;grid-template-columns: 1.1fr .9fr 1.3fr .45fr .45fr .7fr;
    gap:8px;align-items:center;
    padding:10px 8px;border-bottom:1px solid var(--s3);
    font-size:var(--fs-sm);color:var(--tx);cursor:pointer;
  }
  .dld-row.dld-head{
    cursor:default;font-size:var(--fs-xs);text-transform:uppercase;
    letter-spacing:.06em;color:var(--mu);font-weight:var(--fw-med);
    border-bottom:1px solid var(--b1);
  }
  .dld-row:not(.dld-head):hover{background:var(--s2)}
  .dld-row.is-active{background:var(--s3)}
  .dld-row .dld-ep{
    font-family:var(--mono);font-size:var(--fs-xs);color:var(--mu);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .dld-row .dld-hash code{
    font-family:var(--mono);font-size:var(--fs-xs);color:var(--dim);
  }

  .dld-dot{
    display:inline-block;width:10px;height:10px;border-radius:50%;
    background:var(--dim);
  }
  .dld-dot-ok{background:var(--gr)}
  .dld-dot-warn{background:var(--ye)}
  .dld-dot-pending{background:var(--b2)}

  .dld-detail{
    padding:10px 8px 14px;background:var(--s2);border-bottom:1px solid var(--s3);
    font-size:var(--fs-xs);color:var(--tx);
  }
  .dld-detail-row{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
  .dld-detail-label{
    font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--mu);
    font-weight:var(--fw-med);
  }
  .dld-detail pre{
    margin:0;padding:8px;background:var(--white);border:1px solid var(--b1);border-radius:6px;
    font-family:var(--mono);font-size:11px;max-height:180px;overflow:auto;white-space:pre-wrap;word-break:break-word;
  }
  .dld-detail code{
    font-family:var(--mono);font-size:11px;color:var(--tx);background:var(--white);
    padding:2px 6px;border:1px solid var(--b1);border-radius:4px;word-break:break-all;
  }
  .dld-verify{
    margin-top:6px;padding:6px 12px;font-size:var(--fs-xs);font-weight:var(--fw-med);
    color:var(--white);background:var(--navy);border:none;border-radius:6px;cursor:pointer;
  }
  .dld-verify:hover{background:var(--navy2)}
  .dld-verify-status{
    display:inline-block;margin-left:10px;font-size:var(--fs-xs);font-family:var(--mono);
  }
  .dld-verify-status.ok{color:var(--gr)}
  .dld-verify-status.fail{color:var(--re)}

  @media (max-width: 1200px){
    .decision-log-drawer{width:100vw}
    .decision-log-drawer .dld-panel{width:min(420px,calc(100vw - 24px))}
    .decision-log-drawer .dld-backdrop{pointer-events:none}
    .decision-log-drawer.open .dld-backdrop{pointer-events:auto}
  }

  /* ─── 7h.2 polish — chips, header context, copy feedback, micro-interactions ─── */
  .decision-log-drawer{
    --phase-m1-bg:#EEF2FF; --phase-m1-fg:#4338CA;
    --phase-m2-bg:#EFF6FF; --phase-m2-fg:#1D4ED8;
    --phase-m3-bg:#ECFDF5; --phase-m3-fg:#15803D;
    --phase-m4-bg:#FFFBEB; --phase-m4-fg:#B45309;
    --phase-out-bg:var(--s3); --phase-out-fg:var(--mu);
  }
  .dld-phase-chip{
    display:inline-flex;align-items:center;
    padding:2px 8px;border-radius:10px;
    font-size:var(--fs-xs);font-weight:var(--fw-med);
    line-height:1.5;letter-spacing:.01em;
  }
  .dld-phase-chip.p-m1{background:var(--phase-m1-bg);color:var(--phase-m1-fg)}
  .dld-phase-chip.p-m2{background:var(--phase-m2-bg);color:var(--phase-m2-fg)}
  .dld-phase-chip.p-m3{background:var(--phase-m3-bg);color:var(--phase-m3-fg)}
  .dld-phase-chip.p-m4{background:var(--phase-m4-bg);color:var(--phase-m4-fg)}
  .dld-phase-chip.p-outcome{background:var(--phase-out-bg);color:var(--phase-out-fg)}

  /* Header polish */
  .dld-title{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap}
  .dld-title-count{font-weight:var(--fw-reg);color:var(--mu);font-variant-numeric:tabular-nums;font-size:var(--fs-md)}
  .dld-context{
    margin-top:6px;display:flex;align-items:center;gap:8px;
    font-size:var(--fs-xs);font-family:var(--mono);
  }
  .dld-context-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);font-weight:var(--fw-med)}
  .dld-context-val{color:var(--tx);font-weight:var(--fw-semi)}

  /* Empty state — premium hierarchy */
  .dld-empty{
    display:flex;flex-direction:column;align-items:center;gap:10px;
    padding:var(--sp-8) var(--sp-3);text-align:center;color:var(--mu);
  }
  .dld-empty-icon{width:38px;height:38px;color:var(--dim);opacity:.55}
  .dld-empty-title{font-size:var(--fs-md);font-weight:var(--fw-med);color:var(--tx)}
  .dld-empty-sub{font-size:var(--fs-xs);color:var(--mu);max-width:260px;line-height:1.5}

  /* Click-to-copy feedback */
  .dld-copy{cursor:pointer;transition:color .15s ease, background-color .15s ease}
  .dld-copy:hover{color:var(--blue2)}
  .dld-copy.dld-copied{color:var(--gr) !important;background:#ECFDF5}

  /* Verify result — auditor-grade side-by-side */
  .dld-verify-icon{display:inline-block;width:14px;text-align:center;font-weight:var(--fw-bold);margin-right:4px}
  .dld-verify-status.ok .dld-verify-icon{color:var(--gr)}
  .dld-verify-status.fail .dld-verify-icon{color:var(--re)}
  .dld-verify-detail{
    margin-top:6px;display:flex;flex-direction:column;gap:4px;
    font-size:11px;font-family:var(--mono);
  }
  .dld-verify-detail-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
  .dld-verify-detail-row > .dld-detail-label{min-width:90px}
  .dld-verify-detail-row > code{flex:1 1 auto;word-break:break-all}

  /* Micro-interactions — premium easing + row accent */
  .decision-log-drawer .dld-panel{transition:transform .26s cubic-bezier(.16,1,.3,1)}
  .decision-log-drawer .dld-backdrop{transition:opacity .2s ease 60ms}
  .dld-row:not(.dld-head){transition:background-color .12s ease, box-shadow .12s ease}
  .dld-row:not(.dld-head):hover{background:var(--s2);box-shadow:inset 3px 0 0 var(--blue2)}
  .dld-row.is-active{background:var(--s3);box-shadow:inset 3px 0 0 var(--navy)}

/* ── inline block 7 (client_v2.html L33844–L33939 pre-extracción) ── */
  /* ─── M4A Fresh Transfer Readiness (7e.1) — scoped variables only ─── */
  .m4a-readiness-card{
    --m4a-favorable-bg:#ECFDF5;
    --m4a-favorable-fg:#15803D;
    --m4a-caution-bg:#FEF3C7;
    --m4a-caution-fg:#92400E;
    --m4a-postpone-bg:#FEE2E2;
    --m4a-postpone-fg:#991B1B;
    --m4a-insufficient-bg:#F3F4F6;
    --m4a-insufficient-fg:#4B5563;
    --m4a-na-bg:#E0E7FF;
    --m4a-na-fg:#3730A3;
    --m4a-not-scored-bg:#F3F4F6;
    --m4a-not-scored-fg:#6B7280;
    --m4a-row-border:#E5E7EB;
    --m4a-meta-fg:#6B7280;
  }
  .m4a-readiness-card .m4a-headline{
    display:flex;align-items:flex-start;gap:24px;flex-wrap:wrap;
    margin-top:4px;padding-bottom:14px;border-bottom:1px solid var(--m4a-row-border);
  }
  .m4a-readiness-card .m4a-headline-block{display:flex;flex-direction:column;gap:4px}
  .m4a-readiness-card .m4a-headline-label{
    font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--m4a-meta-fg);
  }
  .m4a-readiness-card .m4a-headline-value{
    font-size:30px;font-weight:700;color:var(--navy);font-family:var(--mono);line-height:1;
  }
  .m4a-readiness-card .m4a-tier-chip{
    display:inline-block;padding:5px 12px;border-radius:999px;
    font-size:12px;font-weight:600;letter-spacing:.02em;
    background:var(--m4a-insufficient-bg);color:var(--m4a-insufficient-fg);
  }
  .m4a-readiness-card .m4a-tier-chip.t-favorable{background:var(--m4a-favorable-bg);color:var(--m4a-favorable-fg)}
  .m4a-readiness-card .m4a-tier-chip.t-caution{background:var(--m4a-caution-bg);color:var(--m4a-caution-fg)}
  .m4a-readiness-card .m4a-tier-chip.t-postpone{background:var(--m4a-postpone-bg);color:var(--m4a-postpone-fg)}
  .m4a-readiness-card .m4a-tier-chip.t-insufficient{background:var(--m4a-insufficient-bg);color:var(--m4a-insufficient-fg)}
  .m4a-readiness-card .m4a-tier-chip.t-not-applicable{background:var(--m4a-na-bg);color:var(--m4a-na-fg)}
  .m4a-readiness-card .m4a-section{margin-top:14px}
  .m4a-readiness-card .m4a-section-title{
    font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--m4a-meta-fg);margin-bottom:6px;
  }
  .m4a-readiness-card .m4a-breakdown{display:flex;flex-direction:column;gap:4px}
  .m4a-readiness-card .m4a-breakdown-row{
    display:grid;grid-template-columns:1fr auto auto;gap:10px;
    padding:6px 0;border-bottom:1px dashed var(--m4a-row-border);
    font-size:12px;
  }
  .m4a-readiness-card .m4a-breakdown-row:last-child{border-bottom:none}
  .m4a-readiness-card .m4a-breakdown-var{color:var(--tx);font-weight:500}
  .m4a-readiness-card .m4a-breakdown-val{color:var(--mu);font-family:var(--mono)}
  .m4a-readiness-card .m4a-breakdown-status{
    font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;
    color:var(--m4a-meta-fg);
  }
  .m4a-readiness-card .m4a-breakdown-status.s-favorable{color:var(--m4a-favorable-fg)}
  .m4a-readiness-card .m4a-breakdown-status.s-caution{color:var(--m4a-caution-fg)}
  .m4a-readiness-card .m4a-breakdown-status.s-postpone{color:var(--m4a-postpone-fg)}
  .m4a-readiness-card .m4a-breakdown-status.s-not-scored{color:var(--m4a-not-scored-fg);font-style:italic}
  .m4a-readiness-card .m4a-na-note{
    margin-top:8px;padding:10px 12px;border-radius:6px;
    background:var(--m4a-na-bg);color:var(--m4a-na-fg);
    font-size:12px;line-height:1.5;
  }
  .m4a-readiness-card .m4a-breakdown-note{
    grid-column:1 / -1;color:var(--m4a-meta-fg);font-size:11px;font-style:italic;
  }
  .m4a-readiness-card .m4a-missing,
  .m4a-readiness-card .m4a-meta{font-size:12px;color:var(--tx);line-height:1.5}
  .m4a-readiness-card .m4a-missing-tag{
    display:inline-block;margin:2px 4px 2px 0;padding:2px 8px;border-radius:4px;
    font-size:11px;font-family:var(--mono);
    background:var(--m4a-insufficient-bg);color:var(--m4a-insufficient-fg);
  }
  .m4a-readiness-card .m4a-meta-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:3px}
  .m4a-readiness-card .m4a-meta-key{
    font-size:10px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--m4a-meta-fg);min-width:130px;
  }
  .m4a-readiness-card .m4a-meta-val{font-size:12px;color:var(--tx);font-family:var(--mono)}
  .m4a-readiness-card .m4a-disclaimer{
    margin-top:14px;padding:10px 12px;border-radius:6px;
    background:var(--m4a-insufficient-bg);color:var(--m4a-insufficient-fg);
    font-size:11px;line-height:1.5;
  }
  .m4a-readiness-card .m4a-uid{
    margin-top:10px;font-size:10px;font-family:var(--mono);color:var(--m4a-meta-fg);
    word-break:break-all;
  }
  .m4a-readiness-card .m4a-status{font-size:12px;color:var(--m4a-meta-fg);min-height:16px}
  .m4a-readiness-card .m4a-status.is-error{color:var(--re)}
  .m4a-readiness-card .m4a-status.is-ok{color:var(--gr)}

/* ── inline block 8 (client_v2.html L33939–L34116 pre-extracción) ── */
  /* ─── M4B Frozen Transfer (7f) — scoped variables only ─── */
  .m4b-frozen-card{
    --m4b-pending-bg:#F3F4F6;
    --m4b-pending-fg:#374151;
    --m4b-captured-bg:#ECFDF5;
    --m4b-captured-fg:#15803D;
    --m4b-delayed-bg:#FEF3C7;
    --m4b-delayed-fg:#92400E;
    --m4b-skipped-bg:#E5E7EB;
    --m4b-skipped-fg:#6B7280;
    --m4b-gate-bg:#FEF3C7;
    --m4b-gate-fg:#92400E;
    --m4b-row-border:#E5E7EB;
    --m4b-meta-fg:#6B7280;
    --m4b-info-bg:#EFF6FF;
    --m4b-info-fg:#1D4ED8;
  }
  .m4b-frozen-card.m4b-gate-banner{
    margin:16px 20px;padding:14px 16px;border-radius:8px;
    background:var(--m4b-gate-bg);color:var(--m4b-gate-fg);
    font-size:13px;font-weight:500;
  }
  .m4b-frozen-card .m4b-status-chip{
    display:inline-block;padding:3px 10px;border-radius:999px;
    font-size:11px;font-weight:600;letter-spacing:.02em;
    background:var(--m4b-pending-bg);color:var(--m4b-pending-fg);
    border:1px solid #D1D5DB;
  }
  .m4b-frozen-card .m4b-status-chip.m4b-status-captured{background:var(--m4b-captured-bg);color:var(--m4b-captured-fg)}
  .m4b-frozen-card .m4b-status-chip.m4b-status-delayed{background:var(--m4b-delayed-bg);color:var(--m4b-delayed-fg)}
  .m4b-frozen-card .m4b-status-chip.m4b-status-skipped{background:var(--m4b-skipped-bg);color:var(--m4b-skipped-fg)}
  .m4b-frozen-card .m4b-row-status{font-size:11px;color:var(--m4b-meta-fg);min-height:14px;margin-top:6px}
  .m4b-frozen-card .m4b-row-status.is-error{color:var(--re)}
  .m4b-frozen-card .m4b-row-status.is-ok{color:var(--gr)}
  .m4b-frozen-card .m4b-endo-list{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}
  .m4b-frozen-card .m4b-endo-row{
    border:1px solid var(--m4b-row-border);border-radius:8px;padding:10px 12px;
    background:#FAFAFA;
  }
  .m4b-frozen-card .m4b-endo-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
  .m4b-frozen-card .m4b-endo-title{font-size:12px;font-weight:600;color:var(--tx)}
  .m4b-frozen-card .m4b-endo-grid{margin-bottom:8px}
  .m4b-frozen-card .m4b-deferred-note{
    margin-top:14px;padding:10px 12px;border-radius:6px;
    background:var(--m4b-info-bg);color:var(--m4b-info-fg);
    font-size:11px;line-height:1.5;
  }
  .m4b-frozen-card .m4b-disclaimer{
    margin-top:10px;padding:8px 12px;border-radius:6px;
    background:var(--m4b-pending-bg);color:var(--m4b-meta-fg);
    font-size:11px;line-height:1.5;
  }

  /* ─── 7f.1 — FET timeline layout ─── */
  .m4b-frozen-card.m4b-timeline{
    --m4b-rail:#E5E7EB;
    --m4b-rail-active:#1B2D5C;
    --m4b-current-bg:#EEF2FF;
    --m4b-current-fg:#3730A3;
    --m4b-info-bg:#F9FAFB;
    --m4b-status-scheduled-bg:#E0F2FE;
    --m4b-status-scheduled-fg:#075985;
    margin:14px 20px;padding:14px 18px 6px;
    background:var(--white);border-radius:10px;
    box-shadow:0 1px 3px rgba(0,0,0,.04);
  }
  .m4b-frozen-card .m4b-status-chip.m4b-status-scheduled{
    background:var(--m4b-status-scheduled-bg);color:var(--m4b-status-scheduled-fg);
  }
  .m4b-frozen-card .m4b-current-banner{
    margin:0 0 14px;padding:10px 14px;border-radius:8px;
    background:var(--m4b-current-bg);color:var(--m4b-current-fg);
    border-left:3px solid var(--m4b-rail-active);
  }
  .m4b-frozen-card .m4b-current-label{
    font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;opacity:.7;
  }
  .m4b-frozen-card .m4b-current-row{
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    font-size:14px;font-weight:500;margin-top:2px;
  }
  .m4b-frozen-card .m4b-current-num{
    font-size:18px;font-weight:700;font-family:var(--mono);
  }
  .m4b-frozen-card .m4b-current-title{font-weight:600}
  .m4b-frozen-card .m4b-current-sep{opacity:.5}
  .m4b-frozen-card .m4b-current-next-label{
    font-size:10px;text-transform:uppercase;letter-spacing:.08em;opacity:.7;
  }
  .m4b-frozen-card .m4b-current-next{font-style:italic}
  .m4b-frozen-card .m4b-sync-summary{
    margin-top:6px;font-size:12px;color:var(--m4b-meta-fg);font-family:var(--mono);
  }

  .m4b-frozen-card .m4b-step-row{
    display:flex;gap:14px;padding:14px 0;
    border-top:1px solid var(--m4b-row-border);
  }
  /* Restore the UA-stylesheet [hidden]{display:none} that the rule above
     would otherwise override (specificity 0,2,0 > 0,1,0). Without this,
     M4B step rows carrying the `hidden` attribute (e.g. m4b-step-setup,
     m4b-step-cycle-start) stay visually rendered as flex despite the
     attribute being set. */
  .m4b-frozen-card .m4b-step-row[hidden]{display:none}
  .m4b-frozen-card .m4b-step-row:first-of-type{border-top:none;padding-top:0}
  .m4b-frozen-card .m4b-step-rail{
    flex:0 0 36px;display:flex;justify-content:center;padding-top:2px;
  }
  .m4b-frozen-card .m4b-step-num{
    font-size:18px;font-weight:600;color:var(--m4b-meta-fg);font-family:var(--mono);
  }
  .m4b-frozen-card .m4b-step-body{flex:1 1 auto;min-width:0}
  .m4b-frozen-card .m4b-step-head{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px;
  }
  .m4b-frozen-card .m4b-step-title{
    font-size:13px;font-weight:600;color:var(--tx);
  }
  .m4b-frozen-card .m4b-step-count{
    font-size:11px;color:var(--m4b-meta-fg);font-family:var(--mono);margin-left:4px;
  }
  .m4b-frozen-card .m4b-step-grid{
    display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
    gap:10px;margin-bottom:10px;
  }
  .m4b-frozen-card .m4b-field-wide{grid-column:1 / -1}
  .m4b-frozen-card .m4b-field-wide textarea{
    width:100%;font-family:inherit;font-size:13px;padding:8px 10px;
    border:1px solid var(--b1);border-radius:6px;resize:vertical;
  }
  .m4b-frozen-card .m4b-step-actions{
    display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:6px;
  }
  .m4b-frozen-card .m4b-disclosure{
    margin-left:auto;font-size:11px;padding:4px 10px;
  }

  .m4b-frozen-card .m4b-endo-row.compact{
    background:var(--white);border:1px solid var(--m4b-row-border);
    border-radius:6px;padding:8px 10px;margin-bottom:8px;
  }
  .m4b-frozen-card .m4b-endo-row.compact .m4b-endo-summary{
    font-size:11px;color:var(--m4b-meta-fg);font-family:var(--mono);
    margin-left:6px;
  }
  .m4b-frozen-card .m4b-endo-row.compact .m4b-endo-grid{
    margin-top:6px;
  }

  .m4b-frozen-card .m4b-step-info{background:var(--m4b-info-bg)}
  .m4b-frozen-card .m4b-beta-value{
    font-size:18px;font-weight:600;color:var(--navy);font-family:var(--mono);
  }
  .m4b-frozen-card .m4b-beta-foot{
    font-size:11px;color:var(--m4b-meta-fg);margin-top:2px;
  }

  /* Responsive — tablet ≤ 1023px */
  @media (max-width: 1023px){
    .m4b-frozen-card.m4b-timeline{margin:10px;padding:12px 12px 4px}
    .m4b-frozen-card .m4b-step-grid{grid-template-columns:1fr}
  }

  /* Responsive — phone ≤ 600px */
  @media (max-width: 600px){
    .m4b-frozen-card.m4b-timeline{margin:8px;padding:10px 10px 4px}
    .m4b-frozen-card .m4b-step-row{gap:8px;padding:10px 0}
    .m4b-frozen-card .m4b-step-rail{flex:0 0 24px}
    .m4b-frozen-card .m4b-step-num{font-size:15px}
    .m4b-frozen-card .m4b-step-head{flex-direction:column;align-items:flex-start}
    .m4b-frozen-card .m4b-step-actions .btn{width:100%;justify-content:center}
    .m4b-frozen-card .m4b-disclosure{margin-left:0;align-self:flex-start}
    .m4b-frozen-card .m4b-current-row{font-size:13px}
  }

/* ── inline block 9 (client_v2.html L34124–L36362 pre-extracción) ── */
  /* ─── M0.4a — Pre-consult assessment (scoped variables only) ─────────
     The .m0-card wrapper isolates every M0 token from M4B / Outcome /
     Command Center scopes. Mirrors the M4B card scaffold (.m0-section,
     .m0-section-head, .m0-status-chip, .m0-row-status) for visual
     consistency without sharing class names — never reuse .m4b-* or
     .outcome-* classes here. */

  /* M0 premium patch — tighten the dead zone between the subnav/topbar
     and the consultation title block. Scoped to #view-m0-assessment so
     other views keep their default breathing room. Overrides the broad
     .main-wrap padding rule that ships with !important. */
  #view-m0-assessment .main-wrap{padding-top:6px !important}
  #view-m0-assessment .flow-header{margin-bottom:8px !important}
  #view-m0-assessment + .subnav-sticky,
  #subnav-fertility_consult.subnav-sticky{margin-bottom:4px !important; top:52px !important}
  /* M0.4d: tighter tabs (Assessment / Command Center) — pull
     vertical chrome above the canvas back to ~32 px instead of
     ~58 px. Compresses the gap between case-ctx and the first
     pill card. */
  #subnav-fertility_consult .subnav-btn{
    padding:8px 16px !important;
  }
  /* M0.4d: tighter top margin on the first .m0-card so it sits
     close to the subnav border instead of floating with 14 px
     of empty space. */
  #view-m0-assessment .m0-card{
    margin-top:2px;
  }

  /* E.6 — Post-sign premium banner. Replaces the simple read-only
     line with a richer locked card: SIGNED badge, decision_uid,
     timestamp, hash with copy buttons, and a deep link to the
     Decision Log entry. */
  .m0-card .m0-locked-banner-rich{
    margin-top:14px;
    padding:14px 18px;
    background:linear-gradient(180deg, #ECFDF5 0%, var(--white) 100%);
    border:1px solid #A7F3D0;
    border-radius:10px;
    display:flex; flex-direction:column; gap:10px;
  }
  .m0-card .m0-locked-banner-rich[hidden]{display:none}
  .m0-card .m0-locked-head{
    display:flex; align-items:center; gap:10px;
  }
  .m0-card .m0-locked-badge{
    font-size:10px; font-weight:700; letter-spacing:.08em;
    text-transform:uppercase;
    background:#15803D; color:#fff;
    padding:4px 10px; border-radius:999px;
  }
  .m0-card .m0-locked-title{
    font-size:14px; font-weight:600; color:#15803D;
  }
  .m0-card .m0-locked-grid{
    display:grid;
    grid-template-columns:max-content 1fr;
    column-gap:12px; row-gap:6px; margin:0;
  }
  .m0-card .m0-locked-grid dt{
    font-size:10px; font-weight:600;
    color:var(--mu); text-transform:uppercase;
    letter-spacing:.04em; align-self:center;
  }
  .m0-card .m0-locked-grid dd{
    margin:0; font-size:12px; color:var(--tx);
    display:flex; align-items:center; gap:6px;
  }
  .m0-card .m0-locked-mono{
    font-family:var(--mono);
    font-size:11px; color:var(--navy);
    background:rgba(15,23,42,.04);
    padding:2px 6px; border-radius:4px;
    word-break:break-all;
  }
  .m0-card .m0-locked-copy-btn{
    background:transparent; border:1px solid var(--b1);
    border-radius:4px; cursor:pointer;
    padding:1px 6px; font-size:11px; color:var(--mu);
    line-height:1.2;
  }
  .m0-card .m0-locked-copy-btn:hover{
    border-color:var(--navy); color:var(--navy);
    background:var(--blue-soft);
  }
  .m0-card .m0-locked-actions{
    display:flex; justify-content:flex-end;
  }
  .m0-card .m0-locked-link-btn{
    font-size:12px; padding:6px 12px;
    border:1px solid var(--navy); border-radius:6px;
    background:var(--white); color:var(--navy);
    cursor:pointer; font-weight:500;
  }
  .m0-card .m0-locked-link-btn:hover{
    background:var(--navy); color:var(--white);
  }

  /* E.5 — Documents to print bloque (CLOSEOUT). 3 mini-cards in a
     responsive grid (Prescription / Lab order / Consultation
     summary). Each card has a status badge (Draft / Signed /
     Needs sign) and the print actions for that document. */
  .m0-card .m0-section-documents{
    background:var(--white);
    border:1px solid var(--b1);
    border-radius:10px;
    padding:14px 16px;
    margin-bottom:12px;
  }
  .m0-card .m0-docs-grid{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
    gap:12px;
    margin-top:12px;
  }
  .m0-card .m0-doc-card{
    background:var(--s4);
    border:1px solid var(--b1);
    border-radius:8px;
    padding:12px 14px;
    display:flex;
    flex-direction:column;
    gap:10px;
  }
  .m0-card .m0-doc-card-head{
    display:flex;
    align-items:center;
    gap:8px;
  }
  .m0-card .m0-doc-card-icon{
    font-size:18px;
    color:var(--navy);
    line-height:1;
    width:24px;
    text-align:center;
  }
  .m0-card .m0-doc-card-title{
    font-size:13px;
    font-weight:600;
    color:var(--tx);
    flex:1;
  }
  .m0-card .m0-doc-card-badge{
    font-size:10px;
    font-weight:600;
    padding:2px 8px;
    border-radius:999px;
    text-transform:uppercase;
    letter-spacing:.04em;
  }
  .m0-card .m0-doc-card-badge-draft{
    background:#FEF3C7; color:#92400E;
  }
  .m0-card .m0-doc-card-badge-signed{
    background:#ECFDF5; color:#15803D;
  }
  .m0-card .m0-doc-card-badge-locked{
    background:var(--s2); color:var(--mu);
  }
  .m0-card .m0-doc-card-actions{
    display:flex; gap:6px; flex-wrap:wrap;
  }
  .m0-card .m0-doc-card-actions button{
    padding:5px 12px;
    border:1px solid var(--b1);
    border-radius:6px;
    background:var(--white);
    color:var(--navy);
    font-size:11px;
    font-weight:500;
    cursor:pointer;
  }
  .m0-card .m0-doc-card-actions button:hover:not(:disabled){
    border-color:var(--navy);
    background:var(--blue-soft);
  }
  .m0-card .m0-doc-card-actions button:disabled{
    color:var(--dim);
    cursor:not-allowed;
    opacity:.6;
  }

  /* E.4 — Reviewed results categorisation.
     Same chip rendering as before; just wraps each category's chips
     in a sub-row with a thin uppercase label. Same visual rhythm
     as the Requested studies categorised chips so the two surfaces
     read as siblings. */
  .m0-card .m0-clin-chips-grouped{
    display:flex; flex-direction:column; gap:10px;
  }
  .m0-card .m0-clin-subgroup{
    display:flex; flex-wrap:wrap; align-items:center; gap:8px;
    padding:8px 10px;
    background:var(--s2); border:1px solid var(--b1);
    border-radius:8px;
  }
  .m0-card .m0-clin-subgroup-label{
    font-size:11px; font-weight:600; letter-spacing:.04em;
    text-transform:uppercase; color:var(--mu);
    margin-right:4px;
  }

  /* E.3 — Initial route visual flag.
     When the route select is unset (empty value, i.e. "Pending /
     not yet defined"), paint the border + a soft tint red so the
     clinician notices the gap WITHOUT having to scroll all the way
     to Validation & sign. The Sign blocker banner already lists it
     in text — this reinforces it visually at the source. */
  .m0-card #m0-initial-route.is-empty,
  .m0-card select#m0-initial-route.is-empty{
    border-color:var(--re) !important;
    background:rgba(220,38,38,0.04) !important;
    box-shadow:0 0 0 1px rgba(220,38,38,0.10) inset;
  }

  /* G.2 (2026-05-03): Sign-button blockers banner — moved ABOVE the
     action bar (between attestation and disclaimer) so the clinician
     sees what's missing without scrolling past the disabled Sign
     button. Amber prominent: title + glyph + bullet list of missing
     fields. The previous in-place div under the action row was
     visually inert (12px, single line) and clinicians missed it. */
  .m0-sign-blockers{
    margin: 12px 0;
    padding: 12px 14px;
    background: #FEF3C7;
    color: #92400E;
    border: 1px solid #F59E0B;
    border-left: 4px solid #F59E0B;
    border-radius: 8px;
    line-height: 1.5;
    font-weight: 500;
  }
  .m0-sign-blockers .m0-sign-blockers-head{
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 6px;
    letter-spacing: .01em;
  }
  .m0-sign-blockers .m0-sign-blockers-glyph{
    font-size: 16px;
    line-height: 1;
  }
  .m0-sign-blockers .m0-sign-blockers-list{
    margin: 0;
    padding-left: 22px;
    font-size: 13px;
  }
  .m0-sign-blockers .m0-sign-blockers-list li{
    margin: 2px 0;
  }

  /* D.4 — Decision Log preview card. Quiet navy/slate panel that
     surfaces the soon-to-be-immutable record metadata before the
     clinician clicks Sign. Hidden until the sign button is
     otherwise unblocked (timing + rows + route + rationale). */
  .m0-decision-log-preview{
    margin: 12px 0 0;
    padding: 12px 16px;
    background: var(--blue-soft);
    border: 1px solid rgba(27, 45, 92, .12);
    border-radius: 10px;
    font-size: 12px;
  }
  .m0-decision-log-preview .m0-dlp-title{
    font-size: 11px;
    font-weight: 700;
    color: var(--navy);
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-bottom: 8px;
  }
  .m0-decision-log-preview .m0-dlp-grid{
    display: grid;
    grid-template-columns: max-content 1fr;
    column-gap: 12px;
    row-gap: 4px;
    margin: 0;
  }
  .m0-decision-log-preview .m0-dlp-grid dt{
    font-weight: 600;
    color: var(--mu);
    text-transform: uppercase;
    font-size: 10px;
    letter-spacing: .04em;
    align-self: center;
  }
  .m0-decision-log-preview .m0-dlp-grid dd{
    margin: 0;
    color: var(--tx);
    font-weight: 500;
  }
  .m0-decision-log-preview .m0-dlp-mono{
    font-family: var(--mono);
    font-size: 11px;
    color: var(--navy);
    word-break: break-all;
  }

  /* M0.4d — give the M0 view more breathing room on wide displays.
     The default .main-wrap caps at 1280px; for the M0 workspace
     (sidebar + canvas + numbered sections) that wastes ~1000px on
     2K+ screens. Lift to 1600px so the canvas can use the space. */
  #view-m0-assessment .main-wrap{
    max-width: 1600px;
    padding-top: 6px !important;
  }
  /* M0.4d — drop the redundant flow-header inside M0. Title +
     subtitle duplicated information already surfaced by the
     "Case · Fertility assessment" badge in case-ctx and the
     CDSS disclaimer at the page footer. Reclaims ~60 px of
     vertical chrome before the assessment canvas begins. */
  #view-m0-assessment .flow-header{
    display: none !important;
  }

  .m0-card{
    --m0-pending-bg:#F3F4F6;
    --m0-pending-fg:#374151;
    --m0-signed-bg:#ECFDF5;
    --m0-signed-fg:#15803D;
    --m0-warn-bg:#FEF3C7;
    --m0-warn-fg:#92400E;
    --m0-row-border:#E5E7EB;
    --m0-meta-fg:#6B7280;
    --m0-info-bg:#EFF6FF;
    --m0-info-fg:#1D4ED8;
    --m0-locked-bg:#F9FAFB;
    --m0-locked-fg:#6B7280;
    --m0-mono-bg:#F3F4F6;
    --m0-mono-fg:#1F2937;
    margin:14px 20px;padding:8px 18px 14px;
    background:var(--white);border-radius:10px;
    box-shadow:0 1px 3px rgba(0,0,0,.04);
  }
  .m0-card.m0-gate-banner{
    margin:16px 20px;padding:14px 16px;border-radius:8px;
    background:var(--m0-warn-bg);color:var(--m0-warn-fg);
    font-size:13px;font-weight:500;
  }

  .m0-card .m0-warning-banner{
    margin:0 0 14px;padding:10px 14px;border-radius:8px;
    background:var(--m0-warn-bg);color:var(--m0-warn-fg);
    font-size:13px;font-weight:600;line-height:1.5;
    border-left:3px solid #D97706;
  }

  /* P1d (2026-05-02): the prior-info card is now a TOP BANNER
     (single-column stack), not a left sidebar. Imported prior
     information must NOT shrink the clinician-confirmed assessment.
     The clinical card always renders at full width. */
  .m0-card .m0-review-grid{
    display:grid;grid-template-columns:minmax(0, 1fr);
    gap:14px;align-items:stretch;
  }
  .m0-card .m0-source-card{
    /* Compact horizontal banner above the assessment. */
    padding:10px 14px;
    background:linear-gradient(135deg,#F8FAFC 0%,#FFFFFF 100%);
    border:1px solid var(--b1);border-radius:10px;
    box-shadow:none;
  }
  .m0-card .m0-source-card .m0-section-head{
    margin-bottom:6px;
    display:flex;align-items:center;justify-content:space-between;
    gap:10px;flex-wrap:wrap;
  }
  .m0-card .m0-source-card .m0-section-title{
    font-size:11px;font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;color:var(--navy);
  }
  .m0-card .m0-source-card .m0-meta{
    font-size:11px;color:var(--mu);line-height:1.35;flex:1;min-width:0;
  }
  .m0-card .m0-source-card .m0-source-meta{
    display:flex;flex-wrap:wrap;gap:4px 14px;font-size:11px;color:var(--mu);
    margin:4px 0;
  }
  .m0-card .m0-source-card .m0-source-meta .m0-meta-row{
    display:inline-flex;align-items:baseline;gap:6px;
  }
  .m0-card .m0-source-card .m0-source-actions{
    display:flex;align-items:center;flex-wrap:wrap;gap:8px;
  }
  /* When no reviewed intake exists, render the banner as a single
     compact muted line without dominating the layout. */
  .m0-card.m0-no-review .m0-source-card{
    padding:8px 14px;background:var(--s2);
  }
  .m0-card.m0-no-review .m0-source-card .m0-source-meta,
  .m0-card.m0-no-review .m0-source-card .m0-privacy-cert{
    display:none;
  }
  /* Privacy certificate is a collapsible disclosure inside the banner. */
  .m0-card .m0-privacy-cert details.m0-privacy-cert-disclosure{
    margin:0;
  }
  .m0-card .m0-privacy-cert details > summary{
    cursor:pointer;list-style:none;padding:6px 10px;
    background:var(--blue-soft);border:1px solid var(--b1);
    border-radius:6px;font-size:11px;color:var(--navy);
    display:inline-flex;align-items:center;gap:6px;
  }
  .m0-card .m0-privacy-cert details > summary::-webkit-details-marker{display:none}
  .m0-card .m0-privacy-cert details > summary::before{
    content:"▸";display:inline-block;transition:transform .15s ease;
    color:var(--navy);
  }
  .m0-card .m0-privacy-cert details[open] > summary::before{
    transform:rotate(90deg);
  }
  .m0-card .m0-privacy-cert .m0-privacy-cert-body{
    margin-top:8px;padding:10px 12px;background:var(--white);
    border:1px solid var(--b1);border-radius:8px;
  }

  .m0-card .m0-source-card,
  .m0-card .m0-confirm-card{
    border:1px solid var(--m0-row-border);border-radius:8px;
    padding:14px 16px;background:#FAFAFA;
  }
  .m0-card .m0-confirm-card{background:var(--white)}

  /* D.1 — visual breathing for M0 sections (post-2026-05).
     Sections breathe with moderate vertical padding so consecutive
     blocks (Female factors / Endocrine / Alerts / Ultrasound) do
     not read as a single cramped wall. Calibrated after Mario's
     "hay mucho espacio" feedback — pulled back from 24/26 to 16/18. */
  .m0-card .m0-section{
    border-top:1px solid var(--m0-row-border);
    padding:16px 0 18px 0;
  }
  .m0-card .m0-section:first-of-type{border-top:none;padding-top:4px}

  .m0-card .m0-section-head,
  .m0-card .m0-section-head-inline{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;
  }
  .m0-card .m0-section-title{
    font-size:13px;font-weight:600;color:var(--tx);
  }
  .m0-card .m0-label{
    font-size:13px;font-weight:600;color:var(--tx);
  }
  .m0-card .m0-helper,
  .m0-card .m0-meta{
    font-size:11px;color:var(--m0-meta-fg);font-weight:400;line-height:1.5;
  }

  .m0-card .m0-status-chip{
    display:inline-block;padding:3px 10px;border-radius:999px;
    font-size:11px;font-weight:600;letter-spacing:.02em;
    background:var(--m0-pending-bg);color:var(--m0-pending-fg);
    border:1px solid #D1D5DB;
  }
  .m0-card .m0-status-chip.m0-status-signed{
    background:var(--m0-signed-bg);color:var(--m0-signed-fg);
    border-color:#A7F3D0;
  }

  .m0-card .m0-empty{
    margin:8px 0;padding:10px 12px;border-radius:6px;
    background:var(--m0-info-bg);color:var(--m0-info-fg);
    font-size:12px;line-height:1.5;
  }

  .m0-card .m0-source-meta,
  .m0-card .m0-meta-row{
    display:flex;align-items:center;gap:8px;flex-wrap:wrap;
    font-size:12px;color:var(--m0-meta-fg);margin-top:6px;
  }
  .m0-card .m0-meta-label{font-weight:600;color:var(--tx)}
  .m0-card .m0-mono{
    font-family:var(--mono);font-size:11px;
    background:var(--m0-mono-bg);color:var(--m0-mono-fg);
    padding:1px 6px;border-radius:4px;
  }
  .m0-card .m0-decision-uid{
    color:var(--m0-signed-fg);
  }

  .m0-card .m0-textarea{
    width:100%;font-family:inherit;font-size:13px;
    padding:8px 10px;border:1px solid var(--b1);border-radius:6px;
    resize:vertical;
  }

  .m0-card .m0-working-factors-list,
  .m0-card .m0-missing-data-list,
  .m0-card .m0-corrections-list{
    display:flex;flex-direction:column;gap:6px;
    min-height:14px;font-size:12px;color:var(--m0-meta-fg);
  }

  /* G.4 (2026-05-03): the per-block validation matrix (.m0-blocks-matrix
     + .m0-block-row + .m0-block-check + .m0-block-check-input +
     .m0-block-name) was retired together with the surface. The single
     global attestation in .m0-sign-panel covers "I reviewed all
     sections of this assessment." */

  /* M0.4b — chip pattern for working_factors / missing_data /
     corrections. Each chip carries a [data-value] attribute (working
     factors / missing data) or [data-block]/[data-patient]/[data-clinician]
     (corrections); the X button removes it. _m0ReadChips serializes
     by iterating the children. */
  .m0-card .m0-chip{
    display:inline-flex;align-items:center;gap:6px;
    background:var(--m0-info-bg);color:var(--m0-info-fg);
    padding:3px 8px;border-radius:999px;
    font-size:11px;font-weight:500;
  }
  .m0-card .m0-chip-x{
    background:transparent;border:none;color:inherit;cursor:pointer;
    font-size:14px;line-height:1;padding:0 2px;
  }
  .m0-card .m0-chip-x[disabled]{cursor:not-allowed;opacity:.5}
  .m0-card .m0-working-factors-list,
  .m0-card .m0-missing-data-list,
  .m0-card .m0-corrections-list{
    flex-direction:row;flex-wrap:wrap;gap:6px;
  }
  .m0-card .m0-chip-add{
    display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;align-items:center;
  }
  .m0-card .m0-chip-add-input{
    font-size:12px;padding:6px 8px;border:1px solid var(--b1);border-radius:6px;
    flex:1 1 140px;min-width:120px;
  }
  .m0-card .m0-chip-add-block{flex:0 1 110px}
  .m0-card .m0-chip-add-btn{
    font-size:11px;padding:5px 12px;
  }

  /* M0 v2 — preset chip strip for missing studies / working factors */
  .m0-card .m0-presets{
    display:flex;flex-wrap:wrap;gap:8px;align-items:center;
    margin-top:10px;padding:10px 12px;
    background:var(--s2);border:1px solid var(--b1);border-radius:8px;
  }
  .m0-card .m0-presets-helper{
    font-size:11px;color:var(--mu);font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;margin-right:4px;
  }
  .m0-card .m0-preset-chip{
    font-size:11px;padding:4px 10px;background:var(--white);
    border:1px solid var(--b1);border-radius:14px;cursor:pointer;
    color:var(--tx);transition:all .12s;
  }
  .m0-card .m0-preset-chip:hover{
    border-color:var(--navy);background:var(--blue-soft);color:var(--navy);
  }
  .m0-card .m0-preset-chip:active{
    transform:translateY(1px);
  }
  .m0-card .m0-presets-grouped{
    margin-top:10px;
  }
  .m0-card .m0-presets-grouped + .m0-presets-grouped{
    margin-top:10px;
  }

  /* M0 v3 — clinical summary section (groups A-G) */
  .m0-card .m0-clinical-summary{
    background:var(--white);border:1px solid var(--b1);border-radius:10px;
    padding:14px 16px;margin-bottom:12px;
  }
  .m0-card .m0-clinical-summary > .m0-section-head-inline{
    margin-bottom:8px;
  }
  .m0-card .m0-clin-group{
    border:1px solid var(--b1);border-radius:8px;
    margin-top:14px;padding:0;
    background:var(--s2);
  }
  .m0-card .m0-clin-group[open]{
    background:var(--white);
  }
  .m0-card .m0-clin-group-summary{
    cursor:pointer;font-size:13px;font-weight:600;color:var(--navy);
    padding:12px 14px;list-style:none;user-select:none;
    display:flex;align-items:center;gap:8px;
  }
  .m0-card .m0-clin-group-summary::-webkit-details-marker{display:none}
  .m0-card .m0-clin-group-summary::before{
    content:"▸";color:var(--mu);font-size:10px;transition:transform .12s;
  }
  .m0-card .m0-clin-group[open] > .m0-clin-group-summary::before{
    transform:rotate(90deg);
  }
  .m0-card .m0-clin-chips{
    display:flex;flex-wrap:wrap;gap:8px;padding:4px 14px 14px 14px;
  }
  .m0-card .m0-clin-subrow{
    display:flex;flex-wrap:wrap;align-items:center;gap:6px;
    padding:6px 12px;
  }
  .m0-card .m0-clin-sublabel{
    font-size:11px;color:var(--mu);font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;margin-right:6px;
    min-width:96px;
  }
  .m0-card .m0-clinical-chip{
    font-size:12px;padding:5px 11px;background:var(--white);
    border:1px solid var(--b1);border-radius:14px;cursor:pointer;
    color:var(--tx);transition:all .12s;
  }
  /* H.2 (2026-05-03): chip labels render with their first letter
     uppercased so "infertilidad primaria" → "Infertilidad primaria"
     without breaking ALL-CAPS acronyms (AMH, FSH, HSG…) which
     ::first-letter only touches the leading character. */
  .m0-card .m0-clinical-chip::first-letter,
  .m0-card .m0-preset-chip::first-letter{
    text-transform:uppercase;
  }
  .m0-card .m0-clinical-chip:hover{
    border-color:var(--navy);background:var(--blue-soft);color:var(--navy);
  }
  .m0-card .m0-clinical-chip.is-active{
    background:var(--navy);border-color:var(--navy);color:#fff;font-weight:600;
  }
  /* G.3 (2026-05-03): writing-shortcut chips (#m0-diagnosis-chips)
     flash navy on click and revert to neutral. Confirms the click
     visually without leaving the chip in an "active" state, since
     the chip's only job is to insert text into the textarea above. */
  @keyframes m0ChipFlash{
    0%   { background:var(--navy); border-color:var(--navy); color:#fff; }
    100% { background:var(--white); border-color:var(--b1);   color:var(--tx); }
  }
  .m0-card .m0-clinical-chip.m0-chip-flash{
    animation: m0ChipFlash 220ms ease-out;
  }
  /* P1c — patient-reported provenance modifier. Subtle dashed amber
     border + amber dot keeps the chip visually distinct without making
     it look "locked": clinician can still toggle it on/off. */
  .m0-card .m0-clinical-chip--patient-reported{
    border-style:dashed;
    border-color:#F59E0B;
    box-shadow:inset 2px 0 0 #F59E0B;
  }
  .m0-card .m0-clinical-chip--patient-reported.is-active{
    background:var(--navy);border-color:#FBBF24;
    box-shadow:inset 2px 0 0 #FBBF24;
  }
  .m0-card .m0-clinical-chip--patient-reported::before{
    content:"·";color:#F59E0B;font-weight:700;margin-right:4px;
  }
  /* P1c — import status row underneath the Importar button. Quiet by
     default so the row only stands out when there's content. */
  .m0-card .m0-source-actions{
    display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px;
  }
  .m0-card .m0-import-status{
    font-size:11px;color:var(--mu);line-height:1.35;flex-basis:100%;
  }
  /* Auto-review pipeline (2026-05-02) — privacy / consent certificate */
  .m0-card .m0-privacy-cert{
    flex-basis:100%;margin-top:8px;padding:10px 12px;
    background:var(--blue-soft);border:1px solid var(--b1);
    border-radius:8px;font-size:11px;color:var(--tx);
  }
  .m0-card .m0-privacy-cert-title{
    font-weight:700;font-size:11px;letter-spacing:.04em;
    text-transform:uppercase;color:var(--navy);margin-bottom:4px;
  }
  .m0-card .m0-privacy-cert-list{
    display:grid;grid-template-columns:max-content 1fr;
    gap:1px 10px;margin:0;
  }
  .m0-card .m0-privacy-cert-list dt{color:var(--mu);font-size:10px;
    letter-spacing:.02em;}
  .m0-card .m0-privacy-cert-list dd{margin:0;font-weight:500;}
  .m0-card .m0-privacy-cert-note{
    margin-top:6px;font-size:10px;line-height:1.35;
    padding:4px 8px;border-radius:4px;
  }
  .m0-card .m0-privacy-cert-auto{
    background:#FFFBEB;color:#92400E;border:1px solid #FDE68A;
  }
  .m0-card .m0-privacy-cert-warn{
    background:#FEF2F2;color:#991B1B;border:1px solid #FECACA;
  }
  .m0-card .m0-clin-numeric-row{
    display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;
    padding:6px 12px;
  }
  .m0-card .m0-clin-num-label{
    font-size:11px;color:var(--mu);font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;
  }
  .m0-card .m0-clin-num-input{
    font-size:12px;padding:5px 8px;border:1px solid var(--b1);border-radius:6px;
    width:130px;
  }

  /* M0 v4 — Ultrasonido de consulta section. Visually prominent block.
     Card with subtle accent border to feel like a specialist tool. */
  .m0-card .m0-usg-section{
    background:var(--white);
    border:1px solid var(--b1);
    border-radius:10px;
    padding:14px 16px;
    margin-bottom:12px;
  }
  .m0-card .m0-usg-section > .m0-section-head-inline{
    margin-bottom:10px;
  }
  .m0-card .m0-usg-section .m0-clin-subrow,
  .m0-card .m0-usg-section .m0-clin-numeric-row{
    padding:6px 0;
  }
  .m0-card .m0-usg-section .m0-clin-subrow-inline{
    flex:1 1 auto;
  }
  .m0-card .m0-clin-num-input-date{
    width:160px;
  }
  .m0-card .m0-usg-afc-row{
    align-items:baseline;
  }
  .m0-card .m0-usg-afc-input{
    width:80px;
  }
  .m0-card .m0-usg-afc-total{
    display:inline-flex;align-items:baseline;gap:6px;
    margin-left:auto;padding:4px 12px;
    background:var(--blue-soft);border-radius:8px;
  }
  .m0-card .m0-usg-afc-total-value{
    font-size:18px;font-weight:700;color:var(--navy);font-family:var(--mono);
    min-width:1.2em;display:inline-block;text-align:right;
  }
  .m0-card .m0-usg-notes-input{
    flex:1;min-width:280px;
  }
  .m0-card .m0-clin-numeric-row-textarea{
    align-items:flex-start;
  }

  /* M0 premium — Resumen de consulta (top-of-card snapshot) */
  .m0-card .m0-snap-section{
    background:linear-gradient(180deg,#FAFBFD 0%,var(--white) 100%);
    border:1px solid var(--b1);
    border-radius:12px;
    padding:14px 16px;
    margin-bottom:14px;
    box-shadow:0 1px 3px rgba(15,23,42,.03);
  }
  .m0-card .m0-snap-section > .m0-section-head-inline{
    margin-bottom:10px;
  }
  .m0-card .m0-snap-grid{
    display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));
    gap:8px;
  }
  @media (max-width: 920px){
    .m0-card .m0-snap-grid{grid-template-columns:repeat(2, 1fr)}
  }
  @media (max-width: 520px){
    .m0-card .m0-snap-grid{grid-template-columns:1fr}
  }
  .m0-card .m0-snap-cell{
    background:var(--white);border:1px solid var(--b1);border-radius:8px;
    padding:8px 10px;min-height:54px;
  }
  .m0-card .m0-snap-cell-label{
    font-size:10px;font-weight:600;letter-spacing:.06em;
    text-transform:uppercase;color:var(--mu);margin-bottom:4px;
  }
  .m0-card .m0-snap-cell-value{
    font-size:13px;font-weight:600;color:var(--navy);
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }

  /* M0 premium — Factor masculino dedicated section */
  .m0-card .m0-male-section{
    background:var(--white);
    border:1px solid var(--b1);
    border-radius:10px;
    padding:14px 16px;
    margin-bottom:12px;
  }
  .m0-card .m0-male-section > .m0-section-head-inline{
    margin-bottom:10px;
  }
  .m0-card .m0-male-section .m0-clin-subrow,
  .m0-card .m0-male-section .m0-clin-numeric-row{
    padding:6px 0;
  }

  /* M0 premium — initial-route helper */
  .m0-card .m0-route-helper{
    margin-top:6px;font-size:11px;color:var(--mu);font-style:italic;
  }

  /* M0 v4 — Impresión clínica synthesis tiles */
  .m0-card .m0-impression-section{
    background:var(--s2);
    border:1px solid var(--b1);
    border-radius:10px;
    padding:12px 14px;
    margin-bottom:12px;
  }
  .m0-card .m0-impression-tiles{
    display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));
    gap:10px;margin-top:8px;
  }
  @media (max-width: 720px){
    .m0-card .m0-impression-tiles{grid-template-columns:1fr}
  }
  .m0-card .m0-impression-tile{
    background:var(--white);border:1px solid var(--b1);border-radius:8px;
    padding:10px 12px;min-height:64px;
  }
  .m0-card .m0-impression-tile-title{
    font-size:10px;font-weight:600;letter-spacing:.06em;
    text-transform:uppercase;color:var(--mu);margin-bottom:6px;
  }
  .m0-card .m0-impression-tile-body{
    display:flex;flex-wrap:wrap;gap:5px;
  }
  .m0-card .m0-impression-tile-empty{
    font-size:14px;color:var(--dim);font-weight:600;
  }
  .m0-card .m0-impression-tile-pill{
    font-size:11px;padding:3px 8px;background:var(--blue-soft);
    color:var(--navy);border-radius:10px;font-weight:500;
  }

  /* M0 v3 — Heredados / legacy section visibility is controlled by JS;
     dim its visual weight relative to the new clinical-summary panel. */
  .m0-card .m0-legacy-section .m0-label{
    font-size:12px;color:var(--mu);
  }

  /* ════════════════════════════════════════════════════════════════════
     M0 STRUCTURED CLINICAL NOTE REDESIGN
     Reduces ~20 visible blocks to ~10 numbered sections.
     ════════════════════════════════════════════════════════════════════ */

  /* ── Top-right floating Borrador chip (replaces redundant
        "Estado de la evaluación · Borrador" sub-header) ────────────── */
  .m0-card .m0-confirm-card{
    position:relative;
  }
  .m0-card .m0-confirm-card > .m0-section-head{
    position:absolute;top:14px;right:18px;
    margin:0;padding:0;border:none;background:transparent;
    z-index:5;
  }
  .m0-card .m0-confirm-card > .m0-section-head .m0-section-title{
    display:none;
  }

  /* Hide redundant "No hay borrador para este caso" banner — the empty
     state of each editable section already conveys this implicitly. */
  .m0-card .m0-confirm-card > #m0-empty-no-draft{
    display:none !important;
  }

  /* Hide internal-debug helper text on Información previa revisada panel.
     "Subconjunto validado por el clínico desde /admin/intake-reviews…"
     is plumbing language; not for clinicians during consultation. */
  .m0-card .m0-source-card .m0-section-head .m0-meta{
    display:none;
  }

  /* ── Numbered bubble + premium section title typography ────────────── */
  .m0-card .m0-section-numbered{
    position:relative;
    padding-left:54px !important;
  }
  .m0-card .m0-section-numbered::before{
    content:attr(data-section-num);
    position:absolute;left:14px;top:16px;
    width:32px;height:32px;
    display:flex;align-items:center;justify-content:center;
    border-radius:50%;
    background:var(--white);
    border:2px solid var(--m0-section-accent, var(--navy));
    color:var(--m0-section-accent, var(--navy));
    font-weight:700;font-size:14px;line-height:1;
    box-shadow:0 1px 3px rgba(15,23,42,.08);
    z-index:2;
  }
  .m0-card .m0-section-numbered > .m0-section-head-inline{
    margin-bottom:12px;
  }
  .m0-card .m0-section-numbered > .m0-section-head-inline > .m0-label{
    font-size:17px !important;font-weight:700 !important;
    color:var(--navy) !important;letter-spacing:-.01em !important;
    text-transform:none !important;
  }
  .m0-card .m0-section-numbered > .m0-section-head-inline > .m0-helper{
    font-size:12px;color:var(--mu);
    display:block;margin-top:2px;
  }

  /* Per-section accent color tokens (CSS custom properties drive the
     bubble border + section left border via a single source). */
  .m0-card .m0-snap-section{--m0-section-accent:var(--navy)}
  .m0-card #m0-reason-section{--m0-section-accent:#0EA5E9}
  .m0-card #m0-history-section{--m0-section-accent:#8B5CF6}
  .m0-card .m0-clinical-summary{--m0-section-accent:var(--navy)}
  .m0-card .m0-male-section{--m0-section-accent:#6366F1}
  .m0-card .m0-usg-section{--m0-section-accent:#14B8A6}
  .m0-card #m0-lab-reviewed-section{--m0-section-accent:#06B6D4}
  .m0-card .m0-section-diagnosis-banner{--m0-section-accent:#2563EB}
  .m0-card #m0-studies-section{--m0-section-accent:#F59E0B}
  .m0-card #m0-prescription-section{--m0-section-accent:#10B981}
  .m0-card #m0-validation-section{--m0-section-accent:#475569}

  /* ── Consolidate Diagnóstico into ONE visual card ──────────────────── */
  /* The banner gets rounded top, the inner sub-sections render flush. */
  .m0-card .m0-section-diagnosis-banner{
    border-radius:10px 10px 0 0;
    margin-bottom:0;
    padding-bottom:6px;
  }
  .m0-card .m0-section-diagnosis-group:not(.m0-section-diagnosis-banner){
    border-radius:0;
    margin-top:0;margin-bottom:0;
    padding-top:8px;padding-bottom:8px;
    background:var(--white);
    border-left:1px solid var(--b1);
    border-right:1px solid var(--b1);
  }
  .m0-card .m0-impression-section.m0-section-diagnosis-group{
    border-left:1px solid var(--b1);
    background:var(--white);
    margin-top:0;margin-bottom:0;
    border-radius:0;
  }
  /* Last child of the diagnosis chain rounds off bottom */
  .m0-card .m0-section-diagnosis-group + .m0-section[order="55"],
  .m0-card #m0-studies-section{
    margin-top:14px; /* clear gap before Estudios solicitados */
  }
  /* Visually mark the LAST sub-section in the diagnosis chain. The
     rationale section is the natural last child via flex order. */
  .m0-card .m0-section-diagnosis-group:nth-last-of-type(1 of .m0-section-diagnosis-group){
    border-bottom-left-radius:10px;
    border-bottom-right-radius:10px;
    border-bottom:1px solid var(--b1);
    padding-bottom:14px;
  }

  /* ── Consolidate Receta + Próxima consulta into ONE visual card ────── */
  .m0-card #m0-prescription-section{
    border-radius:10px 10px 0 0;
    margin-bottom:0;
    border-bottom:none;
  }
  .m0-card #m0-followup-section{
    border-radius:0 0 10px 10px;
    border-left:1px solid var(--b1);
    border-right:1px solid var(--b1);
    border-bottom:1px solid var(--b1);
    margin-top:0;
    padding-top:8px;
  }
  .m0-card #m0-followup-section .m0-section-head-inline{
    border-top:1px dashed var(--b1);
    padding-top:10px;
  }

  /* ── Visually consolidate "Información previa revisada" panel when
        empty: tone it down to a single compact line. The m0-no-review
        class is already toggled by JS based on intake presence. ────── */
  .m0-card.m0-no-review .m0-source-card{
    padding:8px 14px;
    background:var(--s2);
    border-radius:8px;
  }
  .m0-card.m0-no-review .m0-source-card .m0-section-head{
    margin-bottom:0;
  }
  .m0-card.m0-no-review .m0-source-card .m0-section-title{
    font-size:11px;letter-spacing:.06em;text-transform:uppercase;
    color:var(--mu);font-weight:600;
  }
  .m0-card.m0-no-review .m0-source-card .m0-empty{
    font-size:12px;color:var(--mu);padding:4px 0 0 0;background:transparent;
    border:none;
  }
  /* M0 final pass: "Versión de la paciente" only renders when intake exists */
  .m0-card.m0-no-review .m0-reason-patient-row{display:none}

  /* ── Factor masculino: 3-up grid for análisis seminal sub-rows ───── */
  .m0-card .m0-male-section .m0-clin-subrow[data-group-prefix^="male_concentration"],
  .m0-card .m0-male-section .m0-clin-subrow[data-group-prefix^="male_motility"],
  .m0-card .m0-male-section .m0-clin-subrow[data-group-prefix^="male_morphology"]{
    /* keep current visual but tighten spacing */
    padding:4px 0;
  }

  /* ── M0 final pass: Factor masculino conditional display ──────────────
     Espermatobioscopía=pendiente or no_aplica hides fecha/concentración/
     motilidad/morfología. Diagnóstico seminal + observaciones always
     visible. */
  .m0-card .m0-male-section:has(.m0-clinical-chip[data-value="male_semen:availability:pending"].is-active) .m0-male-conditional,
  .m0-card .m0-male-section:has(.m0-clinical-chip[data-value="male_semen:availability:not_applicable"].is-active) .m0-male-conditional{
    display:none;
  }

  /* ── M0 final pass: Study preset packages ─────────────────────────── */
  .m0-card .m0-studies-presets{
    margin:8px 0 12px;padding:10px 12px;border-radius:10px;
    background:linear-gradient(135deg,#FFFBEB 0%,#FEF3C7 100%);
    border:1px solid #FDE68A;
  }
  .m0-card .m0-studies-presets-helper{
    font-size:12px;color:var(--mu);margin-bottom:8px;
  }
  .m0-card .m0-studies-presets-row{
    display:flex;flex-wrap:wrap;gap:6px;
  }
  .m0-card .m0-studies-preset-btn{
    background:var(--white);border:1px solid #F59E0B;color:#92400E;
    border-radius:18px;padding:5px 12px;font:600 12px var(--sans);
    cursor:pointer;transition:background .15s ease, color .15s ease;
  }
  .m0-card .m0-studies-preset-btn:hover{
    background:#F59E0B;color:#fff;
  }
  .m0-card .m0-studies-presets-row-actions{
    margin-top:8px;justify-content:flex-end;
  }
  .m0-card .m0-studies-clear-btn{
    background:transparent;border:1px dashed #B45309;color:#92400E;
    border-radius:14px;padding:4px 10px;font:500 11px var(--sans);
    cursor:pointer;transition:background .15s ease,color .15s ease;
  }
  .m0-card .m0-studies-clear-btn:hover{
    background:#FEF3C7;color:#78350F;
  }

  /* ── F0.1: Consultation summary view ─────────────────────────── */
  #view-consult-summary .cs-wrap{
    max-width:780px;margin:0 auto;
  }
  #view-consult-summary .cs-toolbar{
    display:flex;justify-content:space-between;align-items:center;
    margin-bottom:16px;
  }
  #view-consult-summary .cs-doc{
    background:var(--white);border:1px solid var(--b1);border-radius:12px;
    padding:36px 44px;box-shadow:0 1px 3px rgba(15,23,42,.04);
  }
  #view-consult-summary .cs-doc-head{
    border-bottom:1px solid var(--b1);padding-bottom:16px;margin-bottom:20px;
  }
  #view-consult-summary .cs-doc-title{
    font-size:22px;font-weight:700;color:var(--navy);letter-spacing:-.01em;
  }
  #view-consult-summary .cs-doc-sub{
    font-size:12px;color:var(--mu);margin-top:4px;
  }
  #view-consult-summary .cs-empty-state{
    padding:24px;background:var(--s2);border-radius:8px;
    color:var(--mu);font-size:13px;text-align:center;
  }
  #view-consult-summary .cs-section{margin:18px 0}
  #view-consult-summary .cs-section-title{
    font-size:13px;font-weight:700;color:var(--navy);
    letter-spacing:.04em;margin:0 0 8px;
    padding-bottom:4px;border-bottom:1px solid var(--b1);
  }
  #view-consult-summary .cs-identity{
    font-size:14px;line-height:1.5;color:var(--tx);
  }
  #view-consult-summary .cs-identity strong{color:var(--navy)}
  #view-consult-summary .cs-list{
    margin:0;padding:0;list-style:none;
    display:flex;flex-direction:column;gap:4px;
  }
  #view-consult-summary .cs-meds-list{
    list-style:decimal inside;padding-left:0;
  }
  #view-consult-summary .cs-list li{
    font-size:13px;line-height:1.5;color:var(--tx);
  }
  #view-consult-summary .cs-rationale,
  #view-consult-summary .cs-prose{
    margin:0;font-size:13px;line-height:1.6;color:var(--tx);
    white-space:pre-wrap;
  }
  #view-consult-summary .cs-signature{
    margin:32px 0 0;padding-top:18px;
    border-top:1px solid var(--b1);
  }
  #view-consult-summary .cs-signature-img{
    max-height:80px;max-width:240px;display:block;margin-bottom:6px;
  }
  #view-consult-summary .cs-signature-meta{
    font-size:12px;color:var(--tx);line-height:1.6;
  }
  #view-consult-summary .cs-mute{
    color:var(--mu);font-size:11px;margin-right:6px;
    text-transform:uppercase;letter-spacing:.04em;font-weight:600;
  }
  #view-consult-summary .cs-mono{
    font-family:var(--mono);font-size:11px;
    background:var(--s2);padding:1px 6px;border-radius:4px;
  }
  #view-consult-summary .cs-disclaimer{
    margin-top:20px;padding:8px 14px;border-radius:6px;
    background:var(--s2);font-size:10px;color:var(--mu);
    line-height:1.4;text-align:center;
  }

  /* CSS @media print — suppress navigation, print clean. */
  @media print {
    body * { visibility: hidden; }
    #view-consult-summary, #view-consult-summary * { visibility: visible; }
    #view-consult-summary {
      position: absolute; left: 0; top: 0; width: 100%;
    }
    #view-consult-summary .no-print { display: none !important; }
    #view-consult-summary .cs-doc {
      border: none; box-shadow: none; padding: 0;
    }
  }

  /* FRX-5A-PRINT-EXPORT-1.0 — print the SIGNED report from its preview modal.
     Scoped to body.frx5a-printing (set transiently by frx5aPrint()) so it never
     affects normal printing of any other surface. Mirrors the consult-summary
     isolation pattern: hide everything, reveal only the report document. */
  @media print {
    body.frx5a-printing * { visibility: hidden; }
    body.frx5a-printing #frx5a-preview-modal,
    body.frx5a-printing #frx5a-preview-modal * { visibility: visible; }
    body.frx5a-printing #frx5a-preview-modal {
      position: absolute; left: 0; top: 0; width: 100%; height: auto;
      background: #fff; display: block; padding: 0; margin: 0; overflow: visible;
    }
    body.frx5a-printing #frx5a-preview-modal .modal {
      box-shadow: none; border: none; border-radius: 0;
      max-width: none; width: 100%; max-height: none; margin: 0; padding: 0;
    }
    body.frx5a-printing #frx5a-preview-modal .modal-actions { display: none !important; }
  }

  /* ── F0.4: Printable Rx view ─────────────────────────────────── */
  #view-rx-print .rxp-wrap{ max-width:760px; margin:0 auto; padding:24px 0 60px; }
  #view-rx-print .rxp-toolbar{
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    margin-bottom:16px; padding:0 8px;
  }
  #view-rx-print .rxp-size-label{
    margin-left:auto; font-size:12px; color:var(--mu);
  }
  #view-rx-print .rxp-size-btn.is-active{
    border-color:var(--navy); background:var(--blue-soft); color:var(--navy);
  }
  #view-rx-print .rxp-doc{
    background:var(--white); border:1px solid var(--b1); border-radius:10px;
    padding:36px 44px; box-shadow:0 1px 3px rgba(15,23,42,.04);
  }
  #view-rx-print .rxp-doc-head{
    border-bottom:2px solid var(--navy); padding-bottom:14px; margin-bottom:18px;
  }
  #view-rx-print .rxp-doc-title{
    font-size:22px; font-weight:700; color:var(--navy); letter-spacing:.02em;
  }
  #view-rx-print .rxp-doc-sub{
    font-size:12px; color:var(--mu); margin-top:4px;
  }
  #view-rx-print .rxp-empty-state{
    padding:30px 0; text-align:center; color:var(--mu); font-size:13px;
  }
  #view-rx-print .rxp-section{ margin:18px 0; }
  #view-rx-print .rxp-section-title{
    font-size:11px; font-weight:700; color:var(--navy);
    text-transform:uppercase; letter-spacing:.06em; margin:0 0 8px 0;
  }
  #view-rx-print .rxp-identity{ font-size:13px; color:var(--tx); }
  #view-rx-print .rxp-identity strong{ color:var(--navy); }
  #view-rx-print .rxp-meds-list{
    margin:0; padding-left:22px; font-size:13px; line-height:1.55;
  }
  #view-rx-print .rxp-meds-list li{ margin:4px 0 8px 0; }
  #view-rx-print .rxp-med-name{ font-weight:600; color:var(--tx); }
  #view-rx-print .rxp-med-posology{
    font-size:12px; color:var(--mu); margin-top:2px;
  }
  #view-rx-print .rxp-empty-meds{
    padding:8px 12px; color:var(--mu); font-size:12px; font-style:italic;
  }
  #view-rx-print .rxp-prose{
    font-size:13px; color:var(--tx); white-space:pre-wrap;
    line-height:1.5; margin:0;
  }
  #view-rx-print .rxp-signature{
    margin-top:36px; padding-top:14px; border-top:1px solid var(--b1);
    text-align:center;
  }
  #view-rx-print .rxp-signature-img{
    max-height:80px; max-width:240px; display:block; margin:0 auto 6px;
  }
  #view-rx-print .rxp-signature-meta{
    font-size:12px; color:var(--tx);
  }
  #view-rx-print .rxp-mute{ color:var(--mu); font-size:11px; margin-right:4px; }
  #view-rx-print .rxp-disclaimer{
    margin-top:18px; padding:8px 14px; border-radius:6px;
    background:var(--s2); font-size:10px; color:var(--mu);
    line-height:1.4; text-align:center;
  }

  /* CSS @media print — suppress navigation, print clean.
     Two paper sizes via .size-letter / .size-half-letter on the
     #view-rx-print container. */
  @media print {
    body * { visibility: hidden; }
    #view-rx-print, #view-rx-print * { visibility: visible; }
    #view-rx-print {
      position: absolute; left: 0; top: 0; width: 100%;
    }
    #view-rx-print .no-print { display: none !important; }
    #view-rx-print .rxp-doc {
      border: none; box-shadow: none; padding: 14mm;
    }
  }
  @media print {
    #view-rx-print.size-letter { @page { size: letter; margin: 0; } }
    #view-rx-print.size-half-letter { @page { size: 5.5in 8.5in; margin: 0; } }
    #view-rx-print.size-half-letter .rxp-doc {
      padding: 8mm; font-size: 11px;
    }
    #view-rx-print.size-half-letter .rxp-doc-title { font-size: 16px; }
    #view-rx-print.size-half-letter .rxp-meds-list { font-size: 11px; }
    #view-rx-print.size-half-letter .rxp-signature-img { max-height: 50px; }
  }

  /* M0 receta — Imprimir Receta buttons */
  .m0-rx-actions .m0-rx-print-btn{
    display:inline-flex; align-items:center; gap:6px;
    padding:6px 14px; border:1px solid var(--b1); border-radius:6px;
    background:var(--white); color:var(--navy); font-size:12px;
    font-weight:500; cursor:pointer; margin-left:6px;
  }
  .m0-rx-actions .m0-rx-print-btn:hover{
    border-color:var(--navy); background:var(--blue-soft);
  }

  /* ── F0.5 (post-2026-05 unification): Lab order surface lives
        inside #m0-studies-section. Only the action buttons and the
        observations textarea row are styled here. The standalone
        m0-section-lab-order container and its 20 favorite chips
        were removed in the M0 lab-order unification. */
  #m0-studies-section .m0-lab-order-actions{
    display:flex; gap:8px; flex-wrap:wrap; margin-top:14px;
  }
  #m0-studies-section .m0-lab-order-print-btn{
    display:inline-flex; align-items:center; gap:6px;
    padding:6px 14px; border:1px solid var(--b1); border-radius:6px;
    background:var(--white); color:var(--navy); font-size:12px;
    font-weight:500; cursor:pointer;
  }
  #m0-studies-section .m0-lab-order-print-btn:hover{
    border-color:var(--navy); background:var(--blue-soft);
  }
  #m0-studies-section .m0-lab-order-obs-row{margin-top:14px;}

  #view-lab-order-print .lop-wrap{ max-width:760px; margin:0 auto; padding:24px 0 60px; }
  #view-lab-order-print .lop-toolbar{
    display:flex; align-items:center; gap:10px; flex-wrap:wrap;
    margin-bottom:16px; padding:0 8px;
  }
  #view-lab-order-print .lop-size-label{
    margin-left:auto; font-size:12px; color:var(--mu);
  }
  #view-lab-order-print .lop-size-btn.is-active{
    border-color:var(--navy); background:var(--blue-soft); color:var(--navy);
  }
  #view-lab-order-print .lop-doc{
    background:var(--white); border:1px solid var(--b1); border-radius:10px;
    padding:36px 44px; box-shadow:0 1px 3px rgba(15,23,42,.04);
  }
  #view-lab-order-print .lop-doc-head{
    border-bottom:2px solid var(--navy); padding-bottom:14px; margin-bottom:18px;
  }
  #view-lab-order-print .lop-doc-title{
    font-size:22px; font-weight:700; color:var(--navy); letter-spacing:.02em;
  }
  #view-lab-order-print .lop-doc-sub{
    font-size:12px; color:var(--mu); margin-top:4px;
  }
  #view-lab-order-print .lop-empty-state{
    padding:30px 0; text-align:center; color:var(--mu); font-size:13px;
  }
  #view-lab-order-print .lop-section{ margin:18px 0; }
  #view-lab-order-print .lop-section-title{
    font-size:11px; font-weight:700; color:var(--navy);
    text-transform:uppercase; letter-spacing:.06em; margin:0 0 8px 0;
  }
  #view-lab-order-print .lop-identity{ font-size:13px; color:var(--tx); }
  #view-lab-order-print .lop-identity strong{ color:var(--navy); }
  #view-lab-order-print .lop-items-list{
    margin:0; padding-left:22px; font-size:13px; line-height:1.55;
  }
  #view-lab-order-print .lop-items-list li{ margin:4px 0; }
  #view-lab-order-print .lop-empty-items{
    padding:8px 12px; color:var(--mu); font-size:12px; font-style:italic;
  }
  #view-lab-order-print .lop-prose{
    font-size:13px; color:var(--tx); white-space:pre-wrap;
    line-height:1.5; margin:0;
  }
  #view-lab-order-print .lop-signature{
    margin-top:36px; padding-top:14px; border-top:1px solid var(--b1);
    text-align:center;
  }
  #view-lab-order-print .lop-signature-img{
    max-height:80px; max-width:240px; display:block; margin:0 auto 6px;
  }
  #view-lab-order-print .lop-signature-meta{
    font-size:12px; color:var(--tx);
  }
  #view-lab-order-print .lop-mute{ color:var(--mu); font-size:11px; margin-right:4px; }
  #view-lab-order-print .lop-disclaimer{
    margin-top:18px; padding:8px 14px; border-radius:6px;
    background:var(--s2); font-size:10px; color:var(--mu);
    line-height:1.4; text-align:center;
  }

  @media print {
    body * { visibility: hidden; }
    #view-lab-order-print, #view-lab-order-print * { visibility: visible; }
    #view-lab-order-print {
      position: absolute; left: 0; top: 0; width: 100%;
    }
    #view-lab-order-print .no-print { display: none !important; }
    #view-lab-order-print .lop-doc {
      border: none; box-shadow: none; padding: 14mm;
    }
  }
  @media print {
    #view-lab-order-print.size-letter { @page { size: letter; margin: 0; } }
    #view-lab-order-print.size-half-letter { @page { size: 5.5in 8.5in; margin: 0; } }
    #view-lab-order-print.size-half-letter .lop-doc {
      padding: 8mm; font-size: 11px;
    }
    #view-lab-order-print.size-half-letter .lop-doc-title { font-size: 16px; }
    #view-lab-order-print.size-half-letter .lop-items-list { font-size: 11px; }
    #view-lab-order-print.size-half-letter .lop-signature-img { max-height: 50px; }
  }

  /* ── F0.3: Clinician profile view ─────────────────────────────── */
  #view-clinician-profile .cp-card{
    background:var(--white);border:1px solid var(--b1);border-radius:12px;
    padding:24px 28px;max-width:680px;margin:0 auto;
    box-shadow:0 1px 3px rgba(15,23,42,.04);
    display:flex;flex-direction:column;gap:18px;
  }
  #view-clinician-profile .cp-row{
    display:flex;flex-direction:column;gap:6px;
  }
  #view-clinician-profile .cp-label{
    font-size:11px;font-weight:600;letter-spacing:.06em;
    text-transform:uppercase;color:var(--mu);
  }
  #view-clinician-profile .cp-input{
    font-family:inherit;font-size:14px;
    padding:10px 12px;border:1px solid var(--b1);border-radius:8px;
    background:var(--white);
  }
  #view-clinician-profile .cp-input:focus{
    outline:none;border-color:var(--navy);
    box-shadow:0 0 0 3px rgba(27,45,92,.08);
  }
  #view-clinician-profile .cp-sig-wrap{
    display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  }
  #view-clinician-profile .cp-sig-status{
    font-size:12px;color:var(--mu);
  }
  #view-clinician-profile .cp-sig-preview{
    max-width:280px;max-height:120px;
    background:#fff;border:1px dashed var(--b1);border-radius:8px;
    padding:8px;
  }
  #view-clinician-profile .cp-helper{
    margin:0;font-size:11px;color:var(--mu);font-style:italic;
  }
  #view-clinician-profile .cp-actions{
    display:flex;align-items:center;gap:14px;margin-top:6px;
  }
  #view-clinician-profile .cp-save-status{
    font-size:12px;color:var(--gr);font-weight:500;
  }
  #view-clinician-profile .cp-save-status.is-error{color:var(--re)}

  /* ── F0.2: Receta como lista de items ──────────────────────────── */
  .m0-card .m0-rx-items-wrap{
    flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;
  }
  .m0-card .m0-rx-items-list{
    display:flex;flex-direction:column;gap:6px;
  }
  .m0-card .m0-rx-item{
    display:grid;
    grid-template-columns:24px minmax(0, 1fr) minmax(0, 1fr) auto;
    gap:8px;align-items:flex-start;
  }
  .m0-card .m0-rx-item-num{
    font-size:12px;font-weight:700;color:var(--mu);
    padding-top:8px;text-align:right;
  }
  .m0-card .m0-rx-item-field{
    position:relative;min-width:0;
  }
  .m0-card .m0-rx-item-input{
    width:100%;font-family:inherit;font-size:13px;
    padding:7px 10px;border:1px solid var(--b1);border-radius:6px;
    background:var(--white);
  }
  .m0-card .m0-rx-item-input:focus{
    outline:none;border-color:var(--navy);
    box-shadow:0 0 0 2px rgba(27,45,92,.08);
  }
  .m0-card .m0-rx-item-actions{
    display:flex;gap:4px;align-items:center;padding-top:4px;
  }
  .m0-card .m0-rx-item-btn{
    background:transparent;border:1px solid var(--b1);border-radius:6px;
    width:28px;height:28px;display:inline-flex;
    align-items:center;justify-content:center;
    color:var(--mu);font-size:13px;cursor:pointer;
    transition:all .12s;padding:0;
  }
  .m0-card .m0-rx-item-btn:hover{
    color:var(--navy);border-color:var(--navy);
  }
  .m0-card .m0-rx-item-btn-fav{font-size:14px}
  .m0-card .m0-rx-item-btn-fav.is-on{color:#F59E0B;border-color:#F59E0B}
  .m0-card .m0-rx-item-btn-del:hover{color:#B91C1C;border-color:#B91C1C}
  /* H.7 (2026-05-03): patient-instruction favorites strip + save btn.
     Chips list above the textarea, save button below. Favorites
     persist via localStorage (key m0-instr-favs); backend never
     sees them. */
  .m0-card .m0-instr-fav-strip{
    display:flex; flex-wrap:wrap; gap:6px; align-items:center;
    margin:6px 0 8px; min-height:22px;
  }
  .m0-card .m0-instr-fav-empty{
    font-size:11px; color:var(--mu); font-style:italic;
  }
  .m0-card .m0-instr-fav-chip{
    display:inline-flex; align-items:center; gap:4px;
    background:var(--blue-soft); border:1px solid rgba(27,45,92,.15);
    border-radius:14px; padding:0 4px 0 10px;
    font-size:12px; color:var(--navy); font-weight:500;
  }
  .m0-card .m0-instr-fav-chip-label{
    background:transparent; border:none; color:inherit;
    cursor:pointer; padding:3px 0; font:inherit;
  }
  .m0-card .m0-instr-fav-chip-label:hover{ text-decoration:underline; }
  .m0-card .m0-instr-fav-chip-x{
    background:transparent; border:none; color:var(--mu);
    cursor:pointer; padding:0 4px; font-size:14px; line-height:1;
  }
  .m0-card .m0-instr-fav-chip-x:hover{ color:var(--re); }
  .m0-card .m0-instr-fav-actions{
    display:flex; justify-content:flex-end; margin-top:6px;
  }
  .m0-card .m0-instr-fav-save{
    background:transparent; border:1px solid var(--b1);
    color:var(--mu); border-radius:14px; padding:4px 12px;
    font-size:11px; font-weight:600; cursor:pointer;
    transition:background .12s, color .12s, border-color .12s;
  }
  .m0-card .m0-instr-fav-save:hover{
    background:var(--blue-soft); color:var(--navy); border-color:var(--navy);
  }

  .m0-card .m0-rx-add-item-btn{
    align-self:flex-start;
    background:var(--white);border:1px dashed var(--b1);
    border-radius:8px;padding:6px 14px;
    font-size:12px;font-weight:600;color:var(--navy);
    cursor:pointer;transition:all .12s;
  }
  .m0-card .m0-rx-add-item-btn:hover{
    border-color:var(--navy);background:var(--blue-soft);
  }

  /* Per-item suggestion popup (med catalog OR posology phrasebook).
     Anchored absolutely below the input; one popup per item rendered
     on-demand inside the field wrap. */
  .m0-card .m0-rx-item-suggest{
    position:absolute;left:0;right:0;top:100%;
    z-index:30;margin-top:2px;
    max-height:240px;overflow-y:auto;
    background:var(--white);border:1px solid var(--b1);border-radius:8px;
    box-shadow:0 4px 18px rgba(15,23,42,.08);
    font-size:12px;
  }
  .m0-card .m0-rx-item-suggest[hidden]{display:none}
  .m0-card .m0-rx-item-suggest-row{
    padding:8px 12px;cursor:pointer;
    border-bottom:1px solid var(--s2);
    display:flex;flex-direction:column;gap:2px;
  }
  .m0-card .m0-rx-item-suggest-row:last-child{border-bottom:none}
  .m0-card .m0-rx-item-suggest-row:hover,
  .m0-card .m0-rx-item-suggest-row.is-active{
    background:var(--blue-soft);
  }
  .m0-card .m0-rx-item-suggest-row .label{
    font-size:13px;font-weight:600;color:var(--navy);
  }
  .m0-card .m0-rx-item-suggest-row .active{
    font-size:11px;color:var(--blue);font-weight:500;
  }
  .m0-card .m0-rx-item-suggest-row .manufacturer{
    font-size:10px;color:var(--mu);
    letter-spacing:.04em;text-transform:uppercase;
  }
  .m0-card .m0-rx-item-suggest-row .dose{
    font-size:11px;color:var(--tx);font-style:italic;
  }
  .m0-card .m0-rx-item-suggest-row .warn{
    margin-top:2px;font-size:10px;color:#92400E;font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;
  }

  /* ── Item 2 polish: medication autocomplete popup ───────────────── */
  .m0-card .m0-rx-meds-wrap{
    position:relative;flex:1;min-width:0;
  }
  .m0-card .m0-rx-meds-suggest{
    position:absolute;left:0;right:0;top:100%;
    z-index:30;
    margin-top:2px;
    max-height:280px;overflow-y:auto;
    background:var(--white);
    border:1px solid var(--b1);
    border-radius:8px;
    box-shadow:0 4px 18px rgba(15,23,42,.08);
    font-size:12px;
  }
  .m0-card .m0-rx-meds-suggest[hidden]{display:none}
  .m0-card .m0-rx-meds-suggest-item{
    padding:8px 12px;cursor:pointer;
    border-bottom:1px solid var(--s2);
    display:flex;flex-direction:column;gap:2px;
    transition:background .1s ease;
  }
  .m0-card .m0-rx-meds-suggest-item:last-child{border-bottom:none}
  .m0-card .m0-rx-meds-suggest-item:hover,
  .m0-card .m0-rx-meds-suggest-item.is-active{
    background:var(--blue-soft);
  }
  .m0-card .m0-rx-meds-suggest-label{
    font-size:13px;font-weight:600;color:var(--navy);
  }
  .m0-card .m0-rx-meds-suggest-meta{
    font-size:11px;color:var(--mu);
  }
  .m0-card .m0-rx-meds-suggest-dose{
    font-size:11px;color:var(--tx);font-style:italic;
  }
  .m0-card .m0-rx-meds-suggest-warn{
    margin-top:2px;font-size:10px;color:#92400E;font-weight:600;
    letter-spacing:.04em;text-transform:uppercase;
  }
  .m0-card .m0-rx-meds-suggest-empty{
    padding:8px 12px;font-size:11px;color:var(--mu);font-style:italic;
  }

  /* ── Final polish: Receta templates + copy button ────────────────── */
  .m0-card .m0-rx-templates{
    margin:8px 0 12px;padding:10px 12px;border-radius:10px;
    background:linear-gradient(135deg,#ECFDF5 0%,#D1FAE5 100%);
    border:1px solid #A7F3D0;
  }
  .m0-card .m0-rx-templates-helper{
    font-size:12px;color:var(--mu);display:block;margin-bottom:8px;
  }
  .m0-card .m0-rx-templates-row{
    display:flex;flex-wrap:wrap;gap:6px;
  }
  .m0-card .m0-rx-template-btn{
    background:var(--white);border:1px solid #10B981;color:#065F46;
    border-radius:18px;padding:5px 12px;font:600 12px var(--sans);
    cursor:pointer;transition:background .15s ease,color .15s ease;
  }
  .m0-card .m0-rx-template-btn:hover{
    background:#10B981;color:#fff;
  }
  .m0-card .m0-rx-actions{
    display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:6px;
  }
  .m0-card .m0-rx-copy-btn{
    background:var(--white);border:1px solid #10B981;color:#065F46;
    border-radius:14px;padding:5px 14px;font:600 12px var(--sans);
    cursor:pointer;transition:background .15s ease,color .15s ease;
  }
  .m0-card .m0-rx-copy-btn:hover{
    background:#10B981;color:#fff;
  }
  .m0-card .m0-rx-copy-helper{
    font-size:11px;color:var(--mu);
  }
  .m0-card .m0-rx-copy-status{
    font-size:11px;color:var(--gr);font-weight:500;
  }

  /* G.4 (2026-05-03): the "Marcar todo confirmado" convenience button
     was retired together with the per-block validation matrix. */

  /* ── M0 final pass: Lab reviewed structured numeric values ────────────
     Each lab_value row reveals only when the matching lab_reviewed chip
     is active (CSS :has). Stored as `lab_value:<slug>` via working_factors. */
  .m0-card .m0-lab-values-grid{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
    gap:8px 14px;margin:10px 0 6px;
  }
  .m0-card .m0-lab-value-row{
    display:none;align-items:center;gap:8px;
    padding:6px 10px;border:1px solid var(--b1);border-radius:8px;
    background:var(--white);
  }
  .m0-card .m0-lab-value-row .m0-clin-num-label{
    flex:1;min-width:0;font-size:12px;color:var(--mu);
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .m0-card .m0-lab-value-row .m0-clin-num-input{
    flex:0 0 90px;
  }
  .m0-card .m0-lab-value-row .m0-lab-value-unit{
    flex:0 0 auto;font-size:11px;color:var(--mu);font-family:var(--mono);
    white-space:nowrap;
  }
  .m0-card .m0-source-actions{
    margin-top:8px;
  }
  /* Reveal each value row only when the matching chip is active. */
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:amh"].is-active) .m0-lab-value-row[data-lab-key="amh"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:tsh"].is-active) .m0-lab-value-row[data-lab-key="tsh"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:prolactin"].is-active) .m0-lab-value-row[data-lab-key="prolactin"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:fsh"].is-active) .m0-lab-value-row[data-lab-key="fsh"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:lh"].is-active) .m0-lab-value-row[data-lab-key="lh"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:estradiol"].is-active) .m0-lab-value-row[data-lab-key="estradiol"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:progesterone"].is-active) .m0-lab-value-row[data-lab-key="progesterone"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:beta_hcg"].is-active) .m0-lab-value-row[data-lab-key="beta_hcg"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:testosterone_total"].is-active) .m0-lab-value-row[data-lab-key="testosterone_total"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:shbg"].is-active) .m0-lab-value-row[data-lab-key="shbg"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:dhea_s"].is-active) .m0-lab-value-row[data-lab-key="dhea_s"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:glucose"].is-active) .m0-lab-value-row[data-lab-key="glucose"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:insulin"].is-active) .m0-lab-value-row[data-lab-key="insulin"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:hba1c"].is-active) .m0-lab-value-row[data-lab-key="hba1c"],
  .m0-card #m0-lab-reviewed-section:has(.m0-clinical-chip[data-value="lab_reviewed:vitamin_d"].is-active) .m0-lab-value-row[data-lab-key="vitamin_d"]{
    display:flex;
  }

  /* ── USG: tighten the long stack of single-row chips so it's
        scannable. Smaller label width + tighter row spacing. ──────── */
  .m0-card .m0-usg-section .m0-clin-subrow{
    padding:4px 0;
  }
  .m0-card .m0-usg-section .m0-clin-sublabel{
    min-width:180px;
  }

  /* ── M0 final pass: USG normal-by-default ────────────────────────────
     Advanced uterus rows (miomatosis / hidrosálpinx / adenomiosis /
     SOP morph / líquido libre) collapse unless "Útero · con hallazgos"
     is active. Per-ovary detail rows collapse unless their controller
     toggle is "con hallazgos". */
  .m0-card .m0-usg-advanced-uterus,
  .m0-card .m0-usg-advanced-od,
  .m0-card .m0-usg-advanced-oi{
    display:none;
  }
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:uterus:findings"].is-active) .m0-usg-advanced-uterus{
    display:flex;
  }
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:od_state:findings"].is-active) .m0-usg-advanced-od{
    display:flex;
  }
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:oi_state:findings"].is-active) .m0-usg-advanced-oi{
    display:flex;
  }

  /* ── Final polish: USG "no realizado hoy" collapses irrelevant rows.
     Always visible: USG date, performed-today toggle, observaciones.
     Hidden: endometrium/pattern, AFC R/L/total, uterus/ovary findings,
     advanced findings rows. */
  .m0-card .m0-usg-not-performed-notice{
    display:none;margin:6px 0 4px;padding:8px 12px;border-radius:8px;
    background:#FEF3C7;border:1px solid #FDE68A;color:#92400E;
    font-size:12px;line-height:1.4;
  }
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:performed_today:no"].is-active) .m0-usg-not-performed-notice{
    display:block;
  }
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:performed_today:no"].is-active) .m0-usg-when-performed,
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:performed_today:no"].is-active) .m0-usg-advanced-uterus,
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:performed_today:no"].is-active) .m0-usg-advanced-od,
  .m0-card .m0-usg-section:has(.m0-clinical-chip[data-value="usg:performed_today:no"].is-active) .m0-usg-advanced-oi{
    display:none !important;
  }

  /* When section title gets the numbered bubble, the inner section
     content also needs adjusted left padding. */
  .m0-card .m0-section-numbered > div:not(.m0-section-head-inline){
    padding-left:0;
  }

  /* ── M0 PREMIUM ORDER + COLOR HIERARCHY ─────────────────────────────────
     Mario's required visible order (after consultation snapshot):
       A. Datos clínicos relevantes  (navy   accent)
       B. Factor masculino           (indigo accent)
       C. Ultrasonido de consulta    (teal   accent)
       D. Estudios solicitados       (amber  accent)
       E. Diagnóstico                (royal  accent)
       F. Receta / indicaciones      (green  accent)
       G. Validación clínica         (slate  accent)
       H. Firma / acciones           (neutral)

     Implementation: m0-confirm-card becomes a flex column container.
     Each section gets an explicit `order` value to render in the desired
     sequence. Children without explicit order (snapshot, status header,
     warning banner, empty-no-draft) keep order:0 and stay at the top. */
  .m0-card .m0-confirm-card{
    display:flex;flex-direction:column;
  }
  /* Top region (order:0 implicit): m0-section-head, m0-snap-section,
     m0-warning-banner, m0-empty-no-draft. EMR-style ordering follows the
     real fertility consultation flow:
       motivo → antecedentes → historia → factor masculino → ultrasonido
       → lab revisado → diagnóstico/plan → estudios solicitados →
       receta → próxima consulta → validación → firma. */
  .m0-card #m0-reason-section{order:5}
  .m0-card #m0-history-section{order:8}
  .m0-card .m0-clinical-summary{order:10}
  .m0-card .m0-usg-section{order:20}
  .m0-card .m0-male-section{order:27}
  .m0-card #m0-lab-reviewed-section{order:22}
  .m0-card .m0-section-diagnosis-banner{order:50}
  .m0-card .m0-section-diagnosis-group:not(.m0-section-diagnosis-banner){order:51}
  .m0-card #m0-studies-section{order:55}
  .m0-card #m0-prescription-section{order:60}
  .m0-card #m0-followup-section{order:65}
  .m0-card #m0-validation-section{order:70}
  /* G.1 (2026-05-03): Documents-to-print bloque belongs at the
     CIERRE — printing happens when the consult is wrapping up, not
     before the clinician has written the motivo. The previous
     missing order made the card render at order:0 (top of flex
     stack) which inverted the clinical flow. */
  .m0-card #m0-section-documents{order:78}
  /* The corrections wrapper (not the inner <details>) is the flex item;
     order needs to land on the wrapping div, otherwise the details
     surfaces near the top with default order:0. */
  .m0-card .m0-corrections-wrapper{order:75}
  .m0-card .m0-corrections-details{order:75}
  .m0-card .m0-sign-panel{order:80}
  .m0-card #m0-locked-banner{order:81}
  .m0-card .m0-legacy-section{order:99}

  /* M0 EMR — section containers (post-2026-05).
     The vertical left-border accent was retired (Mario's browser
     feedback: "quitar esa línea negra"). Each section now reads as
     a softly outlined sub-card with a single full border, so the
     identity per section comes from the numbered bubble (whose
     accent color stays via --m0-section-accent) instead of a long
     vertical rail down the canvas. */
  .m0-card #m0-reason-section,
  .m0-card #m0-history-section,
  .m0-card #m0-lab-reviewed-section,
  .m0-card #m0-followup-section,
  .m0-card #m0-studies-section,
  .m0-card #m0-prescription-section{
    border:1px solid var(--b1);
    border-radius:10px;padding:14px 16px;
    background:var(--white);
  }
  .m0-card .m0-clinical-summary{
    border:1px solid var(--b1);
  }
  .m0-card .m0-male-section,
  .m0-card .m0-usg-section{
    border:1px solid var(--b1);
  }
  .m0-card .m0-section-diagnosis-banner{
    border:1px solid var(--b1);
    border-radius:10px;padding:12px 16px;
    background:linear-gradient(180deg,#F5F7FF 0%,var(--white) 100%);
    margin-bottom:0;
  }
  .m0-card .m0-section-diagnosis-group:not(.m0-section-diagnosis-banner){
    border:1px solid var(--b1);
    background:var(--white);
    padding:14px 16px;
  }
  .m0-card #m0-prescription-section{
    border:1px solid var(--b1);
    border-radius:10px;padding:14px 16px;
    background:var(--white);
  }
  .m0-card #m0-prescription-section .m0-rx-disclaimer{
    margin-top:8px;font-size:11px;color:var(--mu);
    background:#ECFDF5;padding:6px 10px;border-radius:6px;
    border:1px solid #A7F3D0;
  }
  .m0-card #m0-validation-section{
    border:1px solid var(--b1);
    border-radius:10px;padding:14px 16px;
    background:var(--white);
  }

  /* M0 v2 — collapsible details (corrections, technical metadata) */
  .m0-card .m0-corrections-details,
  .m0-card .m0-tech-details{
    margin-top:10px;
  }
  .m0-card .m0-corrections-summary,
  .m0-card .m0-tech-summary{
    cursor:pointer;font-size:12px;color:var(--mu);
    font-weight:600;padding:6px 8px;border-radius:6px;
    user-select:none;
  }
  .m0-card .m0-corrections-summary:hover,
  .m0-card .m0-tech-summary:hover{
    background:var(--s2);color:var(--tx);
  }
  .m0-card .m0-corrections-summary{
    display:flex;justify-content:space-between;align-items:center;
  }
  .m0-card .m0-corrections-add-hint{
    font-size:11px;color:var(--navy);font-weight:500;
  }
  .m0-card .m0-tech-details .m0-meta-row{
    margin-top:6px;
  }

  /* M0 v2 — when no reviewed intake, collapse the source panel and let
     the clinical form take more width. The source panel still renders the
     m0-empty-no-review notice so the user knows manual mode is the path. */
  .m0-card.m0-no-review .m0-review-grid{
    grid-template-columns:1fr;
  }
  .m0-card.m0-no-review .m0-source-card{
    background:var(--s2);padding:10px 14px;
  }
  .m0-card.m0-no-review .m0-source-card .m0-section-title,
  .m0-card.m0-no-review .m0-source-card .m0-meta{
    font-size:12px;color:var(--mu);
  }
  .m0-card.m0-no-review .m0-source-meta{
    display:none;
  }

  /* M0 v4 — premium polish for the signature / action zone. Stronger card,
     visual hierarchy on attestation, primary sign CTA, technical details
     tucked into a low-emphasis disclosure. */
  .m0-card .m0-sign-panel{
    margin-top:14px;padding:12px 16px;border-radius:12px;
    background:var(--white);
    border:1px solid var(--b1);
    box-shadow:0 2px 8px rgba(15,23,42,.04);
    display:flex;flex-direction:column;gap:8px;
  }
  .m0-card .m0-attestation{
    display:flex;align-items:center;gap:8px;
    font-size:13px;color:var(--tx);line-height:1.35;font-weight:500;
    padding:6px 10px;background:var(--blue-soft);border-radius:8px;
  }
  .m0-card .m0-attestation input[type="checkbox"]{
    width:16px;height:16px;margin:0;flex-shrink:0;cursor:pointer;
  }
  .m0-card .m0-disclaimer{
    font-size:10px;color:var(--m0-meta-fg);line-height:1.4;text-align:right;
  }
  .m0-card .m0-disclaimer-footer{
    margin-top:14px;padding:8px 12px;border-radius:6px;
    background:var(--m0-pending-bg);color:var(--m0-meta-fg);
    text-align:center;font-size:10px;letter-spacing:.02em;
  }

  .m0-card .m0-action-bar{
    display:flex;gap:6px;flex-wrap:wrap;align-items:center;
    margin-top:2px;padding-top:8px;border-top:1px solid var(--b1);
  }
  .m0-card .m0-action-bar #m0-sign-btn{
    margin-left:auto;font-weight:600;padding:9px 22px;
    box-shadow:0 2px 6px rgba(15,23,42,.08);
  }
  .m0-card .m0-action-bar #m0-save-btn{
    font-weight:500;
  }

  .m0-card .m0-row-status{
    font-size:11px;color:var(--m0-meta-fg);min-height:14px;margin-top:6px;
  }
  .m0-card .m0-row-status.is-ok{color:var(--gr)}
  .m0-card .m0-row-status.is-error{color:var(--re)}

  .m0-card .m0-locked-banner{
    margin-top:14px;padding:10px 14px;border-radius:8px;
    background:var(--m0-locked-bg);color:var(--m0-locked-fg);
    font-size:12px;font-weight:500;
    border-left:3px solid #9CA3AF;
  }

  /* Locked mode — applied post-sign by M0.4c. CSS specificity (0,2,0)
     beats element-level disabled styling so the visual lock is
     unambiguous; the underlying `disabled` attribute remains the
     functional barrier. */
  .m0-card.m0-locked input,
  .m0-card.m0-locked select,
  .m0-card.m0-locked textarea,
  .m0-card.m0-locked button[data-m0-action]:not([data-m0-action="view-decision-log"]){
    background:var(--m0-locked-bg);color:var(--m0-locked-fg);
    cursor:not-allowed;opacity:.7;
  }

  /* ── P2a: Premium REI workspace shell ────────────────────────────────
     Eight clinical clusters, sticky snapshot strip, 220px sidebar, single
     navy accent. The legacy m0-snap-section card is replaced by the
     horizontal strip; numbered bubbles + the eleven competing section
     accent colors collapse to a single calm navy hierarchy. The earlier
     accent CSS rules above remain in source for backward compatibility
     with smoke sentinels — these overrides simply win at runtime. */
  .m0-card .m0-workspace{
    display:flex;flex-direction:column;
  }
  .m0-card .m0-workspace-top{
    position:sticky;top:0;z-index:5;
    background:var(--white);
    border-bottom:1px solid var(--b1);
    padding:0 0 8px;margin-bottom:8px;
  }
  .m0-card .m0-snap-strip{
    display:flex;flex-wrap:wrap;gap:8px;
  }
  .m0-card .m0-strip-pill{
    display:inline-flex;align-items:baseline;gap:8px;
    padding:6px 14px;border-radius:999px;
    background:var(--blue-soft);
    border:1px solid rgba(27,45,92,.12);
    min-width:0;
  }
  .m0-card .m0-strip-label{
    font-size:10px;font-weight:600;letter-spacing:.06em;
    text-transform:uppercase;color:var(--mu);
  }
  .m0-card .m0-strip-value{
    font-size:13px;font-weight:700;color:var(--navy);
    white-space:nowrap;
  }

  /* ── Item 1 (2026-05-03): Preparación clínica card ──────────────────
     Sits below the snapshot strip, above the canvas. Premium styling:
     three-accent system (navy primary · slate-50 background · subtle
     warm-amber for "for-consult" band). Vertical rhythm 8/12/16/24.
     The card disappears entirely when there is no case + no intake
     (empty-state line covers that). */
  .m0-card .m0-prep-card{
    margin-top:12px;
    background:linear-gradient(180deg,#FBFCFE 0%,#FFFFFF 100%);
    border:1px solid var(--b1);
    border-radius:12px;
    padding:14px 18px 12px;
    box-shadow:0 1px 2px rgba(15,23,42,.04);
    display:flex;flex-direction:column;gap:10px;
  }
  .m0-card .m0-prep-card[hidden]{display:none}
  .m0-card .m0-prep-empty-state{
    margin-top:10px;padding:8px 14px;border-radius:10px;
    background:var(--s2);color:var(--mu);font-size:12px;
    border:1px dashed var(--b1);
  }
  .m0-card .m0-prep-empty-state[hidden]{display:none}

  .m0-card .m0-prep-head{
    display:flex;align-items:baseline;justify-content:space-between;
    gap:12px;flex-wrap:wrap;margin:0;
  }
  .m0-card .m0-prep-eyebrow{
    font-size:10px;font-weight:700;letter-spacing:.08em;
    text-transform:uppercase;color:var(--navy);
  }
  .m0-card .m0-prep-source{
    font-size:11px;color:var(--mu);font-style:italic;
  }
  .m0-card .m0-prep-identity{
    margin:0;font-size:14px;line-height:1.45;color:var(--tx);
    font-weight:500;
  }
  .m0-card .m0-prep-identity:empty{display:none}
  .m0-card .m0-prep-identity strong{
    color:var(--navy);font-weight:700;
  }

  .m0-card .m0-prep-bands{
    display:grid;
    grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
    gap:12px;
    padding-top:8px;
    border-top:1px solid var(--b1);
  }
  .m0-card .m0-prep-band{
    display:flex;flex-direction:column;gap:6px;min-width:0;
  }
  .m0-card .m0-prep-band-title{
    font-size:11px;font-weight:700;letter-spacing:.05em;
    text-transform:uppercase;color:var(--mu);
    margin:0;
  }
  .m0-card .m0-prep-band[data-band="for-consult"] .m0-prep-band-title{
    color:#92400E; /* warm amber for "what to do today" */
  }
  .m0-card .m0-prep-row{
    display:flex;gap:6px;font-size:12px;line-height:1.4;
    flex-wrap:wrap;
  }
  .m0-card .m0-prep-row-label{
    color:var(--mu);font-weight:600;flex-shrink:0;min-width:64px;
  }
  .m0-card .m0-prep-row-value{
    color:var(--tx);flex:1;min-width:0;
  }
  .m0-card .m0-prep-list{
    margin:0;padding:0;list-style:none;
    display:flex;flex-direction:column;gap:4px;
  }
  .m0-card .m0-prep-list li{
    font-size:12px;line-height:1.4;color:var(--tx);
    padding-left:14px;position:relative;
  }
  .m0-card .m0-prep-list li::before{
    content:"·";position:absolute;left:4px;top:-2px;
    color:var(--navy);font-weight:700;font-size:14px;
  }
  .m0-card .m0-prep-band[data-band="for-consult"] .m0-prep-list li::before{
    color:#B45309;
  }
  .m0-card .m0-prep-empty{
    margin:0;font-size:11px;color:var(--mu);font-style:italic;
  }
  .m0-card .m0-prep-empty[hidden]{display:none}
  .m0-card .m0-prep-disclaimer{
    margin:6px 0 0;font-size:10px;color:var(--mu);
    line-height:1.4;border-top:1px dashed var(--b1);padding-top:6px;
  }

  /* Responsive — collapse bands to single column at narrow widths.
     Sticks with the workspace 900px breakpoint. */
  @media (max-width: 900px){
    .m0-card .m0-prep-bands{grid-template-columns:1fr}
  }

  .m0-card .m0-workspace-body{
    display:grid;
    grid-template-columns:220px minmax(0, 1fr);
    gap:18px;align-items:start;
  }
  .m0-card .m0-sidebar{
    position:sticky;top:84px;
    align-self:start;
    padding:0;
  }
  .m0-card .m0-cluster-list{
    list-style:none;margin:0;padding:0;
    display:flex;flex-direction:column;gap:2px;
    border-left:2px solid var(--b1);
  }
  /* Item 3 (2026-05-03): three-phase sub-headers (Preparación /
     Consulta activa / Cierre). Presentational only — these <li> nodes
     have no data-cluster-target so the click + IntersectionObserver
     handlers ignore them. The first phase header sits flush with the
     top of the list; subsequent ones get a separator above. */
  .m0-card .m0-cluster-phase{
    list-style:none;
    padding:14px 10px 4px 14px;
    margin-left:-2px;
    border-left:2px solid transparent;
    pointer-events:none;
  }
  .m0-card .m0-cluster-phase:first-child{padding-top:4px}
  .m0-card .m0-cluster-phase + .m0-cluster-item{margin-top:2px}
  .m0-card .m0-cluster-list li.m0-cluster-phase:not(:first-child){
    border-top:1px solid var(--b1);
    margin-top:8px;
  }
  .m0-card .m0-cluster-phase-label{
    font-size:10px;font-weight:700;letter-spacing:.08em;
    text-transform:uppercase;color:var(--mu);
    line-height:1.2;
  }
  /* Phase 2 ("Consulta activa") gets the warm-amber accent — it is the
     band where active clinical capture happens. Phase 3 ("Cierre")
     stays slate to feel decisive without competing with phase 2. */
  .m0-card .m0-cluster-phase[data-phase="consulta"] .m0-cluster-phase-label{
    color:#92400E;
  }
  .m0-card .m0-cluster-phase[data-phase="cierre"] .m0-cluster-phase-label{
    color:#475569;
  }
  .m0-card .m0-cluster-item{
    position:relative;
    padding:8px 10px 8px 14px;
    margin-left:-2px;
    display:flex;align-items:center;gap:8px;
    font-size:12px;font-weight:500;color:var(--mu);
    cursor:pointer;
    border-left:2px solid transparent;
    transition:color .12s ease, border-left-color .12s ease, background .12s ease;
  }
  .m0-card .m0-cluster-item:hover{
    color:var(--navy);background:var(--s2);
  }
  .m0-card .m0-cluster-item.is-active{
    color:var(--navy);font-weight:700;
    border-left-color:var(--navy);
    background:var(--blue-soft);
  }
  .m0-card .m0-cluster-item.is-disabled{
    opacity:.45;cursor:not-allowed;pointer-events:none;
    font-style:italic;
  }
  .m0-card .m0-cluster-dot{
    width:6px;height:6px;border-radius:50%;
    background:#CBD5E1;flex:0 0 6px;
  }
  .m0-card .m0-cluster-item.is-active .m0-cluster-dot{
    background:var(--navy);
  }
  .m0-card .m0-cluster-label{
    flex:1;min-width:0;line-height:1.3;
  }
  .m0-card .m0-canvas{min-width:0}

  /* Legacy snap-section card folds into the strip — markup stays intact
     so the existing _m0RefreshDerivedUI helpers and the premium-UI smoke
     sentinels (which still grep for #m0-snap-*-value IDs in source) keep
     matching. Only its visual presence is suppressed. */
  .m0-card .m0-snap-section{display:none !important}

  /* M0.4d (D.2.1): numbered bubbles retired (Mario's feedback:
     "se ve poco profesional, cero premium"). The sidebar already
     provides cluster context. Sections now lead with the title
     typography alone, no counter. */
  .m0-card .m0-section-numbered{padding-left:0 !important}
  .m0-card .m0-section-numbered::before{display:none !important}

  /* E.2: hide the snap-strip pill row (AGE / AMH / AFC / TIME TRYING /
     ALERTS) inside the M0 canvas. The persistent #case-ctx-bar at
     the top already carries the same data plus BMI / Allergies /
     Last visit (D.3) — duplicating these three pills under the
     tabs reads as visual noise. The workspace-top container itself
     stays in source so existing JS hooks (_m0RefreshDerivedUI) keep
     finding their target IDs; only the visual presence of the pill
     strip is suppressed. */
  .m0-card .m0-workspace-top{
    display:none !important;
  }

  /* M0.4d: the prior "single navy accent" override that re-painted
     the per-section border-left to navy was retired — there is no
     accent rail anymore (the soft outline border above carries the
     section identity). The gradient on the diagnosis banner stays. */
  .m0-card .m0-section-numbered{
    --m0-section-accent:var(--navy) !important;
  }
  .m0-card .m0-section-diagnosis-banner{
    background:linear-gradient(180deg,#F5F7FF 0%,var(--white) 100%) !important;
  }

  /* M0.4d (D.2): premium section-title typography. 17 px, navy,
     tight letter-spacing — section header reads as the start of a
     clear "1. Diagnosis / 2. Prescription" subdivision rather than
     a generic chip label. */
  .m0-card .m0-section-numbered > .m0-section-head-inline > .m0-label{
    font-size:17px !important;
    font-weight:700 !important;
    color:var(--navy) !important;
    letter-spacing:-.01em !important;
  }
  .m0-card .m0-section-numbered > .m0-section-head-inline > .m0-helper{
    font-size:13px !important;
    color:var(--mu) !important;
    line-height:1.5 !important;
  }

  /* Anchor-target offset so smooth-scroll lands below the sticky strip. */
  .m0-card [data-cluster-anchor]{scroll-margin-top:96px}

  /* Workspace responsive — collapse sidebar at < 900px, render the
     cluster list as a horizontal pill scroller above the canvas. */
  @media (max-width: 900px){
    .m0-card .m0-workspace-body{
      grid-template-columns:1fr;gap:12px;
    }
    .m0-card .m0-sidebar{
      position:static;overflow-x:auto;
    }
    .m0-card .m0-cluster-list{
      flex-direction:row;
      border-left:none;border-bottom:2px solid var(--b1);
      gap:0;
    }
    .m0-card .m0-cluster-item{
      border-left:none;border-bottom:2px solid transparent;
      margin-left:0;margin-bottom:-2px;white-space:nowrap;
    }
    .m0-card .m0-cluster-item.is-active{
      border-left:none;border-bottom-color:var(--navy);
    }
    /* Item 3: hide phase sub-headers on the horizontal mobile strip —
       they don't add navigation value once the list is a pill row. */
    .m0-card .m0-cluster-phase{display:none}
  }

  /* Responsive — tablet ≤ 1023px */
  @media (max-width: 1023px){
    .m0-card{margin:10px;padding:12px 12px 14px}
    .m0-card .m0-review-grid{grid-template-columns:1fr;gap:12px}
  }

  /* Responsive — phone ≤ 600px */
  @media (max-width: 600px){
    .m0-card{margin:8px;padding:10px 10px 12px}
    .m0-card .m0-section{padding:10px 0}
    .m0-card .m0-section-head,
    .m0-card .m0-section-head-inline{flex-direction:column;align-items:flex-start;gap:6px}
    .m0-card .m0-action-bar .btn{width:100%;justify-content:center}
  }

/* ── inline block 10 (client_v2.html L36362–L36739 pre-extracción) ── */
  /* ─── 7g.1 — Case Command Center — scoped variables only ─── */
  .command-card{
    --command-pending-bg:#F3F4F6;
    --command-pending-fg:#4B5563;
    --command-captured-bg:#ECFDF5;
    --command-captured-fg:#15803D;
    --command-progress-bg:#FEF3C7;
    --command-progress-fg:#92400E;
    --command-open-bg:#E0F2FE;
    --command-open-fg:#075985;
    --command-closed-bg:#E0E7FF;
    --command-closed-fg:#3730A3;
    --command-na-bg:#F9FAFB;
    --command-na-fg:#9CA3AF;
    --command-current-bg:#EEF2FF;
    --command-current-fg:#3730A3;
    --command-overdue-bg:#FEE2E2;
    --command-overdue-fg:#991B1B;
    --command-gate-bg:#FEF3C7;
    --command-gate-fg:#92400E;
    --command-row-border:#E5E7EB;
    --command-meta-fg:#6B7280;
    --command-cockpit-accent:#1B2D5C;
    margin:14px 20px;padding:18px 20px 8px;
    background:var(--white);border-radius:10px;
    /* 7g.1.1: stronger boundary so the Command Center reads as the cockpit
       rather than an appended section. Accent bar at the top and a deeper
       shadow give it presence without a full redesign. */
    box-shadow:0 4px 16px rgba(27,45,92,.08), 0 1px 3px rgba(0,0,0,.05);
    border-top:3px solid var(--command-cockpit-accent);
    /* Anchor offset so the page doesn't sit under the topbar after scroll. */
    scroll-margin-top:84px;
    /* 7ui.0: gentle transition for the hover lift below */
    transition:transform .15s ease, box-shadow .15s ease;
  }
  /* 7ui.0: subtle hover lift on the cockpit wrapper (skipped on the gate
     banner so the "Open a v14 case" notice stays still). */
  .command-card:hover{transform:translateY(-1px);box-shadow:0 6px 24px rgba(27,45,92,.10), 0 2px 6px rgba(0,0,0,.06)}
  .command-card.command-gate-banner:hover{transform:none;box-shadow:none}
  /* The view container itself is focusable for accessibility (tabindex="-1"). */
  #view-command:focus{outline:none}
  .command-card.command-gate-banner{
    margin:16px 20px;padding:14px 16px;border-radius:8px;
    background:var(--command-gate-bg);color:var(--command-gate-fg);
    font-size:13px;font-weight:500;box-shadow:none;border-top:none;
  }
  .command-cockpit-heading{padding-left:20px;padding-right:20px}

  .command-card .command-header{
    display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;
    padding-bottom:14px;border-bottom:1px solid var(--command-row-border);
    margin-bottom:16px;
  }
  .command-card .command-header-name{
    /* 7g.1.1: more prominent patient name — cockpit feel. */
    font-size:22px;font-weight:700;color:var(--tx);letter-spacing:-.01em;
  }
  .command-card .command-header-meta{
    font-size:12px;color:var(--command-meta-fg);font-family:var(--mono);
  }
  .command-card .command-header-progress{
    margin-left:auto;display:flex;align-items:center;gap:8px;
  }
  .command-card .command-header-active-label{
    font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--command-meta-fg);
  }
  .command-card .command-header-pct{
    font-size:13px;font-weight:600;color:var(--tx);font-family:var(--mono);
  }
  .command-card .command-phase-chip{
    display:inline-block;padding:3px 10px;border-radius:999px;
    font-size:11px;font-weight:600;letter-spacing:.02em;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .command-phase-chip.command-phase-frozen-transfer{background:var(--command-current-bg);color:var(--command-current-fg)}
  .command-card .command-phase-chip.command-phase-fresh-transfer{background:var(--command-current-bg);color:var(--command-current-fg)}
  .command-card .command-phase-chip.command-phase-outcome{background:var(--command-open-bg);color:var(--command-open-fg)}
  .command-card .command-phase-chip.command-phase-closed{background:var(--command-closed-bg);color:var(--command-closed-fg)}

  /* ── 7ux.0: Hero + supporting layout ────────────────────────────────────
     Single dominant primary CTA derived from _commandNextAction(). The
     hero presents one action with strong visual weight; the supporting
     wrapper keeps module-map / missing-data / decision-log / outcome-pipe
     as low-key context. Pure presentational; no clinical logic touched. */
  .command-card .command-hero{
    margin:0 0 18px 0;padding:18px 20px;border-radius:10px;
    background:linear-gradient(135deg,#F8FBFE 0%,#EEF4FA 100%);
    border-left:4px solid var(--command-cockpit-accent);
    box-shadow:0 1px 3px rgba(27,45,92,.04);
  }
  .command-card .command-hero-head{
    display:flex;align-items:center;justify-content:space-between;
    gap:10px;margin-bottom:10px;flex-wrap:wrap;
  }
  .command-card .command-hero-eyebrow{
    font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
    color:var(--command-cockpit-accent);
  }
  .command-card .command-hero-step{
    font-size:11px;color:var(--command-meta-fg);margin-bottom:4px;font-family:var(--mono);
  }
  .command-card .command-hero-label{
    font-size:18px;font-weight:700;line-height:1.3;color:var(--tx);margin-bottom:4px;
  }
  .command-card .command-hero-detail{
    font-size:12px;color:var(--command-meta-fg);margin-bottom:14px;font-family:var(--mono);
    min-height:0;
  }
  .command-card .command-hero-detail:empty{margin-bottom:10px}
  .command-card .command-hero-cta{
    display:block;width:100%;padding:13px 22px;font-size:14px;font-weight:600;
    text-align:center;justify-content:center;
  }
  .command-card .command-hero-cta:disabled,
  .command-card .command-hero-cta.command-cta-disabled{
    opacity:.55;cursor:not-allowed;
  }

  /* Supporting wrapper — subordinate visual treatment */
  .command-card .command-supporting{
    border-top:1px solid var(--command-row-border);padding-top:6px;
  }
  .command-card .command-section{
    padding:10px 0;border-top:1px solid var(--command-row-border);
  }
  .command-card .command-supporting > .command-section:first-child{
    border-top:none;padding-top:4px;
  }
  .command-card .command-section-title{
    font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
    color:var(--command-meta-fg);margin-bottom:8px;
  }

  .command-card .command-urgency-chip{
    display:inline-block;padding:3px 10px;border-radius:999px;
    font-size:11px;font-weight:600;letter-spacing:.02em;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .command-urgency-chip.command-urgency-overdue{
    background:var(--command-overdue-bg);color:var(--command-overdue-fg);
  }
  .command-card .command-urgency-chip.command-urgency-hidden{display:none}

  /* ── 7g.2: Operational tasks widget — supporting only ─────────────────
     Lives inside .command-supporting; subordinate to the 7ux.0 hero.
     Each row shows: title, owner-role chip, due-date, status/priority chip,
     and a route-to-module CTA. Derived clinical tasks do NOT expose a
     manual Complete button — auto-completion happens server-side during
     sync when the source clinical state resolves. */
  .command-card .command-tasks-section .command-section-title{
    display:flex;align-items:center;justify-content:space-between;gap:8px;
  }
  .command-card .command-tasks-counts{
    font-family:var(--mono);font-size:10px;color:var(--command-meta-fg);
    text-transform:none;letter-spacing:0;font-weight:500;
  }
  .command-card .command-tasks-counts .ct-overdue{
    color:var(--command-overdue-fg);font-weight:700;
  }
  .command-card .command-tasks-list{display:flex;flex-direction:column;gap:6px}
  .command-card .command-task-row{
    display:grid;grid-template-columns:auto 1fr auto auto;
    gap:8px;align-items:center;
    padding:8px 10px;border:1px solid var(--command-row-border);
    border-radius:7px;background:var(--white);
  }
  .command-card .command-task-row.task-priority-overdue{
    border-left:3px solid var(--command-overdue-fg);
  }
  .command-card .task-owner-chip{
    font-family:var(--mono);font-size:9px;font-weight:600;
    text-transform:uppercase;letter-spacing:.05em;
    padding:2px 7px;border-radius:4px;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .task-title{
    font-size:12px;font-weight:600;color:var(--tx);min-width:0;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  .command-card .task-due{
    font-family:var(--mono);font-size:10px;color:var(--command-meta-fg);
  }
  .command-card .task-status-chip{
    font-family:var(--mono);font-size:9px;padding:2px 7px;border-radius:999px;
    font-weight:600;letter-spacing:.02em;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .task-status-chip.task-priority-overdue{
    background:var(--command-overdue-bg);color:var(--command-overdue-fg);
  }
  .command-card .task-row-actions{display:flex;gap:6px}
  .command-card .task-action-btn{
    font-size:10px;padding:4px 9px;border-radius:5px;
    border:1px solid var(--b1);background:var(--white);color:var(--tx);
    cursor:pointer;
  }
  .command-card .task-action-btn:hover{background:var(--s3)}
  .command-card .command-tasks-empty{
    font-size:11px;color:var(--command-meta-fg);
    padding:6px 0;font-style:italic;
  }
  @media (max-width: 600px){
    .command-card .command-task-row{
      grid-template-columns:1fr auto;
      grid-row-gap:4px;
    }
    .command-card .command-task-row .task-owner-chip,
    .command-card .command-task-row .task-due,
    .command-card .command-task-row .task-status-chip{
      grid-column:span 2;justify-self:start;
    }
    .command-card .command-task-row .task-row-actions{
      grid-column:span 2;
    }
  }

  /* ── 7g.3: Communication drafts widget — operational, subordinate ────
     Lives inside .command-supporting; visually subordinate to the 7ux.0
     hero AND to the 7g.2 Operational Tasks section. v0 status palette:
     draft (neutral), copied (open-blue), sent (captured-green),
     cancelled (na-gray). Draft preview is collapsed to one line. */
  .command-card .command-comms-section .command-section-title{
    display:flex;align-items:center;justify-content:space-between;gap:8px;
  }
  .command-card .command-comms-counts{
    font-family:var(--mono);font-size:10px;color:var(--command-meta-fg);
    text-transform:none;letter-spacing:0;font-weight:500;
  }
  .command-card .command-comms-counts .cc-sent{
    color:var(--command-captured-fg);font-weight:700;
  }
  .command-card .command-comms-list{display:flex;flex-direction:column;gap:6px}
  .command-card .command-comm-row{
    display:grid;grid-template-columns:auto auto 1fr auto;
    gap:8px;align-items:center;
    padding:8px 10px;border:1px solid var(--command-row-border);
    border-radius:7px;background:var(--white);
  }
  .command-card .comm-recipient-chip{
    font-family:var(--mono);font-size:9px;font-weight:600;
    text-transform:uppercase;letter-spacing:.05em;
    padding:2px 7px;border-radius:4px;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .comm-channel-chip{
    font-family:var(--mono);font-size:9px;font-weight:500;
    text-transform:uppercase;letter-spacing:.05em;
    padding:2px 7px;border-radius:4px;
    background:var(--command-na-bg);color:var(--command-na-fg);
  }
  .command-card .comm-preview{
    grid-column:1 / -1;font-size:11px;color:var(--tx);
    line-height:1.45;padding:4px 0 0 0;
    white-space:pre-wrap;word-break:break-word;
    max-height:4.5em;overflow:hidden;
  }
  .command-card .comm-status-chip{
    font-family:var(--mono);font-size:9px;padding:2px 7px;border-radius:999px;
    font-weight:600;letter-spacing:.02em;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .comm-status-chip.comm-status-copied{
    background:var(--command-open-bg);color:var(--command-open-fg);
  }
  .command-card .comm-status-chip.comm-status-sent{
    background:var(--command-captured-bg);color:var(--command-captured-fg);
  }
  .command-card .comm-status-chip.comm-status-cancelled{
    background:var(--command-na-bg);color:var(--command-na-fg);
    font-style:italic;
  }
  .command-card .comm-row-actions{
    grid-column:1 / -1;display:flex;gap:6px;flex-wrap:wrap;
    padding-top:4px;
  }
  .command-card .comm-action-btn{
    font-size:10px;padding:4px 9px;border-radius:5px;
    border:1px solid var(--b1);background:var(--white);color:var(--tx);
    cursor:pointer;
  }
  .command-card .comm-action-btn:hover{background:var(--s3)}
  .command-card .comm-action-btn:disabled{
    opacity:.45;cursor:not-allowed;
  }
  .command-card .command-comms-empty{
    font-size:11px;color:var(--command-meta-fg);
    padding:6px 0;font-style:italic;
  }
  @media (max-width: 600px){
    .command-card .command-comm-row{
      grid-template-columns:1fr auto;
    }
    .command-card .command-comm-row .comm-recipient-chip,
    .command-card .command-comm-row .comm-channel-chip{
      grid-column:span 2;justify-self:start;
    }
  }

  .command-card .command-module-map{display:flex;flex-direction:column;gap:6px}
  .command-card .command-row{
    display:grid;grid-template-columns:24px 1fr auto auto auto;gap:10px;
    align-items:center;padding:6px 0;
  }
  .command-card .command-row-num{
    font-size:13px;font-weight:600;color:var(--command-meta-fg);font-family:var(--mono);
  }
  .command-card .command-row-label{font-size:13px;color:var(--tx)}
  .command-card .command-row-detail{font-size:11px;color:var(--command-meta-fg);font-family:var(--mono)}
  .command-card .command-row-btn{font-size:11px;padding:4px 10px}

  .command-card .command-status-chip{
    display:inline-block;padding:2px 8px;border-radius:999px;
    font-size:10px;font-weight:600;letter-spacing:.02em;
    background:var(--command-pending-bg);color:var(--command-pending-fg);
  }
  .command-card .command-status-chip.command-status-captured{background:var(--command-captured-bg);color:var(--command-captured-fg)}
  .command-card .command-status-chip.command-status-progress{background:var(--command-progress-bg);color:var(--command-progress-fg)}
  .command-card .command-status-chip.command-status-open{background:var(--command-open-bg);color:var(--command-open-fg)}
  .command-card .command-status-chip.command-status-closed{background:var(--command-closed-bg);color:var(--command-closed-fg)}
  .command-card .command-status-chip.command-status-na{background:var(--command-na-bg);color:var(--command-na-fg);font-style:italic}

  .command-card .command-missing{font-size:12px;color:var(--tx);line-height:1.6}
  .command-card .command-missing-item{padding:2px 0}
  .command-card .command-missing-empty{
    font-size:12px;color:var(--command-meta-fg);font-style:italic;
  }

  .command-card .command-deflog-line{
    font-size:12px;color:var(--tx);font-family:var(--mono);margin-bottom:6px;
  }
  .command-card .command-deflog-actions{display:flex;gap:8px}
  .command-card .command-deflog-fallback{
    font-size:12px;color:var(--command-meta-fg);font-style:italic;
  }

  .command-card .command-pipe-state{
    font-size:13px;font-weight:600;color:var(--tx);margin-bottom:4px;
  }
  .command-card .command-pipe-meta{
    font-size:11px;color:var(--command-meta-fg);font-family:var(--mono);margin-bottom:6px;
  }
  .command-card .command-pipe-actions{display:flex;gap:8px}
  .command-card .command-pipe-empty{
    font-size:12px;color:var(--command-meta-fg);font-style:italic;
  }

  .command-card .command-disclaimer{
    margin-top:12px;padding:8px 12px;border-radius:6px;
    background:var(--command-pending-bg);color:var(--command-meta-fg);
    font-size:11px;line-height:1.5;
  }

  /* Responsive — tablet ≤ 1023px */
  @media (max-width: 1023px){
    .command-card{margin:10px;padding:12px 12px 4px}
    .command-card .command-header-progress{margin-left:0;width:100%}
    .command-card .command-row{grid-template-columns:24px 1fr auto auto}
    .command-card .command-row-btn{grid-column:1 / -1;justify-self:start}
  }

  /* Responsive — phone ≤ 600px */
  @media (max-width: 600px){
    .command-card{margin:8px;padding:10px 10px 4px}
    .command-card .command-header{flex-direction:column;align-items:flex-start;gap:6px}
    .command-card .command-header-progress{flex-wrap:wrap}
    .command-card .command-row{grid-template-columns:20px 1fr;gap:6px}
    .command-card .command-row-detail{grid-column:2;font-size:10px}
    .command-card .command-status-chip{grid-column:2;justify-self:start}
    .command-card .command-row-btn{grid-column:2;justify-self:start;width:100%}
    /* 7ux.0: hero responsive — head stacks; CTA already full-width */
    .command-card .command-hero{padding:14px 14px}
    .command-card .command-hero-head{flex-direction:column;align-items:flex-start;gap:6px}
    .command-card .command-hero-label{font-size:16px}
  }

/* ── inline block 11 (client_v2.html L37919–L38224 pre-extracción) ── */
/* ═════════ AI-1C — clinical-grade modal styling ═════════ */
.ai-promote-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(12, 18, 28, 0.62);
  backdrop-filter: blur(2px);
  z-index: 8000;
  display: flex; align-items: stretch; justify-content: center;
  padding: 32px 24px;
  font: 400 14px/1.45 var(--sans, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif);
  color: var(--tx, #1c2330);
}
.ai-promote-modal-card {
  background: var(--white, #fff);
  border: 1px solid var(--b1, #e6e9ef);
  border-radius: 14px;
  max-width: 1180px; width: 100%;
  max-height: calc(100vh - 64px);
  display: grid;
  grid-template-rows: auto 1fr auto;
  box-shadow: 0 32px 80px rgba(12,18,28,0.28);
  overflow: hidden;
}
.ai-promote-modal-head {
  padding: 22px 28px 18px;
  border-bottom: 1px solid var(--b1, #e6e9ef);
  background: linear-gradient(180deg, #fafbfd 0%, #ffffff 100%);
}
.ai-promote-modal-eyebrow {
  font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, Consolas, monospace);
  letter-spacing: 1.4px; text-transform: uppercase;
  color: var(--mu, #6b7280);
  margin-bottom: 6px;
}
.ai-promote-modal-title {
  font-size: 19px; font-weight: 700; color: var(--tx, #1c2330);
  letter-spacing: -0.1px; line-height: 1.25;
}
.ai-promote-modal-sub {
  margin-top: 6px; font-size: 13px; line-height: 1.5;
  color: var(--mu, #6b7280); max-width: 880px;
}
.ai-promote-context-strip {
  margin-top: 14px; padding-top: 14px;
  border-top: 1px dashed var(--b1, #e6e9ef);
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 14px 24px;
}
.ai-promote-ctx-item { min-width: 0; }
.ai-promote-ctx-label {
  font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
  letter-spacing: 0.8px; text-transform: uppercase;
  color: var(--mu, #6b7280); margin-bottom: 4px;
}
.ai-promote-ctx-val {
  font-size: 13px; font-weight: 500; color: var(--tx, #1c2330);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ai-promote-ctx-mono {
  font-family: var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
  font-size: 12px; font-weight: 500;
  color: var(--mu, #6b7280);
}

.ai-promote-modal-body {
  padding: 22px 28px 24px;
  overflow-y: auto;
  background: #fbfbfd;
}
.ai-promote-banner-warn {
  padding: 14px 16px;
  background: #fff8e1; border: 1px solid #f0c97a;
  border-radius: 10px;
  color: #6b4d00; font-size: 13px; line-height: 1.45;
  margin-bottom: 18px;
}

/* Summary cards */
.ai-promote-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 22px;
}
.ai-promote-card {
  border: 1px solid var(--b1, #e6e9ef);
  border-radius: 10px;
  padding: 14px 16px;
  background: var(--white, #fff);
  display: flex; flex-direction: column; gap: 6px;
  position: relative; overflow: hidden;
}
.ai-promote-card::before {
  content: ""; position: absolute;
  top: 0; left: 0; bottom: 0; width: 3px;
  border-radius: 3px 0 0 3px;
}
.ai-promote-card-new::before        { background: #2c8f43; }
.ai-promote-card-overwrite::before  { background: #c87810; }
.ai-promote-card-unchanged::before  { background: #94a3b8; }
.ai-promote-card-missing::before    { background: #cfd6e0; }
.ai-promote-card-count {
  font: 600 22px/1 var(--sans);
  color: var(--tx, #1c2330);
  letter-spacing: -0.4px;
}
.ai-promote-card-new        .ai-promote-card-count { color: #246b35; }
.ai-promote-card-overwrite  .ai-promote-card-count { color: #93570a; }
.ai-promote-card-unchanged  .ai-promote-card-count { color: #5b6776; }
.ai-promote-card-missing    .ai-promote-card-count { color: #8a93a3; }
.ai-promote-card-label {
  font: 600 12px/1.2 var(--sans);
  letter-spacing: 0.2px;
  color: var(--tx, #1c2330);
}
.ai-promote-card-hint {
  font-size: 11px; line-height: 1.4;
  color: var(--mu, #6b7280);
}

/* Review section */
.ai-promote-section {
  background: var(--white, #fff);
  border: 1px solid var(--b1, #e6e9ef);
  border-radius: 12px;
  overflow: hidden;
}
.ai-promote-section-head {
  padding: 14px 18px;
  border-bottom: 1px solid var(--b1, #e6e9ef);
  background: #fafbfd;
}
.ai-promote-section-title {
  font: 600 13px/1.2 var(--sans);
  color: var(--tx, #1c2330);
  letter-spacing: 0.1px;
}
.ai-promote-section-sub {
  margin-top: 4px; font-size: 12px; color: var(--mu, #6b7280);
}
.ai-promote-table-wrap { overflow-x: auto; }
.ai-promote-table {
  width: 100%; border-collapse: collapse;
  font-size: 13px;
}
.ai-promote-table th {
  font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--mu, #6b7280);
  padding: 12px 18px;
  text-align: left; vertical-align: middle;
  background: #fafbfd;
  border-bottom: 1px solid var(--b1, #e6e9ef);
}
.ai-promote-table td {
  padding: 14px 18px;
  vertical-align: top;
  border-bottom: 1px solid var(--b1, #eef0f4);
}
.ai-promote-table tbody tr:last-child td { border-bottom: none; }
.ai-promote-table tbody tr.ai-promote-row-overwrite-risk { background: #fff9ec; }
.ai-promote-table tbody tr.ai-promote-row-missing,
.ai-promote-table tbody tr.ai-promote-row-ignored,
.ai-promote-table tbody tr.ai-promote-row-unchanged { color: var(--mu, #6b7280); }
.ai-promote-cell-field {
  font-weight: 600; color: var(--tx, #1c2330);
  font-size: 13px;
}
.ai-promote-cell-field-key {
  display: block; margin-top: 2px;
  font: 500 11px/1.2 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
  color: var(--mu, #94a0b3); letter-spacing: 0.2px;
}
.ai-promote-cell-current,
.ai-promote-cell-proposed {
  font-size: 13px; color: var(--tx, #1c2330);
  word-break: break-word;
}
.ai-promote-cell-current.is-empty,
.ai-promote-cell-proposed.is-empty {
  color: var(--mu, #94a0b3); font-style: italic;
}
.ai-promote-final-line {
  display: block; margin-top: 6px;
  padding: 4px 8px;
  background: #eef6ff; border: 1px solid #cfe1f7; border-radius: 6px;
  font-size: 12px; color: #1c4d7a; font-weight: 500;
}

.ai-promote-status-pill {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 3px 10px; border-radius: 999px;
  font: 600 11px/1.5 var(--sans);
  letter-spacing: 0.2px;
  white-space: nowrap;
}
.ai-promote-status-pill::before {
  content: ""; width: 6px; height: 6px; border-radius: 50%;
}
.ai-promote-status-new            { background:#e8f3ec; color:#246b35; }
.ai-promote-status-new::before    { background:#2c8f43; }
.ai-promote-status-unchanged      { background:#eef0f4; color:#5b6776; }
.ai-promote-status-unchanged::before { background:#94a3b8; }
.ai-promote-status-overwrite-risk { background:#fdefda; color:#8a4b00; }
.ai-promote-status-overwrite-risk::before { background:#c87810; }
.ai-promote-status-missing        { background:#f3f4f7; color:#94a0b3; }
.ai-promote-status-missing::before { background:#cfd6e0; }
.ai-promote-status-ignored        { background:#f3f4f7; color:#94a0b3; }
.ai-promote-status-ignored::before { background:#cfd6e0; }

.ai-promote-row-actions { display:flex; gap:6px; flex-wrap:wrap; }
.ai-promote-row-actions .btn-mini {
  font: 500 12px/1 var(--sans);
  padding: 6px 10px; border-radius: 6px;
  border: 1px solid var(--b1, #d8dde6);
  background: var(--white, #fff); color: var(--tx, #1c2330);
  cursor: pointer; transition: all 0.12s ease;
}
.ai-promote-row-actions .btn-mini:hover { border-color: #94a3b8; }
.ai-promote-row-actions .btn-mini.is-active {
  background: #1f4d8f; color:#fff; border-color: #1f4d8f;
}
.ai-promote-row-actions .btn-mini.is-active-warn {
  background: #93570a; color:#fff; border-color: #93570a;
}
.ai-promote-row-actions .btn-mini:disabled { opacity:.4; cursor: not-allowed; }
.ai-promote-edit-input {
  width: 100%; padding: 7px 10px;
  border: 1px solid var(--b1, #d8dde6); border-radius: 6px;
  font: 400 13px/1.4 var(--sans);
  background: #fff;
}
.ai-promote-edit-input:focus { outline:none; border-color:#1f4d8f; box-shadow: 0 0 0 2px rgba(31,77,143,.16); }

/* Sticky confirmation footer */
.ai-promote-modal-foot {
  display: grid;
  grid-template-columns: 1fr minmax(360px, 460px);
  gap: 24px;
  padding: 18px 28px;
  background: var(--white, #fff);
  border-top: 1px solid var(--b1, #e6e9ef);
  box-shadow: 0 -8px 24px rgba(12,18,28,0.04);
}
.ai-promote-foot-left {
  display: flex; flex-direction: column; gap: 8px; min-width: 0;
}
.ai-promote-summary {
  font: 600 13px/1.4 var(--sans);
  color: var(--tx, #1c2330);
}
.ai-promote-disclaimer {
  font-size: 11px; line-height: 1.5;
  color: var(--mu, #6b7280);
}
.ai-promote-foot-right {
  display: flex; flex-direction: column; gap: 10px;
  min-width: 0;
}
.ai-promote-confirm-block {
  background: #fafbfd;
  border: 1px solid var(--b1, #e6e9ef);
  border-radius: 10px;
  padding: 12px 14px;
}
.ai-promote-confirm-label {
  display: block;
  font: 600 10px/1 var(--mono, ui-monospace, "SF Mono", Menlo, monospace);
  letter-spacing: 0.8px; text-transform: uppercase;
  color: var(--mu, #6b7280); margin-bottom: 6px;
}
.ai-promote-confirm-phrase {
  font: 500 13px/1.4 var(--sans);
  color: var(--tx, #1c2330);
  background: #fff;
  border: 1px dashed #cfd6e0;
  padding: 8px 10px; border-radius: 6px;
  margin-bottom: 8px;
  user-select: all;
}
.ai-promote-confirm-input {
  width: 100%; box-sizing: border-box;
  padding: 9px 12px;
  border: 1px solid var(--b1, #d8dde6); border-radius: 6px;
  font: 400 13px/1.4 var(--sans);
  background: #fff;
}
.ai-promote-confirm-input:focus { outline:none; border-color:#1f4d8f; box-shadow: 0 0 0 2px rgba(31,77,143,.16); }
.ai-promote-actions {
  display: flex; gap: 10px; justify-content: flex-end;
}
.ai-promote-actions .btn { min-width: 120px; }
.ai-promote-submit:disabled { opacity:.45; cursor: not-allowed; }

@media (max-width: 880px){
  .ai-promote-modal-foot {
    grid-template-columns: 1fr;
  }
  .ai-promote-context-strip {
    grid-template-columns: 1fr 1fr;
  }
}

/* ── FEX-DRAFT-SAFE-1.0 — pill honesto de cambios con respaldo local ── */
.fex-draftsafe-pill{position:fixed;right:16px;bottom:16px;z-index:9998;
  display:flex;align-items:center;gap:10px;background:var(--white);
  border:1px solid var(--b2);border-radius:999px;padding:8px 14px;
  font-size:var(--fs-sm);color:var(--tx);
  box-shadow:0 4px 14px rgba(15,23,42,.12)}
.fex-draftsafe-retry{border:0;background:none;color:var(--navy);
  font:inherit;font-weight:var(--fw-semi);cursor:pointer;padding:0;
  text-decoration:underline}
/* ── LOADING-UNIFORM-1.0 — canonical loading / skeleton ──────────────────────
   ONE loading vocabulary (PLAN-MEJORA-20 punto 7). Perception budget: the
   whole block is invisible for the first 180ms and fades in — responses
   faster than the budget never flash a loading state. Shimmer reuses the
   surface tokens (--s2/--s3), same functional pattern as the shipped
   patcock/frx skeletons it canonicalizes. Legacy skeleton systems
   (patcock-skel, frx-appt-skeleton, frx-eb-skeleton) migrate in later
   slices; the audit script pins them so no NEW variant is born. */
.fex-load{opacity:0;animation:fex-load-in .12s ease-out .18s forwards}
@keyframes fex-load-in{to{opacity:1}}
.fex-load-skel{display:flex;flex-direction:column;gap:8px;padding:2px 0}
.fex-load-line{display:block;height:12px;border-radius:6px;
  background:linear-gradient(90deg,var(--s3) 0%,var(--s2) 50%,var(--s3) 100%);
  background-size:200% 100%;
  animation:fex-load-shimmer 1.4s infinite ease-in-out}
.fex-load-line:nth-child(2){width:72%}
.fex-load-line:nth-child(3){width:48%}
.fex-load-line:nth-child(4){width:60%}
@keyframes fex-load-shimmer{
  0%{background-position:200% 0}
  100%{background-position:-200% 0}
}
.fex-load-text{margin:0;color:var(--mu);font-size:12px}
.fex-load-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (prefers-reduced-motion: reduce){
  .fex-load-line{animation:none}
}
