:root{--bg:#f5f7f9;--panel:#fff;--line:#dfe4ea;--line2:#edf0f3;--text:#20242a;--muted:#6d7580;--blue:#1769d2;--blue-soft:#eef5ff;--green:#147a52;--green-soft:#eef8f3;--red:#b83a31;--red-soft:#fff3f1;--info:#f1f5f8;--sidebar:236px}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",Arial,sans-serif;font-size:14px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}.shell{min-height:100vh}.topbar{height:60px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;position:fixed;left:0;right:0;top:0;z-index:20}.logo{width:var(--sidebar);height:60px;border-right:1px solid var(--line);display:flex;align-items:center;padding:0 20px;font-weight:700;font-size:18px;gap:10px}.logo-mark{width:30px;height:30px;border:1px solid #2e6fd0;display:grid;place-items:center;color:#1769d2;font-size:16px}.logo small{font-size:11px;color:#89919b;letter-spacing:2px}.top-context{padding:0 24px;display:flex;align-items:center;gap:12px;min-width:0}.top-context b{font-size:14px}.top-context span{font-size:12px;color:var(--muted)}.top-actions{margin-left:auto;padding-right:24px;display:flex;gap:18px;align-items:center}.top-actions a,.top-actions button{border:0;background:none;padding:0;color:#555;cursor:pointer}.sidebar{position:fixed;top:60px;bottom:0;left:0;width:var(--sidebar);background:#fff;border-right:1px solid var(--line);padding:18px 12px;overflow:auto}.side-company{border:1px solid var(--line);padding:13px;margin-bottom:20px}.side-company strong{display:block;font-size:13px;margin-bottom:4px}.side-company .muted{font-size:12px}.brand-switch{width:100%;margin-top:10px;border:1px solid #ccd4dd;background:#fff;padding:9px 10px;text-align:left}.nav-label{font-size:12px;color:#9199a3;margin:18px 10px 7px}.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:2px 0;color:#4b5560;border-left:3px solid transparent}.nav a.active{background:#eef4fd;color:#145fb8;border-left-color:#1769d2;font-weight:600}.nav .ico{width:18px;text-align:center;color:#6f7c88}.main{margin-left:var(--sidebar);padding:88px 32px 48px;min-height:100vh}.container{max-width:1420px;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.eyebrow{font-size:12px;letter-spacing:2px;color:#7c858f;font-weight:700}.page-head h1{font-size:26px;margin:2px 0 3px}.page-head p{margin:0;color:var(--muted)}.panel{background:var(--panel);border:1px solid var(--line);margin-bottom:18px}.panel-head{padding:16px 20px;border-bottom:1px solid var(--line2);display:flex;justify-content:space-between;gap:16px;align-items:center}.panel-head h2,.panel-head h3{margin:0;font-size:16px}.panel-body{padding:20px}.notice{border:1px solid #d5e0ec;background:var(--info);padding:12px 15px;margin-bottom:18px;color:#44515e}.notice.success{background:var(--green-soft);border-color:#cfe5d8;color:#246146}.notice.error{background:var(--red-soft);border-color:#efd3cf;color:#8b3029}.grid{display:grid;gap:16px}.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}.field label{display:block;font-weight:600;font-size:13px;margin-bottom:6px}.field small{display:block;color:var(--muted);margin-top:5px}.field input,.field textarea,.field select{width:100%;border:1px solid #cfd6df;background:#fff;padding:9px 10px;outline:none;border-radius:0}.field textarea{min-height:120px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:#2b78d4;box-shadow:0 0 0 2px rgba(43,120,212,.08)}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd3dc;background:#fff;color:#2f3943;padding:8px 14px;cursor:pointer;border-radius:0;min-height:36px}.btn.primary{background:#1769d2;border-color:#1769d2;color:#fff}.btn.danger{border-color:#e0aaa5;color:#a9342c;background:#fff}.btn.ghost{border-color:transparent;background:transparent}.btn.small{padding:5px 10px;min-height:30px;font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);background:#fff;margin-bottom:20px}.stat{padding:15px 18px;border-right:1px solid var(--line)}.stat:last-child{border-right:0}.stat span{display:block;color:var(--muted);font-size:12px}.stat strong{font-size:24px;line-height:1.3}.tabs{display:flex;border:1px solid var(--line);background:#fff;margin-bottom:18px;overflow:auto}.tab{padding:12px 18px;border-right:1px solid var(--line);color:#5a6570;white-space:nowrap}.tab.active{color:#1769d2;border-bottom:2px solid #1769d2;background:#f8fbff;font-weight:600}.badge{display:inline-block;border:1px solid #d4dce5;background:#f7f9fb;color:#55616d;padding:2px 7px;font-size:12px}.badge.blue{background:#eef5ff;border-color:#cfdef2;color:#1769d2}.badge.green{background:#eef8f3;border-color:#d0e7da;color:#176c4e}.badge.gray{background:#f1f3f5;border-color:#e0e4e8;color:#7a838d}.badge.red{background:#fff2f0;border-color:#efd0cb;color:#a23b32}.table{width:100%;border-collapse:collapse}.table th,.table td{border-bottom:1px solid var(--line2);padding:12px 10px;text-align:left;vertical-align:top}.table th{font-size:12px;color:#68727c;font-weight:600;background:#fafbfc}.muted{color:var(--muted)}.card{border:1px solid var(--line);background:#fff;margin-bottom:14px}.card.current{border-top:2px solid #1769d2}.card.dim{background:#f5f6f7;color:#68717a}.card.dim .card-body{opacity:.7}.card-head{padding:15px 18px;border-bottom:1px solid var(--line2);display:flex;align-items:center;gap:12px}.card-head .grow{flex:1}.card-body{padding:18px}.brand-logo{width:38px;height:38px;border:1px solid #d7dde4;background:#fff;display:grid;place-items:center;font-weight:700;color:#65717d;overflow:hidden}.brand-logo img{width:100%;height:100%;object-fit:contain}.kv{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line2);border-left:1px solid var(--line2)}.kv>div{padding:12px 14px;border-right:1px solid var(--line2);border-bottom:1px solid var(--line2)}.kv label{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.article-body{font-size:16px;line-height:1.9}.article-body h2{font-size:22px;margin:28px 0 12px}.article-body h3{font-size:18px;margin:22px 0 8px}.article-body p{margin:0 0 14px}.article-body table{width:100%;border-collapse:collapse}.article-body td,.article-body th{border:1px solid var(--line);padding:8px}.guest{min-height:100vh;display:grid;place-items:center;background:#f5f7f9}.login-box{width:390px;background:#fff;border:1px solid var(--line);padding:34px}.login-box h1{margin:0 0 4px}.login-box p{color:var(--muted);margin:0 0 24px}.login-box .field{margin-bottom:14px}.login-box .btn{width:100%}.admin-chip{font-size:12px;border:1px solid #d8dde3;padding:4px 8px;color:#5d6670}.empty{padding:40px 20px;text-align:center;color:#7a838c}.inline-form{display:inline}.split{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.w-60{width:60%}.w-40{width:40%}
@media(max-width:900px){:root{--sidebar:0px}.logo{width:auto;border:0}.sidebar{display:none}.main{margin-left:0;padding:82px 16px 32px}.top-context{display:none}.grid.two,.grid.three,.stats,.kv{grid-template-columns:1fr}.stat{border-right:0;border-bottom:1px solid var(--line)}.page-head,.split{display:block}.w-60,.w-40{width:100%}.top-actions{padding-right:12px}.login-box{width:calc(100% - 32px)}}

/* Public website / auth */
.public-body,.auth-body{background:#fff;color:var(--text)}
.public-container{width:min(1180px,calc(100% - 40px));margin:0 auto}.public-container.narrow{max-width:860px}
.public-header{height:72px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.96);position:sticky;top:0;z-index:30}.header-inner{height:72px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.public-brand{display:flex;align-items:center;gap:10px;font-size:18px}.public-brand>span:last-child{display:flex;align-items:baseline;gap:8px}.public-brand b{font-size:18px}.public-brand small{font-size:11px;color:#8b949e;letter-spacing:2px;font-weight:600}
.public-nav{display:flex;align-items:center;gap:22px;color:#4f5862}.public-nav>a:not(.btn):hover{color:var(--blue)}
.hero-public{padding:88px 0 72px;background:linear-gradient(180deg,#fff 0,#f7f9fb 100%);border-bottom:1px solid var(--line)}.hero-public .public-container{display:grid;grid-template-columns:1.12fr .88fr;gap:72px;align-items:center}.hero-copy h1{font-size:48px;line-height:1.18;letter-spacing:-1.5px;margin:10px 0 22px;max-width:780px}.hero-copy>p{font-size:17px;line-height:1.9;color:#59636e;max-width:760px;margin:0}.hero-actions{display:flex;gap:12px;margin-top:30px}.btn.large{padding:11px 20px;min-height:44px}
.hero-flow{border:1px solid var(--line);background:#fff}.hero-flow>div{display:grid;grid-template-columns:48px 1fr;column-gap:12px;padding:18px 20px;border-bottom:1px solid var(--line2)}.hero-flow>div:last-child{border-bottom:0}.hero-flow span{grid-row:1/3;color:#8b949e;font-size:12px;letter-spacing:1px}.hero-flow b{font-size:15px}.hero-flow p{margin:3px 0 0;color:var(--muted);font-size:13px}
.public-section{padding:76px 0}.public-section.alt{background:#f7f9fb;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.section-head{max-width:820px;margin-bottom:34px}.section-head h2{font-size:32px;line-height:1.35;margin:7px 0 12px}.section-head p{font-size:16px;color:var(--muted);margin:0}.feature-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}.feature{padding:24px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-height:170px}.feature b{font-size:17px}.feature p{color:var(--muted);margin:10px 0 0}.cta{display:flex;justify-content:space-between;align-items:center;gap:30px}.cta h2{margin:0 0 7px;font-size:28px}.cta p{margin:0;color:var(--muted)}
.public-page{padding:76px 0 100px}.public-page h1{font-size:42px;margin:8px 0 18px}.public-page .lead{font-size:19px;line-height:1.9;color:#4d5863;margin:0 0 42px}.about-block{padding:28px 0;border-top:1px solid var(--line)}.about-block h2{font-size:22px;margin:0 0 10px}.about-block p{margin:0;color:#56616c;font-size:16px;line-height:1.9}.public-footer{border-top:1px solid var(--line);padding:24px 0;color:#7b848e;font-size:13px}.public-footer .public-container{display:flex;justify-content:space-between;gap:20px}
.auth-top{height:68px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;background:#fff}.auth-top>div{display:flex;gap:20px;color:#5e6872}.guest{min-height:calc(100vh - 68px);display:flex;align-items:center;justify-content:center;padding:42px 20px;background:#f5f7f9}.auth-wrap{width:min(1040px,100%);display:grid;grid-template-columns:1fr 440px;gap:70px;align-items:center}.auth-intro{padding:20px}.auth-intro h1{font-size:38px;line-height:1.25;margin:10px 0 18px}.auth-intro>p{font-size:16px;color:#606a75;line-height:1.9;max-width:560px}.auth-points{display:flex;gap:8px;flex-wrap:wrap;margin-top:22px}.auth-points span{border:1px solid #d9e0e8;background:#fff;padding:6px 10px;font-size:12px;color:#59636e}.register-box{width:auto}.auth-foot{border-top:1px solid var(--line2);margin-top:20px;padding-top:16px;text-align:center;color:var(--muted)}.auth-foot a{color:var(--blue)}
@media(max-width:900px){.public-container{width:min(100% - 28px,1180px)}.public-nav{gap:12px}.public-nav a:nth-child(2){display:none}.hero-public{padding:52px 0}.hero-public .public-container{grid-template-columns:1fr;gap:30px}.hero-copy h1{font-size:36px}.feature-grid{grid-template-columns:1fr 1fr}.cta{display:block}.cta .btn{margin-top:20px}.auth-wrap{grid-template-columns:1fr;gap:24px;max-width:520px}.auth-intro{padding:0}.auth-intro h1{font-size:30px}.auth-top{padding:0 16px}.public-brand small{display:none}}
@media(max-width:560px){.feature-grid{grid-template-columns:1fr}.hero-actions{flex-direction:column}.hero-actions .btn{width:100%}.public-footer .public-container{display:block}.public-footer span{display:block;margin:4px 0}.auth-intro{display:none}.guest{padding:22px 14px}.login-box{width:100%}.public-header .btn.small{display:none}}
