:root{
  --ink:#1B2430; --paper:#FAF7F0; --paper-dim:#F0ECE1; --line:#DAD3C2;
  --green:#2F6F4E; --green-bg:#E6F0E9; --red:#B3452D; --red-bg:#F8E6E0;
  --pending:#C97A2B; --pending-bg:#FBEEDF; --muted:#6B7280; --white:#fff;
  --shadow:0 12px 30px rgba(27,36,48,.12);
}
*{box-sizing:border-box} body{margin:0;background:var(--paper-dim);font-family:Arial,sans-serif;color:var(--ink)}
.hidden{display:none!important} button,input,select{font:inherit}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(390px,100%);background:var(--white);padding:30px;border-radius:16px;border:1px solid var(--line);box-shadow:var(--shadow)}
.brand-mark{width:52px;height:52px;border-radius:14px;background:var(--ink);color:var(--paper);display:grid;place-items:center;font-weight:800;margin-bottom:18px}.login-card h1{margin:0 0 4px}.login-card p{margin:0 0 22px;color:var(--muted)}
label{display:block;font-size:12px;font-weight:700;color:var(--muted);margin:0 0 5px}input,select{width:100%;border:1px solid var(--line);background:var(--white);border-radius:9px;padding:11px 12px;margin:0 0 13px;color:var(--ink)}input:focus,select:focus{outline:2px solid rgba(27,36,48,.12);border-color:var(--ink)}
.primary,.secondary,.danger,.status-btn,.logout,.nav{border-radius:8px;padding:9px 13px;cursor:pointer}.primary{border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-weight:700}.secondary{border:1px solid var(--line);background:var(--white);color:var(--ink)}.danger{border:1px solid #d7a89d;background:var(--white);color:var(--red)}.full{width:100%;margin-top:5px;padding:12px}.app{min-height:100vh;display:flex}.sidebar{width:210px;height:100vh;background:var(--ink);color:var(--paper);padding:22px 14px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}.logo{font-family:Georgia,serif;font-size:18px;font-weight:700;padding:0 10px 24px;flex-shrink:0}.nav{border:0;background:transparent;color:#C9C3B4;text-align:left;font-weight:600;margin-bottom:5px;flex-shrink:0}.nav.active{background:rgba(255,255,255,.09);color:var(--paper);font-weight:700}.sidebar-spacer{flex:1 0 12px;min-height:12px}.signed-in{font-size:11px;line-height:1.5;color:#d9d2c4;padding:10px;white-space:pre-line;flex-shrink:0}.logout{border:1px solid rgba(255,255,255,.2);background:transparent;color:var(--paper);flex-shrink:0}
.main-panel{margin-left:210px;width:calc(100% - 210px);padding:32px;max-width:1320px}.top-row{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.top-row h1{margin:0 0 5px;font-size:24px}.sub{margin:0 0 20px;color:var(--muted);font-size:13px}.card,.table-card{background:var(--white);border:1px solid var(--line);border-radius:14px;box-shadow:0 3px 15px rgba(27,36,48,.04)}.form-card{max-width:780px;padding:18px;margin-bottom:22px}.faculty-form-card{max-width:850px}.filter-card{padding:18px;margin-bottom:18px}.grid{display:grid;gap:12px}.grid.two{grid-template-columns:2fr 1fr}.grid.two-equal{grid-template-columns:1fr 1fr}.grid.four{grid-template-columns:repeat(4,1fr)}.radius-row{grid-template-columns:180px}.map{height:290px;border-radius:10px;border:1px solid var(--line);overflow:hidden;background:var(--paper-dim)}.map-help{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;font-size:11px;color:var(--muted);padding:7px 2px 13px}.caption{font-size:11px;color:var(--muted)}.address-help{margin-top:-6px;margin-bottom:12px}.actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.table-card{overflow:hidden}.table-header{display:flex;justify-content:space-between;padding:15px 17px;border-bottom:1px solid var(--line)}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;background:var(--paper);color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:11px 12px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:12px;border-bottom:1px solid var(--line);vertical-align:middle}.faculty-table{min-width:1050px}.pill{display:inline-block;border-radius:20px;padding:4px 9px;font-size:11px;font-weight:700}.active-pill{background:var(--green-bg);color:var(--green)}.inactive-pill{background:var(--red-bg);color:var(--red)}.type-full{background:var(--green-bg);color:var(--green)}.type-part{background:var(--pending-bg);color:var(--pending)}.row-actions{display:flex;gap:6px;flex-wrap:wrap;min-width:175px}.row-actions button{padding:6px 9px;font-size:11px}.status-btn{border:1px solid var(--line);background:var(--white)}.empty{text-align:center;color:var(--muted);padding:26px}.error,.success{margin-top:10px;border-radius:8px;padding:9px 10px;font-size:12px;white-space:pre-wrap}.error{background:var(--red-bg);color:var(--red)}.success{background:var(--green-bg);color:var(--green)}.eyebrow{text-transform:uppercase;font-size:10px;letter-spacing:.1em;color:var(--muted);font-weight:700;margin:18px 0 7px}
.autocomplete-wrap{position:relative}.suggestions{position:absolute;z-index:1200;left:0;right:0;top:48px;background:var(--white);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);max-height:260px;overflow:auto}.suggestion{padding:10px 12px;border-bottom:1px solid var(--line);font-size:12px;line-height:1.35;cursor:pointer}.suggestion:last-child{border-bottom:0}.suggestion:hover,.suggestion.active{background:var(--paper)}.suggestion-muted{padding:12px;color:var(--muted);font-size:12px}.loading-inline{color:var(--muted);font-size:11px}
/* Independent left navigation scrolling */
.sidebar::-webkit-scrollbar{width:8px}.sidebar::-webkit-scrollbar-track{background:rgba(255,255,255,.04)}.sidebar::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border-radius:999px}.sidebar::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.38)}
@media(max-width:980px){.grid.four{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.sidebar{position:static;width:100%;height:auto;min-height:auto;overflow:visible;scrollbar-gutter:auto}.app{display:block}.main-panel{margin:0;width:100%;padding:20px}.grid.two,.grid.two-equal,.grid.four{grid-template-columns:1fr}.top-row{display:block}.top-row .secondary{margin-bottom:12px}.map{height:240px}}

/* Subject Onboarding v3 */
.master-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:20px}.master-card{padding:17px;min-width:0}.master-heading{margin-top:0}.actions.compact{gap:6px}.actions.compact button{padding:7px 9px;font-size:11px}.grid.three{grid-template-columns:repeat(3,1fr)}.subject-form-card{max-width:900px}.inline-message{margin-top:9px;border-radius:8px;padding:8px 9px;font-size:11px}.inline-message.msg-success{background:var(--green-bg);color:var(--green)}.inline-message.msg-error{background:var(--red-bg);color:var(--red)}
button:disabled{opacity:.55;cursor:not-allowed}.row-actions button{white-space:nowrap}.suggestion{display:block;width:100%;border:0;background:var(--white);text-align:left;color:var(--ink)}
@media(max-width:1100px){.master-grid{grid-template-columns:1fr}.grid.three{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.grid.three{grid-template-columns:1fr}}

/* Timetable Onboarding v4 */
.timetable-form-card{max-width:900px}.timetable-table{min-width:760px}.time-cell{font-family:'Courier New',monospace;white-space:nowrap}.top-actions{margin-top:0;justify-content:flex-end}.top-actions button{white-space:nowrap}

/* Assign Roster v6 */
.roster-form-card{max-width:1120px}.roster-common-grid{max-width:700px;margin-bottom:10px}.roster-form-row{display:grid;grid-template-columns:1.45fr 1.15fr 1fr 1fr .72fr auto;gap:9px;align-items:end;padding:12px 0;border-top:1px solid var(--line)}.roster-form-row:first-child{border-top:0}.roster-form-row input,.roster-form-row select{margin-bottom:0}.roster-row-remove{margin-bottom:0;min-width:42px;height:42px}.roster-table{min-width:1040px}.roster-total-card{display:inline-flex;flex-direction:column;gap:4px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:11px 15px;margin:0 0 10px}.roster-total-card strong{font-size:22px}.roster-total-label{margin:0}.table-date-input{min-width:145px;margin:0;padding:7px 8px}
@media(max-width:1180px){.roster-form-row{grid-template-columns:1fr 1fr 1fr}.roster-row-remove{width:max-content}}
@media(max-width:760px){.roster-form-row{grid-template-columns:1fr}.roster-row-remove{width:100%}}

/* Calendar Overview v7 */
.calendar-summary{display:flex;justify-content:flex-end;margin:0 0 8px}.calendar-days{display:flex;flex-direction:column;gap:18px}.calendar-day h2{font-size:16px;margin:0 0 8px}.calendar-table{min-width:650px}.calendar-empty{background:var(--white);border:1px solid var(--line);border-radius:12px;padding:24px;text-align:center;color:var(--muted)}

/* Attendance Reports v8 */
.grid.five{grid-template-columns:repeat(5,minmax(0,1fr))}.attendance-table{min-width:820px}.attendance-status{white-space:nowrap}.attendance-present{background:var(--green-bg);color:var(--green)}.attendance-late{background:var(--pending-bg);color:var(--pending)}.attendance-absent{background:var(--red-bg);color:var(--red)}.attendance-leave{background:#E9E9F5;color:#5B5FA8}.attendance-duty{background:#E7EEF8;color:#355E8D}
@media(max-width:1180px){.grid.five{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.grid.five{grid-template-columns:1fr}}


/* Daily Work Logs v9 */
.grid.six{grid-template-columns:repeat(6,minmax(0,1fr))}.worklog-table{min-width:1220px}.worklog-table th:first-child,.worklog-table td:first-child{width:38px;text-align:center}.worklog-table input[type="checkbox"]{width:auto;margin:0}.worklog-bulk-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 10px;min-height:42px}.worklog-bulk-actions{margin:0}.worklog-status{white-space:nowrap}.worklog-submitted{background:#E9E9F5;color:#5B5FA8}.worklog-discuss{background:var(--pending-bg);color:var(--pending)}.worklog-approved{background:var(--green-bg);color:var(--green)}.worklog-rejected{background:var(--red-bg);color:var(--red)}.not-logged-pill{background:var(--paper-dim);color:var(--muted);white-space:nowrap}.students-cell{white-space:nowrap}.materials-cell{min-width:130px}
@media(max-width:1280px){.grid.six{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.grid.six{grid-template-columns:1fr}.worklog-bulk-bar{align-items:flex-start;flex-direction:column}}

/* Requests v10 */
.request-filter-grid{max-width:900px}.requests-summary{display:flex;justify-content:flex-end;margin:0 0 8px}.request-list{display:flex;flex-direction:column;gap:10px;margin-bottom:10px}.request-card{display:flex;justify-content:space-between;align-items:center;gap:18px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:15px 16px}.request-card-main{min-width:0}.request-card-main p{margin:7px 0 0;font-size:13px;color:var(--ink)}.request-title-line{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:13px}.request-status{margin-left:4px}.request-discuss{background:var(--pending-bg);color:var(--pending)}.request-approved{background:var(--green-bg);color:var(--green)}.request-rejected{background:var(--red-bg);color:var(--red)}
.modal-open{overflow:hidden}.modal-backdrop{position:fixed;z-index:3000;inset:0;background:rgba(15,22,31,.55);display:grid;place-items:center;padding:24px}.modal-card{width:min(720px,100%);max-height:90vh;overflow:auto;background:var(--white);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow);padding:22px}.modal-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}.modal-head h2{margin:0;font-size:22px}.request-modal-meta{margin:0 0 4px}.request-detail-block{margin-top:18px}.request-detail-block .eyebrow{margin-bottom:6px}.request-detail-text{margin:0;line-height:1.55;font-size:13px}.request-full-reason{font-size:14px}.request-extra{display:flex;gap:10px;flex-wrap:wrap;margin:16px 0}.request-extra div{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:9px 11px;display:flex;flex-direction:column;gap:3px;min-width:140px}.request-extra span{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:700}.request-extra strong{font-size:13px}.request-review-actions{margin-top:6px}
@media(max-width:760px){.request-card{align-items:flex-start;flex-direction:column}.request-card>button{width:100%}.modal-backdrop{padding:10px}.modal-card{padding:17px}}


/* Requests GPS override map v10.2 */
.request-modal-card{width:min(900px,100%)}.request-gps-map-section{margin:18px 0 8px}.request-gps-map-head .eyebrow{margin-bottom:4px}.request-gps-map-head .caption{margin:0 0 8px}.request-gps-map{height:340px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper-dim)}.request-gps-map-empty{height:100%;display:grid;place-items:center;padding:24px;text-align:center;color:var(--muted)}.request-gps-map-info{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.request-gps-map-info>div{background:var(--paper);border:1px solid var(--line);border-radius:9px;padding:8px 10px;display:flex;flex-direction:column;gap:3px;min-width:135px}.request-gps-map-info span{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:700}.request-gps-map-info strong{font-size:12px}.request-gps-coordinates{min-width:210px!important}.request-gps-note{min-width:220px!important}
@media(max-width:760px){.request-gps-map{height:280px}.request-gps-map-info>div{width:100%}}

.request-gps-map-legend{display:flex;gap:14px;flex-wrap:wrap;margin:8px 1px 0;font-size:11px;color:var(--muted)}.request-gps-map-legend span{display:flex;align-items:center;gap:6px}.request-map-dot{width:10px;height:10px;border-radius:50%;display:inline-block;border:2px solid currentColor}.college-dot{background:#2F6F4E;color:#2F6F4E}.override-dot{background:#D92D20;color:#B42318}


/* Student Feedback v11 */
.feedback-privacy-card{display:flex;gap:14px;align-items:flex-start;max-width:980px;margin-bottom:14px}.feedback-lock{font-size:24px;line-height:1}.feedback-privacy-card strong{font-size:14px}.feedback-privacy-card p{margin:6px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.feedback-cycle-line{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin:8px 0 12px}.feedback-cycle-line strong{font-size:13px}.feedback-table{min-width:650px}.feedback-rating{font-size:16px;font-weight:800;white-space:nowrap}.feedback-trend{display:inline-flex;align-items:center;gap:6px;font-weight:700}.feedback-trend-symbol{font-size:16px}.feedback-improving{color:var(--green)}.feedback-stable{color:var(--muted)}.feedback-flagged{color:var(--red)}

/* Dashboard v12 */
.dashboard-filter-card{max-width:760px}.dashboard-filter-grid{max-width:560px;grid-template-columns:1.4fr 1fr}.dashboard-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 20px}.dashboard-stat-card{padding:18px 20px;min-height:138px;display:flex;flex-direction:column;justify-content:space-between}.dashboard-stat-label{font-size:13px;font-weight:700;color:var(--muted)}.dashboard-stat-value{font-size:38px;line-height:1;font-weight:800;margin:8px 0 10px}.dashboard-stat-sub{font-size:13px;color:var(--muted)}.stat-present .dashboard-stat-value{color:var(--green)}.stat-discuss .dashboard-stat-value{color:var(--pending)}.stat-classes .dashboard-stat-value{color:var(--ink)}
.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.dashboard-chart-card{padding:18px 20px;min-height:320px}.dashboard-chart-card h2{margin:0 0 18px;font-size:18px}.dashboard-empty{display:grid;place-items:center;min-height:190px;color:var(--muted);text-align:center}
.classes-by-date{display:flex;justify-content:space-around;align-items:flex-end;gap:16px;min-height:190px;padding:6px 8px 0}.dashboard-bar-group{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1}.dashboard-bar-value{font-size:14px;font-weight:800}.dashboard-stack{width:52px;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch}.dashboard-segment{border-radius:10px 10px 0 0}.dashboard-segment-green{background:var(--green);border-radius:0 0 10px 10px}.dashboard-segment-red{background:var(--red);margin-bottom:1px}.dashboard-axis-label{font-size:13px;color:var(--muted)}.dashboard-legend,.dashboard-line-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;color:var(--ink)}.dashboard-line-legend{margin-top:12px;flex-direction:column;gap:6px}.dashboard-legend span,.dashboard-line-legend span{display:flex;align-items:center;gap:8px}.legend-dot{width:13px;height:13px;border-radius:50%;display:inline-block}.dashboard-green{background:var(--green)}.dashboard-red{background:var(--red)}
.requests-by-type{display:flex;align-items:flex-end;justify-content:space-around;gap:14px;min-height:196px;padding:8px 4px 0}.dashboard-request-bar-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1}.dashboard-request-count{font-size:24px;font-weight:800}.dashboard-request-rail{height:102px;display:flex;align-items:flex-end}.dashboard-request-bar{width:46px;min-height:0;background:var(--pending);border-radius:10px 10px 0 0}.dashboard-request-label{text-align:center;font-size:13px;color:var(--muted);line-height:1.25}
.syllabus-pacing{display:flex;flex-direction:column;gap:24px;padding-top:2px}.dashboard-progress-row{display:grid;grid-template-columns:118px 1fr;gap:10px;align-items:center}.dashboard-progress-name{font-size:16px}.dashboard-progress-track{grid-column:2;position:relative;height:18px;background:#E3DED3;border-radius:999px;overflow:visible}.dashboard-progress-fill{height:100%;border-radius:999px}.dashboard-progress-behind{background:var(--red)}.dashboard-progress-trackok{background:var(--green)}.dashboard-progress-marker{position:absolute;top:-1px;width:4px;height:20px;background:var(--ink);border-radius:2px}.dashboard-progress-text{grid-column:2;font-size:15px;color:var(--muted);margin-top:-4px}.dashboard-text-red{color:var(--red)}.dashboard-text-green{color:var(--green)}
.attendance-rate-chart{min-height:220px}.attendance-svg{width:100%;height:auto;display:block}.chart-grid{stroke:#DDD7CB;stroke-width:1}.chart-axis-text{fill:var(--muted);font-size:11px}.attendance-svg text{fill:var(--muted);font-size:12px}.chart-line-present,.chart-line-absent{fill:none;stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.chart-line-present{stroke:var(--green)}.chart-line-absent{stroke:var(--red)}.chart-circle-present{fill:var(--green)}.chart-circle-absent{fill:var(--red)}.dashboard-footnote{font-size:13px;margin:6px 0 0}
@media(max-width:1180px){.dashboard-summary-grid{grid-template-columns:1fr}.dashboard-grid{grid-template-columns:1fr}.dashboard-filter-grid{grid-template-columns:1fr 1fr}.dashboard-progress-row{grid-template-columns:1fr}.dashboard-progress-track,.dashboard-progress-text{grid-column:1}}
@media(max-width:760px){.dashboard-filter-grid{grid-template-columns:1fr}.classes-by-date,.requests-by-type{gap:10px}.dashboard-stack{width:44px}.dashboard-request-bar{width:38px}.dashboard-chart-card{padding:16px}}

/* -------- v13 UI Refresh -------- */
:root{
  --accent:#4361ee;
  --accent-2:#7c3aed;
  --accent-soft:#eef2ff;
  --navy:#0f172a;
  --navy-2:#16213a;
  --surface:#ffffff;
  --surface-2:#fbfcff;
  --surface-3:#f3f6fb;
  --text:#172033;
  --text-soft:#64748b;
  --line-soft:#e2e8f0;
  --success:#1f8f5f;
  --success-soft:#e8f8f0;
  --warning:#d18c14;
  --warning-soft:#fff5de;
  --danger:#d05252;
  --danger-soft:#fff0f0;
  --shadow-soft:0 20px 60px rgba(15,23,42,.08);
  --shadow-card:0 18px 50px rgba(67,97,238,.08);
  --radius-xl:28px;
  --radius-lg:20px;
  --radius-md:14px;
}
html{scroll-behavior:smooth}
body{
  background:
    radial-gradient(circle at top left, rgba(124,58,237,.08), transparent 28%),
    radial-gradient(circle at top right, rgba(67,97,238,.10), transparent 24%),
    linear-gradient(180deg,#f7f9ff 0%,#eff4fb 100%);
  color:var(--text);
  font-family:Inter,Segoe UI,Arial,sans-serif;
}
button,input,select,textarea{font:inherit}
input,select,textarea{
  border:1px solid var(--line-soft);
  background:var(--surface);
  border-radius:14px;
  padding:12px 14px;
  color:var(--text);
  box-shadow:0 1px 1px rgba(15,23,42,.02) inset;
}
input:focus,select:focus,textarea:focus{
  outline:none;
  border-color:rgba(67,97,238,.35);
  box-shadow:0 0 0 4px rgba(67,97,238,.12);
}
label{font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-soft);margin-bottom:7px}
.primary,.secondary,.danger,.status-btn,.logout,.nav,.menu-toggle,.sidebar-close{
  border-radius:14px;
  transition:all .18s ease;
}
.primary{
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  border:0;
  color:#fff;
  font-weight:800;
  box-shadow:0 14px 30px rgba(67,97,238,.22);
}
.primary:hover{transform:translateY(-1px);filter:brightness(1.02)}
.secondary{
  background:#fff;
  border:1px solid var(--line-soft);
  color:var(--text);
  box-shadow:0 10px 24px rgba(15,23,42,.05);
}
.secondary:hover,.danger:hover,.status-btn:hover,.logout:hover{transform:translateY(-1px)}
.danger{border:1px solid rgba(208,82,82,.28);background:var(--danger-soft);color:var(--danger)}
.status-btn{border:1px solid var(--line-soft);background:#fff;color:var(--text);font-weight:700}
.error{margin-top:10px;padding:12px 14px;border-radius:14px;background:var(--danger-soft);color:var(--danger);border:1px solid rgba(208,82,82,.18)}
.msg-success{background:var(--success-soft)!important;color:var(--success)!important;border:1px solid rgba(31,143,95,.16)!important}
.msg-error{background:var(--danger-soft)!important;color:var(--danger)!important;border:1px solid rgba(208,82,82,.16)!important}
.caption,.sub,.dashboard-footnote,.address-help,.map-help,.signed-in{color:var(--text-soft)}

/* Login page */
.login-shell{
  min-height:100vh;
  display:grid;
  grid-template-columns:minmax(320px,1.1fr) minmax(320px,460px);
  gap:34px;
  align-items:center;
  padding:42px;
  position:relative;
  overflow:hidden;
}
.login-backdrop{
  position:absolute;inset:0;
  background:
    radial-gradient(circle at 15% 20%, rgba(67,97,238,.22), transparent 26%),
    radial-gradient(circle at 82% 18%, rgba(124,58,237,.22), transparent 24%),
    linear-gradient(135deg,#eff4ff 0%,#f8fbff 42%,#f4f7ff 100%);
  z-index:0;
}
.login-visual-card,.login-card{position:relative;z-index:1}
.login-visual-card{
  padding:42px;
  border-radius:32px;
  background:linear-gradient(145deg, rgba(15,23,42,.92), rgba(29,42,78,.90));
  color:#fff;
  box-shadow:0 30px 80px rgba(15,23,42,.22);
  min-height:560px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.login-visual-chip{
  width:max-content;
  padding:10px 16px;
  border-radius:999px;
  background:rgba(255,255,255,.1);
  color:#dbe7ff;
  font-size:12px;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:22px;
}
.login-visual-card h2{font-size:40px;line-height:1.16;margin:0 0 16px;max-width:700px}
.login-visual-card p{margin:0 0 28px;color:#cdd7ef;font-size:16px;line-height:1.7;max-width:620px}
.login-feature-grid{display:grid;gap:16px;margin-top:14px}
.login-feature{
  display:flex;gap:14px;align-items:flex-start;padding:18px 20px;border-radius:20px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.10);backdrop-filter:blur(8px);
}
.login-feature span{font-size:24px;line-height:1}
.login-feature strong{display:block;font-size:16px;margin-bottom:4px}
.login-feature small{display:block;color:#cfdaef;font-size:13px;line-height:1.5}
.login-card{
  width:100%;max-width:460px;padding:34px 32px;border-radius:30px;border:1px solid rgba(255,255,255,.65);
  background:rgba(255,255,255,.86);backdrop-filter:blur(12px);box-shadow:0 24px 70px rgba(67,97,238,.14);
}
.login-brand-row{display:flex;align-items:center;gap:16px;margin-bottom:10px}
.brand-mark,.logo-mark{
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  color:#fff;
  box-shadow:0 14px 28px rgba(67,97,238,.28);
}
.brand-mark{width:58px;height:58px;border-radius:18px;font-weight:800;font-size:18px;margin:0;display:grid;place-items:center}
.eyebrow,.app-shell-eyebrow{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent-2);font-weight:800}
.login-card h1{font-size:34px;margin:4px 0 0;color:var(--text)}
.login-subtitle{margin:0 0 22px;color:var(--text-soft)}
.login-submit{margin-top:8px;padding:14px 18px}
.login-footer-note{margin-top:16px;font-size:13px;color:var(--text-soft);text-align:center}

/* App shell + sidebar */
.app{display:block;min-height:100vh}
.sidebar-overlay{
  position:fixed;inset:0;background:rgba(15,23,42,.48);backdrop-filter:blur(4px);z-index:40;
}
.sidebar{
  width:min(320px,86vw);
  background:linear-gradient(180deg,#0d162b 0%,#13203d 100%);
  color:#e8edf9;
  padding:22px 16px 18px;
  position:fixed;left:0;top:0;bottom:0;z-index:50;
  box-shadow:25px 0 60px rgba(2,6,23,.35);
  transform:translateX(0);
  transition:transform .24s ease;
}
.sidebar.closed{transform:translateX(-110%)}
.sidebar.open{transform:translateX(0)}
.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:18px}
.logo-block{display:flex;align-items:center;gap:12px}
.logo-mark{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;font-weight:800}
.logo-kicker{font-size:17px;font-weight:800;color:#fff}
.logo-subtext{font-size:12px;color:#aebbd8}
.sidebar-close,.menu-toggle{
  border:0;background:rgba(255,255,255,.10);color:#fff;cursor:pointer;
}
.sidebar-close{width:38px;height:38px;font-size:24px;line-height:1;padding:0;display:grid;place-items:center}
.nav{
  width:100%;border:1px solid transparent;background:transparent;color:#c5d0e6;text-align:left;font-weight:700;
  padding:12px 14px;margin-bottom:8px;font-size:14px
}
.nav:hover{background:rgba(255,255,255,.06);color:#fff}
.nav.active{
  background:linear-gradient(135deg, rgba(67,97,238,.26), rgba(124,58,237,.18));
  color:#fff;border-color:rgba(255,255,255,.08);box-shadow:inset 0 1px 0 rgba(255,255,255,.08)
}
.signed-in{
  font-size:12px;line-height:1.65;color:#d8e1f4;padding:14px 14px;border-radius:16px;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)
}
.logout{
  margin-top:10px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.06);color:#fff;font-weight:700
}
.main-panel{margin:0;max-width:none;width:100%;padding:24px}
.app-shell-header{
  position:sticky;top:0;z-index:15;
  display:flex;align-items:center;gap:14px;padding:14px 16px;margin:0 0 22px;
  background:rgba(255,255,255,.72);backdrop-filter:blur(12px);
  border:1px solid rgba(226,232,240,.9);border-radius:22px;box-shadow:var(--shadow-soft)
}
.menu-toggle{width:48px;height:48px;font-size:22px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent),var(--accent-2));box-shadow:0 14px 30px rgba(67,97,238,.25)}
.app-shell-heading{font-size:22px;font-weight:800;color:var(--text)}
.page{animation:fadeIn .22s ease}
@keyframes fadeIn{from{opacity:.15;transform:translateY(6px)}to{opacity:1;transform:none}}

/* Core content beautification */
.top-row{align-items:center;gap:18px;margin-bottom:16px}
.top-row h1{font-size:34px;letter-spacing:-.02em;margin:0 0 6px}
.card,.login-card,.login-visual-card,.summary-tile,.metric-tile{
  border:1px solid rgba(226,232,240,.95);
  border-radius:24px;
  background:rgba(255,255,255,.88);
  box-shadow:var(--shadow-card);
}
.form-card,.filter-card,.table-card,.dashboard-chart-card,.dashboard-stat-card{padding:22px}
.grid{gap:16px}
.actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.table-wrap{border-radius:18px;border:1px solid var(--line-soft);overflow:auto;background:#fff}
.table-wrap table{min-width:100%;border-collapse:separate;border-spacing:0}
th{
  position:sticky;top:0;background:linear-gradient(180deg,#f8fbff 0%,#f1f6ff 100%);color:#334155;
  font-size:12px;letter-spacing:.05em;text-transform:uppercase;padding:14px;border-bottom:1px solid var(--line-soft)
}
td{padding:14px;border-bottom:1px solid #edf2f7;color:var(--text);vertical-align:top}
tr:hover td{background:#fafcff}
.status-pill,.badge,.chip{
  display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;font-weight:700;font-size:12px
}
.status-active,.badge-approved{background:var(--success-soft);color:var(--success)}
.status-inactive,.badge-rejected{background:var(--danger-soft);color:var(--danger)}
.badge-pending,.status-pending{background:var(--warning-soft);color:var(--warning)}
.map{border-radius:22px;border:1px solid var(--line-soft);overflow:hidden;box-shadow:0 8px 26px rgba(15,23,42,.06)}
.modal-backdrop{background:rgba(15,23,42,.52);backdrop-filter:blur(4px)}
.modal-card{border-radius:24px;border:1px solid rgba(226,232,240,.95);box-shadow:0 28px 80px rgba(15,23,42,.2)}

/* Dashboard polish */
.dashboard-summary-grid{gap:18px}
.dashboard-stat-card{position:relative;overflow:hidden;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(250,252,255,.95))}
.dashboard-stat-card::after{content:"";position:absolute;inset:auto -30px -30px auto;width:110px;height:110px;border-radius:50%;background:rgba(67,97,238,.08)}
.dashboard-stat-label{font-size:13px;text-transform:uppercase;letter-spacing:.06em}
.dashboard-stat-value{font-size:42px;letter-spacing:-.03em}
.dashboard-chart-card h2{font-size:20px;letter-spacing:-.01em}
.dashboard-stack,.dashboard-request-bar,.dashboard-progress-track,.attendance-svg{filter:drop-shadow(0 8px 16px rgba(15,23,42,.05))}
.dashboard-request-bar{background:linear-gradient(180deg,#f7b347 0%,#d98b15 100%)}
.dashboard-segment-green{background:linear-gradient(180deg,#3ab97d 0%,#1f8f5f 100%)}
.dashboard-segment-red{background:linear-gradient(180deg,#f29393 0%,#d05252 100%)}
.dashboard-progress-behind{background:linear-gradient(90deg,#f29393 0%,#d05252 100%)}
.dashboard-progress-trackok{background:linear-gradient(90deg,#53c58f 0%,#1f8f5f 100%)}
.chart-line-present{stroke:#1f8f5f}.chart-line-absent{stroke:#d05252}.chart-circle-present{fill:#1f8f5f}.chart-circle-absent{fill:#d05252}

/* Mobile */
@media (max-width: 1100px){
  .login-shell{grid-template-columns:1fr;gap:22px;padding:22px}.login-visual-card{min-height:auto;padding:28px}.login-visual-card h2{font-size:30px}
}
@media (max-width: 760px){
  .main-panel{padding:14px}
  .app-shell-header{padding:12px 14px;border-radius:18px;margin-bottom:16px}
  .app-shell-heading{font-size:18px}
  .top-row{flex-direction:column;align-items:flex-start}
  .top-row h1{font-size:28px}
  .card,.login-card,.login-visual-card{border-radius:20px}
  .dashboard-stat-value{font-size:34px}
  th,td{padding:12px;font-size:13px}
  .actions{width:100%}
  .actions > *{max-width:100%}
  .login-card{padding:26px 20px}
  .brand-mark{width:52px;height:52px}
}

/* -------- v14 layout refinement: full-width aligned pages and click-to-open forms -------- */
.main-panel{padding:20px 24px 30px}
.page{
  width:100%;
  min-height:calc(100vh - 118px);
  padding:24px;
  border:1px solid rgba(226,232,240,.86);
  border-radius:28px;
  background:rgba(255,255,255,.48);
  box-shadow:0 18px 50px rgba(15,23,42,.045);
}
.page > .top-row{width:100%}
.page > .card,.page > .table-card,.page > .master-grid,.page > .dashboard-summary-grid,.page > .dashboard-grid,.page > .calendar-days,.page > .request-list{width:100%}
.full-form-card,.form-card,.faculty-form-card,.subject-form-card,.timetable-form-card,.syllabus-form-card,.roster-form-card{
  width:100%!important;
  max-width:none!important;
}
.filter-card{width:100%;max-width:none!important}
.form-section-head{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:20px;
  margin:0 0 20px;
  padding-bottom:15px;
  border-bottom:1px solid var(--line-soft);
}
.form-section-head .eyebrow{margin:0 0 5px}
.form-section-head h2{margin:0;font-size:22px;letter-spacing:-.015em;color:var(--text)}
.form-section-hint{font-size:12px;color:var(--text-soft);padding:7px 10px;background:var(--surface-3);border:1px solid var(--line-soft);border-radius:999px;white-space:nowrap}
.form-grid-fill{width:100%}
.form-grid-fill > div,.grid.two-equal > div,.grid.two > div,.grid.three > div,.grid.four > div,.grid.five > div,.grid.six > div{min-width:0}
.form-actions{padding-top:4px;border-top:1px solid rgba(226,232,240,.7);margin-top:16px}
.master-grid{align-items:stretch}
.master-card{height:100%;display:flex;flex-direction:column}
.master-card .actions{margin-top:auto}
.table-card{width:100%;max-width:none!important;margin-top:18px}
.table-scroll{width:100%;overflow:auto;border-radius:0 0 20px 20px}
.table-scroll table{width:100%}
.top-actions{justify-content:flex-end;align-items:center}
.top-actions .primary,.top-actions .secondary{white-space:nowrap}

/* Clean success toast for collapsed create forms */
.app-toast{
  position:fixed;
  right:24px;
  top:24px;
  z-index:5000;
  max-width:min(430px,calc(100vw - 32px));
  padding:14px 18px;
  border-radius:16px;
  color:#fff;
  font-weight:750;
  box-shadow:0 22px 60px rgba(15,23,42,.22);
  animation:toastIn .18s ease;
  white-space:pre-wrap;
}
.toast-success{background:linear-gradient(135deg,#218a60,#35a875)}
.toast-error{background:linear-gradient(135deg,#c94747,#df6969)}
@keyframes toastIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}

/* College and faculty forms are intentionally hidden until Add/Edit is selected. */
#collegeFormCard,#facultyFormCard{scroll-margin-top:96px}
#pageColleges .table-card,#pageFaculty .filter-card{margin-top:0}
#pageFaculty > .eyebrow{margin-top:8px}

/* Use the available horizontal space efficiently on onboarding forms. */
#pageSubjects .subject-form-card,#pageTimetable .timetable-form-card,#pageSyllabus .syllabus-form-card{padding:24px}
#pageSubjects .subject-form-card .grid.three,#pageSyllabus .syllabus-form-card .grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}
#pageTimetable .timetable-form-card .grid.two-equal{grid-template-columns:repeat(3,minmax(0,1fr))}
#pageFaculty .faculty-form-card .grid.two-equal{grid-template-columns:repeat(3,minmax(0,1fr))}
#pageColleges .full-form-card .grid.two{grid-template-columns:minmax(0,2fr) minmax(220px,1fr)}
#pageColleges .map{height:360px}

@media(max-width:1180px){
  #pageFaculty .faculty-form-card .grid.two-equal,#pageTimetable .timetable-form-card .grid.two-equal{grid-template-columns:repeat(2,minmax(0,1fr))}
  #pageSubjects .subject-form-card .grid.three,#pageSyllabus .syllabus-form-card .grid.three{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:760px){
  .main-panel{padding:12px}
  .page{padding:15px;border-radius:20px;min-height:calc(100vh - 92px)}
  .form-section-head{flex-direction:column;gap:8px}
  .form-section-hint{white-space:normal}
  #pageFaculty .faculty-form-card .grid.two-equal,#pageTimetable .timetable-form-card .grid.two-equal,#pageSubjects .subject-form-card .grid.three,#pageSyllabus .syllabus-form-card .grid.three,#pageColleges .full-form-card .grid.two{grid-template-columns:1fr}
  #pageColleges .map{height:280px}
  .top-actions{width:100%;justify-content:flex-start}
  .top-actions button{flex:1 1 auto}
  .app-toast{left:16px;right:16px;top:16px;max-width:none}
}

/* v14.1 login refresh */
.login-shell{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:32px;
  position:relative;
  overflow:hidden;
}
.login-backdrop{
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 12% 16%, rgba(67,97,238,.14), transparent 24%),
    radial-gradient(circle at 88% 18%, rgba(124,58,237,.12), transparent 20%),
    linear-gradient(180deg, #f7f9ff 0%, #eef3fb 100%);
}
.login-wrap{
  position:relative;
  z-index:1;
  width:min(1120px,100%);
  display:grid;
  grid-template-columns:minmax(0,1.15fr) minmax(360px,420px);
  gap:28px;
  align-items:stretch;
}
.login-showcase{
  background:linear-gradient(145deg, #0f172a 0%, #172554 55%, #1d4ed8 100%);
  color:#fff;
  border-radius:30px;
  padding:42px;
  box-shadow:0 28px 70px rgba(15,23,42,.22);
  display:flex;
  flex-direction:column;
  justify-content:center;
  min-height:620px;
}
.login-showcase-badge{
  display:inline-flex;
  width:max-content;
  padding:9px 14px;
  border-radius:999px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.12);
  color:#dbe8ff;
  font-size:12px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  margin-bottom:20px;
}
.login-showcase-title{
  margin:0 0 16px;
  font-size:42px;
  line-height:1.14;
  letter-spacing:-.03em;
  color:#fff;
}
.login-showcase-copy{
  margin:0;
  font-size:16px;
  line-height:1.75;
  color:#d7e1f7;
  max-width:640px;
}
.login-pill-row{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:24px 0 30px;
}
.login-pill{
  display:inline-flex;
  align-items:center;
  padding:9px 14px;
  border-radius:999px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.14);
  font-size:13px;
  font-weight:700;
  color:#eef4ff;
}
.login-mini-cards{
  display:grid;
  gap:14px;
}
.login-mini-card{
  display:flex;
  align-items:flex-start;
  gap:14px;
  padding:18px 18px;
  border-radius:20px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.12);
  backdrop-filter:blur(8px);
}
.login-mini-icon{
  width:44px;
  height:44px;
  border-radius:14px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.12);
  font-size:21px;
  flex:0 0 44px;
}
.login-mini-card strong{
  display:block;
  margin-bottom:4px;
  font-size:16px;
  color:#fff;
}
.login-mini-card small{
  display:block;
  font-size:13px;
  line-height:1.55;
  color:#d6e2fa;
}
.login-card{
  position:relative;
  z-index:1;
  width:100%;
  max-width:none;
  align-self:center;
  padding:34px 30px 30px;
  border-radius:28px;
  border:1px solid rgba(226,232,240,.95);
  background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);
  box-shadow:0 24px 60px rgba(15,23,42,.10);
}
.login-card-top{
  display:flex;
  align-items:flex-start;
  gap:16px;
  margin-bottom:22px;
}
.login-card h2{
  margin:3px 0 6px;
  font-size:32px;
  color:var(--text);
  letter-spacing:-.02em;
}
.login-subtitle{
  margin:0;
  color:var(--text-soft);
  font-size:14px;
  line-height:1.6;
}
.brand-mark{
  width:60px;
  height:60px;
  border-radius:18px;
  display:grid;
  place-items:center;
  font-size:20px;
  font-weight:800;
  background:linear-gradient(135deg,var(--accent),var(--accent-2));
  color:#fff;
  box-shadow:0 14px 30px rgba(67,97,238,.22);
  margin:0;
  flex:0 0 60px;
}
.login-field-grid{
  display:grid;
  gap:16px;
}
.login-field-grid > div{display:grid}
.login-field-grid label{margin-bottom:8px}
.login-submit{
  margin-top:18px;
  width:100%;
  padding:14px 18px;
  font-size:15px;
}
.login-footer-note{
  text-align:center;
  margin-top:14px;
  color:var(--text-soft);
  font-size:13px;
}
#loginError{margin-top:14px}

@media (max-width: 980px){
  .login-wrap{grid-template-columns:1fr;max-width:640px}
  .login-showcase{min-height:auto;padding:30px}
  .login-showcase-title{font-size:34px}
}
@media (max-width: 640px){
  .login-shell{padding:16px}
  .login-wrap{gap:16px}
  .login-showcase{padding:24px;border-radius:24px}
  .login-showcase-title{font-size:28px}
  .login-card{padding:24px 18px 20px;border-radius:22px}
  .login-card-top{gap:12px}
  .login-card h2{font-size:28px}
  .brand-mark{width:52px;height:52px;border-radius:16px;font-size:18px;flex-basis:52px}
  .login-pill-row{margin:18px 0 22px}
}

/* v14.2 premium enterprise login */
.premium-login-shell{
  min-height:100vh;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:34px;
  position:relative;
  overflow:hidden;
  background:#f4f6fb;
}
.premium-login-bg{
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 14% 18%, rgba(37,99,235,.08), transparent 24%),
    radial-gradient(circle at 86% 12%, rgba(99,102,241,.08), transparent 22%),
    linear-gradient(180deg,#f8fafc 0%,#eef2f7 100%);
}
.premium-login-frame{
  position:relative;
  z-index:1;
  width:min(1040px,100%);
  min-height:600px;
  display:grid;
  grid-template-columns:minmax(0,1.05fr) minmax(360px,430px);
  background:#fff;
  border:1px solid #e6eaf0;
  border-radius:28px;
  overflow:hidden;
  box-shadow:0 32px 90px rgba(15,23,42,.14);
}
.premium-brand-panel{
  position:relative;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  padding:40px 42px;
  background:
    radial-gradient(circle at 85% 18%, rgba(59,130,246,.22), transparent 30%),
    linear-gradient(145deg,#0d1729 0%,#17233a 58%,#203454 100%);
  color:#fff;
  overflow:hidden;
}
.premium-brand-panel::after{
  content:"";
  position:absolute;
  width:320px;
  height:320px;
  right:-170px;
  bottom:-180px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,.08);
  box-shadow:0 0 0 44px rgba(255,255,255,.025),0 0 0 88px rgba(255,255,255,.018);
}
.premium-brand-top{display:flex;align-items:center;gap:14px;position:relative;z-index:1}
.premium-brand-mark{
  width:50px;height:50px;border-radius:15px;display:grid;place-items:center;
  background:#fff;color:#17233a;font-weight:900;font-size:17px;letter-spacing:.02em;
  box-shadow:0 10px 28px rgba(0,0,0,.18)
}
.premium-brand-name{font-size:18px;font-weight:800;letter-spacing:-.01em}
.premium-brand-kicker{font-size:12px;color:#aab9d3;margin-top:3px;letter-spacing:.04em}
.premium-brand-copy{position:relative;z-index:1;max-width:560px}
.premium-brand-line{display:block;width:44px;height:3px;border-radius:99px;background:#74a7ff;margin-bottom:24px}
.premium-brand-copy h1{margin:0 0 18px;color:#fff;font-size:42px;line-height:1.12;letter-spacing:-.035em;font-weight:750}
.premium-brand-copy p{margin:0;color:#c8d3e6;font-size:16px;line-height:1.75;max-width:520px}
.premium-brand-footer{position:relative;z-index:1;display:flex;gap:18px;flex-wrap:wrap;color:#9fb0cc;font-size:12px;letter-spacing:.04em}
.premium-brand-footer span{position:relative;padding-left:12px}
.premium-brand-footer span::before{content:"";position:absolute;left:0;top:50%;width:4px;height:4px;border-radius:50%;background:#6fa2ff;transform:translateY(-50%)}
.premium-login-card{
  align-self:center;
  padding:48px 42px;
  background:#fff;
}
.premium-login-heading{margin-bottom:30px}
.premium-login-eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#64748b;margin-bottom:9px}
.premium-login-heading h2{margin:0 0 8px;color:#111827;font-size:34px;letter-spacing:-.025em;font-weight:800}
.premium-login-heading p{margin:0;color:#7b8798;font-size:14px;line-height:1.6}
.premium-login-fields{display:grid;gap:17px}
.premium-login-fields label{margin-bottom:7px;color:#5f6b7c;font-size:11px;letter-spacing:.08em}
.premium-login-fields input{
  height:48px;
  margin:0;
  border-radius:12px;
  border:1px solid #dce2ea;
  background:#fbfcfe;
  padding:0 14px;
  color:#172033;
  box-shadow:none;
}
.premium-login-fields input:focus{background:#fff;border-color:#8eabff;box-shadow:0 0 0 4px rgba(59,130,246,.10)}
.premium-login-submit{height:50px;margin-top:24px;border-radius:12px;background:#1d4ed8;box-shadow:0 14px 30px rgba(29,78,216,.20);font-size:14px;letter-spacing:.01em}
.premium-login-submit:hover{background:#1e40af;filter:none}
.premium-login-note{text-align:center;color:#94a0b2;font-size:12px;margin-top:15px}
.premium-login-card #loginError{margin-top:16px}

@media(max-width:900px){
  .premium-login-shell{padding:20px}
  .premium-login-frame{grid-template-columns:1fr;max-width:620px}
  .premium-brand-panel{min-height:280px;padding:30px}
  .premium-brand-copy h1{font-size:32px}
  .premium-brand-copy p{font-size:14px}
  .premium-brand-footer{margin-top:28px}
  .premium-login-card{padding:34px 30px}
}
@media(max-width:560px){
  .premium-login-shell{padding:12px}
  .premium-login-frame{border-radius:22px}
  .premium-brand-panel{padding:24px;min-height:250px}
  .premium-brand-copy h1{font-size:27px}
  .premium-brand-copy p{font-size:13px;line-height:1.65}
  .premium-brand-footer{gap:10px 14px}
  .premium-login-card{padding:28px 20px 24px}
  .premium-login-heading h2{font-size:30px}
}

/* v14.3 Faculty Android credentials */
.faculty-password-field{grid-column:1 / -1;max-width:520px}
.faculty-password-hint{margin:-6px 0 4px;line-height:1.5}
.android-access-enabled{background:var(--green-bg);color:var(--green)}
.android-access-notset{background:var(--paper-dim);color:var(--muted)}
@media(max-width:760px){.faculty-password-field{grid-column:1;max-width:none}}

/* v15 tenant configuration + access scopes */
.config-form-card{width:100%;max-width:none}.config-grid{align-items:start}.config-password-field{min-width:0}.access-scope-box{border:1px solid var(--line-soft,#e2e8f0);border-radius:16px;padding:14px;background:#f8fbff}.scope-options{display:grid;grid-template-columns:1fr;gap:9px}.scope-options-inline{grid-template-columns:repeat(2,minmax(0,1fr))}.scope-option{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;margin:0;border:1px solid #e6ebf4;border-radius:13px;background:#fff;text-transform:none;letter-spacing:0;cursor:pointer}.scope-option:hover{border-color:rgba(67,97,238,.32);background:#fbfcff}.scope-option input{width:auto;margin:3px 0 0;accent-color:var(--accent,#4361ee);flex:0 0 auto}.scope-option span{display:flex;flex-direction:column;gap:3px}.scope-option strong{font-size:13px;color:var(--text,#172033)}.scope-option small{font-size:11px;color:var(--text-soft,#64748b);line-height:1.4}.access-scope-pill{background:#eef2ff;color:#4055c8}.config-table{min-width:980px}.config-table .caption{margin-top:3px}.access-profile-card{padding:26px;max-width:900px}.access-profile-head{display:flex;align-items:center;gap:16px;padding-bottom:20px;border-bottom:1px solid var(--line-soft,#e2e8f0)}.access-profile-head h2{margin:0 0 4px}.access-profile-avatar{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent,#4361ee),var(--accent-2,#7c3aed));color:#fff;font-weight:800}.access-profile-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-top:20px}.access-profile-grid>div{padding:15px;border:1px solid var(--line-soft,#e2e8f0);border-radius:15px;background:#fbfcff;display:flex;flex-direction:column;gap:7px}.access-profile-grid span{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-soft,#64748b);font-weight:700}.access-profile-grid strong{font-size:14px}.access-profile-note{margin:16px 0 0}.faculty-password-field{min-width:0}
@media(max-width:980px){.access-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.scope-options-inline{grid-template-columns:1fr}}
@media(max-width:760px){.config-grid{grid-template-columns:1fr!important}.access-profile-grid{grid-template-columns:1fr}.scope-option{padding:12px}.access-profile-card{padding:18px}}


/* v15.4 Academic calendar / holiday controls */
.calendar-holiday-manager{padding:22px;margin-bottom:18px}.calendar-policy-banner{display:flex;align-items:flex-start;gap:14px;padding:15px 16px;border:1px solid #dbe4ff;background:#f7f9ff;border-radius:16px;margin-bottom:18px}.calendar-policy-icon{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--navy);color:#fff;font-weight:800;flex:none}.calendar-policy-banner strong{font-size:14px}.calendar-policy-banner p{margin:4px 0 0;color:var(--text-soft);font-size:12.5px;line-height:1.5}.calendar-manager-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px}.calendar-manager-panel{border:1px solid var(--line-soft);border-radius:18px;padding:18px;background:var(--surface-2)}.calendar-manager-panel>div{margin-bottom:12px}.calendar-manager-panel label{display:block;margin-bottom:6px}.calendar-manager-panel select[multiple]{min-height:142px;padding:8px}.calendar-manager-panel select[multiple] option{padding:8px 9px;border-radius:7px}.calendar-date-add{display:grid;grid-template-columns:1fr auto;gap:8px}.calendar-date-add button{white-space:nowrap}.calendar-date-chips{display:flex;gap:7px;flex-wrap:wrap;min-height:32px;align-items:center}.calendar-date-chip{border:1px solid #dbe4ff;background:#eef2ff;color:#4055c8;border-radius:999px;padding:7px 10px;font-size:12px;cursor:pointer}.calendar-open-copy{margin:-2px 0 14px;line-height:1.5}.calendar-rules-section{margin-top:22px;border-top:1px solid var(--line-soft);padding-top:18px}.calendar-rules-table{min-width:780px}.calendar-day-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.calendar-day-heading h2{margin:0!important}.calendar-holiday-pill{background:#fff2e2;color:#a45c00}.calendar-open-pill{background:#e8f8f0;color:#16764c}.calendar-row-holiday{background:#fffaf2}.calendar-row-open{background:#f5fcf8}.calendar-open-inline{margin-top:7px;padding:6px 9px;font-size:11px}.calendar-table{min-width:820px}.calendar-table td:last-child{min-width:190px}.calendar-day-holiday>.table-card{border-color:#f1d7b2}.inline-message.msg-success{color:var(--green);background:var(--green-bg);border:1px solid #bfe7d2;border-radius:10px;padding:10px 12px}.inline-message.msg-error{color:var(--red);background:var(--red-bg);border:1px solid #efc1b8;border-radius:10px;padding:10px 12px}@media(max-width:900px){.calendar-manager-grid{grid-template-columns:1fr}.calendar-date-add{grid-template-columns:1fr}.calendar-holiday-manager{padding:16px}}
