:root{--ink:#17201d;--muted:#718079;--line:#e6ebe8;--green:#175c45;--lime:#d9f36c;--bg:#f5f7f4;--white:#fff}*{box-sizing:border-box}body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg);display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:254px;background:#102a22;color:#fff;padding:24px 16px;display:flex;flex-direction:column;z-index:2}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 24px}.brand .logo{width:39px;height:39px;display:grid;place-items:center;background:var(--lime);color:#163b2e;border-radius:11px;font-weight:900}.brand b{display:block;font-size:15px}.brand span{display:block;color:#9bb0a9;font-size:11px;margin-top:4px}.nav{width:100%;border:0;background:none;color:#a9bbb5;text-align:left;padding:12px 14px;border-radius:10px;font-size:14px;margin:2px 0;cursor:pointer}.nav span{margin-left:9px}.nav.active,.nav:hover{background:#1d4034;color:#fff}.label{font-size:11px;color:#708b82;letter-spacing:1px;margin:25px 13px 10px}.modules{overflow:auto}.module-link{display:block;color:#a9bbb5;padding:8px 14px;font-size:13px;cursor:pointer;border-radius:8px}.module-link:hover{color:#fff;background:#18392f}.user{margin-top:auto;border-top:1px solid #27443b;padding:18px 8px 0;display:flex;align-items:center;gap:10px}.avatar{width:34px;height:34px;background:#d5eb76;color:#1c3d32;border-radius:50%;display:grid;place-items:center;font-weight:700}.user b,.user small{display:block;font-size:12px}.user small{color:#78938a;margin-top:3px}.user i{margin-left:auto;color:#78938a}main{margin-left:254px;width:calc(100% - 254px)}header{height:82px;background:rgba(255,255,255,.9);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px;position:sticky;top:0;z-index:1;backdrop-filter:blur(10px)}h1{font-size:19px;margin:0}header p{margin:6px 0 0;font-size:12px;color:var(--muted)}.nas{display:flex;gap:8px;align-items:center;padding:9px 13px;background:#eff8f0;border:1px solid #d8eadb;border-radius:20px;color:#347052;font-size:12px}.nas i{width:7px;height:7px;background:#5ebd70;border-radius:50%;box-shadow:0 0 0 3px #d9efdd}.page{display:none;padding:30px 38px 60px;max-width:1440px;margin:auto}.page.active{display:block}.hero{min-height:204px;border-radius:22px;background:linear-gradient(115deg,#173c30,#245a44);color:#fff;padding:38px 44px;display:flex;align-items:center;justify-content:space-between;overflow:hidden}.eyebrow{color:var(--lime);font-size:11px;letter-spacing:2px}.hero h2{font-size:29px;margin:13px 0 10px}.hero p{color:#b7ccc5;margin:0;max-width:540px;font-size:14px}.hero-art{position:relative;width:280px;height:160px}.hero-art span{position:absolute;border-radius:22px;transform:rotate(13deg);box-shadow:0 15px 40px #071b1466}.hero-art span:nth-child(1){width:105px;height:135px;background:#efd6b3;left:15px;top:24px}.hero-art span:nth-child(2){width:115px;height:145px;background:#92a4d0;left:92px;top:3px}.hero-art span:nth-child(3){width:95px;height:125px;background:var(--lime);left:175px;top:34px}.section-head{display:flex;align-items:center;justify-content:space-between;margin:29px 0 17px}.section-head h3{margin:0;font-size:17px}.section-head p{margin:5px 0 0;color:var(--muted);font-size:12px}.search{border:1px solid var(--line);background:#fff;border-radius:10px;padding:9px 12px;color:#8d9994}.search input{border:0;outline:0;width:140px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:14px}.card{background:#fff;border:1px solid var(--line);border-radius:15px;padding:19px;cursor:pointer;transition:.2s;min-height:132px}.card:hover{transform:translateY(-3px);box-shadow:0 12px 30px #18382d14;border-color:#bdd1c8}.tool-icon{display:grid;place-items:center;width:39px;height:39px;background:#eff6e1;border-radius:10px;font-size:18px}.card h4{margin:16px 0 5px;font-size:14px}.card p{font-size:11px;color:var(--muted);margin:0}.back{border:0;background:none;color:var(--green);cursor:pointer;margin:0 0 25px}.tool-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px}.tool-layout>div,.tip,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px}.tool-title{display:flex;gap:14px;align-items:center}.tool-title h2{margin:0;font-size:21px}.tool-title p{margin:5px 0 0;color:var(--muted);font-size:12px}.dropzone{border:1.5px dashed #b7c8c0;border-radius:15px;padding:45px;text-align:center;margin:25px 0 15px;cursor:pointer;background:#fafcf9}.dropzone.drag{border-color:var(--green);background:#f2f8ef}.dropzone h3{font-size:14px}.dropzone p{color:var(--muted);font-size:11px}.upload-icon{font-size:26px;color:var(--green)}.dropzone input{display:none}.selected{font-size:12px;color:var(--muted)}.field{display:block;font-size:12px;margin-top:20px}.field textarea{display:block;width:100%;min-height:80px;border:1px solid var(--line);border-radius:10px;padding:12px;margin-top:8px;resize:vertical}.primary,.secondary{border:0;border-radius:10px;padding:12px 20px;cursor:pointer}.primary{background:var(--green);color:#fff;margin-top:18px}.secondary{background:#edf3ef;color:var(--green)}.tip{align-self:start}.tip h4{margin-top:0}.tip code{display:block;background:#f3f6f3;padding:13px;border-radius:8px;font-size:11px;word-break:break-all}.tip p{color:var(--muted);font-size:12px;line-height:1.7}.task-row,.file-row{display:grid;grid-template-columns:1.5fr 1fr 1fr .8fr;gap:15px;align-items:center;padding:15px 5px;border-bottom:1px solid var(--line);font-size:12px}.task-row b{font-size:13px}.status{width:max-content;padding:5px 9px;border-radius:20px;background:#fff5d6;color:#936c00}.status.completed{background:#eaf7ed;color:#2f7842}.status.failed{background:#fae9e8;color:#a33}.file-list a{color:var(--green);text-decoration:none}.toast{position:fixed;right:28px;bottom:28px;padding:13px 18px;background:#163c30;color:#fff;border-radius:10px;opacity:0;transform:translateY(10px);transition:.2s;pointer-events:none}.toast.show{opacity:1;transform:none}@media(max-width:800px){.sidebar{width:72px;padding:20px 10px}.brand>div:last-child,.nav span,.label,.modules,.user div,.user i{display:none}.brand{padding:0 6px 24px}.nav{text-align:center;font-size:18px}main{margin-left:72px;width:calc(100% - 72px)}header,.page{padding-left:20px;padding-right:20px}.hero-art{display:none}.tool-layout{grid-template-columns:1fr}.task-row,.file-row{grid-template-columns:1fr 1fr}.hero{padding:28px}.grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}
/* Team login */
.login-screen{position:fixed;inset:0;z-index:1000;display:none;place-items:center;padding:24px;background:#f2f4f7;color:#17202a}
.login-screen.show{display:grid}
.login-screen:before{content:"";position:absolute;inset:0 0 auto;height:34%;background:#153d47}
.login-panel{position:relative;width:min(400px,100%);padding:36px;background:#fff;border:1px solid #dce2e7;border-radius:8px;box-shadow:0 22px 60px rgba(21,61,71,.18)}
.login-mark{display:grid;place-items:center;width:48px;height:48px;margin-bottom:24px;border-radius:8px;background:#ef5b3f;color:#fff;font-size:24px;font-weight:800}
.login-heading span{color:#197b83;font-size:11px;font-weight:800}
.login-heading h1{margin:7px 0 4px;font-size:26px}
.login-heading p{margin:0 0 26px;color:#68747f}
.login-panel label{display:grid;gap:8px;margin:14px 0;color:#34424d;font-size:13px;font-weight:700}
.login-panel input{box-sizing:border-box;width:100%;height:44px;padding:0 12px;border:1px solid #ccd5dc;border-radius:6px;font:inherit;outline:none}
.login-panel input:focus{border-color:#197b83;box-shadow:0 0 0 3px rgba(25,123,131,.12)}
.login-panel .primary{width:100%;height:44px;margin-top:8px}
.login-panel>small{display:block;margin-top:18px;color:#84909a;text-align:center}
.login-error{min-height:18px;margin:0;color:#c83e31;font-size:12px}
.login-required>aside,.login-required>main,.login-required>.result-modal,.login-required>.toast{visibility:hidden}
.logout{display:grid;place-items:center;width:32px;height:32px;margin-left:auto;border:0;border-radius:6px;background:transparent;color:#74808a;font-size:19px;cursor:pointer}
.logout:hover{background:#edf1f3;color:#1f6d75}
