:root{--bg:#F2F5F3;--surface:#FFFFFF;--surface2:#E9EEEA;--border:#D8E0DA;--text:#182119;--text2:#5A6B5F;--accent:#1F8A57;--accent-ink:#FFFFFF;--accent-soft:#E3F2EA;--danger:#C7473E;--shadow:0 1px 2px rgba(16,28,20,.06),0 4px 14px rgba(16,28,20,.07)}@media(prefers-color-scheme:dark){:root{--bg:#121613;--surface:#1A211C;--surface2:#222B24;--border:#2E3A31;--text:#E8EFEA;--text2:#93A698;--accent:#3DBE82;--accent-ink:#0C1410;--accent-soft:#1E3529;--danger:#E06B63;--shadow:0 1px 2px rgba(0,0,0,.35),0 6px 18px rgba(0,0,0,.35)}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer}input,textarea{font:inherit;color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.boot{min-height:100dvh;display:flex;align-items:center;justify-content:center;color:var(--text2)}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:32px 28px;text-align:center;display:flex;flex-direction:column;gap:14px}.login-logo{width:210px;max-width:80%;margin:0 auto 4px;background:#fff;border-radius:10px;padding:10px 14px;border:1px solid var(--border)}.login-card h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.01em}.login-sub{margin:-8px 0 4px;color:var(--text2);font-size:13.5px}.login-card label{display:block;text-align:left;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text2)}.login-card input{width:100%;margin-top:5px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:11px 12px;font-size:15px}.hint{margin:-6px 0 0;font-size:12.5px;color:var(--text2);text-align:left}.login-card .check-remember{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--text);cursor:pointer}.check-remember input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.install-hint{display:flex;align-items:center;gap:10px;padding:8px 16px;background:var(--accent-soft);border-bottom:1px solid var(--border);font-size:13px}.install-hint span{flex:1}.hint-close{background:none;border:0;color:var(--text2);font-size:13px;padding:2px 6px}.hint-close:hover{color:var(--text)}.error{color:var(--danger);font-size:13.5px;margin:4px 0 0}.linklike{background:none;border:0;color:var(--text2);text-decoration:underline;font-size:13px}.btn{background:var(--surface);border:1px solid var(--border);border-radius:9px;padding:8px 14px;font-weight:600;font-size:14px}.btn:hover{background:var(--surface2)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:700}.btn.primary:hover{filter:brightness(1.06)}.btn.primary:disabled{opacity:.6}.btn.block{width:100%;padding:12px}.btn.small{padding:4px 10px;font-size:12.5px}.btn.danger{color:var(--danger)}.app{height:100dvh;display:flex;flex-direction:column}.topbar{flex:none;display:flex;align-items:center;gap:14px;background:var(--surface);border-bottom:1px solid var(--border);padding:10px 18px;position:relative}.topbar:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,#157347,#3fb37e)}.topbar-logo{height:34px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:4px 8px}.topbar-title{display:flex;flex-direction:column;line-height:1.2;margin-right:auto}.topbar-title strong{font-size:15px;letter-spacing:-.01em}.topbar-title span{font-size:12px;color:var(--text2)}.page{flex:1;min-height:0;display:flex;flex-direction:column}.content{width:100%;max-width:760px;margin:0 auto;padding:22px 18px 40px;overflow-y:auto}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}.page-head h2{margin:0 auto 0 0;font-size:19px;font-weight:800}.muted{color:var(--text2)}.empty{border:1.5px dashed var(--border);border-radius:12px;padding:26px 18px;text-align:center;color:var(--text2)}.tabs{display:flex;gap:6px;padding:12px 18px 0;justify-content:center}.tabs.inline{padding:0;margin-left:auto}.tab{border:1px solid var(--border);background:var(--surface);border-radius:99px;padding:7px 16px;font-weight:600;font-size:13.5px;color:var(--text2)}.tab.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.progress-pill{background:var(--accent-soft);color:var(--accent);border-radius:99px;font-size:12px;font-weight:700;padding:3px 10px;white-space:nowrap}@media(prefers-color-scheme:dark){.progress-pill{color:#7adbae}}.visible-pill{background:var(--surface2);border:1px solid var(--border);border-radius:99px;font-size:11.5px;font-weight:600;padding:3px 10px;color:var(--text2)}.progress-bar{height:6px;background:var(--surface2);border-radius:99px;overflow:hidden;margin-bottom:16px}.progress-bar div{height:100%;background:var(--accent);border-radius:99px;transition:width .3s ease}.task-list{display:flex;flex-direction:column;gap:10px}.task{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:13px 14px;box-shadow:var(--shadow)}.task input[type=checkbox]{width:20px;height:20px;margin-top:2px;accent-color:var(--accent);flex:none;cursor:pointer}.task-body{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.task-title{font-weight:700}.task.done .task-title{text-decoration:line-through;color:var(--text2)}.task-desc{color:var(--text2);font-size:13.5px;white-space:pre-wrap}.task-when{color:var(--accent);font-size:12px;font-weight:600}.task-actions{display:flex;gap:6px;margin-top:6px}.task-body input,.task-body textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.task-title{cursor:pointer}.done-toggle{background:none;border:0;color:var(--text2);font-weight:800;font-size:12.5px;text-transform:uppercase;letter-spacing:.05em;padding:8px 0 4px;margin-top:14px;display:block}.done-toggle:hover{color:var(--text)}.done-list{margin-top:6px;opacity:.88}.task-files{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}.file-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;background:var(--surface2);border:1px solid var(--border);border-radius:99px;padding:3px 8px 3px 11px;font-size:12.5px}.file-chip.student{border-color:var(--accent)}.file-open{background:none;border:0;padding:0;font-size:12.5px;font-weight:600;color:var(--text);max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-open:hover{color:var(--accent)}.file-by{font-size:10px;color:var(--accent);font-weight:800;text-transform:uppercase;letter-spacing:.04em}.file-del{background:none;border:0;color:var(--text2);padding:0 3px;font-size:12px}.file-del:hover{color:var(--danger)}.file-chip.attach{background:var(--surface);font-weight:600;padding:4px 12px}.file-chip.attach:hover:not(:disabled){border-color:var(--accent)}.file-chip.attach:disabled{opacity:.7;cursor:default}.file-err{flex-basis:100%;font-size:12.5px}.task-add{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:18px;box-shadow:var(--shadow)}.task-add input,.task-add textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px}.task-add textarea{resize:vertical}.task-add .btn{align-self:flex-end}.student-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.student-card{text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:14px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:4px}.student-card:hover{border-color:var(--accent)}.student-name{font-weight:800}.student-email{color:var(--text2);font-size:12.5px;overflow:hidden;text-overflow:ellipsis}.student-meta{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.seen{font-size:12px;font-weight:700;margin-top:6px}.seen-ok{color:var(--accent)}.seen-mid{color:var(--text2)}.seen-warn{color:#b27a14}.seen-bad{color:var(--danger)}@media(prefers-color-scheme:dark){.seen-warn{color:#e0a33b}}.lastdone{font-size:11.5px;color:var(--text2)}.pill-alldone{background:var(--accent-soft);color:var(--accent);border-radius:99px;font-size:11.5px;font-weight:700;padding:3px 10px}.assign-head{display:flex;align-items:center;justify-content:space-between}.assign-head .linklike{margin:0}.assign-list{max-height:200px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);border-radius:9px;padding:10px 12px;background:var(--bg)}.sheet .assign-row{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--text);cursor:pointer}.assign-row input{width:16px;height:16px;margin:0;accent-color:var(--accent)}.sheet .assign-desc{width:100%;margin-top:5px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:10px 12px;font-size:14px;resize:vertical}.sheet .file-chip.attach{cursor:pointer}.detail-head{display:flex;align-items:center;gap:14px;padding:14px 18px 10px;width:100%;max-width:1100px;margin:0 auto;flex-wrap:wrap}.detail-head h2{margin:0;font-size:18px;font-weight:800}.board-bar{display:flex;align-items:center;gap:10px;padding:0 18px 8px;width:100%;max-width:1100px;margin:0 auto}.switch{display:flex;align-items:center;gap:8px;font-size:13.5px;font-weight:600;color:var(--text2);cursor:pointer}.switch input{width:18px;height:18px;accent-color:var(--accent)}.board-wrap{flex:1;min-height:0;position:relative;padding:0 10px 10px}.board-wrap .excalidraw{border-radius:12px}.board-wrap:fullscreen{padding:0;background:var(--bg)}.board-wrap:fullscreen .excalidraw{border-radius:0}.board-wrap.fs-css{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;padding:0;background:var(--bg)}.board-wrap.fs-css .excalidraw{border-radius:0}.board-status{position:absolute;bottom:14px;left:50%;transform:translate(-50%);z-index:20;font-size:12px;color:var(--text2);pointer-events:none;background:var(--surface);border:1px solid var(--border);border-radius:99px;padding:2px 10px}.board-tools{display:flex;gap:8px;align-items:center}.fs-btn{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:12.5px;font-weight:600;white-space:nowrap}.fs-btn:hover{background:var(--surface2)}.fs-btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.board-loading{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text2)}.excalidraw a[href*="github.com"],.excalidraw a[href*=discord],.excalidraw a[href*="twitter.com"],.excalidraw a[href*="x.com"],.excalidraw a[href*="youtube.com"],.excalidraw a[href*="excalidraw.com"]{display:none!important}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#090e0a80;display:flex;align-items:center;justify-content:center;padding:18px;z-index:50}.sheet{background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:var(--shadow);width:100%;max-width:400px;padding:22px;display:flex;flex-direction:column;gap:12px}.sheet h3{margin:0;font-size:17px;font-weight:800}.sheet label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text2)}.sheet input{width:100%;margin-top:5px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:10px 12px;font-size:15px}.sheet-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}@media(max-width:640px){.content{padding:16px 14px 32px}.detail-head{gap:8px}.tabs.inline{margin-left:0;width:100%;justify-content:flex-start}}
