/* Extends the existing visual language; styles.css and the landing remain intact. */
.app-body{font-family:Arial,Helvetica,sans-serif;font-size:14px}.app-body .topbar{position:relative;z-index:20;gap:22px;min-height:72px;height:auto;padding-top:13px;padding-bottom:13px}.app-body .brand{min-width:207px}.brand small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:4px}.app-body .sidebar{position:fixed;top:72px;width:230px;z-index:15;min-height:0;overflow:auto;padding-top:24px}.app-body .workspace{padding-top:32px}.app-body .nav-item{background:transparent;color:#68758a;margin-bottom:6px;border:0;width:100%;text-align:left;cursor:pointer;font:inherit;font-size:13px}.app-body .nav-item:hover{background:#f5f6fb}.app-body .nav-item.selected{background:#eff3ff;color:var(--purple);font-weight:600}.sidebar-bottom{margin-top:auto;padding-top:30px}.app-body .nav-item svg{width:18px;height:18px}.icon-button{display:grid;place-items:center;background:none;border:0;color:#56647a;cursor:pointer;padding:8px;border-radius:8px}.icon-button:hover{background:#f0edff}.year-switcher{display:flex;align-items:center;gap:9px;margin-left:auto}.year-switcher label{font-size:10px;letter-spacing:.7px;color:var(--muted);white-space:nowrap}.year-switcher select{width:auto;font-size:12px;padding:7px 10px}.small-button{border:1px solid var(--border);background:white;border-radius:7px;padding:7px 10px;color:var(--purple);cursor:pointer;font-size:11px}.user-link{display:flex;align-items:center;gap:8px;font-size:12px;max-width:230px}.user-link>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar{width:32px;height:32px;display:grid;place-items:center;flex-shrink:0;border-radius:50%;background:#eeeaff;color:var(--purple);font-weight:700}.app-body h2{font-size:19px;letter-spacing:-.4px;margin:0 0 16px;line-height:1.35}.app-body h3{display:flex;align-items:center;gap:9px}.app-body h3 svg{width:17px;height:17px;color:var(--purple)}.panel{background:white;border:1px solid var(--border);border-radius:20px;padding:26px;box-shadow:0 2px 3px #10182c08;margin-bottom:22px;min-width:0}.panel p{font-size:13px;line-height:1.8;color:var(--muted);margin:0 0 18px}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px}.panel-heading h2{margin:0}.form-panel{margin-top:24px}.narrow-panel{max-width:640px}.field{display:flex;flex-direction:column;gap:8px;margin-bottom:18px;min-width:0}.field>span{font-size:12px;font-weight:600;color:#3a4660}.field input,select,.reset-link{width:100%;min-width:0;font:inherit;font-size:13px;line-height:1.4;color:#263149;border:1px solid #dce1ea;border-radius:9px;background:white;padding:11px 12px}.field input:focus,select:focus{outline:2px solid #c3b8ff;outline-offset:1px;border-color:#9984ff}.field input:disabled,select:disabled{background:#f3f5f9;color:#7a8597}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px}.form-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:20px}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;padding:12px 18px;border:1px solid var(--purple);background:var(--purple);color:white;border-radius:10px;cursor:pointer;font:inherit;font-size:12px;font-weight:600;line-height:1.5;text-decoration:none}.button:hover{background:#4228df}.button.secondary{background:white;color:#5a647b;border-color:#dce1ea}.button.secondary:hover{background:#f7f8fc}.text-link{display:inline-block;color:var(--purple);font-size:12px;font-weight:600;margin-top:15px}.badge{display:inline-flex;align-items:center;border-radius:7px;background:#f1efff;color:#5b43d6;font-size:11px;padding:7px 10px;white-space:nowrap}.badge.green{background:#e8faf3;color:#008965}.badge.orange{background:#fff4df;color:#a56800}.badges{display:flex;flex-wrap:wrap;gap:7px}.muted{color:#7a8799!important;font-size:12px}.alert{background:#eff3ff;border:1px solid #dbe2ff;border-radius:12px;color:#41516f;padding:16px 20px;font-size:13px;line-height:1.8;margin-bottom:22px;overflow-wrap:anywhere}.alert.error{background:#fff2f2;border-color:#f5d3d3;color:#a52e36}.alert.success{background:#effbf6;border-color:#d5eee1;color:#217257}.alert p{margin:6px 0}.checkbox{display:flex;align-items:flex-start;gap:9px;font-size:12px;line-height:1.6;margin:8px 0 14px}.checkbox input{accent-color:var(--purple);width:16px;height:16px;flex-shrink:0;margin:2px 0 0}.checkbox-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px}fieldset{border:1px solid var(--border);border-radius:12px;padding:14px 17px;margin:16px 0 20px}legend{font-size:12px;font-weight:600;padding:0 7px}.table-scroll{overflow:auto;max-width:100%;border:1px solid #edf0f5;border-radius:10px}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;line-height:1.6}th{font-size:10px;color:#7c879a;background:#f8f9fc;text-transform:uppercase;letter-spacing:.4px;padding:13px 16px;white-space:nowrap}td{padding:15px 16px;border-top:1px solid #edf0f5;vertical-align:top}td a,th a{color:var(--purple);font-weight:600}tbody tr:hover{background:#fcfcff}.table-actions a{display:inline-block;margin-right:12px}.empty-state{text-align:center;padding:38px;color:#8792a5}.pagination{display:flex;justify-content:center;gap:24px;align-items:center;margin-top:19px;font-size:12px;color:#7a8799}.pagination a{color:var(--purple)}.filter-bar,.filter-bar form{display:flex;align-items:flex-end;gap:12px;margin-bottom:20px}.filter-bar .field{margin:0;max-width:360px;flex:1}.filter-bar select{max-width:230px}.filter-bar label:not(.field){font-size:12px}.panel>form.filter-bar{margin-bottom:24px}.permission-table th{white-space:normal;min-width:130px}.permission-table th:first-child{min-width:240px}.permission-table td{text-align:center}.permission-code{display:block;font-size:9px;text-transform:none;font-weight:400;letter-spacing:0;margin-top:3px}.granted{color:#00a875;font-weight:700}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin-bottom:26px}.stat-card{background:white;border:1px solid var(--border);border-radius:16px;padding:21px;box-shadow:0 2px 3px #10182c0a}.stat-card>span{font-size:10px;letter-spacing:.8px;color:#8792a6}.stat-card strong{display:block;font-size:23px;background:transparent;margin:10px 0 13px;overflow-wrap:anywhere}.stat-card strong.purple{color:var(--purple)}.stat-card strong.orange{color:#e78400}.stat-card:after{content:'';display:block;height:5px;border-radius:4px;background:#eeefff}.dashboard-banner{display:flex;align-items:center;justify-content:space-between;gap:20px;background:linear-gradient(110deg,#10172b,#352d86);border-radius:23px;padding:32px;color:white;margin-bottom:24px;box-shadow:0 5px 10px #131c3514}.dashboard-banner .eyebrow{font-size:9px;padding:0;border:0;background:none}.dashboard-banner h2{font-size:26px;margin:12px 0 10px}.dashboard-banner p{font-size:12px;color:#ccd0e8;line-height:1.8;margin:0}.banner-icon{background:#ffffff10;border:1px solid #ffffff18;padding:18px;border-radius:18px;transform:rotate(-8deg)}.banner-icon svg{width:45px;height:45px;color:#c1b5ff}.app-body .info-grid{margin-top:0}.app-body .info-grid .panel{margin-bottom:0}.app-body main{padding-bottom:28px}.app-body footer{margin-top:auto}.guest .workspace{margin-left:0;padding-top:44px;min-height:calc(100vh - 72px)}.guest .topbar{justify-content:space-between}.auth-layout{display:grid;grid-template-columns:1fr 1fr;max-width:980px;margin:0 auto 30px;gap:0;min-height:560px}.auth-welcome{background:linear-gradient(145deg,#10172b,#352d86);border-radius:24px 0 0 24px;padding:46px 40px;color:white;position:relative;overflow:hidden}.auth-welcome .eyebrow{font-size:9px}.auth-welcome h1{font-size:38px;line-height:1.2;letter-spacing:-1.5px;margin:25px 0 20px}.auth-welcome h1 span{color:#b5a7ff}.auth-welcome p{font-size:13px;line-height:1.85;color:#c5cbe0;max-width:300px}.auth-panel{margin:0;border-radius:0 24px 24px 0;padding:42px 38px;display:flex;flex-direction:column;justify-content:center}.auth-panel .card-icon{margin-bottom:20px}.auth-panel h2{font-size:24px;margin-bottom:11px}.auth-panel .button{width:100%}.auth-panel .text-link{text-align:center;margin-top:22px}.auth-panel .field{margin-bottom:18px}.auth-note{font-size:11px;color:#b6bdd9}.welcome-art{height:185px;position:relative;display:grid;place-items:center;margin:17px 0}.welcome-art>svg{width:94px;height:112px;background:#ffffff0c;border:1px solid #ffffff18;padding:14px;border-radius:18px;color:#ddd6ff;stroke-width:1;transform:rotate(-10deg);z-index:1}.welcome-circle{position:absolute;width:170px;height:170px;border:1px solid #ffffff10;border-radius:50%}.welcome-star{position:absolute;right:55px;top:28px;font-size:30px;color:#ffc866}.setup-steps{padding-left:20px;font-size:12px;line-height:1.85;color:#63718a}.setup-steps li{margin-bottom:10px}code{font-size:11px;background:#eff1f7;padding:2px 4px;border-radius:4px}pre{white-space:pre-wrap;overflow-wrap:anywhere;max-width:420px;font-size:10px;background:#f5f6fa;padding:9px;border-radius:6px}details{min-width:150px}summary{cursor:pointer;color:var(--purple)}.menu-collapsed .sidebar{display:none}.menu-collapsed .workspace{margin-left:0}.skip-link{position:fixed;top:-80px;left:20px;z-index:100;background:var(--purple);color:white;padding:14px}.skip-link:focus{top:8px}button:focus-visible,summary:focus-visible{outline:3px solid #ac9dff;outline-offset:3px}.reset-link{font-size:11px}.guest .auth-layout h1{font-weight:700}
@media(max-width:1100px){.app-body .topbar{gap:12px}.app-body .sidebar{width:200px}.app-body .workspace{margin-left:200px;padding-left:25px;padding-right:25px}.app-body .brand{min-width:178px;font-size:12px}.year-switcher label{display:none}.user-link>span:last-child{max-width:110px}.guest .workspace,.menu-collapsed .workspace{margin-left:0}.auth-panel{padding:30px}.auth-welcome{padding:38px 30px}.auth-welcome h1{font-size:34px}}
@media(max-width:800px){.app-body .topbar{flex-wrap:wrap;padding:13px 18px}.app-body .sidebar{display:none;top:122px;width:230px;box-shadow:10px 0 35px #111a3220}.app-body.menu-open .sidebar{display:flex}.app-body .workspace{margin-left:0;padding:28px 20px 0}.year-switcher{order:4;width:100%;margin:0;justify-content:flex-end}.year-switcher label{display:block}.year-switcher select{flex:1;max-width:260px}.user-link{margin-left:auto}.app-body .brand{min-width:0}.auth-layout{grid-template-columns:.9fr 1fr;min-height:540px}.auth-welcome{padding:35px 25px}.auth-welcome h1{font-size:30px}.auth-panel{padding:28px 24px}.stats-grid{gap:12px}.stat-card{padding:17px}.stat-card strong{font-size:20px}.stat-card>span{font-size:9px}}
@media(max-width:580px){.app-body .workspace{padding:24px 15px 0}.app-body .topbar{gap:8px}.user-link>span:last-child{display:none}.app-body .page-heading h1{font-size:21px}.stats-grid{grid-template-columns:1fr}.stat-card{display:flex;align-items:center;justify-content:space-between;gap:12px}.stat-card strong{margin:0;font-size:19px}.stat-card:after{display:none}.dashboard-banner{padding:24px}.dashboard-banner h2{font-size:23px}.banner-icon{padding:12px}.banner-icon svg{width:30px;height:30px}.panel{padding:22px 18px;border-radius:17px}.form-grid,.checkbox-grid{grid-template-columns:1fr}.filter-bar{flex-wrap:wrap}.filter-bar .field{min-width:170px}.filter-bar select{max-width:none}.auth-layout{grid-template-columns:1fr;gap:0}.auth-welcome{padding:28px;border-radius:20px 20px 0 0}.auth-welcome h1{font-size:31px;margin:17px 0 12px}.auth-welcome p{margin:0}.welcome-art,.auth-note{display:none}.auth-panel{border-radius:0 0 20px 20px;padding:28px 24px}.auth-panel h2{font-size:22px}.panel-heading{align-items:flex-start}.app-body .info-grid{grid-template-columns:1fr}.pagination{gap:15px}.app-body footer{font-size:9px}.year-switcher label{font-size:9px}.guest .topbar-status{font-size:10px}.guest .brand{font-size:12px}}

/* Phase 2: reuse panels/forms; horizontally scrollable academic sections. */
.setup-tabs{display:flex;gap:8px;overflow-x:auto;padding:0 0 15px;margin-bottom:22px;border-bottom:1px solid var(--border)}.setup-tabs a{white-space:nowrap;padding:10px 13px;border-radius:9px;color:var(--muted);font-size:12px}.setup-tabs a.selected{color:var(--purple);background:#efedff;font-weight:600}.institution-logo{width:29px;height:31px;object-fit:contain}.institution-logo-preview{max-width:180px;max-height:120px;object-fit:contain;margin:10px 0 20px}.app-body .button:hover{background:var(--purple);filter:brightness(.94)}.app-body .button.secondary:hover{background:#f7f8fc}.app-body .brand>span:last-child{max-width:260px;overflow-wrap:anywhere}

.grade-scroll{overflow:auto;max-height:65vh}.grade-table{min-width:100%;border-collapse:collapse}.grade-table th,.grade-table td{padding:12px;border-bottom:1px solid #e5e7ef;min-width:175px}.grade-table th:first-child{position:sticky;left:0;background:white;z-index:1;min-width:220px}.grade-table thead th{position:sticky;top:0;background:#f4f3ff;z-index:2}.grade-table small{display:block;font-size:11px;font-weight:400;color:#64748b;margin-top:5px}.grade-cell input,.grade-cell select{width:100%;min-width:130px}.grade-save{display:flex;align-items:end;gap:16px;flex-wrap:wrap;padding:20px 0;position:sticky;bottom:0;background:white}.grading-panel .tabs{margin:16px 0}.grading-panel .form-grid{margin:16px 0;gap:16px 22px}.preview-table{font-size:13px}.preview-table td{padding:8px}

.grading-panel label{display:block;font-size:12px;line-height:1.6;margin:10px 0;color:#3a4660}.grading-panel input:not([type=checkbox]):not([type=hidden]){width:100%;min-width:0;font:inherit;border:1px solid #dce1ea;border-radius:9px;padding:11px 12px;background:white;color:#263149}.grading-panel input:disabled{background:#f3f5f9}.grading-panel select{margin-top:5px}.grading-panel .form-grid>button{align-self:end;justify-self:start;margin-bottom:10px}.grading-panel details{margin:18px 0}.grading-panel a{color:var(--purple)}.grading-panel .tabs{display:flex;flex-wrap:wrap;gap:8px}.grading-panel input:focus{outline:2px solid #c3b8ff;outline-offset:1px}.grading-panel .grade-table th{vertical-align:top}.grading-panel button:disabled{opacity:.5;cursor:not-allowed}.grade-save label{flex:1;min-width:180px}.grade-save #grade-status{flex-basis:100%;font-size:12px;color:#536079}.grading-panel .preview-table td{max-width:320px;overflow-wrap:anywhere}.grading-panel>form>button{margin-top:12px}@media(max-width:580px){.grading-panel .grade-table th:first-child{min-width:140px;max-width:160px}.grade-save{position:static}}

/* Collapsible navigation groups; native details supports mouse and keyboard. */
.app-body .sidebar .nav-group{margin:0 0 6px}.nav-group>summary{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:10px;cursor:pointer;list-style:none;color:#68758a;font-size:13px;font-weight:600}.nav-group>summary::-webkit-details-marker{display:none}.nav-group>summary:hover{background:#f5f6fb}.nav-group>summary>svg{width:18px;height:18px;flex-shrink:0}.nav-chevron{margin-left:auto;font-size:22px;line-height:16px;transition:transform .15s}.nav-group[open]>summary .nav-chevron{transform:rotate(90deg)}.nav-group-active>summary{color:var(--purple);background:#f4f1ff}.nav-group-items{margin:5px 0 10px 21px;padding-left:9px;border-left:1px solid #e2deef}.app-body .nav-group-items .nav-item{padding:10px;font-size:12px;margin-bottom:3px}.app-body .nav-group-items .nav-item svg{width:15px;height:15px;flex-shrink:0}.app-body .nav-group-items .nav-item span{line-height:1.5}

/* Accessible disclosure actions retain native keyboard and confirmation behavior. */
.app-body summary.action-disclosure,.app-body .table-actions a,.app-body .pagination a{display:inline-flex;align-items:center;gap:9px;min-height:38px;padding:9px 15px;border:1px solid #dcd6ff;border-radius:10px;background:#f5f2ff;color:#5435df;font:600 13px/1.5 Arial,Helvetica,sans-serif;text-decoration:none;cursor:pointer;box-sizing:border-box;transition:background .15s,border-color .15s,box-shadow .15s}
.app-body summary.action-disclosure{margin:7px 0;list-style:none;max-width:100%;box-shadow:0 2px 5px #26164b08}
.app-body summary.action-disclosure::-webkit-details-marker{display:none}
.app-body summary.action-disclosure::before{content:'+';display:grid;place-items:center;width:21px;height:21px;flex-shrink:0;border-radius:6px;background:#e8e1ff;font-size:17px;line-height:1}
.app-body details[open]>summary.action-disclosure::before{content:'−'}
.app-body details[open]>summary.action-disclosure{background:#ece6ff;border-color:#baabff;margin-bottom:16px}
.app-body summary.action-disclosure:hover,.app-body .table-actions a:hover,.app-body .pagination a:hover{background:#eae3ff;border-color:#b4a1ff}
.app-body summary.action-disclosure:focus-visible,.app-body .table-actions a:focus-visible,.app-body .pagination a:focus-visible{outline:3px solid #8b73ff;outline-offset:3px}
.app-body .table-actions a{margin:3px 4px 3px 0;white-space:nowrap}

.setup-tabs{flex-wrap:wrap;overflow-x:visible}.setup-tabs a{border:1px solid var(--border);background:#fff}.setup-tabs a.selected{border-color:#c9beff}

.field-help-description{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.form-help-popup{position:fixed;z-index:1000;bottom:22px;right:22px;width:420px;max-width:calc(100vw - 44px);padding:17px 20px;border:1px solid #8e7be0;border-radius:12px;background:#211a49;color:#fff;box-shadow:0 8px 30px #10102730;font:14px/1.6 Arial,Helvetica,sans-serif;pointer-events:none}.form-help-popup[hidden]{display:none}@media(max-width:600px){.form-help-popup{bottom:12px;right:12px;max-width:calc(100vw - 24px);font-size:13px}}

.section-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:8px;margin:18px 0 22px;background:#f5f6fb;border:1px solid #e5e7f0;border-radius:13px}.section-tabs a{display:inline-flex;align-items:center;justify-content:center;padding:11px 17px;border:1px solid transparent;border-radius:9px;color:#59657f;font-size:13px;font-weight:600;text-decoration:none;transition:background .15s,color .15s}.section-tabs a:hover{background:#ebe6ff;color:#5435df}.section-tabs a[aria-current=page]{background:var(--purple,#6344ff);color:#fff;box-shadow:0 3px 8px #5234dc25}.section-tabs a:focus-visible{outline:3px solid #947dff;outline-offset:3px}@media(max-width:600px){.section-tabs a{flex:1 1 42%;padding:11px 9px;text-align:center}}

.evaluation-editor{border:1px solid #e1e5ef;border-radius:14px;padding:20px;margin:16px 0;background:#fcfcff}.evaluation-editor h4{font-size:15px;margin:0 0 10px}.evaluation-editor .form-grid{margin-bottom:0}.evaluation-editor p{font-size:12px;line-height:1.7}.evaluation-create{margin:12px 0 24px}.evaluation-editor button{justify-self:start}

#grade-status{display:block;flex-basis:100%;padding:12px 15px;border:1px solid #d7d0fb;border-radius:10px;background:#f4f1ff;color:#3c287e;font-weight:600;line-height:1.6}
