
:root{font:16px/1.45 system-ui,-apple-system,sans-serif;color:#172033;background:#f4f7fb}*{box-sizing:border-box}body{margin:0;padding:24px;max-width:1500px;margin-inline:auto}h1{margin:0;font-size:1.7rem}.sub{color:#5d687b;margin:.25rem 0 1.2rem}.controls,.panel{background:white;border:1px solid #e1e7f0;border-radius:14px;padding:16px;margin:14px 0;box-shadow:0 4px 14px #1524420a}.controls{display:flex;gap:12px;flex-wrap:wrap;align-items:end}label{display:grid;gap:4px;font-size:.86rem;color:#4c5870}input,select{font:inherit;padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px;background:white;color:inherit}.wide{flex:1;min-width:220px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:10px}.stat{background:#f5f8fc;border-radius:10px;padding:12px}.stat small{color:#59667b}.stat strong{display:block;font-size:1.35rem;margin-top:4px}h2{font-size:1.08rem;margin:0 0 12px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:right;padding:9px;border-bottom:1px solid #e6ebf2;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{color:#566277;position:sticky;top:0;background:white}tbody tr:hover{background:#f5f8fc}.sorthead{font:inherit;color:inherit;font-weight:700;border:0;background:none;padding:0;cursor:pointer;white-space:nowrap}.sorthead:hover{color:#245fbd}.barrow{display:grid;grid-template-columns:minmax(120px,220px) 1fr 78px;gap:10px;align-items:center;margin:8px 0}.barbg{height:12px;background:#edf1f6;border-radius:8px;overflow:hidden}.bar{height:100%;background:#3478f6;border-radius:8px}.stacks{display:flex;height:12px;background:#edf1f6;border-radius:8px;overflow:hidden}.legend{display:flex;gap:16px;flex-wrap:wrap;margin:10px 0 14px;color:#59667b;font-size:.84rem}.legend span{display:flex;align-items:center;gap:6px}.legend i{display:inline-block;width:11px;height:11px;border-radius:3px}.stacks i{display:block;height:100%}.seg1{background:#3478f6}.seg2{background:#e9a321}.seg3{background:#a34af5}.glidebar{height:100%;background:#18a76b;border-radius:8px}.warn{color:#677287;font-size:.84rem}.result{padding:12px;background:#eef2f7;border-radius:9px;margin-top:12px}.result.met{background:#d9f5e5;color:#14532d}.result.below{background:#fee2e2;color:#991b1b}.chart{margin-top:12px}.info-tip{display:inline-grid;place-items:center;margin-left:5px;width:16px;height:16px;border:1px solid #8390a5;border-radius:50%;font-size:11px;font-weight:700;cursor:help;position:relative;vertical-align:middle}.info-tip:focus{outline:2px solid #3478f6}.info-tip:hover:after,.info-tip:focus:after{content:attr(data-tip);position:absolute;z-index:10;left:20px;top:-8px;width:260px;padding:9px 11px;border-radius:7px;background:#172033;color:white;font-size:12px;font-weight:400;line-height:1.4;white-space:normal;box-shadow:0 4px 14px #15244230}
.match-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin:8px 0;color:#243149}.match-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:9px}.match-card{display:block;width:100%;padding:11px 13px;background:#f5f8fc;border:0;border-radius:10px;color:inherit;text-align:left;font:inherit;cursor:pointer}.match-card:hover{background:#eaf1fb}#flightDetail{display:none}#flightDetail.active{display:block;position:fixed;inset:16px;z-index:9000;overflow:auto;max-width:1200px;width:calc(100% - 32px);margin:auto;padding:22px;box-shadow:0 0 0 100vmax #10182899,0 16px 50px #0004}.match-top{display:flex;justify-content:space-between;gap:10px;font-weight:600;font-size:.9rem}.match-ratio{color:#2563eb;font-variant-numeric:tabular-nums;white-space:nowrap}.match-track{height:6px;background:#e3eaf4;border-radius:8px;margin-top:8px;overflow:hidden}.match-fill{height:100%;background:#3978ef;border-radius:8px}.more-matches{margin-top:10px}.more-matches summary{cursor:pointer;color:#315fa7;font-size:.9rem;font-weight:600;padding:6px 0}:root{color:#172a46;background:#eaf0f8}body{background:linear-gradient(145deg,#e8eff9 0%,#f3f6fb 48%,#e5eef7 100%);color:#172a46}.controls,.panel{background:#fbfdff;border-color:#cbd9eb;box-shadow:0 8px 22px #1b3b6412}.controls{border-top:3px solid #4f83e8}.panel:nth-of-type(1){border-top:3px solid #3f7ee8}.panel:nth-of-type(2){border-top:3px solid #10a6a0}.panel:nth-of-type(3){border-top:3px solid #8063d9}.panel:nth-of-type(4){border-top:3px solid #e99a2e}.panel:nth-of-type(5){border-top:3px solid #31a36b}.panel:nth-of-type(6){border-top:3px solid #2e9dba}.stat{background:linear-gradient(145deg,#edf4ff,#f6f9ff);border:1px solid #dce7f5}.stats .stat:nth-child(2n){background:linear-gradient(145deg,#eaf8f6,#f5fbfa)}#summary .stat:nth-child(1){border-left:4px solid #3378e8}#summary .stat:nth-child(2){border-left:4px solid #15a59b}#summary .stat:nth-child(3){border-left:4px solid #8b5ed7}#summary .stat:nth-child(4){border-left:4px solid #e99a2e}#summary .stat:nth-child(5){border-left:4px solid #e66662}.match-card{background:linear-gradient(110deg,#edf4ff,#f8fbff);border:1px solid #d9e5f5}.match-card:hover{background:#e3efff;border-color:#7ea9ed}.match-ratio{color:#1769cf}.result.met{background:#dcf5e8;color:#12613a}.result.below{background:#fff0e8;color:#9c341d}th{background:#f0f5fc;color:#324766}tbody tr:nth-child(even){background:#f8faff}tbody tr:hover{background:#eaf3ff}input:focus,select:focus{outline:2px solid #7aa8f0;border-color:#4d83df}h1{color:#14345f}h2{color:#1e426e}.bar{background:linear-gradient(90deg,#367be8,#31a9be)}.glidebar{background:linear-gradient(90deg,#1b9e81,#82bd39)}.seg1{background:#3478f6}.seg2{background:#e7a21b}.seg3{background:#985de0}
.sensor-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.sensor-card{padding:12px;border:1px solid #d5e1f0;border-radius:10px;background:#f5f8fc}.sensor-card h3{margin:0 0 6px;font-size:.95rem}.sensor-card canvas{display:block;width:100%;height:170px}.event-list{max-height:320px;overflow:auto;padding:0;list-style:none}.event-list li{display:grid;grid-template-columns:64px 1fr;gap:10px;padding:7px 0;border-bottom:1px solid #e5ebf2}.event-time{font-variant-numeric:tabular-nums;color:#4773aa}.data-empty{padding:20px;color:#677287;background:#f5f8fc;border-radius:9px}@media(max-width:760px){.sensor-grid{grid-template-columns:1fr}}.app-nav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}.app-nav a{display:inline-flex;align-items:center;padding:7px 11px;border:1px solid #c8d8ed;border-radius:9px;background:#f5f9ff;color:#245f9f;text-decoration:none;font-weight:650;font-size:.85rem}.app-nav a:hover{background:#e8f2ff;border-color:#8fb3e1}.app-nav a:focus-visible{outline:2px solid #3478f6;outline-offset:2px}
.route-point-marker-wrap{background:transparent;border:0}.route-point-marker{display:grid;place-items:center;width:28px;height:28px;border:2px solid white;border-radius:50%;background:#236db7;color:#fff;font-size:12px;font-weight:800;box-shadow:0 2px 7px #13223866}.leaflet-marker-draggable{cursor:grab}.leaflet-marker-draggable:active{cursor:grabbing}.library-filter{max-width:250px;margin:0 0 12px}
.library-panel{padding-top:12px}.library-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.library-toggle::-webkit-details-marker{display:none}.library-toggle::before{content:"＋";display:grid;place-items:center;width:25px;height:25px;border:1px solid #c8d8ed;border-radius:7px;background:#f5f9ff;color:#245f9f;font-size:16px;line-height:1}.library-panel[open]>.library-toggle::before{content:"−"}.library-toggle h2{margin:0}.library-content{padding-top:12px}
.collapsible-panel{padding-top:12px}.panel-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none}.panel-toggle::-webkit-details-marker{display:none}.panel-toggle::before{content:"＋";display:grid;place-items:center;width:25px;height:25px;border:1px solid #c8d8ed;border-radius:7px;background:#f5f9ff;color:#245f9f;font-size:16px;line-height:1}.collapsible-panel[open]>.panel-toggle::before{content:"−"}.panel-toggle h2{margin:0}.panel-content{padding-top:12px}
.dashboard-sections{display:flex;flex-direction:column}.drag-handle{display:grid;place-items:center;width:26px;height:26px;padding:0;border:1px solid #c8d8ed;border-radius:7px;background:#f5f9ff;color:#637b98;font:700 17px/1 system-ui;cursor:grab;user-select:none;touch-action:none}.drag-handle:hover{background:#e8f2ff;color:#245f9f}.drag-handle:active{cursor:grabbing}.drag-handle:focus-visible{outline:2px solid #3478f6;outline-offset:2px}[data-reorderable].is-dragging{opacity:.42;box-shadow:0 0 0 2px #4b86da inset}.dashboard-sections [data-reorderable]{transition:box-shadow .12s ease,opacity .12s ease}.dashboard-sections .drop-before{box-shadow:0 -3px 0 #4b86da}.dashboard-sections .drop-after{box-shadow:0 3px 0 #4b86da}
.account-panel{border-top:3px solid #13a59b}.account-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.account-head h2{margin:0}.account-head p{margin:4px 0 0;color:#65758c;font-size:.85rem}.account-row{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-top:12px}.account-row label,.canopy-form label{display:grid;gap:4px;font-size:.82rem;color:#4c5870}.account-row input,.canopy-form input,.account-row button,.canopy-form button,.route-save-row button,.route-save-row select{font:inherit;padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px;background:white;color:inherit}.account-row input{min-width:190px}.account-row button,.canopy-form button,.route-save-row button{cursor:pointer}.account-row .primary,.canopy-form .primary,.route-save-row .primary{background:#2373c4;border-color:#2373c4;color:white}.account-row [disabled],.route-save-row [disabled]{opacity:.5;cursor:not-allowed}.account-state{font-size:.8rem;color:#21805a;background:#eaf7f1;padding:6px 10px;border-radius:999px}.account-message{margin:10px 0 0;color:#64748b;font-size:.84rem}.account-tools{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:12px}.account-tools details{flex:1;min-width:280px;padding:10px 12px;border:1px solid #d6e2f0;border-radius:10px;background:#f8fafd}.account-tools summary{cursor:pointer;font-weight:650;color:#315b86}.canopy-form{display:flex;gap:8px;align-items:end;flex-wrap:wrap;margin-top:10px}.canopy-form input{min-width:120px}.canopy-list{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.canopy-chip{display:inline-flex;align-items:center;gap:8px;background:#eaf3ff;border:1px solid #d0e1f6;border-radius:999px;padding:5px 9px;font-size:.82rem}.canopy-chip button{border:0;background:none;color:#a14343;cursor:pointer;font-weight:700}.canopy-select{max-width:180px;padding:6px 8px;font-size:.82rem}.route-save-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0}.route-save-row input,.route-save-row select{min-width:150px}
.account-row[hidden],.account-tools[hidden]{display:none}
.analysis-tools{border-top:1px solid #cbd9eb;margin-top:20px;padding-top:14px}.analysis-tools details{margin:14px 0;padding:12px;border:1px solid #dce7f5;border-radius:9px}.analysis-tools summary{cursor:pointer;font-weight:650}.analysis-tools textarea{width:100%;font:inherit;padding:10px;border:1px solid #cbd5e1;border-radius:8px}.analysis-tools input[type=number]{max-width:170px}.analysis-tools svg{max-height:360px}
