:root{--blue:#2563eb;--blue-d:#1d4ed8;--blue-soft:#eff4ff;--navy:#0b1f4d;--navy-2:#13306f;--ink:#0f172a;--mut:#5b6b82;--line:#e1e8f3;--ok:#15803d;--ok-bg:#e8f8ef;--err:#b91c1c;--err-bg:#fdeeee;--warn:#92400e;--warn-bg:#fff6dd;--bg:#f3f6fb;--card:#fff;--shadow:0 1px 2px #0b1f4d0d,0 6px 20px #0b1f4d0f;--r:14px}
*{box-sizing:border-box}
body{margin:0;font:16px/1.5 system-ui,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}
h1{font-size:1.55rem;line-height:1.2;margin:0 0 .3rem;color:var(--ink);letter-spacing:-.01em}h2{font-size:1.1rem;margin:.1rem 0 1rem;letter-spacing:-.005em}h3{font-size:1rem;margin:0}
a{color:var(--blue-d)}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow)}
.card+.card{margin-top:16px}.card>button{margin-top:14px}
button,.btn{font:inherit;font-weight:600;border-radius:10px;border:1px solid var(--blue);background:var(--blue);color:#fff;padding:9px 16px;cursor:pointer;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,border-color .15s,box-shadow .15s}
button:hover:not(:disabled),.btn:hover{background:var(--blue-d);border-color:var(--blue-d)}
button.sec,.btn.sec{background:#fff;color:var(--blue-d);border-color:#c9d6ee}button.sec:hover:not(:disabled),.btn.sec:hover{background:var(--blue-soft);border-color:var(--blue)}
button.danger{background:var(--err);border-color:var(--err)}button.danger:hover:not(:disabled){background:#991b1b;border-color:#991b1b}
button:disabled{opacity:.45;cursor:not-allowed}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}
.opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;margin:0 0 10px;background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:500;padding:14px 16px}
.opt strong{font-weight:650}.opt:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft);color:var(--ink)}.opt span{color:var(--mut);font-size:.9rem;font-weight:400}
.msg{padding:10px 14px;border-radius:10px;margin:10px 0;background:var(--blue-soft);color:#1e3a8a}.err{background:var(--err-bg);color:var(--err)}.ok{background:var(--ok-bg);color:var(--ok)}.warn{background:var(--warn-bg);color:var(--warn)}
label{display:block;margin:12px 0 4px;font-weight:600;font-size:.92rem}
input,select,textarea{width:100%;font:inherit;padding:10px 12px;border:1px solid #cfdaed;border-radius:10px;min-height:44px;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{border-color:var(--blue)}
input[type=checkbox]{width:auto;min-height:0;margin-right:8px;accent-color:var(--blue)}
.row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.row.nomargin{margin-top:0}
.grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.grid b{text-align:center;font-size:.8rem;color:var(--mut)}
.day{padding:8px 0;min-height:42px;background:#fff;color:var(--ink);border:1px solid var(--line);font-weight:500}.day.av{background:var(--ok-bg);border-color:#86efac;color:var(--ok);font-weight:700}.day.av:hover:not(:disabled){background:#d3f3df;border-color:#4ade80;color:var(--ok)}.day:disabled{background:#f1f5f9;color:#94a3b8;border-color:#f1f5f9}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px}.nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
table{width:100%;border-collapse:collapse;font-size:.92rem}th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);font-weight:700}th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line)}tbody tr:last-child td,table>tr:last-child td{border-bottom:0}
.tag{display:inline-block;padding:2px 10px;border-radius:99px;font-size:.78rem;font-weight:600;background:var(--blue-soft);color:var(--blue-d);white-space:nowrap}
.tag.confirmed,.tag.attended{background:var(--ok-bg);color:var(--ok)}.tag.pending,.tag.rescheduled{background:var(--warn-bg);color:var(--warn)}.tag.cancelled_patient,.tag.cancelled_clinic,.tag.no_show,.tag.expired{background:var(--err-bg);color:var(--err)}
.item{border:1px solid var(--line);border-radius:12px;padding:14px;margin:0 0 10px;background:#fff}.item>span{display:block;color:var(--mut);font-size:.9rem}.item .row{margin-top:10px}
.sub{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
td input[type=time]{width:auto;min-width:96px;padding:6px}td label{display:flex;align-items:center;margin:0;font-weight:600}
.inline{display:flex;align-items:center;gap:10px;margin:6px 0}.inline input[type=number]{width:96px}.inline label{margin:0;font-weight:400}
.time{display:inline-flex;align-items:center;gap:2px}.time select{width:auto;min-width:62px;min-height:40px;padding:6px}[hidden]{display:none!important}
.sm{min-height:34px;padding:4px 12px;font-size:.85rem}.mut{color:var(--mut);font-size:.85rem}.scroll{overflow-x:auto}.nomargin{margin:0}.pre{white-space:pre-wrap}
.field-err{color:var(--err);margin:4px 0 0;font-size:.9rem}input[aria-invalid=true],select[aria-invalid=true]{border-color:var(--err);background:var(--err-bg)}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.kpi{background:var(--blue-soft);border-radius:12px;padding:12px;color:var(--mut);font-size:.85rem}.kpi b{font-size:1.4rem;display:block;color:var(--ink)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ===== Páginas públicas (reserva, gestión, portal, restablecer) ===== */
body.pub{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#e6efff 0,var(--bg) 280px)}
.pubhead{background:var(--navy);color:#fff}.pubhead .wrap{max-width:760px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:center;gap:10px;font-weight:700;letter-spacing:-.01em}.logo{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,#60a5fa,#2563eb);color:#fff;font-weight:800}
.pubhead a{color:#cfe0ff;font-size:.92rem;text-decoration:none;font-weight:600;padding:8px 4px}.pubhead a:hover{color:#fff;text-decoration:underline}
body.pub main{width:100%;max-width:760px;margin:0 auto;padding:24px 16px 40px;flex:1}
body.pub main>h1{color:var(--navy);font-size:1.75rem}.lead{color:var(--mut);margin:0 0 18px}
.pubfoot{text-align:center;color:var(--mut);font-size:.82rem;padding:18px 16px 28px}
.steps{display:flex;gap:6px;margin:0 0 18px}.steps span{flex:1;height:6px;border-radius:99px;background:#dbe5f6}.steps span.done{background:#93b4f5}.steps span.on{background:var(--blue)}
.steplabel{color:var(--mut);font-size:.82rem;font-weight:600;margin:0 0 4px;text-transform:uppercase;letter-spacing:.05em}
body.pub .card{padding:22px}

/* ===== Panel de administración ===== */
body.admin{background:var(--bg)}
.layout{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh}
.side{background:linear-gradient(180deg,var(--navy) 0,#0a1a42 100%);color:#c3d0ea;padding:18px 12px;position:sticky;top:0;height:100vh;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.side .brand{color:#fff;padding:4px 10px 14px;font-size:1.1rem}
.side .grp{margin-top:8px}
.side .gh{width:100%;justify-content:space-between;background:transparent;border:0;color:#7f93bd;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;min-height:32px;padding:4px 10px;border-radius:8px}
.side .gh:hover:not(:disabled){background:#ffffff0f;color:#c3d0ea}.side .gh .ic{width:14px;height:14px;transition:transform .15s}.side .gh[aria-expanded=false] .ic{transform:rotate(-90deg)}
.side .nv{width:100%;justify-content:flex-start;background:transparent;border:0;color:#c3d0ea;font-weight:500;padding:9px 12px;border-radius:10px;min-height:42px;position:relative}
.side .nv:hover:not(:disabled){background:#ffffff14;color:#fff}.side .nv.act{background:var(--blue);color:#fff;font-weight:650;box-shadow:0 4px 14px #2563eb55}
.side .nv .ic{opacity:.9}
.side .foot{margin-top:auto;padding:12px 10px 4px;font-size:.75rem;color:#7f93bd}
.mainwrap{min-width:0;display:flex;flex-direction:column}
.top{display:flex;align-items:center;gap:12px;padding:12px 24px;background:#fff;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.top .menu{display:none;background:#fff;color:var(--ink);border-color:var(--line);padding:8px;min-height:40px;width:40px}
.top form{flex:1;max-width:460px;position:relative;margin:0}.top form .ic{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--mut);width:18px;height:18px;pointer-events:none}
.top form input{padding-left:38px;background:#f3f6fb;border-color:transparent;min-height:42px;border-radius:12px}.top form input:focus{background:#fff;border-color:var(--blue)}
.top .sp{flex:1}
.iconbtn{background:#fff;color:var(--ink);border:1px solid var(--line);padding:0;width:42px;min-height:42px;position:relative;border-radius:12px}.iconbtn:hover:not(:disabled){background:var(--blue-soft);border-color:#c9d6ee}
.badge{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;border-radius:99px;background:var(--err);color:#fff;font-size:.72rem;font-weight:700;display:grid;place-items:center;padding:0 5px;border:2px solid #fff}
.me{display:flex;align-items:center;gap:10px;background:transparent;color:var(--ink);border:0;padding:4px 8px;border-radius:12px;min-height:46px;text-align:left}.me:hover:not(:disabled){background:var(--blue-soft)}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#60a5fa,#1d4ed8);color:#fff;display:grid;place-items:center;font-weight:700;flex:none}
.me .who{display:flex;flex-direction:column;line-height:1.2;font-weight:650;font-size:.92rem}.me .who small{font-weight:500;color:var(--mut);font-size:.78rem}
.content{padding:24px;max-width:1280px;width:100%}
.content>.msg{margin-top:0}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:18px}.pagehead p{margin:0;color:var(--mut)}
.auth{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(160deg,var(--navy) 0,var(--navy-2) 55%,#1f4fbf 100%)}
.auth .box{width:100%;max-width:400px}.auth .brand{color:#fff;justify-content:center;margin-bottom:18px;font-size:1.3rem}.auth .card{padding:26px}

.dash{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.dash>*{margin:0!important;min-width:0}
.c3{grid-column:span 3}.c4{grid-column:span 4}.c5{grid-column:span 5}.c7{grid-column:span 7}.c8{grid-column:span 8}.c12{grid-column:span 12}
.stat{display:flex;gap:14px;align-items:center;padding:18px}.stat .ico{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;flex:none}.stat .ico .ic{width:24px;height:24px}
.ico.b{background:#e3ecff;color:#2563eb}.ico.g{background:#dcf5e6;color:#15803d}.ico.o{background:#ffefd5;color:#c2410c}.ico.p{background:#efe6ff;color:#7c3aed}.ico.r{background:#fde4e4;color:#b91c1c}.ico.t{background:#d9f3f5;color:#0e7490}
.stat .num{font-size:1.9rem;font-weight:750;line-height:1.1;letter-spacing:-.02em}.stat .lbl{color:var(--mut);font-size:.86rem;font-weight:600}
.delta{display:inline-block;font-size:.78rem;font-weight:700;border-radius:99px;padding:1px 8px;margin-top:4px;background:#eef2f7;color:var(--mut)}.delta.up{background:var(--ok-bg);color:var(--ok)}.delta.down{background:var(--err-bg);color:var(--err)}
.panel h2{display:flex;justify-content:space-between;align-items:center;gap:8px}.panel h2 small{font-weight:500;color:var(--mut);font-size:.8rem}
.chart{width:100%;height:auto;display:block}.chart .gl{stroke:#e6edf7;stroke-width:1}.chart .ax{fill:var(--mut);font-size:11px;font-family:inherit}.chart .ln{fill:none;stroke:var(--blue);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.chart .ar{fill:#2563eb22;stroke:none}.chart .pt{fill:#fff;stroke:var(--blue);stroke-width:2.5}
.donutwrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center}.donut{width:170px;height:170px;flex:none}.donut circle{fill:none;stroke-width:6}.donut .bg{stroke:#eaf0f9}.donut .num{font-size:7px;font-weight:700;fill:var(--ink)}.donut .lbl{font-size:3px;fill:var(--mut)}
.s-confirmed{stroke:#22a55b}.s-pending{stroke:#f59e0b}.s-attended{stroke:#2563eb}.s-cancelled{stroke:#ef4444}.s-no_show{stroke:#8b5cf6}
.legend{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:.9rem}.legend li{display:flex;align-items:center;gap:8px}.legend i{width:10px;height:10px;border-radius:3px;flex:none}.legend b{margin-left:auto;padding-left:14px}
.l-confirmed{background:#22a55b}.l-pending{background:#f59e0b}.l-attended{background:#2563eb}.l-cancelled{background:#ef4444}.l-no_show{background:#8b5cf6}
.acts{list-style:none;margin:0;padding:0;display:grid;gap:14px}.acts li{display:flex;gap:12px;align-items:flex-start}.acts .ico{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none}.acts .ico .ic{width:17px;height:17px}.acts .t{font-size:.92rem;font-weight:600;line-height:1.3}.acts .w{font-size:.8rem;color:var(--mut)}
.quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px}
.quick button{flex-direction:column;gap:8px;background:#fff;color:var(--ink);border:1px solid var(--line);padding:16px 8px;min-height:92px;font-size:.88rem;font-weight:600;text-align:center}
.quick button .ico{width:44px;height:44px;border-radius:14px;display:grid;place-items:center}.quick button:hover:not(:disabled){background:var(--blue-soft);border-color:#c9d6ee;box-shadow:var(--shadow)}
.promo{background:linear-gradient(135deg,var(--navy) 0,#1d4ed8 100%);color:#fff;border:0;display:flex;flex-direction:column;gap:10px;justify-content:center}
.promo h2{color:#fff;margin:0}.promo p{margin:0;color:#dbe7ff;font-size:.92rem}.promo .chs{display:grid;gap:6px;margin:4px 0}.promo .ch{display:flex;justify-content:space-between;gap:10px;background:#ffffff1f;border-radius:10px;padding:8px 12px;font-size:.9rem}.promo .ch b{font-weight:700}
.promo button{background:#fff;color:var(--navy);border-color:#fff;align-self:flex-start}.promo button:hover:not(:disabled){background:#e6efff;border-color:#e6efff}
.empty{color:var(--mut);margin:0;padding:8px 0}

@media (max-width:1100px){.c3{grid-column:span 6}.c4,.c5,.c7,.c8{grid-column:span 12}}
@media (max-width:900px){
  .layout{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;left:0;top:0;bottom:0;width:272px;z-index:20;transform:translateX(-102%);transition:transform .2s;box-shadow:0 0 40px #0006}
  .layout.open .side{transform:none}
  .scrim,.scrim:hover:not(:disabled){display:none;position:fixed;inset:0;background:#0b1f4d80;border-color:transparent;z-index:15;border:0;border-radius:0;min-height:0}.layout.open .scrim,.layout.open .scrim:hover:not(:disabled){display:block}
  .top{padding:10px 14px}.top .menu{display:inline-flex}.me .who{display:none}.content{padding:16px 14px}
}
@media (max-width:560px){.c3{grid-column:span 12}.top form{display:none}.top .sp{display:block}.donut{width:150px;height:150px}.content{padding:14px 12px}.card{padding:16px}}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}


/* ===== Teléfono con país, enlaces de mapa ===== */
.phone{display:flex;align-items:stretch}
.phone select.cc{width:auto;min-width:88px;flex:none;border-top-right-radius:0;border-bottom-right-radius:0;border-right:0;background:#f3f6fb;padding-right:6px;cursor:pointer}
.phone input{border-top-left-radius:0;border-bottom-left-radius:0;flex:1;min-width:0}
.phone:focus-within select.cc,.phone:focus-within input{border-color:var(--blue)}
.opt-row{display:flex;gap:8px;align-items:stretch;margin:0 0 10px}.opt-row .opt{margin:0;flex:1;min-width:0}
a.maps{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:var(--blue-d);font-weight:600;font-size:.85rem;text-decoration:none;border:1px solid #c9d6ee;border-radius:10px;padding:4px 12px;background:#fff;white-space:nowrap;min-height:34px}
a.maps:hover{background:var(--blue-soft);border-color:var(--blue)}a.maps .ic{width:16px;height:16px}
.opt-row a.maps{flex-direction:column;gap:2px;font-size:.78rem;padding:6px 12px;min-height:44px}
td a.maps,.item>span a.maps{margin-left:6px;vertical-align:middle}
.logo-img{height:34px;max-width:140px;width:auto;border-radius:8px;object-fit:contain;background:#fff;padding:2px;flex:none}
.side .logo-img{height:38px}.brandprev{display:flex;align-items:center;gap:12px;margin:8px 0;padding:12px;background:var(--navy);color:#fff;border-radius:12px;width:fit-content;max-width:100%}
input[type=file]{padding:8px;min-height:0}
.scrim{display:none}
/* ===== Iconos: máscaras SVG en línea (data:), permitidas por img-src 'self' data:. Sin HTML ni estilos en línea. ===== */
.ic{display:inline-block;width:20px;height:20px;flex:none;background-color:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.ic-home{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M3%209l9-7%209%207v11a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2z%22/%3E%3Cpolyline%20points=%229%2022%209%2012%2015%2012%2015%2022%22/%3E%3C/svg%3E")}
.ic-calendar{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Crect%20x=%223%22%20y=%224%22%20width=%2218%22%20height=%2218%22%20rx=%222%22/%3E%3Cline%20x1=%2216%22%20y1=%222%22%20x2=%2216%22%20y2=%226%22/%3E%3Cline%20x1=%228%22%20y1=%222%22%20x2=%228%22%20y2=%226%22/%3E%3Cline%20x1=%223%22%20y1=%2210%22%20x2=%2221%22%20y2=%2210%22/%3E%3C/svg%3E")}
.ic-users{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M17%2021v-2a4%204%200%200%200-4-4H5a4%204%200%200%200-4%204v2%22/%3E%3Ccircle%20cx=%229%22%20cy=%227%22%20r=%224%22/%3E%3Cpath%20d=%22M23%2021v-2a4%204%200%200%200-3-3.87%22/%3E%3Cpath%20d=%22M16%203.13a4%204%200%200%201%200%207.75%22/%3E%3C/svg%3E")}
.ic-user{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M20%2021v-2a4%204%200%200%200-4-4H8a4%204%200%200%200-4%204v2%22/%3E%3Ccircle%20cx=%2212%22%20cy=%227%22%20r=%224%22/%3E%3C/svg%3E")}
.ic-pin{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M21%2010c0%207-9%2013-9%2013s-9-6-9-13a9%209%200%200%201%2018%200z%22/%3E%3Ccircle%20cx=%2212%22%20cy=%2210%22%20r=%223%22/%3E%3C/svg%3E")}
.ic-bag{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Crect%20x=%222%22%20y=%227%22%20width=%2220%22%20height=%2214%22%20rx=%222%22/%3E%3Cpath%20d=%22M16%2021V5a2%202%200%200%200-2-2h-4a2%202%200%200%200-2%202v16%22/%3E%3C/svg%3E")}
.ic-pulse{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpolyline%20points=%2222%2012%2018%2012%2015%2021%209%203%206%2012%202%2012%22/%3E%3C/svg%3E")}
.ic-sun{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Ccircle%20cx=%2212%22%20cy=%2212%22%20r=%225%22/%3E%3Cline%20x1=%2212%22%20y1=%221%22%20x2=%2212%22%20y2=%223%22/%3E%3Cline%20x1=%2212%22%20y1=%2221%22%20x2=%2212%22%20y2=%2223%22/%3E%3Cline%20x1=%224.2%22%20y1=%224.2%22%20x2=%225.6%22%20y2=%225.6%22/%3E%3Cline%20x1=%2218.4%22%20y1=%2218.4%22%20x2=%2219.8%22%20y2=%2219.8%22/%3E%3Cline%20x1=%221%22%20y1=%2212%22%20x2=%223%22%20y2=%2212%22/%3E%3Cline%20x1=%2221%22%20y1=%2212%22%20x2=%2223%22%20y2=%2212%22/%3E%3Cline%20x1=%224.2%22%20y1=%2219.8%22%20x2=%225.6%22%20y2=%2218.4%22/%3E%3Cline%20x1=%2218.4%22%20y1=%225.6%22%20x2=%2219.8%22%20y2=%224.2%22/%3E%3C/svg%3E")}
.ic-sliders{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%224%22%20y1=%2221%22%20x2=%224%22%20y2=%2214%22/%3E%3Cline%20x1=%224%22%20y1=%2210%22%20x2=%224%22%20y2=%223%22/%3E%3Cline%20x1=%2212%22%20y1=%2221%22%20x2=%2212%22%20y2=%2212%22/%3E%3Cline%20x1=%2212%22%20y1=%228%22%20x2=%2212%22%20y2=%223%22/%3E%3Cline%20x1=%2220%22%20y1=%2221%22%20x2=%2220%22%20y2=%2216%22/%3E%3Cline%20x1=%2220%22%20y1=%2212%22%20x2=%2220%22%20y2=%223%22/%3E%3Cline%20x1=%221%22%20y1=%2214%22%20x2=%227%22%20y2=%2214%22/%3E%3Cline%20x1=%229%22%20y1=%228%22%20x2=%2215%22%20y2=%228%22/%3E%3Cline%20x1=%2217%22%20y1=%2216%22%20x2=%2223%22%20y2=%2216%22/%3E%3C/svg%3E")}
.ic-mail{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M4%204h16c1.1%200%202%20.9%202%202v12c0%201.1-.9%202-2%202H4c-1.1%200-2-.9-2-2V6c0-1.1.9-2%202-2z%22/%3E%3Cpolyline%20points=%2222,6%2012,13%202,6%22/%3E%3C/svg%3E")}
.ic-send{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%2222%22%20y1=%222%22%20x2=%2211%22%20y2=%2213%22/%3E%3Cpolygon%20points=%2222%202%2015%2022%2011%2013%202%209%2022%202%22/%3E%3C/svg%3E")}
.ic-shield{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M12%2022s8-4%208-10V5l-8-3-8%203v7c0%206%208%2010%208%2010z%22/%3E%3C/svg%3E")}
.ic-bell{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M18%208A6%206%200%200%200%206%208c0%207-3%209-3%209h18s-3-2-3-9%22/%3E%3Cpath%20d=%22M13.73%2021a2%202%200%200%201-3.46%200%22/%3E%3C/svg%3E")}
.ic-search{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Ccircle%20cx=%2211%22%20cy=%2211%22%20r=%228%22/%3E%3Cline%20x1=%2221%22%20y1=%2221%22%20x2=%2216.65%22%20y2=%2216.65%22/%3E%3C/svg%3E")}
.ic-logout{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M9%2021H5a2%202%200%200%201-2-2V5a2%202%200%200%201%202-2h4%22/%3E%3Cpolyline%20points=%2216%2017%2021%2012%2016%207%22/%3E%3Cline%20x1=%2221%22%20y1=%2212%22%20x2=%229%22%20y2=%2212%22/%3E%3C/svg%3E")}
.ic-chev{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpolyline%20points=%226%209%2012%2015%2018%209%22/%3E%3C/svg%3E")}
.ic-menu{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%223%22%20y1=%2212%22%20x2=%2221%22%20y2=%2212%22/%3E%3Cline%20x1=%223%22%20y1=%226%22%20x2=%2221%22%20y2=%226%22/%3E%3Cline%20x1=%223%22%20y1=%2218%22%20x2=%2221%22%20y2=%2218%22/%3E%3C/svg%3E")}
.ic-plus{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%2212%22%20y1=%225%22%20x2=%2212%22%20y2=%2219%22/%3E%3Cline%20x1=%225%22%20y1=%2212%22%20x2=%2219%22%20y2=%2212%22/%3E%3C/svg%3E")}
.ic-clock{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Ccircle%20cx=%2212%22%20cy=%2212%22%20r=%2210%22/%3E%3Cpolyline%20points=%2212%206%2012%2012%2016%2014%22/%3E%3C/svg%3E")}
.ic-trend{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpolyline%20points=%2223%206%2013.5%2015.5%208.5%2010.5%201%2018%22/%3E%3Cpolyline%20points=%2217%206%2023%206%2023%2012%22/%3E%3C/svg%3E")}
.ic-percent{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%2219%22%20y1=%225%22%20x2=%225%22%20y2=%2219%22/%3E%3Ccircle%20cx=%226.5%22%20cy=%226.5%22%20r=%222.5%22/%3E%3Ccircle%20cx=%2217.5%22%20cy=%2217.5%22%20r=%222.5%22/%3E%3C/svg%3E")}
.ic-file{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M14%202H6a2%202%200%200%200-2%202v16a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V8z%22/%3E%3Cpolyline%20points=%2214%202%2014%208%2020%208%22/%3E%3Cline%20x1=%2216%22%20y1=%2213%22%20x2=%228%22%20y2=%2213%22/%3E%3Cline%20x1=%2216%22%20y1=%2217%22%20x2=%228%22%20y2=%2217%22/%3E%3C/svg%3E")}
.ic-userplus{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M16%2021v-2a4%204%200%200%200-4-4H5a4%204%200%200%200-4%204v2%22/%3E%3Ccircle%20cx=%228.5%22%20cy=%227%22%20r=%224%22/%3E%3Cline%20x1=%2220%22%20y1=%228%22%20x2=%2220%22%20y2=%2214%22/%3E%3Cline%20x1=%2223%22%20y1=%2211%22%20x2=%2217%22%20y2=%2211%22/%3E%3C/svg%3E")}
.ic-check{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M22%2011.08V12a10%2010%200%201%201-5.93-9.14%22/%3E%3Cpolyline%20points=%2222%204%2012%2014.01%209%2011.01%22/%3E%3C/svg%3E")}
.ic-edit{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cpath%20d=%22M12%2020h9%22/%3E%3Cpath%20d=%22M16.5%203.5a2.1%202.1%200%200%201%203%203L7%2019l-4%201%201-4z%22/%3E%3C/svg%3E")}
.ic-x{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%2218%22%20y1=%226%22%20x2=%226%22%20y2=%2218%22/%3E%3Cline%20x1=%226%22%20y1=%226%22%20x2=%2218%22%20y2=%2218%22/%3E%3C/svg%3E")}
/* Historias clínicas */
textarea.tall{min-height:96px;resize:vertical}
.alertbar{border:1px solid var(--err);background:var(--err-bg);color:var(--err);border-radius:12px;padding:12px 14px;margin:0 0 14px}
.alertbar .al{margin-top:8px;color:var(--ink)}
.pre{white-space:pre-wrap;word-break:break-word}
/* Odontograma */
.odo-wrap{overflow-x:auto;margin:8px 0}
svg.odo{width:100%;min-width:640px;height:auto;display:block}
svg.odo .tnum{font-size:9px;fill:#475569;font-weight:600}
svg.odo .tsym{font-size:8px;fill:#334155}
svg.odo .surf{cursor:pointer}svg.odo .surf:hover{stroke-width:2.4}
svg.odo .hit{cursor:pointer}
svg.odo .tooth.sel .tnum{fill:var(--blue);font-size:11px}
svg.odo .tooth.sel .hit{stroke:var(--blue);stroke-width:2;fill:#2563eb14}
svg.odo .mid{stroke:#cbd5e1;stroke-dasharray:4 3}
.odo-leg .chip{display:inline-flex;align-items:center;gap:6px;margin:0 12px 6px 0;font-size:.85rem}
.odo-leg .sw{flex:none}
@media print{
  .side,.top,.noprint,.scrim,button{display:none!important}
  .layout,.mainwrap{display:block!important}
  .card{box-shadow:none!important;border:0!important}
  svg.odo{min-width:0}
}
.odo-tools select,.odo-tools input{width:auto;min-width:0;flex:0 1 auto}
.odo-tools input[inputmode]{width:130px}
.item>span.tag{display:inline-block}
/* firma manuscrita y enlaces de documentos */
.sigbox{margin:6px 0 10px}
.sigpad{display:block;width:100%;max-width:520px;aspect-ratio:3/1;height:auto;background:#fff;border:1px dashed var(--mut);border-radius:10px;touch-action:none;cursor:crosshair}
.sigpad.ro{cursor:default;border-style:solid;border-color:var(--line)}
.sigline{stroke:#c9d3e3;stroke-width:1}
.sigpath{fill:none;stroke:#0f172a;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
a.btnlink{display:inline-block;padding:.55rem 1rem;border-radius:10px;background:var(--blue-soft);color:var(--blue-d);border:1px solid var(--line);text-decoration:none;font-weight:600}
label.chk{display:flex;gap:8px;align-items:flex-start;font-weight:400}
label.chk input{width:auto;margin-top:4px}
@media print{.sigbox button,a.btnlink{display:none}}
/* documentos e imágenes */
.item.doc{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.item.doc>div{flex:1 1 200px;min-width:0;display:flex;flex-direction:column;gap:4px}
.item.doc.voided{opacity:.6}
.docimg{display:block;width:150px;height:110px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#fff}
.item.doc .tag{align-self:flex-start}

ol.vsteps{list-style:none;padding:0;margin:0;display:block}
li.vstep{display:block;padding:8px 0;border-bottom:1px solid #e5e7eb}
li.vstep .vhead{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
li.vstep .vhead .tag{width:auto;flex:none}
li.vstep .vhint{margin:4px 0 0;color:#4b5563;font-size:.9rem}
li.vstep.blocked strong{color:#b00020}
li.vstep.na{opacity:.7}

button.opt.withimg{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;gap:12px;text-align:left}
button.opt .optx{display:flex;flex-direction:column;gap:2px}
img.avatar{width:48px;height:48px;border-radius:50%;object-fit:cover;flex:none;background:#e5e7eb}
img.avatar.big{width:96px;height:96px}
span.avatar.ini{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:#dbe4f5;color:#1e3a8a;font-weight:650;flex:none}

/* Calendario de la agenda */
.caltitle{text-align:center;margin:6px 0 10px}.calwrap{border:1px solid var(--line);border-radius:10px;max-height:70vh;overflow:auto;background:#fff}
.calgrid{border-collapse:separate;border-spacing:0;table-layout:fixed;min-width:640px;font-size:.85rem}
.calgrid th,.calgrid td{padding:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);text-align:left;vertical-align:top}
.calgrid thead th{position:sticky;top:0;z-index:2;background:#fff;padding:8px 10px;text-transform:none;letter-spacing:0;font-size:.85rem;color:var(--ink);border-bottom:2px solid #c9d6ee}
.calgrid .caltime{width:56px;text-align:right;padding:0 8px;color:var(--mut);font-size:.75rem;font-weight:500;background:#fff;position:sticky;left:0;z-index:1;vertical-align:top}
.calday strong{display:block;font-size:1.05rem;color:var(--mut)}.calday.hoy strong{color:var(--blue-d)}.hoytag{color:var(--ok);font-size:.72rem;font-weight:700}
.calcell{height:34px;min-width:92px;padding:0}.calcell.off{background:repeating-linear-gradient(135deg,#f1f3f6 0 6px,#e6e9ee 6px 12px)}.calcell.closed{background:#f7f8fb}
.calcell.open{background:#fff}
.calfree{width:100%;height:100%;min-height:0;background:transparent;border:0;border-radius:0;color:transparent;padding:0;font-weight:500;font-size:.75rem}
.calfree:hover:not(:disabled),.calfree:focus-visible{background:var(--blue-soft);color:var(--blue-d);border:0}
.calev{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:1px;width:100%;height:100%;min-height:34px;text-align:left;border:0;border-left:4px solid var(--blue);border-radius:4px;background:var(--blue-soft);color:var(--ink);padding:3px 6px;font-weight:400;overflow:hidden}
.calev:hover:not(:disabled){background:#dbe7ff;border-color:var(--blue)}
.calev.confirmed{border-left-color:#16a34a;background:#eaf7ef}.calev.pending,.calev.rescheduled{border-left-color:#d97706;background:#fff6e0}.calev.attended{border-left-color:#64748b;background:#eef1f5}.calev.no_show{border-left-color:var(--err);background:var(--err-bg)}
.calhr{display:flex;justify-content:space-between;gap:6px;width:100%;font-weight:600;font-size:.8rem}.calname{font-weight:600;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.calsrv{font-size:.72rem;color:var(--mut)}
.calbadge{border:1px solid currentColor;border-radius:3px;font-size:.65rem;line-height:1.1;padding:0 3px;color:var(--mut)}
.modal{position:fixed;inset:0;background:#0b1f4d66;display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.modal[hidden]{display:none}
.modalcard{background:#fff;border-radius:14px;padding:18px;width:100%;max-width:360px;box-shadow:var(--shadow)}
.menulist{display:flex;flex-direction:column;margin:12px 0}.menulist hr{border:0;border-top:1px solid var(--line);width:100%;margin:6px 0}
.menuitem{background:transparent;color:var(--ink);border:0;border-radius:8px;justify-content:flex-start;font-weight:500;padding:10px 8px}.menuitem:hover:not(:disabled){background:var(--blue-soft);border:0}.menuitem.danger{background:transparent;color:var(--err)}.menuitem.danger:hover:not(:disabled){background:var(--err-bg);border:0}

/* Barra de la agenda en una sola línea (se acomoda en varias solo si no entra) y modales con recuadros */
.agbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 10px}
.agbar select,.agbar input{width:auto;min-width:0;flex:0 1 auto;min-height:38px;padding:6px 10px;max-width:210px}.agbar #ad{width:118px}
.agbar button{min-height:38px;padding:6px 12px}.agbar .seg{display:inline-flex;gap:0}.agbar .seg button{border-radius:0}.agbar .seg button:first-child{border-radius:10px 0 0 10px}.agbar .seg button:last-child{border-radius:0 10px 10px 0}
@media (min-width:1100px){.agbar{flex-wrap:nowrap;overflow-x:auto}.agbar>*{flex:none}}
.modalcard{max-height:92vh;overflow:auto}.modalcard.wide{max-width:820px}.modalcard h2{margin-top:0}
.boxes{display:grid;grid-template-columns:1fr;gap:12px;margin:12px 0}@media (min-width:720px){.boxes{grid-template-columns:1fr 1fr}}
.box{border:1px solid var(--line);border-radius:12px;padding:10px 14px 14px;margin:0;min-width:0}.box legend{font-weight:700;padding:0 6px;color:var(--navy)}.box.plain{margin-top:4px;padding:10px 14px}
.modalhead{display:flex;gap:12px;align-items:center;padding-bottom:10px;border-bottom:1px solid var(--line);margin-bottom:10px}
.modalico{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;background:#e6efff;color:var(--blue-d);flex:none}
.modalname{display:block;font-size:1.35rem;letter-spacing:-.01em;line-height:1.2}.modalmeta{margin:0 0 6px;color:var(--mut)}.modalmeta strong{color:var(--ink)}
.ic-chart{--i:url("data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%2024%2024%22%20fill=%22none%22%20stroke=%22black%22%20stroke-width=%222%22%20stroke-linecap=%22round%22%20stroke-linejoin=%22round%22%3E%3Cline%20x1=%2218%22%20y1=%2220%22%20x2=%2218%22%20y2=%2210%22/%3E%3Cline%20x1=%2212%22%20y1=%2220%22%20x2=%2212%22%20y2=%224%22/%3E%3Cline%20x1=%226%22%20y1=%2220%22%20x2=%226%22%20y2=%2214%22/%3E%3C/svg%3E")}
.hbars{display:grid;gap:6px}.hb{display:grid;grid-template-columns:90px 1fr 34px;gap:8px;align-items:center;font-size:.9rem}.hbl{color:var(--mut)}.hb b{text-align:right}
.hbt{width:100%;height:10px;display:block}.hbt .bg{fill:#e6edf7}.hbt .fg{fill:var(--blue,#2563eb)}.dbar{fill:var(--blue,#2563eb)}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}.grid2>.card{margin:0}
.kpi small{display:block;color:var(--mut);font-size:.78rem}

/* Formularios del panel: encabezado, secciones en recuadros, campos en columnas, obligatorios con asterisco y ayuda debajo */
.fpanel{padding:20px 22px}.fpanel>.msg{margin:10px 0}
.fhead{display:flex;gap:14px;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:6px}.fhead h2{margin:0;font-size:1.3rem;letter-spacing:-.01em}.fhead p{margin:2px 0 0}
.fhead .fclose{margin-left:auto;flex:none}.fclose{background:transparent;border:0;color:var(--mut);box-shadow:none}.fclose:hover{color:var(--ink)}
.reqnote{margin:8px 0 0;font-size:.85rem}.req{color:#dc2626;font-weight:700}
.fsec{border:1px solid var(--line);border-radius:14px;padding:16px 18px 18px;margin:14px 0;background:#fff}
.fsec h3{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:1.05rem}.fsec h3 .ic{color:var(--blue-d)}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:4px 18px;align-items:start}
.fld{min-width:0}.fld>label{margin:10px 0 6px}.fld .help{display:block;margin-top:5px;color:var(--mut);font-size:.8rem;line-height:1.35}
.fld.wide,.fgrid>.wide{grid-column:1/-1}.fld[hidden],.fgrid[hidden]{display:none}
.fld .inline{margin:10px 0 2px}.fld .inline label{margin:0}
.fgrid textarea{min-height:84px;resize:vertical}
.factions{display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.modalcard.wide .fpanel{padding:0}.modalcard.wide .fsec{margin:12px 0}
input[type=date]{min-width:0}
@media (max-width:560px){.fpanel{padding:14px}.fgrid{grid-template-columns:1fr}.factions{flex-direction:column-reverse}.factions button{width:100%}}

/* Versión compacta: más columnas, menos aire, y el encabezado y los botones quedan visibles mientras se recorre el formulario (los formularios largos no ocupan toda la pantalla) */
.fgrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0 14px}
.fld>label{margin:8px 0 4px;font-size:.84rem}
.fgrid input,.fgrid select,.fgrid textarea,.fgrid .phone select{min-height:38px;padding:7px 10px;font-size:.93rem}
.fgrid textarea{min-height:64px}
.fsec{padding:10px 14px 12px;margin:10px 0}.fsec h3{margin:0 0 4px;font-size:.98rem}
.fld .help{margin-top:3px;font-size:.75rem}
.fpanel{padding:0 18px 0}.fhead{position:sticky;top:0;z-index:2;background:#fff;padding:14px 0 10px;margin:0}
.factions{position:sticky;bottom:0;z-index:2;background:#fff;margin-top:10px;padding:10px 0 14px}
.fhead .modalico{width:38px;height:38px}.fhead h2{font-size:1.15rem}
.modalcard.wide{max-width:980px}.modalcard.wide .fpanel{padding:0}.modalcard:has(.fpanel){padding-top:0;padding-bottom:0}
@media (max-width:560px){.fpanel{padding:0 12px}}

/* Pestañas dentro del formulario, fecha en tres listas y atajos de período */
.ftabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:4px 0 2px}
.ftab{background:transparent;color:var(--mut);border:0;border-bottom:3px solid transparent;border-radius:0;padding:9px 12px;min-height:0;font-weight:600;display:inline-flex;align-items:center;gap:7px}
.ftab:hover:not(:disabled){background:var(--blue-soft);color:var(--blue-d)}.ftab.on{color:var(--blue-d);border-color:var(--blue)}.ftab.err{color:#dc2626}.ftab.err::after{content:"";width:8px;height:8px;border-radius:50%;background:#dc2626}
.ftabbed>.fsec{border:0;padding:4px 0 6px;margin:4px 0}.ftabbed>.fsec>h3{display:none}.fsec[hidden]{display:none}
.dsel{display:grid;grid-template-columns:.8fr 1.5fr 1fr;gap:8px}
.pchips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 2px}.pchip{background:#fff;color:var(--blue-d);border:1px solid #cfdaed;border-radius:999px;padding:4px 12px;min-height:0;font-size:.82rem;font-weight:600}.pchip:hover:not(:disabled){background:var(--blue-soft)}
@media (min-width:600px){.fld.dmy{grid-column:span 2}}
.dsel select{padding-left:8px;padding-right:4px}
