:root{--bg: #f2f5f8;--bg-soft: #e9eff5;--card: #ffffff;--ink: #102335;--ink-2: #33475b;--muted: #6f8296;--line: #e2eaf1;--line-strong: #cfdae5;--navy: #0b1728;--navy-2: #102a44;--teal: #0f9d86;--teal-bright: #38e1c6;--teal-soft: #e4f7f3;--blue: #3b7ddd;--blue-soft: #eaf1fd;--amber: #c9821c;--amber-soft: #fdf3e3;--red: #cf4f3c;--red-soft: #fbece9;--violet: #7b61c9;--violet-soft: #f0ecfb;--green: #2c8a5f;--green-soft: #e7f6ee;--shadow-sm: 0 1px 2px rgba(16, 35, 53, .05);--shadow: 0 10px 30px -18px rgba(16, 35, 53, .28);--shadow-lg: 0 24px 60px -24px rgba(9, 25, 42, .35);--radius: 15px;--radius-sm: 9px;--sidebar: 238px;--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--mono: "SF Mono", "SFMono-Regular", ui-monospace, Menlo, Consolas, monospace}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:radial-gradient(1200px 500px at 85% -10%,rgba(56,225,198,.08),transparent 60%),radial-gradient(900px 500px at -10% 20%,rgba(59,125,221,.07),transparent 55%),var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}img{max-width:100%}code{font-family:var(--mono);font-size:.92em;color:#24506c;background:#eef4f8;border-radius:5px;padding:1px 5px}h1,h2,h3,h4,p{margin:0}h1,h2,h3,h4{letter-spacing:-.01em}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:#c8d5e1;border-radius:10px;border:2px solid var(--bg)}::-webkit-scrollbar-track{background:transparent}.app-shell{min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--sidebar);z-index:50;display:flex;flex-direction:column;gap:18px;padding:20px 14px 16px;background:radial-gradient(500px 300px at 0% 0%,rgba(56,225,198,.13),transparent 65%),radial-gradient(400px 300px at 100% 100%,rgba(59,125,221,.16),transparent 70%),linear-gradient(180deg,#0a1626,#0d1e31 55%,#0a1727);color:#d8e5f0;border-right:1px solid #1a3147}.brand{display:flex;align-items:center;gap:11px;padding:2px 8px 12px}.brand-mark{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-weight:800;font-size:19px;color:#06212a;flex:none;background:linear-gradient(135deg,var(--teal-bright),#56b7ff);box-shadow:0 8px 20px -8px #38e1c6b3;clip-path:polygon(50% 0,96% 24%,96% 76%,50% 100%,4% 76%,4% 24%)}.brand-mark.large{width:52px;height:52px;font-size:25px;border-radius:15px}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-text strong{font-size:14px;letter-spacing:.06em;color:#f2fbff;white-space:nowrap}.brand-text span{font-size:10.5px;color:#7f9ab1;letter-spacing:.16em;margin-top:3px;white-space:nowrap}.icon-btn.sidebar-close{display:none;margin-left:auto;color:#a9c0d4}.sidebar-project{display:flex;gap:9px;align-items:center;margin:0 4px;padding:10px 11px;background:#ffffff0b;border:1px solid rgba(255,255,255,.07);border-radius:10px}.sidebar-project div{display:flex;flex-direction:column;min-width:0}.sidebar-project strong{font-size:12px;color:#dceaf5}.sidebar-project small{font-size:10px;color:#6f8aa0;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pulse-dot{width:7px;height:7px;border-radius:50%;background:var(--teal-bright);box-shadow:0 0 #38e1c680;animation:pulse 2.4s infinite;flex:none}@keyframes pulse{0%{box-shadow:0 0 #38e1c673}70%{box-shadow:0 0 0 9px #38e1c600}to{box-shadow:0 0 #38e1c600}}.nav{display:flex;flex-direction:column;gap:3px;overflow-y:auto}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;color:#9db3c6;font-size:13px;transition:background .16s,color .16s,transform .16s;border:1px solid transparent}.nav-item:hover{background:#ffffff0d;color:#eaf7ff}.nav-item.active{background:linear-gradient(90deg,#38e1c629,#3b7ddd1a);color:#eafffb;border-color:#38e1c62e}.nav-item.active svg{color:var(--teal-bright)}.nav-hint{margin-left:auto;font-size:9px;letter-spacing:.08em;padding:1px 6px;border-radius:20px;background:#f2a93b29;color:#f2c06a}.sidebar-foot{margin-top:auto;display:flex;flex-direction:column;gap:9px}.sidebar-note{display:flex;gap:8px;padding:9px 10px;border-radius:9px;background:#cf4f3c14;border:1px solid rgba(207,79,60,.18);color:#d7a79e;font-size:10.5px;line-height:1.45}.sidebar-note svg{flex:none;color:#e58a74;margin-top:1px}.sidebar-version{text-align:center;font-size:9.5px;color:#4e6a80;letter-spacing:.1em}.sidebar-scrim{display:none}.main-shell{margin-left:var(--sidebar);min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;height:64px;display:flex;align-items:center;justify-content:space-between;padding:0 26px;background:#ffffffdb;-webkit-backdrop-filter:blur(14px) saturate(1.4);backdrop-filter:blur(14px) saturate(1.4);border-bottom:1px solid var(--line)}.topbar-left,.topbar-right{display:flex;align-items:center;gap:13px}.topbar-title{display:flex;flex-direction:column;line-height:1.2}.topbar-title small{font-size:9.5px;letter-spacing:.14em;color:#8ba0b3;text-transform:uppercase}.topbar-title strong{font-size:15px;margin-top:3px}.icon-btn.mobile-menu{display:none}.sim-banner{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:20px;background:var(--amber-soft);color:#91600f;font-size:11px;font-weight:600;border:1px solid #f0dcb6}.sim-dot{width:6px;height:6px;border-radius:50%;background:#d99a2b}.user-menu{position:relative}.user-chip{display:flex;align-items:center;gap:9px;background:transparent;border:1px solid transparent;padding:5px 7px;border-radius:10px}.user-chip:hover{background:#f2f6fa;border-color:var(--line)}.avatar{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#173a54,#0f9d86);color:#fff;font-weight:700;font-size:13px}.user-meta{display:flex;flex-direction:column;line-height:1.15;text-align:left}.user-meta strong{font-size:12.5px}.user-meta small{font-size:10px;color:var(--muted);margin-top:2px}.user-popover{position:absolute;right:0;top:calc(100% + 9px);width:250px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow-lg);padding:8px;z-index:60}.user-popover-head{padding:10px 10px 9px;display:flex;flex-direction:column;border-bottom:1px solid var(--line)}.user-popover-head strong{font-size:13px}.user-popover-head span{font-size:11px;color:var(--muted);margin-top:2px}.perm-list{padding:9px 10px;font-size:11px;color:var(--muted)}.user-popover-action{width:100%;display:flex;align-items:center;gap:8px;background:none;border:0;padding:9px 10px;border-radius:8px;font-size:12.5px;color:var(--red)}.user-popover-action:hover{background:var(--red-soft)}.global-notice{display:flex;align-items:center;gap:9px;padding:8px 26px;background:#f7fbfd;border-bottom:1px solid #e7eff5;color:#5f7c90;font-size:11.5px}.global-notice svg{color:var(--teal);flex:none}.global-notice strong{color:#a86b13}.content{width:100%;max-width:1560px;margin:0 auto;padding:24px 26px 64px;flex:1}.page{display:flex;flex-direction:column;gap:18px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:2px}.page-eyebrow{display:flex;align-items:center;gap:7px;font-size:10.5px;letter-spacing:.1em;color:#7c93a7;font-weight:600;text-transform:uppercase;margin-bottom:7px}.page-title{font-size:clamp(24px,2.4vw,31px);line-height:1.15;letter-spacing:-.025em;font-weight:760}.page-subtitle{margin-top:8px;color:var(--muted);font-size:13px;max-width:760px}.page-actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--teal);box-shadow:0 0 0 4px #0f9d861c;animation:pulse-teal 2.4s infinite}@keyframes pulse-teal{0%,to{box-shadow:0 0 0 3px #0f9d861a}50%{box-shadow:0 0 0 7px #0f9d8608}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line-strong);background:#fff;color:var(--ink-2);padding:8px 13px;border-radius:9px;font-size:12.5px;font-weight:600;transition:border-color .15s,background .15s,transform .12s,box-shadow .15s;white-space:nowrap}.btn:hover{border-color:#b8c9d7;background:#fbfdff;box-shadow:var(--shadow-sm)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{background:linear-gradient(180deg,#12a58d,#0c8a76);border-color:#0c816f;color:#fff;box-shadow:0 6px 16px -10px #0c8a76cc}.btn-primary:hover{background:linear-gradient(180deg,#14b096,#0d957f);border-color:#0c816f;color:#fff}.btn-danger{background:var(--red);border-color:#b94231;color:#fff}.btn-danger:hover{background:#b94231;color:#fff}.btn-danger-ghost{color:var(--red);border-color:#f0d3ce;background:snow}.btn-sm{padding:6px 10px;font-size:11.5px;border-radius:8px}.btn-xs{padding:4px 8px;font-size:10.5px;border-radius:7px;gap:4px}.btn-lg{padding:12px 18px;font-size:14px;border-radius:11px}.btn-block{width:100%;margin-top:14px;padding:10px}.icon-btn{border:0;background:transparent;width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:#60798f}.icon-btn:hover{background:#eef4f9;color:var(--ink)}.link-arrow{display:inline-flex;align-items:center;gap:3px;color:var(--teal);font-size:11.5px;font-weight:600}.link-arrow:hover{text-decoration:underline}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm);min-width:0}.card-clickable{cursor:pointer;transition:transform .16s,box-shadow .16s,border-color .16s}.card-clickable:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:#d6e3ee}.card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:13px}.card-title{font-size:14.5px;font-weight:700;letter-spacing:-.01em}.card-subtitle{color:var(--muted);font-size:11.5px;margin-top:4px}.card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:none}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.stack{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.muted{color:var(--muted)}.small{font-size:11px}.mono{font-family:var(--mono)}.span-2{grid-column:span 2}.section-title{font-size:12.5px;margin:18px 0 9px;color:var(--ink-2)}.section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin:6px 0 12px}.section-heading h2{font-size:16px}.section-heading p{color:var(--muted);font-size:11.5px;margin-top:3px}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.stat-card{display:flex;gap:12px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;position:relative;overflow:hidden}.stat-card:after{content:"";position:absolute;inset:0 0 auto 0;height:2px;background:currentColor;opacity:.8}.stat-icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal)}.stat-body{min-width:0}.stat-label{font-size:11.5px;color:var(--muted);font-weight:600}.stat-value{font-size:28px;line-height:1.15;font-weight:750;margin-top:3px;letter-spacing:-.03em}.stat-sub{font-size:10.5px;color:var(--muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-teal{color:var(--teal)}.stat-blue{color:var(--blue)}.stat-amber{color:var(--amber)}.stat-red{color:var(--red)}.stat-violet{color:var(--violet)}.stat-blue .stat-icon{background:var(--blue-soft);color:var(--blue)}.stat-amber .stat-icon{background:var(--amber-soft);color:var(--amber)}.stat-red .stat-icon{background:var(--red-soft);color:var(--red)}.stat-violet .stat-icon{background:var(--violet-soft);color:var(--violet)}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 7px;border-radius:20px;font-size:10px;font-weight:650;white-space:nowrap;line-height:1.6;border:1px solid transparent}.badge-dot{width:5px;height:5px;border-radius:50%;background:currentColor}.badge-neutral{background:#f0f4f8;border-color:#e0e9f0;color:#60798f}.badge-teal{background:var(--teal-soft);border-color:#c9ece4;color:#0a7a68}.badge-blue{background:var(--blue-soft);border-color:#d5e4fb;color:#2b63b3}.badge-amber{background:var(--amber-soft);border-color:#f3dfbd;color:#986410}.badge-red{background:var(--red-soft);border-color:#f2d3cc;color:#a83c2b}.badge-violet{background:var(--violet-soft);border-color:#ddd4f5;color:#6048a8}.badge-green{background:var(--green-soft);border-color:#cceadb;color:#226f4c}.sim-tag{display:inline-flex;align-items:center;padding:1px 6px;border-radius:4px;font-size:9.5px;font-weight:700;letter-spacing:.06em;color:#9a6713;background:#fff5df;border:1px solid #f0ddb5}.sim-tag-compact{padding:0 4px;font-size:8.5px}.est-badge-wrap{display:inline-flex;align-items:center;gap:4px;flex-wrap:wrap}.filter-card{padding:13px 16px}.filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.search-box{display:flex;align-items:center;gap:7px;border:1px solid var(--line-strong);border-radius:9px;padding:7px 10px;background:#fbfdff;min-width:250px;flex:1;max-width:360px;color:var(--muted)}.search-box.small{min-width:0;max-width:none;width:100%;margin-bottom:9px}.search-box input{border:0;outline:0;background:transparent;width:100%;font-size:12px;color:var(--ink)}.filter-chips{display:flex;gap:5px;flex-wrap:wrap;flex:1}.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:4px 10px;font-size:10.5px;color:var(--muted);font-weight:600}.chip:hover{border-color:#b8c9d7;color:var(--ink)}.chip.active{background:var(--navy);border-color:var(--navy);color:#fff}.filter-meta{display:flex;align-items:center;gap:6px;color:#8ba0b3;font-size:10.5px;margin-top:9px}.input{width:100%;border:1px solid var(--line-strong);border-radius:9px;padding:8px 10px;font-size:12.5px;background:#fbfdff;outline:0;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:#89cfc2;box-shadow:0 0 0 3px #0f9d861a;background:#fff}textarea.input{resize:vertical}.select-sm{width:auto;min-width:110px;padding:6px 9px}.select-xs{width:auto;min-width:96px;padding:5px 7px;font-size:10.5px}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field-label{font-size:11px;font-weight:650;color:var(--ink-2)}.field-hint{font-size:10px;color:var(--muted)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.check-line{display:flex;align-items:center;gap:7px;font-size:11.5px;padding:4px 0;cursor:pointer}.check-line input{accent-color:var(--teal)}.check-list{max-height:160px;overflow-y:auto;border:1px solid var(--line);border-radius:8px;padding:6px 9px;background:#fbfdff}.switch-label{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--muted);cursor:pointer}.switch-label input{accent-color:var(--teal)}.inline-note{border-left:3px solid var(--teal);background:#f4fbf9;padding:10px 13px;border-radius:0 8px 8px 0;font-size:11.5px;color:#4f6f77}.inline-note strong{color:#0a6f60}.map-footnote{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10.5px}.table-card{padding:0;overflow:hidden}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:12px;min-width:760px}.data-table th{text-align:left;font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:#8196a9;font-weight:650;padding:10px 13px;background:#f8fbfd;border-bottom:1px solid var(--line);white-space:nowrap}.data-table td{padding:10px 13px;border-bottom:1px solid #edf2f6;vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfdff}.data-table tr.clickable{cursor:pointer}.data-table.compact th,.data-table.compact td{padding:7px 9px}.cell-main{display:flex;flex-direction:column;gap:2px;min-width:0;align-items:flex-start}.cell-main strong{font-size:12px;font-weight:650}.cell-main small{font-size:10px;color:var(--muted)}.cell-main code{font-size:10px;width:fit-content}.tag-count{display:inline-flex;align-items:center;gap:5px;font-weight:650}.tag-dot{width:6px;height:6px;border-radius:2px;background:var(--teal)}.row-actions{display:flex;gap:4px;justify-content:flex-end;flex-wrap:wrap}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#07131f7a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;display:flex;align-items:center;justify-content:center;padding:20px;animation:fadein .15s ease-out}.overlay-right{justify-content:flex-end;padding:0;align-items:stretch}@keyframes fadein{0%{opacity:0}to{opacity:1}}.modal{width:100%;max-height:calc(100vh - 40px);background:#fff;border-radius:16px;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;overflow:hidden;animation:rise .18s ease-out}@keyframes rise{0%{transform:translateY(10px);opacity:.6}to{transform:none;opacity:1}}.modal-head,.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:17px 19px 14px;border-bottom:1px solid var(--line)}.modal-head h3,.drawer-head h3{font-size:16px}.modal-head p,.drawer-head p{color:var(--muted);font-size:11.5px;margin-top:3px}.modal-body{padding:18px 19px;overflow-y:auto}.modal-foot{padding:12px 19px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px;background:#fbfdff}.drawer{background:#fff;height:100%;max-width:100vw;display:flex;flex-direction:column;box-shadow:-20px 0 50px -20px #07131f4d;animation:slidein .2s ease-out}@keyframes slidein{0%{transform:translate(24px);opacity:.7}to{transform:none;opacity:1}}.drawer-body{padding:17px 19px 24px;overflow-y:auto;flex:1}.drawer-foot{border-top:1px solid var(--line);padding:12px 19px}.drawer-footnote{color:var(--muted);font-size:10.5px;display:flex;align-items:center;gap:6px;margin-top:16px;border-top:1px dashed var(--line);padding-top:12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:30px 14px;text-align:center;color:var(--muted)}.empty-icon{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#f0f5f9;color:#94a9bc}.empty-state strong{color:var(--ink-2);font-size:12.5px}.empty-state p{font-size:11px;max-width:320px}.spinner{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-block{display:grid;place-items:center;min-height:320px}.error-block{display:flex;gap:11px;align-items:center;padding:16px;border:1px solid #f0d3cc;background:#fff8f6;border-radius:12px;color:#8d3a2c}.error-block strong{font-size:12.5px}.error-block p{font-size:11px;margin-top:2px}.error-block .btn{margin-left:auto}.sparkline{display:block;overflow:visible}.spark-empty,.chart-empty{color:var(--muted);font-size:11px;padding:10px 0}.gauge{position:relative;flex:none;color:var(--teal)}.gauge svg{width:100%;height:100%}.gauge-text{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}.gauge-text strong{font-size:20px;font-weight:750;color:var(--ink)}.gauge-text span{font-size:9px;color:var(--muted);margin-top:2px}.gauge-amber{color:var(--amber)}.gauge-red{color:var(--red)}.gauge-blue{color:var(--blue)}.confidence{display:flex;align-items:center;gap:8px;flex:1;max-width:260px}.confidence-track{height:5px;border-radius:4px;background:#e8eef4;overflow:hidden;flex:1}.confidence-track span{display:block;height:100%;background:linear-gradient(90deg,#2f9e8f,#38e1c6);border-radius:4px}.confidence-text{font-size:10.5px;color:var(--muted);font-weight:650}.quality-banner{display:flex;align-items:flex-start;gap:10px;padding:11px 13px;border-radius:10px;margin:12px 0;border:1px solid;font-size:11.5px}.quality-banner div{flex:1}.quality-banner strong{display:block;font-size:12px}.quality-banner p{margin-top:3px;opacity:.85}.quality-banner>svg{flex:none;margin-top:1px}.quality-info{background:#f2f8fd;border-color:#d8e8f6;color:#2c5d82}.quality-warn{background:#fffaf0;border-color:#f2dfba;color:#8b641d}.quality-danger{background:#fff5f2;border-color:#f1cfc7;color:#963f2e}.tabs{display:flex;gap:3px;border-bottom:1px solid var(--line);margin:12px 0;overflow-x:auto}.tab{border:0;background:none;padding:8px 11px;font-size:12px;color:var(--muted);font-weight:600;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:5px}.tab:hover{color:var(--ink)}.tab.active{color:var(--teal);border-bottom-color:var(--teal)}.tab-count{font-size:9.5px;background:#eef4f8;color:var(--muted);padding:0 5px;border-radius:8px}.tab.active .tab-count{background:var(--teal-soft);color:var(--teal)}.inline-status{display:inline-flex;align-items:center;gap:4px;font-size:11px}.inline-status.ok{color:var(--green)}.inline-status.bad{color:var(--red)}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px 16px;padding:12px;background:#f8fbfd;border:1px solid var(--line);border-radius:10px;margin:12px 0}.meta-grid div{display:flex;flex-direction:column;gap:2px}.meta-grid span{font-size:10px;color:var(--muted)}.meta-grid strong{font-size:12px;font-weight:650}.toast-stack{position:fixed;right:22px;bottom:22px;z-index:300;display:flex;flex-direction:column;gap:8px;max-width:360px}.toast{display:flex;align-items:center;gap:8px;padding:10px 13px;border-radius:10px;background:#102335;color:#eef7ff;font-size:12px;box-shadow:var(--shadow-lg);animation:toastin .2s ease-out}@keyframes toastin{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.toast-dot{width:7px;height:7px;border-radius:50%;background:#7fdccb;flex:none}.toast-success .toast-dot{background:#5ee0b8}.toast-error .toast-dot{background:#ff8c76}.login-page{min-height:100vh;display:grid;grid-template-columns:1.12fr .88fr;background:#f5f8fb}.login-hero{position:relative;overflow:hidden;color:#e7f4fb;background:linear-gradient(160deg,#07121f,#0b2035 48%,#0c2b3e);padding:46px 52px;display:flex;flex-direction:column}.login-grid{position:absolute;top:0;right:0;bottom:0;left:0;opacity:.5;background-image:linear-gradient(rgba(56,225,198,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(56,225,198,.07) 1px,transparent 1px);background-size:44px 44px;-webkit-mask-image:radial-gradient(ellipse at 30% 45%,black 10%,transparent 72%);mask-image:radial-gradient(ellipse at 30% 45%,black 10%,transparent 72%)}.login-hero:after{content:"";position:absolute;width:520px;height:520px;right:-160px;bottom:-180px;border-radius:50%;background:radial-gradient(circle,rgba(56,225,198,.18),transparent 65%);filter:blur(10px)}.login-brand{position:relative;display:flex;align-items:center;gap:13px}.login-brand div:last-child{display:flex;flex-direction:column}.login-brand strong{font-size:16px;letter-spacing:.1em}.login-brand span{font-size:10.5px;color:#7f9fb4;letter-spacing:.12em;margin-top:3px}.login-copy{position:relative;margin:auto 0;max-width:560px;padding:30px 0}.login-kicker{display:inline-block;font-size:9.5px;letter-spacing:.2em;color:#52cdb9;font-weight:700;margin-bottom:16px}.login-copy h1{font-size:clamp(30px,3.6vw,48px);line-height:1.14;letter-spacing:-.035em;font-weight:760;color:#f3fbff}.login-copy p{margin-top:18px;color:#93aec2;font-size:13.5px;line-height:1.75;max-width:480px}.login-features{display:flex;flex-wrap:wrap;gap:7px;margin-top:26px}.login-features div{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:8px;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);font-size:11px;color:#b7cede}.login-features svg{color:#4fd6c2}.login-hero-foot{position:relative;display:flex;justify-content:space-between;gap:12px;font-size:10px;color:#6e8ea4;border-top:1px solid rgba(255,255,255,.07);padding-top:16px}.login-hero-foot span{display:inline-flex;align-items:center;gap:5px}.login-panel{display:flex;align-items:center;justify-content:center;padding:38px 34px}.login-form-wrap{width:100%;max-width:380px}.login-form-head h2{font-size:25px;letter-spacing:-.02em}.login-form-head p{color:var(--muted);font-size:11.5px;margin-top:8px;line-height:1.6}.login-form{display:flex;flex-direction:column;gap:12px;margin-top:22px}.login-form label{display:flex;flex-direction:column;gap:5px}.login-form label span{font-size:11px;font-weight:650;color:var(--ink-2)}.login-form input{border:1px solid var(--line-strong);border-radius:10px;padding:10px 12px;background:#fff;outline:0;font-size:13px}.login-form input:focus{border-color:#79cabb;box-shadow:0 0 0 3px #0f9d861a}.form-error{background:var(--red-soft);border:1px solid #f0cdc6;color:#9b3c2b;border-radius:8px;padding:8px 10px;font-size:11px}.demo-accounts{margin-top:24px;border-top:1px dashed var(--line);padding-top:16px}.demo-accounts-title{font-size:10px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin-bottom:8px}.demo-account{width:100%;display:flex;align-items:center;gap:9px;padding:7px 8px;border:1px solid transparent;border-radius:9px;background:transparent;text-align:left}.demo-account:hover{background:#fff;border-color:var(--line)}.demo-avatar{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#e8f4f1;color:#0c8875;font-size:11px;font-weight:700}.demo-account-main{display:flex;flex-direction:column}.demo-account-main strong{font-size:11.5px}.demo-account-main small{font-size:10px;color:var(--muted);font-family:var(--mono)}.demo-account-desc{margin-left:auto;font-size:9.5px;color:#8ba0b3}.login-note{display:flex;gap:7px;margin-top:20px;padding:10px;border-radius:9px;background:#fff;border:1px solid var(--line);color:var(--muted);font-size:10px;line-height:1.55}.login-note svg{flex:none;color:var(--amber);margin-top:1px}.boot-screen{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#081522;color:#dceaf5}.boot-mark{width:54px;height:54px;display:grid;place-items:center;font-size:26px;font-weight:800;color:#06212a;background:linear-gradient(135deg,#38e1c6,#56b7ff);clip-path:polygon(50% 0,96% 24%,96% 76%,50% 100%,4% 76%,4% 24%)}.boot-text{font-size:11px;letter-spacing:.25em;color:#7e99ad}.boot-bar{width:150px;height:2px;background:#17324a;overflow:hidden;border-radius:2px}.boot-bar span{display:block;width:40%;height:100%;background:#38e1c6;animation:boot 1.1s infinite ease-in-out}@keyframes boot{0%{transform:translate(-100%)}to{transform:translate(260%)}}.donut-wrap{display:flex;align-items:center;gap:20px}.donut{width:154px;height:154px;flex:none}.donut-num{fill:#eaf7ff;font-size:23px;font-weight:750;font-family:var(--font)}.donut-label{fill:#8fb0c6;font-size:8px;font-family:var(--font);letter-spacing:.08em}.donut-legend{display:flex;flex-direction:column;gap:7px;flex:1}.donut-item{display:grid;grid-template-columns:9px 1fr auto;align-items:center;gap:7px;font-size:10.5px;color:var(--muted)}.donut-item strong{color:var(--ink-2);font-size:11px}.legend-dot{width:7px;height:7px;border-radius:2px;display:inline-block}.quality-foot{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px;border-top:1px solid var(--line);padding-top:12px}.quality-foot div{display:flex;flex-direction:column}.quality-foot strong{font-size:18px;font-weight:750}.quality-foot span{font-size:9.5px;color:var(--muted)}.bar-list{display:flex;flex-direction:column;gap:8px}.bar-row{display:grid;grid-template-columns:118px 1fr 26px;align-items:center;gap:9px}.bar-name{font-size:10.5px;color:var(--ink-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-track{height:8px;background:#edf3f7;border-radius:6px;overflow:hidden}.bar-track span{display:block;height:100%;background:linear-gradient(90deg,#11a58d,#38e1c6);border-radius:6px}.bar-row strong{font-size:11px;text-align:right}.mini-stats{display:flex;gap:14px;margin-top:14px;border-top:1px solid var(--line);padding-top:11px;font-size:10px;color:var(--muted)}.mini-stats span{display:inline-flex;align-items:center;gap:5px}.map-card{padding-bottom:12px}.alert-list,.move-list,.sensor-mini-list{display:flex;flex-direction:column;gap:2px}.alert-row,.move-row,.sensor-mini{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px dashed #eef3f7}.alert-row:last-child,.move-row:last-child,.sensor-mini:last-child{border-bottom:0}.alert-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:#fdf1e4;color:var(--amber)}.alert-critical .alert-icon{background:var(--red-soft);color:var(--red)}.alert-main,.move-main{flex:1;min-width:0;display:flex;flex-direction:column}.alert-main strong,.move-main strong{font-size:11.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-main small,.move-main small{font-size:9.5px;color:var(--muted);margin-top:1px}.move-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal)}.sensor-mini-icon{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;background:#f0f5f9;color:#5f7d92;flex:none}.sensor-mini div{flex:1;display:flex;flex-direction:column;min-width:0}.sensor-mini strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-mini small{font-size:9.5px;color:var(--muted)}.sensor-mini-value{font-size:15px;font-weight:700}.sensor-mini-value small{font-size:9px;color:var(--muted);margin-left:2px}.demo-section{background:linear-gradient(180deg,#0d2033,#0a1a2b);border-radius:18px;padding:22px 24px;color:#dceaf4;margin-top:4px;box-shadow:var(--shadow)}.demo-section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:16px}.demo-section-head .page-eyebrow{color:#55cbb8}.demo-section-head h2{font-size:19px;color:#f2fbff}.demo-section-head p{font-size:11.5px;color:#8fa8bc;margin-top:5px;max-width:720px}.demo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.demo-card{background:#ffffff0a;border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:13px;display:flex;flex-direction:column;gap:7px}.demo-card-top{display:flex;justify-content:space-between;color:#5fd9c5}.demo-letter{font-size:11px;font-weight:800;width:24px;height:24px;border-radius:7px;display:grid;place-items:center;background:#38e1c624;color:#7ff0dc;letter-spacing:.04em}.demo-card strong{font-size:12.5px;color:#eaf7ff}.demo-card p{font-size:10.5px;color:#8fa8bc;line-height:1.5;flex:1}.demo-card .btn{margin-top:3px;width:100%}.demo-result-head{display:flex;align-items:flex-start;gap:9px;padding:11px 12px;background:#f2fbf8;border:1px solid #cfece4;border-radius:10px;color:#0e7c69}.demo-result-head div{flex:1}.demo-result-head strong{font-size:13px}.demo-result-head p{font-size:11px;margin-top:2px;color:#4f7c74}.demo-steps{display:flex;flex-direction:column;gap:2px;margin:14px 0}.demo-step{display:flex;gap:10px;padding:7px 0;border-bottom:1px dashed #eef3f7}.demo-step:last-child{border-bottom:0}.demo-step-no{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);flex:none;font-size:10px;font-weight:700}.demo-step strong{font-size:11.5px;display:block}.demo-step p{font-size:10.5px;color:var(--muted);margin-top:1px}.demo-outcome{background:#fbfdff;border:1px solid var(--line);border-radius:10px;padding:12px;font-size:11.5px;line-height:1.7}.demo-outcome h4{font-size:11px;color:var(--muted);letter-spacing:.06em;margin-bottom:5px}.demo-outcome p{margin-bottom:5px}.map-canvas{position:relative;border-radius:12px;overflow:hidden;background:#081624;border:1px solid #1c354b}.factory-svg{width:100%;height:100%;display:block;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}.factory-svg.dragging{cursor:grabbing}.factory-svg.zoomed .space-title,.factory-svg.zoomed .space-sub,.factory-svg.zoomed .aisle-label,.factory-svg.zoomed .asset-label,.factory-svg.zoomed .candidate-label,.factory-svg.zoomed .device-label,.factory-svg.zoomed .ws-label,.factory-svg.zoomed .parking-label{display:none}.map-compact .factory-svg{min-height:inherit}.map-grid line{stroke:#183248;stroke-width:.08;opacity:.8}.space-hit{cursor:pointer}.space-hit:hover rect{filter:brightness(1.16)}.space-title{font-family:var(--font);font-size:2.1px;font-weight:700;letter-spacing:.03em}.space-sub{font-family:var(--font);font-size:1.45px;letter-spacing:.02em}.aisle-label{font-family:var(--font);font-size:1.5px;letter-spacing:.08em;opacity:.75}.rack-label{font-family:var(--mono);font-size:1.25px;opacity:.95}.ws-label,.parking-label{font-family:var(--mono);font-size:1.3px}.device-marker{pointer-events:none}.device-label{font-family:var(--mono);font-size:1.15px;opacity:.9}.asset-marker{cursor:pointer}.asset-marker:hover circle{filter:brightness(1.15)}.asset-glyph{font-family:var(--font);font-weight:800;pointer-events:none}.asset-label{font-family:var(--font);font-size:1.55px;font-weight:600;pointer-events:none;paint-order:stroke;stroke:#081624;stroke-width:.35px}.candidate-label{font-family:var(--font);font-size:1.5px;font-weight:600;paint-order:stroke;stroke:#081624;stroke-width:.3px}.candidate-label.strong{font-size:1.8px}.map-watermark{font-family:var(--font);font-size:1.3px;fill:#3e5b72;letter-spacing:.06em}.map-toolbar{position:absolute;top:10px;left:10px;z-index:3;display:flex;align-items:center;gap:4px;padding:4px;border-radius:9px;background:#071421d1;border:1px solid rgba(255,255,255,.1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.map-btn{width:27px;height:27px;border-radius:6px;border:0;background:transparent;color:#b9cee0;display:grid;place-items:center}.map-btn:hover{background:#ffffff17;color:#fff}.map-scale{font-size:9px;color:#7f9ab0;padding:0 6px;letter-spacing:.03em}.map-legend{position:absolute;right:10px;bottom:10px;display:flex;gap:11px;padding:5px 9px;border-radius:7px;background:#071421c7;border:1px solid rgba(255,255,255,.08);color:#9db4c7;font-size:9px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.map-legend span{display:inline-flex;align-items:center;gap:4px}.lg-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.lg-ring{width:8px;height:8px;border-radius:50%;border:1px dashed #b9cee0;display:inline-block}.map-placeholder{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#6f8aa0;font-size:12px}.map-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:16px;align-items:start}.map-main{min-width:0}.map-side{display:flex;flex-direction:column;gap:14px}.map-toolbar-row{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:9px}.layer-toggles{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.layer-toggles>span{display:inline-flex;align-items:center;gap:5px}.map-hint{display:inline-flex;align-items:center;gap:5px;color:#8ba0b3;font-size:10px}.map-kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:10px;overflow:hidden;margin-top:10px}.map-kpi-row div{background:#fff;padding:10px 12px;display:flex;flex-direction:column}.map-kpi-row strong{font-size:17px;font-weight:750}.map-kpi-row span{font-size:9.5px;color:var(--muted)}.space-detail{display:flex;flex-direction:column;gap:8px}.space-asset-list{display:flex;flex-direction:column;gap:3px;max-height:380px;overflow-y:auto}.space-asset{display:flex;align-items:center;gap:8px;padding:7px 6px;background:none;border:1px solid transparent;border-radius:8px;text-align:left;width:100%}.space-asset:hover{background:#f7fbfd;border-color:var(--line)}.space-asset div{flex:1;display:flex;flex-direction:column;min-width:0}.space-asset strong{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.space-asset small{font-size:9.5px;color:var(--muted)}.asset-dot{width:9px;height:9px;border-radius:3px;flex:none;background:#7a8ba0}.asset-dot.type-pallet{background:#2f9e8f}.asset-dot.type-material{background:#5b8def}.asset-dot.type-scooter{background:#f2a93b}.asset-dot.type-forklift_electric,.asset-dot.type-forklift_diesel,.asset-dot.type-forklift_manual{background:#e0694a}.asset-dot.type-machine{background:#7b61c9}.asset-dot.type-tool{background:#d0a12f}.asset-dot.type-product{background:#3b9ac9}.zone-list{display:flex;flex-direction:column;gap:4px}.zone-row{display:flex;align-items:center;gap:9px;padding:8px 7px;border-radius:9px;border:1px solid transparent;background:none;text-align:left;width:100%}.zone-row:hover{background:#f7fbfd;border-color:var(--line)}.zone-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:#eef6f4;color:var(--teal);flex:none}.zone-row div{flex:1;display:flex;flex-direction:column}.zone-row strong{font-size:11.5px}.zone-row small{font-size:9.5px;color:var(--muted)}.map-notes p{font-size:10.5px;color:var(--muted);line-height:1.65;padding:6px 0;border-bottom:1px dashed #eef3f7}.map-notes p:last-child{border-bottom:0}.map-notes strong{color:var(--ink-2)}.quick-links{display:flex;flex-direction:column;gap:4px}.quick-links a{display:flex;align-items:center;gap:7px;padding:7px 6px;border-radius:7px;font-size:11px;color:var(--ink-2)}.quick-links a:hover{background:#f6fafc;color:var(--teal)}.quick-links a svg:last-child{margin-left:auto;color:#9fb2c3}.asset-drawer-top{display:flex;gap:12px;align-items:flex-start}.asset-emblem{width:48px;height:48px;border-radius:12px;display:grid;place-items:center;font-size:19px;font-weight:750;background:linear-gradient(150deg,#e8f7f3,#d6ecff);color:#0c7a69;flex:none}.asset-drawer-title{flex:1}.asset-drawer-title p{color:var(--muted);font-size:11.5px;margin-top:6px;line-height:1.55}.estimate-panel{border:1px solid var(--line);border-radius:11px;padding:12px;background:#fbfdff;margin:12px 0}.estimate-panel.compact{margin:6px 0 0}.estimate-head{display:flex;justify-content:space-between;gap:10px;align-items:center}.estimate-place{display:flex;align-items:center;gap:7px;font-size:14px;font-weight:700;margin-top:3px;flex-wrap:wrap}.estimate-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin-top:11px;border-top:1px dashed var(--line);padding-top:10px}.estimate-stats div{display:flex;flex-direction:column}.estimate-stats span{font-size:9.5px;color:var(--muted)}.estimate-stats strong{font-size:11px}.estimate-note{font-size:10.5px;color:var(--muted);line-height:1.6;margin-top:9px}.section-block{border:1px solid var(--line);border-radius:10px;padding:12px}.section-block h4{font-size:12px;margin-bottom:4px}.section-block p{font-size:11px;color:var(--ink-2);margin-top:4px}.list-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px dashed #eef3f7}.list-row:last-child{border-bottom:0}.list-icon{width:27px;height:27px;border-radius:7px;background:#f0f5f9;color:#5f7d92;display:grid;place-items:center;flex:none}.list-row div{flex:1;display:flex;flex-direction:column}.list-row strong{font-size:11px}.list-row small{font-size:9.5px;color:var(--muted)}.tag-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:9px}.tag-thumb{width:58px;height:58px;border-radius:6px;border:1px solid var(--line);background:#fff;flex:none}.tag-row-main{flex:1;display:flex;flex-direction:column;gap:3px}.tag-row-main strong{font-size:11.5px;font-family:var(--mono)}.tag-row-main small{font-size:9.5px;color:var(--muted)}.timeline{display:flex;flex-direction:column}.timeline-item{display:flex;gap:10px;position:relative;padding-bottom:13px}.timeline-item:before{content:"";position:absolute;left:4px;top:13px;bottom:-2px;width:1px;background:#e2ebf2}.timeline-item:last-child:before{display:none}.timeline-dot{width:9px;height:9px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1.5px #9fc7bd;background:var(--teal);margin-top:4px;flex:none;z-index:1}.timeline-dot.sim{background:var(--amber);box-shadow:0 0 0 1.5px #e7c98d}.timeline-body{flex:1;min-width:0}.timeline-body strong{font-size:11.5px}.timeline-note{font-size:10px;color:var(--muted);line-height:1.5;margin-top:3px}.relation-row{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:9px;padding:9px 10px}.relation-row div{display:flex;flex-direction:column;gap:2px}.relation-row strong{font-size:11px}.relation-row small{font-size:9.5px;color:var(--muted)}.qr-modal{text-align:center}.qr-modal img{width:240px;height:240px;border:1px solid var(--line);border-radius:10px;padding:8px;background:#fff}.qr-meta{display:flex;flex-direction:column;gap:3px;margin-top:10px;align-items:center}.qr-meta code{width:fit-content}.qr-meta strong{font-size:13px}.qr-meta span{font-size:10px;color:var(--muted)}.location-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.location-card{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;background:#fbfdff;padding:8px;text-align:left}.location-card:hover{border-color:#a9d8cf;background:#fff}.location-qr img{width:64px;height:64px;border-radius:5px;display:block}.location-card div:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.location-card strong{font-family:var(--mono);font-size:11px}.location-card small{font-size:9.5px;color:var(--muted)}.location-card span{font-size:9px;color:#96a9ba}.scan-layout{align-items:start}.scan-steps{display:flex;flex-direction:column;gap:14px}.scan-step{display:flex;gap:10px;align-items:flex-start}.scan-step-no{width:22px;height:22px;border-radius:50%;background:var(--navy);color:#fff;display:grid;place-items:center;font-size:10px;font-weight:700;flex:none}.scan-step>div{flex:1;display:flex;flex-direction:column;gap:6px}.scan-step strong{font-size:12px}.scan-empty{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:44px 16px;color:var(--muted)}.scan-empty svg{color:#a9bdcf}.scan-empty strong{color:var(--ink-2);font-size:12.5px}.scan-empty p{font-size:10.5px;max-width:300px}.scan-result{border:1px solid #cfece4;border-radius:10px;padding:12px;background:#f8fdfb}.scan-result-head{display:flex;align-items:center;gap:8px;color:#0d7b69}.scan-result-head strong{font-size:12.5px;flex:1}.vehicle-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.vehicle-card{padding:16px}.vehicle-head{display:flex;justify-content:space-between;align-items:flex-start;gap:9px}.vehicle-title{display:flex;gap:9px;align-items:center}.vehicle-icon{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:#fdf0e8;color:#c2603f;flex:none}.vehicle-title div{display:flex;flex-direction:column}.vehicle-title strong{font-size:13px}.vehicle-title small{font-size:9.5px;color:var(--muted);font-family:var(--mono)}.vehicle-body{display:flex;gap:15px;align-items:center;margin:13px 0 11px}.vehicle-gauge{display:flex;flex-direction:column;align-items:center;gap:4px;width:100px;flex:none}.vehicle-gauge-label{font-size:8.5px;color:var(--muted);text-align:center;line-height:1.35}.no-telemetry{width:84px;height:84px;border-radius:50%;border:1px dashed #cfdae5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#9fb2c3;font-size:8.5px;text-align:center}.vehicle-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:9px}.vehicle-est{display:flex;flex-direction:column;gap:2px}.vehicle-est strong{font-size:12px}.vehicle-est small{font-size:9.5px;color:var(--muted)}.telemetry-chips{display:flex;gap:5px;flex-wrap:wrap}.telemetry-chip{display:inline-flex;align-items:baseline;gap:3px;padding:3px 7px;border-radius:6px;background:#f5f9fc;border:1px solid #e8eff5;font-size:9px;color:var(--muted)}.telemetry-chip strong{font-size:11px;color:var(--ink-2)}.telemetry-chip small{font-size:8px}.vehicle-foot{display:flex;gap:6px;align-items:center;border-top:1px solid var(--line);padding-top:10px}.vehicle-foot .btn{margin-left:auto}.vehicle-foot .btn+.btn{margin-left:0}.boundary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.boundary-grid p{font-size:10.5px;color:var(--muted);line-height:1.55;margin-top:6px}.vehicle-detail-head{display:flex;gap:16px;align-items:center;margin-bottom:8px}.vehicle-detail-head p{font-size:11px;color:var(--muted);margin-top:7px;line-height:1.55}.telemetry-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.telemetry-cell{border:1px solid var(--line);border-radius:9px;padding:9px;display:flex;flex-direction:column;gap:2px;background:#fbfdff}.telemetry-cell>span{font-size:9.5px;color:var(--muted)}.telemetry-cell strong{font-size:16px}.telemetry-cell strong small{font-size:9px;color:var(--muted);margin-left:2px}.telemetry-cell>small{font-size:9px;color:#9cafc0}.track-panel{display:flex;flex-direction:column;gap:9px}.replay-bar{display:flex;align-items:center;gap:9px;margin-top:8px}.replay-bar input{flex:1;accent-color:var(--teal)}.replay-bar span{font-size:10.5px;color:var(--muted);white-space:nowrap}.replay-current{font-size:10px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis}.track-point{display:flex;gap:8px;align-items:center;font-size:10.5px;padding:7px 9px;background:#f8fbfd;border:1px solid var(--line);border-radius:8px;flex-wrap:wrap}.track-point strong{font-size:11px}.track-list{display:flex;flex-direction:column;gap:2px}.track-row{display:grid;grid-template-columns:10px 1fr 1fr 1fr;gap:6px;align-items:center;font-size:9.5px;color:var(--muted);padding:4px 0;border-bottom:1px dashed #eef3f7}.track-dot{width:5px;height:5px;border-radius:50%;background:var(--amber)}.auto-toggle{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:#fff}.sensor-section{display:flex;flex-direction:column}.sensor-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.sensor-card{padding:14px;display:flex;flex-direction:column;gap:10px}.sensor-over{border-color:#f0d3cc;box-shadow:0 0 0 2px #cf4f3c0f}.sensor-card-head{display:flex;align-items:flex-start;gap:8px}.sensor-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);flex:none}.sensor-icon.large{width:44px;height:44px;border-radius:11px}.sensor-card-head div{flex:1;display:flex;flex-direction:column;min-width:0}.sensor-card-head strong{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sensor-card-head small{font-size:9px;color:var(--muted)}.sensor-value-row{display:flex;justify-content:space-between;align-items:flex-end}.sensor-value strong{font-size:32px;font-weight:750;letter-spacing:-.03em}.sensor-value span{font-size:11px;color:var(--muted);margin-left:3px}.sensor-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.sensor-meta span{font-size:9.5px;color:var(--ink-2);font-weight:600}.sensor-meta small{font-size:9px;color:var(--muted)}.sensor-chart{width:100%;height:72px;display:block}.chart-threshold{font-family:var(--font);font-size:8px;fill:#c17460}.sensor-card-foot{display:flex;align-items:center;gap:7px;border-top:1px solid var(--line);padding-top:8px}.sensor-card-foot .sim-tag{margin-left:auto}.rules-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.rules-grid strong{font-size:11.5px}.rules-grid p{font-size:10.5px;color:var(--muted);line-height:1.6;margin-top:4px}.sensor-detail-hero{display:flex;gap:12px;align-items:center;margin-bottom:10px}.sensor-detail-hero>div{flex:1;display:flex;flex-direction:column}.big-value{font-size:28px;font-weight:750;letter-spacing:-.03em}.big-value small{font-size:12px;color:var(--muted);margin-left:3px}.tracking-layout{display:grid;grid-template-columns:296px minmax(0,1fr);gap:16px;align-items:start}.tracking-side{display:flex;flex-direction:column;gap:14px;position:sticky;top:84px}.tracking-main{display:flex;flex-direction:column;gap:15px;min-width:0}.asset-picker{padding:14px}.asset-pick-list{display:flex;flex-direction:column;gap:2px;max-height:390px;overflow-y:auto}.asset-pick{display:flex;align-items:center;gap:8px;padding:7px 6px;border-radius:8px;border:1px solid transparent;background:none;text-align:left;width:100%}.asset-pick:hover{background:#f7fbfd;border-color:var(--line)}.asset-pick.active{background:#eefaf7;border-color:#c6e9e0}.asset-pick div{flex:1;display:flex;flex-direction:column;min-width:0}.asset-pick strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-pick small{font-size:9px;color:var(--muted);font-family:var(--mono)}.legend-stack{display:flex;flex-direction:column;gap:8px}.legend-stack div{display:flex;align-items:center;gap:8px;font-size:10px;color:var(--muted)}.legend-stack div span:last-child{font-size:9.5px}.tracking-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.tracking-head h2{font-size:19px;letter-spacing:-.02em}.tracking-head code{font-size:10px;margin-top:3px;display:inline-block}.tracking-estimate{display:flex;gap:20px;align-items:flex-start}.tracking-place{flex:0 0 260px;display:flex;flex-direction:column;gap:6px}.tracking-place>strong{font-size:17.5px;line-height:1.3;letter-spacing:-.02em}.tracking-facts{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:9px 16px}.tracking-facts div{display:flex;flex-direction:column;gap:2px;min-width:0}.tracking-facts span{font-size:9.5px;color:var(--muted)}.tracking-facts strong{font-size:11px;overflow-wrap:anywhere}.tracking-facts small{font-size:9px;color:#96a9ba}.confidence-row{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px;flex-wrap:wrap}.tracking-map-card{padding-bottom:12px}.movement-row{display:flex;gap:10px;align-items:flex-start;padding:9px 2px;border-bottom:1px dashed #eef3f7}.movement-row:last-child{border-bottom:0}.fusion-result .quality-banner{margin-top:0}.fusion-list{display:flex;flex-direction:column;gap:2px;margin-top:8px}.fusion-row{display:grid;grid-template-columns:130px 1fr 70px 55px 1fr;gap:7px;align-items:center;font-size:10.5px;padding:5px 0;border-bottom:1px dashed #eef3f7}.adapter-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.adapter-card{border:1px solid var(--line);border-radius:10px;padding:11px;background:#fbfdff}.adapter-card.realtime{border-color:#cfe9e3;background:#f8fdfb}.adapter-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}.adapter-head strong{font-size:11px;flex:1}.adapter-icon{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;background:var(--blue-soft);color:var(--blue);flex:none}.adapter-meta{display:grid;grid-template-columns:44px 1fr;gap:3px 6px;font-size:9.5px}.adapter-meta span{color:var(--muted)}.adapter-meta strong{font-weight:600;color:var(--ink-2);overflow-wrap:anywhere}.adapter-card p{font-size:9.5px;color:var(--muted);line-height:1.55;margin-top:8px;border-top:1px dashed var(--line);padding-top:7px}.principle-list{display:flex;flex-direction:column;gap:10px}.principle-list div{display:flex;gap:8px;align-items:flex-start}.principle-list svg{color:var(--teal);flex:none;margin-top:2px}.principle-list p{font-size:10.5px;color:var(--muted);line-height:1.6}.principle-list strong{color:var(--ink-2)}.phase-list{display:flex;flex-direction:column;gap:8px}.phase-list>div{display:flex;gap:10px;align-items:flex-start}.phase-list>div>span{font-size:9px;font-weight:700;color:var(--teal);background:var(--teal-soft);border-radius:5px;padding:2px 5px;margin-top:1px}.phase-list strong{font-size:11px}.phase-list p{font-size:10px;color:var(--muted);margin-top:1px}.lab-warning{display:flex;gap:11px;padding:13px 15px;border-radius:12px;background:#fff8ec;border:1px solid #f1dcb4;color:#7f5a17}.lab-warning svg{flex:none;color:#c58b27;margin-top:1px}.lab-warning strong{font-size:12.5px}.lab-warning p{font-size:11px;margin-top:3px;line-height:1.55;color:#8d6c2e}.method-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:9px}.method-card{display:flex;align-items:center;gap:8px;padding:10px 11px;border-radius:10px;border:1px solid var(--line);background:#fff;text-align:left}.method-card:hover{border-color:#b9d8d1}.method-card.active{border-color:var(--teal);background:#f3fcf9;box-shadow:0 0 0 2px #0f9d8614}.method-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;background:#eef6f4;color:var(--teal);flex:none}.method-card div{flex:1;display:flex;flex-direction:column;min-width:0}.method-card strong{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.method-card small{font-size:8.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.method-card .badge{align-self:flex-start}.lab-layout{display:grid;grid-template-columns:350px minmax(0,1fr);gap:16px;align-items:start}.lab-controls{position:sticky;top:84px}.lab-form{display:flex;flex-direction:column;gap:12px}.lab-readout{display:grid;grid-template-columns:1fr auto;gap:6px 10px;background:#f8fbfd;border:1px solid var(--line);border-radius:9px;padding:10px;font-size:10px}.lab-readout span{color:var(--muted)}.lab-readout strong{font-size:10.5px;text-align:right}.lab-caveat{font-size:10px;color:#8a6a2d;background:#fffaf0;border-left:2px solid #e4bd72;padding:7px 9px;border-radius:0 6px 6px 0;line-height:1.55}.coordinate-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.range{width:100%;accent-color:var(--teal)}.robot-silhouette{display:flex;align-items:center;gap:8px;padding:10px;border-radius:9px;background:var(--violet-soft);color:#5c48a0;font-size:10.5px}.robot-silhouette span{flex:1}.lab-stage{display:flex;flex-direction:column;gap:14px;min-width:0}.lab-map-card{padding-bottom:12px}.lab-map-empty{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px;color:var(--muted);font-size:10.5px;border-top:1px dashed var(--line);margin-top:9px}.lab-result{border-color:#cfe9e3}.result-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.result-grid div{display:flex;flex-direction:column;gap:2px;background:#f8fdfb;border:1px solid #e2f2ed;border-radius:8px;padding:9px}.result-grid span{font-size:9px;color:var(--muted)}.result-grid strong{font-size:12px}.lab-explanation{font-size:11px;color:var(--ink-2);line-height:1.65;margin:11px 0 8px}.read-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}.read-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;border-radius:6px;background:#f2f7fb;border:1px solid #e3edf5;font-size:9.5px;color:#4f6d84}.lab-research{display:grid;grid-template-columns:1fr 1fr;gap:14px}.lab-research div{display:flex;gap:8px;align-items:flex-start;font-size:10.5px;color:var(--muted);line-height:1.6;background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}.lab-research svg{color:var(--teal);flex:none;margin-top:2px}.lab-research strong{color:var(--ink-2)}@media(max-width:1280px){.sensor-grid,.adapter-grid{grid-template-columns:repeat(2,1fr)}.method-strip{grid-template-columns:repeat(5,1fr)}.map-layout{grid-template-columns:minmax(0,1fr) 300px}.boundary-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:1080px){.stat-grid{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:1fr}.demo-grid{grid-template-columns:repeat(2,1fr)}.vehicle-grid,.map-layout{grid-template-columns:1fr}.map-side{display:grid;grid-template-columns:1fr 1fr}.tracking-layout{grid-template-columns:1fr}.tracking-side{position:static;display:grid;grid-template-columns:1fr 1fr}.lab-layout{grid-template-columns:1fr}.lab-controls{position:static}.result-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.sidebar{transform:translate(-100%);transition:transform .22s ease;box-shadow:20px 0 50px #0000004d}.sidebar.open{transform:none}.icon-btn.sidebar-close{display:grid}.sidebar-scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#06111c73;z-index:45}.main-shell{margin-left:0}.icon-btn.mobile-menu{display:grid}.topbar{padding:0 16px;height:58px}.global-notice{padding:7px 16px;font-size:10.5px}.content{padding:18px 16px 50px}.user-meta{display:none}.sim-banner{font-size:10px;padding:4px 8px}.page-header{flex-direction:column;align-items:flex-start}.page-actions{width:100%}.login-page{grid-template-columns:1fr}.login-hero{min-height:42vh;padding:32px 26px}.login-copy{margin:20px 0 10px;padding:0}.login-copy h1{font-size:32px}.login-panel{padding:30px 22px 50px}.login-hero-foot{margin-top:12px}.grid-2{grid-template-columns:1fr}.tracking-estimate{flex-direction:column;gap:12px}.tracking-place{flex:none}.tracking-facts{width:100%}.lab-research{grid-template-columns:1fr}.method-strip{display:flex;overflow-x:auto;padding-bottom:3px}.method-card{min-width:175px}.map-side,.tracking-side,.scan-layout{grid-template-columns:1fr}}@media(max-width:640px){body{font-size:13px}.content{padding:14px 12px 44px}.topbar-title small{display:none}.topbar-title strong{font-size:14px}.sim-banner{display:none}.stat-grid{grid-template-columns:1fr 1fr;gap:9px}.stat-card{padding:12px;gap:9px}.stat-icon{width:32px;height:32px}.stat-value{font-size:23px}.stat-sub{font-size:9px}.page-title{font-size:24px}.demo-grid,.sensor-grid,.adapter-grid,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.meta-grid,.estimate-stats{grid-template-columns:1fr}.quality-foot,.map-kpi-row{grid-template-columns:repeat(3,1fr)}.map-kpi-row div:nth-child(4),.map-kpi-row div:nth-child(5){display:none}.map-side{display:flex}.bar-row{grid-template-columns:92px 1fr 22px}.vehicle-body{gap:8px}.vehicle-gauge{width:82px}.telemetry-grid,.result-grid{grid-template-columns:1fr 1fr}.tracking-facts,.rules-grid,.boundary-grid{grid-template-columns:1fr}.fusion-row{grid-template-columns:1fr 1fr 1fr}.fusion-row span:nth-child(4),.fusion-row span:nth-child(5){display:none}.toast-stack{right:12px;left:12px;bottom:12px;max-width:none}.modal{max-height:calc(100vh - 20px);border-radius:13px}.overlay{padding:10px}.drawer{width:100%!important}.data-table{min-width:680px}.login-hero{padding:26px 20px;min-height:36vh}.login-copy h1{font-size:27px}.login-copy p{font-size:12px}.login-features{display:none}.login-hero-foot{flex-direction:column}.login-panel{padding:24px 18px 40px}.user-chip{padding:3px}.user-chip>svg{display:none}.global-notice span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lab-warning{flex-direction:column}.map-canvas{min-height:0!important;height:auto!important;aspect-ratio:4 / 3}.map-canvas .factory-svg{height:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.nav-hint.new{background:#38e1c629;color:#7ff0dc}.brain-warning{display:flex;align-items:center;gap:9px;padding:10px 13px;border-radius:10px;background:#f2fbf8;border:1px solid #cfece4;color:#34695f;font-size:11px;line-height:1.5}.brain-warning svg{color:var(--teal);flex:none}.brain-warning span{flex:1}.brain-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px}.brain-stat{display:flex;gap:9px;align-items:center;padding:11px 12px;background:#fff;border:1px solid var(--line);border-radius:11px;min-width:0}.brain-stat-icon{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);flex:none}.brain-stat div{display:flex;flex-direction:column;min-width:0}.brain-stat span{font-size:9.5px;color:var(--muted)}.brain-stat strong{font-size:18px;line-height:1.15;font-weight:750}.brain-stat small{font-size:8.5px;color:#96a9ba;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brain-layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}.brain-map-card{padding:14px}.brain-side{display:flex;flex-direction:column;gap:12px;min-width:0}.brain-map{position:relative;border-radius:11px;overflow:hidden;border:1px solid #1c354b;background:#081624}.brain-svg{display:block;width:100%;height:auto;aspect-ratio:3 / 2}.brain-grid-lines line{stroke:#1a344a;stroke-width:.06;opacity:.55}.brain-space-label{font-family:var(--font);font-weight:650;letter-spacing:.02em;paint-order:stroke;stroke:#081624;stroke-width:.25px;vector-effect:non-scaling-stroke}.brain-node{cursor:pointer}.brain-node:hover circle{filter:brightness(1.2)}.brain-node-label{font-family:var(--mono);font-weight:600;paint-order:stroke;stroke:#081624;stroke-width:.3px;vector-effect:non-scaling-stroke}.brain-asset{cursor:pointer}.brain-asset-label{font-family:var(--font);font-weight:600;paint-order:stroke;stroke:#081624;stroke-width:.35px;vector-effect:non-scaling-stroke}.brain-watermark{font-family:var(--font);fill:#3e5b72;letter-spacing:.03em}.brain-map-legend{position:absolute;right:9px;bottom:9px;display:flex;gap:10px;flex-wrap:wrap;padding:5px 8px;border-radius:7px;background:#071421cc;border:1px solid rgba(255,255,255,.08);color:#9db4c7;font-size:9px}.brain-map-legend span{display:inline-flex;align-items:center;gap:4px}.lg-node{width:8px;height:8px;border-radius:50%;border:1.5px solid #38e1c6;display:inline-block}.brain-map-focus{position:absolute;left:10px;bottom:10px;max-width:60%;padding:7px 9px;border-radius:8px;background:#071421db;border:1px solid rgba(56,225,198,.2);color:#dceaf4;display:flex;flex-direction:column;gap:2px}.brain-map-focus strong{font-size:10.5px}.brain-map-focus span{font-size:9px;color:#8fa8bc}.live-card{min-height:0}.live-feed{display:flex;flex-direction:column;gap:1px;max-height:350px;overflow-y:auto}.live-event{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed #eef3f7}.live-event:last-child{border-bottom:0}.live-event-icon{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;flex:none;background:var(--teal-soft);color:var(--teal)}.event-node_telemetry{background:var(--blue-soft);color:var(--blue)}.event-presence_unknown{background:var(--amber-soft);color:var(--amber)}.event-command_approved,.event-command_executed{background:var(--violet-soft);color:var(--violet)}.live-event-main{flex:1;min-width:0;display:flex;flex-direction:column}.live-event-main strong{font-size:10.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-event-main small{font-size:8.5px;color:var(--muted)}.state-list{display:flex;flex-direction:column;gap:1px}.state-row{display:flex;align-items:center;gap:8px;padding:7px 2px;border:0;border-bottom:1px dashed #eef3f7;background:none;text-align:left;width:100%}.state-row:hover{background:#f8fbfd}.state-row div{flex:1;min-width:0;display:flex;flex-direction:column}.state-row strong{font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.state-row small{font-size:9px;color:var(--muted)}.node-focus-bar{display:flex;align-items:center;gap:10px;margin-top:9px;padding:8px 10px;border-radius:8px;background:#f8fbfd;border:1px solid var(--line);flex-wrap:wrap}.node-focus-bar>div:first-child{flex:1;min-width:160px;display:flex;flex-direction:column}.node-focus-bar strong{font-size:11px}.node-focus-bar span{font-size:9.5px;color:var(--muted)}.node-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.node-card{padding:13px;display:flex;flex-direction:column;gap:9px}.node-offline{border-color:#f0d3cc;background:snow}.node-head{display:flex;align-items:flex-start;gap:8px}.node-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:var(--teal-soft);color:var(--teal);flex:none}.node-head div{flex:1;min-width:0;display:flex;flex-direction:column}.node-head strong{font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.node-head small{font-size:9px;color:var(--muted)}.node-meta{display:grid;grid-template-columns:1fr 1fr;gap:6px 9px;background:#f8fbfd;border:1px solid var(--line);border-radius:8px;padding:8px}.node-meta div{display:flex;flex-direction:column}.node-meta span{font-size:8.5px;color:var(--muted)}.node-meta strong{font-size:10.5px}.module-chips,.cap-chips{display:flex;flex-wrap:wrap;gap:4px}.module-chip{padding:2px 6px;border-radius:5px;font-size:8.5px;background:#eef7f4;color:#337c6e;border:1px solid #d9eee8}.cap-chip{padding:2px 6px;border-radius:5px;font-size:8.5px;background:#f2f6fa;color:#5f7d92;border:1px solid #e6eef5;font-family:var(--mono)}.node-readings{display:flex;gap:7px;flex-wrap:wrap;font-size:9px;color:var(--muted);border-top:1px dashed var(--line);padding-top:7px}.node-readings strong{color:var(--ink-2);font-size:10px}.node-actions{display:flex;gap:3px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:8px}.plugin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.plugin-card{padding:13px;display:flex;flex-direction:column;gap:8px}.plugin-disabled{opacity:.65;background:#fafcfd}.plugin-head{display:flex;align-items:flex-start;gap:8px}.plugin-icon{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--violet-soft);color:var(--violet);flex:none}.plugin-head div{flex:1;min-width:0;display:flex;flex-direction:column}.plugin-head strong{font-size:11px}.plugin-head small{font-size:8.5px;color:var(--muted);font-family:var(--mono)}.plugin-kind{font-size:9px;color:var(--muted)}.plugin-card p{font-size:9.5px;color:var(--muted);line-height:1.5;flex:1}.command-list{display:flex;flex-direction:column;gap:9px}.command-card{display:flex;gap:14px;align-items:flex-start;padding:13px}.command-main{flex:1;display:flex;flex-direction:column;gap:5px}.command-main>strong{font-size:12px}.command-main p{font-size:10.5px;color:var(--muted);line-height:1.55}.command-actions{display:flex;gap:6px;align-items:center;flex:none}.brain-principles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.brain-principles div{display:flex;align-items:flex-start;gap:7px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:9.5px;color:var(--muted);line-height:1.55}.brain-principles svg{color:var(--teal);flex:none;margin-top:1px}.brain-principles strong{color:var(--ink-2)}.code-block{background:#0b1c2c;color:#b9d8e8;border-radius:9px;padding:12px;font-family:var(--mono);font-size:10px;line-height:1.7;overflow-x:auto;margin:8px 0}@media(max-width:1200px){.brain-stats{grid-template-columns:repeat(3,1fr)}.brain-layout{grid-template-columns:1fr}.brain-side{display:grid;grid-template-columns:1fr 1fr}.node-grid,.plugin-grid{grid-template-columns:repeat(2,1fr)}.brain-principles{grid-template-columns:1fr 1fr}}@media(max-width:760px){.brain-stats{grid-template-columns:1fr 1fr;gap:8px}.brain-stat{padding:9px}.brain-stat strong{font-size:16px}.brain-side,.node-grid,.plugin-grid,.brain-principles{grid-template-columns:1fr}.command-card{flex-direction:column}.command-actions{width:100%}.brain-map{min-height:0!important;aspect-ratio:4 / 3}.brain-svg{height:100%}.brain-warning{align-items:flex-start}}.studio-statusbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:8px 12px;background:#fff;border:1px solid var(--line);border-radius:10px;font-size:10.5px;color:var(--muted)}.studio-statusbar>span{white-space:nowrap}.studio-save-state{margin-left:auto;color:#8ba0b3}.studio-save-state.saving{color:var(--amber)}.studio-layout{display:grid;grid-template-columns:72px minmax(0,1fr) 330px;gap:12px;align-items:start}.studio-tools{display:flex;flex-direction:column;gap:4px;padding:7px;background:#fff;border:1px solid var(--line);border-radius:12px;position:sticky;top:84px}.studio-tool{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 2px;border:1px solid transparent;border-radius:8px;background:none;color:var(--muted);font-size:9px}.studio-tool:hover{background:#f6fafc;color:var(--ink)}.studio-tool.active{background:var(--teal-soft);border-color:#c8e9e1;color:var(--teal)}.studio-tool:disabled{opacity:.35}.studio-tool-sep{height:1px;background:var(--line);margin:3px 2px}.studio-canvas-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:8px;min-width:0}.studio-canvas-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 8px}.studio-canvas-wrap{height:600px;border-radius:9px;overflow:hidden;border:1px solid #1c354b;background:#081624}.studio-svg{width:100%;height:100%;display:block;touch-action:none;cursor:crosshair}.studio-shape{cursor:pointer}.studio-shape:hover{filter:brightness(1.12)}.studio-shape-label{font-family:var(--font);font-weight:650;paint-order:stroke;stroke:#081624;stroke-width:.04px;vector-effect:non-scaling-stroke}.studio-shape-dim{font-family:var(--mono);paint-order:stroke;stroke:#081624;stroke-width:.03px;vector-effect:non-scaling-stroke}.studio-canvas-foot{display:flex;gap:12px;flex-wrap:wrap;padding:8px 4px 2px;font-size:9.5px;color:var(--muted)}.studio-canvas-foot span{display:inline-flex;align-items:center;gap:4px}.studio-inspector{display:flex;flex-direction:column;gap:10px;min-width:0}.studio-inspector .card{padding:12px}.studio-inspector-form{display:flex;flex-direction:column;gap:8px}.studio-measure-list{display:flex;flex-direction:column;gap:4px;max-height:280px;overflow-y:auto}.studio-measure-row{display:flex;align-items:flex-start;gap:7px;padding:7px 0;border-bottom:1px dashed #eef3f7}.studio-measure-row:last-child{border-bottom:0}.studio-measure-row>div{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.studio-measure-row strong{font-size:10px}.studio-measure-row small{font-size:8.5px;color:var(--muted);line-height:1.4}.studio-cal-hint{font-size:9.5px;color:#8a6a2d;background:#fffaf0;border-left:2px solid #e4bd72;padding:6px 8px;border-radius:0 6px 6px 0;margin-top:8px;line-height:1.5}.stack-preview{background:#08131f;border-radius:10px;overflow:hidden}.stack-svg{width:100%;display:block}.stack-title{fill:#ecf9ff;font-family:var(--font);font-size:20px;font-weight:700}.stack-sub{fill:#7f9ab0;font-family:var(--font);font-size:11px}.stack-label{font-family:var(--font);font-size:12px;font-weight:650;paint-order:stroke;stroke:#08131f;stroke-width:.5px}.stack-dim{font-family:var(--mono);font-size:9px}@media(max-width:1200px){.studio-layout{grid-template-columns:64px minmax(0,1fr)}.studio-inspector{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr}}@media(max-width:760px){.studio-layout{grid-template-columns:1fr}.studio-tools{position:static;flex-direction:row;overflow-x:auto}.studio-tool{min-width:54px}.studio-canvas-wrap{height:380px}.studio-inspector{grid-template-columns:1fr}}.studio-floors{display:flex;align-items:center;gap:5px;flex-wrap:wrap;padding:7px 10px;background:#fff;border:1px solid var(--line);border-radius:10px}.studio-floor-tab{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fbfdff;border-radius:7px;padding:4px 8px;font-size:10px;font-weight:650;color:var(--muted)}.studio-floor-tab small{font-size:8px;color:#9cafc0}.studio-floor-tab.active{background:var(--teal-soft);border-color:#c8e9e1;color:var(--teal)}.import-warnings{margin:8px 0;padding-left:18px;color:#8a6a2d;font-size:10px;line-height:1.6}@media(max-width:760px){.studio-floors{overflow-x:auto}}.studio-version-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.studio-version-row{display:flex;align-items:flex-start;justify-content:space-between;gap:6px;padding:6px 0;border-bottom:1px dashed #eef3f7}.studio-version-row:last-child{border-bottom:0}.studio-version-row>div{display:flex;flex-direction:column;gap:2px;min-width:0}.studio-version-row strong{font-size:10px}.studio-version-row small{font-size:8.5px;color:var(--muted);line-height:1.4}.row.gap-4{gap:4px}.coverage-row{display:flex;flex-direction:column;gap:4px;padding:7px 0;border-bottom:1px dashed #eef3f7}.coverage-row:last-of-type{border-bottom:0}.coverage-head{display:flex;align-items:center;justify-content:space-between;font-size:10.5px}.coverage-head span{font-family:var(--mono);color:var(--teal);font-weight:650}.coverage-bar{height:6px;background:#edf3f7;border-radius:99px;overflow:hidden}.coverage-bar i{display:block;height:100%;background:linear-gradient(90deg,#38c6b4,#2f9e8f);border-radius:99px}.studio-task-list{display:flex;flex-direction:column;gap:6px}.studio-task-row{display:flex;flex-direction:column;gap:4px;padding:6px 0;border-bottom:1px dashed #eef3f7}.studio-task-row:last-child{border-bottom:0}.studio-task-head{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px}.studio-task-head span{font-size:8.5px}.task-done{color:var(--teal)}.task-missing{color:#b07b2a}.studio-task-chips{display:flex;gap:3px;flex-wrap:wrap}.task-chip{font-size:8px;padding:2px 5px;border-radius:4px;background:#f3f6f9;color:#8a9bac;border:1px solid #e7edf2}.task-chip.done{background:var(--teal-soft);border-color:#c8e9e1;color:var(--teal)}.task-chip.pending{background:#fffaf0;border-color:#ead7b0;color:#9a732d}.coverage-advice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border:1px solid #e7edf2;border-radius:7px;background:#fbfdff}.coverage-advice>div{display:flex;flex-direction:column;gap:2px;font-size:9.5px}.coverage-advice small{color:var(--muted);font-size:8.5px}.cred-row{display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:11px}.cred-row strong{font-family:var(--mono)}.cred-token{display:flex;align-items:center;gap:6px;background:#f7fafc;border:1px solid #e2ebf2;border-radius:7px;padding:6px 8px}.cred-token code{flex:1;overflow-x:auto;font-size:9px;white-space:nowrap}.cred-pre{margin:4px 0 0;padding:8px;background:#0b1a2a;color:#cfe6f5;border-radius:7px;font-size:9px;overflow-x:auto;line-height:1.5}.clock-warn{display:inline-flex;align-items:center;gap:4px;font-size:9px;color:#a06a2b;background:#fff8ea;border:1px solid #efdcb8;border-radius:5px;padding:3px 6px;margin:4px 0}
