*{box-sizing:border-box}
:root{--bg:#101225;--sidebar:#14162e;--panel:#1c203d;--panel-raised:#252a4b;--text:#f0f1ff;--muted:#a5adcc;--accent:#a79bff;--coral:#ff9aab;--mint:#85ddc4;--border:#ffffff12;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--text);background:var(--bg);font-size:17px;line-height:1.6;color-scheme:dark}
body{margin:0;background:radial-gradient(ellipse at 90% 0,#45437540,transparent 50%),var(--bg)}button,input,textarea,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:44px;border:0;color:inherit;background:none}button,a{touch-action:manipulation}button:disabled{cursor:wait;opacity:.5}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a{color:#c0b8ff;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,p{margin:0}h1{font-size:2.5rem;font-weight:650;letter-spacing:-.045em;line-height:1.25}h2{font-size:1.1rem;font-weight:600}h3{font-size:.95rem;font-weight:550}small,.hint{font-size:.8rem}[hidden]{display:none!important}.muted,.hint{color:var(--muted)}.hint{margin-top:10px}.eyebrow{color:var(--muted);font-size:.66rem;letter-spacing:.18em;font-weight:600}.error{color:var(--coral);font-size:.85rem;margin-top:12px}.error:empty{display:none}
.workspace{min-height:100vh;display:grid;grid-template-columns:252px minmax(0,1fr)}.sidebar{background:linear-gradient(170deg,#20234170,transparent 70%),var(--sidebar);border-right:1px solid var(--border);padding:36px 18px 22px;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;z-index:2}.brand{display:flex;gap:12px;align-items:center;color:var(--text);font-size:1rem;font-weight:600;padding:0 10px}.brand:hover{text-decoration:none}.brand small{display:block;font-size:.56rem;letter-spacing:.21em;color:var(--muted);font-weight:400;margin-top:2px}.brand-icon{width:38px;height:38px;border:1px solid #b6aaff4d;border-radius:12px;display:grid;place-items:center;background:linear-gradient(140deg,#b2a3ff30,#7062d410);color:#c3b8ff;box-shadow:0 0 28px #8e7aff15;font-size:24px;flex:none}.nav-heading{padding:48px 16px 12px;font-size:.73rem;color:#7f89ae}.nav-button{width:100%;display:flex;align-items:center;gap:13px;padding:12px 16px;text-align:left;color:var(--muted);border-radius:10px;margin-bottom:6px;font-size:.9rem;transition:background .18s,color .18s}.nav-button:hover{background:#ffffff05;color:var(--text)}.nav-button.active{background:linear-gradient(90deg,#9f8cff22,#9f8cff0a);color:#d7cfff;box-shadow:inset 2px 0 var(--accent)}.count{margin-left:auto;font-size:.76rem;color:var(--muted);font-variant-numeric:tabular-nums}.category-mark{width:8px;height:8px;border-radius:3px;background:currentColor;transform:rotate(-8deg);opacity:.85}.cat--1{color:#b8bfff}.cat-0{color:#b6a3ff}.cat-1{color:#91baff}.cat-2{color:#f3c98a}.cat-3{color:#88daca}.cat-4{color:#efaccb}.sidebar-bottom{margin-top:auto;padding-top:36px}.sidebar-bottom .nav-button{font-size:.8rem}.focus-note{position:relative;overflow:hidden;border:1px solid #b1a1ff19;border-radius:14px;padding:19px 17px;margin:0 5px 22px;background:radial-gradient(circle at 100% 100%,#a692ff25,transparent 75%)}.focus-note .eyebrow{font-size:.5rem;color:#a49acc}.focus-note p{font-size:.93rem;line-height:1.9;margin-top:10px}.orbit{position:absolute;right:16px;bottom:17px;color:var(--accent);font-size:32px;transform:rotate(18deg)}
main{min-width:0;max-width:1800px;width:100%;margin:auto;padding:30px clamp(24px,3.2vw,56px) 64px;align-self:start}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:28px;border-bottom:1px solid var(--border)}#today{color:var(--muted);font-size:.8rem;margin-top:6px}.sync-state{font-size:.75rem;color:var(--mint);border:1px solid #85ddc421;border-radius:30px;padding:0 14px;min-height:36px;background:#85ddc406}.sync-state.failed{color:var(--coral);border-color:#ff9aab40}.heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:32px 0 28px}.section-kicker{font-size:.6rem;color:#938aad;margin-bottom:9px}.heading .muted{margin-top:12px;font-size:.86rem}.primary,.secondary,.danger{border-radius:10px;padding:11px 20px;white-space:nowrap;font-weight:550;font-size:.88rem}.primary{background:linear-gradient(120deg,#a696fa,#8171e0);color:#121429;box-shadow:0 5px 24px #8270ea24}.primary:hover{filter:brightness(1.09)}.secondary{background:#a79bff12;border:1px solid #a79bff30;color:#cbc4ff}.danger{background:#ff9aab18;border:1px solid #ff9aab50;color:var(--coral)}.add-control{position:relative;flex:none}.add-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:175px;padding:8px;border-radius:14px;border:1px solid #a79bff38;background:var(--panel-raised);box-shadow:0 15px 35px #0007;z-index:5}.add-menu button{display:block;width:100%;text-align:left;padding:8px 14px;border-radius:8px}.add-menu button:hover{background:#a79bff20}
.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:34px}.summary>div{position:relative;overflow:hidden;min-height:147px;padding:20px 22px;border-radius:15px;border:1px solid var(--border);background:linear-gradient(135deg,#2e325669,#20244066);box-shadow:0 8px 22px #00000008}.summary>div:first-child{background:linear-gradient(125deg,#4841749c,#302c5357);border-color:#a99afe29}.summary>div>span:first-child{display:block;font-size:.77rem;color:#c4c8df}.summary strong{display:block;font-size:2.45rem;font-weight:500;line-height:1.3;margin:10px 0 4px;font-variant-numeric:tabular-nums;letter-spacing:-.05em}.summary small{color:#9aa3c4;font-size:.65rem}.summary>div:nth-child(3) strong{color:var(--coral)}.summary>div:nth-child(4) strong{color:var(--mint)}.stat-art{position:absolute;right:18px;bottom:19px;font-size:46px;line-height:1;color:#a89afa50;font-weight:200}.summary>div:nth-child(3) .stat-art{color:#ff9aab50}.summary>div:nth-child(4) .stat-art{color:#85ddc435}.board-caption{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.caption-en{font-size:.6rem;color:#7b83a5;letter-spacing:.15em;font-weight:400;margin-left:10px}.board-caption>span{color:#8892b3;font-size:.72rem}.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start;background-image:linear-gradient(#ffffff03 1px,transparent 1px),linear-gradient(90deg,#ffffff03 1px,transparent 1px);background-size:28px 28px}.column{min-width:0;background:#14182b70;border:1px solid #ffffff07;border-radius:17px;padding:13px 12px;min-height:340px}.column-heading{display:flex;align-items:center;gap:10px;padding:3px 5px 17px;color:#cdd1e7}.line{width:7px;height:7px;border-radius:50%;background:#7c86ac;box-shadow:0 0 0 4px #7c86ac12}.doing .line{background:var(--accent);box-shadow:0 0 0 4px #a79bff15}.done .line{background:var(--mint);box-shadow:0 0 0 4px #85ddc410}.column-heading .count{border:1px solid var(--border);padding:1px 8px;border-radius:6px}.task{position:relative;border:1px solid #ffffff0d;border-radius:13px;background:linear-gradient(145deg,#252a4933,transparent),var(--panel);padding:17px 16px;margin-bottom:12px;box-shadow:0 6px 20px #00000010;}.task:last-child{margin-bottom:0}.task-meta{display:flex;gap:8px;align-items:center;justify-content:space-between;font-size:.67rem;margin-bottom:10px}.badge{border:1px solid currentColor;border-radius:5px;padding:0 7px;background:#a79bff08}.source-label{color:#8791b2;font-size:.65rem}.task-title{display:block;max-width:100%;padding:0;text-align:left;font-size:1.09rem;font-weight:600;line-height:1.7;overflow-wrap:anywhere;white-space:pre-wrap;min-height:32px}.course,.task-location{font-size:.75rem;color:var(--muted);overflow-wrap:anywhere;margin-top:6px}.task-location{color:#b5b0d8}.task-time{font-size:.78rem;color:#d2d5e9;margin:17px 0;line-height:1.75;font-variant-numeric:tabular-nums}.time-label{font-size:.65rem;color:#929cbd;margin-bottom:3px}.overdue,.overdue .time-label{color:var(--coral)}.task-footer{display:flex;align-items:center;gap:6px;flex-wrap:wrap;border-top:1px solid var(--border);margin-top:12px;padding-top:10px;font-size:.67rem}.task-footer select{width:auto;max-width:100%;min-height:36px;padding:5px 26px 5px 9px;font-size:.7rem;background:#10142844;border-color:#ffffff10;border-radius:7px;margin:0}.task-footer a{font-size:.65rem;margin-left:auto}.delete-task{color:#959cbc;font-size:.65rem;min-height:36px;padding:5px 2px 5px 8px;margin-left:auto}.delete-task:hover{color:var(--coral)}.empty{padding:56px 8px 42px;text-align:center;color:#7f89aa;font-size:.73rem;border:1px dashed #ffffff08;border-radius:12px;min-height:251px}.empty b{display:block;font-size:.88rem;font-weight:400;color:#adb4d1;margin-bottom:7px}.empty button{color:#b6a8f8;font-size:.77rem;margin-top:18px}
.checklist{margin-top:12px}.checklist-count{display:block;color:#9a9fc0;font-size:.7rem;margin-bottom:7px}.todo-list{display:grid;gap:2px}.todo-row{display:flex;align-items:center;gap:3px;border-radius:7px;position:relative;min-width:0}.todo-row:hover{background:#a79bff08}.todo-row.dragging{background:#a79bff26;outline:1px solid #a79bff60;z-index:2;box-shadow:0 8px 20px #0005}.drag-handle{width:24px;min-width:24px;min-height:44px;font-size:15px;color:#8790b6;padding:0;cursor:grab;touch-action:none;user-select:none;letter-spacing:-3px}.drag-handle:active{cursor:grabbing}.todo-row input[type=checkbox]{flex:none;width:16px;height:16px;margin:0 5px 0 0;accent-color:var(--accent);cursor:pointer;min-height:0}.todo-text{font-size:.82rem;line-height:1.55;flex:1;min-width:0;text-align:left;padding:7px 2px;overflow-wrap:anywhere;color:#d8dbef}.checked .todo-text{text-decoration:line-through;color:#808baa}.todo-action{flex:none;width:28px;min-height:44px;padding:0;color:#8994b7;font-size:17px}.todo-action:hover{color:#d2caff}.todo-edit{flex:1;min-width:0;width:0!important;font-size:.82rem!important;padding:5px 6px!important;min-height:36px!important}.todo-add{display:flex;align-items:center;gap:4px;margin-top:6px}.todo-add input{flex:1;min-width:0;background:transparent;border:1px solid transparent;font-size:.76rem;padding:8px 7px;min-height:40px}.todo-add input:focus{background:#12152b60;border-color:#a79bff50}.todo-add input::placeholder{color:#8992b3}.todo-add-button{width:36px;min-height:44px;color:#bfb2ff;border-radius:8px;font-size:20px}.todo-add-button:hover{background:#a79bff16}.checklist-error{font-size:.72rem}.checklist-recovery{display:flex;gap:8px;flex-wrap:wrap}.text-button{font-size:.72rem;color:#c3b8ff;padding:5px}.field-heading{display:flex;justify-content:space-between;gap:12px;font-size:.86rem;margin-top:20px}.field-heading .hint{margin:0}.optional{font-size:.68rem;font-weight:400;color:#939bbc;margin-left:5px}.required{color:var(--accent)}
label{display:block;margin:20px 0 8px;font-size:.84rem;font-weight:500;color:#d6daf0}input,textarea,select{width:100%;max-width:100%;border:1px solid #ffffff19;border-radius:10px;background:#12152b80;color:var(--text);padding:11px 12px;min-height:44px;outline:none;transition:border-color .18s}input:focus,textarea:focus,select:focus{border-color:#a79bff90;box-shadow:0 0 0 3px #a79bff12}input::placeholder,textarea::placeholder{color:#828caf}input[type=datetime-local]{min-width:0;font-size:.86rem}select option{background:var(--panel)}dialog{color:var(--text);background:linear-gradient(150deg,#272b4e,var(--panel) 60%);border:1px solid #a79bff30;border-radius:22px;width:570px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 40px);padding:28px;box-shadow:0 35px 100px #0007;overflow-y:auto}dialog::backdrop{background:#080a19b8;backdrop-filter:blur(6px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.dialog-heading h2{font-size:1.4rem;margin-top:4px}.icon-button{font-size:25px;color:#a5adcc;width:44px;border-radius:10px}.icon-button:hover{background:#ffffff07}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:26px;padding-top:20px;border-top:1px solid var(--border)}.date-range{display:grid;grid-template-columns:1fr 1fr;gap:12px}#task-todos{padding:6px 12px 10px;margin-top:10px;background:#10132950;border:1px solid var(--border);border-radius:12px}#task-todos .checklist{margin:0}#task-todos .checklist-count{display:none}.source-row{padding:20px 0;border-bottom:1px solid var(--border)}.source-row>div{display:flex;justify-content:space-between;gap:14px}.source-row p{font-size:.8rem;color:var(--muted);margin-top:8px}.state{font-size:.7rem;color:var(--coral)}.state.connected{color:var(--mint)}.connection-note{padding:18px;border-radius:12px;background:#a79bff0c;margin:22px 0;border:1px solid #a79bff17;font-size:.85rem}.connection-note p{color:var(--muted);font-size:.8rem;margin-top:8px}.toast{position:fixed;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);padding:12px 20px;border:1px solid #b6aaff45;border-radius:12px;background:#2b2d4a;color:var(--text);box-shadow:0 12px 30px #0005;z-index:20;font-size:.85rem}.login{min-height:100dvh;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 25% 20%,#7670b029,transparent 60%),linear-gradient(#ffffff02 1px,transparent 1px),linear-gradient(90deg,#ffffff02 1px,transparent 1px);background-size:auto,42px 42px,42px 42px}.login-card{width:430px;max-width:100%;padding:40px;border:1px solid #b6aaff25;border-radius:24px;background:linear-gradient(150deg,#292d4daa,#191d359e);box-shadow:0 24px 80px #0003}.login-card .brand-icon{width:50px;height:50px;font-size:30px;margin-bottom:25px}.login-card .eyebrow{color:var(--accent);margin-bottom:12px}.login-card h1{font-size:1.95rem;line-height:1.55}.login-card .muted{margin-top:12px;font-size:.85rem}.login-card label{margin-top:28px}.login-card .primary{width:100%;margin-top:24px}.login-card .hint{text-align:center;margin-top:24px;font-size:.72rem}
@media(min-width:1500px){.task{padding:20px}.board{gap:24px}.column{padding:16px}.summary>div{min-height:159px}.task-title{font-size:1.15rem}}
@media(max-width:1150px){.workspace{grid-template-columns:220px minmax(0,1fr)}.sidebar{padding:28px 12px 16px}.brand{padding:0 6px;font-size:.85rem;gap:8px}main{padding:24px}.summary{gap:10px}.summary>div{padding:16px}.summary small{font-size:.6rem}.stat-art{font-size:34px;right:12px;bottom:22px}.board{gap:10px}.column{padding:10px 8px}.task{padding:14px 12px}.caption-en{display:none}}
@media(max-width:960px){.board{grid-template-columns:1fr}.column{min-height:0;padding:14px}.empty{padding:30px;min-height:150px}.task-footer select{min-height:44px}.task-footer{font-size:.8rem}.todo-text{font-size:.9rem}.todo-action,.drag-handle{width:36px;min-width:36px}.task-title{font-size:1.15rem}.todo-add input{font-size:.86rem}.summary{grid-template-columns:repeat(2,minmax(0,1fr))}.summary>div{min-height:135px}.summary small{font-size:.7rem}.stat-art{font-size:44px}.task-meta{font-size:.78rem}.source-label{font-size:.7rem}.task-time{font-size:.88rem}}
@media(max-width:680px){.workspace{display:block}.sidebar{position:relative;height:auto;padding:20px 18px 0;border-right:0;border-bottom:1px solid var(--border)}.brand{font-size:1rem;padding:0}.brand-icon{width:34px;height:34px}.brand small{font-size:.5rem}.nav-heading,.focus-note{display:none}#categories{display:flex;overflow-x:auto;gap:4px;padding:18px 0 13px;margin:0 -3px;scrollbar-width:none}#categories .nav-button{width:auto;flex:none;min-height:44px;padding:9px 12px;margin:0;gap:7px;font-size:.8rem}.category-mark{width:6px;height:6px}.nav-button.active{box-shadow:inset 0 -2px var(--accent)}#categories .count{font-size:.65rem}.sidebar-bottom{position:absolute;top:21px;right:18px;display:flex;padding:0;gap:5px}.sidebar-bottom .nav-button{width:auto;font-size:18px;margin:0;padding:4px 10px;min-height:36px}.sidebar-bottom .nav-button span{display:none}main{padding:21px 18px 42px}.topbar{padding-bottom:20px}.topbar .eyebrow{font-size:.55rem}#today{font-size:.72rem}.sync-state{font-size:.65rem;padding:0 10px}.heading{margin:26px 0 24px;gap:10px}.section-kicker{font-size:.45rem;letter-spacing:.12em}h1{font-size:2rem}.heading .muted{font-size:.77rem;margin-top:9px}.primary{padding:10px 14px;font-size:.8rem}.summary{gap:10px;margin-bottom:28px}.summary>div{padding:16px 14px;min-height:130px}.summary>div>span:first-child{font-size:.7rem}.summary strong{font-size:2rem;margin-top:12px}.summary small{font-size:.6rem}.stat-art{font-size:36px;right:12px}.board-caption{align-items:flex-start;flex-direction:column;gap:4px}.board-caption h2{font-size:1rem}.board-caption>span{font-size:.65rem}.board{gap:16px}.column{padding:12px}.task{padding:16px}.task-footer a,.delete-task{font-size:.72rem}.task-location,.course{font-size:.8rem}.task-time{font-size:.84rem}.todo-row{gap:4px}.todo-action{width:32px;min-width:32px}.drag-handle{width:28px;min-width:28px}.todo-row input[type=checkbox]{width:18px;height:18px;margin-right:6px}.todo-edit,.todo-add input,dialog input,dialog select{font-size:16px!important}dialog{padding:22px 18px;max-width:calc(100vw - 20px);max-height:calc(100dvh - 24px);border-radius:18px}.date-range{grid-template-columns:1fr;gap:0}.dialog-heading h2{font-size:1.25rem}.login-card{padding:30px 24px}.login-card h1{font-size:1.75rem}.login-card input{font-size:16px}.field-heading{font-size:.82rem}.field-heading .hint{font-size:.7rem}.summary .stat-art{opacity:.7}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

/* Readability and mobile alignment */
.brand-icon{line-height:1;padding:0}.brand-icon svg{display:block;width:25px;height:25px;fill:currentColor;flex:none}.login-card .brand-icon svg{width:32px;height:32px}.nav-heading,.sidebar-bottom .nav-button,.count{font-size:.82rem}.eyebrow{font-size:.7rem}.brand small{font-size:.6rem}.section-kicker{font-size:.65rem}.heading .muted,.task-time,.course,.task-location{font-size:.9rem}.summary>div>span:first-child{font-size:.9rem}.summary small{font-size:.76rem;display:block;max-width:80%}.source-label,.task-meta,.badge,.time-label,.board-caption>span,.task-footer a,.delete-task,.task-footer select,.checklist-count,.todo-add input,.checklist-error,.text-button,.optional{font-size:.82rem}.todo-text{font-size:.94rem}.empty{font-size:.88rem}.empty b{font-size:1rem}.empty button{font-size:.92rem}.summary>div{min-height:164px}.board-caption{align-items:baseline}.drag-handle,.todo-action,.todo-add-button{min-width:36px;min-height:44px}.task-title{font-size:1.12rem}.task-footer{gap:8px}.task-footer a{overflow-wrap:anywhere}.nav-button{font-size:.97rem}.resources{display:grid;gap:8px;margin:16px 0}.resource-row{display:flex;align-items:center;gap:8px;min-width:0;border:1px solid var(--border);border-radius:9px;padding:9px 10px;background:#10132935}.resource-row a{flex:1;min-width:0;overflow-wrap:anywhere;font-size:.88rem}.resource-kind{font-size:.68rem;letter-spacing:.02em;border:1px solid #a79bff30;border-radius:5px;padding:2px 5px;color:var(--muted);flex:none}.resource-row small{display:block;color:var(--muted);font-size:.72rem}.resource-row .file-download{flex:none;font-size:.8rem}.resource-row button{flex:none;min-width:40px;color:var(--muted)}.resource-editor{border:1px solid var(--border);background:#10132935;border-radius:12px;padding:12px;margin-top:10px}.link-edit-row{display:grid;grid-template-columns:1fr 44px;gap:6px;margin-bottom:12px}.link-edit-row input{grid-column:1;margin:0;min-width:0}.link-edit-row button{grid-column:2;grid-row:1 / 3;font-size:24px;color:var(--muted)}.upload-control{margin:10px 0 0;font-size:.9rem}.upload-control input{margin-top:8px;padding:8px;font-size:.85rem}input[type=file]::file-selector-button{font:inherit;color:var(--text);background:var(--panel-raised);border:1px solid #a79bff40;border-radius:7px;padding:8px;margin-right:10px}.upload-state{font-size:.82rem;color:var(--accent);margin-top:10px}.source-original{font-size:.88rem;margin-top:15px}.source-original a{overflow-wrap:anywhere}.resource-heading{display:flex;justify-content:space-between;align-items:center;margin-top:22px;font-size:.94rem}.resource-heading .hint{margin:0}.resource-empty{color:var(--muted);font-size:.82rem}.resource-editor .resources{margin:0}
@media(max-width:1150px){.summary>div{padding:18px}.summary small{font-size:.74rem}.task-footer{flex-wrap:wrap}.task-footer a{margin-left:0}.stat-art{font-size:36px}}
@media(max-width:680px){:root{font-size:16px}.sidebar{padding-top:20px;padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.brand{font-size:1.05rem;max-width:calc(100% - 86px)}.brand-icon{width:38px;height:38px;align-self:center}.brand-icon svg{width:24px;height:24px}.brand small{font-size:.58rem}.sidebar-bottom{top:19px;right:12px;gap:0}.sidebar-bottom .nav-button{width:42px;height:42px;padding:0;justify-content:center;font-size:23px}#categories .nav-button{font-size:.93rem;padding:10px 12px}#categories .count{font-size:.8rem}.topbar .eyebrow,#today,.sync-state{font-size:.8rem}.topbar{gap:8px}.sync-state{min-height:40px;flex:none}.section-kicker{font-size:.62rem}.heading .muted{font-size:.9rem}.primary{font-size:.94rem;padding:11px 13px}.summary>div{padding:17px 14px;min-height:148px}.summary>div>span:first-child{font-size:.89rem}.summary small{font-size:.75rem;max-width:90%;line-height:1.7}.summary strong{font-size:2.25rem}.summary .stat-art{bottom:43px;font-size:29px}.board-caption>span{font-size:.8rem}.board-caption h2{font-size:1.15rem}.task{padding:16px 12px}.task-footer a,.delete-task,.task-footer select{font-size:.84rem}.task-time,.course,.task-location{font-size:.9rem}.todo-text{font-size:1rem}.todo-action,.drag-handle{min-width:32px;width:32px}.resource-row{flex-wrap:wrap}.resource-row a{font-size:.94rem}.resource-row .file-download{font-size:.82rem}.field-heading{font-size:.94rem}.field-heading .hint{font-size:.8rem}.optional,.hint{font-size:.82rem}.login-card .hint{font-size:.8rem}.resource-editor{padding:10px}.heading{align-items:center}.heading>div:first-child{min-width:0}.section-kicker{max-width:180px}.caption-en{display:none}main{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}}
@media(max-width:360px){.brand{font-size:.92rem;gap:8px}.brand small{font-size:.51rem}.brand-icon{width:34px;height:34px}.heading{align-items:flex-start;flex-direction:column}.add-control{align-self:flex-end}.summary>div>span:first-child{font-size:.8rem}.summary small{font-size:.72rem}.topbar .eyebrow,#today{font-size:.72rem}.sync-state{font-size:.73rem}.summary .stat-art{display:none}}

.task-status{color:var(--muted);font-size:.82rem}.task-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.task-actions button{margin:0;padding:6px 8px;min-height:44px;font-size:.82rem}.edit-task{color:#c3b8ff}.edit-task:hover{background:#a79bff12;border-radius:7px}

.archive-categories{display:flex;gap:6px;flex-wrap:wrap;margin:20px 0}.archive-tab{padding:8px 12px;border-radius:8px;color:var(--muted)}.archive-tab.active{color:#d7cfff;background:#a79bff22}.archive-row{display:flex;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--border)}.archive-info{flex:1;min-width:0}.archive-info h3,.archive-title{overflow-wrap:anywhere;white-space:pre-wrap}.archive-info p{font-size:.82rem;margin-top:6px}.archive-row .task-actions{flex:none}.archive-empty{padding:28px 0;color:var(--muted)}.archive-title{font-size:1.25rem;margin:14px 0}.archive-todos{padding-left:20px;line-height:1.9;overflow-wrap:anywhere}#archive-more{margin-top:20px}@media(max-width:680px){.brand{max-width:calc(100% - 140px)}.brand small{letter-spacing:.12em}.sidebar-bottom{gap:0}.sidebar-bottom .nav-button{padding:4px 8px}.archive-row{flex-wrap:wrap}.archive-row .task-actions{margin-left:auto}.archive-info{flex-basis:100%}}

.collector-actions{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.collector-toggle{display:flex;align-items:center;gap:10px;font-size:.88rem}.collector-toggle input{width:18px;min-height:18px;accent-color:var(--accent)}#manual-pair{margin-top:20px}#manual-pair summary{cursor:pointer;color:var(--muted);padding:12px 0}.source-diagnostic{font-size:.78rem!important;color:#b6aed9!important}

/* Keep board rules inside the four summary cards. */
.summary small{max-width:100%;line-height:1.7;position:relative}.summary .stat-art{top:52px;bottom:auto}

/* RUChecklist calendar and compact source controls. */
.heading{margin-top:8px}.task-footer select{min-height:44px;color:var(--text);cursor:pointer}
.calendar-board{display:block;background:none}.calendar{border:1px solid var(--border);border-radius:18px;background:#1c203d80;overflow:hidden}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px}.calendar-toolbar h2{font-size:1.2rem}.calendar-controls{display:flex;gap:6px}.calendar-controls button{padding:5px 14px;min-width:44px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.calendar-weekday{padding:10px 0;text-align:center;font-size:.85rem;color:var(--muted);border-top:1px solid var(--border)}.calendar-day{min-width:0;min-height:120px;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:10px 8px;text-align:left;border-top:1px solid var(--border);border-right:1px solid var(--border);position:relative;transition:background .18s,box-shadow .18s}.calendar-day:nth-child(7n){border-right:0}.calendar-day:hover{background:#a79bff0c}.calendar-day.outside{background:#10122540;color:#7b84a5}.calendar-day.selected{background:#a79bff1f;box-shadow:inset 0 0 0 2px var(--accent)}.calendar-day:focus-visible{outline-offset:-4px}.day-number{display:grid;place-items:center;align-self:flex-start;width:29px;height:29px;font-size:.9rem;line-height:1}.calendar-day[aria-current=date] .day-number{border-radius:50%;background:var(--accent);color:var(--bg);font-weight:650}.day-task{display:block;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;line-height:1.65;border-radius:4px;padding:1px 5px;background:#a79bff0d;border-left:2px solid currentColor}.day-task.is-done{color:var(--mint)}.day-more{font-size:.72rem;color:var(--muted);padding-left:5px}.undated-button{margin:16px}.undated-button[aria-pressed=true]{border-color:var(--accent);background:#a79bff20}.day-agenda{margin-top:26px;animation:agenda-in .18s ease-out}.day-agenda>h2{margin-bottom:16px}.day-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.day-list .task{margin:0}.day-empty{grid-column:1/-1;border:1px dashed var(--border);border-radius:14px;padding:30px;text-align:center;color:var(--muted)}
.source-connection{padding:16px;border:1px solid var(--border);border-radius:12px;background:#10122540}.source-connection>p{font-size:.9rem}.extension-download{display:inline-flex;align-items:center;margin-top:14px;min-height:44px}.source-connection #collector-controls{margin-top:12px}.sync-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:24px}.sync-toolbar p{font-size:.85rem}.source-row>div{align-items:center}.source-row .state{flex:none}#sync-settings{margin-top:20px}#sync-settings summary{cursor:pointer;min-height:44px;color:var(--muted);padding:10px 0}#sync-settings .collector-actions{margin:12px 0}#sync-settings .collector-toggle{font-size:.85rem}#sources-dialog{width:620px}
@keyframes agenda-in{from{opacity:.6;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:960px){.calendar-toolbar{padding:14px}.calendar-day{min-height:108px;padding:8px 4px}.day-list{grid-template-columns:1fr}.day-task{font-size:.75rem}}
@media(max-width:680px){.brand{max-width:none;font-size:1.06rem}.brand small{font-size:.58rem;letter-spacing:.08em}.sidebar-bottom{position:static;margin:12px 0 0;padding:0;justify-content:flex-end}.sidebar-bottom .nav-button{width:auto;padding:0 10px;font-size:20px}.sidebar-bottom .nav-button span{display:inline;font-size:.78rem}.nav-heading{display:none}#categories{padding-top:12px;padding-bottom:8px}.heading{margin:6px 0 24px}.calendar-toolbar{padding:12px 10px}.calendar-toolbar h2{font-size:1.05rem}.calendar-controls{gap:4px}.calendar-controls button{padding:5px 9px;font-size:.85rem}.calendar-day{min-height:104px;padding:6px 3px;gap:4px}.day-number{font-size:.82rem;width:26px;height:26px}.day-task{font-size:.73rem;padding:1px 2px;border-left-width:1px}.day-more{font-size:.7rem;padding-left:2px}.calendar-weekday{font-size:.8rem}.calendar{border-radius:12px}.day-agenda{margin-top:22px}.sync-toolbar{align-items:flex-start}.sync-toolbar .primary{padding:10px 12px}.source-row .state{font-size:.75rem}}

/* RUChecklist identity and purpose-built schedule views. */
.workspace{grid-template-columns:276px minmax(0,1fr)}
.brand{gap:11px;padding:0 6px}.brand-icon,.login-card .brand-icon{width:52px;height:52px;border:0;background:none;box-shadow:0 6px 24px #9180ff24;border-radius:16px}.brand-icon img{display:block;width:100%;height:100%;object-fit:contain}.wordmark{font-family:Inter,"Segoe UI",sans-serif;font-size:22px;letter-spacing:-1px;font-weight:550;line-height:1.25;white-space:nowrap}.wordmark b{color:#b6a9ff;font-weight:850;margin-right:1px}.brand .wordmark small{font-size:8px;letter-spacing:1.25px;margin-top:6px;font-weight:500;color:#afb7d5}.login-card .eyebrow{font-size:1.3rem;letter-spacing:-.035em;font-weight:650}.nav-icon{width:21px;height:21px;flex:none;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.nav-heading{padding-top:40px}.heading h1{letter-spacing:-.035em;font-weight:680}.event-detail{font-size:.82rem;color:var(--muted);margin-top:5px;overflow-wrap:anywhere}.schedule-board{display:block;background:none}.event-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.event-grid .task{margin-bottom:0}.class-session{min-width:0}.session-clock{font-size:.93rem;font-weight:550;font-variant-numeric:tabular-nums;color:#b6ccff;padding:0 0 10px 12px;border-left:2px solid #91baff}.class-session .task{border-top:2px solid #91baff80}.event-group{margin-bottom:28px}.event-heading{display:flex;align-items:center;gap:12px;padding:0 0 14px}.date-pill{font-size:.75rem;border:1px solid #ffffff20;border-radius:20px;color:var(--muted);padding:3px 10px}.exam-group .date-pill{color:#f3c98a;background:#f3c98a0b;border-color:#f3c98a30}.exam-group .task{border-top:2px solid #f3c98a70}.meeting-group{border-left:2px solid #efaccb45;padding-left:20px}.meeting-group .event-heading{position:relative}.meeting-group .event-heading::before{content:"";width:8px;height:8px;border-radius:50%;background:#efaccb;position:absolute;left:-25px;top:10px}.activity-group .task{border-top:2px solid #88daca60}.past-events{margin-top:26px;border-top:1px solid var(--border)}.past-events>summary{padding:18px 0;min-height:44px;color:var(--muted);cursor:pointer}.past-events .date-pill{color:var(--muted)}.academic-sync{padding-top:20px}.academic-sync .hint{font-size:.8rem}#schedule-fields{display:grid;grid-template-columns:1fr;gap:0}
@media(max-width:1250px){.workspace{grid-template-columns:248px minmax(0,1fr)}.wordmark{font-size:21px}.brand-icon{width:46px;height:46px}.brand{gap:9px}.brand .wordmark small{font-size:7px;letter-spacing:1.15px}.event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:960px){.event-grid{grid-template-columns:1fr}.week-days{gap:3px;padding:6px 8px 12px}.week-day{padding:10px 2px}.week-day strong{font-size:1.35rem}.week-day span,.week-day small{font-size:.74rem}}
@media(max-width:680px){.workspace{display:block}.brand-icon{width:50px;height:50px}.wordmark{font-size:26px;letter-spacing:-1.15px}.brand{gap:12px}.brand .wordmark small{font-size:8px;letter-spacing:1.6px}.nav-icon{width:19px;height:19px}#categories .nav-button{gap:8px}.week-panel{border-radius:13px}.week-panel .calendar-toolbar{flex-wrap:wrap}.week-panel .calendar-toolbar h2{font-size:1rem}.week-days{gap:2px;padding:4px 5px 10px}.week-day{border-radius:9px}.week-day strong{font-size:1.2rem}.week-day span,.week-day small{font-size:.7rem}.meeting-group{padding-left:14px}.meeting-group .event-heading::before{left:-19px}.session-clock{font-size:.92rem}.schedule-agenda{margin-top:22px}}
.summary[data-schedule] > div:nth-child(3) strong{color:var(--text)}.summary[data-schedule="课程"] > div:first-child strong{color:#91baff}.summary[data-schedule="考试"] > div:first-child strong{color:#f3c98a}

/* Semester / teaching-week timetable. The table scrolls within its panel on phones. */
.timetable-panel{border:1px solid var(--border);border-radius:17px;background:#171b32;overflow:hidden}.timetable-toolbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;border-bottom:1px solid var(--border)}.timetable-toolbar h2{flex:none;font-size:1.12rem}.timetable-controls{display:flex;align-items:center;gap:10px}.timetable-controls select{width:auto;max-width:280px;min-width:135px;border-radius:24px;padding:8px 32px 8px 16px;background:#a79bff12;border-color:#a79bff35;color:#d9d1ff;font-size:.88rem}.timetable-scroll{max-width:100%;overflow:auto;outline-offset:-3px}.timetable{border-collapse:separate;border-spacing:0;width:100%;min-width:960px;table-layout:fixed}.timetable th,.timetable td{border-right:1px solid #ffffff0e;border-bottom:1px solid #ffffff0e}.timetable tr>*:last-child{border-right:0}.timetable tbody tr:last-child>*{border-bottom:0}.timetable thead th{height:54px;text-align:center;font-size:.86rem;font-weight:500;background:#1d213d;color:#c0c6e1;position:sticky;top:0;z-index:1}.timetable th:first-child{width:104px;position:sticky;left:0;background:#1b2039;z-index:2}.timetable thead th:first-child{z-index:3}.timetable tbody th{font-weight:500;color:#c5cbe5;padding:18px 8px;font-size:.88rem;vertical-align:middle}.timetable th small{display:block;font-weight:400;font-size:.72rem;margin-top:5px;color:#98a3c5;font-variant-numeric:tabular-nums}.timetable td{vertical-align:top;height:142px;padding:5px;background:#13182c50}.timetable tbody tr:nth-child(even) td{background:#20263e40}.course-block{position:relative;min-height:137px;padding:10px 10px 42px;border-radius:9px;border:1px solid #b4c6ff26;box-shadow:0 4px 14px #0000000b;margin-bottom:5px}.course-block:last-child{margin-bottom:0}.course-block h3{font-size:.89rem;line-height:1.6;font-weight:650;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:#f4f6ff;margin-bottom:5px}.course-block p{font-size:.75rem;line-height:1.65;color:#dae2f1;overflow-wrap:anywhere}.course-block .course-weeks{color:#e2defc;margin-top:3px}.course-view{position:absolute;bottom:0;right:4px;min-height:40px;min-width:48px;font-size:.73rem;color:#fff;padding:7px 8px;border-radius:7px}.course-view:hover{background:#ffffff14}.course-color-0{background:#35476d}.course-color-1{background:#425c54}.course-color-2{background:#63515f}.course-color-3{background:#53517c}.course-color-4{background:#626044}.course-color-5{background:#345864}.timetable-hint{padding:12px 18px;color:var(--muted);font-size:.75rem;border-top:1px solid var(--border)}#course-detail{margin-top:18px}#course-dialog .task{margin:0}#course-dialog .task-footer{gap:10px}
@media(max-width:960px){.timetable-toolbar{align-items:flex-start;flex-wrap:wrap}.timetable-controls{margin-left:auto}.timetable{min-width:900px}}
@media(max-width:680px){.timetable-toolbar{padding:14px 12px;gap:12px}.timetable-toolbar h2{font-size:1rem}.timetable-controls{width:100%;margin:0;gap:8px}.timetable-controls select{min-width:0;max-width:none;width:50%;font-size:16px}.timetable{min-width:885px}.timetable th:first-child{width:90px}.timetable td{padding:4px}.timetable tbody th{font-size:.82rem}.timetable-hint{padding:10px 12px}.timetable-panel{border-radius:12px}.course-block h3{font-size:15px}.course-block p{font-size:13px}.course-view{min-height:44px;font-size:13px}.course-block{padding-bottom:44px}}
/* Guided setup: one task per step, with installation details collapsible after detection. */
#sources-dialog{width:700px}.guide-intro{margin-bottom:22px;font-size:.9rem}.guide-step{border:1px solid var(--border);border-radius:14px;background:#171b322f;margin-top:14px;overflow:hidden}.guide-step>summary,.guide-step>h3{display:flex;align-items:center;gap:12px;padding:17px 18px;font-size:1rem;font-weight:600}.guide-step>summary{cursor:pointer;list-style:none}.guide-step>summary::-webkit-details-marker{display:none}.guide-step>summary small{display:block;color:var(--muted);font-size:.76rem;font-weight:400;margin-top:3px}.step-number{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:10px;background:#a79bff21;color:#c7bbff;font-size:.9rem}.step-body{padding:0 18px 18px}.step-body ol{margin:0;padding-left:22px;color:var(--muted);font-size:.85rem;line-height:1.8}.step-body li{margin-bottom:13px}.step-body .extension-download{margin:0 5px 0 0}.step-body .hint{margin:9px 0}.step-body .sync-toolbar{margin-top:14px}.step-body label{margin-top:12px}.step-body textarea{resize:vertical;min-height:100px;overflow-wrap:anywhere}.step-body .source-row:last-child{border-bottom:0}.supported-sites summary{color:var(--muted);cursor:pointer;padding-top:14px;font-size:.8rem}.step-body code{color:#d5caff;font-size:.87rem}#save-source-links{margin-top:12px}#collector-state{font-size:.9rem}#collector-controls{margin-top:12px}.guide-step .source-row p{font-size:.8rem}@media(max-width:680px){.guide-step>summary,.guide-step>h3{padding:15px 12px}.step-body{padding:0 12px 15px}.guide-step{border-radius:12px}.step-body textarea{font-size:16px}}
.auth-tabs{display:flex;gap:10px;margin:18px 0}.login-card #auth-recover{margin-top:14px;font-size:.85rem}.login-card #trial-privacy{font-size:.76rem;line-height:1.7}#recovery-value{white-space:pre-wrap;overflow-wrap:anywhere;padding:18px;margin:20px 0;background:#10122590;border:1px solid var(--border);border-radius:12px;color:#cfc4ff;font-size:1rem}#recovery-form button{margin-top:16px}
