:root{--blue-900: #0b2233;--blue-800: #0e3552;--blue-700: #0f4c7a;--blue-600: #1267a8;--blue-500: #1f8fff;--blue-400: #4eaff5;--blue-300: #7fceff;--blue-200: #bce4ff;--blue-100: #e8f6ff;--blue-50: #f4fbff;--ink-900: #0e1c24;--ink-800: #17252b;--ink-700: #213a42;--ink-600: #2f4a54;--ink-400: #617880;--ink-300: #8fa0a8;--ink-100: #dde8ec;--ink-50: #f0f5f7;--green-500: #2bb56a;--amber-500: #f59e0b;color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans TC,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;color:var(--ink-800);background:var(--blue-50)}h1,h2,p{margin:0}button,input,select{font:inherit;cursor:pointer}a{color:inherit}.app-shell{display:grid;grid-template-columns:minmax(380px,420px) minmax(0,1fr);height:100%;overflow:hidden}.sidebar{position:relative;z-index:2;display:flex;flex-direction:column;min-height:0;padding:24px 24px 0;border-right:1px solid rgb(0 0 0 / .07);background:#ffffffeb;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-shadow:14px 0 36px #0e1c2412;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:var(--ink-100) transparent}.hero-copy{padding-bottom:16px;border-bottom:1px solid var(--ink-100);margin-bottom:16px}.eyebrow{display:inline-block;color:var(--blue-500);font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;margin-bottom:6px}.hero-copy h1{color:var(--ink-900);font-size:1.85rem;line-height:1.1;letter-spacing:-.02em}.hero-copy p{margin-top:8px;color:var(--ink-400);font-size:.88rem;line-height:1.65}.summary-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}.summary-cell{padding:11px 12px;border:1px solid var(--blue-200);border-radius:10px;background:var(--blue-50)}.summary-cell strong{display:block;color:var(--ink-900);font-size:1.05rem;font-weight:800;letter-spacing:-.01em}.summary-cell span{display:block;margin-top:2px;color:var(--ink-400);font-size:.72rem;font-weight:700}.filter-panel{display:grid;gap:12px;padding:14px;border:1px solid var(--ink-100);border-radius:12px;background:var(--blue-50);margin-bottom:14px}.field{display:grid;gap:6px}.field-label{color:var(--ink-400);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.airport-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.airport-tabs button{display:grid;gap:1px;padding:7px 4px;border:1px solid var(--ink-100);border-radius:8px;background:#fff;color:var(--ink-600);text-align:center;transition:border-color .14s,background .14s,color .14s,box-shadow .14s}.airport-tabs button strong{font-size:.88rem;font-weight:800}.airport-tabs button small{font-size:.65rem;color:var(--ink-300);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.airport-tabs button.active{border-color:var(--blue-500);background:var(--blue-500);color:#fff;box-shadow:0 4px 14px #1f8fff4d}.airport-tabs button.active small{color:#ffffffb8}.search-wrap{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:12px;color:var(--ink-300);pointer-events:none}.search-wrap input{width:100%;min-height:40px;padding:0 12px 0 36px;border:1px solid var(--ink-100);border-radius:8px;background:#fff;color:var(--ink-800);outline:none;transition:border-color .14s,box-shadow .14s}.search-wrap input:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px #1f8fff1f}.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:8px}.field select{width:100%;min-height:40px;padding:0 28px 0 10px;border:1px solid var(--ink-100);border-radius:8px;background:#fff 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='%238fa0a8' stroke-width='2.5' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--ink-800);-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;font-size:.84rem;cursor:pointer;transition:border-color .14s,box-shadow .14s}.field select:focus{border-color:var(--blue-500);box-shadow:0 0 0 3px #1f8fff1f}.filter-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.metric-switch{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.metric-switch .field-label{margin-right:2px}.metric-switch button{min-height:30px;padding:0 10px;border:1px solid var(--ink-100);border-radius:999px;background:#fff;color:var(--ink-600);font-size:.78rem;font-weight:700;transition:border-color .14s,background .14s,color .14s}.metric-switch button.active{border-color:var(--blue-500);background:var(--blue-500);color:#fff}.reset-btn{flex:0 0 auto;min-height:30px;padding:0 12px;border:1px solid rgb(220 50 50 / .2);border-radius:999px;background:#dc32320f;color:#c03030;font-size:.76rem;font-weight:800;transition:background .14s,border-color .14s}.reset-btn:hover{background:#dc32321f;border-color:#dc32325c}.airline-comparison{border:1px solid var(--ink-100);border-radius:12px;background:#fff;overflow:hidden;margin-bottom:14px}.comparison-header{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:52px;padding:12px 14px;border:0;background:transparent;text-align:left}.comparison-header:hover{background:var(--ink-50)}.comparison-header-text{display:grid;gap:1px}.section-eyebrow{display:block;color:var(--blue-500);font-size:.68rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.comparison-header-text strong{color:var(--ink-800);font-size:.95rem}.comparison-toggle-chip{flex:0 0 auto;padding:4px 10px;border-radius:999px;background:var(--blue-100);color:var(--blue-700);font-size:.72rem;font-weight:900}.comparison-body{padding:0 10px 10px;display:grid;gap:6px}.airline-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:52px;padding:8px 10px;border:1px solid var(--ink-100);border-radius:10px;background:#fff;color:var(--ink-800);text-align:left;transition:border-color .14s,box-shadow .14s,background .14s}.airline-row:hover{border-color:var(--blue-300);background:var(--blue-50)}.airline-row.active{border-color:var(--blue-400);background:var(--blue-100);box-shadow:0 4px 18px #1f8fff24}.airline-rank{display:grid;place-items:center;width:26px;height:26px;border-radius:999px;background:var(--blue-100);color:var(--blue-700);font-size:.78rem;font-weight:900}.airline-main{display:grid;gap:6px;min-width:0}.airline-main strong{overflow:hidden;color:var(--ink-800);font-size:.86rem;text-overflow:ellipsis;white-space:nowrap}.airline-main i{display:block;height:5px;border-radius:999px;background:linear-gradient(90deg,var(--blue-500),var(--blue-300))}.airline-score{display:grid;gap:2px;justify-items:end}.airline-score strong{color:var(--blue-700);font-size:.88rem}.airline-score small{color:var(--ink-400);font-size:.68rem;font-weight:700;white-space:nowrap}.route-list{display:grid;gap:10px;padding-bottom:24px}.selected-route-heading{display:grid;gap:4px;padding:12px 14px;border:1px solid var(--blue-200);border-radius:10px;background:var(--blue-50)}.back-btn{justify-self:start;display:inline-flex;align-items:center;gap:5px;min-height:30px;padding:0 10px;border:1px solid var(--blue-300);border-radius:999px;background:#fff;color:var(--blue-600);font-size:.8rem;font-weight:800;transition:background .14s,border-color .14s}.back-btn:hover{background:var(--blue-100)}.selected-route-code{color:var(--blue-500);font-size:.8rem;font-weight:800;margin-top:4px}.selected-route-name{color:var(--ink-800);font-size:1.05rem}.airline-route-item{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;padding:12px 14px;border:1px solid var(--ink-100);border-radius:10px;background:#fff;box-shadow:0 2px 8px #0e1c240d}.airline-route-rank{display:grid;place-items:center;width:40px;height:40px;border-radius:999px;background:linear-gradient(135deg,var(--blue-500),var(--blue-300));color:#fff;font-size:1rem;font-weight:900}.airline-route-main{display:grid;gap:8px;min-width:0}.airline-route-topline{display:flex;align-items:center;justify-content:space-between;gap:8px}.airline-route-topline strong{color:var(--ink-900);font-size:.95rem}.airline-route-topline span{color:var(--blue-500);font-size:.8rem;font-weight:800}.airline-route-bar{height:7px;border-radius:999px;background:var(--ink-50);overflow:hidden}.airline-route-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue-500),var(--blue-300))}.stats-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.stats-row span{padding:4px 8px;border-radius:999px;background:var(--ink-50);color:var(--ink-600);font-size:.76rem;font-weight:700}.route-card{display:grid;grid-template-columns:100px minmax(0,1fr);min-height:118px;border:1px solid var(--ink-100);border-radius:12px;overflow:hidden;background:#fff;box-shadow:0 2px 10px #0e1c240d;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.route-card:hover,.route-card.active{transform:translateY(-2px);border-color:var(--blue-400);box-shadow:0 8px 28px #1f8fff29;cursor:pointer}.route-card__visual{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:10px 8px}.region-east-asia{background:linear-gradient(145deg,#0a2e4a,#0f5f8a)}.region-sea{background:linear-gradient(145deg,#0a3b28,#1a7a56)}.region-europe{background:linear-gradient(145deg,#200e52,#5830b0)}.region-americas{background:linear-gradient(145deg,#4a1010,#a03828)}.region-oceania{background:linear-gradient(145deg,#093858,#1488c0)}.region-mideast{background:linear-gradient(145deg,#3c2000,#a86010)}.region-default{background:linear-gradient(145deg,#1a3046,#2a6480)}.card-airport-code{color:#fffffff2;font-size:1.05rem;font-weight:900;letter-spacing:.02em;text-shadow:0 1px 4px rgb(0 0 0 / .4)}.card-load-badge{align-self:end;display:inline-block;padding:3px 7px;border-radius:6px;background:#0000005c;color:#fff;font-size:.72rem;font-weight:900;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.route-card__body{min-width:0;padding:12px;display:flex;flex-direction:column;gap:4px}.route-card__topline{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.route-card__topline strong{color:var(--ink-900);font-size:1.05rem;letter-spacing:-.01em;line-height:1.2}.route-country{flex:0 0 auto;color:var(--ink-300);font-size:.72rem;font-weight:700;white-space:nowrap}.route-card__meta{color:var(--ink-400);font-size:.78rem;margin:0}.load-pill{font-weight:800!important}.load-pill--high{background:#1f8fff1f!important;color:var(--blue-700)!important}.load-pill--medium{background:#4ed4ff1f!important;color:#0a7a9a!important}.load-pill--low{background:var(--ink-50)!important;color:var(--ink-500, #617880)!important}.card-airline-hint{margin-top:2px;color:var(--blue-600);font-size:.74rem;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{display:grid;justify-items:center;gap:10px;padding:36px 16px;border:1px dashed var(--ink-100);border-radius:12px;color:var(--ink-400);text-align:center}.empty-state p{margin:0;font-size:.9rem}.empty-state button{min-height:36px;padding:0 16px;border:1px solid var(--blue-300);border-radius:999px;background:#fff;color:var(--blue-600);font-weight:700;font-size:.82rem}.map-stage{position:relative;min-width:0;min-height:0;background:var(--blue-900);overflow:hidden}.map-panel{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;background:radial-gradient(ellipse at 65% 20%,rgb(31 143 255 / .18) 0%,transparent 55%),linear-gradient(160deg,#0c2640,#102e50,#071828)}.route-map{display:block;width:100%;height:100%}.graticule{fill:none;stroke:#ffffff0e;stroke-width:1}.land{fill:#2e5470;stroke:#ffffff1a;stroke-width:.8}.continent-labels text{fill:#ffffff47;font-size:28px;font-weight:900;paint-order:stroke;stroke:#071828b3;stroke-width:6px;pointer-events:none;-webkit-user-select:none;user-select:none}.route-line{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke;transition:opacity .24s ease;cursor:pointer}.route-line:hover{opacity:1!important;filter:drop-shadow(0 0 8px rgb(78 212 255 / .7))!important}.route-line.selected{stroke-width:9px;stroke-opacity:1!important;filter:drop-shadow(0 0 14px rgb(31 143 255 / .7))}.route-line.dimmed{opacity:.1;filter:none!important;pointer-events:none}.marker,.route-line{cursor:pointer}.marker-content{pointer-events:all}.marker-ring{fill:#ffffffe0;stroke:#fff9;stroke-width:1.2;transition:fill .18s,r .18s}.marker-dot{fill:#fff}.marker:hover .marker-ring,.marker.selected .marker-ring{fill:#fc4;stroke:#fc4;r:7}.marker.selected .marker-ring{stroke-width:2.5}.marker-label{fill:#fff;font-size:10px;font-weight:800;display:none;paint-order:stroke;stroke:#071828cc;stroke-width:3px;pointer-events:none}.marker:hover .marker-label,.marker.selected .marker-label{display:block}.marker.selected .marker-label{font-size:11px;fill:#ffe280;stroke:#071828e6;stroke-width:4px}.marker.dimmed{opacity:.15;pointer-events:none}.origin-marker circle:first-child{fill:#1f8fff33;stroke:var(--blue-400);stroke-width:2.5}.origin-marker circle:nth-child(2){fill:#fff}.origin-marker text{fill:#fff;font-size:10px;font-weight:900;paint-order:stroke;stroke:#071828cc;stroke-width:3px;pointer-events:none}.map-controls{position:absolute;top:14px;left:50%;transform:translate(-50%);z-index:5;display:flex;gap:6px;pointer-events:none}.map-ctrl-btn{display:inline-flex;align-items:center;gap:5px;min-height:32px;padding:0 13px;border:1px solid rgb(255 255 255 / .18);border-radius:999px;background:#0c2038b8;color:#ffffffeb;font-size:.78rem;font-weight:800;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:background .14s,border-color .14s;pointer-events:all;cursor:pointer}.map-ctrl-btn:hover{background:#143250e0;border-color:#ffffff4d}.map-ctrl-btn--clear{border-color:#ffb45052;background:#3c1e05b8;color:#ffc966}.map-ctrl-btn--clear:hover{background:#502805e0}.map-legend{position:absolute;left:18px;bottom:18px;display:flex;gap:10px;flex-wrap:wrap;padding:9px 13px;border:1px solid rgb(255 255 255 / .1);border-radius:999px;background:#07121c9e;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#ffffffc7;font-size:.74rem;font-weight:700;pointer-events:none}.map-legend span{display:inline-flex;align-items:center;gap:6px}.legend-swatch{width:22px;height:3px;border-radius:999px;display:block}.legend-high{background:#1f8fff}.legend-mid{background:#4ed4ff}.legend-low{background:#7a9aaa}.map-tooltip{position:absolute;z-index:8;min-width:200px;max-width:240px;padding:12px 14px;border:1px solid rgb(255 255 255 / .12);border-radius:12px;background:#081420e6;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:#fff;box-shadow:0 12px 36px #0000005c;pointer-events:none}.map-tooltip strong{display:block;color:var(--blue-300);font-size:.9rem;letter-spacing:.02em;margin-bottom:3px}.tooltip-city{display:block;color:#ffffffb8;font-size:.8rem;margin-bottom:8px}.tooltip-stats{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:7px}.tooltip-stats span{padding:3px 7px;border-radius:999px;background:#ffffff1a;color:#ffffffdb;font-size:.74rem;font-weight:700}.tooltip-airlines{display:block;color:#ffffff7a;font-size:.72rem}.tooltip-fade-enter-active,.tooltip-fade-leave-active{transition:opacity .12s ease}.tooltip-fade-enter-from,.tooltip-fade-leave-to{opacity:0}.detail-panel{position:absolute;top:20px;right:20px;z-index:6;width:min(340px,calc(100% - 40px));max-height:calc(100% - 40px);overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--ink-100) transparent;padding:18px;border:1px solid rgb(255 255 255 / .16);border-radius:16px;background:#fffffff5;box-shadow:0 16px 48px #00000038;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.detail-panel__header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:14px}.detail-panel__titles .eyebrow{font-size:.68rem;margin-bottom:4px}.detail-panel h2{color:var(--ink-900);font-size:1.6rem;letter-spacing:-.02em;margin-top:4px}.detail-panel p{margin-top:3px;color:var(--ink-400);font-size:.84rem}.panel-close-btn{flex:0 0 auto;display:grid;place-items:center;width:30px;height:30px;margin-top:2px;border:1px solid var(--ink-100);border-radius:999px;background:var(--ink-50);color:var(--ink-400);transition:background .14s,color .14s}.panel-close-btn:hover{background:var(--ink-100);color:var(--ink-800)}.detail-route{display:flex;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;border-radius:8px;background:var(--ink-50)}.route-code{color:var(--ink-900);font-size:1rem;font-weight:900;letter-spacing:.04em}.route-line-graphic{flex:1;display:flex;align-items:center;gap:3px;color:var(--blue-400)}.route-dot{width:6px;height:6px;border-radius:999px;background:currentColor}.route-dash{flex:1;height:1.5px;background:linear-gradient(90deg,currentColor,transparent)}.route-dash:last-of-type{background:linear-gradient(90deg,transparent,currentColor)}.route-plane{font-size:.9rem;transform:rotate(45deg)}.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 14px}.detail-stats div{padding:11px 12px;border-radius:10px;background:var(--ink-50)}.detail-stats dt{color:var(--ink-400);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.detail-stats dd{margin:5px 0 0;color:var(--ink-900);font-size:1.15rem;font-weight:900;letter-spacing:-.01em}.stat-highlight{color:var(--blue-600)!important}.airline-list{display:grid;gap:1px;margin-bottom:14px;padding:12px;border-radius:10px;background:var(--ink-50)}.section-label{display:block;margin-bottom:8px;color:var(--ink-400);font-size:.72rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.detail-airline-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--ink-100)}.detail-airline-row:first-of-type{border-top:none;padding-top:0}.detail-airline-rank{flex:0 0 auto;display:grid;place-items:center;width:22px;height:22px;border-radius:999px;background:var(--blue-100);color:var(--blue-700);font-size:.72rem;font-weight:900}.detail-airline-info{flex:1;min-width:0;display:grid;gap:5px}.detail-airline-info strong{color:var(--ink-800);font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-airline-bar-wrap{height:5px;border-radius:999px;background:var(--ink-100);overflow:hidden}.detail-airline-bar{height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--blue-500),var(--blue-300))}.detail-airline-row em{flex:0 0 auto;color:var(--ink-400);font-size:.72rem;font-style:normal;font-weight:700;text-align:right;line-height:1.5;white-space:nowrap}.panel-section{margin-top:4px}.panel-slide-enter-active{transition:opacity .22s ease,transform .22s ease}.panel-slide-leave-active{transition:opacity .16s ease,transform .16s ease}.panel-slide-enter-from,.panel-slide-leave-to{opacity:0;transform:translate(16px)}.mini-chart{width:100%;height:116px;overflow:visible}.chart-labels text{fill:var(--ink-400);font-size:11px;font-weight:800}.chart-values text{fill:var(--ink-800);font-size:11px;font-weight:900}.slide-down-enter-active{transition:max-height .28s ease,opacity .2s ease;max-height:600px}.slide-down-leave-active{transition:max-height .22s ease,opacity .16s ease;max-height:600px}.slide-down-enter-from,.slide-down-leave-to{max-height:0;opacity:0;overflow:hidden}.site-root{display:flex;flex-direction:column;height:100vh;height:100dvh}.page-content{flex:1 1 auto;min-height:0;overflow-y:auto}.app-nav{display:flex;align-items:center;justify-content:space-between;gap:20px;height:52px;padding:0 24px;border-bottom:1px solid var(--ink-100);background:#fffffff2;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);position:sticky;top:0;z-index:100;flex-shrink:0}.nav-brand{display:inline-flex;align-items:center;gap:7px;color:var(--ink-900);font-weight:800;font-size:.92rem;text-decoration:none;letter-spacing:-.01em}.nav-brand svg{color:var(--blue-500)}.nav-links{display:flex;gap:4px}.nav-link{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:8px;color:var(--ink-400);font-size:.84rem;font-weight:700;text-decoration:none;transition:color .14s,background .14s}.nav-link:hover{background:var(--ink-50);color:var(--ink-800)}.nav-link.active{background:var(--blue-100);color:var(--blue-700)}.growth-page{max-width:1280px;margin:0 auto;padding:32px 28px 64px;display:grid;gap:28px}.growth-header{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap}.growth-header-text h1{color:var(--ink-900);font-size:1.85rem;letter-spacing:-.02em;margin-bottom:8px}.growth-header-text p{color:var(--ink-400);font-size:.9rem;line-height:1.6;max-width:580px;margin:0}.month-select-wrap{display:grid;gap:5px;flex:0 0 auto}.month-select{min-height:38px;padding:0 28px 0 10px;border:1px solid var(--ink-100);border-radius:8px;background:#fff 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='%238fa0a8' stroke-width='2.5' stroke-linecap='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 10px center;-webkit-appearance:none;-moz-appearance:none;appearance:none;color:var(--ink-800);font-size:.88rem;font-weight:700;cursor:pointer;outline:none}.airline-switcher{display:flex;gap:8px;flex-wrap:wrap}.airline-tab{display:grid;gap:2px;min-width:120px;padding:11px 18px;border:2px solid var(--ink-100);border-radius:12px;background:#fff;text-align:center;cursor:pointer;transition:border-color .16s,background .16s,box-shadow .16s}.airline-tab:hover{border-color:var(--ink-200, #c0cdd2);background:var(--ink-50)}.airline-tab.active{border-color:var(--tab-accent, var(--blue-500));background:color-mix(in srgb,var(--tab-accent, var(--blue-500)) 8%,#fff);box-shadow:0 4px 16px color-mix(in srgb,var(--tab-accent, var(--blue-500)) 20%,transparent)}.tab-code{color:var(--ink-400);font-size:.72rem;font-weight:900;letter-spacing:.06em}.airline-tab.active .tab-code{color:var(--tab-accent, var(--blue-500))}.tab-name{color:var(--ink-800);font-size:.92rem;font-weight:800}.kpi-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.kpi-card{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border:1px solid var(--ink-100);border-radius:12px;background:#fff}.kpi-card--accent{border-color:color-mix(in srgb,var(--accent, var(--blue-500)) 28%,transparent);background:color-mix(in srgb,var(--accent, var(--blue-500)) 5%,#fff)}.kpi-card--muted{background:var(--ink-50)}.kpi-card--growth{border-color:#2bb56a40;background:#2bb56a0d}.kpi-label{color:var(--ink-400);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.kpi-value{color:var(--ink-900);font-size:1.55rem;font-weight:900;letter-spacing:-.02em;line-height:1}.kpi-value--accent{color:var(--accent, var(--blue-500))}.kpi-value--na{color:var(--ink-300);font-size:1.3rem}.kpi-unit{color:var(--ink-400);font-size:.76rem;font-weight:700}.kpi-note{font-style:italic;color:var(--ink-300)}.charts-section{display:grid;gap:16px}.charts-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.metric-bar-chart,.trend-chart-wrap{border:1px solid var(--ink-100);border-radius:12px;background:#fff;padding:16px 18px}.chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.chart-title{color:var(--ink-600);font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.chart-overflow-note{color:var(--ink-300);font-size:.72rem}.chart-wrapper{overflow-x:hidden;min-width:0}.bar-svg{display:block;width:100%;overflow:visible}.bar-label{fill:var(--ink-700);font-size:11px;font-weight:700;font-family:inherit}.bar-sublabel{fill:var(--ink-300);font-size:9px;font-weight:700;font-family:inherit}.bar-value{fill:var(--ink-600);font-size:10px;font-weight:800;font-family:inherit}.bar-value--inside{fill:#fff}.trend-empty{display:grid;justify-items:center;gap:8px;padding:40px 16px;color:var(--ink-300);text-align:center}.trend-empty p{margin:0;color:var(--ink-500, #617880);font-size:.92rem;font-weight:700}.trend-empty small{color:var(--ink-300);font-size:.78rem;line-height:1.5;max-width:280px}.route-table-section{border:1px solid var(--ink-100);border-radius:12px;background:#fff;overflow:hidden}.table-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 20px;border-bottom:1px solid var(--ink-100);flex-wrap:wrap}.table-header h2{color:var(--ink-900);font-size:1rem;font-weight:800}.sort-controls{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.sort-btn{display:inline-flex;align-items:center;gap:3px;min-height:28px;padding:0 10px;border:1px solid var(--ink-100);border-radius:999px;background:#fff;color:var(--ink-500, #617880);font-size:.76rem;font-weight:700;transition:background .14s,border-color .14s,color .14s}.sort-btn:hover{border-color:var(--blue-300);color:var(--blue-700)}.sort-btn.active{border-color:var(--blue-400);background:var(--blue-100);color:var(--blue-700)}.sort-arrow{font-size:.72rem}.table-wrap{overflow-x:auto}.table-mobile-toolbar,.mobile-card-toggle,.mobile-collapse-all-btn{display:none}.route-data-table{width:100%;border-collapse:collapse;font-size:.84rem}.route-data-table th{padding:10px 14px;border-bottom:1px solid var(--ink-100);color:var(--ink-400);font-size:.72rem;font-weight:800;text-align:left;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.route-data-table th:hover{color:var(--blue-700)}.route-data-table th.sorted{color:var(--blue-600)}.route-data-table td{padding:9px 14px;border-bottom:1px solid var(--ink-50);color:var(--ink-800);white-space:nowrap}.route-data-table tbody tr:hover td{background:var(--blue-50)}.route-data-table td.sorted{background:#1f8fff0a}.num-col{text-align:right!important}.code-cell{font-weight:800;color:var(--blue-600)!important;letter-spacing:.04em}.country-cell{color:var(--ink-400)!important;font-size:.78rem}.lf-badge{display:inline-block;padding:2px 7px;border-radius:999px;font-weight:800;font-size:.82rem}.lf-high{background:#1f8fff1f;color:var(--blue-700)}.lf-mid{background:#4ed4ff1f;color:#0a7a9a}.lf-low{background:var(--ink-50);color:var(--ink-500, #617880)}.trend-svg{display:block;width:100%}.trend-x-label{fill:var(--ink-400);font-size:11px;font-weight:700}.trend-y-label{fill:var(--ink-300);font-size:10px}.trend-val{fill:var(--ink-400);font-size:10px;font-weight:700}.trend-val--current{fill:var(--ink-800);font-size:11px;font-weight:900}.kpi-value--pos{color:var(--green-500)}.kpi-value--neg{color:#e03030}.seo-blurb{margin-top:56px;padding:24px 28px;border-top:1px solid var(--ink-100);border-radius:12px;background:var(--blue-50)}.seo-blurb h2{color:var(--ink-600);font-size:.9rem;font-weight:800;letter-spacing:.01em;margin-bottom:10px}.seo-blurb p{color:var(--ink-400);font-size:.84rem;line-height:1.75;max-width:72ch}.seo-blurb p+p{margin-top:8px}.kpi-yoy{font-size:.72rem;font-weight:700;color:var(--ink-300);margin-top:auto}.kpi-yoy--pos{color:var(--green-500)}.kpi-yoy--neg{color:#e03030}.analysis-tabs{display:flex;gap:10px;padding:8px;background:#e7f4f7;border-radius:18px;overflow-x:auto;scrollbar-width:none}.analysis-tabs::-webkit-scrollbar{display:none}.analysis-tab{flex:1 0 132px;min-height:54px;padding:0 24px;border:none;border-radius:14px;background:transparent;color:#078ca0;font-size:1rem;font-weight:800;white-space:nowrap;transition:background .14s,color .14s,box-shadow .14s}.analysis-tab:hover{color:#056f80;background:#ffffff8c}.analysis-tab.active{background:#fff;color:#078ca0;font-weight:800;box-shadow:0 2px 8px #0e1c241a}.analysis-tab:focus-visible{outline:3px solid rgb(31 143 255 / .28);outline-offset:2px}.tab-panel{min-height:200px}.route-tag{display:inline-block;padding:2px 7px;border-radius:5px;font-size:.68rem;font-weight:800;letter-spacing:.02em;margin-right:3px}.route-tag--full{background:#1f8fff1f;color:var(--blue-700)}.route-tag--new{background:#2bb56a24;color:#1a7a45}.route-tag--growth{background:#f59e0b24;color:#b45309}.route-tag--opportunity{background:#8b5cf61f;color:#6d28d9}.route-tag--increase{background:#2bb56a1f;color:#16703d}.route-tag--decrease{background:#e030301a;color:#b03030}.route-tag--continue{background:var(--ink-50);color:var(--ink-400)}.tags-cell{white-space:nowrap}.yoy-diff{font-size:.8rem;font-weight:700;white-space:nowrap}.yoy-diff--pos{color:var(--green-500)}.yoy-diff--neg{color:#e03030}.yoy-tab,.changes-tab,.opp-tab{display:grid;gap:20px}.yoy-empty{display:grid;justify-items:center;gap:10px;padding:48px 16px;border:1px dashed var(--ink-100);border-radius:12px;color:var(--ink-400);text-align:center}.yoy-empty p{margin:0;font-size:.92rem;font-weight:700}.yoy-empty small{color:var(--ink-300);font-size:.78rem;line-height:1.6;max-width:300px}.yoy-summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}.yoy-card{display:flex;flex-direction:column;gap:5px;padding:16px 18px;border:1px solid var(--ink-100);border-radius:12px;background:#fff}.yoy-card--pos{border-color:#2bb56a40;background:#2bb56a0d}.yoy-card--neg{border-color:#e0303033;background:#e030300a}.yoy-card-label{color:var(--ink-400);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.yoy-card-value{color:var(--ink-900);font-size:1.45rem;font-weight:900;letter-spacing:-.02em;line-height:1}.yoy-card-diff{font-size:.78rem;font-weight:700;color:var(--ink-300)}.yoy-card-diff.yoy-diff--pos{color:var(--green-500)}.yoy-card-diff.yoy-diff--neg{color:#e03030}.yoy-summary-text{padding:12px 16px;border-left:3px solid var(--blue-300);background:var(--blue-50);border-radius:0 8px 8px 0;color:var(--ink-600);font-size:.88rem;font-weight:700;margin:0;line-height:1.6}.yoy-table th,.yoy-table td{white-space:nowrap}.changes-none{padding:32px 16px;text-align:center;color:var(--ink-400);font-size:.9rem;border:1px dashed var(--ink-100);border-radius:12px}.changes-section{display:grid;gap:10px}.changes-section-title{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:800;color:var(--ink-800);margin:0}.changes-section-title--added{color:#1a7a45}.changes-section-title--removed{color:#b03030}.changes-section-title--increased{color:var(--blue-700)}.changes-section-title--decreased{color:#b45309}.changes-summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.changes-summary-card{display:grid;gap:4px;padding:14px 16px;border:1px solid var(--ink-100);border-radius:12px;background:#fff}.changes-summary-card span{color:var(--ink-400);font-size:.74rem;font-weight:800}.changes-summary-card strong{color:var(--ink-900);font-size:1.45rem;font-weight:900;line-height:1}.changes-empty-line{margin:0;padding:12px 14px;border:1px dashed var(--ink-100);border-radius:10px;color:var(--ink-300);font-size:.84rem;font-weight:700}.changes-count{padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:900;background:var(--ink-50);color:var(--ink-600)}.changes-list{display:grid;gap:8px}.change-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:10px;border:1px solid var(--ink-100);background:#fff;flex-wrap:wrap}.change-item--added{border-color:#2bb56a33;background:#2bb56a08}.change-item--removed{border-color:#e0303026;background:#e0303008}.change-item--increased{border-color:#1f8fff29;background:#1f8fff09}.change-item--decreased{border-color:#f59e0b2e;background:#f59e0b0a}.change-item-route{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.change-arrow{color:var(--ink-300);font-size:.84rem}.change-city{color:var(--ink-800);font-size:.88rem;font-weight:700}.change-item-stats{display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--ink-600);font-weight:700}.change-prev-label{color:var(--ink-400);font-size:.72rem;font-weight:700}.opp-intro p{color:var(--ink-400);font-size:.86rem;line-height:1.65;padding:12px 16px;background:var(--blue-50);border-radius:8px;margin:0}.opp-list{display:grid;gap:10px}.opp-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 18px;border:1px solid rgb(31 143 255 / .15);border-radius:12px;background:#fff;flex-wrap:wrap}.opp-item-main{display:grid;gap:4px}.opp-item-route{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.opp-arrow{color:var(--ink-300)}.opp-city{color:var(--ink-800);font-size:.9rem}.opp-reason{color:var(--blue-600);font-size:.76rem;font-weight:700}.opp-item-metrics{display:flex;align-items:center;gap:10px;font-size:.82rem;color:var(--ink-600);font-weight:700;white-space:nowrap}.opp-metric{white-space:nowrap}.matrix-wrap{border:1px solid var(--ink-100);border-radius:12px;background:#fff;padding:16px 18px}.matrix-wrap .chart-header{align-items:flex-start;gap:12px;flex-wrap:wrap}.matrix-title-block{display:grid;gap:4px;min-width:min(100%,280px)}.matrix-title-block small{color:var(--ink-300);font-size:.76rem;font-weight:700;line-height:1.5}.matrix-scroll{position:relative;overflow:hidden;border-radius:10px}.matrix-svg{display:block;width:100%;max-width:100%}.matrix-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.matrix-legend-item{display:inline-flex;align-items:center;gap:5px;font-size:.72rem;color:var(--ink-400);font-weight:700;white-space:nowrap}.matrix-legend-dot{width:12px;height:12px;border-radius:999px;border:1.5px solid #fff;box-shadow:0 0 0 1px var(--ink-100);flex-shrink:0}.matrix-legend-item--dash{gap:6px}.matrix-legend-dash{width:12px;height:2px;border-radius:1px;background:var(--ink-100);flex-shrink:0}.matrix-year-label{fill:var(--ink-300);font-size:9px;font-weight:800;font-family:inherit}.matrix-month-label{fill:var(--ink-400);font-size:10px;font-weight:700;font-family:inherit}.matrix-route-code{fill:var(--ink-700);font-size:10px;font-weight:800;font-family:inherit}.matrix-city{fill:var(--ink-300);font-size:9px;font-family:inherit}.matrix-empty{padding:40px 16px;text-align:center;color:var(--ink-400);font-size:.88rem}.matrix-tooltip{position:absolute;z-index:20;min-width:180px;padding:10px 14px;border-radius:10px;background:#0e1c24eb;color:#fff;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 8px 24px #0000003d}.matrix-tooltip-route{color:var(--blue-300);font-weight:800;font-size:.86rem;margin-bottom:3px}.matrix-tooltip-city{color:#ffffff94;font-size:.75rem;margin-bottom:7px}.matrix-tooltip-stats{display:grid;gap:3px;font-size:.78rem;color:#ffffffdb}.matrix-tooltip-none{color:#ffffff7a;font-size:.78rem;font-style:italic}@media(max-width:1200px){.kpi-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:1080px){body{overflow:auto}.app-shell{grid-template-columns:1fr;height:auto;min-height:100vh}.map-stage{order:-1;min-height:58vh}.sidebar{max-height:none}.charts-row{grid-template-columns:1fr}.yoy-summary-grid,.changes-summary-grid{grid-template-columns:repeat(2,1fr)}.growth-page{padding:20px 16px 48px}}@media(max-width:640px){.app-nav{height:auto;min-height:52px;padding:8px 12px;gap:8px;flex-wrap:wrap}.nav-brand{font-size:.84rem}.nav-links{width:100%;display:grid;grid-template-columns:1fr 1fr}.nav-link{justify-content:center;min-width:0;padding:0 8px;font-size:.78rem}.sidebar{padding:16px 16px 0}.hero-copy h1{font-size:1.6rem}.summary-strip{grid-template-columns:1fr 1fr}.summary-strip .summary-cell:last-child{grid-column:span 2}.filter-row{grid-template-columns:1fr}.detail-panel{top:12px;right:12px;width:calc(100% - 24px)}.map-stage{min-height:52vh}.map-legend{left:12px;right:12px;bottom:12px;border-radius:14px}.map-tooltip{max-width:min(240px,calc(100vw - 40px))}.route-card{grid-template-columns:88px minmax(0,1fr)}.kpi-grid{grid-template-columns:repeat(2,1fr)}.airline-switcher{gap:6px}.airline-tab{flex:1 1 calc(50% - 3px);min-width:0;padding:9px 12px}.growth-header{flex-direction:column}.growth-header-text h1{font-size:1.45rem}.analysis-tabs{margin-inline:-2px}.analysis-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));overflow:visible}.analysis-tab{flex:initial;min-height:48px;padding-inline:18px;font-size:.92rem}.analysis-tab:last-child:nth-child(odd){grid-column:1 / -1}.yoy-summary-grid,.changes-summary-grid{grid-template-columns:1fr}.metric-bar-chart,.trend-chart-wrap,.matrix-wrap{padding:14px 12px}.matrix-title-block{min-width:0}.table-header{padding:14px 12px}.sort-controls{width:100%}.sort-controls .field-label{flex-basis:100%}.sort-btn{flex:1 1 calc(50% - 5px);justify-content:center}.table-mobile-toolbar{display:flex;justify-content:flex-end;margin:-4px 0 8px}.mobile-collapse-all-btn{display:inline-flex;align-items:center;justify-content:center;min-height:32px;padding:0 12px;border:1px solid var(--blue-200);border-radius:999px;background:#fff;color:var(--blue-700);font-size:.78rem;font-weight:800}.sort-controls .mobile-collapse-all-btn{flex:1 1 100%;margin-top:4px}.table-wrap{overflow-x:hidden}.route-data-table,.route-data-table thead,.route-data-table tbody,.route-data-table tr,.route-data-table th,.route-data-table td{display:block}.route-data-table thead{display:none}.route-data-table{border-collapse:separate;border-spacing:0}.route-data-table tbody{display:grid;gap:10px;padding:12px}.route-data-table tr{border:1px solid var(--ink-100);border-radius:12px;background:#fff;overflow:hidden}.route-data-table .mobile-card-toggle{display:block;padding:0;border-bottom:1px solid var(--ink-100);background:var(--blue-50)}.route-data-table .mobile-card-toggle:before{content:none}.mobile-card-toggle button{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:54px;padding:10px 12px;border:0;background:transparent;color:var(--ink-800);text-align:left}.mobile-card-route{display:grid;gap:3px;min-width:0}.mobile-card-route strong{color:var(--blue-700);font-size:.9rem;font-weight:900;letter-spacing:.02em}.mobile-card-route small{overflow:hidden;color:var(--ink-400);font-size:.74rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.mobile-card-state{flex:0 0 auto;min-width:44px;padding:4px 8px;border-radius:999px;background:#fff;color:var(--blue-700);font-size:.72rem;font-weight:900;text-align:center}.route-data-table tr.mobile-collapsed td:not(.mobile-card-toggle){display:none}.route-data-table tr.mobile-collapsed .mobile-card-toggle{border-bottom:0}.route-data-table td{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:1px solid var(--ink-50);text-align:right!important;white-space:normal}.route-data-table td:last-child{border-bottom:0}.route-data-table td:before{content:attr(data-label);flex:0 0 auto;max-width:46%;color:var(--ink-400);font-size:.72rem;font-weight:800;text-align:left;text-transform:uppercase;letter-spacing:.04em}.route-data-table td.sorted{background:transparent}.tags-cell{display:flex;flex-wrap:wrap;justify-content:flex-end;white-space:normal}.change-item{align-items:flex-start;padding:12px}.change-item-route,.change-item-stats,.opp-item-route,.opp-item-metrics{width:100%;flex-wrap:wrap}.change-item-stats,.opp-item-metrics{gap:7px;white-space:normal}.opp-item{padding:12px}.opp-item-main{min-width:0}.opp-reason{line-height:1.5}}
