/* =========================================================
   RECETAS — Generador profesional + impresión carta
   Sistema simple: preview con dimensiones fijas en px,
   impresión con dimensiones en pulgadas (vía CSS embebido).
   ========================================================= */

:root{
  --rx-blue:#0a2a5e;
  --rx-blue-2:#1e4ea3;
  --rx-gold:#c9a14a;
  --rx-cream:#fbf8f1;
  --rx-ink:#0d2240;
  --rx-line: rgba(10,42,94,.18);
}

.recetas-body{ background:#f4f6fb; }

/* ===== LAYOUT BUILDER ===== */
.receta-builder{
  display:grid;
  grid-template-columns: minmax(420px, 1fr) minmax(560px, 1.1fr);
  gap:22px;
  align-items:start;
}
@media (max-width: 1180px){
  .receta-builder{ grid-template-columns: 1fr; }
}

.editor.card{ padding:0; overflow:hidden; }
.editor .card-head{
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 18px; border-bottom:1px solid var(--rx-line);
  background: linear-gradient(135deg, #f7f9ff 0%, #eef3ff 100%);
}
.editor .card-head h3{ margin:0; font-size:16px; color:var(--rx-blue);}
.folio-pill{
  font-family:'Inter',sans-serif; font-weight:700; font-size:12px;
  background: var(--rx-blue); color:#fff; padding:6px 12px; border-radius:99px;
  letter-spacing:.06em;
}

.fs{
  border:none; padding:16px 18px; margin:0;
  border-bottom: 1px solid var(--rx-line);
}
.fs:last-child{ border-bottom:none; }
.fs legend{
  font-family:'Montserrat',sans-serif; font-weight:800; font-size:11px;
  letter-spacing:.16em; text-transform:uppercase; color:var(--rx-blue);
  padding:0 8px; margin-left:-4px;
}
.grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.grid-2 .full{ grid-column: 1 / -1; }
.field{ display:flex; flex-direction:column; gap:6px; }
.field.full{ grid-column: 1 / -1; }
.field label{ font-size:12px; color:#5b6a82; font-weight:600;}
.field input, .field select, .field textarea{
  padding:10px 12px; border:1px solid #d6dce8; border-radius:10px;
  font-family:'Inter',sans-serif; font-size:14px; background:#fff;
  transition: border-color .2s, box-shadow .2s;
}
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color: var(--rx-blue-2);
  box-shadow: 0 0 0 3px rgba(30,78,163,.12);
}

/* ===== FILAS DE MEDICAMENTOS ===== */
.med-rows-pro{ display:flex; flex-direction:column; gap:10px; }
.med-rows-pro .med-row{
  display:grid;
  grid-template-columns: 26px 1.6fr 1fr 1fr 1fr 30px;
  gap:8px; align-items:center;
  background:#f9fbff; border:1px solid #e0e7f4; border-radius:12px;
  padding:8px 10px;
}
.med-rows-pro .med-row .med-num{
  width:26px; height:26px; border-radius:50%;
  background: var(--rx-blue); color:#fff; font-weight:800; font-size:12px;
  display:flex; align-items:center; justify-content:center;
}
.med-rows-pro input{
  border:none; background:transparent; padding:8px 6px; font-size:14px;
  border-bottom:1px dashed transparent;
}
.med-rows-pro input:focus{ outline:none; border-bottom-color: var(--rx-blue-2); background:#fff;}
.med-rows-pro .med-row .del{
  border:none; background:#fee; color:#c33; width:28px; height:28px;
  border-radius:50%; cursor:pointer; font-size:14px; font-weight:700;
  transition: background .2s;
}
.med-rows-pro .med-row .del:hover{ background:#fcc; }
@media (max-width: 760px){
  .med-rows-pro .med-row{
    grid-template-columns: 26px 1fr 30px;
    grid-template-areas:
      "num name del"
      "num dosis dosis"
      "num freq dur";
    row-gap:6px;
  }
  .med-rows-pro .med-row .med-num{ grid-area:num; }
  .med-rows-pro .med-row .del{ grid-area:del; }
  .med-rows-pro .med-row .m-name{ grid-area:name; }
  .med-rows-pro .med-row .m-dosis{ grid-area:dosis; }
  .med-rows-pro .med-row .m-freq{ grid-area:freq; }
  .med-rows-pro .med-row .m-dur{ grid-area:dur; }
}
.meds-actions{
  display:flex; gap:10px; margin-top:12px; flex-wrap:wrap;
  justify-content: space-between; align-items:center;
}
.quick-tpl{
  padding:8px 12px; border:1px solid #d6dce8; border-radius:8px;
  font-family:'Inter',sans-serif; font-size:13px;
}

/* ===== VISTA PREVIA ===== */
.preview-wrap{
  position:relative;
  display:flex; flex-direction:column; gap:14px;
}
.preview-toolbar{
  display:flex; align-items:center; justify-content:space-between;
  background:#fff; border-radius:14px; padding:10px 16px;
  box-shadow: 0 2px 12px rgba(10,42,94,.06);
  border:1px solid var(--rx-line);
}
.preview-toolbar strong{ color: var(--rx-blue); font-size:14px;}
.ptools{ display:flex; align-items:center; gap:8px;}
#zoom-level{ font-weight:700; color: var(--rx-blue); font-size:13px; min-width:48px; text-align:center;}

/* ============================================================
   VISTA PREVIA — SISTEMA SIMPLE CON DIMENSIONES EN PÍXELES
   - .sheet usa --sheet-w (default 612px = 8.5in * 72)
   - .rx-half hereda ancho 100% y altura proporcional (5.4/8.5 * w)
   - NO usamos transform:scale, NO usamos em — solo px directos
   - El zoom cambia --sheet-w en setZoom()
   - Para impresión, el CSS embebido en buildPrintHTML() usa pulgadas
   ============================================================ */
.print-stage{
  background: linear-gradient(180deg, #d6dde8 0%, #c4ccdb 100%);
  padding: 20px;
  border-radius: 16px;
  overflow: auto;
  display: flex;
  justify-content: center;
  align-items: flex-start;
  box-shadow: inset 0 4px 14px rgba(0,0,0,.1);
  position: relative;
  min-height: 700px;
}

/* Hoja completa carta (8.5 x 11 in) — ancho base 720px para mejor legibilidad */
.sheet{
  --sheet-w: 720px;
  width: var(--sheet-w);
  background: #fff;
  box-shadow: 0 16px 50px rgba(0,0,0,.25);
  position: relative;
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  transition: width .25s ease;
  border-radius: 4px;
  overflow: hidden;
}

/* sheet-wrap es solo un passthrough (compatibilidad con HTML existente) */
.sheet-wrap{ display: contents; }

/* Cada mitad de receta: 5.4/8.5 = 0.6353 del ancho.
   La altura es proporcional al ancho del .sheet (--sheet-w). */
.rx-half{
  width: 100%;
  /* Altura proporcional, pero damos algo de margen extra (+30px) para evitar que
     el contenido se corte. La impresión real usa 5.4in exactos. */
  min-height: calc(var(--sheet-w, 720px) * 0.6353);
  position: relative;
  background: var(--rx-cream);
}

/* Línea de corte */
.cut-line{
  width: 100%;
  /* 0.2in / 11in = 1.8% de la altura, pero usamos px mínimos */
  height: 18px;
  display: flex; align-items: center; justify-content: center; gap: 14px;
  border-top: 1.5px dashed var(--rx-blue);
  border-bottom: 1.5px dashed var(--rx-blue);
  background: repeating-linear-gradient(90deg, transparent 0 6px, rgba(10,42,94,.08) 6px 12px);
  font-size: 9px;
  color: var(--rx-blue);
  font-weight: 700;
  letter-spacing: .2em;
  text-transform: uppercase;
}
.cut-line .scissors{ color: var(--rx-blue); font-size: 12px; }

/* ============== DISEÑO ULTRA PROFESIONAL DE LA RECETA ==============
   Tipografía y espaciado en pt/pc — coherente con la versión impresa.
   En pantalla a 96dpi: 1in = 96px, 1pt = 1.333px. Como .sheet mide 612px
   (= 8.5in a 72dpi), pero el navegador usa 96dpi, la receta se renderiza
   un poco compacta — perfecto para preview. La impresión usa el CSS
   embebido en buildPrintHTML donde la sheet sí está en pulgadas reales.
   ================================================================== */
.rx-doc{
  width: 100%;
  height: 100%;
  position: relative;
  font-family: 'Inter', sans-serif;
  color: var(--rx-ink);
  display: flex;
  flex-direction: column;
  gap: 3px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.96), rgba(251,248,241,.96));
  padding: 14px 20px 10px 20px;
  box-sizing: border-box;
  /* SIN overflow:hidden para que se vea TODO el contenido aunque sea más alto */
}

/* Marca de agua Dr. Simi — muy sutil para no tapar contenido */
.rx-watermark{
  position:absolute; inset:0; pointer-events:none;
  display:flex; align-items:center; justify-content:center;
  opacity: .04;
  z-index:0;
}
.rx-watermark img{
  width:50%; max-width:200px;
  transform: rotate(-12deg);
}

/* Borde decorativo dorado/azul */
.rx-doc::before{
  content:""; position:absolute;
  top: 8px; left: 8px; right: 8px; bottom: 8px;
  border: 1.5px solid var(--rx-blue);
  border-radius: 6px;
  pointer-events:none;
  z-index:1;
}
.rx-doc::after{
  content:""; position:absolute;
  top: 13px; left: 13px; right: 13px; bottom: 13px;
  border: 0.5px solid var(--rx-gold);
  border-radius: 4px;
  pointer-events:none;
  z-index:1;
}

/* TODOS los hijos directos del rx-doc por encima de los pseudo-elementos */
.rx-doc > *{ position:relative; z-index:2; }
.rx-doc > .rx-watermark{ z-index: 0; }

/* HEADER */
.rx-head{
  display:grid;
  grid-template-columns: auto 1fr auto;
  gap:10px;
  align-items:center;
  padding-bottom: 4px;
  border-bottom: 2px solid var(--rx-blue);
  position:relative;
  flex-shrink:0;
}
.rx-head::after{
  content:""; position:absolute; bottom:-3px; left:0; right:0; height:1px;
  background: var(--rx-gold);
}
.rx-logo{
  width: 42px; height: 42px;
  border-radius: 50%;
  background: radial-gradient(circle, #fff, #f0e6cf);
  border: 2px solid var(--rx-gold);
  display:flex; align-items:center; justify-content:center;
  box-shadow: 0 2px 6px rgba(201,161,74,.3);
  overflow:hidden;
  flex-shrink:0;
}
.rx-logo img{ width:100%; height:100%; object-fit:contain; }

.rx-brand{ line-height:1.05; min-width:0; }
.rx-brand .bn{
  font-family:'Playfair Display','Montserrat',serif;
  font-weight:900; font-size:16px;
  color: var(--rx-blue);
  letter-spacing:-.01em;
  margin:0;
}
.rx-brand .bs{
  font-family:'Inter',sans-serif;
  font-weight:600; font-size:8px;
  color: var(--rx-gold);
  letter-spacing:.2em; text-transform:uppercase;
  margin:1px 0 0;
}
.rx-brand .ba{
  font-size:8px; color:#5b6a82; margin:2px 0 0;
}

.rx-folio-box{
  text-align:right;
  font-family:'Inter',sans-serif;
  flex-shrink:0;
}
.rx-folio-box .lbl{
  font-size:7px; color:var(--rx-gold); font-weight:700; letter-spacing:.16em; text-transform:uppercase;
}
.rx-folio-box .num{
  font-family:'Montserrat',sans-serif;
  font-weight:900; font-size:12px; color: var(--rx-blue);
  letter-spacing:.05em;
}
.rx-folio-box .date{
  font-size:8px; color:#5b6a82; margin-top:2px;
}

/* PACIENTE */
.rx-pat{
  display:grid;
  grid-template-columns: 1.8fr 1fr 1fr;
  gap:3px 12px;
  padding: 4px 0 3px;
  border-bottom: 1px dashed var(--rx-line);
  font-size: 9px;
  flex-shrink: 0;
}
.rx-pat .row{ display:flex; gap:6px; align-items:baseline; min-width:0; }
.rx-pat .lab{
  font-size:7px; font-weight:700; color: var(--rx-gold);
  text-transform:uppercase; letter-spacing:.12em;
  white-space:nowrap;
}
.rx-pat .val{
  font-weight:600; color:var(--rx-ink); font-size:9px;
  border-bottom:1px solid var(--rx-line); flex:1; padding:0 2px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.rx-pat .val.diag{ color: var(--rx-blue); font-weight:700; }

/* CUERPO Rx */
.rx-body{
  display:grid;
  grid-template-columns: 34px 1fr;
  gap: 6px;
  padding: 4px 0 3px;
  align-content:start;
  flex: 1 1 auto;
  min-height: 80px;
}
.rx-symbol{
  font-family:'Playfair Display', serif;
  font-size:40px; font-weight:900;
  color: var(--rx-blue);
  line-height:.9;
  text-shadow: 1px 1px 0 var(--rx-gold);
  font-style:italic;
}
.rx-meds{
  display:flex; flex-direction:column;
  gap:3px;
  font-size: 9px;
  line-height:1.25;
}
.rx-med{
  padding: 2px 6px;
  border-left: 3px solid var(--rx-blue);
  background: linear-gradient(90deg, rgba(10,42,94,.04) 0%, transparent 60%);
  border-radius: 2px;
}
.rx-med .name{
  font-weight:800; font-size:10px; color: var(--rx-ink);
  letter-spacing:-.005em;
}
.rx-med .dos{
  font-size:9px; color:#3a4a66;
  margin-top:1px;
}
.rx-med .dos b{ color: var(--rx-blue); font-weight:700; }
.rx-ind{
  margin-top: 4px;
  font-size:8px; color:#3a4a66;
  font-style:italic;
  padding: 4px 6px;
  background: rgba(201,161,74,.08);
  border-radius:3px;
  border-left: 2px solid var(--rx-gold);
}
.rx-ind b{ font-style:normal; color: var(--rx-gold); text-transform:uppercase; font-size:7px; letter-spacing:.1em; }

/* FOOTER (firma + sello + qr) */
.rx-foot{
  display:grid;
  grid-template-columns: 1fr 1.2fr 60px;
  gap: 8px;
  align-items:end;
  padding-top: 4px;
  border-top: 1px solid var(--rx-line);
  flex-shrink: 0;
}
.rx-sign{
  text-align:center;
  font-size:8px;
  position:relative;
}
.rx-sign .line{
  height: 26px; border-bottom: 1px solid var(--rx-ink);
  margin-bottom: 2px;
  display:flex; align-items:flex-end; justify-content:center;
  position:relative;
}
.rx-sign .line::after{
  content:"Dr."; position:absolute; bottom:2px; left:50%;
  transform: translateX(-50%); font-family:'Playfair Display',cursive;
  font-style:italic; color: var(--rx-blue); opacity:.25; font-size:16px;
}
.rx-sign .doc-name{
  font-family:'Montserrat',sans-serif; font-weight:800; font-size:9px;
  color: var(--rx-blue); letter-spacing:.02em;
}
.rx-sign .doc-info{
  color:#5b6a82; font-size:7px; margin-top:1px; line-height:1.3;
}

.rx-stamp{
  text-align:center; font-size:8px;
}
.rx-stamp .seal{
  width:54px; height:54px; margin:0 auto;
  border:2px solid var(--rx-blue);
  border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:'Montserrat',sans-serif; font-weight:900;
  font-size:7px; color:var(--rx-blue); text-align:center;
  line-height:1.05; padding:4px;
  background: radial-gradient(circle, rgba(10,42,94,.05), transparent);
  position:relative;
  transform: rotate(-8deg);
}
.rx-stamp .seal::before{
  content:""; position:absolute; inset: 4px;
  border: 1px solid var(--rx-blue); border-radius:50%;
}
.rx-stamp .sucursal{
  margin-top:3px; font-size:7px; color:#5b6a82;
}

.rx-qr{
  display:flex; flex-direction:column; align-items:center; gap:2px;
}
.rx-qr canvas, .rx-qr img{ width: 54px; height: 54px; display:block; }
.rx-qr .qr-cap{ font-size:6px; color:#5b6a82; letter-spacing:.05em;}

/* Firma renderizada */
.rx-sign .rx-firma-img{
  position:absolute;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  max-height: 30px;
  max-width: 90%;
  object-fit: contain;
  pointer-events: none;
  z-index: 3;
}
.rx-sign:has(.rx-firma-img) .line::after{ display:none; }

/* ===== FIRMA MANUSCRITA EN EL EDITOR ===== */
.signature-wrap{
  display:flex; flex-direction:column; gap:10px;
}
.signature-box{
  position:relative;
  background: linear-gradient(180deg, #fdfdfd 0%, #f5f7fc 100%);
  border: 2px dashed #b8c4dc;
  border-radius: 12px;
  overflow:hidden;
  transition: border-color .2s;
}
.signature-box.has-signature{
  border-style: solid;
  border-color: var(--rx-blue);
  background: #fff;
}
.signature-box.drawing{
  border-color: var(--rx-blue-2);
  border-style: solid;
}
#sig-canvas{
  display:block;
  width:100%;
  height: 180px;
  cursor: crosshair;
  touch-action: none;
  -webkit-touch-callout: none;
  user-select: none;
}
.signature-overlay{
  position:absolute; inset:0;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  pointer-events:none;
  color: #b8c4dc;
  font-family:'Inter',sans-serif;
  text-align:center;
  transition: opacity .25s;
}
.signature-overlay i{
  font-size: 36px;
  margin-bottom: 8px;
  color: #d6dce8;
}
.signature-overlay span{
  font-size: 13px;
  letter-spacing: .04em;
}
.signature-box.has-signature .signature-overlay,
.signature-box.drawing .signature-overlay{ opacity:0; }

.signature-baseline{
  position:absolute; left: 8%; right: 8%; bottom: 28px;
  height: 1px; background: rgba(10,42,94,.18);
  pointer-events:none;
}
.signature-baseline::after{
  content: "Firma del médico"; position:absolute; left:50%;
  bottom:-16px; transform: translateX(-50%);
  font-size: 9px; font-family:'Inter',sans-serif;
  color: #8a98b3; letter-spacing: .15em; text-transform: uppercase;
  pointer-events:none;
}

.signature-tools{
  display:flex; gap:8px; flex-wrap:wrap; align-items:center;
}
.signature-tools .btn-sm{ padding:6px 12px; }
.signature-tools .quick-tpl{
  padding: 6px 10px; font-size: 12px;
}
.sig-status{
  display:inline-flex; align-items:center; gap:6px;
  font-size: 12px; font-weight:600;
  color: #b8c4dc;
  margin-left:auto;
}
.sig-status i{ font-size: 8px; }
.sig-status.saved{ color: #0d6c3c; }
.sig-status.drawing{ color: var(--rx-gold); }

.sig-hint{
  font-size: 12px; color: #5b6a82;
  margin: 4px 0 0; line-height: 1.5;
}
.sig-hint a{ color: var(--rx-blue-2); font-weight:600; }
.sig-hint i{ color: var(--rx-blue-2); margin-right:4px; }

@media(max-width: 540px){
  #sig-canvas{ height: 140px; }
  .signature-tools{ justify-content: stretch; }
  .signature-tools .btn-sm{ flex: 1; }
  .sig-status{ width: 100%; margin-left: 0; justify-content: center; }
}

/* ===== EXPORT BAR ===== */
.export-bar{
  display:flex; gap:10px; flex-wrap:wrap; justify-content:center;
  padding:14px; background:#fff; border-radius:14px;
  box-shadow: 0 2px 12px rgba(10,42,94,.06);
  border:1px solid var(--rx-line);
}

/* ===== PLANTILLAS ===== */
.tpl-grid{
  display:grid; grid-template-columns: repeat(auto-fill, minmax(260px,1fr));
  gap:14px; margin-top:14px;
}
.tpl-card{
  background:#fff; border:1px solid var(--rx-line); border-radius:14px;
  padding:14px; cursor:pointer; transition: all .2s;
}
.tpl-card:hover{
  transform:translateY(-3px); border-color: var(--rx-blue-2);
  box-shadow: 0 12px 30px rgba(10,42,94,.12);
}
.tpl-card h4{ margin:0 0 6px; color: var(--rx-blue); font-size:15px;}
.tpl-card p{ margin:0; color:#5b6a82; font-size:12px;}
.tpl-card .meds-count{
  display:inline-block; margin-top:8px; padding:4px 10px;
  background: rgba(30,78,163,.1); color: var(--rx-blue-2);
  border-radius:99px; font-size:11px; font-weight:700;
}

/* ===== BOTONES auxiliares ===== */
.btn-ghost{
  background:transparent; border:1px dashed var(--rx-line);
  color: var(--rx-blue); padding:8px 14px; border-radius:8px;
  cursor:pointer; font-family:'Inter',sans-serif; font-weight:600;
  font-size:13px;
  display:inline-flex; align-items:center; gap:6px;
  transition: all .2s;
}
.btn-ghost:hover{ background: rgba(10,42,94,.05); }

/* ===== RESPONSIVE ===== */
@media (max-width: 980px){
  .preview-wrap{ position:static; }
  .print-stage{ padding:12px; min-height: 500px; }
}
@media (max-width: 540px){
  .grid-2{ grid-template-columns: 1fr; }
  .export-bar .btn{ flex:1 1 calc(50% - 5px); }
  .print-stage{ padding:10px; min-height: 450px; }
}

/* ===========================================================
   IMPRESIÓN — Estilos solo para el caso "print directo de la
   página principal" (fallback). El flujo principal usa popup
   con su propio CSS embebido (buildPrintHTML).
   =========================================================== */
.print-only{ display:none !important; }

@page{
  size: letter;
  margin: 0;
}

@media print{
  *{ -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  html, body{
    margin:0 !important; padding:0 !important;
    background:#fff !important;
  }
  body.recetas-body{ background:#fff !important; }
  .no-print{ display:none !important; }
  .print-only{ display:block !important; }
  #print-area{
    width: 8.5in; height: 11in;
    margin: 0; padding: 0;
    background: #fff;
  }
}
