:root{--ink:#d4d4d8;--muted:#a1a1aa;--line:#2a2a40;--green:#60a5fa;--pale:#18182a;--red:#df4257;--blue:#3277cc}
*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif;color:var(--ink);background:#0d0d14;font-size:13px}button,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}button:focus-visible,label.upload-zone:focus-within{outline:3px solid #71beac;outline-offset:2px}header{height:84px;background:#12121e;color:#f4f4f5;display:flex;align-items:center;justify-content:space-between;padding:0 28px}.brand{display:flex;align-items:center;gap:13px}.brand svg{width:34px;height:34px}.brand strong{font-size:23px;letter-spacing:-.5px}.brand strong span{font-weight:400;opacity:.85}.brand small{display:block;font-size:10px;letter-spacing:1.5px;margin-top:4px;color:#71717a}.header-actions{display:flex;align-items:center;gap:20px}.local-badge{font-size:11px;color:#a1a1aa;display:flex;gap:7px;align-items:center}.local-badge i{width:6px;height:6px;background:#60a5fa;border-radius:50%}.help{background:transparent;color:#f4f4f5;border:1px solid #2a2a40;border-radius:6px;padding:8px 15px}main{height:calc(100dvh - 120px);min-height:640px;display:grid;grid-template-columns:350px minmax(0,1fr);gap:16px;padding:18px 22px}aside{display:flex;min-height:0;flex-direction:column;background:#12121e;border:1px solid var(--line);border-radius:10px;padding:18px}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}h1{margin:0;font-size:19px;letter-spacing:1px}.version{color:#71717a;font-size:10px}.upload-zone{border:1px dashed #3b4b6d;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:13px 8px;cursor:pointer;background:#151525;gap:4px}.upload-zone:hover,.upload-zone.drag{background:#1b2540;border-color:#93c5fd}.upload-icon{font-size:23px;color:#93c5fd;line-height:25px}.upload-zone strong{font-size:14px}.upload-zone span:not(.upload-icon){font-size:10px;color:var(--muted)}.upload-zone small{font-size:9px;color:#71717a}.field-label{font-size:11px;font-weight:600;margin:16px 0 7px;display:flex;justify-content:space-between}.field-label span{font-weight:400;color:var(--muted)}select{width:100%;min-width:0;background:#12121e;border:1px solid var(--line);border-radius:5px;padding:9px 7px;color:var(--ink);font-size:11px}.storage-note{font-size:9px;color:var(--muted);margin:6px 0 12px}.mode{display:flex;background:#1e1e30;padding:3px;border-radius:6px;gap:3px}.mode button{width:50%;border:0;background:transparent;padding:7px;font-size:11px;color:var(--muted);border-radius:4px}.mode button.active{color:#93c5fd;background:#12121e;box-shadow:0 1px 4px #1e493815;font-weight:600}.cleanup-note{display:flex;gap:8px;margin:12px 0;background:#13213a;padding:10px;border-radius:5px;color:#93c5fd}.check{border-radius:50%;background:#1e3a6e;width:20px;height:20px;text-align:center;line-height:20px}.cleanup-note strong{font-size:10px;display:block}.cleanup-note small{font-size:9px;display:block;margin-top:3px;color:#a1a1aa}.cleanup-note.original{background:#30251a;color:#fbbf24}.metrics{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 0;margin:0 0 14px}.metrics>div{width:50%;padding-left:9px}.metrics>div+div{border-left:1px solid var(--line);padding-left:22px}.metrics span{font-size:10px;color:var(--muted)}.metrics span small{font-size:8px;border:1px solid var(--line);padding:1px 3px}.metrics strong{display:block;font-size:24px;font-weight:600;margin-top:3px;font-variant-numeric:tabular-nums}.metrics strong small{font-size:10px;font-weight:400;color:var(--muted)}.table-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}h2{margin:0;font-size:12px}.table-head button{border:0;background:transparent;font-size:10px;color:#93c5fd;padding:4px}.table-scroll{overflow:auto;min-height:110px;flex:1;border:1px solid var(--line);border-radius:5px}table{border-collapse:collapse;width:100%;text-align:center;white-space:nowrap;font-size:11px}thead{position:sticky;top:0;background:#18182a;z-index:1}th{font-size:10px;font-weight:500;padding:10px 2px;color:#a1a1aa;border-bottom:1px solid var(--line)}th small{font-size:8px}td{padding:9px 2px;border-bottom:1px solid #1e1e30;font-variant-numeric:tabular-nums}tbody tr:not(.empty-row){cursor:pointer}tbody tr:not(.empty-row):hover{background:#1a2035}tbody tr.selected{background:#1e3a6e;box-shadow:inset 3px 0 var(--green)}.state{display:inline-block;border-radius:4px;padding:2px 7px;font-size:10px}.state.sales{background:#351d2c;color:#fda4af}.state.empty{background:#172d4d;color:#93c5fd}.empty-row td{color:#71717a;line-height:2;padding:28px 10px}.export{padding-top:14px;display:grid;gap:6px}.primary{background:var(--green);color:#f4f4f5;border:0;border-radius:5px;padding:11px;font-size:12px;font-weight:600}.primary:hover:not(:disabled){background:#2563eb}.secondary{background:#12121e;border:1px solid var(--line);border-radius:5px;color:#a1a1aa;padding:7px;font-size:10px}.map-section{border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column;min-width:0;background:#12121e}.map-toolbar{min-height:64px;display:flex;align-items:center;justify-content:space-between;padding:12px 18px}.map-toolbar strong{display:block;font-size:13px}.map-toolbar span{display:block;color:var(--muted);font-size:10px;margin-top:5px;max-width:48vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.map-toolbar button{background:#12121e;border:1px solid var(--line);border-radius:5px;padding:8px 12px;font-size:10px;color:#a1a1aa;white-space:nowrap}.map-wrap{position:relative;flex:1;min-height:300px}#map{height:100%;min-height:300px;background:#e8eee6}.legend{position:absolute;z-index:500;top:14px;left:55px;display:flex;gap:14px;background:#12121ef2;padding:9px 13px;border-radius:6px;box-shadow:0 2px 10px #152b3718;font-size:10px}.legend label{display:flex;align-items:center;gap:5px;cursor:pointer}.legend input{accent-color:#93c5fd;width:12px;height:12px;margin:0}.legend i{width:8px;height:8px;border-radius:50%}.red{background:var(--red)}.blue{background:var(--blue)}.purple{background:#8053ab}.map-empty{position:absolute;z-index:450;left:50%;top:50%;transform:translate(-50%,-50%);background:#12121ef2;box-shadow:0 5px 35px #2f50421a;border:1px solid #2a2a40;border-radius:10px;text-align:center;padding:25px 38px;pointer-events:none;min-width:260px}.map-empty span{font-size:16px;font-weight:600}.map-empty p{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:0}.map-footer{display:flex;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line);color:#a1a1aa;font-size:9px}.map-footer span:first-child{color:#a1a1aa}body>footer{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 25px;font-size:10px;color:#71717a}#status{color:#a1a1aa}#status.error{color:#fb7185}.route-marker{display:flex;align-items:center;justify-content:center;width:25px;height:25px;background:var(--marker);color:#f4f4f5;border:2px solid white;border-radius:50% 50% 50% 4px;transform:rotate(-45deg);box-shadow:0 2px 5px #152b3740}.route-marker span{transform:rotate(45deg);font-size:11px;font-weight:700}.leaflet-popup-content{font-family:inherit;color:var(--ink);white-space:pre-line;line-height:1.7}.leaflet-control-attribution{font-size:10px!important}dialog{max-width:560px;border:1px solid var(--line);border-radius:12px;padding:25px;color:var(--ink);max-height:90vh}dialog::backdrop{background:#0c292876}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font-size:20px}.dialog-head button{border:0;background:transparent;font-size:26px;color:#a1a1aa}dialog ol{padding-left:22px;font-size:13px;line-height:1.7}dialog p{font-size:12px;color:var(--muted)}.help-note{background:#18182a;padding:12px;border-radius:6px;line-height:1.8;font-size:11px}.help-credit{font-size:10px;line-height:1.8}.help-credit a{color:#93c5fd}[hidden]{display:none!important}
@media(min-height:900px){.upload-zone{padding:20px 8px}.metrics{padding:17px 0}.cleanup-note{margin:16px 0}}@media(max-width:850px){header{padding:0 16px;height:72px}.brand strong{font-size:19px}.local-badge{display:none}.brand small{font-size:8px}main{grid-template-columns:290px minmax(0,1fr);padding:10px;gap:10px;height:calc(100dvh - 108px)}aside{padding:12px}.map-footer span+span{display:none}.legend{gap:8px;left:48px;font-size:9px;padding:8px}.map-toolbar{padding:10px}.map-toolbar span{max-width:24vw}.map-empty{min-width:200px;padding:18px}body>footer>span+span{display:none}}@media(max-width:640px){main{display:flex;flex-direction:column;height:auto;min-height:0}aside{max-height:none;order:1}.map-section{order:0;height:53dvh;min-height:360px}header{height:68px}.brand strong{font-size:18px}.brand svg{width:28px}.help{padding:7px 10px}.map-toolbar{min-height:54px}.map-toolbar span{max-width:50vw}.map-empty{padding:18px;min-width:225px}.upload-zone{padding:10px}.table-scroll{max-height:250px;flex:auto}.map-footer{font-size:8px}.legend{font-size:9px}.map-toolbar strong{font-size:12px}body>footer{height:auto;min-height:36px;padding:8px 15px}.map-section #map{min-height:250px}.map-section .map-wrap{min-height:250px}}
/* Keep the interval list prominent at typical laptop heights. */
.upload-zone{display:grid;grid-template-columns:28px 1fr;column-gap:5px;row-gap:3px;padding:10px 12px;justify-content:initial;align-items:center}
.upload-zone .upload-icon{grid-row:1 / 4;text-align:center}
.upload-zone strong{font-size:12px}
.upload-zone span:not(.upload-icon),.upload-zone small{font-size:9px}
.section-head{margin-bottom:10px}.field-label{margin-top:12px}.storage-note{margin-bottom:9px}
.cleanup-note{margin:9px 0;padding:8px}.metrics{padding:9px 0;margin-bottom:10px}.metrics strong{font-size:22px}
.export{padding-top:10px}.table-scroll{min-height:150px}
@media(min-height:900px){.upload-zone{padding:11px 12px}.metrics{padding:11px 0}.cleanup-note{margin:10px 0}}
.export a{display:block;text-decoration:none;text-align:center;cursor:pointer}
.export a.disabled{opacity:.45;cursor:default;pointer-events:none}
.map-actions{display:flex;align-items:center;gap:8px}
.basemap-label{font-size:10px;color:var(--muted);white-space:nowrap}
#basemap{width:115px;padding:8px;font-size:11px}
.map-grayscale .leaflet-tile-pane{filter:grayscale(1)}
@media(max-width:850px){.basemap-label{display:none}.map-actions{gap:5px}#basemap{width:98px}.map-toolbar button{padding:8px}}
@media(max-width:640px){.map-toolbar span{max-width:32vw}.map-toolbar strong{font-size:11px}}

/* Shared dark palette and compact header used by arrivals-now. */
header{height:64px;border-bottom:1px solid var(--line);padding:10px 18px}
.brand strong{font-size:17px;letter-spacing:0}.brand small{letter-spacing:0;font-size:10px}
.brand svg{width:27px;height:27px;color:#60a5fa}
main{height:calc(100dvh - 100px)}
.primary{background:#1e3a6e;border:1px solid #3b82f6;color:#bfdbfe}
.primary:hover:not(:disabled){background:#244b8c}
.mode button.active{background:#1e3a6e;color:#93c5fd;box-shadow:inset 0 0 0 1px #3b82f6}
.legend{color:var(--ink)}.leaflet-popup-content{color:#16332f}
.map-empty{border-color:#2a2a40}.leaflet-control-attribution{color:#333}
body>footer{border-top:1px solid #1e1e30}
@media(max-width:640px){main{height:auto}.brand strong{font-size:16px}.brand small{font-size:9px}}
#login{text-decoration:none;white-space:nowrap}
#migrateLocal{display:block;margin-top:6px;background:transparent;border:0;color:#93c5fd;padding:0}

.file-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:6px}
.file-filters #fileOrder{grid-column:span 3}
