:root{--ink:#14211d;--muted:#708079;--line:#dfe7e2;--paper:#f4f7f5;--panel:#fff;--green:#173f32;--green2:#22624b;--lime:#dcfa6b;--red:#b9473d;--shadow:0 16px 48px rgba(20,47,38,.09);font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:var(--paper);font-size:16px}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button,a{touch-action:manipulation}.app-shell{display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}.sidebar{position:fixed;top:0;left:0;width:228px;height:100vh;height:100dvh;background:var(--green);color:#fff;padding:24px 16px;display:flex;flex-direction:column;z-index:10;overflow-y:auto}.logo{display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none;font-weight:800;letter-spacing:.04em}.brand-mark{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;background:var(--lime);color:var(--green);font-weight:900;letter-spacing:-.06em}.logo small{display:block;margin-top:3px;color:#9fbbb0;font-size:.72rem;font-weight:500;letter-spacing:.07em}.sidebar nav{display:grid;gap:6px;margin-top:38px}.sidebar nav a{display:flex;align-items:center;justify-content:space-between;padding:12px 13px;border-radius:11px;color:#bdd0c9;text-decoration:none;font-size:.89rem;font-weight:600}.sidebar nav a:hover,.sidebar nav a.active{background:#fff;color:var(--green)}.sidebar nav a.disabled{opacity:.7}.sidebar nav em{font-style:normal;font-size:.68rem;background:#365a4d;padding:2px 7px;border-radius:999px;color:#d8e6e0}.sidebar nav a.active em{background:#e7ece9;color:#65766f}.sidebar-user{margin-top:auto;padding:15px 4px 0;border-top:1px solid rgba(255,255,255,.12);display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#2e5b4c}.sidebar-user strong,.sidebar-user small{display:block}.sidebar-user small{font-size:.7rem;color:#9db7ad;margin-top:2px}.sidebar-user button{border:0;background:none;color:#a9c0b7;font-size:.73rem;cursor:pointer}.main{grid-column:2;padding:30px clamp(22px,3.2vw,48px) 60px;max-width:1440px;width:100%;margin:0 auto}.topbar{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:24px}.topbar h1{margin:3px 0 0;font-size:clamp(1.65rem,2.5vw,2.2rem);letter-spacing:-.04em}.eyebrow{margin:0;text-transform:uppercase;letter-spacing:.14em;font-weight:800;font-size:.7rem;color:#769088}.today{font-size:.82rem;color:var(--muted)}.menu-button{display:none}.metric-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}.metric{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:20px 22px;box-shadow:0 5px 20px rgba(30,60,49,.035)}.metric.accent{background:var(--green);color:#fff;border-color:var(--green)}.metric span,.metric small,.metric strong{display:block}.metric span{font-size:.82rem;color:var(--muted);font-weight:600}.metric.accent span,.metric.accent small{color:#bcd1c9}.metric strong{font-size:2.35rem;line-height:1;margin:14px 0 9px;letter-spacing:-.06em}.metric.accent strong{color:var(--lime)}.metric small{font-size:.73rem;color:#91a098}.panel,.narrow-panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;box-shadow:0 5px 20px rgba(30,60,49,.035);overflow:hidden}.narrow-panel{max-width:570px;padding:28px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:19px 22px}.section-heading h2{font-size:1.1rem;margin:4px 0 0}.text-link,.source-link{color:var(--green2);font-size:.83rem;font-weight:650;text-decoration:none}.muted{color:var(--muted);font-size:.84rem}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;min-width:720px}th,td{padding:13px 22px;text-align:left;border-top:1px solid #ebf0ed;font-size:.83rem}th{background:#f9fbfa;color:#75847e;font-size:.72rem;letter-spacing:.04em;text-transform:uppercase}td strong,td small{display:block}td small{color:#91a098;font-size:.71rem;margin-top:3px}.number{font-variant-numeric:tabular-nums;font-weight:750}.bar{width:min(120px,100%);height:7px;border-radius:99px;background:#e9efec;overflow:hidden}.bar i{display:block;height:100%;min-width:3px;background:var(--green2);border-radius:inherit}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}.search{display:flex;gap:8px;max-width:470px;flex:1}.search input{flex:1}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:9px 14px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}.btn:hover{border-color:#a8bbb3}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.primary:hover{background:var(--green2)}.btn.disabled{opacity:.45;pointer-events:none}input,select{width:100%;border:1px solid #ced9d3;border-radius:11px;background:#fff;padding:11px 12px;color:var(--ink);outline:0}input:focus,select:focus{border-color:var(--green2);box-shadow:0 0 0 3px rgba(34,98,75,.11)}label{display:grid;gap:7px;color:#465650;font-weight:650;font-size:.84rem}label small{font-weight:400;color:#829089}.person-pill,.tag,.status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#edf3f0;color:#3f6255;font-size:.74rem;font-weight:700}.status.disabled{background:#f4eeee;color:#9a5a54}.status.active{background:#e7f5ed;color:#27704d}.actions{text-align:right;white-space:nowrap}.actions form{display:inline}.icon-action{border:0;background:none;color:#416056;font-size:.8rem;text-decoration:none;cursor:pointer;padding:5px}.icon-action.danger{color:var(--red)}.empty{text-align:center;color:#687a72;padding:45px}.empty small{display:block;margin-top:6px}.pager{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 22px;border-top:1px solid var(--line);color:var(--muted);font-size:.82rem}.notice{max-width:800px;margin:0 0 18px;padding:12px 15px;border-radius:11px;font-size:.86rem}.notice.success{background:#e4f4e9;color:#17613e}.notice.error{background:#fff0ec;color:#9e3e35}.notice.info{background:#eef5f2;color:#315e4e;margin-top:18px}dialog{border:0;padding:0;background:transparent;max-width:min(590px,calc(100vw - 28px));width:100%;box-shadow:var(--shadow);border-radius:20px}dialog::backdrop{background:rgba(9,27,21,.55);backdrop-filter:blur(3px)}.dialog-card{background:#fff;padding:25px;border-radius:20px}.dialog-card.wide{max-height:80vh;overflow:auto}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.dialog-head h2{margin:4px 0 0}.dialog-close{border:0;background:#edf2ef;border-radius:50%;width:34px;height:34px;font-size:1.4rem;color:#5f716a;cursor:pointer}.form-stack{display:grid;gap:17px;margin-top:22px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.readonly-owner{display:flex;justify-content:space-between;background:#f1f5f3;padding:13px;border-radius:11px;font-size:.83rem}.permission-grid{border:1px solid var(--line);border-radius:14px;margin:22px 0;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:11px}.permission-grid legend{padding:0 6px;font-size:.85rem;font-weight:750}.permission-grid label{display:flex;align-items:center;gap:8px;font-weight:500}.permission-grid input{width:17px;height:17px;accent-color:var(--green)}.reset-box{display:flex;align-items:end;gap:10px;border-top:1px solid var(--line);border-radius:0}.reset-box label{flex:1}.phase-card{min-height:420px;border-radius:22px;background:var(--green);color:#fff;padding:clamp(35px,7vw,76px);position:relative;overflow:hidden}.phase-card:after{content:"";position:absolute;width:340px;height:340px;border:65px solid rgba(220,250,107,.1);border-radius:50%;right:-80px;bottom:-140px}.phase-number{color:var(--lime);font-size:5rem;font-weight:900;letter-spacing:-.09em}.phase-card .eyebrow{color:#a7c2b7}.phase-card h2{font-size:2.1rem;margin:8px 0 12px}.phase-card p:not(.eyebrow){max-width:540px;color:#c1d2cc;line-height:1.8}.phase-card .tag{margin-top:18px;background:var(--lime);color:var(--green)}code{font-size:.76rem;background:#edf2ef;padding:3px 6px;border-radius:5px}.login-body{background:#0e3025}.login-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr .9fr;max-width:1180px;margin:auto;padding:28px}.login-brand{background:var(--green);color:#fff;padding:52px;display:flex;flex-direction:column;justify-content:space-between;border:1px solid rgba(255,255,255,.09);border-radius:25px 0 0 25px}.login-brand h1{font-size:clamp(2.4rem,5vw,4.7rem);line-height:1.05;letter-spacing:-.065em;margin:14px 0}.login-brand p:last-child{color:#99b6aa}.login-card{background:#fff;border-radius:0 25px 25px 0;padding:clamp(34px,7vw,80px);display:flex;flex-direction:column;justify-content:center}.login-card h2{font-size:2rem;margin:8px 0}.login-card .notice{margin-top:18px}.security-note{font-size:.75rem;color:#8b9892;margin-top:20px}.mobile-brand{display:none;font-weight:850;color:var(--green);margin-bottom:45px}
@media(min-width:781px) and (max-width:1100px){.app-shell{grid-template-columns:196px minmax(0,1fr)}.sidebar{width:196px;padding:20px 13px}.logo{font-size:.88rem}.brand-mark{width:36px;height:36px}.sidebar nav{margin-top:28px}.sidebar nav a{padding:10px 11px;font-size:.82rem}.main{padding:26px 22px 50px}.metric{padding:17px}.metric strong{font-size:2rem}th,td{padding:12px 15px}.today{display:none}}
@media(max-width:780px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s ease;box-shadow:var(--shadow)}body.menu-open .sidebar{transform:none}body.menu-open{overflow:hidden}.main{padding:22px 14px 46px}.menu-button{display:block;border:0;background:#fff;border-radius:10px;padding:8px 10px;margin-right:12px}.topbar{position:sticky;top:0;z-index:5;margin:0 -14px 16px;padding:10px 14px;background:var(--paper);justify-content:flex-start;align-items:center}.today{margin-left:auto;font-size:.73rem}.metric-grid{grid-template-columns:1fr}.metric{padding:18px}.toolbar{align-items:stretch;flex-direction:column}.toolbar .btn.primary{width:100%}.form-grid,.permission-grid{grid-template-columns:1fr}.login-shell{display:block;padding:16px}.login-brand{display:none}.login-card{min-height:calc(100vh - 32px);border-radius:22px;padding:30px}.mobile-brand{display:block}.section-heading{align-items:flex-start;flex-direction:column}.reset-box{align-items:stretch;flex-direction:column}.pager{justify-content:space-between;padding:14px}.pager .btn{padding:8px 11px}}html,body{overscroll-behavior-y:none}
