:root{
  --blue:#30558B;
  --green:#B1B93D;
  --dark:#12213A;
  --muted:#667085;
  --bg:#F4F7FB;
  --card:#FFFFFF;
  --border:#D8E0EA;
  --danger:#B42318;
  --warning:#B54708;
  --success:#067647;
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:#1F2937}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
.login-body{min-height:100vh;background:linear-gradient(0deg,rgba(12,18,28,.65),rgba(12,18,28,.65)),url('/img/login_bg.png') center/cover fixed no-repeat;display:flex;align-items:center;justify-content:center;padding:24px}
.login-card{width:430px;max-width:100%;background:rgba(255,255,255,.94);border-radius:24px;box-shadow:0 25px 70px rgba(0,0,0,.35);padding:34px;border:1px solid rgba(48,85,139,.25)}
.login-card img{display:block;height:86px;margin:0 auto 20px}.login-card h1{text-align:center;margin:0 0 6px;color:var(--blue)}.login-card p{text-align:center;margin:0 0 20px;color:var(--muted)}
.app-shell{display:grid;grid-template-columns:290px 1fr;min-height:100vh}.sidebar{background:#fff;border-right:1px solid var(--border);padding:22px;position:sticky;top:0;height:100vh;overflow:auto}.sidebar-logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}.sidebar-logo img{height:48px}.sidebar-logo strong{color:var(--blue);font-size:18px}.userbox{background:#F4F7FB;border:1px solid var(--border);border-radius:16px;padding:14px;margin-bottom:18px}.userbox small{color:var(--muted)}
.nav-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800;margin:20px 0 8px}.side-link{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-radius:12px;color:#1F2937;margin-bottom:4px}.side-link:hover{background:#EEF4FF;text-decoration:none}.side-link.active{background:var(--blue);color:#fff}.side-link.disabled{opacity:.45;pointer-events:none}.badge{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:700;background:#E5E7EB;color:#374151}.badge.ok{background:#ECFDF3;color:var(--success)}.badge.warn{background:#FFFAEB;color:var(--warning)}
.main{padding:28px 34px}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:22px}.page-title h1{margin:0;color:var(--dark)}.page-title p{margin:6px 0 0;color:var(--muted)}
.card{background:var(--card);border:1px solid var(--border);border-radius:18px;padding:20px;margin-bottom:18px;box-shadow:0 1px 2px rgba(16,24,40,.04)}.card h2,.card h3{margin-top:0;color:var(--dark)}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
label{font-weight:700;font-size:14px;margin-bottom:6px;display:block;color:#344054}.field{margin-bottom:14px}input,select,textarea{width:100%;border:1px solid #CBD5E1;border-radius:12px;padding:11px 12px;background:#fff;color:#101828;font:inherit}textarea{min-height:86px;resize:vertical}input:focus,select:focus,textarea:focus{outline:3px solid rgba(48,85,139,.15);border-color:var(--blue)}.hint{color:var(--muted);font-size:13px;margin-top:4px}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:12px;padding:10px 14px;background:#E5E7EB;color:#111827;font-weight:800;cursor:pointer;text-decoration:none}.btn:hover{text-decoration:none;filter:brightness(.98)}.btn.primary{background:var(--blue);color:#fff}.btn.green{background:var(--green);color:#1F2937}.btn.danger{background:#FEE4E2;color:var(--danger)}.btn.ghost{background:#fff;border:1px solid var(--border)}.btn.block{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}
.alert{border-radius:14px;padding:12px 14px;margin-bottom:16px;border:1px solid}.alert.success{background:#ECFDF3;color:var(--success);border-color:#ABEFC6}.alert.danger{background:#FEF3F2;color:var(--danger);border-color:#FECDCA}.alert.warning{background:#FFFAEB;color:var(--warning);border-color:#FEDF89}.alert.info{background:#EFF8FF;color:#175CD3;border-color:#B2DDFF}
.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:16px;background:#fff}table{width:100%;border-collapse:collapse}th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#F8FAFC}tr:last-child td{border-bottom:0}.muted{color:var(--muted)}.pill{display:inline-block;border-radius:999px;background:#EEF4FF;color:var(--blue);padding:4px 8px;font-size:12px;font-weight:800;margin:2px}.metric{background:#fff;border:1px solid var(--border);border-radius:16px;padding:16px}.metric strong{font-size:28px;color:var(--blue)}.metric span{display:block;color:var(--muted);font-size:13px;margin-top:4px}.section-divider{height:1px;background:var(--border);margin:22px 0}.catalog-card{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:start;border:1px solid var(--border);border-radius:14px;padding:14px;margin-bottom:10px;background:#fff}.catalog-card h4{margin:0 0 6px}.catalog-card p{margin:0 0 4px}.danger-text{color:var(--danger);font-weight:800}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.main{padding:18px}.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}.topbar{display:block}.catalog-card{grid-template-columns:1fr}}

/* Aura-Link v0.2 */
.grid-span-2{grid-column:span 2}
.check-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;border:1px solid var(--border);border-radius:14px;padding:12px;background:#F8FAFC}
.check-grid.check-grid-wide{grid-template-columns:repeat(1,minmax(0,1fr))}
.check-grid label,.inline-check{font-weight:500;font-size:14px;display:flex;align-items:flex-start;gap:8px;margin:0;color:#344054}
.check-grid input[type="checkbox"],.inline-check input[type="checkbox"]{width:auto;margin-top:3px;flex:0 0 auto}
.catalog-card.suggested{border-color:rgba(177,185,61,.9);box-shadow:0 0 0 3px rgba(177,185,61,.12)}
.session-item-label{border:1px solid var(--border);border-radius:14px;background:#fff;padding:12px;display:flex;gap:10px;align-items:flex-start}
.session-item-label input{width:auto;margin-top:3px}.session-item-label small{display:block;margin-top:3px}.card h4{margin:14px 0 8px;color:var(--dark)}
@media(max-width:900px){.grid-span-2{grid-column:span 1}.check-grid{grid-template-columns:1fr}}

/* Aura-Link v0.3 */
.progress-mini,.progress-bar{height:10px;background:#E5E7EB;border-radius:999px;overflow:hidden;min-width:90px;margin-bottom:4px}
.progress-bar{height:14px;min-width:100%}
.progress-mini span,.progress-bar span{display:block;height:100%;background:var(--green);border-radius:999px;transition:width .2s ease}
.metric strong small{font-size:14px;color:var(--muted)}
ul{margin-top:8px}

/* Aura-Link v0.4 */
.badge.info{background:#EFF8FF;color:#175CD3}
.session-flow{display:grid;gap:12px}
.session-flow.compact{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.session-step{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;border:1px solid var(--border);border-radius:16px;background:#fff;padding:14px;text-decoration:none;color:inherit}
.session-step:hover{text-decoration:none;background:#F8FAFC}
.session-flow.compact .session-step{grid-template-columns:auto 1fr;padding:12px}
.session-step.active{border-color:var(--blue);box-shadow:0 0 0 3px rgba(48,85,139,.12)}
.session-step.done{border-color:#ABEFC6;background:#F6FEF9}
.session-step.draft{border-color:#B2DDFF;background:#EFF8FF}
.step-number{width:36px;height:36px;border-radius:999px;background:var(--blue);color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center}
.session-step.done .step-number{background:var(--success)}
.session-step.draft .step-number{background:#175CD3}
.step-body{display:grid;gap:3px}.step-body span,.step-body small{color:var(--muted)}
.closure-card{border-color:rgba(177,185,61,.7);box-shadow:0 0 0 3px rgba(177,185,61,.10)}
@media(max-width:900px){.session-step{grid-template-columns:auto 1fr}.session-step .btn{grid-column:1/-1}}

/* Aura-Link v0.5 */
.session-target-confirm{margin-bottom:12px;align-items:end}
.metric strong{word-break:break-word}
.card.compact-card{padding:14px}
.closure-card label{color:var(--blue)}

/* v0.6 - resumen histórico de ciclos cerrados */
.cycle-detail{border:1px solid rgba(48,85,139,.18);border-radius:18px;margin:14px 0;padding:0;background:#fff;overflow:hidden}
.cycle-detail summary{cursor:pointer;display:flex;gap:12px;align-items:center;justify-content:space-between;padding:14px 16px;background:rgba(48,85,139,.07);font-weight:700;color:var(--blue)}
.cycle-detail summary span{font-size:12px;color:var(--muted);font-weight:600}
.cycle-body{padding:16px}
.cycle-detail h3{margin:16px 16px 8px;color:var(--blue)}
.session-history-card{margin:10px 16px 16px;padding:14px;border:1px solid rgba(48,85,139,.14);border-radius:14px;background:rgba(248,250,252,.9)}
.session-history-card h4{margin:0 0 8px;color:var(--blue)}

/* v0.8 Seguridad y roles */
.role-help p { margin: 0 0 12px; }
.checkline { display:flex; align-items:center; gap:8px; margin: 8px 0 18px; color: var(--text, #1f2937); }
.pill.ok { background: #dcfce7; color: #166534; }
.pill.warn { background: #fef3c7; color: #92400e; }
.pill.role-admin { background: #ede9fe; color: #5b21b6; }
.pill.role-therapist { background: #dbeafe; color: #1d4ed8; }
.pill.role-viewer { background: #ecfdf5; color: #047857; }
.sidebar .side-link.disabled { opacity: .55; pointer-events: none; }
.audit-note { font-size: 13px; color: #64748b; margin-top: 8px; }

/* v0.9 producción y auditoría */
.metric-grid { margin-bottom: 16px; }
.mini-card { padding: 18px; }
.mini-card strong { display:block; font-size: 30px; margin-top: 6px; color: var(--dark); }
.metric-label { color: var(--muted); font-size: 13px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; }
.filter-form .btn { margin-right: 8px; }
.grid-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.audit-table td { vertical-align: top; }
.audit-table code { background: #eef4ff; border: 1px solid #d9e6ff; padding: 3px 6px; border-radius: 8px; color: #24467d; font-size: 12px; }
details summary { cursor: pointer; color: var(--blue); font-weight: 700; margin-top: 6px; }
pre { white-space: pre-wrap; word-break: break-word; background: #f8fbff; border: 1px solid #d7e3f4; border-radius: 12px; padding: 10px; font-size: 12px; max-width: 560px; }
.detail-list p { margin: 9px 0; }
@media (max-width: 1100px) { .grid-5 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 700px) { .grid-5 { grid-template-columns: 1fr; } }
