:root{
  --ca-brand-blue:#6FCBF2; --ca-brand-gray:#706F6F;
  --ca-primary:#17698F; --ca-primary-hover:#0E5C82; --ca-primary-soft:#E8F6FD;
  --ca-ink:#1B2A33; --ca-ink-muted:#5C7080; --ca-ink-subtle:#8FA0AC;
  --ca-surface:#FFFFFF; --ca-canvas:#EAEEF1; --ca-border:#D9E0E5;
  --ca-success:#1B7A45; --ca-warning:#A65B00; --ca-danger:#B3261E;
  --ca-font:"Nunito","Nunito Sans",system-ui,sans-serif;
  --radius-sm:8px; --radius-md:12px;
  --shadow-card:0 2px 4px rgba(15,30,40,.05), 0 10px 22px -14px rgba(15,30,40,.28);
  --shadow-lift:0 14px 34px -18px rgba(15,30,40,.4);
}
*,*::before,*::after{box-sizing:border-box;}
html,body{height:100%;}
body{margin:0; font-family:var(--ca-font); background:var(--ca-canvas); color:var(--ca-ink); font-size:14px; -webkit-font-smoothing:antialiased;}
button{font-family:inherit; cursor:pointer;}
input,select,textarea{font-family:inherit; font-size:inherit; color:var(--ca-ink);}
h1,h2,h3{font-family:var(--ca-font); font-weight:700; margin:0; color:var(--ca-ink);}
a{color:var(--ca-primary);}
::-webkit-scrollbar{width:9px;height:9px;}
::-webkit-scrollbar-thumb{background:#C4CDD3; border-radius:999px;}

.app{display:grid; grid-template-columns:230px 1fr; min-height:100vh;}
.side{background:#0E2A3A; color:#8FB2C4; padding:14px 14px; display:flex; flex-direction:column; position:sticky; top:0; height:100vh; overflow:hidden; position:relative;}
.side::after{content:''; position:absolute; right:-60px; bottom:-40px; width:220px; height:220px; background:radial-gradient(circle, rgba(111,203,242,.14), transparent 70%); pointer-events:none;}
.brand{display:flex; align-items:center; gap:9px; padding:0 8px 8px; position:relative;}
.brand .mark{width:28px; height:28px; flex-shrink:0;}
.brand .name{font-weight:800; font-size:15px; color:#fff;}
.brand .tag{font-size:10px; color:#5C7E90; margin-top:0;}
.nav{display:flex; flex-direction:column; gap:1px; position:relative; margin-top:0; flex-shrink:1; overflow-y:auto; min-height:0;}
.nav-group-label{font-size:9.5px; font-weight:700; color:#3F5A6B; text-transform:uppercase; letter-spacing:.04em; padding:8px 10px 3px;}
.nav-item{display:flex; align-items:center; gap:9px; padding:6.5px 10px; border-radius:8px; font-size:13px; font-weight:600; color:#8FB2C4; background:none; border:none; text-align:left; width:100%; line-height:1.3;}
.nav-item svg{width:15px; height:15px; stroke:currentColor; flex-shrink:0;}
.nav-item:hover{background:#16374A; color:#CFE3EC;}
.nav-item.active{background:var(--ca-primary); color:#fff;}
.nav-badge{margin-left:auto; background:var(--ca-danger); color:#fff; font-size:10px; font-weight:700; border-radius:999px; padding:1px 6px;}
.side-foot{margin-top:auto; padding-top:8px; border-top:1px solid #1C3B4C; position:relative; flex-shrink:0;}
.role-switch label{font-size:9px; color:#4A6577; font-weight:700; text-transform:uppercase; letter-spacing:.03em; display:block; margin-bottom:4px;}
.role-switch select{width:100%; background:#16374A; color:#fff; border:1px solid #23495D; border-radius:8px; padding:6px 8px; font-size:11.5px; font-weight:600;}
.role-switch-note{font-size:9.5px; color:#3F5A6B; margin-top:4px; line-height:1.3;}
.org-chip{display:flex; align-items:center; gap:8px; padding:0 8px 8px; margin-bottom:4px; border-bottom:1px solid #1C3B4C; position:relative; flex-shrink:0;}
.org-avatar{width:26px; height:26px; border-radius:7px; background:#16374A; color:#B9D4E0; display:flex; align-items:center; justify-content:center; font-size:10.5px; font-weight:700; flex-shrink:0;}
.org-name{font-size:12.5px; color:#fff; font-weight:700; line-height:1.2;}
.org-role{font-size:10px; color:#5C7E90; margin-top:0;}

.main{display:flex; flex-direction:column; min-width:0;}
.topbar{display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 28px; background:#fff; border-bottom:1px solid var(--ca-border); position:sticky; top:0; z-index:15;}
.topbar-title{font-size:22px; font-weight:800;}
.topbar-sub{font-size:12.5px; color:var(--ca-ink-muted); margin-top:2px;}
.topbar-actions{display:flex; gap:10px;}
.btn{display:inline-flex; align-items:center; gap:7px; border-radius:var(--radius-sm); border:1px solid transparent; padding:9px 15px; font-size:13px; font-weight:700; white-space:nowrap;}
.btn[hidden]{display:none;}
.btn svg{width:15px; height:15px; stroke:currentColor;}
.btn-primary{background:linear-gradient(135deg,var(--ca-primary),#1E7FAC); color:#fff; box-shadow:0 4px 12px -4px rgba(23,105,143,.5);}
.btn-primary:hover{filter:brightness(1.05);}
.btn-secondary{background:#fff; color:var(--ca-primary); border-color:var(--ca-border);}
.btn-secondary:hover{background:#F3F6F8;}
.btn-ghost{background:transparent; color:var(--ca-ink-muted); border-color:transparent;}
.btn-ghost:hover{background:#F3F6F8;}
.btn-sm{padding:6px 11px; font-size:12px;}
.btn:disabled{opacity:.4; cursor:not-allowed;}

.content{padding:24px 28px 60px; flex:1; min-width:0;}
.view[hidden]{display:none;}

.kpis{display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px;}
.kpi{background:#fff; border-radius:var(--radius-md); padding:16px 18px; box-shadow:var(--shadow-card); position:relative; overflow:hidden;}
.kpi::before{content:''; position:absolute; top:-30px; right:-30px; width:100px; height:100px; border-radius:50%; background:radial-gradient(circle, rgba(23,105,143,.13), transparent 72%);}
.kpi-label{font-size:11.5px; font-weight:700; color:var(--ca-ink-muted);}
.kpi-value{font-size:27px; font-weight:800; margin-top:8px; position:relative;}
.kpi-value.danger{color:var(--ca-danger);}
.kpi-sub{font-size:11.5px; color:var(--ca-ink-subtle); margin-top:5px;}

.dash-grid{display:grid; grid-template-columns:1.3fr 1fr; gap:16px;}
.panel{background:#fff; border-radius:var(--radius-md); padding:18px 20px; box-shadow:var(--shadow-card); margin-bottom:16px;}
.card{background:#fff; border:1px solid var(--ca-border); border-radius:var(--radius-sm); padding:14px 16px;}
.panel-head{display:flex; align-items:baseline; justify-content:space-between; margin-bottom:14px;}
.panel-title{font-size:15px; font-weight:700;}
.panel-hint{font-size:11.5px; color:var(--ca-ink-subtle);}

.estado-bar{display:flex; height:10px; border-radius:999px; overflow:hidden; background:#E3E7EA; margin-bottom:10px;}
.estado-seg{height:100%;}
.estado-legend{display:flex; gap:14px; flex-wrap:wrap;}
.legend-item{font-size:11.5px; color:var(--ca-ink-muted); display:flex; align-items:center; gap:6px;}
.legend-dot{width:8px; height:8px; border-radius:50%; display:inline-block;}

.plazo-item{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 4px; border-bottom:1px solid var(--ca-border); cursor:pointer;}
.plazo-item:last-child{border-bottom:none;}
.plazo-item:hover{background:#F7F9FA;}
.plazo-main .t{font-size:13px; font-weight:700;}
.plazo-main .s{font-size:11.5px; color:var(--ca-ink-muted); margin-top:2px;}
.plazo-days{font-size:12px; font-weight:800; white-space:nowrap; padding:4px 10px; border-radius:999px;}
.urg-alta{background:#FBE7E4; color:var(--ca-danger);}
.urg-media{background:#FBF1E1; color:var(--ca-warning);}
.urg-baja{background:var(--ca-primary-soft); color:var(--ca-primary);}

.filters-row{display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap;}
.search-field{position:relative; flex:1; min-width:220px;}
.search-field svg{position:absolute; left:12px; top:50%; transform:translateY(-50%); width:15px; height:15px; stroke:var(--ca-ink-subtle);}
.search-field input{width:100%; padding:9px 12px 9px 34px; border:1px solid var(--ca-border); border-radius:var(--radius-sm); background:#fff;}
.select-field{padding:9px 12px; border:1px solid var(--ca-border); border-radius:var(--radius-sm); background:#fff; min-width:160px;}

.table-wrap{background:#fff; border-radius:var(--radius-md); box-shadow:var(--shadow-card); overflow:hidden;}
table{width:100%; border-collapse:collapse; font-size:13px;}
th{text-align:left; font-size:11px; font-weight:700; color:var(--ca-ink-muted); padding:12px 14px; border-bottom:1px solid var(--ca-border); background:#F7F9FA; white-space:nowrap;}
td{padding:12px 14px; border-bottom:1px solid var(--ca-border); vertical-align:middle;}
tbody tr:last-child td{border-bottom:none;}
tbody tr{cursor:pointer;}
tbody tr:hover{background:#F7F9FA;}
.mono{font-family:ui-monospace,'SFMono-Regular',monospace; font-size:12px; color:var(--ca-ink-muted);}
.badge{display:inline-flex; align-items:center; gap:5px; font-size:11px; font-weight:700; padding:4px 10px; border-radius:999px; color:#fff; white-space:nowrap;}
.b-borrador{background:#8FA0AC;}
.b-pendiente{background:var(--ca-ink-subtle);}
.b-valido{background:var(--ca-primary);}
.b-modificado{background:#6B4FA0;}
.b-incidentado{background:var(--ca-danger);}
.b-finalizado{background:var(--ca-success);}
.b-anulado{background:#4A5560;}
.b-enviocorreo{background:var(--ca-primary-soft); color:var(--ca-primary);}
.b-enproceso{background:#FBF1E1; color:var(--ca-warning);}
.b-procesado{background:#E4F2E9; color:var(--ca-success);}
.b-error{background:#FBE7E4; color:var(--ca-danger);}
.centros-chip{display:inline-flex; align-items:center; gap:5px; background:var(--ca-primary-soft); color:var(--ca-primary); font-size:11px; font-weight:700; padding:2px 8px; border-radius:999px;}

.empty-state{text-align:center; padding:60px 20px; color:var(--ca-ink-subtle);}
.empty-state svg{width:44px; height:44px; stroke:var(--ca-ink-subtle); margin-bottom:12px;}
.empty-state .t{font-size:14px; font-weight:700; color:var(--ca-ink-muted);}
.empty-state .s{font-size:12.5px; margin-top:4px;}

/* detalle de expediente — vista integrada, no lateral */
.detail-head{display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:4px;}
.detail-id{font-family:ui-monospace,monospace; font-size:12px; color:var(--ca-ink-muted); font-weight:600;}
.detail-title{font-size:22px; font-weight:800; margin-top:4px;}
.tabs{display:flex; gap:2px; overflow-x:auto;}
.tabs-inline{border-bottom:1px solid var(--ca-border); margin:18px 0 20px;}
.tab{padding:11px 4px; margin-right:22px; font-size:13px; font-weight:700; color:var(--ca-ink-subtle); background:none; border:none; border-bottom:2px solid transparent; white-space:nowrap;}
.tab.active{color:var(--ca-primary); border-bottom-color:var(--ca-primary);}
.tabpanel{background:#fff; border-radius:var(--radius-md); box-shadow:var(--shadow-card); padding:22px 24px;}
.tabpanel[hidden]{display:none;}
.meta-grid{display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px 20px;}
.meta-item .l{font-size:11px; font-weight:700; color:var(--ca-ink-muted); text-transform:uppercase; letter-spacing:.02em;}
.meta-item .v{font-size:13.5px; margin-top:3px;}
.section-h{font-size:12.5px; font-weight:800; color:var(--ca-ink); margin:22px 0 10px; padding-top:16px; border-top:1px solid var(--ca-border);}
.section-h:first-child{margin-top:0; padding-top:0; border-top:none;}
.mini-list-row{display:flex; align-items:center; justify-content:space-between; padding:9px 0; border-bottom:1px solid var(--ca-border); font-size:13px;}
.mini-list-row:last-child{border-bottom:none;}
.mini-list-row .n{font-weight:600;}
.mini-list-row .m{font-size:11.5px; color:var(--ca-ink-subtle);}
.doc-row{display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--ca-border);}
.doc-row:last-child{border-bottom:none;}
.doc-row svg{width:16px; height:16px; stroke:var(--ca-ink-muted); flex-shrink:0;}
.doc-row .n{font-size:13px; font-weight:600; flex:1;}
.doc-row .m{font-size:11px; color:var(--ca-ink-subtle);}
.upload-box{border:1.5px dashed var(--ca-border); border-radius:var(--radius-sm); padding:18px; text-align:center; color:var(--ca-ink-subtle); font-size:12.5px; margin-top:14px;}
.upload-box svg{width:22px; height:22px; stroke:var(--ca-ink-subtle); margin-bottom:6px;}

.xml-actions{display:flex; align-items:center; justify-content:space-between; background:#F7F9FA; border-radius:var(--radius-sm); padding:12px 14px; margin-bottom:10px;}
.xml-actions .l{font-size:12.5px;}
.xml-actions .l b{display:block; font-size:13px;}
.toggle-mode{display:flex; align-items:center; gap:8px; font-size:11.5px; color:var(--ca-ink-muted);}
.switch{position:relative; width:36px; height:20px; background:var(--ca-border); border-radius:999px; cursor:pointer; flex-shrink:0;}
.switch.on{background:var(--ca-primary);}
.switch::after{content:''; position:absolute; top:2px; left:2px; width:16px; height:16px; background:#fff; border-radius:50%; transition:left .15s ease; box-shadow:0 1px 2px rgba(0,0,0,.2);}
.switch.on::after{left:18px;}

.modal-backdrop{position:fixed; inset:0; background:rgba(15,25,33,.4); display:none; align-items:center; justify-content:center; z-index:60; padding:20px;}
.modal-backdrop.show{display:flex;}
.modal{background:#fff; border-radius:var(--radius-md); width:min(560px,100%); max-height:88vh; overflow-y:auto; box-shadow:var(--shadow-lift);}
.modal__head{display:flex; justify-content:space-between; align-items:flex-start; padding:20px 22px; border-bottom:1px solid var(--ca-border);}
.drawer__close{background:none; border:none; padding:6px; border-radius:8px; color:var(--ca-ink-muted); flex-shrink:0;}
.drawer__close:hover{background:#F3F6F8;}
.drawer__close svg{width:18px; height:18px; stroke:currentColor;}
.modal__body{padding:20px 22px;}
.modal__foot{display:flex; justify-content:flex-end; gap:10px; padding:16px 22px; border-top:1px solid var(--ca-border);}
.form-grid{display:grid; grid-template-columns:1fr 1fr; gap:14px;}
.form-field{display:flex; flex-direction:column; gap:5px;}
.form-field.full{grid-column:1/-1;}
.form-field label{font-size:12px; font-weight:700; color:var(--ca-ink-muted);}
.form-field input, .form-field select, .form-field textarea{padding:9px 11px; border:1px solid var(--ca-border); border-radius:var(--radius-sm); background:#fff;}
.form-field textarea{resize:vertical; min-height:70px;}

.toast{position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(20px); background:#1B2A33; color:#fff; padding:12px 18px; border-radius:10px; font-size:13px; font-weight:600; display:flex; align-items:center; gap:8px; opacity:0; pointer-events:none; transition:all .2s ease; z-index:80;}
.toast.show{opacity:1; transform:translateX(-50%) translateY(0);}
.toast svg{width:15px; height:15px; stroke:#6FCBF2;}

.role-banner{display:none; align-items:center; gap:10px; background:#FBF1E1; border:1px solid #EFD9AD; color:#7A4B00; padding:9px 16px; font-size:12.5px; font-weight:600;}
.role-banner.show{display:flex;}
.role-banner svg{width:15px; height:15px; stroke:currentColor; flex-shrink:0;}

/* checklist de documentos del centro */
.checklist-row{display:flex; align-items:center; gap:14px; padding:14px 0; border-bottom:1px solid var(--ca-border);}
.checklist-row:last-child{border-bottom:none;}
.checklist-icon{width:36px; height:36px; border-radius:9px; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.checklist-icon.ok{background:#E4F2E9; color:var(--ca-success);}
.checklist-icon.pend{background:#FBF1E1; color:var(--ca-warning);}
.checklist-icon svg{width:18px; height:18px; stroke:currentColor;}
.checklist-main{flex:1;}
.checklist-main .n{font-size:13.5px; font-weight:700;}
.checklist-main .m{font-size:11.5px; color:var(--ca-ink-subtle); margin-top:2px;}
.checklist-status{font-size:11.5px; font-weight:700; padding:4px 10px; border-radius:999px; white-space:nowrap;}
.checklist-status.ok{background:#E4F2E9; color:var(--ca-success);}
.checklist-status.pend{background:#FBF1E1; color:var(--ca-warning);}

/* tarjetas de curso — vista alumno */
.curso-card{background:#fff; border-radius:var(--radius-md); box-shadow:var(--shadow-card); padding:18px 20px; margin-bottom:14px;}
.curso-head{display:flex; justify-content:space-between; align-items:flex-start; gap:12px;}
.curso-head h3{font-size:15.5px; font-weight:800;}
.curso-meta{font-size:12px; color:var(--ca-ink-muted); margin-top:4px;}
.curso-actions{display:flex; gap:8px; flex-wrap:wrap; margin-top:14px;}
.curso-action{display:flex; align-items:center; gap:7px; font-size:12.5px; font-weight:700; padding:8px 13px; border-radius:var(--radius-sm); border:1px solid var(--ca-border); background:#fff; color:var(--ca-ink);}
.curso-action svg{width:14px; height:14px; stroke:currentColor;}
.curso-action.done{color:var(--ca-success); border-color:#BEE1CB; background:#F1FAF4;}
.curso-action:not(.done):hover{background:#F3F6F8;}
.curso-action[disabled]{opacity:.4; cursor:not-allowed;}

/* costes y cierre */
.costes-table{width:100%; border-collapse:collapse; font-size:12.5px;}
.costes-table th{text-align:right; font-size:10.5px; font-weight:700; color:var(--ca-ink-muted); padding:0 8px 8px; border-bottom:1px solid var(--ca-border);}
.costes-table th:first-child, .costes-table td:first-child{text-align:left;}
.costes-table td{padding:8px; border-bottom:1px solid var(--ca-border); text-align:right;}
.costes-table input{width:84px; text-align:right; padding:6px 8px; border:1px solid var(--ca-border); border-radius:6px; font-size:12.5px;}
.costes-table tfoot td{font-weight:800; border-bottom:none; border-top:2px solid var(--ca-ink);}
.limite-note{font-size:11px; color:var(--ca-ink-subtle); margin-top:2px;}
.cofi-box{display:flex; align-items:center; gap:16px; background:#F7F9FA; border-radius:var(--radius-sm); padding:14px 16px; margin-top:14px;}
.cofi-ring{width:52px; height:52px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:800; color:#fff;}
.cofi-meta{font-size:12px; color:var(--ca-ink-muted); line-height:1.5;}
.cofi-meta b{color:var(--ca-ink); font-size:13px;}
.aptos-row{display:flex; align-items:center; gap:12px; padding:9px 0; border-bottom:1px solid var(--ca-border); font-size:13px;}
.aptos-row:last-child{border-bottom:none;}
.aptos-row input[type=checkbox]{width:17px; height:17px; accent-color:var(--ca-success);}
.aptos-row .n{flex:1; font-weight:600;}
.aptos-row .m{font-size:11.5px; color:var(--ca-ink-subtle);}
.cierre-cta{display:flex; align-items:center; justify-content:space-between; background:var(--ca-primary-soft); border-radius:var(--radius-sm); padding:16px 18px; margin-top:18px;}
.cierre-cta .t{font-size:13px; font-weight:700; color:var(--ca-primary);}
.cierre-cta .s{font-size:11.5px; color:var(--ca-ink-muted); margin-top:2px;}

.hamburger{display:none; background:none; border:none; padding:8px; border-radius:8px; color:var(--ca-ink); margin-right:4px;}
.hamburger svg{width:20px; height:20px; stroke:currentColor;}
.hamburger:hover{background:#F3F6F8;}
.lang-switch{display:flex; border:1px solid var(--ca-border); border-radius:999px; padding:2px; background:#F3F6F8;}
.lang-btn{border:none; background:none; padding:5px 12px; font-size:11.5px; font-weight:700; border-radius:999px; color:var(--ca-ink-muted);}
.lang-btn.active{background:#fff; color:var(--ca-primary); box-shadow:0 1px 2px rgba(15,30,40,.12);}
.side-overlay{display:none; position:fixed; inset:0; background:rgba(15,25,33,.4); z-index:29;}
.side-overlay.show{display:block;}

@media (max-width:960px){
  .app{grid-template-columns:1fr;}
  .side{position:fixed; top:0; left:0; height:100vh; width:250px; z-index:30; transform:translateX(-100%); transition:transform .2s ease; display:flex;}
  .side.open{transform:translateX(0);}
  .hamburger{display:inline-flex; align-items:center; justify-content:center;}
  .kpis{grid-template-columns:repeat(2,1fr);}
  .dash-grid{grid-template-columns:1fr;}
  .table-wrap{overflow-x:auto;}
  .form-grid{grid-template-columns:1fr;}
  .detail-head{flex-direction:column; align-items:stretch; gap:12px;}
  .detail-head > div:last-child{align-self:flex-end;}
  .topbar{padding:14px 16px;}
  .content{padding:18px 16px 50px;}
}
@media (max-width:520px){
  .kpis{grid-template-columns:1fr;}
  .curso-actions{flex-direction:column; align-items:stretch;}
}
.login-screen{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:40px; background:linear-gradient(135deg,#BEE6F7,#6FCBF2 45%,#17698F 100%); position:relative; overflow:hidden;}
.login-screen::before{content:''; position:absolute; top:-180px; right:-120px; width:480px; height:480px; border-radius:50%; background:radial-gradient(circle, rgba(255,255,255,.35), rgba(255,255,255,0) 70%);}
.login-screen::after{content:''; position:absolute; bottom:-220px; left:-140px; width:520px; height:520px; border-radius:50%; background:radial-gradient(circle, rgba(255,255,255,.22), rgba(255,255,255,0) 70%);}
.login-shell{display:grid; grid-template-columns:1fr 1fr; width:min(1180px,100%); min-height:640px; background:#fff; border-radius:24px; box-shadow:0 40px 80px -30px rgba(10,30,45,.45); overflow:hidden; position:relative;}
.login-panel-brand{background:linear-gradient(160deg,#0E2A3A,#17698F); display:flex; flex-direction:column; justify-content:center; padding:56px; position:relative; overflow:hidden; color:#fff;}
.login-panel-brand::after{content:''; position:absolute; right:-130px; bottom:-150px; width:400px; height:400px; border-radius:50%; background:radial-gradient(circle, rgba(111,203,242,.28), transparent 70%);}
.login-panel-brand::before{content:''; position:absolute; left:-90px; top:-90px; width:260px; height:260px; border-radius:50%; background:radial-gradient(circle, rgba(111,203,242,.14), transparent 70%);}
.login-brand-row{display:flex; align-items:center; gap:9px; position:relative; margin-bottom:44px;}
.login-brand-row .mark{width:26px; height:26px;}
.login-brand-row .name{font-weight:800; font-size:15px; letter-spacing:.02em;}
.login-eyebrow{font-size:11px; font-weight:800; letter-spacing:.06em; color:#8FD4F2; text-transform:uppercase; position:relative; margin-bottom:14px;}
.login-panel-brand h1{font-size:40px; font-weight:800; line-height:1.1; margin:0 0 18px; position:relative; max-width:420px; color:#fff;}
.login-panel-brand p.desc{font-size:14.5px; color:#C3DCE7; max-width:360px; line-height:1.6; position:relative; margin:0;}
.login-panel-brand .foot{position:relative; margin-top:auto; padding-top:40px; font-size:12px; color:#7FA2B5;}
.login-lang-pills{display:flex; gap:8px; position:relative; margin-top:26px;}
.login-lang-pill{padding:6px 14px; border-radius:999px; font-size:11.5px; font-weight:700; border:1px solid rgba(255,255,255,.35); background:rgba(255,255,255,.08); color:#D7EAF2;}
.login-lang-pill.active{background:#fff; color:var(--ca-primary); border-color:#fff;}
.login-panel-form{background:#fff; display:flex; align-items:center; justify-content:center; padding:40px;}
.login-card{width:min(360px,100%);}
.login-card .login-eyebrow-blue{font-size:11px; font-weight:800; letter-spacing:.06em; color:var(--ca-primary); text-transform:uppercase; margin-bottom:10px;}
.login-card h2{font-size:26px; font-weight:800; margin-bottom:8px; color:#132832;}
.login-card p.lead{font-size:13.5px; color:var(--ca-ink-muted); margin:0 0 26px; line-height:1.5;}
.login-card label{font-weight:700; font-size:13px; color:#1B2A33; display:block; margin-bottom:6px;}
.login-card .form-field{margin-bottom:18px;}
.login-card .form-field input{width:100%; padding:12px 14px; border:1.5px solid #D9E0E5; border-radius:10px; font-size:14px;}
.login-card .form-field input:focus{border-color:var(--ca-primary); outline:none;}
.login-pw-wrap{position:relative;}
.login-pw-wrap input{padding-right:40px !important;}
.login-pw-toggle{position:absolute; right:12px; top:50%; transform:translateY(-50%); background:none; border:none; color:var(--ca-ink-subtle); padding:4px;}
.login-forgot{font-size:12.5px; margin-top:14px;}
.login-forgot a{color:var(--ca-primary); text-decoration:none; font-weight:600;}
.login-mfa-inputs{display:flex; gap:8px; margin:6px 0 20px;}
.login-mfa-inputs input{width:46px; height:54px; text-align:center; font-size:20px; font-weight:700; border:1.5px solid #D9E0E5; border-radius:10px;}
.login-mfa-inputs input:focus{border-color:var(--ca-primary); outline:none;}
.login-hint{font-size:11.5px; color:var(--ca-ink-subtle); margin-top:22px; line-height:1.6; background:#F0F6F9; border:1px solid #DCEAF0; border-radius:10px; padding:13px 15px;}
.login-error{font-size:12px; color:var(--ca-danger); margin-top:8px; display:none;}
.login-error.show{display:block;}
.login-back-link{font-size:12.5px; color:var(--ca-ink-muted); display:flex; align-items:center; gap:5px; margin-bottom:20px; background:none; border:none; padding:0;}
.login-back-link:hover{color:var(--ca-primary);}
@media (max-width:860px){ .login-shell{grid-template-columns:1fr; border-radius:18px;} .login-panel-brand{display:none;} .login-screen{padding:16px;} }

/* ===== Additions for the real application (not in the mock-up) ===== */
@font-face{font-family:"Nunito"; font-style:normal; font-weight:400 800; font-display:swap; src:url("../fonts/nunito-latin.166202cc391c.woff2") format("woff2"); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}
@font-face{font-family:"Nunito"; font-style:normal; font-weight:400 800; font-display:swap; src:url("../fonts/nunito-latin-ext.ffdc8b0c86fb.woff2") format("woff2"); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
.messages{display:flex; flex-direction:column; gap:8px; margin-bottom:16px;}
.msg{padding:11px 14px; border-radius:var(--radius-sm); font-size:13px; font-weight:600; border:1px solid transparent;}
.msg-success{background:#E4F2E9; color:var(--ca-success); border-color:#BEE1CB;}
.msg-error{background:#FBE7E4; color:var(--ca-danger); border-color:#F2C4BE;}
.msg-warning{background:#FBF1E1; color:#7A4B00; border-color:#EFD9AD;}
.msg-info{background:var(--ca-primary-soft); color:var(--ca-primary); border-color:#CDE9F7;}
.field-error{font-size:11.5px; color:var(--ca-danger); font-weight:600;}
.form-field.has-error input,.form-field.has-error select,.form-field.has-error textarea{border-color:var(--ca-danger);}
.form-help{font-size:11px; color:var(--ca-ink-subtle);}
.check-row{display:flex; gap:8px; font-size:12.5px; align-items:flex-start;}
.check-row input{margin-top:2px;}
.inline-form{display:inline;}
.btn-danger{background:#fff; color:var(--ca-danger); border-color:#F2C4BE;}
.btn-danger:hover{background:#FBE7E4;}
.btn-block{width:100%; justify-content:center;}
.actions-row{display:flex; gap:8px; flex-wrap:wrap; align-items:center;}
.lock-note{display:inline-flex; align-items:center; gap:6px; font-size:11.5px; color:var(--ca-ink-muted); font-weight:700;}
.lock-note svg{width:14px; height:14px; stroke:currentColor;}
.qr-box{display:flex; gap:20px; align-items:center; flex-wrap:wrap; background:#F7F9FA; border-radius:var(--radius-sm); padding:16px; margin:12px 0;}
.qr-box svg.segno{background:#fff; padding:8px; border-radius:8px; width:164px; height:164px;}
.secret-code{font-family:ui-monospace,monospace; font-size:13px; letter-spacing:.08em; word-break:break-all; background:#fff; border:1px solid var(--ca-border); border-radius:6px; padding:6px 8px;}
.org-chip a,.org-chip-link{display:flex; align-items:center; gap:8px; text-decoration:none; color:inherit;}
.nav-item{text-decoration:none;}
.lang-switch form{display:contents;}
.login-lang-pills form{display:contents;}
.mt-0{margin-top:0;} .mt-8{margin-top:8px;} .mt-12{margin-top:12px;} .mt-16{margin-top:16px;} .mb-12{margin-bottom:12px;}
.text-muted{color:var(--ca-ink-muted);} .text-danger{color:var(--ca-danger);} .text-success{color:var(--ca-success);}
.w-max-320{max-width:320px;} .w-max-560{max-width:560px;}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}
.note-box{background:#F3F4F5; padding:10px 12px; border-radius:8px; margin-bottom:14px; font-size:11.5px; color:var(--ca-ink-muted);}
.badge-muted{background:#E3E7EA; color:var(--ca-ink-muted);}
.topbar-left{display:flex; align-items:center; gap:6px;}
.topbar-right{display:flex; align-items:center; gap:14px;}
.side-foot form{margin:0;}
@media (max-width:960px){ .topbar-right{gap:8px;} .topbar-title{font-size:18px;} }
.login-card h2.h2-sm{font-size:22px;}
.steps-list{font-size:13px; color:var(--ca-ink-muted); padding-left:18px; line-height:1.7; margin:0 0 6px;}
.login-card .form-field input{width:100%;}
.error-card{background:#fff; border-radius:24px; padding:48px; max-width:520px; width:100%; position:relative; z-index:1; box-shadow:0 40px 80px -30px rgba(10,30,45,.45);}
.error-card h1{font-size:26px; font-weight:800; margin:18px 0 8px;}
.error-card .lead{color:var(--ca-ink-muted); margin:0 0 22px;}
.error-brand{color:var(--ca-ink); margin-bottom:0;}
.modal-title{font-size:17px;}
.mt-4{margin-top:4px;}
.code-input{min-width:0; width:120px;}
.row-static{cursor:default;}
.login-pw-toggle svg{width:16px; height:16px;}
.text-warning{color:var(--ca-warning);}
progress.credit-bar{width:100%; height:10px; border:none; border-radius:999px; overflow:hidden; background:#E3E7EA; appearance:none; -webkit-appearance:none; margin-bottom:10px; display:block;}
progress.credit-bar::-webkit-progress-bar{background:#E3E7EA; border-radius:999px;}
progress.credit-bar::-webkit-progress-value{background:var(--ca-primary); border-radius:999px;}
progress.credit-bar::-moz-progress-bar{background:var(--ca-primary); border-radius:999px;}
a.link-row{text-decoration:none; color:inherit;}
a.link-row:hover{background:#F7F9FA;}
a.row-link{color:inherit; text-decoration:none;}
.declarations{display:flex; flex-direction:column; gap:8px; background:#F7F9FA; border-radius:var(--radius-sm); padding:12px 14px;}
.limite-note svg{width:13px; height:13px; vertical-align:-2px;}
.status-pill-pendiente{background:var(--ca-ink-subtle);} .status-pill-en_diseno{background:#6B4FA0;} .status-pill-convertida{background:var(--ca-success);} .status-pill-rechazada{background:#4A5560;}
.b-valido{background:var(--ca-primary);}
.row-actions{display:flex; gap:6px; flex-wrap:wrap;}
.note-cell{font-size:11.5px; color:var(--ca-ink-muted); margin-top:3px;}
.filter-check{align-self:center;}
.empty-state.small{padding:16px;}
.note-box svg{width:13px; height:13px; vertical-align:-2px;}
.form-field input:disabled,.form-field select:disabled,.form-field textarea:disabled{background:#F7F9FA; color:var(--ca-ink-muted);}
a.btn{text-decoration:none;}
.b-borrador{background:#8FA0AC;} .b-pendiente{background:var(--ca-ink-subtle);} .b-modificado{background:#6B4FA0;}
.b-incidentado{background:var(--ca-danger);} .b-finalizado{background:var(--ca-success);} .b-anulado{background:#4A5560;}
.check-list ul,.check-list div{list-style:none; padding:0; margin:0; display:flex; flex-direction:column; gap:6px;}
.check-list label{display:flex; gap:8px; align-items:center; font-weight:600; font-size:12.5px; color:var(--ca-ink);}
.check-inline ul,.check-inline div{list-style:none; padding:0; margin:0; display:flex; flex-wrap:wrap; gap:6px 14px;}
.check-inline label{display:flex; gap:6px; align-items:center; font-size:12.5px; font-weight:600; color:var(--ca-ink);}
.issue-list{margin:8px 0 0; padding-left:18px; font-size:12.5px; color:var(--ca-warning); line-height:1.6;}
.deadline-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:10px 20px;}
.deadline-item .l{font-size:11px; font-weight:700; color:var(--ca-ink-muted); text-transform:uppercase; letter-spacing:.02em;}
.deadline-item .v{font-size:13.5px; margin-top:3px;}
.deadline-item .v.overdue{color:var(--ca-danger); font-weight:700;}
.data-table{width:100%; border-collapse:collapse; font-size:12.5px;}
.data-table th{font-size:10.5px; text-align:left; background:none; padding:6px 8px;}
.data-table td{padding:8px; border-bottom:1px solid var(--ca-border);}
.data-table tbody tr{cursor:default;}
.inline-input{width:72px; padding:5px 7px; border:1px solid var(--ca-border); border-radius:6px; font-size:12.5px;}
.inline-select{padding:5px 7px; border:1px solid var(--ca-border); border-radius:6px; font-size:12px; background:#fff;}
.fieldset-card{border:1px solid var(--ca-border); border-radius:var(--radius-sm); padding:14px 16px; margin-top:12px;}
.fieldset-card legend{font-size:12.5px; font-weight:800; padding:0 6px;}
.tick{color:var(--ca-success); font-weight:800;} .cross{color:var(--ca-ink-subtle);}
@media (max-width:960px){ .deadline-grid{grid-template-columns:1fr 1fr;} .meta-grid{grid-template-columns:1fr 1fr;} }
@media (max-width:520px){ .deadline-grid,.meta-grid{grid-template-columns:1fr;} }
.modal.modal-wide{width:min(760px,100%);}
.modal-tabs{padding:0 22px; border-bottom:1px solid var(--ca-border);}
.table-plain{box-shadow:none; border:1px solid var(--ca-border);}
.w-max-760{max-width:760px;}
.question-card{border:1px solid var(--ca-border); border-radius:var(--radius-sm); padding:14px 16px; margin:0 0 14px;}
.question-card legend{font-size:13.5px; font-weight:700; padding:0 6px;}
.q-num{color:var(--ca-primary);}
.option-row{padding:6px 0;}
span.curso-action[aria-disabled="true"]{opacity:.55; cursor:not-allowed;}
span.curso-action.done[aria-disabled="true"]{opacity:1; cursor:default;}
a.curso-action{text-decoration:none;}
.quality-head{border-bottom:1px solid var(--ca-border); padding-bottom:10px; margin-bottom:10px;}
.lead-text{font-size:12.5px; color:var(--ca-ink-muted);}
.quality-item{margin-bottom:12px;}
.radio-list{display:flex; flex-direction:column; gap:4px;}
.rating-table .block-row th{font-size:12px; color:var(--ca-ink); background:#F7F9FA; padding:8px;}
.rating-cell{white-space:nowrap; text-align:right;}
.scale-option{display:inline-flex; align-items:center; gap:3px; margin-left:8px; font-weight:700;}
tr.row-error td{background:#FBE7E4;}
.choice-list{margin:8px 0 0; padding-left:18px; font-size:12.5px; color:var(--ca-ink-muted);}
.choice-list li.correct{color:var(--ca-success); font-weight:700;}
.choice-edit{display:flex; gap:8px; align-items:center; margin-top:6px;}
.choice-edit input[type=text]{flex:1; padding:8px 10px; border:1px solid var(--ca-border); border-radius:8px;}
.kpis-auto{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));}
a.kpi{text-decoration:none; color:inherit; display:block;}
a.kpi:hover{box-shadow:var(--shadow-lift);}
.seg-borrador{background:#8FA0AC;} .seg-pendiente{background:#B4BEC6;} .seg-valido{background:#17698F;} .seg-modificado{background:#6B4FA0;}
.seg-incidentado{background:#B3261E;} .seg-finalizado{background:#1B7A45;} .seg-anulado{background:#4A5560;}
a.plazo-item{text-decoration:none; color:inherit;}
a.panel-hint{text-decoration:none;}
a.tab{text-decoration:none;}
.table-scroll{overflow-x:auto;}
.costes-table td input[inputmode]{width:96px; text-align:right; padding:6px 8px; border:1px solid var(--ca-border); border-radius:6px; font-size:12.5px;}
.periods-row td{text-align:left !important; border-bottom:2px solid var(--ca-border); padding-top:2px;}
.periods-row .inline-input{width:90px; margin-right:10px;}
.cofi-ring.ok{background:var(--ca-success);} .cofi-ring.warn{background:var(--ca-warning);}
.kind-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:16px;}
.kind-card .n{font-size:13px; font-weight:700;} .kind-card .m{font-size:11.5px; color:var(--ca-ink-subtle); margin-top:2px;}
.comm-card{margin-bottom:12px;}
.comm-card.comm-ready{border-color:var(--ca-primary); box-shadow:0 0 0 1px var(--ca-primary) inset;}
.comm-card.comm-superseded{opacity:.65;}
.guided-flow{margin-top:14px; border-top:1px solid var(--ca-border); padding-top:14px;}
.step3{line-height:1.7;}
.xsd-errors{white-space:pre-wrap; font-size:11px; margin:8px 0 0; max-height:180px; overflow:auto;}
.fundae-pendiente{background:var(--ca-primary-soft); color:var(--ca-primary);} .fundae-en_proceso{background:#FBF1E1; color:var(--ca-warning);}
.fundae-procesado{background:#E4F2E9; color:var(--ca-success);} .fundae-error,.fundae-procesado_con_errores{background:#FBE7E4; color:var(--ca-danger);}
.toggle-mode form,.toggle-mode{display:flex; align-items:center; gap:8px;}
button.switch{border:none; padding:0;}
.status-form{margin-top:12px; border-top:1px solid var(--ca-border); padding-top:12px;}
@media (max-width:960px){ .kind-grid{grid-template-columns:1fr;} .xml-actions{flex-direction:column; align-items:flex-start; gap:10px;} }
.doc-name{display:flex; align-items:center; gap:8px;}
.doc-name svg{width:15px; height:15px; flex-shrink:0; color:var(--ca-ink-muted);}
.invoice-card{border-color:var(--ca-primary); box-shadow:0 0 0 1px var(--ca-primary) inset; margin-bottom:16px;}
.step-h{margin:12px 0 6px !important; padding-top:12px !important;}
.upload-form{display:block;}
.upload-controls{justify-content:center;}
.generate-row form{margin:0;}
.small-break{word-break:break-all; font-size:11px;}
.unread-badge{background:var(--ca-danger);}
.thread{margin-top:12px; border-top:1px solid var(--ca-border); padding-top:12px;}
.thread-meta{font-size:11.5px; color:var(--ca-ink-muted); margin-bottom:10px;}
.thread-msg{margin-bottom:10px; padding:8px 12px; border-radius:8px; background:#F7F9FA;}
.thread-msg.from-admin{background:var(--ca-primary-soft);}
.thread-msg .who{font-size:12px; font-weight:700;} .thread-msg .who span{font-weight:400; color:var(--ca-ink-subtle); font-size:11px;}
.thread-msg .text{font-size:13px; margin-top:2px;}
.thread-form{display:flex; gap:8px; align-items:flex-end; margin-top:10px;}
.thread-form textarea{flex:1; padding:8px 10px; border:1px solid var(--ca-border); border-radius:8px; resize:vertical;}
.nowrap{white-space:nowrap;} .history-row{align-items:flex-start;}
a.article-card{display:block; text-decoration:none; color:inherit;}
a.article-card:hover{box-shadow:var(--shadow-lift);}
.help-body p{margin:0 0 14px; font-size:14px; line-height:1.7;}
.help-img{max-width:100%; border-radius:8px; margin:10px 0; display:block;}

/* ===== Phase 7: responsive polish (no horizontal page scroll on phones) ===== */
.main,.content,.dash-grid > *,.tabpanel,.panel,.table-wrap,.detail-head > div{min-width:0;}
.detail-title{overflow-wrap:anywhere;}
.topbar-title{overflow-wrap:anywhere;}
@media (max-width:960px){
  .app{grid-template-columns:minmax(0,1fr);}
  .topbar{flex-wrap:wrap; gap:10px;}
  .topbar-left{flex:1 1 auto; min-width:0;}
  .topbar-right{flex:1 1 100%; justify-content:space-between; flex-wrap:wrap;}
  .topbar-actions{flex-wrap:wrap;}
  .topbar-sub{display:none;}
  .filters-row .search-field{flex:1 1 100%; min-width:0;}
  .filters-row .select-field{flex:1 1 auto; min-width:0;}
  .detail-title{font-size:19px;}
  .detail-head .actions-row{justify-content:flex-end;}
  .modal{width:100%;}
  .form-grid .form-field.full,.form-grid .form-field{grid-column:auto;}
  .cofi-box{flex-direction:row; align-items:flex-start;}
  .cierre-cta{flex-direction:column; align-items:stretch; gap:12px;}
  .thread-form{flex-direction:column; align-items:stretch;}
  .xml-actions{flex-direction:column; align-items:flex-start; gap:10px;}
  .mini-list-row{flex-wrap:wrap; gap:8px;}
  .deadline-grid,.meta-grid{grid-template-columns:1fr 1fr;}
  .login-card{width:100%;}
}
@media (max-width:520px){
  .deadline-grid,.meta-grid{grid-template-columns:1fr;}
  .kpis,.kpis-auto{grid-template-columns:1fr;}
  .content{padding:14px 12px 40px;}
  .tabpanel{padding:16px 14px;}
  .panel{padding:14px;}
  .btn{white-space:normal;}
  .lang-switch .lang-btn{padding:5px 9px;}
}
/* Keyboard focus visible everywhere (accessibility) */
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.tab:focus-visible{outline:2px solid var(--ca-primary); outline-offset:2px;}
.nav-item:focus-visible{outline-color:#6FCBF2;}
