:root{--navy:#17283f;--navy-2:#213a5a;--blue:#2c6bed;--blue-soft:#edf4ff;--bg:#f4f6f9;--card:#fff;--text:#172033;--muted:#748094;--line:#e5e9f0;--green:#12a474;--amber:#e99b21;--red:#dc4a4a;--violet:#805ad5;--shadow:0 8px 25px rgba(28,43,64,.06);--radius:14px}*{box-sizing:border-box}html{font-size:15px}body{margin:0;background:var(--bg);color:var(--text);font-family:"Microsoft YaHei","PingFang SC",system-ui,-apple-system,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:flex;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:238px;display:flex;flex-direction:column;background:var(--navy);color:#d8e3f1;z-index:30}.brand{height:86px;padding:20px 22px;display:flex;align-items:center;gap:12px;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{display:grid;place-items:center;flex:0 0 40px;width:40px;height:40px;border-radius:12px;background:linear-gradient(145deg,#3b82f6,#2055c9);color:#fff;font-size:21px;font-weight:800;box-shadow:0 6px 18px rgba(34,103,225,.35)}.brand strong{display:block;color:#fff;font-size:18px;letter-spacing:.5px}.brand small{display:block;margin-top:1px;color:#91a6c1;font-size:11px}.main-nav{display:flex;flex-direction:column;gap:6px;padding:22px 14px}.main-nav a{position:relative;display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:9px;color:#b7c6d8;transition:.2s}.main-nav a span{width:22px;text-align:center;font-size:18px;color:#8fa5bf}.main-nav a:hover{background:rgba(255,255,255,.06);color:#fff}.main-nav a.active{background:linear-gradient(90deg,rgba(53,121,241,.28),rgba(53,121,241,.12));color:#fff}.main-nav a.active:before{content:"";position:absolute;left:-14px;width:3px;height:24px;border-radius:0 4px 4px 0;background:#4d8cff}.sidebar-user{margin:auto 14px 18px;padding:13px;display:flex;align-items:center;gap:10px;border-radius:12px;background:rgba(255,255,255,.06)}.sidebar-user>span:nth-child(2){min-width:0;flex:1}.sidebar-user strong,.sidebar-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user strong{font-size:13px;color:#fff}.sidebar-user small{font-size:11px;color:#8fa5bf}.sidebar-user>a{color:#8fa5bf;font-size:18px}.avatar{width:35px;height:35px;display:grid!important;place-items:center;border-radius:50%;background:#dde9ff;color:#285eb8;font-weight:700}.avatar.small{width:32px;height:32px;font-size:12px}.main-content{margin-left:238px;min-width:0;min-height:100vh;display:flex;flex:1;flex-direction:column}.topbar{height:86px;padding:0 30px;display:flex;align-items:center;gap:16px;background:#fff;border-bottom:1px solid var(--line)}.topbar h1{margin:0;font-size:20px}.topbar p{margin:3px 0 0;color:var(--muted);font-size:12px}.top-actions{margin-left:auto}.menu-toggle{display:none;border:0;background:transparent;font-size:22px}.page-body{width:100%;max-width:1540px;margin:0 auto;padding:26px 30px;flex:1}.footer{text-align:center;color:#9aa3b2;font-size:11px;padding:10px 30px 22px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:40px;padding:0 17px;border:1px solid transparent;border-radius:8px;font-size:13px;font-weight:600;transition:.18s}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--blue);color:#fff;box-shadow:0 5px 13px rgba(44,107,237,.2)}.btn-secondary{border-color:#d8dfeb;background:#fff;color:#314159}.btn-ghost{border-color:transparent;background:#f2f4f7;color:#667085}.btn-danger{border-color:#f0cccc;background:#fff4f4;color:var(--red)}.btn-block{width:100%}.btn-small{min-height:34px;padding:0 12px;font-size:12px}.alert{position:relative;margin:20px 30px 0;padding:12px 42px 12px 16px;border-radius:9px;font-size:13px}.alert button{position:absolute;right:12px;top:8px;border:0;background:none;font-size:20px;color:inherit}.alert-success{background:#eafaf4;color:#147a5a;border:1px solid #c6eddf}.alert-error{background:#fff0f0;color:#a63131;border:1px solid #f3cccc}.alert ul{margin:6px 0 0;padding-left:20px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-header{min-height:74px;padding:17px 20px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line)}.card-header h3{margin:0 0 3px;font-size:15px}.card-header p{margin:0;color:var(--muted);font-size:12px}.card-header>a:not(.btn){color:var(--blue);font-size:12px}.welcome-panel{position:relative;overflow:hidden;min-height:165px;margin-bottom:20px;padding:30px 34px;display:flex;align-items:center;justify-content:space-between;border-radius:17px;background:linear-gradient(115deg,#1b3554,#244e79);color:#fff;box-shadow:0 13px 30px rgba(23,46,77,.16)}.welcome-panel:after{content:"";position:absolute;right:8%;top:-80px;width:270px;height:270px;border:45px solid rgba(255,255,255,.035);border-radius:50%}.welcome-panel h2{margin:7px 0 5px;font-size:25px;letter-spacing:.5px}.welcome-panel p{margin:0;color:#c4d2e2;font-size:13px}.eyebrow{padding:4px 9px;border-radius:20px;background:rgba(255,255,255,.1);color:#9dc0f5;font-size:11px}.welcome-visual{z-index:1;min-width:120px;text-align:center}.welcome-visual span{display:block;font-size:40px;font-weight:800}.welcome-visual small{color:#b6cbe2}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px;margin-bottom:20px}.stat-card{padding:19px;display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.stat-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:12px;font-size:18px;font-weight:700}.stat-icon.blue{background:#edf4ff;color:var(--blue)}.stat-icon.green{background:#eaf9f3;color:var(--green)}.stat-icon.amber{background:#fff6e8;color:var(--amber)}.stat-icon.violet{background:#f3efff;color:var(--violet)}.stat-card p,.stat-card small{margin:0;color:var(--muted);font-size:11px}.stat-card strong{display:block;margin:2px 0;font-size:19px}.dashboard-grid{display:grid;grid-template-columns:2fr 1fr;gap:20px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:13px 16px;text-align:left;border-bottom:1px solid #edf0f4;white-space:nowrap;font-size:12px}th{background:#fafbfc;color:#7d8798;font-size:11px;font-weight:600;letter-spacing:.2px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfcfe}.asset-name{display:block;color:#26364c;font-weight:700}.asset-name:hover{color:var(--blue)}.table-sub{display:block;margin-top:3px;color:#939dac;font-size:10px}.table-title{display:block;margin-top:5px}.empty{padding:35px!important;text-align:center!important;color:#98a1af}.status{display:inline-flex;align-items:center;padding:4px 8px;border-radius:20px;font-size:10px;font-weight:600}.status-in_use{background:#eaf8f2;color:#13815d}.status-idle{background:#fff6e5;color:#a76a0d}.status-repair{background:#fff0e9;color:#c35826}.status-scrapped,.status-disposed{background:#f1f2f5;color:#717988}.status-list{padding:15px 20px}.status-row{margin-bottom:17px}.status-row>div:first-child{display:flex;align-items:center;gap:8px;font-size:12px}.status-row strong{margin-left:auto}.dot{width:8px;height:8px;border-radius:50%;background:#abb4c2}.dot-in_use{background:var(--green)}.dot-idle{background:var(--amber)}.dot-repair{background:#ed6a35}.dot-scrapped{background:#8490a1}.dot-disposed{background:#c4cad2}.progress{height:5px;margin-top:8px;border-radius:4px;background:#edf0f4;overflow:hidden}.progress i{display:block;height:100%;background:#477fe5;border-radius:inherit}.filter-card{margin-bottom:18px;padding:14px}.filter-bar{display:flex;align-items:center;gap:9px}.search-box{position:relative;flex:1;min-width:220px}.search-box span{position:absolute;left:12px;top:8px;color:#8f99a8;font-size:18px}.search-box input{padding-left:37px!important}.filter-bar select{min-width:125px}.filter-bar input,.filter-bar select,.stack-form input,.stack-form select,.stack-form textarea,.form-grid input,.form-grid select,.form-grid textarea,.event-form textarea{width:100%;height:40px;padding:8px 11px;border:1px solid #d9dfe8;border-radius:7px;background:#fff;color:var(--text);outline:none;transition:.15s}.filter-bar input:focus,.filter-bar select:focus,.stack-form input:focus,.stack-form select:focus,.stack-form textarea:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.event-form textarea:focus{border-color:#7fa7ef;box-shadow:0 0 0 3px rgba(44,107,237,.08)}.pagination{display:flex;gap:5px;padding:16px 20px;border-top:1px solid var(--line)}.pagination a{min-width:31px;height:31px;display:grid;place-items:center;border:1px solid var(--line);border-radius:6px;color:#667085;font-size:11px}.pagination a.active{border-color:var(--blue);background:var(--blue);color:#fff}.form-card{max-width:1050px;margin:0 auto}.form-section{padding:25px 28px;border-bottom:1px solid var(--line)}.form-section-head{display:flex;align-items:center;gap:12px;margin-bottom:20px}.form-section-head>span,.section-title>span{width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:var(--blue-soft);color:var(--blue);font-size:11px;font-weight:700}.form-section-head h3,.section-title h2{margin:0;font-size:15px}.form-section-head p,.section-title p{margin:2px 0 0;color:var(--muted);font-size:11px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px 22px}.form-grid label,.stack-form label,.auth-form label{display:block;color:#596579;font-size:12px;font-weight:600}.form-grid label em{color:var(--red);font-style:normal}.form-grid input,.form-grid select,.form-grid textarea,.stack-form input,.stack-form select,.stack-form textarea,.auth-form input{display:block;margin-top:7px}.form-grid textarea,.stack-form textarea{height:auto;resize:vertical}.form-grid .full{grid-column:1/-1}.form-actions{padding:18px 28px;display:flex;justify-content:flex-end;gap:9px}.detail-head{margin-bottom:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.back-link{display:inline-block;margin-bottom:17px;color:#6f7a8b;font-size:12px}.detail-title{display:flex;align-items:center;gap:15px}.asset-badge{width:57px;height:57px;display:grid;place-items:center;border-radius:14px;background:var(--blue-soft);color:var(--blue);font-size:20px;font-weight:800}.detail-title code{margin-right:9px}.detail-title h2{margin:5px 0 1px;font-size:22px}.detail-title p{margin:0;color:var(--muted);font-size:12px}.detail-actions{display:flex;gap:8px}.detail-actions form{display:inline}.value-strip{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:20px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.value-strip>div{padding:19px 23px;border-right:1px solid var(--line)}.value-strip>div:last-child{border:0}.value-strip small,.value-strip strong{display:block}.value-strip small{margin-bottom:5px;color:var(--muted);font-size:11px}.value-strip strong{font-size:18px}.value-strip strong em{color:#9ba4b2;font-size:11px;font-style:normal}.value-strip .highlight strong{color:var(--blue)}.detail-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:20px}.detail-main{display:flex;flex-direction:column;gap:20px}.info-grid{display:grid;grid-template-columns:repeat(2,1fr);margin:0;padding:8px 20px 20px}.info-grid>div{padding:14px 5px;border-bottom:1px dashed #e8ebf0}.info-grid>div:nth-last-child(-n+2){border-bottom:0}.info-grid .full{grid-column:1/-1}.info-grid dt{margin-bottom:5px;color:var(--muted);font-size:11px}.info-grid dd{margin:0;font-size:13px;font-weight:600}.event-form{padding:15px;border-bottom:1px solid var(--line)}.event-form textarea{height:auto;resize:vertical;margin-bottom:8px}.timeline{padding:20px}.timeline-item{position:relative;display:flex;gap:12px;padding-bottom:23px}.timeline-item:after{content:"";position:absolute;top:12px;bottom:0;left:5px;border-left:1px solid #dfe5ee}.timeline-item:last-child:after{display:none}.timeline-item i{z-index:1;flex:0 0 11px;width:11px;height:11px;margin-top:4px;border:3px solid #9dbcf4;border-radius:50%;background:#fff}.timeline-item strong{font-size:12px;font-weight:600}.timeline-item p{margin:3px 0 0;color:var(--muted);font-size:10px}.split-layout{display:grid;grid-template-columns:minmax(0,2.2fr) minmax(280px,1fr);gap:20px}.side-form{align-self:start}.stack-form{padding:20px}.stack-form label{margin-bottom:15px}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.link-button{padding:0;border:0;background:none;color:var(--blue);font-size:11px}.link-button.muted{margin-left:8px;color:#8993a3}.inline-form{display:inline}.user-cell{display:flex;align-items:center;gap:8px}.role-hint{margin:4px 0 16px;padding:11px;border-radius:8px;background:#f5f7fa;color:#687487;font-size:10px}.role-hint strong{display:block;color:#354157}.role-hint p{margin:3px 0}.action-tag{padding:3px 6px;border-radius:4px;background:#eef3fb;color:#3767b3;font-size:9px;font-weight:700}code{padding:3px 5px;border-radius:4px;background:#f2f4f7;color:#536071;font-family:Consolas,monospace;font-size:10px}.auth-page{min-height:100vh;padding:30px;display:grid;place-items:center;background:radial-gradient(circle at 20% 10%,#e5efff,transparent 35%),linear-gradient(145deg,#f7f9fc,#eef2f7)}.auth-card,.install-card{width:min(100%,420px);padding:34px;background:#fff;border:1px solid #e1e6ee;border-radius:18px;box-shadow:0 20px 55px rgba(28,44,68,.12)}.install-card{width:min(100%,680px)}.auth-brand{display:flex;align-items:center;gap:12px}.auth-brand h1{margin:0;font-size:19px}.auth-brand p{margin:2px 0 0;color:var(--muted);font-size:11px}.auth-heading{margin:35px 0 22px}.auth-heading h2{margin:0 0 4px;font-size:23px}.auth-heading p{margin:0;color:var(--muted);font-size:12px}.auth-form label{margin-bottom:16px}.auth-form input{width:100%;height:43px;padding:8px 12px;border:1px solid #d8dee8;border-radius:8px;outline:none}.auth-form input:focus{border-color:#7fa7ef;box-shadow:0 0 0 3px rgba(44,107,237,.08)}.auth-foot{margin:23px 0 0;text-align:center;color:#9ba3ae;font-size:10px}.install-form{margin-top:25px}.section-title{display:flex;align-items:center;gap:11px;padding:14px 0 2px}.install-success{text-align:center;padding:35px 0 10px}.install-success h2{margin:10px 0 4px}.install-success p{margin:0 0 22px;color:var(--muted)}.success-icon{width:55px;height:55px;margin:auto;display:grid;place-items:center;border-radius:50%;background:#e8f8f1;color:var(--green);font-size:25px;font-weight:800}
@media(max-width:1100px){.stats-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.value-strip{grid-template-columns:repeat(2,1fr)}.value-strip>div:nth-child(2){border-right:0}.value-strip>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.filter-bar{flex-wrap:wrap}.search-box{flex:1 1 100%}}
@media(max-width:800px){.sidebar{transform:translateX(-100%);transition:.22s;box-shadow:10px 0 30px rgba(20,35,55,.22)}.sidebar.open{transform:translateX(0)}.main-content{margin-left:0}.menu-toggle{display:block}.topbar{height:72px;padding:0 16px}.topbar p{display:none}.page-body{padding:18px 14px}.alert{margin:14px 14px 0}.welcome-panel{padding:24px}.welcome-panel h2{font-size:20px}.welcome-visual{display:none}.split-layout,.detail-grid{grid-template-columns:1fr}.side-form{order:-1}.detail-head{align-items:flex-start;flex-direction:column}.detail-actions{align-self:stretch}.detail-actions .btn{flex:1}.detail-actions form{display:flex;flex:1}.detail-actions form .btn{width:100%}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.info-grid{grid-template-columns:1fr}.info-grid .full{grid-column:auto}.info-grid>div{border-bottom:1px dashed #e8ebf0!important}.top-actions .btn{min-height:36px;padding:0 11px;font-size:11px}.footer{padding-bottom:15px}}
@media(max-width:520px){html{font-size:14px}.auth-page{padding:14px}.auth-card,.install-card{padding:24px}.install-form{grid-template-columns:1fr}.install-form .full{grid-column:auto}.stats-grid{grid-template-columns:1fr 1fr;gap:10px}.stat-card{padding:13px;gap:9px}.stat-icon{width:36px;height:36px}.stat-card strong{font-size:15px}.stat-card small{display:none}.value-strip>div{padding:15px}.value-strip strong{font-size:15px}.filter-bar>*{flex:1 1 42%}.filter-bar .search-box{flex-basis:100%}.filter-bar select{min-width:0}.card-header{padding:14px}.detail-title h2{font-size:18px}.asset-badge{width:48px;height:48px}.form-section{padding:20px}.form-actions{padding:15px 20px}.two-cols{grid-template-columns:1fr}}
