:root{--ink:#25263a;--muted:#626579;--line:#ececf2;--bg:#f5f6fa;--white:#fff;--purple:#6255ce;--purple-dark:#5e54ce;--shadow:0 12px 38px rgba(40,42,74,.07);font-family:system-ui,-apple-system,'Segoe UI','Microsoft YaHei','PingFang SC',sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,textarea{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,a:focus-visible{outline:3px solid #aaa4ff;outline-offset:2px}.hidden{display:none!important}.muted{color:var(--muted);margin:8px 0}.eyebrow{font-size:10px;letter-spacing:.15em;color:var(--purple);font-weight:700;margin:0 0 8px}.brand-mark{width:50px;height:50px;display:grid;place-items:center;border-radius:16px;background:linear-gradient(145deg,#8177f2,#675bd9);color:#fff;font-size:23px;font-weight:800;box-shadow:0 8px 20px #7165e743}.brand-mark.small{width:40px;height:40px;border-radius:13px;font-size:18px}.primary,.secondary{border:0;border-radius:11px;padding:12px 17px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:12px;text-decoration:none}.primary{color:#fff;background:var(--purple);box-shadow:0 6px 16px #7267e82b}.primary:hover{background:var(--purple-dark)}.secondary{color:#52546a;background:#f0f0f6}.full{width:100%;margin-top:8px}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(350px,500px) 1fr;align-items:center;max-width:1200px;margin:auto;padding:50px}.login-card{width:min(100%,400px);margin:auto}.login-card>.brand-mark{margin-bottom:35px}.login-card h1{font-size:34px;margin:0}.role-switch{display:flex;padding:4px;border-radius:12px;background:#eeeef5;margin:28px 0 20px}.role-switch button{flex:1;border:0;background:none;border-radius:9px;padding:11px;color:var(--muted);font-weight:700}.role-switch button.selected{background:#fff;color:var(--ink);box-shadow:0 2px 8px #20203b12}.login-card form,.dialog-form{display:grid;gap:16px}.login-card label,.dialog-form label{display:grid;gap:8px;font-size:13px;font-weight:600}.login-card input,.dialog-form input,.dialog-form textarea{width:100%;border:1px solid #e3e4ed;border-radius:10px;background:#fff;padding:13px 14px;outline:none}.login-card input:focus,.dialog-form input:focus,.dialog-form textarea:focus{border-color:#847bf0}.login-foot{text-align:center;color:var(--muted);font-size:12px;margin-top:23px}.error{color:#c33;margin:8px 0;min-height:20px;font-size:13px}.login-art{height:min(560px,75vh);position:relative;display:grid;place-items:center;border-radius:34px;overflow:hidden;background:linear-gradient(145deg,#e6e4ff,#f3eefe 60%,#e1f4f2)}.art-orbit{position:absolute;border:1px solid #fff9;border-radius:50%;width:410px;height:410px}.orbit-b{width:540px;height:540px}.art-card{position:relative;background:#ffffffd9;backdrop-filter:blur(12px);padding:34px 42px;border-radius:23px;box-shadow:0 22px 55px #6860ad22;display:grid;gap:13px;transform:rotate(-3deg)}.art-card span{font-size:12px;color:var(--purple);font-weight:700}.art-card strong{font-size:24px}.art-card small{color:var(--muted)}.art-note{position:absolute;color:#8f84f3;font-size:38px}.note-one{left:22%;top:20%}.note-two{right:19%;bottom:21%}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:#fff;border-right:1px solid #efeff4;padding:25px 16px;display:flex;flex-direction:column;z-index:5}.side-brand{display:flex;align-items:center;gap:11px;padding:0 9px 32px}.side-brand b,.side-brand small{display:block}.side-brand b{font-size:14px}.side-brand small{font-size:11px;color:var(--muted);margin-top:4px}.side-section{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#a5a6b4;padding:0 13px 10px}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;display:flex;align-items:center;gap:13px;text-align:left;padding:12px 13px;border-radius:11px;color:#73758a;font-weight:600;font-size:13px}.nav-item span{font-size:18px;width:19px;text-align:center}.nav-item:hover,.nav-item.active{background:#f0efff;color:var(--purple)}.sidebar-bottom{margin-top:auto}.profile{display:flex;align-items:center;gap:10px;padding:13px 7px 0;border-top:1px solid var(--line)}.profile b,.profile small{display:block}.profile b{font-size:12px}.profile small{font-size:10px;color:var(--muted);margin-top:3px}.avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:#e9e7ff;color:#675bd9;font-weight:700}.icon-button{border:0;background:none;color:#8b8c9e;font-size:20px;border-radius:8px;padding:6px}.profile .icon-button{margin-left:auto}.main-area{margin-left:248px}.topbar{height:76px;position:sticky;top:0;z-index:4;background:#ffffffec;backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px}.topbar>div:first-child small,.topbar>div:first-child b{display:block}.topbar>div:first-child small{font-size:11px;color:var(--muted);margin-bottom:4px}.topbar>div:first-child b{font-size:14px}.topbar-right{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:11px}.status-dot{width:7px;height:7px;border-radius:50%;background:#4ac394}.avatar.mini{width:29px;height:29px;margin-left:8px;font-size:12px}.content{max-width:1150px;margin:0 auto;padding:35px 36px 60px}.page{display:none}.page.active{display:block}.welcome-row,.page-title{display:flex;justify-content:space-between;align-items:center;gap:22px;margin-bottom:25px}.welcome-row h1,.page-title h1,.student-welcome h1{font-size:25px;margin:0}.welcome-row .muted,.page-title .muted{font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:25px 0 34px}.stat-card{position:relative;padding:20px 21px;background:#fff;border:1px solid #f0f0f5;border-radius:16px;box-shadow:0 6px 20px #30305205}.stat-card small{display:block;color:var(--muted);font-size:11px;margin:10px 0}.stat-card strong{display:block;font-size:26px}.stat-caption{display:block;color:#a3a4b1;font-size:10px;margin-top:6px}.stat-icon,.quick-icon{display:grid;place-items:center;border-radius:12px;width:37px;height:37px;font-size:20px}.lilac{background:#efedff;color:#786ce7}.blue{background:#e8f3ff;color:#5198e7}.amber{background:#fff3dc;color:#e8a63d}.mint{background:#e5f6ef;color:#3cab80}.section-heading{display:flex;align-items:center;justify-content:space-between;margin:28px 0 14px}.section-heading h2{font-size:16px;margin:0}.section-heading .muted{font-size:11px}.quick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.quick-card{position:relative;display:grid;justify-items:start;gap:9px;text-align:left;border:1px solid #f0f0f5;background:#fff;border-radius:15px;padding:17px 15px;color:var(--ink);transition:.15s}.quick-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.quick-card b{font-size:13px}.quick-card small{font-size:10px;line-height:1.5;color:var(--muted)}.quick-icon{width:34px;height:34px;font-size:18px}.quick-card .arrow{position:absolute;right:14px;top:17px;color:#b2b3c0}.table-card{background:#fff;border:1px solid #eeeef4;border-radius:15px;overflow:hidden}.empty-state{text-align:center;padding:34px 20px;color:#9a9bab;font-size:12px}.text-button{border:0;background:transparent;color:var(--purple);font-weight:700;font-size:12px}.page-title{align-items:end;margin-bottom:24px}.table-toolbar{display:flex;align-items:center;justify-content:space-between;padding:17px 20px;border-bottom:1px solid var(--line)}.table-toolbar b{font-size:13px}.pill{display:inline-flex;align-items:center;background:#f0efff;color:#7066d8;border-radius:999px;padding:5px 9px;font-size:10px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:570px}th,td{text-align:left;padding:14px 19px;border-bottom:1px solid #f1f1f6;font-size:12px}th{color:#999aaa;font-weight:500;font-size:10px}td:last-child{text-align:right}.student-name-cell{display:flex;align-items:center;gap:9px;font-weight:700}.student-list-avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:10px;background:#eff0ff;color:var(--purple)}.danger-button{border:0;color:#d56868;background:#fff1f1;padding:7px 10px;border-radius:8px;font-size:10px}.assignment-list{display:grid;gap:12px}.assignment-item{display:flex;align-items:center;gap:15px;background:#fff;border:1px solid #eeeef4;border-radius:14px;padding:17px}.file-icon{width:42px;height:42px;border-radius:12px;background:#eaf2ff;color:#5791dc;display:grid;place-items:center;font-size:19px;flex:none}.assignment-info{min-width:0;flex:1}.assignment-info b{font-size:13px}.assignment-info p{font-size:11px;color:var(--muted);margin:5px 0 0;white-space:pre-wrap}.assignment-info small{font-size:10px;color:#aaa}.assignment-actions{display:flex;align-items:center;gap:11px}.feature-card{display:flex;align-items:center;gap:25px;background:#fff;border:1px solid #eeeef4;border-radius:17px;padding:25px}.feature-card h2{font-size:17px;margin:0 0 8px}.feature-card p{font-size:12px;color:var(--muted);line-height:1.7;max-width:600px}.feature-wheel{flex:none;width:88px;height:88px;display:grid;place-items:center;border-radius:50%;font-size:53px;color:#cd7e50;background:conic-gradient(#ffe3a8,#f8c57b,#fff2d1,#eaa978,#ffe3a8);box-shadow:0 5px 18px #c98e4925}.mint-bg{background:linear-gradient(135deg,#d9f6e9,#b5ead5);color:#3cab80}.link-button{white-space:nowrap}.dialog-form{width:min(440px,calc(100vw - 32px));padding:26px}.dialog-form label{font-size:12px}.dialog-form input,.dialog-form textarea{font-size:13px}.dialog-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:5px}.dialog-title small{font-size:9px;letter-spacing:.14em;color:var(--purple);font-weight:700}.dialog-title h2{font-size:20px;margin:5px 0}.form-hint{font-size:11px;color:var(--muted);margin:-6px 0}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:6px}.file-drop{padding:15px;border:1px dashed #c9c7e8;border-radius:12px;background:#fafaff}.file-drop input{border:0;padding:0;background:transparent}.file-drop small{font-size:10px;color:var(--muted)}dialog{border:0;border-radius:17px;padding:0;box-shadow:0 25px 90px #25263a33}dialog::backdrop{background:#25263a55;backdrop-filter:blur(3px)}.toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:#27283c;color:#fff;padding:11px 16px;border-radius:10px;font-size:12px;transition:.2s;z-index:20}.toast.show{opacity:1;transform:translate(-50%,0)}.student-shell{max-width:1000px;margin:auto;padding:25px 28px 60px}.student-top{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding-bottom:18px}.student-welcome{background:linear-gradient(110deg,#eeedff,#f4f3ff 65%,#eff9f7);border-radius:18px;padding:30px;margin:28px 0}.student-welcome .muted{font-size:13px}.mobile-only{display:none}
.topbar>div:not(.topbar-right) small,.topbar>div:not(.topbar-right) b{display:block}.topbar>div:not(.topbar-right) small{font-size:12px;color:var(--muted);margin-bottom:3px}.topbar>div:not(.topbar-right) b{font-size:15px}.nav-item,.primary,.secondary,.icon-button,.role-switch button{min-height:44px}.icon-button{min-width:44px}.stat-card{box-shadow:none}.quick-card:hover{box-shadow:none;border-color:#c9c3ed}.assignment-info{overflow-wrap:anywhere}.assignment-actions small{display:block;max-width:180px;overflow-wrap:anywhere;color:var(--muted)}button:disabled{opacity:.6;cursor:wait}input::placeholder,textarea::placeholder{color:#74768a}.stat-caption,.side-section,.assignment-info small,.table-card th{color:#686b7c}.login-art{border-radius:16px}.art-card{backdrop-filter:none;box-shadow:none;border:1px solid #d7d3eb;border-radius:16px}.student-top .side-brand{padding-bottom:0}.form-hint{line-height:1.7}.stat-card strong{line-height:1.4}.feature-card p{max-width:65ch}h1,h2,h3{text-wrap:balance}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(max-width:1000px){.sidebar{width:218px}.main-area{margin-left:218px}.content{padding:28px 24px}.topbar{padding:0 25px}.quick-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.login-shell{grid-template-columns:1fr;padding:26px 22px}.login-art{display:none}.login-card>.brand-mark{margin-bottom:24px}.sidebar{transform:translateX(-100%);transition:transform .22s;width:260px;box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.main-area{margin-left:0}.topbar{height:64px;padding:0 16px}.mobile-only{display:inline-block}.topbar-right>span:not(.status-dot){display:none}.content{padding:24px 16px 42px}.welcome-row,.page-title{align-items:flex-start;flex-direction:column}.welcome-row h1,.page-title h1,.student-welcome h1{font-size:22px}.welcome-row>.primary,.page-title>.primary{width:100%}.stats-grid{grid-template-columns:1fr 1fr;gap:9px}.stat-card{padding:15px}.stat-card:last-child{grid-column:span 2}.quick-grid{gap:9px}.quick-card{padding:14px 12px}.quick-card small{font-size:10px}.feature-card{align-items:flex-start;padding:18px;gap:15px}.feature-wheel{width:62px;height:62px;font-size:36px}.assignment-item{gap:10px;padding:13px}.assignment-actions{flex-direction:column;align-items:flex-end}.student-shell{padding:18px 16px 40px}.student-top{padding-bottom:14px}.student-welcome{padding:23px 19px;margin:20px 0}.page-title{gap:12px}.page-title>div{width:100%}}

@media(max-width:700px){.login-card input,.dialog-form input,.dialog-form textarea{font-size:16px}.muted,.login-foot,.login-card label,.dialog-form label,.form-hint,.file-drop small,.stat-card small,.stat-caption,.quick-card small,.section-heading .muted,.feature-card p,.assignment-info p,.assignment-info small,.assignment-actions small,.text-button,.pill,.table-card th,.table-card td{font-size:14px}.nav-item{font-size:15px}.topbar{gap:8px}.topbar>div:not(.topbar-right){margin-right:auto}.assignment-info b{font-size:15px}.assignment-item{flex-wrap:wrap}.assignment-actions{width:100%;flex-direction:row;align-items:center;justify-content:space-between;padding-left:52px}.text-button{min-height:44px;display:inline-flex;align-items:center}.stat-card:last-child strong{font-size:23px}}

.table-card .assignment-item{border:0;border-radius:0;border-bottom:1px solid var(--line)}.table-card .assignment-item:last-child{border-bottom:0}.stat-card small,.stat-caption,.quick-card small,.section-heading .muted,.side-brand small,.assignment-info p,.assignment-info small{font-size:12px}@media(max-width:700px){.stat-card small,.stat-caption,.quick-card small,.section-heading .muted,.assignment-info p,.assignment-info small{font-size:14px}}
