:root{font-family:Segoe UI,sans-serif;color:#16212d;background:radial-gradient(circle at top left,#f8fff5,transparent 35%),radial-gradient(circle at top right,#fff3df,transparent 35%),linear-gradient(135deg,#edf4f6,#f8f3ea);line-height:1.5;font-weight:400}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input{font:inherit}button{cursor:pointer}.auth-shell,.page-shell{min-height:100vh;padding:32px}.auth-shell{display:grid;place-items:center}.card{background:#ffffffe0;border:1px solid rgba(22,33,45,.08);border-radius:24px;box-shadow:0 22px 60px #2e354d1f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.auth-card{width:min(100%,460px);padding:32px}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:start;margin-bottom:24px}.layout{display:grid;grid-template-columns:minmax(320px,420px) minmax(0,1fr);gap:24px}.layout>.card{padding:24px}.section-head{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:16px}.eyebrow{color:#945f1b;font-size:.75rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase}h1,h2,p{margin:0}h1{margin-top:6px;font-size:clamp(2rem,4vw,2.8rem);line-height:1}h2{font-size:1.3rem}.stack{display:grid;gap:16px;margin-top:20px}.field{display:grid;gap:6px}.field>span{font-size:.94rem;font-weight:700}.field small{color:#5a6774}input{width:100%;border:1px solid #d4dde2;border-radius:14px;padding:12px 14px;background:#fff}input:focus{outline:2px solid #8ab6b1;outline-offset:1px}.checkbox{display:flex;gap:10px;align-items:center;font-weight:600}.checkbox input{width:18px;height:18px;flex:0 0 auto}.checkbox small{display:block;color:#5a6774;font-weight:500}.row{display:flex;flex-wrap:wrap;gap:10px}.tabs{display:flex;gap:10px;margin-bottom:18px}.tab{border:1px solid rgba(22,33,45,.1);border-radius:999px;padding:10px 16px;background:#ffffffa6;color:#16212d;font-weight:700}.tab.active{background:linear-gradient(135deg,#103d5f,#2f7b75);color:#fff;border-color:transparent}.actions{margin-top:8px}.primary,.secondary,.danger,.link-button{border:none;border-radius:999px;padding:12px 18px;transition:transform .12s ease,opacity .12s ease}.primary{background:linear-gradient(135deg,#103d5f,#2f7b75);color:#fff;font-weight:700}.secondary{background:#eef3f6;color:#16212d}.danger{background:#ffebe6;color:#b23a1e}.link-button{padding:0;background:transparent;color:#2f7b75;text-align:left}.inline-link{text-decoration:none}.primary:hover,.secondary:hover,.danger:hover,.link-button:hover{transform:translateY(-1px)}.error,.success,.error-banner{border-radius:14px;padding:12px 14px}.error,.error-banner{background:#fff1ef;color:#a12d17}.success{background:#edfdf5;color:#17603f}.error-banner{margin-bottom:20px}.muted{color:#5a6774}.user-list{display:grid;gap:16px}.user-card{border:1px solid #d9e1e6;border-radius:20px;padding:18px;background:#f8fbfceb}.user-meta{display:flex;justify-content:space-between;gap:16px;align-items:start;margin-bottom:14px}.pill-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:end}.pill{display:inline-flex;align-items:center;border-radius:999px;padding:6px 10px;font-size:.82rem;font-weight:700;background:#eef3f6}.pill.ok{background:#edfdf5;color:#17603f}.pill.warn{background:#fff6df;color:#946200}.pill.admin{background:#e9f1ff;color:#1d4fb6}.user-form{display:grid;gap:14px}.assignment-box{display:grid;gap:12px;border:1px solid #d9e1e6;border-radius:18px;padding:14px;background:#ffffffa3}.assignment-box p{color:#5a6774;font-size:.92rem}.checkbox-grid{display:grid;gap:10px;max-height:220px;overflow:auto;padding-right:4px}.assignment-summary{margin-bottom:14px;color:#44525e}.assignment-summary span{font-weight:800;color:#16212d}.link-line{margin-top:6px;color:#44525e;word-break:break-word}.link-line span{font-weight:700}.links-row{justify-content:space-between;margin-top:16px}.loading{min-height:100vh;display:grid;place-items:center;font-size:1.1rem}@media(max-width:980px){.layout{grid-template-columns:1fr}.topbar{flex-direction:column}}@media(max-width:640px){.auth-shell,.page-shell{padding:18px}.auth-card,.layout>.card{padding:20px}.user-meta{flex-direction:column}.pill-row{justify-content:start}}
