:root{--ink:#253252;--muted:#8090a9;--blue:#5874ed;--blue-soft:#edf1ff;--line:#e9edf4;--bg:#f7f8fc;--card:#fff;--orange:#ffa34d;--green:#41c38a;--pink:#ec86a6;--purple:#8672e8}*{box-sizing:border-box}body{margin:0;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{width:250px;min-height:100vh;background:#fff;padding:30px 18px 22px;display:flex;flex-direction:column;border-right:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;font-size:21px;font-weight:800;padding:0 12px 38px}.brand-mark{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;background:var(--blue);color:#fff;font-size:18px}.nav{display:grid;gap:6px}.nav-item{border:0;background:transparent;color:#75829b;padding:13px 14px;text-align:left;border-radius:9px;font-weight:600;cursor:pointer;font-size:15px}.nav-item span{display:inline-block;width:25px;font-size:19px;vertical-align:-1px}.nav-item:hover,.nav-item.active{background:var(--blue-soft);color:var(--blue)}.sidebar-bottom{margin-top:auto}.tip-card{background:#fff6e9;border-radius:12px;padding:14px 14px 10px;color:#a26d27;display:flex;gap:8px;font-size:13px;line-height:1.6}.tip-card span{font-size:19px}.tip-card p{margin:0}.profile{border:0;background:transparent;display:flex;align-items:center;width:100%;gap:10px;text-align:left;margin-top:20px;padding:5px;cursor:pointer}.profile b,.profile em{display:block;font-size:13px;font-style:normal}.profile em{color:var(--muted);font-size:11px;margin-top:3px}.profile i{font-style:normal;margin-left:auto;color:var(--muted)}.avatar{border:0;background:#ffc35d;width:38px;height:38px;border-radius:50%;color:#8b5a12;font-weight:800;cursor:pointer}.avatar.small{width:34px;height:34px;display:grid;place-items:center;font-size:13px}.main-content{width:calc(100% - 250px);max-width:1480px;padding:32px 5.2% 60px;margin:auto}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.eyebrow{font-size:13px;color:var(--muted);margin:0 0 5px}.topbar h1{font-size:26px;margin:0;font-weight:800}.header-actions{display:flex;align-items:center;gap:17px}.icon-button{border:0;background:none;font-size:24px;position:relative;color:#65728d;cursor:pointer}.notice-dot{width:6px;height:6px;background:#ff6b79;border-radius:50%;position:absolute;top:2px;right:1px}.menu-toggle{display:none}.hero-card{overflow:hidden;min-height:244px;border-radius:18px;background:linear-gradient(105deg,#e8edff,#f1edff);display:flex;position:relative;padding:34px 6%;margin-bottom:37px}.hero-copy{max-width:620px;z-index:1}.pill{display:inline-block;background:#fff;color:#6b7ee5;border-radius:20px;padding:5px 12px;font-size:12px;font-weight:700}.hero-card h2{font-size:28px;letter-spacing:.4px;margin:14px 0 9px}.hero-card p{margin:0;color:#687695;font-size:14px}.hero-card p b{color:var(--blue);font-size:17px}.progress-line{height:7px;background:#d8dffa;border-radius:9px;overflow:hidden;max-width:463px;margin-top:24px}.progress-line span{display:block;height:100%;width:0;background:linear-gradient(90deg,#667cf4,#9d82ed);border-radius:9px;transition:width .3s}.progress-caption{max-width:463px;display:flex;justify-content:space-between;color:#7885a2;font-size:12px;margin-top:8px}.progress-caption b{color:#6374d4}.daily-quote{max-width:560px;margin:14px 0 0!important;padding:11px 14px;border-left:4px solid #7b87f1;border-radius:10px;background:rgba(255,255,255,.62);color:#53627f!important;font-size:13px!important;line-height:1.7}.hero-art{position:absolute;right:7%;width:270px;height:100%;bottom:0}.sun{position:absolute;width:142px;height:142px;right:20px;bottom:-32px;background:#ffdb85;border-radius:50%;opacity:.85}.cloud{position:absolute;background:#fff;border-radius:30px;width:78px;height:25px;opacity:.9}.cloud:before,.cloud:after{content:"";position:absolute;background:#fff;border-radius:50%}.cloud:before{width:35px;height:35px;left:13px;bottom:8px}.cloud:after{width:25px;height:25px;left:42px;bottom:4px}.c1{right:145px;top:51px}.c2{right:6px;top:37px;transform:scale(.65);opacity:.65}.book{position:absolute;bottom:30px;right:95px;width:95px;height:105px;background:#ffb95b;border-radius:5px 12px 12px 5px;box-shadow:-11px 9px 0 #e99a46;color:#fff;font-size:24px;font-weight:800;text-align:center;line-height:1.25;padding-top:22px;transform:rotate(-10deg)}.plant{position:absolute;right:12px;bottom:26px;font-size:67px;color:#67bf87;transform:rotate(15deg)}.section-heading,.view-heading,.panel-title{display:flex;align-items:center;justify-content:space-between}.section-heading{margin-bottom:16px}.section-heading h2,.view-heading h2,.panel h2{font-size:18px;margin:0}.section-heading p,.view-heading p,.panel-title p{font-size:13px;color:var(--muted);margin:6px 0 0}.text-button{border:0;background:transparent;color:var(--blue);font-size:13px;font-weight:bold;cursor:pointer}.text-button span{font-size:17px;margin-left:5px}.task-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.task-card,.panel,.calendar-card,.task-row{background:var(--card);border:1px solid var(--line);border-radius:13px}.task-card{padding:17px;display:flex;gap:12px;min-height:126px}.check{width:21px;height:21px;border:2px solid #cbd4e5;background:#fff;border-radius:6px;flex:none;cursor:pointer;margin-top:1px;display:grid;place-items:center;color:white;font-size:14px}.check.done{background:var(--blue);border-color:var(--blue)}.task-card h3{font-size:14px;margin:0 0 9px;line-height:1.45}.task-card.done h3{text-decoration:line-through;color:#95a1b6}.task-card p{color:#8b98ad;font-size:12px;margin:0 0 11px}.task-card .tag{font-size:11px;border-radius:6px;padding:4px 7px;font-weight:700}.tag.math{background:#edf0ff;color:#7181e1}.tag.english{background:#fff0e9;color:#e38964}.tag.chinese{background:#eef9f3;color:#50aa7d}.tag.physics{background:#f4efff;color:#8c6bdd}.dashboard-bottom{display:grid;grid-template-columns:1.23fr .77fr;gap:18px;margin-top:22px}.panel{padding:21px}.more-button{border:0;background:transparent;color:#91a0b6;font-size:21px;cursor:pointer}.week-chart{display:flex;gap:13px;align-items:end;height:144px;margin:16px 3px 5px}.chart-day{height:100%;display:flex;align-items:center;flex:1;flex-direction:column;justify-content:end;gap:9px;color:#8a96aa;font-size:11px}.bar{width:100%;max-width:25px;border-radius:8px 8px 3px 3px;background:#e9edf7;position:relative;overflow:hidden}.bar span{display:block;position:absolute;bottom:0;width:100%;background:#7588ee;border-radius:8px 8px 3px 3px}.chart-day.today{color:var(--blue);font-weight:bold}.chart-day.today .bar span{background:#5c73ec}.chart-legend{display:flex;justify-content:center;gap:16px;color:#98a3b3;font-size:11px;margin-top:13px}.chart-legend i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:5px}.legend-complete{background:#7588ee}.legend-pending{background:#e9edf7}.subject-item{margin-top:19px}.subject-item:first-child{margin-top:13px}.subject-label{display:flex;justify-content:space-between;font-size:13px;margin-bottom:8px}.subject-label span{color:#7f8ba2}.subject-label b{font-size:12px}.subject-bar{height:7px;border-radius:8px;background:#eef1f7;overflow:hidden}.subject-bar span{display:block;height:100%;border-radius:8px}.view{display:none}.view.active{display:block}.view-heading{margin-bottom:23px}.primary-button,.secondary-button{border:0;border-radius:8px;padding:10px 15px;cursor:pointer;font-weight:700;font-size:13px}.primary-button{background:var(--blue);color:white;box-shadow:0 3px 8px #697ded44}.secondary-button{background:#eff2f7;color:#718098}.filter-bar{display:flex;gap:8px;margin-bottom:17px}.filter{border:1px solid var(--line);background:#fff;color:#78849a;padding:8px 13px;border-radius:7px;font-size:13px;cursor:pointer}.filter.active{background:var(--blue-soft);border-color:#cbd4ff;color:var(--blue);font-weight:700}.filter-bar select{margin-left:auto;border:1px solid var(--line);border-radius:7px;color:#697791;background:white;padding:0 10px}.task-list{display:grid;gap:10px}.task-row{display:flex;align-items:center;padding:15px 18px;gap:14px}.task-row .task-info{flex:1}.task-row h3{font-size:14px;margin:0 0 5px}.task-row p{font-size:12px;color:#8a96ac;margin:0}.task-row.done h3{text-decoration:line-through;color:#9ca8ba}.date-chip{font-size:12px;color:#8491a5;background:#f5f7fa;padding:6px 9px;border-radius:6px}.delete-task{border:0;background:transparent;color:#a5afbe;font-size:17px;cursor:pointer}.calendar-card{padding:25px}.calendar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:23px}.calendar-head h2{font-size:17px}.calendar-head button{border:0;background:#f3f5fa;border-radius:7px;width:32px;height:30px;color:#66748f;font-size:23px;cursor:pointer}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-weekday{text-align:center;color:#9aa5b7;font-size:12px;padding-bottom:8px}.calendar-day{min-height:82px;border:1px solid #edf0f5;border-radius:9px;padding:8px;color:#718098;font-size:13px}.calendar-day.empty{border:0}.calendar-day.has-task{background:#f6f8ff}.calendar-day.today{border-color:#8ba0fb;color:var(--blue);font-weight:bold}.dots{display:flex;gap:3px;margin-top:8px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--blue)}.calendar-note{font-size:12px;color:#8e9aaf;margin:18px 0 0}.calendar-note i{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--blue);margin-right:5px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:13px;padding:21px}.stat-card p{font-size:13px;color:#8591a6;margin:0}.stat-card b{font-size:29px;margin:9px 0 3px;display:block}.stat-card span{font-size:12px;color:#41aa7f}.motivation{display:flex;gap:17px;align-items:center;margin-top:20px;background:linear-gradient(100deg,#eef2ff,#f8f3ff);border-color:#e2e5fe}.motivation>span{font-size:31px;color:#f0ae54}.motivation h2{margin:0 0 7px}.motivation p{margin:0;color:#7d88a0;font-size:13px}dialog{border:0;border-radius:14px;padding:0;box-shadow:0 16px 50px #28344d44;width:min(440px,90vw)}dialog::backdrop{background:#24324a66}#task-form{padding:23px}.dialog-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.dialog-title h2{font-size:18px;margin:0}.dialog-title button{border:0;background:transparent;font-size:26px;color:#8793a7;cursor:pointer}.dialog-title+label,label{display:block;font-size:13px;color:#66748d;font-weight:600;margin-top:14px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}input,select{display:block;width:100%;border:1px solid #dfe5ef;border-radius:7px;padding:10px;margin-top:7px;color:var(--ink);outline:none}input:focus,select:focus{border-color:#8194f4}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:23px}
@media(max-width:900px){.sidebar{width:74px;padding:25px 11px}.brand{padding:0 11px 34px}.brand>span:last-child,.nav-item{font-size:0}.nav-item span{font-size:21px;width:auto}.nav-item{padding:13px;text-align:center}.tip-card,.profile>span:not(.avatar),.profile i{display:none}.profile{justify-content:center}.main-content{width:calc(100% - 74px);padding:28px 4%}.hero-art{right:2%}.task-grid{grid-template-columns:1fr 1fr}}@media(max-width:620px){.sidebar{display:none}.main-content{width:100%;padding:20px 16px}.menu-toggle{display:block;border:0;background:none;color:#536179;font-size:21px;margin-right:10px}.topbar{justify-content:flex-start}.header-actions{margin-left:auto}.topbar h1{font-size:21px}.hero-card{padding:25px 22px;min-height:255px}.hero-card h2{font-size:23px;max-width:250px}.hero-art{opacity:.45;right:-50px}.task-grid,.dashboard-bottom,.stats-grid{grid-template-columns:1fr}.task-card{min-height:104px}.filter-bar{flex-wrap:wrap}.filter-bar select{margin-left:0;width:100%;height:37px}.task-row{padding:13px;gap:9px}.date-chip{display:none}.calendar-card{padding:15px}.calendar-day{min-height:58px}.calendar-grid{gap:4px}.form-row{grid-template-columns:1fr}.view-heading{align-items:flex-start}.view-heading .primary-button{padding:9px 11px;white-space:nowrap}}
.user-profile-card{margin-bottom:18px}.profile-card-head{display:flex;gap:14px;align-items:center;margin-bottom:14px}.profile-avatar{width:52px;height:52px;border-radius:50%;background:#ffc35d;color:#8b5a12;font-size:22px;font-weight:800;display:grid;place-items:center}.profile-card-head h3{margin:0 0 5px;font-size:20px}.profile-card-head p{margin:3px 0;color:var(--muted);font-size:13px}.profile-form-grid{display:grid;grid-template-columns:1fr auto 1fr auto;gap:12px;align-items:end}.profile-form-grid label{margin-top:0}.profile-message{min-height:18px;margin:12px 0 0;color:var(--blue);font-size:13px}.profile-message.error{color:#e06b75}@media(max-width:900px){.profile-form-grid{grid-template-columns:1fr 1fr}.profile-form-grid button{height:40px}}@media(max-width:620px){.profile-form-grid{grid-template-columns:1fr}.profile-card-head{align-items:flex-start}}
.tag.overdue{background:#fff0f0;color:#d94848;margin-left:6px}.dots i.overdue-dot{background:#e05353}.overdue-section{margin-bottom:24px}.overdue-stat b{color:#d94848}
.dots{flex-wrap:wrap;align-content:flex-start}.dots i.done-dot{background:var(--blue);border:1px solid var(--blue)}.dots i.todo-dot{background:transparent;border:1.5px solid var(--blue)}.dots i.overdue-dot{background:#e05353;border:1px solid #e05353}
.holiday-choice{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.holiday-choice>span{font-size:13px;color:#66748d;font-weight:700}.holiday-checklist{display:flex;gap:8px;flex-wrap:wrap}.holiday-check{display:inline-flex;align-items:center;gap:6px;margin:0;border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 11px;color:#66748d;font-size:13px;cursor:pointer}.holiday-check input{width:auto;margin:0;accent-color:var(--blue)}
.holiday-cleanup-reminder{margin:6px 0 0;color:#c2410c;font-size:12px;font-weight:700}
.task-files{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:#7d88a0}.task-files a{color:var(--blue);text-decoration:none;background:#eef2ff;border-radius:6px;padding:3px 7px}.file-upload{display:inline-flex;align-items:center;margin:0;background:#f5f7fb;border:1px solid var(--line);border-radius:6px;padding:4px 8px;color:#65748d;cursor:pointer}.file-upload input{display:none}
