@import url('/fonts.css');
button.soft{color:#173f3a}
:root{font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:#203833;background:#f5f7f5;font-synthesis:none;--green:#173f3a;--muted:#71817c;--line:#e1e7e2;--lime:#dfebca;--red:#a45142;--shadow:0 12px 40px #243e3510}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #8eaf69;outline-offset:3px}a{color:#315f54;text-underline-offset:4px}button{border:1px solid var(--line);border-radius:10px;padding:10px 15px;background:white;color:inherit;font-size:13px;font-weight:600;transition:background .15s}button:hover{background:#edf2e9}button.primary{background:var(--green);color:white;border-color:var(--green)}button.primary:hover{background:#29574d}button.soft{background:var(--lime);border-color:var(--lime)}button.danger{color:var(--red)}button.text{border:0;background:transparent;padding:7px}input,select,textarea{width:100%;border:1px solid #d8e0d9;background:#fff;border-radius:9px;padding:11px 12px;color:inherit;font-size:14px}textarea{resize:vertical;min-height:90px}label{display:block;font-size:12px;font-weight:600;color:#53685d}label>input,label>select,label>textarea{margin-top:7px}small,.muted{color:var(--muted);font-size:12px;line-height:1.6}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:grid;gap:16px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.shell{display:grid;grid-template-columns:224px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:32px 18px 20px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:10}.brand{display:flex;align-items:center;gap:12px;padding:0 12px;margin-bottom:44px}.brand img{width:37px;height:37px}.brand strong{font-size:19px;letter-spacing:1px}.brand small{display:block;letter-spacing:2px;font-size:9px;margin-top:3px}.nav{display:grid;gap:7px}.nav button{display:flex;align-items:center;gap:13px;text-align:left;padding:14px 16px;border:0;color:#687a70;background:transparent;font-weight:500;font-size:14px}.nav button.active{background:#eaf0e7;color:var(--green);font-weight:650}.nav svg,.icon{width:19px;height:19px;flex:none;stroke:currentColor;fill:none;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.nav .badge{margin-left:auto}.sidebar-bottom{margin-top:auto;padding:18px 12px 0;border-top:1px solid var(--line)}.status-dot{display:inline-block;width:7px;height:7px;background:#91ad76;border-radius:99px;margin-right:6px}.status-dot.bad{background:#c4865d}.workspace{padding:30px 46px 50px;max-width:1550px;width:100%;margin:auto;align-self:start}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;gap:16px}.topbar .date{font-size:12px;letter-spacing:1px}.search{position:relative;width:250px}.search input{border:0;background:#eaf0e9;padding:10px 15px}.page-head{margin:0 0 25px}.eyebrow{font-size:10px;letter-spacing:2.2px;text-transform:uppercase;color:#6d8375;font-weight:650}.page-head h1{font-size:29px;letter-spacing:-.6px;margin:8px 0}.page-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.8}.hero{background:var(--green);border-radius:18px;padding:31px 34px;color:#f7fbf3;display:flex;justify-content:space-between;gap:24px;margin-bottom:25px;overflow:hidden;position:relative}.hero h2{font-size:26px;line-height:1.6;margin:10px 0 13px;font-weight:550;letter-spacing:.3px}.hero p{font-size:12px;line-height:1.8;color:#b8cbc0;margin:0 0 20px;max-width:460px}.hero .eyebrow{color:#b5c89e}.hero .orbital{width:190px;height:190px;align-self:center;position:relative;flex:none;display:grid;place-items:center;border:1px solid #6b897352;border-radius:50%;margin:0 10px}.orbital:before,.orbital:after{content:'';position:absolute;border:1px solid #789a6745;border-radius:50%;inset:23px}.orbital:after{inset:46px}.orbital strong{font-size:44px;font-weight:450;z-index:1;letter-spacing:-2px}.orbital span{display:block;font-size:10px;letter-spacing:2px;text-align:center;color:#a5bd9c}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:30px}.stat{background:#fff;border:1px solid var(--line);border-radius:12px;padding:19px 21px}.stat strong{font-size:30px;font-weight:550;display:block;margin:8px 0 0}.stat small{font-size:11px}.section-title{display:flex;align-items:center;justify-content:space-between;margin:26px 0 14px}.section-title h2{font-size:16px;letter-spacing:.3px;margin:0}.section-title span{font-size:12px;color:var(--muted)}.panel{background:white;border:1px solid var(--line);border-radius:14px;padding:22px}.empty{text-align:center;padding:44px 25px;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:14px}.empty .empty-icon{display:grid;place-items:center;width:46px;height:46px;margin:0 auto 16px;background:#edf2e8;border-radius:14px;color:#718b65}.empty h3{font-size:15px;color:#375043;margin:0 0 10px}.empty p{font-size:13px;margin:0 auto 20px;max-width:430px;line-height:1.9}.task-list{display:grid;gap:10px}.task{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;background:#fff;border:1px solid var(--line);border-radius:12px}.task .check{width:21px;height:21px;padding:0;margin-top:2px;border-radius:7px;flex:none}.task-main{flex:1;min-width:0}.task-title{background:none;border:0;padding:0;text-align:left;font-size:14px;font-weight:650;line-height:1.5}.task-meta{display:flex;gap:9px;flex-wrap:wrap;margin-top:8px;font-size:11px;color:var(--muted)}.pill,.badge{font-size:10px;border-radius:5px;padding:3px 7px;background:#edf2e8;color:#52714c;font-weight:550;white-space:nowrap}.pill.red{color:#aa5847;background:#f9eee8}.pill.gray{color:#7b8580;background:#f0f2f0}.due{text-align:right;min-width:100px;font-size:12px;padding-top:3px;line-height:1.6}.due strong{font-weight:600}.due small{display:block}.due.overdue{color:var(--red)}.filters{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.filters select{width:auto;max-width:220px;font-size:12px;background:#fff}.tabs{display:flex;gap:5px;flex-wrap:wrap;padding:5px;background:#e8eee7;border-radius:10px;width:fit-content;margin-bottom:22px}.tabs button{border:0;background:transparent;color:#6c7e70;padding:8px 16px;font-size:12px}.tabs button.active{background:white;color:var(--green);box-shadow:0 2px 5px #2233220a}.resource-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.resource{display:flex;flex-direction:column;gap:10px}.resource h3{font-size:16px;margin:0;line-height:1.65}.resource p{font-size:12px;color:#728073;line-height:1.8;margin:0}.resource .footer{margin-top:auto;padding-top:14px;display:flex;gap:8px;flex-wrap:wrap}.resource .place{font-size:11px;color:#637b65;line-height:1.7}.resource .code{font-size:10px;letter-spacing:1.4px;color:#8e9c8e}.note{padding:12px 15px;border-radius:9px;background:#eef3e8;color:#617357;font-size:12px;line-height:1.8}.note.warn{background:#fcf2e9;color:#986d42}.error{color:#ad5040;font-size:13px;line-height:1.8}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.calendar-weekday{text-align:center;font-size:11px;padding:14px;background:#edf2e9}.calendar-cell{min-height:110px;padding:11px 9px;border-top:1px solid var(--line);border-right:1px solid var(--line)}.calendar-cell .num{font-size:12px;color:#677a6b;margin-bottom:9px}.calendar-cell.today{background:#f1f6e9}.calendar-cell.outside{opacity:.4}.calendar-event{display:block;width:100%;border:0;border-left:2px solid #92ae75;background:#edf3e7;border-radius:3px;font-size:10px;text-align:left;padding:5px;margin:3px 0;line-height:1.5;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.login-shell{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.login-art{background:#173f3a;padding:8vw;display:flex;flex-direction:column;justify-content:center;color:#ecf3e6}.login-art .brand{padding:0}.login-art h1{font-size:42px;line-height:1.6;font-weight:500}.login-art p{color:#b9cbb7;font-size:14px;line-height:2}.login-form{display:grid;place-items:center;padding:36px}.login-card{width:100%;max-width:380px}.login-card h2{font-size:26px;margin:0 0 8px}.login-card form{margin-top:28px}.boot{padding:20vh 10vw;font-size:30px;color:var(--green);line-height:2}.boot span{font-size:14px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 22px;border-radius:12px;background:#213e35;color:white;max-width:90vw;font-size:13px;box-shadow:var(--shadow);z-index:200;display:none}dialog{width:min(800px,calc(100vw - 30px));max-height:90vh;max-height:90dvh;border:0;border-radius:16px;padding:0;background:#f9fbf7;color:inherit;box-shadow:0 30px 120px #102d3350}dialog::backdrop{background:#142e2666;backdrop-filter:blur(3px)}.dialog-head{padding:22px 26px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;background:#fff;position:sticky;top:0;z-index:1}.dialog-head h2{font-size:18px;margin:0}.dialog-body{padding:24px 26px}.dialog-footer{display:flex;justify-content:space-between;gap:12px;padding:18px 26px;border-top:1px solid var(--line);background:#fff;position:sticky;bottom:0}.node-editor{padding:16px;border:1px solid var(--line);border-radius:10px;background:white;margin:12px 0;display:grid;gap:12px}.node-editor .grid3{gap:10px}.notice-preview{white-space:pre-wrap;font-size:12px;line-height:1.85;max-height:240px;overflow:auto;background:#f0f4ec;padding:15px;border-radius:8px}.screenshot-preview{max-width:100%;max-height:250px;object-fit:contain}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid h3{font-size:15px;margin:0 0 16px}.category-row{display:flex;justify-content:space-between;align-items:center;gap:8px;border-bottom:1px solid #edf0eb;padding:9px 0;font-size:13px}.radio-inline{display:flex;gap:8px;align-items:center;font-size:12px}.radio-inline input{width:auto}.detail-value{font-size:13px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere}.detail-label{font-size:11px;color:var(--muted);margin:16px 0 4px}.mobile-bar{display:none}button .icon{vertical-align:middle;margin-right:5px}.divider{height:1px;background:var(--line);margin:18px 0}.select-row{display:flex;align-items:center;gap:10px}.select-row input{width:18px;height:18px}.link-list{display:flex;gap:12px;flex-wrap:wrap;font-size:12px}
@media(min-width:1500px){.workspace{padding:35px 65px}}@media(max-width:1100px){.workspace{padding:25px}.shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding:25px 12px}.hero .orbital{width:140px;height:140px}.resource-grid,.settings-grid{grid-template-columns:1fr}.calendar-cell{min-height:90px}}@media(max-width:760px){.shell{display:block}.sidebar{position:fixed;bottom:0;top:auto;left:0;width:100%;height:auto;border-right:0;border-top:1px solid var(--line);padding:5px 5px calc(5px + env(safe-area-inset-bottom));background:#fffffff2;backdrop-filter:blur(8px)}.sidebar .brand,.sidebar-bottom{display:none}.nav{display:flex;justify-content:space-around;gap:0}.nav button{flex-direction:column;gap:4px;padding:7px 6px;font-size:10px;border-radius:8px;min-width:40px}.nav svg{width:19px;height:19px}.nav .badge{display:none}.workspace{padding:20px 18px 100px}.topbar{margin-bottom:23px}.topbar .date{font-size:10px}.search{display:none}.page-head h1{font-size:25px}.hero{padding:24px;margin-bottom:20px}.hero h2{font-size:21px}.hero .orbital{display:none}.stats{grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:22px}.stat{padding:14px 16px}.stat strong{font-size:26px}.task{padding:15px 13px;gap:9px}.due{min-width:65px;font-size:11px}.task-title{font-size:13px}.task-meta{gap:5px}.grid2,.grid3{grid-template-columns:1fr}.login-shell{grid-template-columns:1fr}.login-art{display:none}.login-form{padding:30px 22px}.login-card{max-width:400px}.calendar-cell{min-height:78px;padding:7px 3px}.calendar-event{font-size:9px;padding:3px}.calendar-weekday{font-size:10px}.dialog-head,.dialog-body,.dialog-footer{padding:18px}.dialog-footer{flex-wrap:wrap}.dialog-footer button{flex:1}.node-editor .grid3{grid-template-columns:1fr 1fr}.node-editor label{font-size:11px}.settings-grid{grid-template-columns:1fr}.panel{padding:18px}.hero button{padding:10px 13px}button{min-height:38px}.section-title{gap:10px}.filters select{max-width:100%;flex:1}.resource-grid{grid-template-columns:1fr}.topbar button{padding:9px 12px;font-size:12px}}
