:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,SF Pro Display,Segoe UI,sans-serif;color:#1b2a36;background:#f2f4f2;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #1b2a36;--muted: #71808b;--surface: #fffdf9;--surface-soft: #f6f7f5;--line: #dfe5e1;--navy: #29445a;--blue: #5f8194;--green: #50a878;--green-soft: #e1f3e7;--yellow: #dba943;--yellow-soft: #fff0c5;--orange: #b98052;--orange-soft: #f8eadb;--red: #d36e68;--red-soft: #fae3df;--shadow: 0 12px 36px rgba(38, 57, 67, .07)}:root[data-theme=dark]{color:#e9edf2;background:#111922;--ink: #edf2f7;--muted: #9ca8b5;--surface: #1a2531;--surface-soft: #202c38;--line: #2b3948;--navy: #dce7f2;--blue: #90a8bf;--green: #78c49a;--green-soft: #203c31;--yellow: #e6bd62;--yellow-soft: #44391f;--orange: #d0a06f;--orange-soft: #3a3025;--red: #e28b83;--red-soft: #442b2b;--shadow: 0 12px 36px rgba(0, 0, 0, .18)}:root[data-theme=dark] .calendar-cell.state-complete{color:#a7dfbd}:root[data-theme=dark] .calendar-cell.state-partial{color:#f0cf7a}:root[data-theme=dark] .calendar-cell.state-missed{color:#efa49e}:root[data-theme=dark] .expand-mark{color:#b7cfda;background:#263943;border-color:#3d5662}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:inherit}button,input{font:inherit}button{color:inherit}.app-shell{min-height:100vh;padding-bottom:calc(86px + env(safe-area-inset-bottom))}.app-content{width:min(1040px,100%);margin:0 auto}.page{padding:max(26px,env(safe-area-inset-top)) 20px 36px;animation:page-in .32s cubic-bezier(.22,.8,.3,1) both}@keyframes page-in{0%{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}@keyframes module-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.page>*{animation:module-in .42s cubic-bezier(.22,.8,.3,1) both}.page>*:nth-child(2){animation-delay:.06s}.page>*:nth-child(3){animation-delay:.11s}.page>*:nth-child(4){animation-delay:.16s}.panel{background:var(--surface);border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow)}.eyebrow{margin:0 0 5px;color:var(--blue);font-size:11px;font-weight:800;letter-spacing:.16em}h1,h2,p{margin-top:0}h1{margin-bottom:6px;font-size:clamp(28px,6vw,42px);letter-spacing:-.04em}h2{margin-bottom:0;font-size:22px;letter-spacing:-.025em}.page-header{margin:4px 2px 24px}.page-header p:last-child{margin:8px 0 0;color:var(--muted)}.desktop-brand{display:none}.today-overview{padding:24px;color:#fff;background:linear-gradient(145deg,#34556b,#243b50 58%,#203346);border:0;overflow:hidden;position:relative}.today-overview:after{content:"";position:absolute;width:210px;height:210px;border:1px solid rgba(160,211,190,.18);background:radial-gradient(circle,rgba(119,181,156,.1),transparent 68%);border-radius:50%;right:-85px;top:-105px;pointer-events:none}.date-row{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;text-align:center}.date-row h1{margin-bottom:5px;font-size:clamp(25px,6vw,36px)}.date-row .eyebrow{color:#aabed2}.date-subtitle{margin-bottom:0;color:#c5d0dc;font-size:14px}.date-arrow,.calendar-heading button{min-width:44px;min-height:44px;border:0;border-radius:50%;background:#ffffff17;color:inherit;font-size:30px;cursor:pointer}.progress-heading{display:flex;justify-content:space-between;align-items:end;margin-top:34px}.progress-heading div{display:flex;flex-direction:column;gap:5px}.progress-heading span{color:#b9c8d6;font-size:13px}.progress-heading strong{font-size:25px}.progress-percent{color:#fff!important;font-size:26px!important;font-weight:750}.progress-track,.mini-track{height:8px;margin-top:13px;overflow:hidden;border-radius:999px;background:#ffffff21}.progress-track span,.mini-track span{display:block;height:100%;border-radius:inherit;background:#90b6a0;transition:width .35s ease}.time-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:24px}.time-grid>div{display:flex;flex-wrap:wrap;align-items:baseline;align-content:center;padding:15px 17px;border-radius:16px;background:#ffffff13}.time-grid span{flex:0 0 100%;color:#c1cfda;font-size:12px}.time-grid strong{margin-top:3px;font-size:25px;line-height:1.15}.time-grid small{flex:0 0 auto;margin-left:6px;color:#c1cfda;line-height:1;white-space:nowrap}.task-section{margin-top:30px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:0 3px 15px}.section-heading>span{color:var(--muted);font-size:13px}.task-list{display:grid;gap:12px}.task-card{display:flex;gap:13px;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:20px;box-shadow:0 5px 20px #1e30440a;transition:transform .22s ease,border-color .22s ease,background-color .28s ease,box-shadow .22s ease;animation:module-in .38s cubic-bezier(.22,.8,.3,1) both}.task-card:nth-child(2){animation-delay:.04s}.task-card:nth-child(3){animation-delay:.08s}.task-card:nth-child(4){animation-delay:.12s}.task-card:active{transform:scale(.993)}.task-card.is-complete{background:var(--green-soft);border-color:transparent}.check-button{flex:0 0 44px;width:44px;height:44px;margin-top:2px;padding:0;border:2px solid #c5cdd6;border-radius:50%;background:transparent;cursor:pointer;font-size:23px;font-weight:800}.check-button.checked{color:#fff;border-color:var(--green);background:var(--green)}.task-body{flex:1;min-width:0}.task-summary{display:grid;grid-template-columns:auto 1fr auto;width:100%;padding:0;border:0;background:none;text-align:left;cursor:pointer;gap:8px 10px;align-items:center}.task-summary strong{grid-column:1 / -1;font-size:17px;line-height:1.35}.is-complete .task-summary strong{text-decoration:line-through;text-decoration-color:#506e5e73;color:var(--muted)}.skill-label{display:inline-flex;width:max-content;padding:5px 9px;border-radius:8px;color:#416b80;background:#e5f0f3;font-size:11px;font-weight:750}.skill-label.reading{color:#5d744e;background:#e9f0e2}.skill-label.writing{color:#74617d;background:#f0e8f2}.skill-label.speaking{color:#8b6247;background:#f6e9df}.skill-label.other{color:var(--muted);background:var(--surface-soft)}.task-meta{color:var(--muted);font-size:12px}.priority{justify-self:start;font-size:11px;color:var(--muted)}.priority-高{color:var(--orange)}.expand-mark{justify-self:end;min-height:30px;display:inline-flex;align-items:center;padding:0 10px;border:1px solid #ccd9df;border-radius:999px;color:#486d82;background:#edf3f5;font-size:13px;font-weight:700;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease,transform .2s ease}.task-summary:hover .expand-mark{border-color:#aebfc8;background:#e4eef1}.task-summary:active .expand-mark{transform:scale(.96)}.task-details{margin-top:16px;padding-top:15px;border-top:1px solid var(--line);animation:module-in .25s cubic-bezier(.22,.8,.3,1) both}.detail-text{color:var(--ink);line-height:1.7;white-space:pre-line}.task-details dl{display:grid;grid-template-columns:66px 1fr;gap:8px;margin:0;font-size:13px}.task-details dt{color:var(--muted)}.task-details dd{margin:0}.quick-record{display:grid;gap:10px;margin-top:16px}.quick-record label{color:var(--muted);font-size:12px}.quick-record input,.setting-row input:not(.switch){width:100%;min-height:44px;margin-top:6px;padding:10px 12px;color:var(--ink);background:var(--surface-soft);border:1px solid var(--line);border-radius:11px;outline:none}.quick-record input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #56728f1f}.empty-state{padding:40px 20px;color:var(--muted);background:var(--surface);border-radius:20px;text-align:center}.empty-state strong{color:var(--ink)}.empty-state p{margin:7px 0 0}.calendar{padding:18px}.calendar-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.calendar-heading h2{font-size:19px}.calendar-heading button{background:var(--surface-soft);font-size:25px}.week-labels,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.week-labels{margin-bottom:8px;color:var(--muted);font-size:11px;text-align:center}.calendar-cell{position:relative;display:grid;place-items:center;aspect-ratio:1;min-height:40px;padding:0;border:1px solid transparent;border-radius:12px;background:transparent;cursor:pointer;transition:transform .18s ease,background-color .22s ease,color .22s ease,border-color .22s ease}.calendar-cell:active{transform:scale(.94)}.calendar-cell i{position:absolute;bottom:5px;width:6px;height:6px;border-radius:50%;background:var(--line)}.calendar-cell.state-complete{background:var(--green-soft);border-color:#50a87838;color:#28784e;font-weight:800}.calendar-cell.state-complete i{background:var(--green)}.calendar-cell.state-partial{background:var(--yellow-soft);border-color:#dba94347;color:#8a6417;font-weight:750}.calendar-cell.state-partial i{background:var(--yellow)}.calendar-cell.state-missed{background:var(--red-soft);border-color:#d36e682e;color:#a24e49;font-weight:750}.calendar-cell.state-missed i{background:var(--red)}.calendar-cell.selected{outline:2px solid var(--navy);outline-offset:-2px}.calendar-cell.today span{text-decoration:underline;text-underline-offset:3px}.calendar-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:20px;color:var(--muted);font-size:11px}.calendar-legend span{display:flex;align-items:center;gap:6px}.calendar-legend i{width:10px;height:10px;border-radius:4px;background:var(--line)}.calendar-legend i.complete{background:var(--green)}.calendar-legend i.partial{background:var(--yellow)}.calendar-legend i.missed{background:var(--red)}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-card{display:flex;flex-direction:column;min-height:135px;padding:18px;border-radius:20px;background:var(--surface);border:1px solid var(--line);transition:transform .2s ease,box-shadow .2s ease}.stat-card.accent{color:#fff;background:var(--navy);border-color:transparent}.stat-card>span{color:var(--muted);font-size:12px}.stat-card.accent>span,.stat-card.accent small{color:#ffffffad}.stat-card strong{margin-top:auto;font-size:27px}.stat-card small{margin-top:4px;color:var(--muted)}.skill-section{margin-top:18px;padding:20px}.skill-stats{display:grid;gap:20px;margin-top:22px}.skill-stat>div:first-child{display:flex;justify-content:space-between}.skill-stat span,.skill-stat small{color:var(--muted);font-size:12px}.skill-stat .mini-track{margin:9px 0 6px;background:var(--surface-soft)}.skill-stat .mini-track span{background:var(--blue)}.trend-grid{display:grid;gap:12px;margin-top:18px}.trend-chart{padding:18px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--blue)}.trend-heading{display:flex;justify-content:space-between;color:var(--ink)}.trend-heading span{color:var(--muted);font-size:12px}.trend-chart svg{width:100%;margin-top:10px;overflow:visible}.trend-chart circle{fill:var(--surface);stroke:currentColor;stroke-width:3px}.trend-values{display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.settings-list{overflow:hidden}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:76px;padding:15px 18px;border-bottom:1px solid var(--line)}.setting-row:last-child{border-bottom:0}.setting-row>span{display:flex;flex-direction:column;gap:4px}.setting-row small{color:var(--muted);line-height:1.35}.setting-row input:not(.switch){width:145px;margin:0}.switch{appearance:none;flex:0 0 51px;width:51px;height:31px;border-radius:999px;background:#ccd3da;cursor:pointer;transition:.2s ease}.switch:after{content:"";display:block;width:27px;height:27px;margin:2px;border-radius:50%;background:#fff;box-shadow:0 2px 7px #00000026;transition:transform .2s ease}.switch:checked{background:var(--green)}.switch:checked:after{transform:translate(20px)}.data-panel,.install-tip{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:16px;padding:18px}.data-panel p,.install-tip p{margin:5px 0 0;color:var(--muted);font-size:13px;line-height:1.45}.danger-button{min-height:42px;padding:0 13px;color:#9e554e;background:var(--red-soft);border:0;border-radius:11px;cursor:pointer;white-space:nowrap}.install-tip{justify-content:flex-start}.install-icon{display:grid;place-items:center;flex:0 0 46px;height:46px;color:#fff;background:var(--navy);border-radius:14px;font-size:24px}.bottom-nav{position:fixed;z-index:10;left:12px;right:12px;bottom:max(10px,env(safe-area-inset-bottom));display:grid;grid-template-columns:repeat(4,1fr);max-width:520px;height:66px;margin:0 auto;padding:5px;border:1px solid rgba(214,220,226,.9);border-radius:22px;background:#ffffffe6;box-shadow:0 12px 40px #16253629;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}:root[data-theme=dark] .bottom-nav{background:#1a2531eb;border-color:var(--line)}.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;border-radius:16px;background:transparent;color:var(--muted);font-size:11px;cursor:pointer;transition:color .2s ease,background-color .2s ease,transform .16s ease}.bottom-nav button:active{transform:scale(.94)}.bottom-nav button span{height:22px;font-size:17px;font-weight:700}.bottom-nav button.active{color:var(--navy);background:var(--surface-soft);font-weight:700}.loading-screen{display:grid;min-height:100vh;place-content:center;justify-items:center;color:var(--muted)}.loading-screen span{width:32px;height:32px;border:3px solid var(--line);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-screen p{margin:12px 0 0}@media(min-width:760px){.page{padding:42px 34px 48px}.today-page{display:grid;grid-template-columns:minmax(270px,.78fr) minmax(430px,1.5fr);gap:26px;align-items:start}.today-overview{position:sticky;top:30px;padding:28px}.date-row{grid-template-columns:42px 1fr 42px}.task-section{margin-top:0}.stat-grid{grid-template-columns:repeat(4,1fr)}.skill-stats,.trend-grid{grid-template-columns:1fr 1fr}.calendar{padding:26px}.calendar-cell{min-height:64px}}@media(min-width:1120px){.app-shell{display:grid;grid-template-columns:210px 1fr;padding-bottom:0}.desktop-brand{position:fixed;left:0;top:0;display:flex;align-items:center;gap:12px;width:210px;padding:34px 24px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;color:#fff;background:var(--navy);border-radius:13px;font-family:Georgia,serif;font-size:25px}.desktop-brand div{display:flex;flex-direction:column;gap:3px}.desktop-brand small{color:var(--muted)}.app-content{grid-column:2}.bottom-nav{inset:112px auto auto 20px;display:flex;flex-direction:column;width:170px;max-width:none;height:auto;padding:7px;border-radius:18px;box-shadow:none}.bottom-nav button{flex-direction:row;justify-content:flex-start;min-height:48px;padding:0 16px;gap:12px;font-size:13px}.bottom-nav button span{width:21px;height:auto}}@media(max-width:430px){.page{padding-left:15px;padding-right:15px}.today-overview{padding:20px 16px}.task-card{padding:14px 12px}.task-summary{grid-template-columns:1fr auto}.expand-mark{grid-column:1 / -1;justify-self:start;margin-top:2px}.setting-row{align-items:flex-start;flex-direction:column}.setting-row input:not(.switch){width:100%}.setting-row .switch{align-self:flex-end;margin-top:-40px}.data-panel{align-items:flex-start;flex-direction:column}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
