:root{--ink:#19304a;--muted:#596d80;--navy:#142940;--accent:#08786d;--bg:#f3f6f8;--line:#dce4e9;--red:#a32d3b;--amber:#876014;--radius:14px}*{box-sizing:border-box}body{margin:0;font:15px/1.55 'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--ink)}h1,h2,h3,p{margin:0}h1{font-size:32px;line-height:1.2;letter-spacing:-.035em}h2{font-size:23px;letter-spacing:-.025em}h3{font-size:17px}a{color:var(--accent)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #479bdd;outline-offset:3px}input,select,textarea{width:100%;padding:11px 13px;border:1px solid #b9c8d3;border-radius:8px;background:white;color:var(--ink);min-width:0}textarea{min-height:96px;resize:vertical}input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);flex-shrink:0}label{display:grid;gap:7px;font-size:14px;font-weight:600}form{display:grid;gap:18px}.primary,.secondary,.danger,.nav-item{border:0;border-radius:8px;padding:11px 17px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;min-height:44px}.primary{color:white;background:var(--accent)}.primary:hover{background:#075e56}.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.danger{background:#fff0f0;color:var(--red);border:1px solid #efd4d7}.wide{width:100%}.muted,.hint{color:var(--muted)}.hint{font-size:13px}.eyebrow{font-size:11px;letter-spacing:.13em;font-weight:700;margin-bottom:11px}.brand{font-size:35px;font-weight:800;letter-spacing:-.06em;color:white;text-decoration:none;display:flex;align-items:center;gap:3px;line-height:1}.brand>span{color:#7bd5be}.brand small{font-size:12px;letter-spacing:.13em;margin-left:12px;font-weight:600}.error{color:#862534;background:#fff0f1;border:1px solid #ebc4cb;padding:13px 16px;border-radius:9px;font-size:14px;margin-top:16px}.message{padding:14px 18px;background:#e4f2ed;border:1px solid #c0ded2;border-radius:10px;margin-bottom:20px}.message.is-error{background:#fff0f1;color:#862534}.login-layout{display:grid;grid-template-columns:1.1fr 1fr;min-height:100vh}.login-story{background:var(--navy);color:white;padding:54px 64px;display:flex;flex-direction:column;justify-content:space-between;gap:70px;position:relative;overflow:hidden}.login-story:after{content:'';position:absolute;width:420px;height:420px;border:1px solid #ffffff13;border-radius:50%;bottom:-240px;left:10%;pointer-events:none}.login-story .eyebrow{color:#a4c5c7}.login-story h1{font-size:clamp(36px,4vw,60px);line-height:1.15;letter-spacing:-.05em;max-width:520px}.story-copy{color:#c2d2df;max-width:420px;font-size:17px;line-height:1.8;margin-top:25px}.journey{display:flex;gap:14px;align-items:center;margin-top:46px;font-size:12px;color:#95d8c7}.journey i{width:28px;height:1px;background:#577a82}.story-foot{font-size:13px;color:#a9bfce}.login-form-panel{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:60px 40px;background:#fff}.login-card{width:min(100%,380px)}.login-card h2{font-size:30px;margin-bottom:10px}.login-card .eyebrow{color:var(--accent)}.login-card form{margin-top:30px}.login-help{font-size:13px;color:var(--muted);line-height:1.8;margin-top:26px;border-top:1px solid var(--line);padding-top:22px}.login-footer{margin-top:65px;font-size:12px;color:var(--muted)}[hidden]{display:none!important}.portal-layout{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.portal-sidebar{background:var(--navy);color:white;display:flex;flex-direction:column;padding:34px 20px;gap:30px}.portal-sidebar .brand{padding:0 9px}.side-caption{font-size:10px;color:#9db6c9;letter-spacing:.12em;padding:0 10px;margin-top:17px}.portal-sidebar nav{display:grid;gap:6px;margin-top:-16px}.nav-item{font-size:14px;justify-content:flex-start;text-align:left;color:#c5d6e4;background:transparent;width:100%;font-weight:400;padding:13px}.nav-item:hover{background:#223e57}.nav-item.active{background:#244a57;color:#b2efdc;font-weight:600;box-shadow:inset 3px 0 #82d9be}.sidebar-account{margin-top:auto;display:grid;gap:3px;padding:22px 10px 0;border-top:1px solid #3a5061;font-size:13px}.sidebar-account>span{color:#b6c9d7;font-size:12px}.sidebar-account>div{display:flex;gap:20px;margin-top:14px}.text-button{border:0;background:none;color:inherit;font:inherit;padding:5px 0;text-decoration:underline;text-underline-offset:4px}.portal-layout main{padding:38px clamp(22px,3.2vw,52px);min-width:0}.portal-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.portal-heading .muted{margin-top:10px;font-size:14px;max-width:780px}.portal-heading .eyebrow{color:var(--accent)}.secure-label{font-size:11px;white-space:nowrap;border:1px solid #c7dcd5;border-radius:30px;padding:6px 12px;color:#23695b;background:#ecf6f1}.toolbar{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:23px;flex-wrap:wrap}.toolbar label{min-width:240px;flex:1;max-width:380px}.toolbar input[type=search]{max-width:360px}.button-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:25px}.metric,.card{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:23px}.metric .hint{font-size:13px}.metric strong{display:block;font-size:34px;line-height:1.2;margin-top:10px;letter-spacing:-.045em}.metric small{font-size:12px;color:var(--muted);display:block;margin-top:8px}.metric.highlight{background:#e9f4ee;border-color:#c8dfd4}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:17px}.section-head p{font-size:13px;color:var(--muted);margin-top:4px}.section-head input{width:240px}.action-list{display:grid;gap:12px}.action-card{background:white;border:1px solid var(--line);border-radius:11px;padding:19px 21px;display:grid;grid-template-columns:1fr auto;gap:14px}.action-card h3{margin:7px 0;font-size:16px;font-weight:600}.action-meta{display:flex;flex-wrap:wrap;gap:5px 20px;color:var(--muted);font-size:12px}.action-card .secondary{align-self:center;font-size:13px}.badge{font-size:11px;border-radius:4px;background:#edf1f5;color:#455e75;padding:3px 7px;display:inline-block;line-height:1.5;font-weight:600}.badge.green{background:#e0f1e7;color:#256347}.badge.red{background:#fce9ec;color:#993444}.badge.amber{background:#fff2d8;color:#7f5b12}.badge.blue{background:#e9effb;color:#375ba8}.kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:16px}.kpi-grid .card{padding:19px}.kpi-grid h3{font-size:15px;margin:10px 0}.kpi-grid p{font-size:12px;color:var(--muted);margin-top:8px;overflow-wrap:anywhere}.kpi-placeholder{font-size:26px;color:#7d8d99;margin-top:10px}.space-top{margin-top:32px}.source-note{font-size:13px;color:var(--muted);border-left:3px solid #b7ccce;padding:8px 15px;margin:23px 0}.empty{background:white;border:1px dashed #becdd6;border-radius:12px;padding:34px;max-width:100%;color:var(--muted)}.empty h2{color:var(--ink);font-size:19px;margin-bottom:8px}.table-wrap{overflow:auto;border:1px solid var(--line);background:white;border-radius:12px}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#f8fafb;white-space:nowrap;padding:15px 18px}td{padding:18px;border-top:1px solid var(--line);vertical-align:middle}td small{display:block;color:var(--muted);margin-top:3px}td .button-row{flex-wrap:nowrap}td button.secondary{padding:7px 11px;font-size:12px;white-space:nowrap;min-height:38px}.user-name{min-width:155px}.area-label{max-width:320px;min-width:170px;font-size:12px}.pagination{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:20px;font-size:13px;color:var(--muted)}dialog{border:1px solid var(--line);border-radius:16px;padding:26px;width:min(690px,calc(100% - 24px));max-height:90vh;color:var(--ink);box-shadow:0 18px 90px #10283e40}dialog::backdrop{background:#122c4566;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px}.dialog-head h2{font-size:23px}.icon-button{background:#f0f4f6;border:0;border-radius:50%;width:34px;height:34px;font-size:25px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.check-line{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:400}.areas-picker{border:1px solid var(--line);border-radius:10px;padding:15px;margin:0}.areas-picker legend{font-weight:600;padding:0 6px;font-size:14px}.areas-list{display:grid;grid-template-columns:1fr 1fr;gap:9px 17px;max-height:250px;overflow:auto;padding:6px}.areas-list .check-line{align-items:flex-start;line-height:1.4}.areas-list .child{padding-left:13px;font-size:12px}.areas-list input{margin:0 4px 0 0}.form-foot{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:18px}.portal-footer{display:flex;justify-content:space-between;gap:15px;margin-top:45px;border-top:1px solid var(--line);padding-top:18px;font-size:11px;color:var(--muted)}.skip-link{position:absolute;left:12px;top:-70px;background:white;padding:12px;z-index:5}.skip-link:focus{top:12px}.assignment-source{font-size:12px;color:var(--muted);margin-top:10px}.assignment-source summary{cursor:pointer}.assignment-source p{margin-top:7px;overflow-wrap:anywhere}
@media(max-width:1080px){.portal-layout{grid-template-columns:215px minmax(0,1fr)}.portal-sidebar{padding:28px 13px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-story{padding:45px 35px}.brand small{font-size:10px}}
@media(max-width:720px){.login-layout{grid-template-columns:1fr}.login-story{padding:25px;gap:35px}.login-story h1{font-size:35px}.story-copy,.journey,.story-foot{display:none}.login-story .eyebrow{font-size:9px}.login-form-panel{padding:34px 25px}.login-card h2{font-size:26px}.login-footer{margin-top:36px}.portal-layout{display:block}.portal-sidebar{padding:19px 20px;gap:20px}.portal-sidebar .brand{padding:0}.side-caption{display:none}.portal-sidebar nav{margin:0;display:flex;gap:5px;overflow-x:auto}.nav-item{width:auto;flex-shrink:0;font-size:12px;padding:10px;min-height:40px}.sidebar-account{margin:0;padding:13px 0 0;display:grid;grid-template-columns:1fr auto;align-items:center}.sidebar-account>span{grid-column:1}.sidebar-account>div{grid-column:2;grid-row:1/3;margin:0;font-size:12px}.portal-layout main{padding:24px 18px}.portal-heading{align-items:flex-start;margin-bottom:23px}.portal-heading h1{font-size:26px}.secure-label{display:none}.metrics{gap:10px}.metric{padding:18px 14px}.metric strong{font-size:28px}.toolbar label{min-width:180px;max-width:none}.toolbar{gap:13px}.kpi-grid{grid-template-columns:1fr}.section-head{flex-wrap:wrap;gap:12px}.section-head input{width:100%}.action-card{padding:16px;grid-template-columns:1fr}.action-card>.secondary{justify-self:start}.areas-list{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.portal-footer{display:block}.portal-footer span{display:block;margin-top:6px}dialog{padding:20px}.empty{padding:24px}.pagination{flex-wrap:wrap}h1{overflow-wrap:anywhere}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}

.hub-intro{display:flex;align-items:start;justify-content:space-between;gap:20px;margin-bottom:20px}.hub-intro p:not(.eyebrow){margin-top:10px;max-width:760px;color:var(--muted)}.hub-intro .badge{flex-shrink:0}.hub-stages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.hub-stages p{font-size:13px;color:var(--muted);margin-top:10px}.hub-form{margin-top:20px}.hub-notes .source-note{margin:15px 0}.hub-cell{font-variant-numeric:tabular-nums;max-width:420px;min-width:100px;overflow-wrap:anywhere;vertical-align:top}.hub-cell:empty::after{content:'—'}.hub-form .button-row .hint{flex:1;min-width:160px}@media(max-width:900px){.hub-stages{grid-template-columns:1fr}.hub-intro{flex-direction:column}}
