:root, :root[data-theme="oscuro-cyan"] {
  --bg:#020617; --drawer-bg:#0b1120; --surface:#0f172a; --surface-2:#1e293b; --border:#1e293b;
  --input-bg:#020617; --input-border:#334155; --text:#f1f5f9; --muted:#94a3b8;
  --accent:#06b6d4; --accent-contrast:#020617; --green:#10b981; --green-contrast:#022c22; --red:#ef4444;
  --mod-text:#4ade80; --mod-bg:rgba(34,197,94,0.14); --gemini-grad:linear-gradient(135deg,#0891b2,#2563eb);
  --voice-bg:rgba(6,182,212,.14); --voice-text:#67e8f9; --voice-border:rgba(6,182,212,.38);
  --audio-bg:rgba(99,102,241,.14); --audio-text:#a5b4fc; --audio-border:rgba(99,102,241,.38);
  --tac-bg:rgba(6,182,212,.16); --tac-text:#22d3ee; --tac-border:rgba(6,182,212,.45); --tac-solid:#06b6d4; --tac-contrast:#020617;
  --eco-bg:rgba(168,85,247,.16); --eco-text:#c084fc; --eco-border:rgba(168,85,247,.45); --eco-solid:#a855f7; --eco-contrast:#ffffff;
  --rx-bg:rgba(245,158,11,.16); --rx-text:#fbbf24; --rx-border:rgba(245,158,11,.45); --rx-solid:#f59e0b; --rx-contrast:#1c1917;
  --vasc-bg:rgba(244,63,94,.18); --vasc-text:#fda4af; --vasc-border:rgba(244,63,94,.5); --vasc-solid:#f43f5e; --vasc-contrast:#ffffff;
  --ok-bg:rgba(16,185,129,.15); --ok-text:#34d399;
}
:root[data-theme="oscuro-ambar"] {
  --bg:#09090b; --drawer-bg:#121215; --surface:#18181b; --surface-2:#27272a; --border:#27272a;
  --input-bg:#09090b; --input-border:#3f3f46; --text:#fafaf9; --muted:#a1a1aa;
  --accent:#f59e0b; --accent-contrast:#1c1917; --green:#10b981; --green-contrast:#022c22; --red:#ef4444;
  --mod-text:#4ade80; --mod-bg:rgba(34,197,94,0.14); --gemini-grad:linear-gradient(135deg,#d97706,#ea580c);
  --voice-bg:rgba(245,158,11,.14); --voice-text:#fcd34d; --voice-border:rgba(245,158,11,.38);
  --audio-bg:rgba(249,115,22,.14); --audio-text:#fdba74; --audio-border:rgba(249,115,22,.38);
  --tac-bg:rgba(56,189,248,.16); --tac-text:#7dd3fc; --tac-border:rgba(56,189,248,.45); --tac-solid:#38bdf8; --tac-contrast:#082f49;
  --eco-bg:rgba(192,132,252,.16); --eco-text:#d8b4fe; --eco-border:rgba(192,132,252,.45); --eco-solid:#a855f7; --eco-contrast:#ffffff;
  --rx-bg:rgba(245,158,11,.16); --rx-text:#fbbf24; --rx-border:rgba(245,158,11,.45); --rx-solid:#f59e0b; --rx-contrast:#1c1917;
  --vasc-bg:rgba(244,63,94,.18); --vasc-text:#fda4af; --vasc-border:rgba(244,63,94,.5); --vasc-solid:#f43f5e; --vasc-contrast:#ffffff;
  --ok-bg:rgba(16,185,129,.15); --ok-text:#34d399;
}
:root[data-theme="oscuro-esmeralda"] {
  --bg:#03110d; --drawer-bg:#061b15; --surface:#09241c; --surface-2:#11382c; --border:#134033;
  --input-bg:#03110d; --input-border:#1c5745; --text:#ecfdf5; --muted:#86efac;
  --accent:#10b981; --accent-contrast:#022c22; --green:#22c55e; --green-contrast:#052e16; --red:#ef4444;
  --mod-text:#4ade80; --mod-bg:rgba(34,197,94,0.16); --gemini-grad:linear-gradient(135deg,#059669,#0d9488);
  --voice-bg:rgba(16,185,129,.15); --voice-text:#6ee7b7; --voice-border:rgba(16,185,129,.4);
  --audio-bg:rgba(20,184,166,.15); --audio-text:#5eead4; --audio-border:rgba(20,184,166,.4);
  --tac-bg:rgba(56,189,248,.16); --tac-text:#7dd3fc; --tac-border:rgba(56,189,248,.45); --tac-solid:#38bdf8; --tac-contrast:#082f49;
  --eco-bg:rgba(168,85,247,.18); --eco-text:#d8b4fe; --eco-border:rgba(168,85,247,.45); --eco-solid:#a855f7; --eco-contrast:#ffffff;
  --rx-bg:rgba(250,204,21,.16); --rx-text:#fde047; --rx-border:rgba(250,204,21,.45); --rx-solid:#eab308; --rx-contrast:#1c1917;
  --vasc-bg:rgba(244,63,94,.2); --vasc-text:#fda4af; --vasc-border:rgba(244,63,94,.5); --vasc-solid:#f43f5e; --vasc-contrast:#ffffff;
  --ok-bg:rgba(16,185,129,.2); --ok-text:#6ee7b7;
}
:root[data-theme="claro-azul"] {
  --bg:#e2e8f0; --drawer-bg:#f8fafc; --surface:#ffffff; --surface-2:#f1f5f9; --border:#cbd5e1;
  --input-bg:#ffffff; --input-border:#94a3b8; --text:#0f172a; --muted:#475569;
  --accent:#0284c7; --accent-contrast:#ffffff; --green:#059669; --green-contrast:#ffffff; --red:#dc2626;
  --mod-text:#15803d; --mod-bg:rgba(22,163,74,0.13); --gemini-grad:linear-gradient(135deg,#0284c7,#2563eb);
  --voice-bg:rgba(2,132,199,.1); --voice-text:#0369a1; --voice-border:rgba(2,132,199,.35);
  --audio-bg:rgba(79,70,229,.1); --audio-text:#4338ca; --audio-border:rgba(79,70,229,.35);
  --tac-bg:rgba(2,132,199,.13); --tac-text:#0369a1; --tac-border:rgba(2,132,199,.45); --tac-solid:#0284c7; --tac-contrast:#ffffff;
  --eco-bg:rgba(124,58,237,.13); --eco-text:#6d28d9; --eco-border:rgba(124,58,237,.45); --eco-solid:#7c3aed; --eco-contrast:#ffffff;
  --rx-bg:rgba(217,119,6,.14); --rx-text:#b45309; --rx-border:rgba(217,119,6,.45); --rx-solid:#d97706; --rx-contrast:#ffffff;
  --vasc-bg:rgba(225,29,72,.13); --vasc-text:#be123c; --vasc-border:rgba(225,29,72,.45); --vasc-solid:#e11d48; --vasc-contrast:#ffffff;
  --ok-bg:rgba(5,150,105,.12); --ok-text:#047857;
}
:root[data-theme="claro-papel"] {
  --bg:#ede6d8; --drawer-bg:#f8f5ee; --surface:#fffdf9; --surface-2:#f3ede1; --border:#d6ccba;
  --input-bg:#fffdf9; --input-border:#b8ac96; --text:#1c1917; --muted:#57534e;
  --accent:#4f46e5; --accent-contrast:#ffffff; --green:#0d9488; --green-contrast:#ffffff; --red:#dc2626;
  --mod-text:#15803d; --mod-bg:rgba(22,163,74,0.13); --gemini-grad:linear-gradient(135deg,#4f46e5,#0284c7);
  --voice-bg:rgba(79,70,229,.1); --voice-text:#4338ca; --voice-border:rgba(79,70,229,.35);
  --audio-bg:rgba(13,148,136,.1); --audio-text:#0f766e; --audio-border:rgba(13,148,136,.35);
  --tac-bg:rgba(2,132,199,.13); --tac-text:#0369a1; --tac-border:rgba(2,132,199,.45); --tac-solid:#0284c7; --tac-contrast:#ffffff;
  --eco-bg:rgba(124,58,237,.13); --eco-text:#6d28d9; --eco-border:rgba(124,58,237,.45); --eco-solid:#7c3aed; --eco-contrast:#ffffff;
  --rx-bg:rgba(180,83,9,.14); --rx-text:#b45309; --rx-border:rgba(180,83,9,.45); --rx-solid:#d97706; --rx-contrast:#ffffff;
  --vasc-bg:rgba(225,29,72,.13); --vasc-text:#be123c; --vasc-border:rgba(225,29,72,.45); --vasc-solid:#e11d48; --vasc-contrast:#ffffff;
  --ok-bg:rgba(13,148,136,.12); --ok-text:#0f766e;
}
* { box-sizing:border-box; margin:0; padding:0; -webkit-tap-highlight-color:transparent; }
body { font-family:system-ui,-apple-system,'Segoe UI',Roboto,sans-serif; background:var(--bg); color:var(--text); font-size:16px; line-height:1.5; min-height:100vh; display:flex; flex-direction:column; transition:background .18s,color .18s; }
.app-shell { display:flex; flex-direction:column; min-height:100vh; max-width:1500px; width:100%; margin:0 auto; }
.lock-screen { position:fixed; inset:0; z-index:200; background:var(--bg); display:flex; align-items:center; justify-content:center; padding:20px; }
.lock-card { background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:28px 22px; width:100%; max-width:380px; display:flex; flex-direction:column; gap:14px; text-align:center; box-shadow:0 12px 32px rgba(0,0,0,.35); }
.lock-icon { font-size:38px; } .lock-card h2 { font-size:20px; } .lock-card p { font-size:14px; color:var(--muted); }
.lock-error { font-size:14px; color:var(--red); font-weight:600; min-height:20px; }
.topbar { display:flex; align-items:center; justify-content:space-between; padding:12px 14px; background:var(--surface); border-bottom:1px solid var(--border); gap:10px; flex-wrap:wrap; }
.brand { display:flex; align-items:center; gap:10px; }
.brand h1 { font-size:18px; font-weight:700; line-height:1.15; }
.brand-dot { width:11px; height:11px; border-radius:50%; background:var(--accent); box-shadow:0 0 8px var(--accent); flex-shrink:0; }
.brand-meta { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:3px; }
.user-pill { font-size:12px; padding:2px 8px; border-radius:99px; font-weight:600; background:var(--surface-2); color:var(--accent); border:1px solid var(--accent); }
.status-pill { font-size:12px; padding:2px 8px; border-radius:99px; font-weight:600; }
.status-pill.ok { background:var(--ok-bg); color:var(--ok-text); border:1px solid var(--ok-text); }
.status-pill.warn { background:var(--surface-2); color:var(--muted); border:1px solid var(--border); }
.topbar-actions { display:flex; gap:6px; }
.drawer { background:var(--drawer-bg); border-bottom:1px solid var(--border); padding:14px; display:flex; flex-direction:column; gap:12px; }
.drawer-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:12px; }
.drawer-footer { display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap; padding-top:4px; }
.main-grid { flex:1; display:flex; flex-direction:column; gap:12px; padding:12px; }
@media (min-width:820px) {
  .main-grid { display:grid; grid-template-columns:420px 1fr; grid-template-rows:auto 1fr; gap:14px; padding:14px; }
  .template-card { grid-column:1; grid-row:1; } .dictation-card { grid-column:1; grid-row:2; } .report-card { grid-column:2; grid-row:1/span 2; }
}
.card { background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:14px; display:flex; flex-direction:column; gap:10px; }
.template-card[data-mod="TAC"], .report-card[data-mod="TAC"], .preview-box[data-mod="TAC"] { border-left:5px solid var(--tac-solid); }
.template-card[data-mod="ECO"], .report-card[data-mod="ECO"], .preview-box[data-mod="ECO"] { border-left:5px solid var(--eco-solid); }
.template-card[data-mod="RX"], .report-card[data-mod="RX"], .preview-box[data-mod="RX"] { border-left:5px solid var(--rx-solid); }
.template-card[data-mod="VASC"], .report-card[data-mod="VASC"], .preview-box[data-mod="VASC"] { border-left:5px solid var(--vasc-solid); }
#template-select[data-mod="TAC"] { border-color:var(--tac-border); } #template-select[data-mod="ECO"] { border-color:var(--eco-border); }
#template-select[data-mod="RX"] { border-color:var(--rx-border); } #template-select[data-mod="VASC"] { border-color:var(--vasc-border); }
.report-card { flex:1; min-height:360px; }
.card-header { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.section-title { font-size:15px; font-weight:600; }
input[type="text"], input[type="password"], input[type="date"], select, textarea { width:100%; background:var(--input-bg); color:var(--text); border:1px solid var(--input-border); border-radius:9px; padding:10px 12px; font-family:inherit; font-size:15.5px; }
input:focus, select:focus, textarea:focus { outline:none; border-color:var(--accent); }
textarea { resize:vertical; line-height:1.6; }
.rich-editor { width:100%; background:var(--input-bg); color:var(--text); border:1px solid var(--input-border); border-radius:9px; padding:12px 14px; font-family:inherit; white-space:pre-wrap; word-wrap:break-word; overflow-y:auto; outline:none; }
.rich-editor:focus { border-color:var(--accent); }
.rich-editor:empty:before { content:attr(data-placeholder); color:var(--muted); pointer-events:none; }
#report-editor { flex:1; min-height:280px; font-size:17px; line-height:1.65; }
.ai-mod { color:var(--mod-text); background:var(--mod-bg); border-radius:4px; padding:0 3px; font-weight:500; }
.report-footer-actions { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.patient-row { display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:8px; }
.patient-row input { padding:8px 10px; font-size:14px; }
.search-wrap { position:relative; display:flex; align-items:center; }
.search-wrap input { padding-right:38px; }
.search-clear { position:absolute; right:6px; background:transparent; border:none; color:var(--muted); font-size:16px; font-weight:700; cursor:pointer; padding:6px 8px; }
.field-group { display:flex; flex-direction:column; gap:5px; } .field-group label { font-size:13.5px; color:var(--muted); font-weight:500; }
.compact-select { width:auto; padding:6px 10px; font-size:14px; }
.row-gap { display:flex; align-items:center; gap:7px; flex-wrap:wrap; } .row-nowrap { display:flex; align-items:center; gap:7px; flex-wrap:nowrap; }
.row-between { flex-direction:row !important; align-items:center; justify-content:space-between; } .flex-1 { flex:1; min-width:0; }
.btn { border:none; border-radius:9px; padding:10px 14px; min-height:40px; font-size:14px; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:6px; }
.btn:disabled { opacity:0.45; cursor:not-allowed; }
.btn-sm { padding:8px 12px; min-height:36px; font-size:13.5px; } .btn-xs { padding:6px 10px; min-height:34px; font-size:13px; border-radius:7px; }
.btn-primary { background:var(--accent); color:var(--accent-contrast); } .btn-success { background:var(--green); color:var(--green-contrast); }
.btn-outline { background:var(--surface-2); color:var(--text); border:1px solid var(--input-border); }
.btn-ghost { background:transparent; color:var(--muted); }
.btn-gemini { width:100%; padding:13px; min-height:46px; font-size:15.5px; color:#fff; background:var(--gemini-grad); }
.voice-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.btn-voice { background:var(--voice-bg); color:var(--voice-text); border:1px solid var(--voice-border); }
.btn-audio { background:var(--audio-bg); color:var(--audio-text); border:1px solid var(--audio-border); }
.btn.recording { background:rgba(239,68,68,.2)!important; color:#ef4444!important; border-color:var(--red)!important; animation:pulse 1.4s infinite; }
@keyframes pulse { 0% { box-shadow:0 0 0 0 rgba(239,68,68,.55); } 70% { box-shadow:0 0 0 7px rgba(239,68,68,0); } 100% { box-shadow:0 0 0 0 rgba(239,68,68,0); } }
.icon-btn { background:var(--surface-2); border:1px solid var(--input-border); color:var(--text); border-radius:8px; min-width:38px; height:38px; padding:0 8px; font-size:14px; font-weight:700; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; flex-shrink:0; }
.icon-btn.danger { color:var(--red); } .icon-btn.confirming { background:var(--red); color:#fff; border-color:var(--red); }
.btn-link { background:none; border:none; color:var(--muted); font-size:13.5px; cursor:pointer; padding:4px; } .danger-text { color:var(--red); }
.seg-control { display:flex; flex-wrap:wrap; gap:5px; background:var(--surface-2); padding:4px; border-radius:9px; border:1px solid var(--border); flex:1; }
.seg-btn { background:transparent; border:1px solid transparent; color:var(--muted); font-size:13px; font-weight:700; padding:6px 10px; border-radius:6px; cursor:pointer; }
.seg-btn.active { background:var(--accent); color:var(--accent-contrast); }
.seg-btn[data-mod="TAC"] { color:var(--tac-text); background:var(--tac-bg); border-color:var(--tac-border); } .seg-btn[data-mod="TAC"].active { background:var(--tac-solid); color:var(--tac-contrast); border-color:var(--tac-solid); }
.seg-btn[data-mod="ECO"] { color:var(--eco-text); background:var(--eco-bg); border-color:var(--eco-border); } .seg-btn[data-mod="ECO"].active { background:var(--eco-solid); color:var(--eco-contrast); border-color:var(--eco-solid); }
.seg-btn[data-mod="RX"] { color:var(--rx-text); background:var(--rx-bg); border-color:var(--rx-border); } .seg-btn[data-mod="RX"].active { background:var(--rx-solid); color:var(--rx-contrast); border-color:var(--rx-solid); }
.seg-btn[data-mod="VASC"] { color:var(--vasc-text); background:var(--vasc-bg); border-color:var(--vasc-border); } .seg-btn[data-mod="VASC"].active { background:var(--vasc-solid); color:var(--vasc-contrast); border-color:var(--vasc-solid); }
.badge { font-size:12px; font-weight:700; padding:3px 9px; border-radius:6px; }
.badge.tac { background:var(--tac-bg); color:var(--tac-text); border:1px solid var(--tac-border); }
.badge.eco { background:var(--eco-bg); color:var(--eco-text); border:1px solid var(--eco-border); }
.badge.rx { background:var(--rx-bg); color:var(--rx-text); border:1px solid var(--rx-border); }
.badge.vasc { background:var(--vasc-bg); color:var(--vasc-text); border:1px solid var(--vasc-border); }
.apply-bar { display:flex; flex-direction:column; gap:8px; }
.radio-group { display:flex; gap:16px; font-size:14px; color:var(--muted); } .radio-group label { display:flex; align-items:center; gap:6px; cursor:pointer; }
.audio-box { display:flex; align-items:center; justify-content:space-between; gap:8px; background:var(--surface-2); padding:8px; border-radius:9px; border:1px solid var(--border); }
.audio-box audio { height:34px; flex:1; }
.modal { position:fixed; inset:0; background:rgba(0,0,0,.78); display:flex; align-items:center; justify-content:center; padding:14px; z-index:50; }
.modal-box { background:var(--surface); border:1px solid var(--border); border-radius:14px; width:100%; max-width:580px; max-height:92vh; overflow-y:auto; padding:18px; display:flex; flex-direction:column; gap:12px; color:var(--text); }
.modal-actions { display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; }
.preview-modal { padding:10px; z-index:80; }
.preview-box { width:100%; max-width:1050px; height:94vh; max-height:94vh; padding:16px; overflow-y:auto; }
.preview-hint { font-size:13.5px; color:var(--muted); background:var(--surface-2); padding:8px 12px; border-radius:8px; border-left:3px solid var(--mod-text); }
#preview-editor { flex:1; min-height:180px; font-size:19px; line-height:1.65; padding:16px; }
.preview-actions { justify-content:space-between; padding-top:4px; }
.toast { position:fixed; bottom:16px; left:50%; transform:translateX(-50%); min-width:280px; max-width:92vw; padding:12px 18px; border-radius:10px; font-size:14.5px; font-weight:500; z-index:250; text-align:center; border:1px solid; box-shadow:0 8px 20px rgba(0,0,0,.3); }
.toast.info { background:#0f172a; border-color:#06b6d4; color:#cffafe; }
.toast.success { background:#022c22; border-color:#10b981; color:#d1fae5; }
.toast.error { background:#450a0a; border-color:#ef4444; color:#fee2e2; }
.hidden { display:none !important; }
@media print {
  body * { visibility:hidden; }
  #print-area, #print-area * { visibility:visible; }
  #print-area { position:absolute; left:0; top:0; width:100%; padding:20px; background:white !important; color:black !important; border:none !important; }
  #print-area input, #report-editor { background:white !important; color:black !important; border:none !important; height:auto !important; overflow:visible !important; font-size:12pt !important; }
  .ai-mod { color:black !important; background:transparent !important; font-weight:normal !important; padding:0 !important; }
  .no-print { display:none !important; }
}