:root{--nav:#294f7d;--nav2:#3f6593;--blue:#2f80ed;--ink:#142c49;--muted:#73859b;--line:#dfe7f0;--bg:#f3f6fa;--soft:#f8fafd;--red:#d94b4b;--green:#16865c;--orange:#c77b12;--shadow:0 8px 26px rgba(25,53,87,.08)}
*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit;color:inherit}.boot{height:100%;display:grid;place-items:center;color:var(--muted)}
.login{height:100%;display:grid;grid-template-columns:minmax(420px,1.1fr) minmax(420px,.9fr);background:#fff}.login-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:10vw;background:linear-gradient(145deg,#24486f,#3f6593);color:#fff}.login-hero:after{content:"";position:absolute;width:520px;height:520px;border:1px solid rgba(255,255,255,.13);border-radius:50%;right:-210px;bottom:-260px}.login-brand{font-size:13px;letter-spacing:3px;color:#cfe0f5}.login-hero h1{font-size:44px;line-height:1.2;margin:14px 0}.login-hero p{max-width:530px;color:#dce8f6;font-size:16px}.flow{display:flex;gap:8px;flex-wrap:wrap;margin-top:34px}.flow span{padding:8px 12px;border:1px solid rgba(255,255,255,.2);border-radius:7px;background:rgba(255,255,255,.08)}.login-panel{display:grid;place-items:center;padding:40px}.login-card{width:min(390px,100%)}.login-card h2{font-size:27px;margin:0 0 8px}.login-card>p{color:var(--muted);margin:0 0 30px}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:15px}.field label{color:#52677f;font-weight:650}.field input,.field select,.field textarea{width:100%;border:1px solid #cfd9e5;border-radius:7px;padding:10px 12px;background:#fff;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:#79a9e7;box-shadow:0 0 0 3px rgba(47,128,237,.10)}
.btn{border:1px solid var(--line);border-radius:7px;background:#fff;padding:9px 15px;font-weight:650;cursor:pointer;white-space:nowrap}.btn:hover{border-color:#aebfd2;background:#fbfdff}.btn.primary{border-color:var(--blue);background:var(--blue);color:#fff}.btn.primary:hover{background:#246fcf}.btn.danger{border-color:#f0cece;color:var(--red);background:#fffafa}.btn.block{width:100%;height:44px;margin-top:5px}
.shell{height:100%;display:grid;grid-template-columns:238px minmax(0,1fr);overflow:hidden}.side{min-height:0;overflow:auto;background:var(--nav);color:#dce8f6;padding:18px 13px}.logo{display:flex;align-items:center;gap:11px;padding:4px 9px 22px;color:#fff;font-size:18px;font-weight:800}.logo-mark{width:34px;height:34px;display:grid;place-items:center;border-radius:8px;background:#fff;color:var(--nav)}.menu-caption{padding:17px 12px 7px;color:#91accb;font-size:11px;font-weight:800;letter-spacing:1.3px}.menu a{display:flex;align-items:center;gap:11px;margin:3px 0;padding:10px 12px;border-radius:7px;color:#dce8f6;text-decoration:none;cursor:pointer}.menu a:hover,.menu a.on{background:var(--nav2);color:#fff}.menu-icon{width:22px;text-align:center}.main{min-width:0;min-height:0;display:grid;grid-template-rows:56px minmax(0,1fr)}.top{display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--line);background:#fff}.crumb{font-weight:750}.user{display:flex;align-items:center;gap:11px}.avatar{width:30px;height:30px;display:grid;place-items:center;border-radius:50%;background:#e8f1fb;color:var(--nav);font-weight:800}.link-btn{border:0;background:transparent;color:var(--muted);cursor:pointer}.content{min-height:0;overflow:auto;padding:22px}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.page-head h1{font-size:24px;margin:0}.page-head p{color:var(--muted);margin:5px 0 0}.actions{display:flex;gap:8px}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric,.card{border:1px solid var(--line);border-radius:11px;background:#fff;box-shadow:0 4px 16px rgba(25,53,87,.035)}.metric{padding:18px}.metric span{color:var(--muted);font-weight:650}.metric strong{display:block;margin-top:8px;font-size:28px}.workflow{display:flex;align-items:center;gap:10px;margin:17px 0;padding:15px 18px}.workflow span{padding:7px 10px;border-radius:6px;background:#edf4fc;color:#315a91;font-weight:700}.workflow b{color:#9bb0c8}.module-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.module{padding:20px}.module h2{margin:0;font-size:18px}.module p{min-height:42px;color:var(--muted)}.quick{display:flex;gap:8px;flex-wrap:wrap}.quick a{padding:8px 11px;border-radius:6px;background:var(--soft);color:#315a91;text-decoration:none;font-weight:650}
.toolbar{display:flex;gap:10px;margin-bottom:14px;padding:13px;border:1px solid var(--line);border-radius:9px;background:#fff}.search{min-width:240px;flex:1;border:1px solid #cfd9e5;border-radius:7px;padding:9px 11px;outline:none}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#fff}.table{width:100%;border-collapse:collapse;white-space:nowrap}.table th{height:43px;padding:0 12px;background:#f7f9fc;color:#60748c;text-align:left;font-size:13px}.table td{height:49px;padding:0 12px;border-top:1px solid #ebf0f5}.table tbody tr:hover{background:#fbfdff}.empty{text-align:center!important;color:var(--muted);height:150px!important}.tag{display:inline-block;padding:3px 8px;border-radius:99px;background:#eef3f8;color:#5e738b;font-size:12px}.tag.active,.tag.confirmed,.tag.released,.tag.completed{background:#eaf7f1;color:var(--green)}.tag.draft{background:#fff6e7;color:var(--orange)}.tag.cancelled{background:#fff0f0;color:var(--red)}
.drawer-mask{position:fixed;inset:0;z-index:20;display:flex;justify-content:flex-end;background:rgba(15,39,69,.36)}.drawer{width:min(1050px,94vw);height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#fff;box-shadow:-16px 0 48px rgba(18,43,73,.2)}.drawer-head,.drawer-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 21px;border-bottom:1px solid var(--line)}.drawer-foot{border-top:1px solid var(--line);border-bottom:0;background:#fbfcfe}.drawer-head h2{margin:0;font-size:20px}.drawer-body{overflow:auto;padding:20px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.span-2{grid-column:span 2}.span-3{grid-column:1/-1}.section-title{grid-column:1/-1;margin:10px 0 -2px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:15px}.tabs{display:flex;gap:3px;overflow:auto;margin-top:15px;border-bottom:1px solid var(--line)}.tabs button{border:0;border-bottom:2px solid transparent;background:transparent;padding:10px 13px;color:var(--muted);font-weight:700;cursor:pointer}.tabs button.on{border-color:var(--blue);color:var(--blue)}.line-table input,.line-table select{min-width:90px;width:100%;border:1px solid transparent;background:transparent;padding:7px}.line-table input:focus,.line-table select:focus{border-color:#b8cae0;background:#fff;outline:none}.line-table .wide{min-width:170px}.total{padding:13px;text-align:right;font-size:16px;font-weight:800}.close{border:0;background:transparent;font-size:24px;color:#8394a8;cursor:pointer}
#toast{position:fixed;right:22px;top:20px;z-index:50}.toast{min-width:260px;margin-bottom:8px;padding:12px 15px;border-radius:8px;background:#18314f;color:#fff;box-shadow:var(--shadow)}.toast.error{background:#b63e3e}
@media(max-width:900px){.login{grid-template-columns:1fr}.login-hero{display:none}.shell{grid-template-columns:72px 1fr}.side{padding:15px 8px}.logo span:last-child,.menu-caption,.menu a span:last-child{display:none}.logo{padding-left:10px}.menu a{justify-content:center}.metrics,.module-grid{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr 1fr}.span-3{grid-column:1/-1}}
@media(max-width:620px){.content{padding:14px}.metrics,.module-grid,.form-grid{grid-template-columns:1fr}.span-2,.span-3{grid-column:auto}.workflow{overflow:auto}.page-head{align-items:stretch;flex-direction:column}.drawer{width:100vw}.user span{display:none}}
