/* VetManager v1.3 UI — paleta "Azul clínico + coral" */
:root{
  --navy:#1F2A44; --navy-2:#2A3757; --navy-3:#33426A;
  --primary:#3457A6; --primary-d:#2A4785; --primary-soft:#E8EEFA;
  --coral:#E4683F; --coral-d:#C9542E; --coral-soft:#FDECE5;
  --bg:#F5F7FB; --surface:#FFFFFF; --line:#E3E8F1; --line-2:#EEF1F7;
  --text:#1F2A44; --text-2:#5B6478; --text-3:#8A93A6;
  --ok:#16815F; --ok-soft:#E3F4EC;
  --warn:#7A5300; --warn-soft:#FFF4D6;
  --danger:#B23A3A; --danger-soft:#FBE9E9;
  --radius:14px; --radius-sm:9px;
  --shadow:0 1px 2px rgba(31,42,68,.04),0 4px 14px rgba(31,42,68,.05);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --font-title:'Nunito','Inter',system-ui,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;-webkit-font-smoothing:antialiased}
a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-d);text-decoration:underline}
h1,h2,h3{font-family:var(--font-title);color:var(--navy)}
h2{font-size:18px;margin:0 0 14px}h3{font-size:14px;margin:18px 0 4px;color:var(--text-2)}
.ti{font-size:1.15em;vertical-align:-.12em;line-height:1}

