:root{--color-primary: #1d4ed8;--color-primary-hover: #1e40af;--color-secondary: #475569;--color-success: #047857;--color-warning: #b45309;--color-danger: #b91c1c;--color-info: #0369a1;--color-bg: #f5f7fb;--color-surface: #fff;--color-surface-subtle: #f8fafc;--color-border: #dbe2ea;--color-text: #172033;--color-text-muted: #64748b;--color-on-primary: #fff;--sidebar-width: 272px;--header-height: 76px;--radius-sm: .375rem;--radius-md: .625rem;--radius-lg: .875rem;--shadow-sm: 0 1px 2px rgba(15,23,42,.06);--shadow-md: 0 8px 24px rgba(15,23,42,.1)}html{scroll-behavior:smooth}body{background:var(--color-bg);color:var(--color-text);font-family:Figtree,system-ui,sans-serif}.auth-logo{max-width:100px}.password-field{position:relative}.password-field .form-control{padding-right:3rem}.password-toggle{align-items:center;background:transparent;border:0;color:var(--color-text-muted);display:flex;height:100%;justify-content:center;min-width:2.75rem;padding:0;position:absolute;right:0;top:0}.password-toggle:hover,a{color:var(--color-primary)}a:hover{color:var(--color-primary-hover)}:focus-visible{outline:3px solid rgba(29,78,216,.35)!important;outline-offset:2px}.skip-link{position:fixed;left:1rem;top:-4rem;z-index:2000;background:#fff;padding:.75rem 1rem}.skip-link:focus{top:1rem}.app-sidebar{background:#10213f;color:#fff;inset:0 auto 0 0;overflow-y:auto;position:fixed;width:var(--sidebar-width);z-index:1045}.app-brand{background:radial-gradient(circle at 50% 30%,rgba(37,99,235,.22),transparent 65%);border-bottom:1px solid rgba(255,255,255,.12);display:flex;justify-content:center;min-height:148px;padding:1.1rem;align-items:center}.app-brand a{display:flex;justify-content:center;width:100%}.app-brand img{max-height:112px;max-width:210px;object-fit:contain;width:100%}.sidebar-label{color:#93a4bd;font-size:.69rem;font-weight:700;letter-spacing:.1em;padding:1.35rem 1.25rem .4rem;text-transform:uppercase}.sidebar-nav .nav-link{align-items:center;border-radius:var(--radius-md);color:#cbd5e1;display:flex;gap:.75rem;margin:.15rem .75rem;min-height:44px;padding:.65rem .8rem}.sidebar-nav .nav-link:hover,.sidebar-nav .nav-link.active{background:#ffffff1c;color:#fff}.sidebar-nav .nav-link.active{box-shadow:inset 3px 0 #60a5fa}.sidebar-nav .nav-link i{width:1.15rem;text-align:center}.app-main{margin-left:var(--sidebar-width);min-height:100vh}.app-header{align-items:center;background:#fffffff5;border-bottom:1px solid var(--color-border);display:flex;min-height:var(--header-height);padding:.65rem 1.5rem;position:sticky;top:0;z-index:1030}.context-switcher{max-width:480px}.context-summary{color:var(--color-text-muted);font-size:.78rem}.app-content{padding:1.5rem}.sidebar-backdrop{background:#0f172a8c;display:none;inset:0;position:fixed;z-index:1040}.catalog-price-modal-open{display:block}.catalog-price-modal-active{overflow:hidden}.catalog-price-backdrop{background:#00000080;inset:0;position:fixed;z-index:1050}.page-header{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin-bottom:1.25rem}.page-title{font-size:clamp(1.45rem,2vw,1.9rem);font-weight:700;letter-spacing:-.025em;margin:0}.page-description{color:var(--color-text-muted);margin:.35rem 0 0}.breadcrumb{font-size:.82rem;margin-bottom:.55rem}.card{border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{background:var(--color-surface);border-bottom-color:var(--color-border);padding:1rem 1.15rem}.card-body{padding:1.15rem}.stat-card{height:100%;padding:1.2rem}.stat-label{color:var(--color-text-muted);font-size:.8rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.stat-card{--stat-accent: var(--color-primary);border-top:3px solid var(--stat-accent);color:var(--color-text);overflow:hidden;position:relative;transition:transform .18s ease,box-shadow .18s ease}.stat-card:after{background:var(--stat-accent);border-radius:999px;content:"";height:5rem;opacity:.045;position:absolute;right:-1.5rem;top:-1.5rem;width:5rem}.stat-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.stat-icon,.list-icon,.quick-action-icon{align-items:center;background:color-mix(in srgb,var(--stat-accent, var(--color-primary)) 12%,white);border-radius:var(--radius-md);color:var(--stat-accent, var(--color-primary));display:inline-flex;flex:0 0 2.75rem;height:2.75rem;justify-content:center}.stat-card--success{--stat-accent: var(--color-success)}.stat-card--warning{--stat-accent: var(--color-warning)}.stat-card--danger{--stat-accent: var(--color-danger)}.stat-card--info{--stat-accent: var(--color-info)}.stat-card--accent{--stat-accent: color-mix(in srgb, var(--color-primary) 55%, var(--color-secondary))}.stat-card .stat-icon{color:var(--stat-accent)}.stat-trend{color:var(--color-success);font-size:.8rem;font-weight:700;margin-top:.35rem}.stat-value{font-size:1.75rem;font-weight:750;margin-top:.25rem}.stat-context{color:var(--color-text-muted);font-size:.78rem;margin-top:.2rem}.dashboard-hero{background:linear-gradient(135deg,#fff 25%,#edf5ff);overflow:hidden}.dashboard-kpis{display:grid;gap:1rem;grid-template-columns:repeat(5,minmax(0,1fr))}.dashboard-kpis--four{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-list{display:grid;gap:.25rem}.dashboard-list-item{align-items:center;border-bottom:1px solid var(--color-border);color:var(--color-text);display:flex;gap:.9rem;min-height:4.25rem;padding:.75rem .25rem;text-decoration:none}.dashboard-list-item:last-child{border-bottom:0}.dashboard-list-item small,.quick-action small{color:var(--color-text-muted);display:block;margin-top:.2rem}.list-date{align-items:center;background:var(--color-surface-subtle);border-radius:var(--radius-md);display:flex;flex:0 0 3rem;flex-direction:column;padding:.4rem}.quick-actions-grid{display:grid;gap:.75rem;grid-template-columns:repeat(3,minmax(0,1fr))}.quick-action{align-items:center;border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);display:flex;gap:.8rem;min-height:5rem;padding:.8rem;text-decoration:none;transition:border-color .18s ease,background .18s ease}.quick-action:hover{background:var(--color-surface-subtle);border-color:var(--color-primary)}.quick-action>.fa-arrow-right{color:var(--color-text-muted);margin-left:auto}.dashboard-chart{min-height:320px;position:relative}.chart-card{overflow:hidden}.chart-card .card-header{border-bottom:0;padding-bottom:.35rem}.dashboard-chart--line{min-height:350px;padding-top:.5rem}.dashboard-chart--doughnut{margin-inline:auto;min-height:245px;max-width:290px}.chart-legend-list{display:grid;gap:.55rem;list-style:none;margin:.75rem 0 0;padding:0}.chart-legend-list li{align-items:center;color:var(--color-text-muted);display:grid;font-size:.82rem;gap:.5rem;grid-template-columns:auto 1fr auto}.chart-legend-list strong{color:var(--color-text)}.chart-legend-swatch{border-radius:50%;height:.65rem;width:.65rem}.chart-legend-swatch--success{background:var(--color-success)}.chart-legend-swatch--danger{background:var(--color-danger)}.table{--bs-table-bg: transparent;margin-bottom:0}.table>:not(caption)>*>*{border-bottom-color:var(--color-border);padding:.8rem .75rem;vertical-align:middle}.table thead th{color:var(--color-text-muted);font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.form-label{font-weight:600}.form-control,.form-select{border-color:#cbd5e1;min-height:42px}.form-control:focus,.form-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 .2rem #1d4ed824}.btn{border-radius:var(--radius-md);font-weight:600;min-height:40px}.btn-primary{--bs-btn-bg: var(--color-primary);--bs-btn-border-color: var(--color-primary);--bs-btn-hover-bg: var(--color-primary-hover);--bs-btn-hover-border-color: var(--color-primary-hover)}.empty-state{color:var(--color-text-muted);padding:2.5rem 1rem;text-align:center}.empty-state i{color:#94a3b8;font-size:2rem;margin-bottom:.75rem}.avatar{border-radius:50%;height:38px;object-fit:cover;width:38px}.badge{font-weight:650}.scope-chip{background:#eef2ff;color:#3730a3}.required-mark{color:var(--color-danger)}.notification-bell{height:42px;min-height:42px;position:relative;width:42px}.notification-count{align-items:center;background:var(--color-danger);border:2px solid #fff;border-radius:999px;color:#fff;display:flex;font-size:.62rem;font-weight:700;height:1.25rem;justify-content:center;min-width:1.25rem;padding-inline:.2rem;position:absolute;right:-.35rem;top:-.35rem}.notification-dropdown{max-width:calc(100vw - 1rem);padding:0;width:360px}.notification-dropdown-header{align-items:center;display:flex;justify-content:space-between;padding:.85rem 1rem}.notification-preview{border-top:1px solid var(--color-border);display:grid;gap:.2rem;padding:.75rem 1rem;white-space:normal}.notification-preview strong{font-size:.84rem}.notification-preview span,.notification-preview small{color:var(--color-text-muted);font-size:.76rem}.notification-preview.is-unread{background:color-mix(in srgb,var(--color-primary) 6%,white);box-shadow:inset 3px 0 var(--color-primary)}.notification-filters{display:flex;gap:.5rem}.notification-item{align-items:flex-start;border-bottom:1px solid var(--color-border);display:grid;gap:1rem;grid-template-columns:auto 1fr auto;padding:1rem 1.15rem}.notification-item:last-child{border-bottom:0}.notification-item--unread{background:color-mix(in srgb,var(--color-primary) 4%,white);box-shadow:inset 3px 0 var(--color-primary)}.notification-category-icon{align-items:center;background:color-mix(in srgb,var(--color-primary) 10%,white);border-radius:var(--radius-md);color:var(--color-primary);display:flex;height:2.5rem;justify-content:center;width:2.5rem}.notification-item-actions{align-items:flex-end;display:flex;flex-direction:column;gap:.35rem}.notification-preferences{display:grid;gap:1rem}.notification-preference{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:1rem 1rem 1rem 3rem}@media(max-width:991.98px){.app-sidebar{transform:translate(-100%);transition:transform .2s ease}body.sidebar-open .app-sidebar{transform:translate(0)}body.sidebar-open .sidebar-backdrop{display:block}.app-main{margin-left:0}.app-header{padding-inline:1rem}.context-switcher{max-width:none}.dashboard-kpis,.quick-actions-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-chart--line{min-height:320px}}@media(max-width:767.98px){.app-content{padding:1rem}.app-header{align-items:stretch;flex-wrap:wrap;gap:.5rem}.page-header{display:block}.page-header-actions{margin-top:1rem}.page-header-actions .btn{width:100%}.context-switcher{order:3;width:100%}.table-responsive{border:1px solid var(--color-border);border-radius:var(--radius-md)}.notification-item{grid-template-columns:auto 1fr}.notification-item-actions{align-items:flex-start;flex-direction:row;grid-column:2}.dashboard-kpis,.quick-actions-grid{grid-template-columns:1fr}.dashboard-chart--line{min-height:280px}.dashboard-chart--doughnut{min-height:230px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important}}.calendar-toolbar{align-items:center;display:grid;gap:1rem;grid-template-columns:1fr auto 1fr}.calendar-navigation{display:flex;gap:.4rem}.calendar-view-selector{justify-self:end}.calendar-legend{display:flex;flex-wrap:wrap;gap:.65rem 1rem;font-size:.78rem}.calendar-legend span{align-items:center;display:inline-flex;gap:.35rem}.calendar-swatch{border-radius:.2rem;display:inline-block;height:.7rem;width:.7rem}.calendar-swatch--academic{background:#2563eb}.calendar-swatch--technical{background:#64748b}.calendar-swatch--evaluation{background:#7c3aed}.calendar-swatch--cancelled{background:#94a3b8}.calendar-stage{overflow-x:auto;padding:1rem}.calendar-empty{color:var(--color-text-muted);padding:0 1rem 1.5rem;text-align:center}.calendar-month{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));min-width:840px}.calendar-weekday{color:var(--color-text-muted);font-size:.72rem;font-weight:700;padding:.45rem;text-align:center;text-transform:uppercase}.calendar-day{border:1px solid var(--color-border);min-height:125px;padding:.4rem}.calendar-day--outside{background:var(--color-surface-subtle);color:var(--color-text-muted)}.calendar-day--today{box-shadow:inset 0 0 0 2px var(--color-primary)}.calendar-day-number{font-size:.78rem;font-weight:700;margin-bottom:.3rem;text-align:right}.calendar-event{background:#eff6ff;border:0;border-left:3px solid #2563eb;border-radius:.25rem;color:#1e3a8a;display:flex;font-size:.7rem;gap:.3rem;margin-bottom:.25rem;overflow:hidden;padding:.25rem .35rem;text-align:left;width:100%}.calendar-event:hover,.calendar-event:focus{filter:brightness(.96);outline:2px solid color-mix(in srgb,var(--color-primary) 35%,transparent)}.calendar-event--technical{background:#f1f5f9;border-left-color:#64748b;color:#334155}.calendar-event--evaluation{background:#f5f3ff;border-left-color:#7c3aed;color:#5b21b6}.calendar-event--cancelled{background:#f1f5f9;border-left-color:#94a3b8;color:#64748b;text-decoration:line-through}.calendar-event-time{flex:0 0 auto;font-weight:700}.calendar-event-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-more{background:none;border:0;color:var(--color-primary);font-size:.72rem;font-weight:700;padding:.15rem}.calendar-week{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));min-width:980px}.calendar-week-day{border-left:1px solid var(--color-border)}.calendar-week-day:last-child{border-right:1px solid var(--color-border)}.calendar-week-heading{background:var(--color-surface-subtle);border-block:1px solid var(--color-border);font-size:.8rem;margin:0;padding:.55rem;text-align:center}.calendar-timeline{display:grid;gap:.35rem;min-height:280px;padding:.45rem}.calendar-timeline .calendar-event{margin:0;min-height:38px}.calendar-event--overlap{box-shadow:0 0 0 2px #f59e0b}.calendar-event--overlap:after{color:#92400e;content:"Simultáneo";display:block;font-size:.6rem;font-weight:700;margin-left:auto}.calendar-day-agenda{display:grid;gap:.65rem}.calendar-agenda-item{border:1px solid var(--color-border);border-left:4px solid #2563eb;border-radius:var(--radius-md);display:grid;gap:1rem;grid-template-columns:110px 1fr;padding:.9rem}.calendar-agenda-item--technical{border-left-color:#64748b}.calendar-agenda-item--evaluation{border-left-color:#7c3aed}.calendar-agenda-item--cancelled{border-left-color:#94a3b8;opacity:.75}.calendar-agenda-time{font-weight:700}.calendar-agenda-title{background:none;border:0;color:var(--color-primary);font-weight:700;padding:0;text-align:left}.calendar-agenda-resources{color:var(--color-text-muted);font-size:.8rem;margin-top:.25rem}.calendar-event-details{display:grid;gap:.55rem 1rem;grid-template-columns:110px 1fr}.calendar-event-details dt{color:var(--color-text-muted);font-size:.78rem}.calendar-event-details dd{margin:0}@media(max-width:767.98px){.calendar-toolbar{grid-template-columns:1fr}.calendar-navigation,.calendar-view-selector{justify-self:stretch}.calendar-navigation .btn,.calendar-view-selector .btn{flex:1}.calendar-toolbar h2{grid-row:1}.calendar-agenda-item{grid-template-columns:1fr;gap:.35rem}.calendar-event-details{grid-template-columns:1fr;gap:.15rem}.calendar-event-details dd{margin-bottom:.55rem}}
