/* ESTILOS GLOBALES */
/* Fuente: dashboard.php */
@font-face { font-family:"Inter"; src:url("/SIGE/assets/fonts/InterVariable.woff2") format("woff2"); font-style:normal; font-weight:100 900; font-display:swap; }
        :root { --shell-header-height:70px; --institutional:#0f172a; --institutional-glass:radial-gradient(circle at 14% 0,rgba(255,255,255,.15),transparent 30%),radial-gradient(circle at 88% 100%,rgba(100,116,139,.13),transparent 36%),linear-gradient(135deg,rgba(15,23,42,.96),rgba(15,23,42,.87)); --institutional-soft:#eef1f6; --institutional-muted:#64708a; --primary:#757b84; --primary-dark:#555b64; --primary-soft:#fff; --surface:#fff; --background:#f5f6f8; --text:#20242b; --muted:#818791; --danger:#e66c77; --border:#e5e7eb; --shadow:rgba(32,36,43,.08); }
        html[data-theme="dark"] { --institutional-glass:radial-gradient(circle at 14% 0,rgba(148,163,184,.14),transparent 31%),radial-gradient(circle at 88% 100%,rgba(71,85,105,.12),transparent 37%),linear-gradient(135deg,rgba(16,24,39,.96),rgba(8,13,24,.90)); --institutional-soft:#293247; --institutional-muted:#aab5ce; --surface:#202329; --background:#17191d; --text:#f1f2f4; --muted:#a8adb5; --border:#34383f; --shadow:rgba(0,0,0,.24); }
        * { box-sizing:border-box; }
        .sr-only { position:absolute!important; width:1px!important; height:1px!important; overflow:hidden!important; clip:rect(0,0,0,0)!important; white-space:nowrap!important; }
        html { font-family:"Segoe UI Variable Text","Aptos","Segoe UI",Roboto,"Helvetica Neue",Arial,ui-sans-serif,system-ui,sans-serif; }
        body { margin:0; min-height:100vh; background:var(--background); color:var(--text); font-family:inherit; }
        button,input,select,textarea { font:inherit; }
        a { -webkit-tap-highlight-color:transparent; }
        .app-shell { display:grid; width:100%; min-height:100vh; grid-template-columns:82px minmax(0,1fr); overflow:visible; background:var(--surface); transition:background .25s ease; }
        .page { min-width:0; min-height:100%; margin:0; padding:0 0 38px; }
        .topbar { position:relative; z-index:5; display:flex; height:var(--shell-header-height); min-height:var(--shell-header-height); align-items:center; gap:18px; padding:8px 22px; border-bottom:1px solid var(--border); background:#f1f1f2; transition:background .25s ease,border-color .25s ease; }
        html[data-theme="dark"] .topbar { background:#25282e; }
        .topbar__search { position:static; display:flex; width:min(480px,calc(100vw - 430px)); min-width:260px; margin-left:auto; align-items:center; gap:11px; padding:0 15px; border:1px solid var(--border); border-radius:17px; background:var(--surface); transition:border-color .2s ease,box-shadow .2s ease; }
        .topbar__search:focus-within { border-color:var(--institutional-muted); box-shadow:0 0 0 4px rgba(15,23,42,.09); }
        .topbar__search svg,.topbar__button svg,.account svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
        .topbar__search input { width:100%; height:46px; border:0; outline:0; background:transparent; color:var(--text); font:inherit; }
        .topbar__search input::placeholder { color:var(--muted); }
        .topbar__search-button { display:grid; width:36px; height:36px; flex:0 0 auto; place-items:center; padding:0; border:0; border-radius:11px; background:transparent; color:var(--text); cursor:pointer; transition:background .16s ease,color .16s ease; }
        .topbar__search-button:hover { background:var(--background); color:var(--institutional); }
        .topbar__search-button svg { width:20px; height:20px; }
        .topbar__actions { display:flex; align-items:center; gap:8px; }
        .topbar__button { position:relative; display:grid; width:46px; height:46px; place-items:center; border:1px solid var(--border); border-radius:50%; background:var(--surface); box-shadow:0 5px 15px var(--shadow); color:var(--text); cursor:pointer; transition:transform .16s ease,background .2s ease; }
        .topbar__button:hover { background:var(--background); transform:translateY(-1px); }
        .topbar__button:active { transform:scale(.93); }
        .topbar__badge { position:absolute; top:-3px; right:-2px; display:grid; min-width:18px; height:18px; place-items:center; padding:0 4px; border:2px solid var(--surface); border-radius:10px; background:#e65f6d; color:#fff; font-size:9px; font-weight:800; }
        .notifications{position:relative}.notifications__menu{position:absolute;z-index:30;top:57px;right:0;width:min(390px,calc(100vw - 28px));overflow:hidden;border:1px solid var(--border);border-radius:20px;background:var(--surface);box-shadow:0 20px 55px rgba(15,23,42,.2)}.notifications__menu[hidden]{display:none}.notifications__menu>header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 17px;border-bottom:1px solid var(--border)}.notifications__menu>header strong{font-size:14px}.notifications__menu form{margin:0}.notifications__menu form button{padding:0;border:0;background:transparent;color:var(--institutional-muted);cursor:pointer;font-size:10px!important;font-weight:700}.notifications__list{max-height:390px;overflow:auto}.notifications__item{position:relative;display:grid;grid-template-columns:8px minmax(0,1fr);gap:10px;padding:14px 17px;border-bottom:1px solid var(--border);color:var(--text);text-decoration:none}.notifications__item:last-child{border-bottom:0}.notifications__item:hover{background:var(--background)}.notifications__item>i{width:7px;height:7px;margin-top:5px;border-radius:50%;background:transparent}.notifications__item.is-unread{background:color-mix(in srgb,var(--institutional-soft) 55%,var(--surface))}.notifications__item.is-unread>i{background:#e65f6d}.notifications__item span,.notifications__item strong,.notifications__item small,.notifications__item time{display:block;min-width:0}.notifications__item strong{font-size:12px}.notifications__item small{margin-top:4px;color:var(--muted);font-size:10px;line-height:1.45}.notifications__item time{margin-top:7px;color:var(--institutional-muted);font-size:9px;font-weight:650}.notifications__empty{margin:0;padding:34px 18px;color:var(--muted);font-size:12px;text-align:center}
        .theme-icon--sun { display:none; }
        html[data-theme="dark"] .theme-icon--moon { display:none; }
        html[data-theme="dark"] .theme-icon--sun { display:block; }
        .account { position:relative; }
        .account__trigger { display:flex; min-width:225px; height:52px; align-items:center; gap:11px; padding:5px 10px 5px 6px; border:0; border-radius:18px; background:transparent; color:var(--text); cursor:pointer; text-align:left; transition:background .2s ease; }
        .account__trigger:hover,.account__trigger[aria-expanded="true"] { background:var(--background); }
        .account__avatar { display:grid; width:42px; height:42px; flex:0 0 auto; place-items:center; border:1px solid rgba(15,23,42,.08); border-radius:14px; background:var(--institutional-soft); box-shadow:0 5px 14px var(--shadow); color:var(--institutional); font-size:13px; font-weight:850; }
        .account__avatar img { width:100%; height:100%; border-radius:inherit; object-fit:cover; }
        html[data-theme="dark"] .account__avatar { color:#fff; }
        .account__details { min-width:0; flex:1; }
        .account__details strong,.account__details small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
        .account__details strong { font-size:13px; }
        .account__details small { margin-top:3px; color:var(--muted); font-size:10px; }
        .account__chevron { width:17px!important; transition:transform .2s ease; }
        .account__trigger[aria-expanded="true"] .account__chevron { transform:rotate(180deg); }
        .account__menu { position:absolute; top:62px; right:0; width:205px; padding:7px; border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:0 18px 45px rgba(0,0,0,.16); }
        .account__menu:has(.account__students){width:min(290px,calc(100vw - 20px))}
        .account__menu[hidden] { display:none; }
        .account__menu a { display:flex; align-items:center; gap:11px; padding:11px 12px; border-radius:11px; color:var(--text); font-size:13px; font-weight:650; text-decoration:none; transition:background .16s ease; }
        .account__menu a:hover { background:var(--background); }
        .account__menu .account__logout { color:var(--danger); }
        .account__students{display:grid;gap:3px;margin-bottom:5px;padding-bottom:6px;border-bottom:1px solid var(--border)}
        .account__students>small{padding:5px 9px 3px;color:var(--muted);font-size:8px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
        .account__students form{margin:0}
        .account__student{display:grid;width:100%;grid-template-columns:34px minmax(0,1fr) 16px;align-items:center;gap:9px;padding:8px;border:0;border-radius:11px;background:transparent;color:var(--text);cursor:pointer;font:inherit;text-align:left}
        .account__student:hover,.account__student.is-active{background:var(--background)}
        .account__student>i{display:grid;width:34px;height:34px;place-items:center;overflow:hidden;border-radius:11px;background:var(--institutional-soft);color:var(--institutional);font-size:10px;font-style:normal;font-weight:850}
        .account__student>i img{width:100%;height:100%;object-fit:cover}
        .account__student>span{display:grid;min-width:0;gap:2px}
        .account__student strong,.account__student small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
        .account__student strong{font-size:10px}.account__student small{color:var(--muted);font-size:8px}
        .account__student>svg{width:15px;height:15px;fill:none;stroke:var(--institutional);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
        .dashboard-header { position:relative; display:flex; min-height:96px; align-items:center; justify-content:space-between; gap:24px; overflow:hidden; margin:20px clamp(20px,3vw,40px) 0; padding:18px clamp(22px,3vw,32px); border:1px solid rgba(255,255,255,.08); border-radius:25px; background:var(--institutional-glass); box-shadow:0 14px 34px rgba(15,23,42,.18); isolation:isolate; }
        .dashboard-header::before { position:absolute; z-index:-1; top:-90px; left:-40px; width:260px; height:210px; border-radius:50%; background:rgba(255,255,255,.06); filter:blur(42px); content:""; }
        .dashboard-header::after { position:absolute; z-index:-1; right:20%; bottom:-95px; width:210px; height:150px; border-radius:50%; background:rgba(120,139,180,.12); filter:blur(38px); content:""; }
        .dashboard-header h1 { margin:0; color:#fff; font-size:clamp(19px,2.3vw,27px); font-weight:650; letter-spacing:-.025em; }
        .dashboard-header h1 span { font-weight:750; }
        .dashboard-clock { display:flex; align-items:center; gap:10px; padding:6px 2px; color:rgba(255,255,255,.88); }
        .dashboard-clock svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; opacity:.72; }
        .dashboard-clock time { display:flex; align-items:baseline; gap:6px; white-space:nowrap; }
        .dashboard-clock__time { font-size:21px; font-weight:650; letter-spacing:-.03em; }
        .dashboard-clock__period { color:rgba(255,255,255,.55); font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:lowercase; }
        .dashboard-cycle { display:flex; align-items:center; gap:11px; color:rgba(255,255,255,.88); }
        .dashboard-cycle svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; opacity:.72; }
        .dashboard-cycle__text { display:flex; align-items:baseline; gap:8px; white-space:nowrap; }
        .dashboard-cycle__label { color:rgba(255,255,255,.55); font-size:10px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
        .dashboard-cycle__name { font-size:18px; font-weight:700; letter-spacing:-.025em; }
        html[data-theme="dark"] .dashboard-header { background:var(--institutional-glass); border-color:rgba(255,255,255,.08); }
        .module-view { padding:28px clamp(20px,3vw,40px) 42px; }
        .module-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; margin-bottom:24px; }
        .module-heading h1 { margin:0; font-size:clamp(24px,3vw,34px); font-weight:700; letter-spacing:-.035em; }
        .module-heading p { margin:6px 0 0; color:var(--muted); font-size:13px; }
        .primary-action { display:flex; min-height:44px; align-items:center; gap:9px; padding:0 17px; border:0; border-radius:15px; background:var(--institutional-glass); box-shadow:0 8px 22px rgba(15,23,42,.18); color:#fff; cursor:pointer; font-size:12px; font-weight:700; transition:transform .16s ease,box-shadow .16s ease; }
        .primary-action:hover { transform:translateY(-1px); box-shadow:0 11px 26px rgba(35,38,43,.2); }
        .primary-action:active { transform:scale(.96); }
        .primary-action svg { width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; }
        .logo-preview { width:100%; max-width:none; height:100%; max-height:none; margin:0; padding:0; border:0; background:transparent; color:#24272c; }
        .logo-preview[open] { display:grid; place-items:center; }
        .logo-preview::backdrop { background:rgba(30,32,36,.48); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); }
        .logo-preview__close { position:absolute; top:-18px; right:-18px; display:grid; width:44px; height:44px; place-items:center; border:1px solid rgba(255,255,255,.6); border-radius:50%; background:rgba(255,255,255,.88); box-shadow:0 8px 24px rgba(0,0,0,.18); color:#50545a; cursor:pointer; backdrop-filter:blur(8px); transition:background .16s ease,transform .16s ease; }
        .logo-preview__close:hover { background:#fff; color:#20242a; transform:rotate(4deg) scale(1.04); }
        .logo-preview__close svg { width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; }
        .logo-preview__image { position:relative; display:grid; width:min(78vw,620px); place-items:center; animation:preview-in .22s ease-out; }
        .logo-preview__image img { display:block; max-width:100%; max-height:82vh; border-radius:26px; object-fit:contain; box-shadow:0 24px 75px rgba(0,0,0,.28); }
        .records-avatar--photo,.profile-photo img,.td-photo img { cursor:zoom-in; }
        @keyframes preview-in { from { opacity:0; transform:scale(.96) translateY(8px); } to { opacity:1; transform:none; } }
        .ripple { position:absolute; border-radius:50%; background:rgba(255,255,255,.26); pointer-events:none; transform:scale(0); animation:ripple .5s ease-out; }
        @keyframes ripple { to { opacity:0; transform:scale(4); } }
        @media (max-width:900px) { .account__details{display:none}.account__trigger{min-width:auto}.topbar__search{position:static;width:100%;transform:none}.topbar{justify-content:space-between} }
        @media (max-width:620px) {
            .app-shell{display:block;min-height:100vh}.page{min-height:100vh;padding-bottom:calc(82px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:70;gap:6px;padding:8px 9px}.topbar__search{padding-inline:10px}.topbar__search kbd{display:none}.topbar__button{width:42px;height:42px}.notifications__menu{position:fixed;top:66px;right:10px;left:10px;width:auto}.account__trigger{height:44px;padding:2px}.account__avatar{width:40px;height:40px}.account__chevron{display:none}.topbar__actions{gap:3px}.dashboard-header{min-height:126px;align-items:flex-start;flex-direction:column;margin:16px 12px 0;padding:18px 20px;border-radius:21px}.module-view{padding:22px 14px 28px}.module-heading{align-items:flex-start;flex-direction:column}
        }
        /* Tipografía general de SIGE: escala legible y uniforme en todos los módulos. */
        html,body,button,input,select,textarea,.module-view { font-family:"Inter","Segoe UI",sans-serif!important; }
        body { font-size:15px; line-height:1.45; letter-spacing:-.008em; font-optical-sizing:auto; font-synthesis:none; text-rendering:optimizeLegibility; }
        input,select,textarea,button,.cycle-active-panel__dates,.dashboard-clock time { font-variant-numeric:tabular-nums; }
        button,input,select,textarea { font-size:14px!important; }
        .topbar__search input { font-size:14px!important; }
        .account__details strong { font-size:14px!important; font-weight:700; }
        .account__details small { font-size:12px!important; }
        .breadcrumb li { font-size:13px!important; }
        .module-heading p,.config-card__head p,.records-empty p,.cycle-empty p { font-size:13px!important; line-height:1.45; }
        .primary-action,.secondary-action { font-size:14px!important; }
        .config-field label,.form-field label,.cycle-card__label,.cycle-active-panel__label { font-size:12px!important; font-weight:600!important; }
        .config-field input,.config-field select,.config-field textarea,.form-field input { font-size:14px!important; }
        .config-card__head h2,.cycle-history__head h2 { font-size:18px!important; }
        .rule-toggle,.cycle-activation strong,.cycle-close-list li { font-size:13px!important; }
        .document-table th,.cycle-table th { font-size:12px!important; }
        .document-table td,.cycle-table td { font-size:14px!important; }
        .document-table td small,.cycle-table__status { font-size:12px!important; }
        .cycle-tool strong { font-size:14px!important; }
        .cycle-tool small { font-size:12px!important; }
        .cycle-active-panel__dates { font-size:13px!important; }
        .cycle-active-panel__status { font-size:12px!important; }
        .cycle-empty__required,.cycle-form__error { font-size:12px!important; }
        .config-page__head p,.document-item small { font-size:13px!important; }
        .config-page__head h1,.module-heading h1,.dashboard-header h1 { font-weight:700!important; letter-spacing:-.035em; }
        .config-tab { font-size:14px!important; font-weight:600!important; }
        .document-group h3 { font-size:14px!important; font-weight:700!important; }
        .records-empty h1 { font-size:28px!important; }
        @media (prefers-reduced-motion:reduce) { *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important} }

        /* Centro de notificaciones: estados claro tipo Iconly Outline. */
        .notifications__menu { width:min(420px,calc(100vw - 28px)); border-radius:22px; }
        .notifications__menu>header { min-height:62px; padding:13px 16px; background:var(--surface); }
        .notifications__menu>header>span { display:grid; gap:2px; }
        .notifications__menu>header strong { font-size:15px; letter-spacing:-.015em; }
        .notifications__menu>header small { color:var(--muted); font-size:10px; font-weight:600; }
        .notifications__list { max-height:430px; padding:7px; }
        .notifications__item { grid-template-columns:40px minmax(0,1fr) 24px; align-items:start; gap:11px; margin:2px 0; padding:12px; border:0; border-radius:14px; transition:background .16s ease,transform .16s ease; }
        .notifications__item:hover { background:var(--background); transform:translateX(2px); }
        .notifications__item.is-unread { background:color-mix(in srgb,var(--institutional-soft) 72%,var(--surface)); }
        .notifications__item.is-unread::before { position:absolute; top:13px; bottom:13px; left:0; width:3px; border-radius:0 4px 4px 0; background:var(--institutional-glass); content:""; }
        .notifications__item>.notifications__icon { display:grid; width:40px; height:40px; place-items:center; margin:0; border-radius:12px; background:var(--background); color:var(--institutional-muted); }
        .notifications__item.is-unread>.notifications__icon { background:var(--institutional-glass); color:#fff; box-shadow:0 7px 17px rgba(15,23,42,.16); }
        .notifications__icon svg { width:19px; height:19px; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
        .notifications__copy { padding-top:1px; }
        .notifications__item .notifications__copy strong { font-size:12px; line-height:1.3; }
        .notifications__item:not(.is-unread) .notifications__copy strong { color:var(--muted); font-weight:650; }
        .notifications__item .notifications__copy small { display:-webkit-box; margin-top:3px; overflow:hidden; font-size:10px; line-height:1.4; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
        .notifications__item .notifications__copy time { margin-top:6px; font-size:9px; }
        .notifications__state { display:grid; width:24px; height:24px; place-items:center; margin-top:7px; border-radius:8px; background:var(--background); color:var(--muted); font-style:normal; }
        .notifications__state>i { width:8px; height:8px; border-radius:50%; background:#e65f6d; box-shadow:0 0 0 4px rgba(230,95,109,.12); }
        .notifications__state svg { width:14px; height:14px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
        .notifications__empty { margin:0; border-radius:14px; background:var(--background); }
