:root{color:#16211d;font-synthesis:none;--green:#1f6f5f;--green-dark:#174f45;--gold:#f2b84b;--paper:#fff;--ink:#16211d;--muted:#6f7974;--line:#dfe5e1;--soft:#eef2ef;--danger:#b9493d;letter-spacing:0;background:#f7f8f5;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{overscroll-behavior-y:none;background:#f7f8f5;min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit;letter-spacing:0}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #1f6f5f38}.error-screen{text-align:center;flex-direction:column;justify-content:center;align-items:center;min-height:100vh;padding:32px;display:flex}.error-screen .brand-mark{margin-bottom:18px}.error-screen h1{margin:0;font-size:24px}.error-screen p{color:var(--muted);margin:10px 0 22px;font-size:14px}.app-shell{min-height:100vh;padding-bottom:84px}.topbar{z-index:40;height:68px;padding:max(10px, env(safe-area-inset-top)) 22px 10px;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#f7f8f5f0;border-bottom:1px solid #dfe5e1d9;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{align-items:center;gap:9px;font-size:19px;font-weight:750;display:flex}.brand-mark{color:#fff;background:var(--green);border-radius:8px;place-items:center;width:36px;height:36px;display:grid}.top-actions{align-items:center;gap:8px;display:flex}.icon-button{border:1px solid var(--line);color:#34423c;background:var(--paper);border-radius:8px;place-items:center;width:40px;height:40px;padding:0;display:grid}.icon-button:hover{background:#f8faf8;border-color:#bdc9c3}.add-button,.primary-button{background:var(--green);color:#fff;border:0;border-radius:8px;justify-content:center;align-items:center;gap:7px;height:42px;padding:0 16px;font-size:14px;font-weight:700;display:inline-flex}.add-button:hover,.primary-button:hover{background:var(--green-dark)}.primary-button:disabled{opacity:.42;cursor:not-allowed}.main-content{width:min(1440px,100%);margin:0 auto}.schedule-page,.content-page{padding:28px 22px 40px}.page-intro{justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:22px;display:flex}.page-intro h1{margin:0;font-size:27px;font-weight:760;line-height:1.2}.page-intro p{color:var(--muted);margin:6px 0 0;font-size:14px}.week-controls{align-items:center;gap:7px;display:flex}.today-button,.secondary-button{border:1px solid var(--line);background:var(--paper);color:#35433d;border-radius:8px;min-height:40px;padding:0 14px;font-size:14px;font-weight:650}.today-button:hover,.secondary-button:hover{border-color:#aebdb6}.next-lesson{text-align:left;border:1px solid #b8d3ca;border-left:4px solid var(--green);width:100%;min-height:94px;color:var(--ink);background:#edf6f1;border-radius:8px;grid-template-columns:minmax(150px,.75fr) minmax(170px,1fr) minmax(180px,1fr);align-items:center;gap:6px 22px;margin-bottom:18px;padding:16px 54px 16px 18px;display:grid;position:relative}.next-lesson strong{font-size:18px}.next-time,.next-meta{color:#39564c;align-items:center;gap:6px;font-size:14px;display:flex}.next-time{font-weight:700}.next-meta{color:var(--muted)}.prep-status{color:#8b5416;grid-column:2/4;font-size:13px}.prep-status.done{color:var(--green)}.next-chevron{color:#567069;position:absolute;top:calc(50% - 10px);right:18px}.calendar-frame{border:1px solid var(--line);background:var(--paper);border-radius:8px;overflow:clip;box-shadow:0 8px 28px #17342b0f}.calendar-scroll{overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y;overflow:auto clip}.calendar-grid{grid-template-columns:58px repeat(7,minmax(116px,1fr));min-width:870px;display:grid}.time-head{z-index:8;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbf9;height:62px;position:sticky;top:0;left:0}.day-head{z-index:7;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbf9;justify-content:center;align-items:center;gap:8px;height:62px;display:flex;position:sticky;top:0}.day-head span{color:var(--muted);font-size:12px}.day-head strong{border-radius:50%;place-items:center;width:30px;height:30px;font-size:15px;display:grid}.day-head.is-today strong{color:#fff;background:var(--green)}.time-axis{z-index:5;border-right:1px solid var(--line);background:#fafbf9;height:896px;position:sticky;left:0}.time-axis span{color:#8b948f;font-variant-numeric:tabular-nums;font-size:10px;position:absolute;right:9px}.day-column{border-right:1px solid var(--line);background:#fff;height:896px;position:relative}.day-column.is-today{background:#fbfdfb}.day-column>i{pointer-events:none;background:#edf0ee;height:1px;position:absolute;left:0;right:0}.now-line{z-index:3;background:#d65f50;height:2px;position:absolute;left:0;right:0}.now-line:before{content:"";background:#d65f50;border-radius:50%;width:8px;height:8px;position:absolute;top:-3px;left:-4px}.course-block{z-index:2;border:0;border-left:3px solid var(--course);text-align:left;color:#24312d;background:var(--course-soft);border-radius:6px;flex-direction:column;align-items:flex-start;gap:2px;padding:7px 7px 6px 9px;display:flex;position:absolute;left:5px;right:5px;overflow:hidden}.course-block:hover{filter:brightness(.98);box-shadow:0 4px 12px #1b342c1a}.course-block strong{text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:12px;overflow:hidden}.course-block span{color:#57645e;font-variant-numeric:tabular-nums;font-size:10px}.course-block small{text-overflow:ellipsis;white-space:nowrap;color:#6c7772;width:100%;font-size:9px;overflow:hidden}.content-page{max-width:920px;margin:0 auto}.prep-list,.student-list{border-top:1px solid var(--line)}.prep-row,.student-row{border-bottom:1px solid var(--line);align-items:center;gap:14px;min-height:82px;display:flex}.prep-row.completed{opacity:.6}.check-button{color:#fff;background:0 0;border:1.5px solid #aebbb5;border-radius:7px;flex:none;place-items:center;width:28px;height:28px;display:grid}.completed .check-button{border-color:var(--green);background:var(--green)}.prep-content{text-align:left;background:0 0;border:0;flex:1;align-items:center;gap:12px;min-width:0;padding:14px 0;display:flex}.subject-dot{border-radius:3px;flex:none;width:8px;height:36px}.prep-content span:not(.subject-dot){flex-direction:column;gap:5px;min-width:0;display:flex}.prep-content strong{font-size:15px}.prep-content small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.repeat-days{color:#6d7772;font-size:12px}.student-row{min-height:88px}.avatar{width:44px;height:44px;color:var(--green-dark);background:#dceee8;border-radius:50%;flex:none;place-items:center;font-weight:750;display:grid}.student-main{flex-direction:column;flex:1;gap:5px;min-width:130px;display:flex}.student-main strong{font-size:16px}.student-main span,.student-side span{color:var(--muted);font-size:12px}.student-side{flex-direction:column;align-items:flex-end;gap:5px;display:flex}.student-side strong{font-size:13px}.settings-page{max-width:760px}.settings-section{margin-top:28px}.settings-section h2{color:#6b7671;margin:0 0 8px;font-size:13px;font-weight:650}.setting-row{border-bottom:1px solid var(--line);align-items:center;gap:13px;min-height:76px;display:flex}.setting-icon{width:38px;height:38px;color:var(--green);background:#e5f0ec;border-radius:8px;flex:none;place-items:center;display:grid}.setting-row>span:nth-child(2){flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.setting-row strong{font-size:14px}.setting-row small{color:var(--muted);font-size:12px;line-height:1.45}.setting-value{color:#4b5b54}.setting-select{border:1px solid var(--line);color:#35433d;background:var(--paper);border-radius:8px;min-height:40px;padding:0 30px 0 11px;font-size:14px;font-weight:650}.settings-note{color:#77817c;margin-top:24px;font-size:12px;line-height:1.7}.bottom-nav{left:50%;bottom:max(12px, env(safe-area-inset-bottom));z-index:45;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:#fffffff5;border:1px solid #dce2de;border-radius:8px;grid-template-columns:repeat(4,1fr);width:min(520px,100% - 28px);height:62px;padding:6px;display:grid;position:fixed;transform:translate(-50%);box-shadow:0 10px 35px #182e2729}.bottom-nav button{color:#75807b;background:0 0;border:0;border-radius:6px;flex-direction:column;justify-content:center;align-items:center;gap:3px;font-size:10px;display:flex}.bottom-nav button.active{color:var(--green-dark);background:#e8f2ee;font-weight:700}.sheet-backdrop{z-index:70;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#111c186b;justify-content:center;align-items:flex-end;padding-top:30px;display:flex;position:fixed;inset:0}.course-sheet{width:min(720px,100%);max-height:94vh;padding:10px 24px calc(24px + env(safe-area-inset-bottom));background:var(--paper);border-radius:8px 8px 0 0;overflow-y:auto;box-shadow:0 -16px 50px #09191333}.sheet-handle{background:#ccd3cf;border-radius:2px;width:42px;height:4px;margin:0 auto 12px}.sheet-title{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px;display:flex}.sheet-title h2{margin:0;font-size:23px}.sheet-title p{color:var(--muted);margin:5px 0 0;font-size:13px}.course-sheet label{flex-direction:column;gap:7px;margin-bottom:16px;display:flex}.course-sheet label>span,.day-picker legend{color:#59665f;font-size:12px;font-weight:650}.course-sheet input,.course-sheet select,.course-sheet textarea{width:100%;min-height:44px;color:var(--ink);background:#fafbf9;border:1px solid #d8dfdb;border-radius:7px;padding:10px 12px}.course-sheet textarea{resize:vertical;min-height:86px}.course-sheet input:focus,.course-sheet select:focus,.course-sheet textarea:focus{background:#fff;border-color:#77a99b}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.day-picker{border:0;margin:0 0 16px;padding:0}.day-picker legend{margin-bottom:8px}.day-picker>div{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-picker button{color:#68736e;background:#fafbf9;border:1px solid #d8dfdb;border-radius:7px;height:38px;padding:0;font-size:13px}.day-picker button.selected{border-color:var(--green);color:#fff;background:var(--green);font-weight:700}.duration{color:var(--green);align-items:center;gap:6px;margin:-8px 0 16px;font-size:12px;display:flex}.sheet-actions{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.sheet-actions-end{justify-content:flex-end}.delete-button{min-height:42px;color:var(--danger);background:0 0;border:0;align-items:center;gap:6px;padding:0 12px;font-weight:650;display:inline-flex}.toast{z-index:100;color:#fff;white-space:nowrap;background:#24342e;border-radius:7px;max-width:calc(100% - 36px);padding:11px 16px;font-size:13px;position:fixed;bottom:92px;left:50%;transform:translate(-50%);box-shadow:0 8px 24px #101e1933}@media (width<=680px){.topbar{height:62px;padding-left:16px;padding-right:16px}.brand-mark{width:34px;height:34px}.top-actions>.icon-button{display:none}.add-button{width:40px;padding:0;font-size:0}.add-button svg{margin:0}.schedule-page,.content-page{padding:22px 14px 32px}.page-intro{align-items:center;margin-bottom:18px}.page-intro h1{font-size:24px}.week-controls{gap:5px}.week-controls .icon-button{width:36px;height:36px}.today-button{min-height:36px;padding:0 11px}.next-lesson{grid-template-columns:1fr;gap:6px;min-height:122px;padding:14px 42px 14px 15px}.next-lesson strong{font-size:17px}.prep-status{text-overflow:ellipsis;white-space:nowrap;grid-column:1;overflow:hidden}.calendar-frame{border-left:0;border-right:0;border-radius:0;margin-left:-14px;margin-right:-14px}.calendar-grid{grid-template-columns:54px repeat(7,112px);min-width:838px}.course-block{left:4px;right:4px}.prep-row{gap:10px}.repeat-days,.student-side{display:none}.student-row .icon-button{background:0 0;border:0}.course-sheet{padding-left:18px;padding-right:18px}.form-grid{gap:10px}.toast{text-overflow:ellipsis;overflow:hidden}}@media (width<=390px){.page-intro h1{font-size:22px}.form-grid{grid-template-columns:1fr;gap:0}.day-picker>div{gap:4px}.day-picker button{height:36px}}@media (prefers-reduced-motion:no-preference){.course-block,.icon-button,.bottom-nav button{transition:background-color .16s,border-color .16s,box-shadow .16s,transform .16s}.course-block:active,.bottom-nav button:active{transform:scale(.98)}}
