*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden;background:#0d0d0f;color:#eaeaea;font-family:Inter,Arial,sans-serif}.app{display:grid;grid-template-areas:"top top" "sidebar main";grid-template-rows:56px minmax(0,1fr);grid-template-columns:var(--sidebar-w) 1fr;height:100vh;overflow:hidden}:root{--sidebar-w: 400px}@media (max-width:1500px){:root{--sidebar-w: 380px }}@media (max-width:1360px){:root{--sidebar-w: 360px }}.top{grid-area:top;display:flex;align-items:center;gap:.65rem;padding:0 .9rem;background:#0c0c0e9e;border-bottom:1px solid #222;-webkit-backdrop-filter:saturate(140%) blur(8px);backdrop-filter:saturate(140%) blur(8px)}.logo{font-weight:800;letter-spacing:.6px;font-size:1.05rem;color:#dfe7e2;position:relative;padding-right:12px}.logo:after{content:"";position:absolute;right:0;top:50%;width:6px;height:6px;border-radius:50%;transform:translateY(-50%);background:radial-gradient(closest-side,#6de37e,#6de37e00);box-shadow:0 0 8px #6de37e73;opacity:.9;animation:logoPulse 2.6s ease-in-out infinite}@keyframes logoPulse{0%,to{transform:translateY(-50%) scale(.85);opacity:.65}50%{transform:translateY(-50%) scale(1.1);opacity:1}}.spacer{flex:1}.btn{background:#1c1d20;border:1px solid #2a2b30;padding:.45rem .75rem;border-radius:8px;color:#eaeaea;font-size:.85rem;cursor:pointer}.btn:hover{background:#232429}.btn.primary{background:#6de37e;color:#000;border-color:#6de37e}.btn.ghost{background:transparent}.pill{border:1px solid #2a2b30;border-radius:999px;padding:.5rem .9rem;font-weight:700;line-height:1;background:#1c1d20;color:#eaeaea;transition:transform .06s ease,filter .15s ease,box-shadow .15s ease}.pill:hover{filter:brightness(1.05)}.pill:active{transform:translateY(1px)}.pill.primary{--c1:#6de37e;--c2:#3fdc97;background:linear-gradient(135deg,var(--c1),var(--c2));color:#0c0d0f;border:0;box-shadow:0 4px 18px #3fdc972e,inset 0 0 0 1px #00000026}.left{grid-area:sidebar;background:#141416;border-right:1px solid #222;display:flex;flex-direction:column;min-height:0;padding-bottom:12px}:root{--sidebar-pad-l: 12px;--sidebar-pad-r: 16px}.left-content{padding:10px var(--sidebar-pad-r) 14px var(--sidebar-pad-l)}.acc{background:#15161a;border:1px solid #24252b;border-radius:12px;margin-bottom:.9rem;overflow:hidden}.acc-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;color:#e6e7ea}.acc-head:hover{background:#18191d}.acc-head .chev{width:8px;height:8px;border-right:2px solid #888;border-bottom:2px solid #888;transform:rotate(-45deg);transition:transform .12s ease}.acc.open .acc-head .chev{transform:rotate(45deg)}.acc .acc-body{display:block}.acc:not(.open) .acc-body{display:none}.acc-body{padding:12px 16px 14px}.row{display:grid;grid-template-columns:140px 1fr;gap:.6rem;align-items:center;line-height:1.35}.row .inline{color:#9aa0a6;font-size:.88rem}.input{background:#0f1013;border:1px solid #2a2b30;padding:.55rem .6rem;border-radius:10px;color:#eaeaea;font-size:.92rem;width:100%}.input::placeholder{color:#777b84}.select{background:#0f1013;border:1px solid #2a2b30;padding:.55rem .6rem;border-radius:10px;color:#eaeaea;font-size:.92rem;width:100%}.select:focus,.input:focus{outline:none;border-color:#2f3f34;box-shadow:0 0 0 2px #6de37e14}.btn-group{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.btn-row{display:flex;gap:.5rem;flex-wrap:wrap}.segmented{display:grid;grid-template-columns:1fr 1fr;background:#0f1013;border:1px solid #24252b;border-radius:10px;overflow:hidden}.segmented .seg{text-align:center;padding:.45rem .4rem;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.segmented .seg.active{background:#22242a;color:#6de37e;font-weight:600}.segmented.marker{grid-template-columns:repeat(5,1fr);gap:4px;background:transparent;border:0}.segmented.marker .seg{background:#0f1013;border:1px solid #24252b;border-radius:10px;padding:.45rem .35rem;font-size:.85rem}.segmented.marker .seg.active{background:#22242a;color:#6de37e;border-color:#2f3a30}.switch{display:inline-flex;align-items:center;gap:.5rem}.switch input{appearance:none;width:36px;height:20px;background:#2a2b30;border:1px solid #3a3b42;border-radius:999px;position:relative;outline:none}.switch input:checked{background:#2f4834;border-color:#35533b}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;background:#bbb;border-radius:50%;transition:transform .18s ease}.switch input:checked:after{transform:translate(16px);background:#6de37e}.switch .label{font-size:.85rem;color:#b4b7bf}.fold{border-top:1px solid #24252b;padding-top:10px;margin-top:10px}.fold:first-child{border-top:0;padding-top:0;margin-top:0}.main{grid-area:main;display:flex;flex-direction:column;position:relative;overflow:hidden;min-width:0;z-index:2}.map{flex:1;position:relative;overflow:hidden;cursor:crosshair}.map-attrib{position:absolute;bottom:8px;right:10px;font-size:.7rem;color:#777;background:#00000040;padding:2px 6px;border-radius:4px}.map-attrib a{color:#777;text-decoration:none}.map-attrib a:hover{color:#6de37e}.maplibregl-ctrl-top-right{display:none}.maplibregl-ctrl-bottom-left{bottom:8px;left:8px}.maplibregl-ctrl-scale{background:#0006;color:#ddd;border:1px solid #2a2b30;border-radius:4px;padding:0 6px}.panel{background:#141416;border-top:1px solid #222;padding:.5rem 1rem 1rem;overflow:hidden;position:relative;z-index:3}.metrics{display:flex;gap:2rem;margin:.35rem 0 .6rem}.metric .label{font-size:.75rem;color:#9aa0a6}.metric .value{font-weight:700}.tabs{display:flex;gap:1rem;margin-bottom:.5rem}.tab{padding:.3rem .55rem;font-size:.85rem;color:#a9abb3;cursor:pointer}.tab.active{color:#6de37e;border-bottom:2px solid #6de37e}.chart{height:160px;overflow:hidden}.details{display:grid;gap:10px;padding:.25rem .25rem 0}.card{background:#15161a;border:1px solid #24252b;border-radius:10px;padding:10px}.card-title{color:#a9abb3;margin-bottom:6px;font-size:.9rem}.grid2{display:grid;grid-template-columns:1fr auto;gap:6px}.overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#00000059;z-index:5;pointer-events:none}.overlay.show{display:flex}.spinner{width:26px;height:26px;border-radius:50%;border:3px solid #2a2b30;border-top-color:#6de37e;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.coord-pill{position:absolute;left:10px;bottom:10px;padding:.25rem .5rem;font-size:.8rem;background:#00000073;border:1px solid #2a2b30;border-radius:6px;cursor:pointer;-webkit-user-select:none;user-select:none}.coord-pill.ok{outline:2px solid #6de37e;outline-offset:2px}.gate{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(1200px 600px at 50% -10%,#6de37e14,#000000d9);z-index:9999}.gate-card{width:320px;background:#15161a;border:1px solid #24252b;border-radius:14px;padding:18px;display:grid;gap:10px;box-shadow:0 10px 30px #00000059}.gate-title{font-weight:800;letter-spacing:.6px;color:#e6e7ea;margin-bottom:4px}.gate-err{color:#ff6b6b;font-size:.9rem}*{-ms-overflow-style:none;scrollbar-width:none}*::-webkit-scrollbar{display:none}.chip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media (min-width: 420px){.chip-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.chip{position:relative;width:100%;text-align:left;border-radius:12px;border:1px solid #2a2d32;background:#17191c;padding:0;color:#e7eaee;cursor:pointer}.chip:hover{border-color:#3a3f45}.chip.active{border-color:#38d072;box-shadow:none}.chip.active:after{content:"";position:absolute;inset:0;border:1px solid rgba(56,208,114,.28);border-radius:12px;pointer-events:none}.chip--style .chip-img{width:100%;aspect-ratio:3/2;background-size:cover;background-position:center;border-radius:12px;overflow:hidden}.chip--overlay .chip-img{position:relative}.chip--overlay .chip-img:before{content:"";position:absolute;inset:0;background:linear-gradient(to top,#0000008c,#0000 55%)}.chip-badge{position:absolute;left:8px;right:8px;bottom:8px;padding:8px;border-radius:8px;background:#0f101273;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.chip-title{display:block;font-weight:700;font-size:.95rem;line-height:1.1}.chip-sub{display:block;font-size:.8rem;opacity:.8;margin-top:2px}.segmented{display:flex;border:1px solid #2a2d32;border-radius:10px;overflow:hidden;background:#17191c}.segmented .seg{flex:1;text-align:center;cursor:pointer;background:#17191c;color:#e7eaee;border:0;padding:8px 10px;font-size:.95rem;line-height:1.25}.segmented .seg+.seg{border-left:1px solid #2a2d32}.segmented .seg.active{background:#141619;color:#e7eaee}.seg--sm .seg{padding:6px 8px;font-size:.85rem}.fold{margin-bottom:12px}.fold-body>*+*{margin-top:10px}.fold .row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.fold .row .inline{min-width:112px;color:#c8cdd3}.segmented{border-radius:10px}.segmented.seg--sm .seg{padding:6px 10px;font-size:.85rem}.fold-body .switch+.switch{margin-left:10px}@media (max-width: 380px){.fold-body .switch+.switch{margin-left:0}}.side-footer{position:sticky;bottom:0;width:calc(100% - var(--sidebar-pad-l) - var(--sidebar-pad-r));margin-left:var(--sidebar-pad-l);margin-right:var(--sidebar-pad-r);margin-top:auto;margin-bottom:12px;padding:12px 16px 14px;border:1px solid #24252b;border-radius:10px;background:#141416eb;-webkit-backdrop-filter:saturate(140%) blur(6px);backdrop-filter:saturate(140%) blur(6px)}.sf-top{display:flex;align-items:center;gap:6px}.sf-brand{font-weight:800;letter-spacing:.5px;color:#e6e7ea}.sf-ver{color:#9aa0a6;font-variant-numeric:tabular-nums}.sf-meta{margin-top:4px;font-size:.8rem;color:#a3a7ae}.sf-links{margin-top:6px;display:flex;gap:10px;flex-wrap:wrap}.sf-links a{color:#9aa0a6;text-decoration:none;font-size:.8rem}.sf-links a:hover{color:#6de37e}.sf-dot{flex:0 0 6px;width:6px;height:6px;border-radius:50%;background:radial-gradient(closest-side,#6de37e,#6de37e00);box-shadow:0 0 8px #6de37e73;animation:logoPulse 2.6s ease-in-out infinite;position:relative;top:2.2px;margin:0}.measure-pill{pointer-events:none;background:#0000008c;border:1px solid #2a2b30;padding:4px 8px;border-radius:999px;font:600 12px/1.2 Inter,system-ui;color:#eaeaea;box-shadow:0 2px 10px #00000059;opacity:0;transform:translateY(4px);transition:opacity .25s ease,transform .25s ease;white-space:nowrap}.measure-pill.show{opacity:1;transform:translateY(0)}
