.page-body{flex:1;gap:12px;min-height:0;padding:0;display:flex;overflow:hidden}.sidebar-l{background:var(--paper-2);border:1px solid var(--line);border-radius:0;flex-direction:column;flex-shrink:0;width:260px;display:flex;overflow:hidden;box-shadow:0 26px 54px -38px #4d1be552}.filter-row{border-bottom:1px solid var(--line);flex-wrap:wrap;flex-shrink:0;gap:6px;padding:10px 14px;display:flex}.fchip{font-family:var(--sans);border:1px solid var(--line);color:var(--ink-2);cursor:pointer;background:0 0;border-radius:0;padding:6px 12px;font-size:11px;font-weight:700;transition:all .15s}.fchip:hover{border-color:var(--lavender);color:var(--violet);background:var(--lav-soft);transform:translateY(-1px)}.fchip.on{background:var(--violet);color:#fff;border-color:var(--violet)}.eco-list{scrollbar-width:none;flex:1;padding:4px 8px;overflow-y:auto}.eco-list::-webkit-scrollbar{display:none}.eco-row{cursor:pointer;border-radius:0;align-items:center;gap:10px;margin:2px 0;padding:11px 10px;transition:background .15s;display:flex}.eco-row:hover{background:#16131c0d}.eco-row.sel{background:var(--lav-soft)}.eco-n{font-family:var(--sans);color:var(--ink-3);font-variant-numeric:tabular-nums;min-width:18px;font-size:10.5px;font-weight:700}.eco-pip{border-radius:50%;flex-shrink:0;width:7px;height:7px}.eco-info{flex:1;min-width:0}.eco-city{font-family:var(--sans);color:var(--ink);font-size:12.5px;font-weight:700}.eco-row.sel .eco-city{color:var(--violet)}.eco-country{font-family:var(--sans);color:var(--ink-3);font-size:10px;font-weight:500}.eco-r{text-align:right}.eco-amt{font-family:var(--sans);color:var(--ink);font-variant-numeric:tabular-nums;font-size:11.5px;font-weight:800}.eco-rnd{font-family:var(--sans);color:var(--ink-3);font-size:9.5px;font-weight:600}.map-container{background:var(--lav-soft);border:1px solid var(--line);border-radius:0;flex:1;position:relative;overflow:hidden;box-shadow:0 26px 54px -38px #4d1be552}#map-svg{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;position:absolute;top:0;left:0}.country{stroke:#fff;stroke-width:.6px;cursor:pointer;transition:filter .15s}.country:hover{filter:brightness(.92)}.country.selected{stroke:var(--ink);stroke-width:1.75px}.country-none{fill:#ede9f5}.country-low{fill:var(--lav-soft)}.country-mid{fill:var(--lavender)}.country-high{fill:var(--violet-2)}.country-top{fill:var(--violet)}.map-controls{z-index:20;flex-direction:column;gap:6px;display:flex;position:absolute;top:14px;left:14px}.map-btn{border:1px solid var(--line);width:34px;height:34px;font-family:var(--sans);color:var(--ink-2);cursor:pointer;background:#fff;border-radius:0;justify-content:center;align-items:center;font-size:16px;font-weight:700;transition:all .15s;display:flex;box-shadow:0 10px 24px -14px #4d1be566}.map-btn:hover{color:var(--violet);border-color:var(--lavender);transform:translateY(-1px)}.pin-ring{fill:none;animation:2.8s ease-out infinite ringpulse}@keyframes ringpulse{0%{r:2;opacity:.9}to{r:18;opacity:0}}.info-card{z-index:30;border:1px solid var(--line);border-top:3px solid var(--violet);opacity:0;pointer-events:none;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;background:#fff;border-radius:0;width:292px;max-height:calc(100% - 28px);transition:opacity .2s,transform .2s;position:absolute;top:14px;right:14px;overflow:hidden auto;transform:translateY(-8px);box-shadow:0 26px 54px -30px #4d1be580}.info-card::-webkit-scrollbar{width:4px}.info-card::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:0}.info-card.show{opacity:1;pointer-events:all;transform:translateY(0)}.ic-type{font-family:var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--violet);padding:14px 18px 0;font-size:10.5px;font-weight:700}.ic-head{border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;padding:6px 18px 16px;display:flex}.ic-head-main{flex:1;min-width:0}.ic-close-top{cursor:pointer;font-family:var(--sans);color:var(--ink-3);background:0 0;border:none;flex-shrink:0;margin:-2px -4px 0 0;padding:4px;font-size:16px;display:none}.ic-close-top:hover{color:var(--violet)}.ic-name{font-family:var(--sans);letter-spacing:-.02em;color:var(--ink);font-size:21px;font-weight:800;line-height:1.12}.ic-sub{font-family:var(--sans);color:var(--ink-3);letter-spacing:.06em;text-transform:uppercase;margin-top:4px;font-size:10px;font-weight:600}.ic-body{padding:14px 18px}.ic-row{justify-content:space-between;align-items:baseline;margin-bottom:9px;display:flex}.ic-lbl{font-family:var(--sans);color:var(--ink-3);font-size:10.5px;font-weight:600}.ic-val{font-family:var(--sans);color:var(--ink);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:700}.ic-divider{background:var(--line);height:1px;margin:0 18px}.ic-section{padding:12px 18px}.ic-section-title{font-family:var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--violet);margin-bottom:8px;font-size:10px;font-weight:700}.ic-recent{font-family:var(--sans);color:var(--ink-2);gap:7px;margin-bottom:5px;font-size:11.5px;font-weight:500;line-height:1.6;display:flex}.ic-recent-arrow{font-family:var(--sans);color:var(--violet);flex-shrink:0;margin-top:2px;font-size:10px}.ic-round{border:1px solid var(--line);border-radius:0;margin-bottom:6px;padding:8px 10px}.ic-round:last-child{margin-bottom:0}.ic-round-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.ic-round-co{font-family:var(--sans);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;font-weight:700;overflow:hidden}.ic-round-tag{flex-shrink:0;padding:2px 7px;font-size:9px}.ic-round-bottom{justify-content:space-between;align-items:baseline;gap:8px;margin-top:5px;display:flex}.ic-round-sector{font-family:var(--sans);color:var(--ink-3);font-size:10px;font-weight:600}.ic-round-amt{font-family:var(--sans);color:var(--violet);font-variant-numeric:tabular-nums;margin-left:auto;font-size:11.5px;font-weight:800}.ic-round-blurb{font-family:var(--sans);color:var(--ink-3);white-space:nowrap;text-overflow:ellipsis;margin-top:5px;font-size:10.5px;font-weight:500;line-height:1.5;overflow:hidden}.ic-round-source{font-family:var(--sans);color:var(--violet);margin-top:6px;font-size:10px;font-weight:700;text-decoration:none;display:block}.ic-round-source:hover{text-decoration:underline}.ic-foot{background:var(--paper);border-top:1px solid var(--line);justify-content:space-between;align-items:center;padding:12px 18px;display:flex}.ic-trend{font-family:var(--sans);font-size:11px;font-weight:700}.ic-close{cursor:pointer;font-family:var(--sans);color:var(--ink-3);background:0 0;border:none;padding:0;font-size:13px;transition:color .15s}.ic-close:hover{color:var(--violet)}.tip{background:var(--ink);color:#fff;font-family:var(--sans);pointer-events:none;opacity:0;white-space:nowrap;z-index:40;border-radius:0;padding:6px 12px;font-size:11px;font-weight:600;transition:opacity .1s;position:absolute;box-shadow:0 10px 24px -12px #16131c80}.legend{border:1px solid var(--line);pointer-events:none;background:#fff;border-radius:0;padding:14px 16px;position:absolute;bottom:18px;left:14px;box-shadow:0 20px 40px -28px #4d1be566}.leg-title{font-family:var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--violet);margin-bottom:10px;font-size:10px;font-weight:700}.leg-row{align-items:center;gap:9px;margin-bottom:6px;display:flex}.leg-row:last-child{margin-bottom:0}.leg-swatch{border-radius:0;flex-shrink:0;width:14px;height:10px}.leg-lbl{font-family:var(--sans);color:var(--ink-2);font-size:10.5px;font-weight:600}@media (max-width:768px){.page-body{flex-direction:column;gap:8px;padding:0 8px 8px;overflow:visible}.map-container{border-radius:0;flex:none;order:1;width:100%;height:38vh;min-height:250px}.sidebar-l{flex:none;order:2;max-height:none;display:flex}.eco-list{max-height:none;overflow:visible}.info-card{z-index:200;border-top:3px solid var(--violet);pointer-events:auto;border-radius:0;width:100%;max-height:80vh;position:fixed;inset:auto 0 0;overflow-y:auto;transform:translateY(100%);box-shadow:0 -18px 44px -18px #16131c73}.info-card.show{transform:translateY(0)}.info-card .ic-type{z-index:3;background:#fff;position:sticky;top:0}.info-card .ic-head{z-index:3;background:#fff;position:sticky;top:24px}.ic-close-top{display:block}.legend{display:none}.leg-title,.leg-lbl{font-size:9px}.map-controls{top:10px;left:10px}.map-btn{border-radius:0;width:30px;height:30px;font-size:14px}}
