:root { color-scheme: light; font-family: Inter, system-ui, sans-serif; color: #17202a; background: #f3f5f7; }
* { box-sizing: border-box; }
body { margin: 0; }
body { font-size: 15px; line-height: 1.45; }
a { color: #176c56; text-underline-offset: 3px; }
button,input,select,textarea { font: inherit; }
button,.primary,.secondary { min-height: 40px; border-radius: 9px; cursor: pointer; transition: background .15s,border-color .15s,box-shadow .15s,transform .05s; }
button { border: 1px solid #b9c9c3; background: #fff; color: #173d35; padding: 9px 14px; font-weight: 700; }
button:hover,.secondary:hover { border-color: #176c56; background: #edf6f2; }
button:active,.primary:active { transform: translateY(1px); }
button:disabled { cursor: not-allowed; opacity: .45; background: #edf0ef; }
.primary:hover { background: #125a47; box-shadow: 0 4px 12px rgba(23,108,86,.2); }
.secondary { display: inline-flex; align-items: center; justify-content: center; }
input,select,textarea { border: 1px solid #c5d1cd; border-radius: 8px; background: #fff; color: #17202a; }
input:focus,select:focus,textarea:focus { outline: 3px solid rgba(23,108,86,.14); border-color: #176c56; }
.topbar { position: sticky; top: 0; z-index: 30; height: 68px; padding: 0 28px; background: #173d35; color: white; display: flex; align-items: center; justify-content: space-between; }
.topbar div { display: flex; gap: 16px; align-items: baseline; }
.topbar strong { font-size: 24px; }
.topbar button { background: #fff; border: 0; border-radius: 8px; padding: 10px 14px; }
.layout { display: grid; grid-template-columns: 230px 1fr; min-height: calc(100vh - 68px); }
nav { padding: 24px 14px; background: white; border-right: 1px solid #dfe5e2; }
nav a { display: block; color: #35423f; text-decoration: none; padding: 11px 14px; border-radius: 8px; margin-bottom: 5px; }
nav a.active { background: #dcebe5; color: #123d32; font-weight: 700; }
main { padding: 34px; max-width: 1220px; }
h1 { margin: 0 0 6px; }
.lead { color: #62706c; margin-top: 0; }
.cards { display: grid; grid-template-columns: repeat(4, minmax(160px, 1fr)); gap: 16px; margin: 28px 0; }
.cards article, .panel { background: white; border: 1px solid #dde4e1; border-radius: 12px; padding: 20px; box-shadow: 0 3px 12px rgba(20, 50, 40, .04); }
.cards small, .cards span { display: block; color: #6b7774; }
.cards strong { display: block; font-size: 30px; margin: 8px 0; }
.panel { max-width: 760px; }
.panel li { margin: 10px 0; }
.primary { background: #176c56; color: white; border: 0; border-radius: 8px; padding: 12px 18px; font-weight: 700; }
@media (max-width: 800px) { .layout { grid-template-columns: 1fr; } nav { display: none; } .cards { grid-template-columns: 1fr 1fr; } main { padding: 22px; } }
.import-main { margin: 0 auto; }
.import-form { display: grid; gap: 18px; }
.import-form label { display: grid; gap: 8px; font-weight: 700; }
.import-form input { border: 1px solid #cbd6d2; border-radius: 8px; padding: 10px; font-weight: 400; }
.import-cards { grid-template-columns: repeat(4, minmax(160px, 1fr)); }
.alert { padding: 14px 16px; border-radius: 8px; margin: 18px 0; }
.alert.error { background: #fde9e7; color: #84251f; border: 1px solid #efc3bf; }
.alert.success { background: #e3f2eb; color: #145641; border: 1px solid #b8decf; }
.table-wrap { overflow-x: auto; max-height: none; }
table { width: 100%; border-collapse: collapse; }
th, td { text-align: left; padding: 10px; border-bottom: 1px solid #e1e6e4; }
th { color: #53615d; font-size: 13px; }
.table-wrap thead th { position: sticky; top: 0; z-index: 3; background: #fff; box-shadow: 0 1px #dfe5e2; }
.tall-table { max-height: none; overflow-x: auto; }
.wide-main { width: 100%; max-width: 1680px; margin: 0 auto; padding: 28px 34px; }
.wide-panel { max-width: none; }
.filter-grid { display: flex; flex-wrap: wrap; margin: 18px 0; }
.filter-grid input,.filter-grid select { min-width: 145px; padding: 10px; border: 1px solid #cbd6d2; border-radius: 8px; background: white; }
.quick-filter { display: flex; justify-content: space-between; align-items: end; gap: 12px; margin: 0 0 10px; color: #62706c; }
.quick-filter label { display: grid; gap: 5px; font-size: 13px; }
.quick-filter input { width: min(360px,70vw); padding: 9px 11px; border: 1px solid #cbd6d2; border-radius: 8px; }
.global-sidebar { position: fixed; left: 0; top: 68px; bottom: 0; width: 250px; z-index: 20; overflow-y: auto; padding: 20px 14px; background: #fff; border-right: 1px solid #dfe5e2; }
.global-sidebar > strong { display: block; padding: 8px 14px; color: #60706b; font-size: 13px; text-transform: uppercase; }
.with-global-sidebar { padding-left: 250px; }
.with-global-sidebar main { max-width: none; }
.with-global-sidebar .topbar { margin-left: -250px; padding-left: 278px; }
.unified-layout { display: block; min-height: calc(100vh - 68px); }
.unified-layout main { max-width: none; }
.global-sidebar a { font-weight: 600; }
.global-sidebar a:hover { background: #edf5f2; color: #123d32; }
.cohort-list { display: grid; gap: 14px; margin-top: 22px; }
.cohort-card { max-width: none; margin: 0; }
.cohort-heading { display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.cohort-heading h2 { margin: 0 0 4px; }
.cohort-heading small { color: #62706c; }
.cohort-counts { display: grid; grid-template-columns: repeat(7,minmax(90px,1fr)); gap: 10px; margin-top: 16px; }
.cohort-counts label { display: grid; gap: 5px; color: #53615d; font-weight: 700; }
.cohort-counts input { width: 100%; padding: 10px; border: 1px solid #cbd6d2; border-radius: 8px; }
.program-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 14px; }
.dictionary-card { display: grid; gap: 11px; padding: 18px; border: 1px solid #d8e2de; border-radius: 12px; background: #fbfdfc; }
.dictionary-card.new { border: 2px dashed #aac9bd; background: #f2f8f5; }
.dictionary-card h2 { margin: 0; }
.dictionary-card label:not(.check) { display: grid; gap: 5px; color: #53615d; font-weight: 700; }
.dictionary-card input,.dictionary-card select { width: 100%; padding: 9px 10px; }
.dictionary-card .check { display: flex; gap: 8px; align-items: center; }
.dictionary-actions { display: flex; justify-content: space-between; align-items: center; color: #62706c; }
.panel { box-shadow: 0 5px 20px rgba(20,50,40,.055); }
tbody tr:hover { background: #f5faf8; }
.config-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(280px,1fr)); gap: 15px; margin-top: 24px; }
.config-card { display: grid; gap: 8px; min-height: 130px; padding: 22px; border: 1px solid #d7e1dd; border-radius: 14px; background: #fff; color: #17202a; text-decoration: none; box-shadow: 0 5px 18px rgba(20,50,40,.05); }
.config-card:hover { border-color: #78ad9b; background: #f5faf8; transform: translateY(-1px); }
.config-card strong { color: #145b48; font-size: 18px; }
.config-card span { color: #62706c; }
.employment-layout { display: grid; grid-template-columns: minmax(260px,340px) 1fr; gap: 16px; align-items: start; }
.employee-list { max-height: none; overflow: visible; padding: 10px; }
.list-search { width: 100%; padding: 10px; margin-bottom: 8px; }
.employee-kind-filter { width: 100%; padding: 10px; margin-bottom: 8px; }
.employee-add { display: flex; justify-content: center; margin-bottom: 8px; text-decoration: none; }
.employee-edit { margin: 0 0 14px; }
.employee-editor { max-width: 980px; display: grid; gap: 15px; }
.employee-editor label { display: grid; gap: 6px; font-weight: 700; }
.employee-editor input,.employee-editor select { padding: 10px; }
.deactivate-panel { max-width: 980px; margin-top: 16px; }
.bulk-employment { display: grid; gap: 16px; }
.bulk-template { max-width: none; }
.bulk-template label { display: grid; gap: 5px; }
.bulk-template input,.bulk-template select { padding: 9px; }
.bulk-toolbar { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; margin-bottom: 14px; }
.bulk-toolbar input { flex: 1; min-width: 240px; padding: 10px; }
.employee-check-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(240px,1fr)); gap: 8px; }
.employee-check { display: flex; gap: 9px; align-items: start; padding: 11px; border: 1px solid #dce4e1; border-radius: 9px; background: #fbfdfc; }
.employee-check:has(input:checked) { background: #e3f2eb; border-color: #6cae96; }
.employee-check span { display: grid; }
.employee-check small { color: #62706c; }
.cohort-add { max-width: none; margin-top: 20px; }
.cohort-add label { display: grid; gap: 5px; }
.cohort-add select { padding: 10px; }
.employee-item { display: grid; gap: 3px; padding: 10px 12px; border-radius: 8px; color: #17202a; text-decoration: none; }
.employee-item:hover,.employee-item.active { background: #e2f0eb; }
.employee-item small { color: #62706c; }
.employment-detail { max-width: none; }
.period-row { display: flex; justify-content: space-between; gap: 16px; padding: 14px 0; border-bottom: 1px solid #e1e6e4; }
.period-row > div { display: grid; gap: 4px; }
.employment-form { display: grid; gap: 14px; margin-top: 22px; padding-top: 18px; border-top: 2px solid #dfe8e4; }
.employment-form label { display: grid; gap: 5px; }
.employment-form input,.employment-form select { padding: 9px; }
.danger-button { color: #8a2820; border-color: #ddb4af; }
.account-list { display: grid; gap: 8px; }
.account-list article { display: grid; gap: 3px; padding: 12px; border: 1px solid #e0e6e3; border-radius: 9px; background: #fbfdfc; }
.account-list span,.account-list small { color: #62706c; }
@media(max-width:900px){.employment-layout{grid-template-columns:1fr}.employee-list{max-height:320px}}
.planning-main { max-width: 1600px; margin: 0 auto; }
.planning-head, .group-title { display: flex; justify-content: space-between; align-items: end; gap: 20px; }
.filters { display: flex; gap: 10px; align-items: center; }
.filters select, .filters button, .bulk-bar select { padding: 10px; border: 1px solid #cbd6d2; border-radius: 8px; background: white; }
.assignment-layout { display: grid; grid-template-columns: minmax(330px, 42%) 1fr; gap: 18px; margin-top: 24px; align-items: start; }
.subject-list { max-height: none; overflow: visible; padding: 10px; }
.subject-list h2 { padding: 0 10px; }
.subject-row { display: flex; justify-content: space-between; gap: 12px; color: inherit; text-decoration: none; padding: 12px; border-radius: 9px; border-bottom: 1px solid #edf0ef; }
.subject-row:hover, .subject-row.selected { background: #e4f0ec; }
.subject-row span:first-child { display: grid; gap: 4px; }
.subject-row small { color: #6b7774; }
.hours { white-space: nowrap; align-self: center; font-weight: 700; }
.hours.warn { color: #a54d14; } .hours.ok { color: #167052; }
.group-panel { min-height: 470px; }
.group-title { align-items: start; }
.group-title h2, .group-title p { margin-top: 0; }
.secondary { color: #176c56; border: 1px solid #176c56; border-radius: 8px; padding: 10px 12px; text-decoration: none; white-space: nowrap; }
.group-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(175px, 1fr)); gap: 10px; margin: 20px 0 90px; }
.group-card { position: relative; display: grid; gap: 6px; border: 1px solid #d7dfdc; border-radius: 10px; padding: 14px 12px 12px 38px; cursor: pointer; }
.group-card input { position: absolute; left: 13px; top: 16px; }
.group-card:has(input:checked) { background: #e4f0ec; border-color: #176c56; }
.group-card.complete { background: #f2f6f4; opacity: .75; cursor: default; }
.group-card small { color: #64716d; }
.group-code { font-size: 13px; font-weight: 700; color: #176c56; }
.bulk-bar { position: sticky; bottom: 12px; display: flex; gap: 10px; background: #173d35; border-radius: 12px; padding: 14px; box-shadow: 0 8px 28px rgba(0,0,0,.2); }
.bulk-bar select { flex: 1; min-width: 180px; }
.empty { color: #6b7774; padding: 12px; }
@media (max-width: 1000px) { .assignment-layout { grid-template-columns: 1fr; } .subject-list { max-height: 420px; } .planning-head { align-items: start; flex-direction: column; } }
.count-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px; margin: 16px 0 26px; }
.count-grid label { display: grid; gap: 6px; border: 1px solid #d9e1de; border-radius: 10px; padding: 14px; }
.count-grid label span { font-weight: 800; color: #176c56; }.count-grid label small { color: #65716e; min-height: 34px; }
.count-grid input, .wide-label input { width: 100%; border: 1px solid #cbd6d2; border-radius: 7px; padding: 9px; }
.wide-label { display: grid; gap: 7px; margin: 18px 0; }.form-actions { margin-top: 22px; }
.student-count { display: grid; gap: 7px; max-width: 280px; font-weight: 700; }.student-count input { border: 1px solid #cbd6d2; border-radius: 7px; padding: 10px; }.lead.small { font-size: 14px; margin-top: 12px; }
.student-count select { border: 1px solid #cbd6d2; border-radius: 7px; padding: 10px; background: white; }.inline-fields { display: flex; gap: 16px; align-items: end; flex-wrap: wrap; }.inline-fields > * { flex: 1; min-width: 220px; }.location-list { display: grid; gap: 8px; margin: 15px 0 22px; }.location-list label { display: grid; grid-template-columns: minmax(150px,240px) 1fr; gap: 12px; align-items: center; padding: 9px; border-bottom: 1px solid #e1e6e4; }.location-list label span { display: grid; gap: 3px; }.location-list label small { color: #687570; }.location-list input { padding: 9px; border: 1px solid #cbd6d2; border-radius: 7px; }
.badge { display: inline-block; border-radius: 999px; padding: 5px 9px; font-size: 12px; font-weight: 800; background: #e8eeec; }.badge.danger,.over { color: #a12d25; }.badge.warn,.under { color: #9a5716; }.badge.ok,.balanced { color: #176c56; }
.badge.submitted { background: #fff0ce; color: #7a5100; }.badge.returned { background: #fde3df; color: #8a2820; }.badge.approved { background: #dff1e9; color: #145b45; }.badge.exported { background: #dce4eb; color: #304a61; }
.scope-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(280px,1fr)); gap: 15px; }.scope-card { display: grid; gap: 10px; }.scope-card h2 { margin: 4px 0; }.scope-card form { display: grid; gap: 8px; }.scope-card select,.scope-card input,.scope-card button,.copy-form select { padding: 9px; border: 1px solid #cbd6d2; border-radius: 7px; background: white; }
.copy-form { display: grid; gap: 16px; max-width: 650px; }.copy-form label { display: grid; gap: 7px; font-weight: 700; }
.row-actions { display: flex; gap: 6px; align-items: center; }.row-actions form { display: flex; gap: 5px; }.row-actions a,.row-actions button { padding: 6px 8px; border: 1px solid #cbd6d2; border-radius: 6px; background: white; color: #174f40; text-decoration: none; white-space: nowrap; }
.report-filters { margin: 20px 0; }.report-filters input { width: 130px; padding: 10px; border: 1px solid #cbd6d2; border-radius: 8px; }.export-actions { display: flex; justify-content: space-between; align-items: center; margin: 18px 0 10px; }.primary.disabled { opacity: .45; pointer-events: none; }.report-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(300px,1fr)); gap: 16px; margin-top: 24px; }
.copy-form input,.copy-form textarea { padding: 9px; border: 1px solid #cbd6d2; border-radius: 7px; }.document-list { display: grid; }.document-list a { display: flex; justify-content: space-between; padding: 11px 4px; border-bottom: 1px solid #e0e6e3; color: inherit; text-decoration: none; }.document-list a span:first-child { display: grid; gap: 3px; }.document-list small { color: #687570; }
.hours-input { width: 85px; }.sticky-save { position: sticky; bottom: 12px; display: flex; justify-content: flex-end; padding: 12px; background: rgba(23,61,53,.92); border-radius: 10px; margin-top: 10px; }
.login-body { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: #edf3f0; }.login-card,.setup-card { width: min(460px,100%); background: white; border: 1px solid #d7e1dd; border-radius: 16px; padding: 32px; box-shadow: 0 18px 55px rgba(15,55,43,.12); }.setup-card { width: min(720px,100%); }.login-brand { color: #176c56; font-size: 28px; font-weight: 900; }.requirements { display: flex; gap: 7px; flex-wrap: wrap; margin: 18px 0; }.logout-link { color: white; text-decoration: none; border: 1px solid rgba(255,255,255,.55); border-radius: 7px; padding: 7px 10px; }.settings-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }.simple-list { list-style: none; padding: 0; }.simple-list li { border-bottom: 1px solid #e1e6e4; padding: 9px 0; }.simple-list li span { display: grid; }.simple-list small { color: #687570; }@media(max-width:800px){.settings-tabs{grid-template-columns:1fr;}}
@media(max-width:900px){.global-sidebar{position:static;width:auto;border-right:0;border-bottom:1px solid #dfe5e2;display:flex;overflow-x:auto;padding:8px}.global-sidebar>strong{display:none}.global-sidebar a{white-space:nowrap;margin:0}.with-global-sidebar{padding-left:0}.with-global-sidebar .topbar{margin-left:0;padding-left:28px}.tall-table{max-height:65vh}.wide-main{padding:20px}.topbar{position:relative}}
@media(max-width:900px){.cohort-counts{grid-template-columns:repeat(2,minmax(100px,1fr))}.cohort-heading{align-items:flex-start;flex-direction:column}}
.page-title-actions,.catalog-summary,.course-form-actions{display:flex;justify-content:space-between;align-items:center;gap:16px}.course-form{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:16px;max-width:1050px}.course-form label{display:grid;gap:6px;font-weight:700}.course-form input,.course-form select{padding:10px;border:1px solid #cbd6d2;border-radius:8px;background:#fff}.course-form .course-name,.course-form-actions{grid-column:1/-1}.course-invalid{background:#fff8f6}.validation-list{margin:7px 0 0;padding-left:18px;color:#9b3028;font-size:13px}.row-links{display:flex;gap:9px;margin-top:6px}.row-links a{white-space:nowrap}.catalog-summary{margin-bottom:10px}.catalog-summary form{margin:0}@media(max-width:750px){.course-form{grid-template-columns:1fr}.course-form .course-name,.course-form-actions{grid-column:auto}.page-title-actions{align-items:flex-start;flex-direction:column}}
.course-delete{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding-top:16px;border-top:1px solid #e4d2cf}.course-delete small{color:#7d514b}
.validation-list li{cursor:pointer;text-decoration:underline}.alert.error a{color:inherit;font-weight:700}
.planning-filters input[name=search]{min-width:210px;padding:10px;border:1px solid #cbd6d2;border-radius:8px}.assignment-table-wrap{overflow-x:auto;margin:18px 0 80px}.assignment-table{width:100%;border-collapse:collapse}.assignment-table th,.assignment-table td{padding:9px 8px;border-bottom:1px solid #dfe6e3;text-align:left;vertical-align:top}.assignment-budget{display:grid;gap:2px;white-space:nowrap}.assignment-budget small{color:#a54d14}.assignment-edit-list{display:grid;gap:6px}.assignment-edit{display:grid;grid-template-columns:minmax(210px,1fr) 78px auto auto;gap:6px}.assignment-edit select,.assignment-edit input,.assignment-edit button{padding:7px;border:1px solid #cbd6d2;border-radius:6px;background:#fff}.assignment-edit .hours-input{width:78px}@media(max-width:800px){.assignment-edit{grid-template-columns:1fr 70px}.planning-filters{align-items:stretch;flex-direction:column}}
