:root{--bg:#f6f7f4;--paper:#fff;--ink:#243b3a;--muted:#72807d;--line:#e2e8e3;--green:#267365;--green-light:#e5f1ea;--blue:#315b77;--amber:#aa7834;--amber-light:#fcf2e2;--danger:#9d494b;--shadow:0 12px 30px rgba(38,64,52,.055);font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.55}
*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}a{color:var(--green)}h1,h2,h3,p{margin:0}h1{font-size:27px;line-height:1.25;letter-spacing:-.5px}h2{font-size:21px;line-height:1.35}h3{font-size:16px}small,.muted{color:var(--muted)}.loading-screen{padding:20vh 20px;text-align:center;color:var(--muted)}
.app-layout{display:grid;grid-template-columns:242px minmax(0,1fr);min-height:100vh;max-width:1600px;margin:auto}.sidebar{background:#fff;box-shadow:1px 0 #e3e9e4;padding:30px 18px;display:flex;flex-direction:column;gap:25px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:10px;padding:0 12px}.brand-icon{width:40px;height:40px;border-radius:13px;background:var(--green);color:#fff;display:grid;place-items:center;font-size:20px;font-weight:700}.brand span{font-weight:800;font-size:22px;letter-spacing:-.8px}.brand small{display:block;font-size:11px;font-weight:500;letter-spacing:.2px}.nav{display:grid;gap:5px}.nav-btn{border:0;background:transparent;color:#566965;width:100%;text-align:left;display:flex;gap:12px;align-items:center;padding:13px 15px;border-radius:12px;font-weight:600}.nav-btn.active,.nav-btn:hover{background:var(--green-light);color:var(--green)}.nav-emoji{font-size:19px;min-width:23px;text-align:center}.nav-footer{margin-top:auto;padding:14px;border:1px solid var(--line);border-radius:14px;background:#f8faf8;font-size:12px;color:var(--muted)}.main{padding:30px 38px 70px;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:26px}.eyebrow{color:#477f70;font-size:11px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase}.top-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.page-head{margin-bottom:22px;display:flex;justify-content:space-between;align-items:flex-start;gap:15px}.page-head p{margin-top:7px;color:var(--muted)}.badge,.pill{display:inline-flex;align-items:center;gap:5px;border-radius:20px;background:#eef3ef;color:#536c62;padding:5px 10px;font-size:12px;font-weight:700}.badge.green{background:#e4f3ea;color:#24745a}.badge.amber{background:#fbf0dc;color:#986c28}.badge.blue{background:#e5eff5;color:#315b77}.badge.red{background:#fff0ed;color:#9d494b}.card{background:var(--paper);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.pad{padding:23px}.stack{display:grid;gap:17px}.row{display:flex;align-items:center;gap:12px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.grid{display:grid;gap:16px}.two{grid-template-columns:repeat(2,minmax(0,1fr))}.three{grid-template-columns:repeat(3,minmax(0,1fr))}.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stat{padding:20px}.stat .num{font-size:28px;font-weight:800;letter-spacing:-1px;margin-top:6px}.stat small{font-size:12px}.hero{background:linear-gradient(115deg,#1d645a,#2b8176 68%,#4e9886);color:#fff;position:relative;overflow:hidden;border-radius:20px;padding:28px 30px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:20px;align-items:center}.hero:after{content:'';position:absolute;width:210px;height:210px;border:1px solid rgba(255,255,255,.2);border-radius:50%;right:-40px;top:-100px}.hero .eyebrow{color:#c1e9dc}.hero p{color:#d8eee5;margin:8px 0 20px;max-width:550px}.hero h1{max-width:560px}.hero-side{text-align:right;z-index:1}.hero-side strong{display:block;font-size:38px;line-height:1}.hero-side small{color:#d1ebe2}.btn{border:1px solid #ccdcd4;background:#fff;color:var(--green);padding:10px 14px;border-radius:11px;font-size:13px;font-weight:700;transition:background .15s;white-space:normal}.btn:hover{background:#f0f8f3}.btn.primary{background:var(--green);border-color:var(--green);color:#fff}.btn.primary:hover{background:#1f6256}.btn.light{background:#fff;color:#1c5b50;border-color:#fff}.btn.dark{background:#e2f4eb;color:#145b4e;border-color:#e2f4eb}.btn.danger{color:var(--danger);border-color:#f0d9d7}.btn.small{padding:7px 10px;font-size:12px}.btn:focus-visible,.nav-btn:focus-visible{outline:3px solid #f1b963;outline-offset:2px}.section-title{font-size:17px;font-weight:800}.section-sub{font-size:13px;color:var(--muted);margin-top:4px}.divider{height:1px;background:var(--line);margin:16px 0}.meter{height:9px;border-radius:20px;background:#e8f0e9;overflow:hidden}.meter>span{display:block;height:100%;background:linear-gradient(90deg,#4f9c87,#277667);border-radius:20px;transition:width .2s}.info-list{display:grid;gap:11px}.info-row{display:flex;gap:12px;align-items:flex-start}.info-dot{width:8px;height:8px;margin-top:8px;background:#8baea1;border-radius:50%;flex-shrink:0}.info-row strong{font-size:14px}.info-row p{font-size:12px;color:var(--muted);margin-top:2px}.lesson-list{display:grid;gap:9px}.lesson{border:1px solid var(--line);border-radius:12px;padding:13px 15px;display:flex;gap:12px;justify-content:space-between;align-items:center}.lesson:hover{background:#fcfdfb}.lesson .prefix{width:48px;height:44px;border-radius:10px;background:#edf3ef;color:#538276;display:grid;place-items:center;font-size:12px;font-weight:800;flex-shrink:0}.lesson .prefix.done{background:#e0f1e5;color:#15734b}.lesson .prefix.verified{background:#e7eef5;color:var(--blue)}.lesson-content{flex:1;min-width:0}.lesson-content strong{display:block;font-size:14px}.lesson-content p{color:var(--muted);font-size:12px;margin:3px 0 0}.lesson-right{display:flex;align-items:center;gap:8px}.week-picker{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.field,.textarea{border:1px solid #d0dcd4;background:white;border-radius:10px;padding:11px 12px;width:100%;color:var(--ink);font-size:14px;outline:none}.field:focus,.textarea:focus{border-color:#5fa48e;box-shadow:0 0 0 3px #dcefe5}.textarea{resize:vertical;min-height:88px}.inputlabel{font-size:12px;font-weight:800;display:block;margin-bottom:6px}.form-group{min-width:0}.form-help{color:var(--muted);font-size:12px;margin-top:5px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.kpi{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--line);font-size:13px}.kpi:last-child{border:0}.kpi strong{font-size:17px}.timeline{display:grid;gap:9px}.timeline-line{padding:12px 0;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start;justify-content:space-between}.timeline-line:last-child{border:0}.timeline-line strong{font-size:13px}.timeline-line p{font-size:12px;color:var(--muted);margin-top:4px}.callout{background:#f4faf5;border:1px solid #d6e9d9;padding:14px 16px;border-radius:12px;font-size:13px}.callout.warning{background:var(--amber-light);border-color:#f0dfc0}.callout.blue{background:#eff6fa;border-color:#dae7f3}.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.cal-head{font-size:12px;font-weight:700;color:var(--muted);text-align:center}.cal-day{min-height:90px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff;text-align:left;display:flex;flex-direction:column;gap:5px;color:var(--ink)}.cal-day:hover{border-color:#88bda3}.cal-day.outside{opacity:.25}.cal-day.today{border:2px solid var(--green)}.cal-day.rest{background:#fbf6ec}.cal-number{font-size:13px;font-weight:800}.cal-label{font-size:10px;line-height:1.3;white-space:normal}.cal-label.done{color:#1d8461}.cal-label.skip{color:#315b77}.cal-label.rest{color:#aa7834}.modal-wrap{position:fixed;inset:0;z-index:100;background:rgba(13,35,27,.54);padding:22px;display:flex;justify-content:center;align-items:center}.modal{background:#fff;border-radius:19px;max-width:680px;width:100%;max-height:min(88vh,900px);overflow-y:auto;padding:24px;box-shadow:0 24px 80px rgba(0,0,0,.22)}.modal-head{display:flex;justify-content:space-between;align-items:start;gap:10px;margin-bottom:14px}.modal-head .btn{padding:5px 10px}.modal p{color:var(--muted);font-size:13px}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;flex-wrap:wrap}.steps{background:#f4f7f3;border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;gap:8px}.steps .step{font-size:13px}.steps .step b{color:#3d796a}.countline{font-size:12px;color:var(--muted)}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(circle at top left,#e0eee7,#f8faf6 46%,#eff3ef)}.auth-card{max-width:480px;width:100%;padding:36px}.auth-card h1{margin-top:10px}.auth-card p{color:var(--muted);margin:10px 0 22px}.auth-card form{display:grid;gap:14px}.auth-brand{display:flex;align-items:center;gap:10px}.auth-error{color:var(--danger);font-size:13px;margin-bottom:5px}.tiny{font-size:11px;color:var(--muted)}.empty{border:1px dashed #cddcd3;border-radius:12px;padding:25px;color:var(--muted);font-size:13px;text-align:center}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table td,.data-table th{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.data-table th{font-size:12px;color:var(--muted)}.bottom-nav{display:none}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(15px);padding:12px 18px;border-radius:12px;background:#203e37;color:#fff;z-index:200;box-shadow:0 8px 32px rgba(0,0,0,.16);opacity:0;transition:.2s;pointer-events:none;max-width:90vw;font-size:13px}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
@media(max-width:1050px){.main{padding:25px}.four{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-layout{display:block}.sidebar{display:none}.main{padding:20px 14px 100px}.bottom-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;background:#fff;padding:8px 4px max(8px,env(safe-area-inset-bottom));box-shadow:0 -4px 22px rgba(17,50,35,.1);z-index:35}.bottom-nav .nav-btn{display:grid;justify-items:center;gap:0;padding:7px 1px;font-size:10px;border-radius:9px}.bottom-nav .nav-emoji{font-size:21px}.hero{grid-template-columns:1fr;padding:23px}.hero-side{text-align:left;display:flex;align-items:baseline;gap:10px}.hero-side strong{font-size:26px}.three{grid-template-columns:repeat(2,minmax(0,1fr))}.two{grid-template-columns:1fr}.page-head{display:block}.page-head .row{margin-top:12px}.topbar{margin-bottom:16px}.stat .num{font-size:24px}.calendar{gap:3px}.cal-day{min-height:72px;padding:5px 4px;border-radius:8px}.cal-number{font-size:11px}.cal-label{font-size:9px}.modal-wrap{padding:8px;align-items:flex-end}.modal{max-height:93vh;border-radius:18px 18px 0 0;padding:20px 16px;padding-bottom:max(22px,env(safe-area-inset-bottom))}.form-grid{grid-template-columns:1fr}.lesson{padding:11px;gap:8px}.lesson .prefix{width:38px}.lesson-right{display:grid;justify-items:end}.lesson-right .badge{font-size:10px}.week-picker .field{max-width:190px}.auth-card{padding:22px}.auth-wrap{padding:14px}h1{font-size:24px}}
@media(max-width:380px){.four,.three{grid-template-columns:1fr 1fr}.stat{padding:13px}.lesson-content p{display:none}.cal-day{min-height:63px}.cal-label{font-size:8px}}
