:root{--brand: #0f4c5c;--brand-deep: #0a3540;--brand-soft: #e3eef1;--accent: #9a6a1a;--accent-soft: #faf1de;--ok: #2f7d5b;--ok-soft: #e2f0e9;--danger: #b4402f;--danger-soft: #f9e7e3;--info: #3a6f8a;--info-soft: #e4eef4;--ink: #1b2b32;--muted: #49585f;--faint: #68767e;--fs-body: 15px;--fs-ctl: 14px;--fs-aux: 13px;--fs-meta: 12px;--bg: #f4f7f8;--panel: #ffffff;--line: #d4dde0;--line-soft: #e6ecee;--ctl-h: 36px;--ctl-h-sm: 30px;--radius: 8px;--radius-sm: 6px;--shadow: 0 1px 2px rgba(15, 41, 48, .07);--shadow-hover: 0 4px 14px rgba(15, 41, 48, .1);--shadow-lg: 0 10px 30px rgba(10, 53, 64, .18);--font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);font-size:var(--fs-body);line-height:1.65;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;line-height:1.35}p{margin:0}a{color:var(--brand);text-decoration:none}button{font-family:inherit}:focus{outline:none}:focus-visible{outline:2px solid var(--brand);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*{transition:none!important;animation:none!important}}.shell{display:flex;min-height:100vh}.shell-side{width:224px;flex-shrink:0;background:var(--brand-deep);color:#dce8ec;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.shell-brand{padding:20px 18px 16px;border-bottom:1px solid rgba(255,255,255,.12)}.shell-brand strong{display:block;font-size:16px;color:#fff;letter-spacing:.02em}.shell-brand span{font-size:var(--fs-meta);color:#9db8c0}.shell-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:2px}.shell-nav a{display:block;padding:9px 12px;border-radius:var(--radius-sm);color:#c3d6dc;font-size:var(--fs-ctl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-nav a:hover{background:#ffffff14;color:#fff}.shell-nav a.active{background:var(--brand);color:#fff;font-weight:500}.shell-user{padding:14px 16px;border-top:1px solid rgba(255,255,255,.12);display:flex;align-items:center;justify-content:space-between;gap:10px}.shell-user .shell-user-meta{min-width:0;font-size:var(--fs-aux);color:#9db8c0;line-height:1.5}.shell-user .shell-user-meta strong{display:block;color:#e6eff2;font-weight:500;font-size:var(--fs-ctl);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-user .btn{flex-shrink:0;background:transparent;border-color:#ffffff47;color:#c3d6dc}.shell-user .btn:hover{border-color:#fff9;color:#fff;background:#ffffff14}.shell-main{flex:1;min-width:0;display:flex;flex-direction:column}.shell-topbar{background:var(--panel);border-bottom:1px solid var(--line);padding:12px 24px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:20}.shell-topbar .page-title{font-size:16px;font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell-body{padding:24px;flex:1;max-width:1160px;width:100%;margin-inline:auto}.shell-body-ent{max-width:none;padding:0}.page-container{width:100%;max-width:1120px;margin-inline:auto;padding:24px}.ent-topbar{background:var(--brand-deep);color:#dce8ec;padding:0 24px;display:flex;align-items:center;gap:16px;min-height:56px;position:sticky;top:0;z-index:20;flex-wrap:wrap}.ent-topbar strong{color:#fff;font-size:16px;letter-spacing:.02em;white-space:nowrap}.ent-topbar nav{display:flex;gap:4px;flex:1;flex-wrap:wrap;min-width:0}.ent-topbar nav a{color:#c3d6dc;padding:6px 12px;border-radius:var(--radius-sm);font-size:var(--fs-ctl);white-space:nowrap}.ent-topbar nav a:hover{color:#fff;background:#ffffff14}.ent-topbar nav a.active{color:#fff;background:var(--brand);font-weight:500}.user-block{display:flex;align-items:center;gap:10px;min-width:0}.user-block .user-meta{font-size:var(--fs-aux);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}.ent-topbar .user-meta{color:#9db8c0}.ent-topbar .user-block .btn{background:transparent;border-color:#ffffff47;color:#c3d6dc}.ent-topbar .user-block .btn:hover{border-color:#fff9;color:#fff;background:#ffffff14}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--ctl-h);padding:6px 16px;font-size:var(--fs-ctl);border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;line-height:1.5;white-space:nowrap;transition:background .15s,border-color .15s,color .15s}.btn:hover{border-color:var(--brand);color:var(--brand)}.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:500}.btn-primary:hover{background:var(--brand-deep);border-color:var(--brand-deep);color:#fff}.btn-danger{color:var(--danger);border-color:#dfb2a9;background:var(--panel)}.btn-danger:hover{border-color:var(--danger);color:#fff;background:var(--danger)}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn[disabled]:hover{border-color:var(--line);color:var(--ink);background:var(--panel)}.btn-primary[disabled]:hover{background:var(--brand);border-color:var(--brand);color:#fff}.btn-sm{min-height:var(--ctl-h-sm);padding:3px 12px;font-size:var(--fs-aux)}.field{display:flex;flex-direction:column;gap:5px;margin-bottom:14px}.field label{font-size:var(--fs-aux);color:var(--muted);font-weight:500}.field .required{color:var(--danger);margin-left:2px}.input,.field input,.field select,.field textarea{font-family:inherit;font-size:var(--fs-ctl);min-height:var(--ctl-h);padding:7px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);width:100%}.field textarea{resize:vertical;min-height:84px}.field input:focus,.field select:focus,.field textarea:focus,.input:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 2px #0f4c5c26}.field-error{font-size:var(--fs-meta);color:var(--danger)}.field.has-error input,.field.has-error select,.field.has-error textarea{border-color:var(--danger)}.field.has-error input:focus,.field.has-error select:focus,.field.has-error textarea:focus{box-shadow:0 0 0 2px #b4402f26}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:20px 22px}.card-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}.card-head h2{font-size:18px}.section-title{font-size:15px;font-weight:600;margin-bottom:12px}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:var(--fs-aux)}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}table.table{width:100%;border-collapse:collapse;font-size:var(--fs-ctl)}.table th{text-align:left;font-weight:500;color:var(--muted);font-size:var(--fs-aux);padding:11px 14px;border-bottom:1px solid var(--line);background:#f7f9fa;white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}.table tbody tr:hover td{background:#f4f8f9}.table tr:last-child td{border-bottom:none}.table .code{font-variant-numeric:tabular-nums;white-space:nowrap}.badge{display:inline-block;padding:1px 10px;border-radius:999px;font-size:var(--fs-meta);line-height:1.7;white-space:nowrap;border:1px solid transparent}.badge-ok{color:var(--ok);background:var(--ok-soft);border-color:#bcd9cc}.badge-warn{color:var(--accent);background:var(--accent-soft);border-color:#e8d3ac}.badge-danger{color:var(--danger);background:var(--danger-soft);border-color:#e3bcb4}.badge-muted{color:var(--muted);background:#eef1f2;border-color:var(--line)}.badge-info{color:var(--brand);background:var(--brand-soft);border-color:#c2d8dd}.ent-hero{background:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px),linear-gradient(150deg,var(--brand-deep) 0%,var(--brand) 62%,#16606f 100%);background-size:30px 30px,30px 30px,100% 100%;color:#dce8ec;padding:44px 24px 40px}.ent-hero .page-container{padding-top:0;padding-bottom:0}.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:40px;align-items:center}.ent-hero h1{color:#fff;font-size:28px;margin-bottom:10px}.ent-hero .hero-copy p{color:#b4ccd4;max-width:560px;font-size:var(--fs-ctl)}.hero-stats{display:flex;gap:26px;flex-wrap:wrap;margin-top:20px;color:#b4ccd4;font-size:var(--fs-aux)}.hero-stats strong{color:#fff;font-size:22px;font-weight:600;font-variant-numeric:tabular-nums;margin-right:4px}.showcase{background:var(--panel);color:var(--ink);border-radius:12px;padding:14px 14px 12px;box-shadow:0 16px 40px #06202859;min-width:0}.showcase-label{font-size:var(--fs-meta);font-weight:600;color:var(--accent);margin-bottom:8px}.showcase-card{display:flex;flex-direction:column;gap:6px;width:100%;padding:0;border:none;background:transparent;text-align:left;cursor:pointer;color:inherit;animation:showcase-in .3s ease-out}@keyframes showcase-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.showcase-card .device-glyph-lg{height:128px;margin-bottom:4px}.showcase-name{font-size:16px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.showcase-meta{font-size:var(--fs-meta);color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.showcase-desc{font-size:var(--fs-aux);color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.showcase-cta{align-self:flex-start;margin-top:4px;font-size:var(--fs-aux);font-weight:500;color:var(--brand);border-bottom:1px solid transparent}.showcase-card:hover .showcase-cta{border-bottom-color:var(--brand)}.showcase-controls{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}.showcase-nav{width:30px;height:30px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--brand);font-size:16px;line-height:1;cursor:pointer;transition:border-color .15s,background .15s,color .15s}.showcase-nav:hover{border-color:var(--brand);background:var(--brand-soft)}.showcase-dots{display:flex;gap:2px;justify-content:center}.showcase-dots button{position:relative;width:20px;height:16px;padding:0;border:none;background:transparent;cursor:pointer}.showcase-dots button:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:7px;height:7px;border-radius:999px;background:var(--line);transition:background .15s,width .15s}.showcase-dots button:hover:after{background:var(--faint)}.showcase-dots button.active:after{width:16px;background:var(--brand)}.showcase-count{font-size:var(--fs-meta);color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap}.hero-grid.hero-grid-solo{grid-template-columns:1fr}.list-anchor{scroll-margin-top:76px}.category-row{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.chip{min-height:var(--ctl-h);padding:5px 16px;border-radius:999px;border:1px solid var(--line);background:var(--panel);cursor:pointer;font-size:var(--fs-ctl);color:var(--ink);transition:border-color .15s,background .15s,color .15s}.chip:hover{border-color:var(--brand);color:var(--brand)}.chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.chip .count{font-size:var(--fs-meta);opacity:.75;margin-left:4px}.device-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:18px}.device-card{display:flex;flex-direction:column;padding:14px;gap:10px;transition:border-color .15s,box-shadow .15s,transform .15s}.device-card:hover{border-color:var(--brand);box-shadow:var(--shadow-hover);transform:translateY(-1px)}.device-visual{position:relative}.device-visual-badge{position:absolute;top:8px;left:8px}.device-visual-badge .badge{background:#ffffffeb;box-shadow:var(--shadow)}.device-glyph{height:112px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.device-card .device-head{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.device-card .device-name{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-card .device-code{font-size:var(--fs-meta);color:var(--faint);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.device-card .device-cat{flex-shrink:0;font-size:var(--fs-meta);color:var(--brand);background:var(--brand-soft);border-radius:999px;padding:1px 8px;line-height:1.7;white-space:nowrap}.device-card .device-desc{font-size:var(--fs-aux);color:var(--muted);flex:1;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.device-card footer{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:10px;border-top:1px solid var(--line-soft)}.device-card .device-location{min-width:0;font-size:var(--fs-meta);color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.toolbar .input,.toolbar select{width:auto;min-width:150px;min-height:var(--ctl-h);padding:7px 12px;font-size:var(--fs-ctl);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);font-family:inherit;color:var(--ink)}.toolbar .spacer{flex:1}.pagination{display:flex;gap:6px;align-items:center;justify-content:flex-end;margin-top:14px;font-size:var(--fs-aux);color:var(--muted);flex-wrap:wrap}.pagination button{min-width:var(--ctl-h-sm);min-height:var(--ctl-h-sm);padding:3px 9px;border:1px solid var(--line);background:var(--panel);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--fs-aux);color:var(--ink);line-height:1.5}.pagination button:hover{border-color:var(--brand);color:var(--brand)}.pagination button.current{background:var(--brand);border-color:var(--brand);color:#fff}.pagination button.current:hover{color:#fff}.pagination button[disabled]{opacity:.5;cursor:not-allowed}.pagination button[disabled]:hover{border-color:var(--line);color:var(--ink)}.empty-state{text-align:center;padding:52px 24px;color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius);background:var(--panel)}.empty-state .empty-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px}.empty-state p{margin-bottom:14px;font-size:var(--fs-ctl)}.empty-state .btn:last-child{margin-bottom:0}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:20px}.stat-card{padding:16px 18px;border-left:3px solid var(--line)}.stat-card .stat-value{font-size:28px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--brand-deep);line-height:1.3}.stat-card .stat-label{font-size:var(--fs-aux);color:var(--muted);margin-top:2px}.stat-card.stat-neutral{border-left-color:var(--brand-deep)}.stat-card.stat-ok{border-left-color:var(--ok)}.stat-card.stat-ok .stat-value{color:var(--ok)}.stat-card.stat-warn{border-left-color:var(--accent)}.stat-card.stat-warn .stat-value{color:var(--accent)}.stat-card.stat-info{border-left-color:var(--info)}.stat-card.stat-info .stat-value{color:var(--info)}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-size:var(--fs-aux)}.bar-row:last-child{margin-bottom:0}.bar-row .bar-label{width:76px;color:var(--muted);flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-row .bar-track{flex:1;height:10px;background:#edf1f2;border-radius:999px;overflow:hidden}.bar-row .bar-fill{display:block;height:100%;background:var(--brand);border-radius:999px}.bar-fill.bar-ok{background:var(--ok)}.bar-fill.bar-info{background:var(--info)}.bar-fill.bar-warn{background:var(--accent)}.bar-fill.bar-danger{background:var(--danger)}.bar-fill.bar-muted{background:#9aa8ae}.bar-row .bar-value{width:34px;text-align:right;font-variant-numeric:tabular-nums;color:var(--ink)}.demo-fab{position:fixed;right:18px;bottom:18px;z-index:60;border-radius:999px;min-height:var(--ctl-h);padding:6px 16px;background:var(--panel);color:var(--muted);border:1px solid var(--line);cursor:pointer;box-shadow:var(--shadow);font-size:var(--fs-aux);transition:border-color .15s,color .15s,box-shadow .15s}.demo-fab:hover,.demo-fab[aria-expanded=true]{color:var(--brand);border-color:var(--brand);background:var(--panel);box-shadow:var(--shadow-hover)}.demo-panel{position:fixed;right:18px;bottom:66px;z-index:60;width:360px;max-width:calc(100vw - 36px);max-height:calc(100vh - 120px);overflow-y:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:18px}.demo-panel h3{font-size:15px;margin-bottom:4px}.demo-panel .panel-note{font-size:var(--fs-meta);color:var(--muted);margin-bottom:14px}.option-group{border-top:1px solid var(--line-soft);padding-top:12px;margin-top:12px}.option-group .option-q{font-size:var(--fs-aux);font-weight:600;margin-bottom:2px}.option-group .option-ref{font-size:var(--fs-meta);color:var(--faint);margin-bottom:8px}.option-choice{display:flex;gap:8px;align-items:flex-start;padding:7px 9px;border:1px solid var(--line);border-radius:var(--radius-sm);margin-bottom:6px;cursor:pointer;font-size:var(--fs-aux)}.option-choice:hover{border-color:var(--brand)}.option-choice.selected{border-color:var(--brand);background:var(--brand-soft)}.option-choice input{margin-top:3px}.option-choice .choice-desc{color:var(--muted);font-size:var(--fs-meta)}.role-switch{display:flex;gap:6px;flex-wrap:wrap}.toast-stack{position:fixed;right:20px;bottom:64px;z-index:100;display:flex;flex-direction:column;gap:8px;align-items:flex-end;pointer-events:none}.toast{background:var(--ink);color:#fff;padding:9px 18px;border-radius:var(--radius);font-size:var(--fs-aux);box-shadow:0 6px 18px #00000040;animation:toast-in .2s ease-out}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(160deg,var(--brand-deep) 0%,var(--brand) 58%,#1a6475 100%)}.login-card{width:100%;max-width:780px;background:var(--panel);border-radius:12px;padding:36px;box-shadow:0 20px 50px #06202866}.login-card h1{font-size:24px;color:var(--brand-deep);margin-bottom:6px}.login-card .login-sub{color:var(--muted);font-size:var(--fs-ctl);margin-bottom:22px}.login-card .login-label{font-size:var(--fs-aux);font-weight:600;color:var(--ink);margin-bottom:10px}.login-accounts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.account-card{text-align:left;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;background:var(--panel);cursor:pointer;display:flex;flex-direction:column;gap:4px;font-size:var(--fs-ctl);color:var(--ink);transition:border-color .15s,box-shadow .15s,transform .15s}.account-card:hover{border-color:var(--brand);box-shadow:var(--shadow-hover);transform:translateY(-1px)}.account-card:active{transform:translateY(0);box-shadow:var(--shadow);background:var(--brand-soft)}.account-card .acc-name{font-weight:600;font-size:15px}.account-card .acc-role{align-self:flex-start;font-size:var(--fs-meta);color:var(--brand);background:var(--brand-soft);border-radius:999px;padding:0 8px;line-height:1.7}.account-card .acc-meta{font-size:var(--fs-meta);color:var(--muted)}.link-back{display:inline-flex;align-items:center;gap:4px;padding:0;margin-bottom:14px;border:none;background:transparent;color:var(--brand);font-size:var(--fs-ctl);cursor:pointer}.link-back:hover{text-decoration:underline}.detail-visual{height:148px;margin-bottom:14px}.detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:18px;align-items:start;width:100%;max-width:1080px;margin-inline:auto}.kv-list{display:grid;grid-template-columns:104px 1fr;row-gap:9px;column-gap:12px;font-size:var(--fs-ctl)}.kv-list dt{color:var(--muted)}.kv-list dd{margin:0;min-width:0}.banner{border:1px solid #e8d3ac;background:var(--accent-soft);color:#6f4d10;border-radius:var(--radius);padding:12px 16px;margin-bottom:16px;font-size:var(--fs-ctl)}.banner.banner-ok{border-color:#bcd9cc;background:var(--ok-soft);color:#1e5a40}.banner.banner-danger{border-color:#e3bcb4;background:var(--danger-soft);color:#7e2f22}.form-card{max-width:640px;margin-inline:auto}.actions-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px}.actions-row.flush{margin-top:0}.tag-private{font-size:var(--fs-meta);color:var(--accent)}@media (max-width: 900px){.shell{flex-direction:column}.shell-side{width:100%;height:auto;position:static}.shell-nav{flex-direction:row;overflow-x:auto;padding:8px 10px}.shell-nav a{white-space:nowrap}.shell-brand{padding:12px 16px}.shell-user{padding:10px 16px}.shell-body{padding:16px}.shell-topbar{padding:10px 16px}.page-container{padding:16px}.detail-grid{grid-template-columns:1fr}.ent-hero{padding:28px 16px 26px}.hero-grid{grid-template-columns:1fr;gap:22px}.hero-stats{gap:18px;margin-top:14px}.showcase-card .device-glyph-lg{height:104px}.detail-visual{height:120px}.ent-hero h1{font-size:22px}.ent-topbar{padding:8px 16px;gap:10px}.user-block .user-meta{max-width:200px}.login-card{padding:24px}.device-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}}
