:root,:root[data-theme=dark],[data-scope=dark]{color-scheme:dark;--bg: #110c09;--bg-elev: #17100c;--surface: #1e1612;--surface-2: #261c16;--surface-3: #31241b;--surface-hover: #2b2018;--border: #3b2c21;--border-strong: #52402f;--overlay: rgba(10, 6, 4, .74);--text: #f5ede1;--text-2: #c9b79f;--text-3: #93806a;--text-inverse: #0a1514;--accent: #3cc9c4;--accent-strong: #22aeab;--accent-soft: rgba(60, 201, 196, .13);--accent-ring: rgba(60, 201, 196, .38);--ok: #86c971;--ok-soft: rgba(134, 201, 113, .13);--warn: #f0a548;--warn-soft: rgba(240, 165, 72, .14);--danger: #e5624a;--danger-soft: rgba(229, 98, 74, .15);--info: #55aedb;--info-soft: rgba(85, 174, 219, .14);--c1: #3cc9c4;--c2: #ee9238;--c3: #8fc46a;--c4: #dcc08f;--c5: #5a96bd;--c6: #d0583a;--grid-line: rgba(220, 192, 143, .12);--axis-text: #a08c75;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 8px 24px rgba(0, 0, 0, .4);--shadow-lg: 0 24px 60px rgba(0, 0, 0, .55);--glass: rgba(23, 16, 12, .8);--topo: rgba(220, 192, 143, .15)}:root[data-theme=light]{color-scheme:light;--bg: #f3eadc;--bg-elev: #f9f3e8;--surface: #fffcf6;--surface-2: #f6ecdc;--surface-3: #eadcc4;--surface-hover: #f1e5d0;--border: #e0d0b6;--border-strong: #c9b595;--overlay: rgba(36, 24, 14, .46);--text: #2a1d13;--text-2: #5d4937;--text-3: #8a755e;--text-inverse: #ffffff;--accent: #0e7f88;--accent-strong: #0a666e;--accent-soft: rgba(14, 127, 136, .1);--accent-ring: rgba(14, 127, 136, .35);--ok: #3f8d4d;--ok-soft: rgba(63, 141, 77, .11);--warn: #b0661a;--warn-soft: rgba(176, 102, 26, .12);--danger: #bf4128;--danger-soft: rgba(191, 65, 40, .1);--info: #1f76a6;--info-soft: rgba(31, 118, 166, .1);--c1: #0e8a91;--c2: #c8651f;--c3: #5d9843;--c4: #977848;--c5: #2f6e99;--c6: #b0402a;--grid-line: rgba(90, 62, 30, .13);--axis-text: #7b6650;--shadow-sm: 0 1px 2px rgba(60, 38, 16, .1);--shadow-md: 0 8px 24px rgba(60, 38, 16, .12);--shadow-lg: 0 24px 60px rgba(60, 38, 16, .2);--glass: rgba(255, 252, 246, .84);--topo: rgba(110, 76, 36, .15)}:root{--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--r-xs: 2px;--r-sm: 3px;--r-md: 4px;--r-lg: 6px;--r-xl: 8px;--sidebar-w: 248px;--sidebar-w-collapsed: 72px;--topbar-h: 60px;--ease: cubic-bezier(.2, .7, .2, 1)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:"cv11","ss01"}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}::selection{background:var(--accent-ring)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-xs)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px;border:2px solid transparent;background-clip:content-box}.mono,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font-weight:550;font-size:13px;white-space:nowrap;transition:background .15s var(--ease),border-color .15s var(--ease),transform .1s var(--ease)}.btn:hover{background:var(--surface-hover);border-color:var(--text-3)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn-ghost:hover{background:var(--surface-2);border-color:var(--border);color:var(--text)}.btn-danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.btn-sm{height:30px;padding:0 10px;font-size:12px}.btn-lg{height:46px;padding:0 22px;font-size:15px;border-radius:var(--r-md)}.btn-icon{width:36px;padding:0}.btn-icon.btn-sm{width:30px}.field{display:flex;flex-direction:column;gap:6px}.field>label,.label{font-size:12px;font-weight:600;color:var(--text-2);letter-spacing:.01em}.input,.select{height:36px;width:100%;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.input::placeholder{color:var(--text-3)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:32px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2370839b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.select option{background:var(--surface);color:var(--text)}.input-lg{height:46px;font-size:15px;border-radius:var(--r-md)}.range{width:100%;accent-color:var(--accent)}.check{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--text-2);cursor:pointer;-webkit-user-select:none;user-select:none}.check input{accent-color:var(--accent);width:15px;height:15px}.seg{display:inline-flex;padding:3px;gap:2px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--border)}.seg button{height:28px;padding:0 12px;border:0;border-radius:3px;background:transparent;color:var(--text-2);font-size:12.5px;font-weight:550;transition:background .15s var(--ease),color .15s var(--ease)}.seg button:hover{color:var(--text)}.seg button[aria-pressed=true]{background:var(--surface-3);color:var(--text);box-shadow:var(--shadow-sm)}.seg.seg-accent button[aria-pressed=true]{background:var(--accent-soft);color:var(--accent)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);min-width:0}.card-h{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px 0}.card-title{font-size:13px;font-weight:650;letter-spacing:.01em;color:var(--text)}.card-sub{font-size:12px;color:var(--text-3);margin-top:2px}.card-b{padding:14px 18px 18px}.card-f{padding:12px 18px;border-top:1px solid var(--border);color:var(--text-3);font-size:12px}.card-flush .card-b{padding:0}.kpi{position:relative;display:flex;flex-direction:column;gap:6px;padding:16px 18px;overflow:hidden}.kpi-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--text-2);text-transform:uppercase;letter-spacing:.06em}.kpi-value{display:flex;align-items:baseline;gap:6px;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1.1}.kpi-unit{font-size:13px;font-weight:500;color:var(--text-3);letter-spacing:0}.kpi-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--text-3);min-height:20px}.kpi-spark{position:absolute;right:0;bottom:0;left:0;height:38px;opacity:.9;pointer-events:none}.kpi.has-spark{padding-bottom:46px}.kpi.tone-ok{box-shadow:inset 3px 0 0 var(--ok)}.kpi.tone-warn{box-shadow:inset 3px 0 0 var(--warn)}.kpi.tone-danger{box-shadow:inset 3px 0 0 var(--danger)}.kpi.tone-accent{box-shadow:inset 3px 0 0 var(--accent)}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:3px;font-size:11.5px;font-weight:600;letter-spacing:.01em;background:var(--surface-3);color:var(--text-2);white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-info{background:var(--info-soft);color:var(--info)}.badge-accent{background:var(--accent-soft);color:var(--accent)}.dot-live{position:relative;width:8px;height:8px;border-radius:50%;background:var(--ok)}.dot-live:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:1px solid var(--ok);animation:pulse 2s ease-out infinite}.dot-live.off{background:var(--text-3)}.dot-live.off:after{display:none}.dot-live.bad{background:var(--danger)}.dot-live.bad:after{border-color:var(--danger)}@keyframes pulse{0%{transform:scale(.6);opacity:.9}to{transform:scale(1.5);opacity:0}}.delta{display:inline-flex;align-items:center;gap:3px;font-family:var(--font-mono);font-size:12px;font-weight:500}.delta.up{color:var(--warn)}.delta.down{color:var(--info)}.delta.flat{color:var(--text-3)}.table-wrap{overflow:auto;max-height:420px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{position:sticky;top:0;z-index:1;text-align:left;padding:10px 14px;font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.07em;color:var(--text-3);background:var(--surface);border-bottom:1px solid var(--border);white-space:nowrap}.table td{padding:10px 14px;border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover td{background:var(--surface-hover)}.table td.strong,.table td strong{color:var(--text);font-weight:600}.table .right{text-align:right}.meter{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden;min-width:56px}.meter>span{display:block;height:100%;border-radius:3px;background:var(--accent);transition:width .4s var(--ease)}.meter.ok>span{background:var(--ok)}.meter.warn>span{background:var(--warn)}.meter.danger>span{background:var(--danger)}.meter-row{display:flex;align-items:center;gap:10px}.meter-row .num{font-size:12px;min-width:38px;text-align:right}.skeleton{border-radius:var(--r-sm);background:linear-gradient(90deg,var(--surface-2) 25%,var(--surface-3) 37%,var(--surface-2) 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:36px 20px;text-align:center;color:var(--text-3)}.empty svg{color:var(--text-3);opacity:.8}.empty strong{color:var(--text-2);font-size:14px}.empty p{max-width:360px;font-size:12.5px}.banner{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);font-size:13px;color:var(--text-2)}.banner.warn{background:var(--warn-soft);border-color:transparent;color:var(--warn)}.banner.danger{background:var(--danger-soft);border-color:transparent;color:var(--danger)}.banner.ok{background:var(--ok-soft);border-color:transparent;color:var(--ok)}.banner.info{background:var(--info-soft);border-color:transparent;color:var(--info)}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);overflow-x:auto;overflow-y:hidden}.tabs button{position:relative;height:40px;padding:0 14px;background:transparent;border:0;color:var(--text-3);font-weight:600;font-size:13px;white-space:nowrap}.tabs button:hover,.tabs button[aria-selected=true]{color:var(--text)}.tabs button[aria-selected=true]:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}.chart-tip{min-width:150px;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-md);font-size:12px}.chart-tip-title{color:var(--text-3);font-size:11px;margin-bottom:6px}.chart-tip-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:1.5px 0}.chart-tip-row>span:first-child{display:inline-flex;align-items:center;gap:7px;color:var(--text-2)}.chart-tip-row i{width:8px;height:8px;border-radius:2px;display:inline-block}.chart-tip-row b{font-family:var(--font-mono);font-weight:600;color:var(--text)}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--text-2)}.legend span{display:inline-flex;align-items:center;gap:7px}.legend i{width:10px;height:3px;border-radius:2px;display:inline-block}.legend i.box{height:10px;border-radius:3px;opacity:.45}.grid{display:grid;gap:16px}.g-4{grid-template-columns:repeat(4,minmax(0,1fr))}.g-5{grid-template-columns:repeat(5,minmax(0,1fr))}.g-3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-2{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.g-main-wide{grid-template-columns:minmax(0,3fr) minmax(0,1fr)}.span-2{grid-column:span 2}.span-all{grid-column:1 / -1}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;align-items:center;gap:10px}.row-wrap{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.spacer{flex:1}.muted{color:var(--text-3)}.text-2{color:var(--text-2)}@media (max-width: 1280px){.g-5{grid-template-columns:repeat(3,minmax(0,1fr))}.g-4{grid-template-columns:repeat(2,minmax(0,1fr))}.g-main,.g-main-wide{grid-template-columns:minmax(0,1fr)}}@media (max-width: 760px){.g-5,.g-4,.g-3,.g-2{grid-template-columns:minmax(0,1fr)}.span-2{grid-column:auto}}.ph-scale{position:relative;height:10px;border-radius:3px;background:linear-gradient(90deg,#e11d48,#f97316 18%,#facc15 34%,#a3e635 46%,#34d399 54%,#22d3ee 66%,#3b82f6 82%,#7c3aed)}.ph-scale .tick{position:absolute;top:-5px;width:3px;height:20px;border-radius:2px;background:var(--text);box-shadow:0 0 0 2px var(--surface);transform:translate(-50%);transition:left .5s var(--ease)}.ph-scale .tick.ghost{background:transparent;border:2px dashed var(--text);width:3px;box-shadow:none}.ph-scale-labels{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--font-mono);font-size:10.5px;color:var(--text-3)}.toasts{position:fixed;right:20px;bottom:20px;z-index:1000;display:flex;flex-direction:column;gap:10px}.toast{display:flex;align-items:center;gap:10px;min-width:260px;max-width:380px;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface-2);box-shadow:var(--shadow-lg);font-size:13px;animation:toast-in .25s var(--ease)}.toast.ok{border-left:3px solid var(--ok)}.toast.danger{border-left:3px solid var(--danger)}@keyframes toast-in{0%{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}.logo{display:inline-flex;align-items:center;gap:10px}.logo-word{font-size:18px;font-weight:500;letter-spacing:-.02em;color:var(--text)}.logo-word b{font-weight:800;color:var(--accent)}.app{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100%;transition:grid-template-columns .2s var(--ease)}.app.collapsed{grid-template-columns:var(--sidebar-w-collapsed) minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:4px;padding:14px 12px;background:var(--bg-elev);border-right:1px solid var(--border);overflow-y:auto;z-index:30}.sidebar-head{display:flex;align-items:center;justify-content:space-between;height:40px;padding:0 6px;margin-bottom:10px}.nav-group{margin:14px 0 4px;padding:0 10px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3);white-space:nowrap}.nav-link{position:relative;display:flex;align-items:center;gap:12px;height:38px;padding:0 10px;border-radius:var(--r-sm);color:var(--text-2);font-weight:550;font-size:13.5px;white-space:nowrap;transition:background .15s var(--ease),color .15s var(--ease)}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--accent-soft);color:var(--accent)}.nav-link.active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.nav-link .nav-badge{margin-left:auto}.sidebar-foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.user-card{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--border)}.avatar{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:700;font-size:13px;text-transform:uppercase}.user-meta{min-width:0;flex:1}.user-name{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role{font-size:11px;color:var(--text-3);text-transform:capitalize}.app.collapsed .nav-label,.app.collapsed .nav-group,.app.collapsed .logo-word,.app.collapsed .user-meta,.app.collapsed .nav-badge,.app.collapsed .collapse-hide{display:none}.app.collapsed .nav-link{justify-content:center;padding:0}.app.collapsed .nav-link.active:before{left:-12px}.app.collapsed .user-card{justify-content:center;padding:6px}.app.collapsed .sidebar-head{justify-content:center}.main-col{min-width:0;display:flex;flex-direction:column;min-height:100vh}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;height:var(--topbar-h);padding:0 24px;background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.crumb{display:flex;align-items:center;gap:8px;color:var(--text-3);font-size:13px;font-weight:550;white-space:nowrap}.crumb b{color:var(--text);font-weight:650}.search-btn{display:inline-flex;align-items:center;gap:10px;height:36px;min-width:260px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-3);font-size:13px}.search-btn:hover{border-color:var(--border-strong);color:var(--text-2)}.kbd{margin-left:auto;padding:1px 6px;border-radius:3px;border:1px solid var(--border-strong);background:var(--surface-2);font-family:var(--font-mono);font-size:11px;color:var(--text-3)}.chip-btn{display:inline-flex;align-items:center;gap:8px;height:36px;padding:0 12px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:13px;font-weight:550}.chip-btn:hover{border-color:var(--border-strong);background:var(--surface-2)}.chip-btn .sub{color:var(--text-3);font-weight:500;font-size:12px}.topbar>*{flex-shrink:0}.chip-btn{white-space:nowrap}.chip-btn>span:not(.sub):not(.dot-live):not(.badge){max-width:190px;overflow:hidden;text-overflow:ellipsis}@media (max-width: 1240px){.crumb{display:none}.search-btn{min-width:0;width:40px;justify-content:center;padding:0}.search-btn .label,.search-btn .kbd,.chip-btn .sub{display:none}}.icon-btn{position:relative;display:grid;place-items:center;width:36px;height:36px;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--surface);color:var(--text-2)}.icon-btn:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.icon-btn .count{position:absolute;top:-5px;right:-5px;min-width:17px;height:17px;padding:0 4px;border-radius:3px;background:var(--danger);color:#fff;font-size:10px;font-weight:700;line-height:17px;text-align:center}.pop-wrap{position:relative}.pop{position:absolute;top:calc(100% + 8px);right:0;z-index:60;min-width:280px;max-height:420px;overflow:auto;padding:6px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-lg);animation:pop-in .14s var(--ease)}.pop.left{right:auto;left:0}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.pop-title{padding:8px 10px 6px;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.pop-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:var(--r-sm);background:transparent;text-align:left;color:var(--text)}.pop-item:hover,.pop-item.hl{background:var(--surface-2)}.pop-item.sel{background:var(--accent-soft)}.pop-item .grow{flex:1;min-width:0}.pop-item .t{font-weight:600;font-size:13px}.pop-item .s{font-size:11.5px;color:var(--text-3)}.content{flex:1;width:100%;max-width:1560px;margin:0 auto;padding:24px 24px 56px}.content.bleed{max-width:none;padding:0;display:flex;flex-direction:column;flex:1;min-height:0}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}.page-title{font-size:26px;font-weight:750;letter-spacing:-.025em;line-height:1.15}.page-subtitle{margin-top:4px;color:var(--text-3);font-size:13.5px;max-width:720px}.page-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;justify-content:center;align-items:flex-start;padding-top:14vh;background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.palette{width:min(600px,calc(100vw - 32px));border-radius:var(--r-lg);border:1px solid var(--border-strong);background:var(--surface);box-shadow:var(--shadow-lg);overflow:hidden;animation:pop-in .16s var(--ease)}.palette-input{display:flex;align-items:center;gap:12px;padding:0 16px;height:54px;border-bottom:1px solid var(--border);color:var(--text-3)}.palette-input input{flex:1;border:0;outline:0;background:transparent;font-size:15px;color:var(--text)}.palette-list{max-height:340px;overflow:auto;padding:6px}.mobile-only{display:none}@media (max-width: 960px){.app,.app.collapsed{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:272px;transform:translate(-100%);transition:transform .22s var(--ease);box-shadow:var(--shadow-lg)}.app.nav-open .sidebar{transform:none}.app.collapsed .nav-label,.app.collapsed .nav-group,.app.collapsed .logo-word,.app.collapsed .user-meta{display:revert}.app.collapsed .nav-link{justify-content:flex-start;padding:0 10px}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:var(--overlay)}.mobile-only{display:inline-grid}.topbar{padding:0 14px;gap:8px}.chip-btn>span:not(.sub):not(.dot-live):not(.badge){max-width:96px}.chip-btn{padding:0 10px}.search-btn{min-width:0}.search-btn span.label,.search-btn .kbd{display:none}.hide-mobile{display:none!important}.content{padding:16px 14px 48px}}.list{display:flex;flex-direction:column}.list-row{display:flex;align-items:center;gap:12px;padding:11px 18px;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:0}.list-row .grow{flex:1;min-width:0}.list-row .t,.table .strong+.s{font-weight:600;font-size:13px;color:var(--text)}.list-row .s,.table .s,.s{font-size:12px;color:var(--text-3);font-weight:450}.table .s{margin-top:1px}.ev-icon{display:grid;place-items:center;width:30px;height:30px;flex-shrink:0;border-radius:3px;background:var(--surface-3);color:var(--text-2)}.ev-icon.warn{background:var(--warn-soft);color:var(--warn)}.ev-icon.danger{background:var(--danger-soft);color:var(--danger)}.ev-icon.ok{background:var(--ok-soft);color:var(--ok)}.stat-list{display:flex;flex-direction:column}.stat-list>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px dashed var(--border);font-size:13px}.stat-list>div:last-child{border-bottom:0}.stat-list span{color:var(--text-3)}.stat-list b{font-weight:600;text-align:right}.stat-list.tight>div{padding:6px 0;font-size:12.5px}.completeness{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);display:grid;gap:8px;font-size:12.5px}.completeness .label{text-transform:uppercase;letter-spacing:.07em;font-size:11px;color:var(--text-3)}.completeness .meter span{background:var(--accent)}.metric-strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:16px}@media (max-width: 1400px){.metric-strip{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width: 760px){.metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}.metric-tile{position:relative;display:flex;flex-direction:column;gap:4px;min-height:112px;padding:14px 14px 40px;text-align:left;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface);overflow:hidden;transition:border-color .15s var(--ease),background .15s var(--ease)}.metric-tile:hover{border-color:var(--border-strong);background:var(--surface-hover)}.metric-tile.active{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.mt-top{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:650;letter-spacing:.06em;text-transform:uppercase;color:var(--text-2)}.mt-dot{width:8px;height:8px;border-radius:3px}.mt-val{font-size:22px;font-weight:600;letter-spacing:-.03em}.mt-val small{margin-left:5px;font-size:11.5px;font-weight:500;color:var(--text-3);letter-spacing:0}.mt-chg{font-size:11px;color:var(--text-3)}.mt-chg.up{color:var(--warn)}.mt-chg.down{color:var(--info)}.hdh-grid{display:grid;gap:3px;align-items:center}.hdh-hour,.hdh-day{font-family:var(--font-mono);font-size:10.5px;color:var(--text-3)}.hdh-day{padding-right:8px;text-align:right;white-space:nowrap}.hdh-cell{aspect-ratio:1.5 / 1;min-height:16px;border-radius:4px;transition:transform .1s var(--ease)}.hdh-cell:hover{transform:scale(1.18);outline:1.5px solid var(--text);z-index:2;position:relative}.hdh-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:14px;font-size:12.5px}.hdh-read{display:flex;gap:10px;align-items:baseline;min-height:20px}.hdh-legend{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-3)}.hdh-ramp{width:140px;height:8px;border-radius:3px}.metal-mini{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metal-mini-cell{display:flex;flex-direction:column;gap:2px;padding:12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2)}.metal-mini-cell .sym{font-weight:800;font-size:13px}.metal-mini-cell b{font-size:18px;font-weight:600;letter-spacing:-.02em}.metal-mini-cell small{color:var(--text-3);font-size:11.5px}.sym-chip{display:inline-grid;place-items:center;width:26px;height:20px;margin-right:6px;border-radius:3px;color:#04110f;font-size:11px;font-weight:800}.guide{margin:0;padding-left:18px;display:grid;gap:10px;color:var(--text-2);font-size:13px}.search-field{position:relative;display:inline-flex;align-items:center}.search-field>svg{position:absolute;left:10px;color:var(--text-3);pointer-events:none}.payload{margin:0;padding:12px 6px;overflow:auto;font-family:var(--font-mono);font-size:12px;color:var(--text-2);max-height:220px}.form{display:flex;flex-direction:column;gap:14px}.form-2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.plain-list{margin:0;padding-left:18px;display:grid;gap:10px;color:var(--text-2);font-size:13px;line-height:1.5}.plain-list b{color:var(--text)}.landing{background:var(--bg);color:var(--text);min-height:100vh}.hero{position:relative;min-height:100vh;display:flex;flex-direction:column;align-items:center;background:#150e0a;overflow:hidden}.land-nav{position:relative;z-index:3;width:100%;display:flex;align-items:center;justify-content:space-between;padding:16px clamp(16px,4vw,40px)}.land-nav .logo-word,.land-nav .land-register{color:#f5ede1}.land-nav .land-register:hover{background:#f5ede11a}.land-nav .icon-btn{color:#f5ede1;border-color:#f5ede140;background:#18100b73}.hero-copy{position:relative;z-index:3;max-width:640px;padding:clamp(12px,4vh,48px) 20px 0;text-align:center;display:grid;gap:14px;justify-items:center}.hero h1 em{font-style:normal;color:var(--accent)}.hero h1{margin:0;font-size:clamp(32px,4.6vw,54px);line-height:1.05;letter-spacing:-.025em;font-weight:750;color:#fbf4e8}.hero-copy p{margin:0;font-size:clamp(15px,1.4vw,17px);line-height:1.55;color:var(--text-2);max-width:52ch}.hero-copy .btn{margin-top:6px}.hero-scene{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1}.hero-scene canvas{display:block;-webkit-mask-image:radial-gradient(ellipse 50% 54% at 50% 56%,#000 55%,transparent 100%);mask-image:radial-gradient(ellipse 50% 54% at 50% 56%,#000 55%,transparent 100%)}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;background:linear-gradient(180deg,#150e0a,#150e0a8c 26%,#150e0a00 48%,#150e0a00 82%,#150e0a)}.strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:980px;margin:0 auto;padding:36px 20px;gap:24px}.strip div{display:grid;gap:4px;justify-items:start;border-top:1px solid var(--border-strong);padding-top:14px}.strip i{font-style:normal;font-family:var(--font-mono);font-size:12px;color:var(--accent);letter-spacing:.08em}.strip b{font-size:15px}.strip span{font-size:13.5px;color:var(--text-3);line-height:1.5}@media (max-width: 700px){.strip{grid-template-columns:1fr}}.land-foot{display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;color:var(--text-3);font-size:12.5px;border-top:1px solid var(--border)}.hero-caption{position:absolute;z-index:3;bottom:18px;left:0;right:0;margin:0;text-align:center;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:#f5ede173}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}.hero .btn-primary{box-shadow:0 0 0 1px #3cc9c480,0 10px 30px -10px #3cc9c48c}.spark{position:absolute;z-index:4;left:clamp(16px,4vw,48px);bottom:64px;width:252px;padding:12px 14px 10px;background:#18100bb8;border:1px solid rgba(245,237,225,.16);border-radius:var(--r-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.spark-head{display:flex;justify-content:space-between;align-items:baseline;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3);margin-bottom:4px}.spark-head b{font-size:15px;letter-spacing:0;color:#fbf4e8;font-variant-numeric:tabular-nums}.spark-head i{font-style:normal;color:var(--warn);margin:0 2px}.spark svg{display:block;width:100%;height:auto;overflow:visible}.spark-band{fill:#3cc9c429}.spark-now{stroke:#f5ede140;stroke-dasharray:2 3}.spark-obs,.spark-fc{fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.spark-obs{stroke:#ee9238;stroke-dasharray:1;stroke-dashoffset:1;animation:spark-draw 1.6s var(--ease) .4s forwards}.spark-fc{stroke:#3cc9c4;stroke-dasharray:.05 .03;opacity:0;animation:spark-fade 1s var(--ease) 1.9s forwards}.spark-dot{fill:#ee9238;stroke:#fff;stroke-width:1.5;animation:spark-pulse 2s ease-in-out infinite;transform-box:fill-box;transform-origin:center}.spark-foot{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:10px;color:var(--text-3);margin-top:2px}@keyframes spark-draw{to{stroke-dashoffset:0}}@keyframes spark-fade{to{opacity:1}}@keyframes spark-pulse{50%{transform:scale(1.5)}}.ticker{position:absolute;z-index:4;left:0;right:0;bottom:0;overflow:hidden;border-top:1px solid rgba(245,237,225,.1);background:#150e0ab3}.ticker-track{display:flex;gap:40px;width:max-content;padding:11px 0;animation:ticker 48s linear infinite;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:#f5ede18c;white-space:nowrap}.ticker-track span:before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--accent);margin-right:10px;vertical-align:middle}@keyframes ticker{to{transform:translate(-50%)}}@media (prefers-reduced-motion: reduce){.ticker-track{animation:none}.spark-obs{animation:none;stroke-dashoffset:0}.spark-fc{animation:none;opacity:1}.spark-dot{animation:none}}.risk{position:absolute;z-index:4;right:clamp(16px,4vw,48px);bottom:64px;width:252px;padding:12px 14px;display:grid;gap:9px;background:#18100bb8;border:1px solid rgba(245,237,225,.16);border-radius:var(--r-md);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.risk-head{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.risk-row{display:grid;grid-template-columns:1fr 74px 30px;align-items:center;gap:10px;font-size:12px;color:#f5ede1cc}.risk-row i{display:block;height:4px;border-radius:2px;background:#f5ede11f;overflow:hidden}.risk-row b{display:block;height:100%;border-radius:2px;transform-origin:left;animation:risk-grow 1.2s var(--ease) .8s backwards}.risk-row b.hi{background:#e0644a}.risk-row b.mid{background:#ee9238}.risk-row b.lo{background:#3cc9c4}.risk-row em{font-style:normal;font-family:var(--font-mono);font-size:11px;text-align:right;color:#f5ede199}@keyframes risk-grow{0%{transform:scaleX(0)}}.land-nav,.hero-copy h1,.hero-copy p{animation:land-rise .8s var(--ease) backwards}.hero-copy h1{animation-delay:.1s}.hero-copy p{animation-delay:.25s}.hero-scene{animation:land-fade 1.4s var(--ease) .1s backwards}.spark,.risk{animation:land-rise .9s var(--ease) .6s backwards}@keyframes land-rise{0%{opacity:0;transform:translateY(14px)}}@keyframes land-fade{0%{opacity:0}}@media (prefers-reduced-motion: reduce){.land-nav,.hero-copy h1,.hero-copy p,.hero-scene,.spark,.risk,.risk-row b{animation:none}}.strip{padding:56px 20px 48px;gap:32px}.strip div{border-top-color:var(--border);position:relative;padding-top:18px;transition:transform .25s var(--ease)}.strip div:before{content:"";position:absolute;top:-1px;left:0;width:28px;height:2px;background:var(--accent);transition:width .3s var(--ease)}.strip div:hover:before{width:64px}.strip i{font-size:11.5px}.strip b{font-size:17px;letter-spacing:-.01em}.strip span{font-size:14px;max-width:30ch}@media (max-width: 900px){.spark,.risk{display:none}}.topo{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);background:var(--bg);color:var(--text)}.auth-art{position:relative;overflow:hidden;background:#150e0a;color:var(--text);min-height:100vh}.auth-art .terrain-scene{position:absolute;top:0;right:0;bottom:0;left:0}.auth-art:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(0deg,#150e0af0,#150e0a8c 36%,#150e0a0d 70%),linear-gradient(90deg,#150e0a8c,#150e0a00 55%)}.auth-art-inner{position:relative;z-index:2;height:100%;min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:30px clamp(24px,4vw,48px)}.auth-art-inner .logo-word{color:#f5ede1}.auth-art-copy{max-width:470px;display:grid;gap:16px}.auth-art-copy h2{margin:0;font-size:clamp(26px,2.8vw,38px);line-height:1.1;letter-spacing:-.02em;color:#fbf4e8}.auth-points{list-style:none;margin:0;padding:0;display:grid;gap:12px}.auth-points li{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:14.5px;line-height:1.5;color:var(--text-2)}.auth-points svg{color:var(--accent);margin-top:2px}.auth-foot{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--text-3)}.auth-panel{display:flex;flex-direction:column;padding:22px clamp(20px,4vw,48px) 28px;min-width:0}.auth-top{display:flex;justify-content:space-between;align-items:center}.auth-card{margin:auto;width:min(420px,100%);display:grid;gap:16px;padding:8px 0}.auth-card-head{display:grid;gap:8px}.auth-card-head h1{margin:0;font-size:28px;letter-spacing:-.02em}.auth-card-head p{margin:0;color:var(--text-3);font-size:14px}.auth-badge{width:44px;height:44px;border-radius:3px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.input-icon{position:relative}.input-icon>svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.input-icon .input{padding-left:40px;padding-right:40px;width:100%}.input-trail{position:absolute;right:6px;top:50%;transform:translateY(-50%);width:32px;height:32px;display:grid;place-items:center;border:0;border-radius:3px;background:none;color:var(--text-3);cursor:pointer}.input-trail:hover{color:var(--text);background:var(--surface-3)}.field-note{font-size:12.5px;color:var(--text-3)}.field-note.warn{color:var(--warn)}.auth-roles{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:12.5px;padding-top:4px}.auth-help{text-align:center;font-size:13px;color:var(--text-3);margin:0}@media (max-width: 900px){.auth{grid-template-columns:1fr}.auth-art{display:none}}.map-stage{container-type:inline-size;position:relative;flex:1;min-height:calc(100vh - var(--topbar-h));overflow:hidden;background:var(--bg-elev)}.map-surface{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:var(--bg-elev)}.map-surface.dragging{cursor:grabbing}.map-surface.measuring{cursor:crosshair}.map-tiles{position:absolute;top:0;right:0;bottom:0;left:0}.map-tiles[data-basemap=dark]{filter:invert(1) hue-rotate(180deg) sepia(.35) brightness(.82) contrast(.9) saturate(.7)}.map-tiles[data-basemap=light]{filter:grayscale(.6) brightness(1.04) contrast(.95)}.map-tile{position:absolute;max-width:none;pointer-events:none;-webkit-user-drag:none}.map-heat,.map-contours,.map-svg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.map-heat{filter:blur(9px)}.map-boundary{fill:#2dd4bf12;stroke:var(--accent);stroke-width:2;stroke-dasharray:8 5}.map-measure-line{fill:none;stroke:#fff;stroke-width:2.5;stroke-dasharray:2 5;stroke-linecap:round;filter:drop-shadow(0 0 3px rgba(0,0,0,.8))}.map-measure-pt{fill:var(--accent);stroke:#fff;stroke-width:2}.mk{position:absolute;z-index:5;display:flex;flex-direction:column;align-items:center;gap:4px;transform:translate(-50%,-50%);padding:0;border:0;background:transparent;cursor:pointer}.mk-dot{position:relative;display:block;width:18px;height:18px;border-radius:50%;background:var(--mk, #7c8b97);border:2.5px solid rgba(255,255,255,.95);box-shadow:0 0 0 4px color-mix(in srgb,var(--mk, #7c8b97) 30%,transparent),0 3px 10px #00000080;transition:transform .15s var(--ease)}.mk:hover .mk-dot{transform:scale(1.18)}.mk.sel{z-index:8}.mk.sel .mk-dot{transform:scale(1.3);box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--mk),0 4px 14px #0009}.mk.nodata .mk-dot{background:transparent;border-style:dashed;border-color:var(--mk);box-shadow:none}.mk.alarm .mk-dot:after{content:"";position:absolute;top:-9px;right:-9px;bottom:-9px;left:-9px;border-radius:50%;border:2px solid var(--mk);animation:mk-pulse 1.8s ease-out infinite}@keyframes mk-pulse{0%{transform:scale(.55);opacity:.95}to{transform:scale(1.5);opacity:0}}.mk-label{position:absolute;top:24px;padding:1px 6px;border-radius:3px;background:var(--glass);border:1px solid var(--border-strong);color:var(--text);font-family:var(--font-mono);font-size:10.5px;font-weight:600;white-space:nowrap;pointer-events:none}.mk-tip{position:absolute;z-index:12;transform:translate(-50%,calc(-100% - 22px));display:grid;gap:3px;min-width:170px;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-md);font-size:12px;pointer-events:none}.mk-tip>div{display:flex;justify-content:space-between;gap:18px}.mk-tip span{color:var(--text-3)}.anomaly-ring{position:absolute;z-index:4;transform:translate(-50%,-50%);border-radius:50%;border:2px solid var(--danger);background:radial-gradient(circle,#f8717147,#f8717105 70%);animation:ring-breathe 3s ease-in-out infinite;pointer-events:auto}@keyframes ring-breathe{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.9}50%{transform:translate(-50%,-50%) scale(1.12);opacity:.55}}.map-panel{position:absolute;z-index:20;top:16px;display:flex}.map-panel.left{left:16px;bottom:16px}.map-panel.right{right:68px;max-height:calc(100% - 32px)}.map-panel-body{width:304px;display:flex;flex-direction:column;gap:14px;padding:16px;overflow-y:auto;border-radius:var(--r-lg);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-lg)}.map-panel.left .map-panel-body{max-height:100%}.map-panel.left.closed{bottom:auto}.map-panel-toggle{position:absolute;top:12px;right:-14px;z-index:2;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);box-shadow:var(--shadow-sm)}.map-panel.left.closed .map-panel-toggle{position:static;width:40px;height:40px;border-radius:var(--r-md);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.mp-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.mp-title{font-size:15px;font-weight:700;letter-spacing:-.01em}.mp-sub{margin-top:2px;font-size:12px;color:var(--text-3)}.mp-sec{display:flex;flex-direction:column;gap:8px;padding-top:14px;border-top:1px solid var(--border)}.mp-sec.grow{min-height:140px;flex:1}.mp-label{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.mp-check{font-size:13px;padding:2px 0}.mp-list{display:flex;flex-direction:column;gap:2px;overflow-y:auto;max-height:220px}.mp-item,.mover{display:flex;align-items:center;gap:10px;padding:7px 8px;border:0;border-radius:var(--r-sm);background:transparent;text-align:left;color:var(--text);font-size:12.5px}.mp-item:hover,.mover:hover{background:var(--surface-2)}.mp-item.on{background:var(--accent-soft)}.mp-item .grow,.mover .grow{flex:1;min-width:0}.mover small{display:block;font-size:11.5px;color:var(--text-3);font-family:var(--font-mono)}.mp-dot{width:10px;height:10px;flex-shrink:0;border-radius:50%}.bm-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.bm-btn{display:flex;flex-direction:column;align-items:center;gap:5px;padding:6px 4px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-2);font-size:11px;font-weight:600}.bm-btn:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.bm-btn.on{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.bm-btn:disabled{opacity:.4;cursor:not-allowed}.bm-swatch{width:100%;height:22px;border-radius:3px;border:1px solid var(--border)}.bm-btn[data-bm=dark] .bm-swatch{background:linear-gradient(135deg,#17100c,#2e2018)}.bm-btn[data-bm=light] .bm-swatch{background:linear-gradient(135deg,#eef1f4,#d5dbe2)}.bm-btn[data-bm=streets] .bm-swatch{background:linear-gradient(135deg,#f1ead6,#cfe5c0 55%,#a9cde3)}.bm-btn[data-bm=satellite] .bm-swatch{background:linear-gradient(135deg,#2c3a1f,#56694a 50%,#6b5a45)}.bm-btn[data-bm=terrain] .bm-swatch{background:linear-gradient(135deg,#2c2018,#a85f2e 55%,#e7d0a2)}.insp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.insp-grid>div{display:flex;flex-direction:column;gap:1px;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2)}.insp-grid small{font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3)}.insp-grid b{font-size:18px;font-weight:600;letter-spacing:-.02em}.insp-grid b.sm{font-size:13px;padding-top:4px}.insp-grid i{font-style:normal;font-size:11px;color:var(--text-3)}.insp-row{display:grid;gap:4px;font-size:12px;color:var(--text-3)}.insp-note{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:var(--r-md);background:var(--danger-soft);color:var(--danger)}.insp-note b{display:block;font-size:13px}.insp-note small{color:var(--text-2);font-size:12px}.map-tools{position:absolute;z-index:20;top:16px;right:16px;display:flex;flex-direction:column;gap:1px;overflow:hidden;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--border);box-shadow:var(--shadow-md)}.mt-btn{display:grid;place-items:center;width:40px;height:40px;border:0;background:var(--surface);color:var(--text-2)}.mt-btn:hover{background:var(--surface-2);color:var(--text)}.mt-btn.on{background:var(--accent);color:var(--text-inverse)}.map-chip{position:absolute;z-index:20;top:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;border-radius:3px;border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md);font-size:13px}.map-timeline{position:absolute;z-index:20;left:50%;bottom:16px;transform:translate(-50%);display:flex;align-items:center;gap:14px;padding:8px 18px 8px 8px;border-radius:3px;border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-lg)}.mt-play{display:grid;place-items:center;width:38px;height:38px;border:0;border-radius:50%;background:var(--accent);color:var(--text-inverse)}.mt-steps{display:flex;gap:2px;padding:3px;border-radius:3px;background:var(--surface-2)}.mt-steps button{height:30px;padding:0 14px;border:0;border-radius:3px;background:transparent;color:var(--text-2);font-family:var(--font-mono);font-size:12.5px;font-weight:600}.mt-steps button.on{background:var(--accent-soft);color:var(--accent)}.mt-info{display:flex;flex-direction:column;line-height:1.25}.mt-info b{font-size:13px}.mt-info small{font-size:11.5px;color:var(--text-3)}.map-legend{position:absolute;z-index:20;right:16px;bottom:44px;width:248px;display:flex;flex-direction:column;gap:8px;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md)}.ml-title{font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-3)}.ml-bar{height:9px;border-radius:3px}.ml-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--text-2)}.ml-bands{font-size:10.5px;color:var(--text-3)}.ml-chips{display:flex;gap:14px;font-size:12px;color:var(--text-2);text-transform:capitalize}.ml-chips span{display:inline-flex;align-items:center;gap:6px}.ml-chips i{width:10px;height:10px;border-radius:50%;display:inline-block}.ml-scale{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--text-2)}.ml-scale-bar{height:6px;border:2px solid var(--text-2);border-top:0}.map-readout{position:absolute;z-index:20;right:16px;bottom:14px;padding:3px 9px;border-radius:3px;background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:10.5px;color:var(--text-2);pointer-events:none}.map-attr{color:var(--text-3);font-family:var(--font-sans)}.map-empty,.map-loading{position:absolute;z-index:25;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:8px;max-width:380px;padding:28px 32px;text-align:center;border-radius:var(--r-lg);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-lg);color:var(--text-2)}.map-empty p,.map-loading small{font-size:12.5px;color:var(--text-3)}.map-empty svg{color:var(--text-3)}.cesium-fill{position:absolute;top:0;right:0;bottom:0;left:0}.cesium-fill .cesium-viewer,.cesium-fill .cesium-viewer-cesiumWidgetContainer,.cesium-fill .cesium-widget,.cesium-fill canvas{width:100%;height:100%}.cesium-fill .cesium-widget-credits{font-size:10px;opacity:.8}.cam-pad{position:absolute;z-index:20;right:16px;bottom:44px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border-radius:var(--r-lg);border:1px solid var(--border-strong);background:var(--glass);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--shadow-md)}.compass{width:56px;height:56px;padding:0;border:0;background:transparent}.compass svg{width:100%;height:100%;transition:transform .12s linear}.pad-grid{display:grid;grid-template-columns:repeat(3,34px);gap:4px}.pad-grid button{display:grid;place-items:center;height:34px;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);color:var(--text-2)}.pad-grid button:hover{color:var(--text);border-color:var(--border-strong)}.pad-grid button.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.pad-heading{font-size:11px;color:var(--text-3)}.map-hint{position:absolute;z-index:20;left:50%;bottom:14px;transform:translate(-50%);padding:5px 14px;border-radius:3px;background:var(--glass);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);font-size:11.5px;color:var(--text-3);white-space:nowrap}.map-hint b{color:var(--text-2);font-weight:600}.slider-row{display:grid;grid-template-columns:1fr auto;gap:4px 8px;font-size:12.5px;color:var(--text-2)}.slider-row .range{grid-column:1 / -1}.preset-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.legend-col{display:grid;gap:6px;font-size:12px;color:var(--text-2)}.legend-col span{display:flex;align-items:center;gap:8px}.legend-col .sw{width:12px;height:12px;border-radius:3px;display:inline-block}@container (max-width: 1100px){.map-stage.has-left .map-legend,.map-stage.has-left .map-timeline{display:none}.map-legend{width:208px}.mt-info{display:none}.map-panel.right{max-height:calc(100% - 232px)}.map-panel.right .map-panel-body{max-height:100%}}@media (max-width: 960px){.map-panel.left{bottom:auto}.map-panel-body{width:min(304px,calc(100vw - 96px));max-height:46vh}.map-panel.right{right:16px;top:auto;bottom:76px}.map-panel.right .map-panel-body{width:min(340px,calc(100vw - 32px));max-height:40vh}.map-legend,.map-hint,.cam-pad .pad-heading{display:none}.map-timeline{bottom:44px;padding-right:10px}.mt-info{display:none}.map-tools{top:70px}}.mp{position:relative;overflow:hidden;border-radius:var(--r-md);border:1px solid var(--border-strong);background:var(--surface-3);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.mp.picking{cursor:crosshair;box-shadow:0 0 0 2px var(--accent-ring)}.mp-tiles{position:absolute;top:0;right:0;bottom:0;left:0}.mp-tiles img{position:absolute;max-width:none;pointer-events:none;-webkit-user-drag:none}.mp-svg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mp-line-casing{fill:none;stroke:#0a1e22b3;stroke-width:7;stroke-linecap:round;stroke-linejoin:round}.mp-line{fill:none;stroke:#4fe0d8;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:9 7;animation:mp-flow 1.2s linear infinite}@keyframes mp-flow{to{stroke-dashoffset:-16}}@media (prefers-reduced-motion: reduce){.mp-line{animation:none}}.mp-pin{position:absolute;z-index:3;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;gap:3px;padding:0;border:0;background:none;cursor:pointer}.mp-dot{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);display:grid;place-items:center;background:var(--pin);color:#fff;font-weight:700;font-size:12px;border:2px solid #fff;box-shadow:0 3px 10px #00000073}.mp-dot{padding-top:0}.mp-dot:first-line{line-height:1}.mp-pin .mp-dot{text-shadow:0 1px 2px rgba(0,0,0,.4)}.mp-name{font-size:11px;font-weight:600;padding:2px 7px;border-radius:3px;background:#18100bdb;color:#f5ede1;white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}.mp-pin.sel .mp-name{background:var(--accent);color:var(--text-inverse)}.mp-pin.sel .mp-dot{box-shadow:0 0 0 4px var(--accent-ring),0 3px 10px #00000073}.mp-ctl{position:absolute;right:10px;top:10px;z-index:4;display:grid;gap:6px}.mp-ctl button{width:32px;height:32px;display:grid;place-items:center;border-radius:3px;border:1px solid var(--border-strong);background:var(--glass);color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mp-ctl button:hover,.mp-ctl button.on{background:var(--accent-soft);color:var(--accent)}.mp-hint{position:absolute;z-index:4;left:50%;top:10px;transform:translate(-50%);display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:3px;font-size:12.5px;font-weight:600;background:var(--accent);color:var(--text-inverse);box-shadow:var(--shadow-md);pointer-events:none}.mp-coords{position:absolute;z-index:4;left:10px;bottom:22px;font-size:11px;padding:2px 7px;border-radius:3px;background:var(--glass);color:var(--text-2);pointer-events:none}.mp-attr{position:absolute;z-index:4;left:0;right:0;bottom:0;padding:2px 8px;font-size:10px;text-align:right;color:var(--text-2);background:var(--glass);pointer-events:none}.sw-panel{background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg);animation:none;position:fixed;top:calc(var(--topbar-h) - 4px);right:12px;left:auto;transform:none;width:min(440px,calc(100vw - 24px));padding:0;overflow:hidden;z-index:70}.sw-search{padding:10px;border-bottom:1px solid var(--border);position:relative}.sw-search>svg{position:absolute;left:22px;top:50%;transform:translateY(-50%);color:var(--text-3);pointer-events:none}.sw-search input{width:100%;padding-left:32px}.sw-list{max-height:360px;overflow:auto;padding:6px;display:grid;gap:4px}.sw-item{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:9px 10px;border-radius:var(--r-md);border:1px solid transparent;background:none;color:inherit;text-align:left;cursor:pointer}.sw-item:hover{background:var(--surface-hover)}.sw-item.sel{border-color:var(--accent-ring);background:var(--accent-soft)}.sw-badge{width:38px;height:38px;border-radius:3px;display:grid;place-items:center;font-weight:800;color:#fff;font-size:15px;background:var(--site-tone, var(--accent-strong))}.sw-title{font-weight:650;font-size:14px;display:flex;align-items:center;gap:6px}.sw-sub{font-size:12px;color:var(--text-3);margin-top:2px}.sw-meta{text-align:right;font-size:12px;color:var(--text-2);display:grid;gap:2px;justify-items:end}.sw-foot{display:flex;gap:8px;padding:10px;border-top:1px solid var(--border);background:var(--surface-2)}.pill-demo{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:2px 7px;border-radius:3px;background:var(--c2);color:#1b1109}.pill-new{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:3px;background:var(--surface-3);color:var(--text-2)}.proj-owner{margin-top:2px;font-size:12px;color:var(--text-3)}.pill-role{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:3px;background:var(--accent);color:var(--on-accent, #fff);text-transform:uppercase;letter-spacing:.05em}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:18px}.proj{position:relative;display:grid;grid-template-rows:96px auto;border-radius:var(--r-lg);border:1px solid var(--border);background:var(--surface);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .15s var(--ease),box-shadow .15s var(--ease),border-color .15s}.proj:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--border-strong)}.proj.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent-ring),var(--shadow-md)}.proj-art{position:relative;background:linear-gradient(135deg,var(--tone-a),var(--tone-b));overflow:hidden}.proj-art svg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:.55;mix-blend-mode:soft-light}.proj-art .tags{position:absolute;left:12px;top:12px;display:flex;gap:6px}.proj-body{padding:16px 18px 18px;display:grid;gap:12px;align-content:start}.proj-body h3{margin:0;font-size:18px;letter-spacing:-.01em}.proj-region{font-size:12.5px;color:var(--text-3);margin-top:2px}.proj-desc{font-size:13.5px;color:var(--text-2);line-height:1.5;margin:0;min-height:40px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.proj-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.proj-stats div{display:grid;gap:1px;padding:8px 9px;border-radius:var(--r-sm);background:var(--surface-2)}.proj-stats b{font-size:15px;font-variant-numeric:tabular-nums}.proj-stats span{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-3)}.proj-actions{display:flex;gap:8px;flex-wrap:wrap}.proj-new{display:grid;place-items:center;gap:8px;text-align:center;min-height:270px;border-radius:var(--r-lg);border:2px dashed var(--border-strong);background:transparent;color:var(--text-2);cursor:pointer;padding:20px}.proj-new:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.proj-new b{font-size:16px;color:var(--text)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:16px;background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:min(720px,100%);max-height:calc(100vh - 32px);overflow:auto;border-radius:var(--r-xl);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow-lg)}.modal-h{display:flex;justify-content:space-between;align-items:start;gap:12px;padding:22px 24px 8px}.modal-h h2{margin:0;font-size:22px;letter-spacing:-.01em}.modal-h p{margin:4px 0 0;color:var(--text-3);font-size:13.5px}.modal-b{padding:14px 24px 8px;display:grid;gap:14px}.modal-f{display:flex;justify-content:space-between;gap:10px;padding:16px 24px 22px}.steps{display:flex;gap:6px;padding:0 24px}.steps i{flex:1;height:4px;border-radius:4px;background:var(--surface-3)}.steps i.on{background:var(--accent)}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.choice{display:grid;gap:6px;text-align:left;padding:14px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2);color:inherit;cursor:pointer}.choice:hover{border-color:var(--border-strong)}.choice.sel{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent-ring)}.choice b{font-size:14.5px;display:flex;align-items:center;gap:8px}.choice span{font-size:12.5px;color:var(--text-3);line-height:1.45}.choice .effort{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}.stepcard{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface)}.stepcard>header{display:flex;gap:14px;align-items:center;padding:18px 22px}.stepcard>header .n{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:800;flex:none}.stepcard>header.done .n{background:var(--ok);color:#fff}.stepcard>header h3{margin:0;font-size:17px}.stepcard>header p{margin:2px 0 0;font-size:13px;color:var(--text-3)}.stepcard>.body{padding:0 22px 22px;display:grid;gap:16px}.code{position:relative;border-radius:var(--r-md);background:#1a120d;border:1px solid var(--border-strong);overflow:hidden}.code pre{margin:0;padding:16px;overflow:auto;max-height:340px;font-family:var(--font-mono);font-size:12.5px;line-height:1.55;color:#f1e6d3}.code .copy{position:absolute;right:8px;top:8px}.code-tabs{display:flex;gap:6px;flex-wrap:wrap}.keybox{display:grid;gap:8px;padding:14px;border-radius:var(--r-md);border:1px solid var(--warn);background:var(--warn-soft)}.keybox code{font-family:var(--font-mono);font-size:13.5px;word-break:break-all;color:var(--text)}.sensor-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);gap:16px;align-items:start}@media (max-width: 980px){.sensor-layout{grid-template-columns:1fr}}.sensor-list{display:grid;gap:8px;max-height:480px;overflow:auto}.srow{display:grid;grid-template-columns:12px 1fr auto;gap:10px;align-items:center;padding:10px 12px;border-radius:var(--r-md);border:1px solid var(--border);background:var(--surface-2)}.srow.sel{border-color:var(--accent);background:var(--accent-soft)}.srow .st{width:10px;height:10px;border-radius:50%;background:var(--c)}.srow b{font-size:14px}.srow small{color:var(--text-3);display:block;margin-top:2px}.chips{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.chips span{font-size:11px;padding:1px 7px;border-radius:3px;background:var(--surface-3);color:var(--text-2)}.dropzone{display:grid;place-items:center;gap:8px;padding:34px 20px;border:2px dashed var(--border-strong);border-radius:var(--r-lg);text-align:center;color:var(--text-2);cursor:pointer;background:var(--surface-2)}.dropzone:hover,.dropzone.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dropzone b{color:var(--text);font-size:15px}.progress{height:8px;border-radius:3px;background:var(--surface-3);overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--accent-strong),var(--accent));transition:width .4s var(--ease)}.checklist{list-style:none;margin:0;padding:0;display:grid;gap:8px}.checklist li{display:flex;gap:10px;align-items:center;font-size:14px;color:var(--text-2)}.checklist li .ico{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:var(--surface-3);color:var(--text-3);flex:none}.checklist li.ok .ico{background:var(--ok);color:#fff}.checklist li.ok{color:var(--text)}.checklist li.run .ico{background:var(--accent-soft);color:var(--accent)}.onboard{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:16px 18px;margin-bottom:16px;border-radius:var(--r-lg);border:1px solid var(--accent-ring);background:linear-gradient(90deg,var(--accent-soft),transparent)}.onboard .ico{width:42px;height:42px;border-radius:3px;display:grid;place-items:center;background:var(--accent);color:var(--text-inverse)}.onboard b{display:block;font-size:15px}.onboard span{font-size:13px;color:var(--text-2)}@media (max-width: 760px){.onboard{grid-template-columns:1fr}}.proj-art svg{opacity:1;mix-blend-mode:normal}.proj-art .topo path{stroke:#ffffff47}
