:root{--ink:#10263e;--muted:#607287;--line:#dbe4eb;--panel:rgba(255,255,255,.97);--tll:#137a45;--hel:#1769aa;--rix:#7b4da8}
*{box-sizing:border-box}html,body,#map{height:100%;margin:0}body{font:14px/1.35 Inter,system-ui,sans-serif;color:var(--ink);background:#edf3f6}button,input{font:inherit}
#map{position:absolute;inset:0}.panel{position:absolute;z-index:3;top:10px;left:10px;width:min(480px,calc(100% - 20px));max-height:calc(100vh - 20px);overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:14px;box-shadow:0 16px 44px rgba(16,38,62,.18)}
.head{display:flex;justify-content:space-between;gap:10px}.head h1{font-size:23px;line-height:1;margin:0}.sub{font-size:12px;color:var(--muted);margin-top:5px}.headRight{display:flex;gap:7px;align-items:center}.badge{font-size:10px;font-weight:900;background:#fff0ec;color:#b63825;padding:5px 8px;border-radius:999px;white-space:nowrap}.collapse{width:29px;height:29px;border:1px solid var(--line);border-radius:50%;background:#fff;font-size:18px;cursor:pointer}.collapsed{width:auto}.collapsed .body,.collapsed .sub,.collapsed .badge{display:none}
.row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin-top:13px}.row label,.time{font-weight:850}.slider{width:100%;margin-top:7px}.modes{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}.mode{border:1px solid var(--line);background:#fff;border-radius:999px;padding:7px 10px;font-weight:800;cursor:pointer}.mode.active{background:var(--ink);color:#fff;border-color:var(--ink)}.mode.access-on{background:#eaf5ee;color:#116d3d;border-color:#9bcaaa}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}.stat{background:#f8fbfc;border:1px solid var(--line);border-radius:11px;padding:7px}.stat small{display:block;text-transform:uppercase;color:var(--muted);font-size:9px}.stat strong{display:block;font-size:15px;margin-top:2px}
.sectionHead{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px}.sectionHead h2{font-size:13px;margin:0}.sectionHead span{font-size:10px;color:var(--muted)}.list{display:grid;gap:5px;margin-top:7px}.market{width:100%;display:grid;grid-template-columns:24px 1fr auto;gap:7px;align-items:center;border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px;text-align:left;cursor:pointer;color:var(--ink)}.market:hover{border-color:#9fb5c6}.rank{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#eef4f8;font-size:10px;font-weight:900}.name{font-weight:850;font-size:12px}.meta{display:block;color:var(--muted);font-size:10px;margin-top:2px}.marketMetrics{display:flex;gap:5px;flex-wrap:wrap;margin-top:4px}.metric{background:#eef4f8;border-radius:999px;padding:2px 6px;font-size:9px;font-weight:800}.metric.power{background:#fff3e7;color:#a84d24}.temp{text-align:right;font-weight:900;font-size:13px}.delta{display:block;color:#bd3d2e;font-size:10px}.accessTags{display:flex;gap:3px;flex-wrap:wrap;margin-top:4px}.tag{display:inline-block;padding:2px 5px;border-radius:999px;color:#fff;font-size:8px;font-weight:900}.tag.tll{background:var(--tll)}.tag.hel{background:var(--hel)}.tag.rix{background:var(--rix)}
.detail{display:none;margin-top:9px;border:1px solid #bdd3e1;background:#f3f9fc;border-radius:11px;padding:9px}.detail.show{display:block}.detail h3{font-size:13px;margin:0 0 6px}.detailGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.cell{background:#fff;border-radius:8px;padding:7px}.cell small{display:block;color:var(--muted);font-size:9px;text-transform:uppercase}.cell strong{display:block;font-size:14px}.accessNote{margin-top:7px;font-size:10px;color:var(--muted)}.detailActions{display:flex;gap:6px;margin-top:8px}.actionLink{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 10px;border-radius:9px;background:var(--ink);color:#fff;text-decoration:none;font-weight:850;font-size:11px}.actionLink:hover{opacity:.9}.competition{margin-top:9px;border-top:1px solid #d6e2ea;padding-top:8px}.competitionHead{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:11px;font-weight:850}.competitionHead span:last-child{font-size:8px;color:#9a531e;background:#fff0e4;padding:3px 6px;border-radius:999px}.competitionList{display:grid;gap:5px;margin-top:6px}.compRow{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;background:#fff;border:1px solid #dbe4eb;border-radius:9px;padding:7px;text-decoration:none;color:var(--ink)}.compRow.primary{border-color:#9bcaaa;background:#f3fbf6}.compRow:hover{border-color:#9fb5c6}.compName{font-weight:850;font-size:11px}.compMeta{display:block;color:var(--muted);font-size:9px;margin-top:2px}.compRight{text-align:right}.compTemp{font-weight:900;font-size:12px}.compFare{display:block;color:#9a531e;font-size:9px;font-weight:800}.fareBadge{display:inline-block;margin-top:4px;padding:2px 6px;border-radius:999px;background:#eaf5ee;color:#116d3d;font-size:9px;font-weight:900}
.capacityCard,.connectCard{margin-top:10px;border:1px solid #c8d6e2;border-radius:11px;padding:9px;background:#f7fafc}.connectCard{border-color:#b9d7c4;background:#f5fbf7}.cardTitle{display:flex;justify-content:space-between;gap:8px;font-weight:850;font-size:11px}.state{padding:3px 7px;border-radius:999px;background:#e8f6ed;color:#147a46;font-size:9px}.capacityGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:7px}.capacityMetric{background:#fff;border-radius:8px;padding:7px}.capacityMetric small{display:block;color:var(--muted);font-size:8px;text-transform:uppercase}.capacityMetric strong{display:block;font-size:14px;margin-top:2px}.cardText{font-size:10px;color:var(--muted);margin:6px 0 0}.legendRow{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px;font-size:9px;color:var(--muted)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:3px}.status{margin-top:9px;border-radius:11px;padding:8px 9px;background:#eef4f8;color:var(--muted);font-size:11px}.status.error{background:#fff0ed;color:#9d2d1e}.foot{margin-top:7px;color:var(--muted);font-size:9px}.credit{position:absolute;z-index:2;right:8px;bottom:24px;background:rgba(255,255,255,.88);padding:4px 7px;border-radius:7px;font-size:9px;color:var(--muted)}
@media(max-width:640px){.panel{top:6px;left:6px;width:calc(100% - 12px);max-height:65vh;padding:10px;border-radius:15px}.head h1{font-size:20px}.sub{max-width:215px}.stat{padding:6px}.market{padding:7px}.credit{display:none}}