/* Layout */
.app{display:flex;min-height:100vh}
.sidebar{width:248px;background:var(--navy);color:#fff;padding:18px 14px;position:fixed;inset:0 auto 0 0;overflow-y:auto;display:flex;flex-direction:column}
.brand{display:flex;align-items:center;gap:10px;padding:6px 10px 26px}
.brand-mark{width:40px;height:40px;border-radius:12px 12px 12px 4px;background:var(--coral);color:#fff;display:grid;place-items:center;font-size:22px;flex:0 0 40px}
.brand-txt b{display:block;font-family:var(--font-title);font-size:18px;font-weight:800;line-height:1.1}
.brand-txt small{display:block;font-size:11px;color:#AEB8D0;margin-top:2px}
.sidebar nav{display:grid;gap:3px}
.sidebar nav a{display:flex;align-items:center;gap:11px;color:#C9D2E6;padding:10px 12px;border-radius:10px;font-weight:500;text-decoration:none}
.sidebar nav a .ti{font-size:19px;color:#8F9BBA}
.sidebar nav a:hover{background:var(--navy-2);color:#fff}
.sidebar nav a.active{background:var(--primary);color:#fff;box-shadow:inset 3px 0 0 var(--coral)}
.sidebar nav a.active .ti,.sidebar nav a:hover .ti{color:#fff}
.side-foot{margin-top:auto;padding:16px 12px 4px;font-size:11px;color:#7F8AA6}
.main{margin-left:248px;flex:1;min-width:0}
.top{height:60px;background:var(--surface);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:0 28px;font-size:13px;color:var(--text-2);position:sticky;top:0;z-index:5}
.top-date{display:flex;align-items:center;gap:8px;color:var(--text)}
.top-user{display:flex;align-items:center;gap:14px}
.avatar{width:32px;height:32px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:700;font-size:13px}
.top-link{display:inline-flex;align-items:center;gap:5px;color:var(--text-2);font-size:13px}
.content{padding:26px 28px;max-width:1400px;margin:auto}
.foot{padding:10px 28px 18px;color:var(--text-3);font-size:11px}

/* Page head */
.page-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.page-head h1{margin:0;font-size:26px;font-weight:800}
.page-head p{margin:5px 0 0;color:var(--text-2)}
.page-head.sm{margin-bottom:10px}.page-head.sm h2{margin:0}
.head-actions{display:flex;gap:8px;flex-wrap:wrap}

/* Cards */
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:20px;box-shadow:var(--shadow)}
.cards{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:20px}
.cards.four{grid-template-columns:repeat(4,1fr)}
.stat{display:flex;gap:14px;align-items:center}
.card.stat{margin-bottom:0}
.stat-ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:22px;flex:0 0 44px;background:var(--primary-soft);color:var(--primary)}
.stat-ic.coral{background:var(--coral-soft);color:var(--coral-d)}
.stat-ic.ok{background:var(--ok-soft);color:var(--ok)}
.stat-ic.danger{background:var(--danger-soft);color:var(--danger)}
.stat-ic.warn{background:var(--warn-soft);color:var(--warn)}
.stat span{display:block;color:var(--text-2);font-size:12px}
.stat b{display:block;font-size:23px;margin-top:3px;font-family:var(--font-title);font-weight:800;color:var(--navy)}
.stat b.sm{font-size:14px;word-break:break-all}
.form-card{max-width:980px}.form-card.narrow,.narrow{max-width:560px}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line);background:var(--surface);color:var(--text);padding:9px 15px;border-radius:var(--radius-sm);font:600 13px var(--font);cursor:pointer;text-decoration:none;transition:background .15s,border-color .15s}
.btn:hover{background:var(--bg);border-color:#CBD3E2;text-decoration:none;color:var(--text)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}
.btn.primary:hover{background:var(--primary-d);border-color:var(--primary-d);color:#fff}
.btn.accent{background:var(--coral);border-color:var(--coral);color:#fff;font-size:14px}
.btn.accent:hover{background:var(--coral-d);border-color:var(--coral-d);color:#fff}
.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}
.btn.full{width:100%;margin-top:15px;padding:12px}
.btn.sm{padding:5px 10px;font-size:12px}
.btn:disabled{opacity:.6;cursor:wait}
button.link{background:none;border:0;padding:0;margin-left:12px;color:var(--primary);font:inherit;cursor:pointer}
button.link:hover{text-decoration:underline}
.inline{display:inline;margin:0}

/* Forms */
input,select,textarea{width:100%;padding:10px 12px;border:1px solid #D5DCE8;border-radius:8px;background:#fff;font:inherit;color:var(--text)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px rgba(52,87,166,.15)}
input:disabled{background:var(--bg);color:var(--text-2)}
textarea{min-height:90px;resize:vertical}
label{display:block;font-size:13px;font-weight:600;margin-bottom:14px;color:var(--text)}
label input,label select,label textarea{margin-top:6px;font-weight:400}
label small{font-weight:400}
label.check{display:flex;align-items:center;gap:8px;margin-top:26px}label.check input{width:auto;margin:0;accent-color:var(--primary)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}.span2{grid-column:span 2}
.search{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:flex-end}
.search>input[name=q]{flex:1;min-width:220px}
.search .w-date{flex:0 0 160px}.search .w-sel{flex:0 0 190px}
.inline-label{margin:0;font-size:12px}.inline-label input,.inline-label select{margin-top:4px;min-width:150px}
.select-filter{margin-bottom:6px;padding:7px 10px;font-size:12px;background:var(--bg)}

/* Tables */
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:11px 10px;border-bottom:1px solid var(--line-2)}
th{font-size:11px;text-transform:uppercase;color:var(--text-3);letter-spacing:.05em;font-weight:600}
tr:hover td{background:#FAFBFE}
.actions{white-space:nowrap;text-align:right}.actions a{margin-left:12px}
tr.anulada td{color:var(--text-3);text-decoration:line-through}
tr.anulada td .status,tr.anulada td a{text-decoration:none}

/* Badges & text */
.pill{display:inline-block;padding:3px 9px;border-radius:20px;background:var(--primary-soft);color:var(--primary);font-size:11px;font-weight:600}
.status{display:inline-block;padding:3px 9px;border-radius:20px;background:var(--line-2);color:var(--text-2);font-size:11px;font-weight:600}
.status.pendiente{background:var(--warn-soft);color:var(--warn)}
.status.confirmada{background:var(--primary-soft);color:var(--primary)}
.status.atendida{background:var(--ok-soft);color:var(--ok)}
.status.cancelada,.status.no-asistio{background:var(--danger-soft);color:var(--danger)}
.muted{color:var(--text-3)}.right{float:right;text-align:right}
.danger-text,button.link.danger-text{color:var(--danger)}
.ok-text{color:var(--ok);font-weight:700}.low{color:var(--danger);font-weight:800}

/* Alerts */
.alert{padding:12px 14px;border-radius:10px;background:var(--primary-soft);color:var(--primary-d);margin:0 0 14px;border:1px solid transparent}
.alert.ok{background:var(--ok-soft);color:var(--ok);border-color:#C6E9D7}
.alert.warn{background:var(--warn-soft);color:var(--warn);border-color:#F3DFA6}
.alert.danger{background:var(--danger-soft);color:var(--danger);border-color:#F2CACA}

/* Timeline / pager */
.timeline-item{border-left:3px solid var(--primary);padding:6px 0 10px 14px;margin-bottom:14px}
.timeline-item>div{margin-top:4px}.tl-head{font-size:13px}
.pager{display:flex;gap:8px;align-items:center;justify-content:flex-end;margin-top:14px}
.pager-info{color:var(--text-3);font-size:12px;margin-right:auto;margin-top:10px}
pre.debug{white-space:pre-wrap;text-align:left;background:var(--bg);padding:10px;border-radius:8px;font-size:12px}

/* Login */
.login-page{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr;background:var(--bg)}
.login-visual{position:relative;background:var(--navy);overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:56px;color:#fff}
.login-visual h2{color:#fff;font-size:38px;line-height:1.1;margin:0 0 12px;font-weight:800;max-width:420px;position:relative;z-index:2}
.login-visual h2 span{color:var(--coral)}
.login-visual p{color:#C9D2E6;max-width:380px;margin:0;position:relative;z-index:2;font-size:15px}
.login-blob{position:relative;z-index:1;width:min(420px,80%);aspect-ratio:1;margin:34px 0 0 auto;border-radius:58% 42% 47% 53%/52% 46% 54% 48%;background:var(--coral);display:grid;place-items:center;overflow:hidden;box-shadow:0 30px 60px rgba(0,0,0,.25)}
.login-blob img{width:100%;height:100%;object-fit:cover}
.login-blob .ti{font-size:150px;color:rgba(255,255,255,.92)}
.login-visual .dot{position:absolute;border-radius:50%;background:var(--primary);opacity:.55}
.login-visual .d1{width:220px;height:220px;left:-70px;bottom:-60px}
.login-visual .d2{width:90px;height:90px;right:60px;top:50px;background:var(--primary);opacity:.45}
.login-side{display:grid;place-items:center;padding:30px}
.login-box{width:min(400px,100%)}
.login-box .brand-mark{margin-bottom:18px}
.login-box h1{margin:0 0 4px;font-size:28px;font-weight:800}
.login-box>p{color:var(--text-2);margin:0 0 26px}
.input-ic{position:relative}.input-ic .ti{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-3);margin-top:3px}
.input-ic input{padding-left:38px}
/* Páginas de error (403/404/500) */
.login{display:grid;place-items:center;min-height:100vh;background:var(--navy)}
.login-card{width:min(420px,92vw);background:#fff;border-radius:18px;padding:34px;box-shadow:0 20px 50px rgba(0,0,0,.25);text-align:center}
.login-card .logo{font-size:48px;color:var(--coral)}.login-card h1{margin:6px 0}.login-card p{color:var(--text-2)}

/* Responsive */
@media(max-width:1100px){.cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){
  .sidebar{width:68px;padding:14px 8px}.brand-txt,.sidebar nav a span,.side-foot{display:none}.brand{justify-content:center;padding:4px 0 20px}
  .sidebar nav a{justify-content:center;padding:11px 0}.main{margin-left:68px}
  .cards,.cards.four{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.span2{grid-column:auto}
  .content{padding:18px 14px}.top{padding:0 14px}.top-link span,.top-name{display:none}.card{overflow-x:auto}
  .login-page{grid-template-columns:1fr}.login-visual{padding:34px 24px}.login-visual h2{font-size:28px}.login-blob{width:200px;margin:20px auto 0}.login-blob .ti{font-size:80px}
}
@media print{.sidebar,.top,.head-actions,.no-print,.foot,.search{display:none!important}.main{margin:0}.card{box-shadow:none;border:0}}

/* ---- v1.3.1: login con foto (estilo "Conoce al equipo") ---- */
.login-visual.has-photo{padding:0;justify-content:flex-end;background:var(--navy)}
.login-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:47% 30%}
.login-shade{position:absolute;inset:0;background:
  linear-gradient(180deg,rgba(31,42,68,.10) 0%,rgba(31,42,68,.25) 35%,rgba(31,42,68,.82) 68%,#1F2A44 100%),
  linear-gradient(90deg,rgba(52,87,166,.35),rgba(52,87,166,0) 60%)}
.login-brand{position:absolute;top:32px;left:44px;z-index:2;display:flex;align-items:center;gap:10px;color:#fff}
.login-brand b{display:block;font-family:var(--font-title);font-size:18px;font-weight:800;line-height:1.1}
.login-brand small{display:block;font-size:12px;color:#D5DCEB}
.login-claim{position:relative;z-index:2;padding:0 44px 44px}
.login-claim h2{margin:0 0 12px;max-width:none;text-transform:uppercase;line-height:1.02}
.login-claim h2 .thin{display:block;font-family:var(--font);font-weight:300;font-size:36px;letter-spacing:.01em;color:#fff}
.login-claim h2 .bold{display:block;font-weight:800;font-size:44px;color:#fff}
.login-claim h2 .bold::after{content:"";display:block;width:64px;height:4px;border-radius:4px;background:var(--coral);margin-top:14px}
.login-claim p{color:#D5DCEB;font-size:15px;margin:0}
.login-contact{display:flex;gap:22px;flex-wrap:wrap;margin-top:24px;font-size:13px;color:#fff}
.login-contact span{display:inline-flex;align-items:center;gap:8px}
.login-contact .ic{width:30px;height:30px;border-radius:50%;background:#fff;color:var(--primary);display:grid;place-items:center;font-style:normal}
.login-contact .ic .ti{font-size:16px}

/* ---- v1.3.1: marca de agua del dashboard ---- */
.content{position:relative;z-index:1}
.dash-watermark{position:fixed;right:0;bottom:0;width:min(46vw,620px);height:88vh;z-index:-1;pointer-events:none;
  background-size:cover;background-position:center bottom;opacity:.10;filter:grayscale(35%) saturate(.8);
  -webkit-mask-image:linear-gradient(to left,#000 35%,transparent 100%),linear-gradient(to top,#000 55%,transparent 100%);
  -webkit-mask-composite:source-in;mask-image:linear-gradient(to left,#000 35%,transparent 100%),linear-gradient(to top,#000 55%,transparent 100%);mask-composite:intersect}
.dash-watermark::before{content:"";position:absolute;left:-60px;top:0;bottom:0;width:120px;border-radius:50%;border-left:14px solid var(--primary);opacity:.9}
@media(max-width:900px){.login-visual.has-photo{min-height:340px}.login-brand{left:22px;top:20px}.login-claim{padding:0 22px 26px}.login-claim h2 .thin{font-size:24px}.login-claim h2 .bold{font-size:30px}.dash-watermark{display:none}}
@media print{.dash-watermark{display:none}}
