:root{--bg:#080b16;--panel:rgba(21,27,48,.66);--panel-strong:rgba(27,34,59,.92);--line:rgba(255,255,255,.09);--text:#f7f8ff;--muted:#98a2bd;--violet:#8b5cf6;--cyan:#26d0e8;--green:#4ade80;--red:#fb7185;--radius:22px;--shadow:0 24px 70px rgba(0,0,0,.34)}*{box-sizing:border-box}html{background:var(--bg);color-scheme:dark}body{margin:0;min-height:100vh;background:radial-gradient(circle at 80% 0%,#17183c 0,transparent 33%),linear-gradient(145deg,#070a14,#0b1021 65%,#0b0d18);color:var(--text);font-family:Inter,system-ui,sans-serif;font-size:14px}.ambient{position:fixed;border-radius:50%;filter:blur(110px);opacity:.16;pointer-events:none}.ambient-one{width:440px;height:440px;background:#7c3aed;left:18%;top:15%}.ambient-two{width:380px;height:380px;background:#06b6d4;right:3%;bottom:2%}.glass{background:linear-gradient(145deg,rgba(28,35,61,.75),rgba(17,22,40,.6));border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.sidebar{position:fixed;z-index:20;inset:18px auto 18px 18px;width:238px;border-radius:26px;padding:26px 18px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;font-weight:700;font-size:15px}.brand>span,.logo-large{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:linear-gradient(135deg,#9367ff,#5b31d5);box-shadow:0 8px 25px rgba(124,58,237,.45);font-weight:800}.sidebar nav{display:grid;gap:8px;margin:42px 0}.sidebar nav a{display:flex;gap:14px;align-items:center;padding:13px 14px;color:var(--muted);text-decoration:none;border-radius:13px;font-weight:600}.sidebar nav a:hover{color:white;background:rgba(139,92,246,.14)}.user-card{margin-top:auto;display:flex;align-items:center;gap:10px;padding:12px;border-top:1px solid var(--line)}.user-card small,.user-card strong{display:block}.user-card small{color:var(--muted);margin-top:3px}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:rgba(38,208,232,.17);color:var(--cyan);font-weight:700}.nav-logout{border:0;background:none;color:var(--muted);font:inherit;padding:12px;cursor:pointer;width:100%;text-align:left}.main{position:relative;margin-left:274px;padding:42px 42px 70px;max-width:1600px}.mobile-header{display:none}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px}.page-head.compact{max-width:960px;margin-inline:auto}.page-head h1{font-size:clamp(29px,4vw,43px);letter-spacing:-.04em;margin:4px 0 7px}.page-head p{margin:0;color:var(--muted)}.eyebrow{font-size:11px!important;letter-spacing:.16em;color:#9e86ff!important;font-weight:800}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:12px 16px;color:white;text-decoration:none;font:600 13px Inter;cursor:pointer;background:rgba(255,255,255,.05)}.button.primary{background:linear-gradient(135deg,#8b5cf6,#6831d7);border-color:#9f7aea;box-shadow:0 10px 30px rgba(124,58,237,.26)}.button.ghost:hover{background:rgba(255,255,255,.1)}.button.danger{background:rgba(251,113,133,.13);color:#ff9aac;border-color:rgba(251,113,133,.3)}.button.small{padding:8px 11px;font-size:12px}.button.wide{width:100%}.button:disabled{opacity:.4;cursor:not-allowed}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:20px}.metric{border-radius:var(--radius);padding:22px;display:flex;align-items:center;gap:15px}.metric-icon{width:47px;height:47px;border-radius:14px;display:grid;place-items:center;font-size:20px}.metric-icon.violet{background:rgba(139,92,246,.16);color:#ad91ff}.metric-icon.cyan{background:rgba(38,208,232,.14);color:var(--cyan)}.metric-icon.green{background:rgba(74,222,128,.13);color:var(--green)}.metric strong{font-size:26px;display:block}.metric small{color:var(--muted)}.two-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,1fr);gap:20px}.two-columns.lower{margin-top:20px}.panel{border-radius:var(--radius);padding:22px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:18px}.panel h2,.panel-head h2{margin:4px 0 0;font-size:19px}.panel-head a{color:#b9a8ff;text-decoration:none}.card-list{display:grid}.course-row{min-height:68px;display:flex;align-items:center;gap:12px;padding:11px 4px;border-top:1px solid var(--line);color:white;text-decoration:none}.course-row:first-child{border-top:0}.course-row small,.course-row strong{display:block}.course-row small{color:var(--muted);margin-top:5px}.subject-dot{width:9px;height:35px;border-radius:8px;background:linear-gradient(#8b5cf6,#22d3ee)}.grow{flex:1;min-width:0}.pill{display:inline-flex;padding:6px 9px;border-radius:999px;background:rgba(139,92,246,.13);color:#c4b5fd;font-size:11px;font-weight:700;white-space:nowrap}.pill.success{background:rgba(74,222,128,.12);color:#83f0a7}.pill.neutral{background:rgba(148,163,184,.12);color:#cbd5e1}.condition-promocionado{background:rgba(74,222,128,.12);color:#86efac}.condition-regular{background:rgba(38,208,232,.12);color:#67e8f9}.condition-libre{background:rgba(251,113,133,.12);color:#fda4af}.timeline a{display:flex;gap:14px;color:white;text-decoration:none;border-top:1px solid var(--line);padding:14px 2px}.timeline a:first-child{border:0}.timeline time{color:#b9a8ff;font-weight:700;min-width:42px}.timeline small,.timeline strong{display:block}.timeline small{color:var(--muted);margin-top:4px}.empty{text-align:center;color:var(--muted);padding:34px 10px}.action-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}.quick-action{display:flex;align-items:center;gap:13px;padding:17px;border-radius:17px;color:white;text-decoration:none}.quick-action>span{font-size:22px;color:#a98cff}.quick-action small,.quick-action strong{display:block}.quick-action small{color:var(--muted);font-size:11px;margin-top:4px}.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.table-panel{padding:0}.table-panel .panel-head{padding:22px 22px 0}.data-table{width:100%;border-collapse:collapse}.data-table th{text-align:left;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:12px 18px;border-bottom:1px solid var(--line)}.data-table td{padding:15px 18px;border-bottom:1px solid var(--line);vertical-align:middle}.data-table tbody tr:hover{background:rgba(255,255,255,.025)}.data-table a{color:#bdaaff;text-decoration:none}.override{display:block;color:var(--muted);margin-top:4px}.form-card{max-width:960px;margin:auto;padding:26px;border-radius:var(--radius)}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:19px}.field.full{grid-column:1/-1}.field label{display:block;font-size:12px;font-weight:700;margin-bottom:8px}.field label span{color:#a98cff}.field input,.field select,.field textarea,.data-table input,.login-card input{width:100%;border:1px solid var(--line);background:rgba(4,7,15,.5);border-radius:11px;padding:12px;color:white;font:inherit;outline:none}.field input:focus,.field select:focus,.field textarea:focus,.data-table input:focus,.login-card input:focus{border-color:#8b5cf6;box-shadow:0 0 0 3px rgba(139,92,246,.12)}.field small{display:block;color:var(--muted);margin-top:6px}.errorlist{color:#fda4af;margin:7px 0;padding-left:18px}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:25px}.upload-card{max-width:650px}.preview-actions{padding:0 22px 22px}.grade-shell{border-radius:var(--radius);overflow:hidden}.grade-scroll{overflow:auto;max-height:65vh}.grade-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.grade-table th{position:sticky;top:0;z-index:3;background:#151a2e;color:var(--muted);padding:10px 7px;border-bottom:1px solid var(--line);min-width:67px;text-align:center}.grade-table th span,.grade-table th strong{display:block}.grade-table td{border-bottom:1px solid var(--line);padding:6px}.grade-table input{width:58px;text-align:center;padding:9px 4px;border-radius:8px;border:1px solid var(--line);background:rgba(0,0,0,.25);font:600 13px Inter;color:white}.grade-table .sticky-col{position:sticky;left:0;z-index:2;background:#12172a;text-align:left;min-width:230px;padding-left:16px}.grade-table th.sticky-col{z-index:4}.grade-table td.sticky-col small,.grade-table td.sticky-col strong{display:block}.grade-table td.sticky-col small{color:var(--muted);font-size:10px;margin-top:3px}.grade-table.compact td{padding-block:2px}.grade-table.compact input{padding-block:5px}.sticky-actions{display:flex;justify-content:flex-end;align-items:center;gap:18px;padding:15px 18px;background:var(--panel-strong);position:sticky;bottom:0;z-index:5}.sticky-actions span{color:var(--muted);font-size:12px}.attendance-list{display:grid;gap:10px}.attendance-row{border-radius:16px;padding:13px 16px;display:flex;align-items:center;gap:14px}.student-index{width:31px;height:31px;border-radius:9px;background:rgba(139,92,246,.12);color:#bdaaff;display:grid;place-items:center;font-weight:700}.attendance-row small,.attendance-row strong{display:block}.attendance-row small{color:var(--muted);margin-top:4px}.attendance-options{display:flex;gap:7px}.attendance-options input{position:absolute;opacity:0}.attendance-options span{display:block;padding:9px 11px;border-radius:10px;border:1px solid var(--line);cursor:pointer;color:var(--muted);font-size:12px;font-weight:700}.attendance-options input:checked+span{color:white}.status-p input:checked+span{background:rgba(74,222,128,.15);border-color:rgba(74,222,128,.4);color:#86efac}.status-a input:checked+span{background:rgba(251,113,133,.15);border-color:rgba(251,113,133,.4);color:#fda4af}.status-j input:checked+span{background:rgba(251,191,36,.14);border-color:rgba(251,191,36,.35);color:#fcd34d}.messages{position:fixed;z-index:50;right:25px;top:20px;display:grid;gap:8px}.message{max-width:450px;padding:13px 16px;border-radius:12px;background:#202841;border:1px solid var(--line);box-shadow:var(--shadow);transition:.3s}.message.success{border-color:rgba(74,222,128,.35)}.message.error{border-color:rgba(251,113,133,.4)}.message.fade{opacity:0;transform:translateY(-8px);pointer-events:none}.auth-main{min-height:100vh;display:grid;place-items:center;padding:30px}.login-shell{display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:80px;width:min(980px,100%)}.login-brand .logo-large{width:56px;height:56px;margin-bottom:18px}.login-brand>span{color:var(--muted)}.login-brand h1{font-size:clamp(40px,6vw,65px);line-height:1.03;letter-spacing:-.055em;margin:18px 0}.login-brand h1 em{font-style:normal;color:#a98cff}.login-brand p{color:var(--muted);font-size:16px;max-width:570px;line-height:1.7}.login-card{border-radius:25px;padding:34px}.login-card h2{font-size:29px;margin:5px 0}.login-card>p:not(.eyebrow){color:var(--muted);margin-bottom:24px}.login-card label{display:block;font-size:12px;font-weight:700;margin:17px 0 7px}.login-card label input{display:block;margin-top:8px}.login-card small{display:block;text-align:center;color:var(--muted);margin-top:15px}@media(max-width:1100px){.action-grid{grid-template-columns:repeat(2,1fr)}.two-columns{grid-template-columns:1fr}.main{padding:34px 24px}.data-table{min-width:760px}.table-panel{overflow:auto}}@media(max-width:760px){.sidebar{transform:translateX(-120%);transition:.25s;inset:72px auto 12px 12px}.sidebar.open{transform:translateX(0)}.mobile-header{display:flex;position:sticky;top:8px;z-index:30;margin:8px 10px 0;border-radius:16px;padding:9px 13px;justify-content:space-between;align-items:center}.mobile-header button{background:none;border:0;color:white;font-size:22px}.main{margin:0;padding:26px 14px 60px}.page-head{align-items:flex-start;flex-direction:column}.metric-grid{grid-template-columns:1fr}.action-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.attendance-row{align-items:flex-start;flex-wrap:wrap}.attendance-options{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}.attendance-options span{text-align:center;padding-inline:5px}.sticky-actions{justify-content:space-between}.login-shell{grid-template-columns:1fr;gap:25px}.login-brand h1{font-size:40px}.login-brand p{display:none}.login-card{padding:25px}.auth-main{padding:18px}.messages{right:12px;left:12px}.grade-table .sticky-col{min-width:170px}.head-actions{width:100%}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media(prefers-reduced-transparency:reduce){.glass{backdrop-filter:none;background:#151b30}}

