/*! cloudflare-pages-asset-salt:cloudflare-pages-asset-salt-v8 */
.port-gate-sim-peak-slider{position:relative;display:flex;align-items:center;width:100%;height:28px;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.port-gate-sim-peak-slider__track{position:relative;flex-grow:1;height:6px;border-radius:999px;background-color:var(--neutral-200)}.port-gate-sim-peak-slider__range{position:absolute;height:100%;border-radius:999px;background-color:var(--brand-700)}.port-gate-sim-peak-slider__thumb{display:block;width:18px;height:18px;border:2px solid var(--neutral-0);border-radius:50%;background-color:var(--brand-700);box-shadow:0 1px 4px color-mix(in srgb, var(--neutral-900) 20%, transparent);cursor:grab}.port-gate-sim-peak-slider__thumb:hover{background-color:var(--brand-700)}.port-gate-sim-peak-slider__thumb:focus-visible{outline:2px solid var(--brand-700);outline-offset:2px}.port-gate-sim-peak-slider__thumb:active{cursor:grabbing}
.driver-shortage-modal__overlay{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-sm, 12px);background:rgba(17,24,39,.55)}.driver-shortage-modal{display:flex;flex-direction:column;width:98vw;height:96vh;max-height:96vh;border-radius:12px;overflow:hidden;background:var(--neutral-0, #ffffff);box-shadow:0 20px 48px rgba(0,0,0,.25)}.driver-shortage-modal__titlebar{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--neutral-900, #1d1d1d);color:var(--neutral-0, #ffffff);font-size:14px}.driver-shortage-modal__close{border:none;background:rgba(0,0,0,0);color:var(--neutral-0, #ffffff);font-size:22px;line-height:1;cursor:pointer;padding:0 4px;transition:opacity .2s ease}.driver-shortage-modal__close:hover{opacity:.7}.driver-shortage-modal__body{flex:1;min-height:0;padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:18px}.driver-shortage-modal__hero{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}.driver-shortage-modal__hero-title{display:flex;align-items:flex-start;gap:12px}.driver-shortage-modal__hero-icon{font-size:22px;line-height:1;margin-top:2px}.driver-shortage-modal__hero-heading{margin:0 0 6px;font-size:18px;font-weight:700;color:var(--neutral-900, #1d1d1d)}.driver-shortage-modal__hero-badges{display:flex;gap:8px;flex-wrap:wrap}.driver-shortage-modal__badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:12px;font-size:11px;font-weight:600}.driver-shortage-modal__badge--neutral{background:var(--neutral-100, #f3f3f3);color:var(--neutral-700, #5d5d5d)}.driver-shortage-modal__badge--live{background:var(--positive-1, #f4f9f3);color:var(--positive-7d, #1a8817)}.driver-shortage-modal__hero-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.driver-shortage-modal__hero-timestamp{font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__error-banner{margin:0;padding:10px 14px;border-radius:8px;background:var(--error-1, #fdf5f5);color:var(--error-7d, #d32f2f);font-size:12px}.driver-shortage-modal__slider-card{padding:16px;border:1px solid var(--neutral-200, #ebebeb);border-radius:10px;background:var(--neutral-50, #f9fafb);display:flex;flex-direction:column;gap:12px}.driver-shortage-modal__slider-subtitle{margin:2px 0 0;font-size:12px;color:var(--neutral-500, #999999)}.driver-shortage-modal__slider-row{display:flex;align-items:center;gap:12px}.driver-shortage-modal__slider-row .port-gate-sim-peak-slider{flex:1}.driver-shortage-modal__slider-endpoint{font-size:11px;color:var(--neutral-500, #999999);flex-shrink:0}.driver-shortage-modal__slider-value{flex-shrink:0;min-width:48px;text-align:right;font-size:18px;font-weight:700;color:var(--brand-700)}.driver-shortage-modal__tier-row{display:flex;gap:8px;flex-wrap:wrap}.driver-shortage-modal__tier-pill{padding:4px 10px;border-radius:12px;font-size:11px;font-weight:600;background:var(--neutral-100, #f3f3f3);color:var(--neutral-600, #707070)}.driver-shortage-modal__tier-pill--active{background:var(--brand-700);color:var(--neutral-0, #ffffff)}.driver-shortage-modal__tier-pill--mild{background:var(--positive-7d, #1a8817);color:var(--neutral-0, #ffffff)}.driver-shortage-modal__tier-pill--medium{background:var(--warning-7d, #f9a825);color:var(--neutral-0, #ffffff)}.driver-shortage-modal__tier-pill--severe{background:var(--error-7d, #d32f2f);color:var(--neutral-0, #ffffff)}.driver-shortage-modal__loading{margin:24px 0;text-align:center;font-size:13px;color:var(--neutral-500, #999999)}.driver-shortage-modal__stat-cards{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:12px}.driver-shortage-modal__stat-card{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--neutral-200, #ebebeb);border-radius:10px;background:var(--neutral-0, #ffffff)}.driver-shortage-modal__stat-label{font-size:11px;font-weight:600;color:var(--neutral-500, #999999);text-transform:uppercase}.driver-shortage-modal__stat-value{font-size:26px;font-weight:700;color:var(--neutral-900, #1d1d1d)}.driver-shortage-modal__stat-detail{font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__two-col{display:grid;grid-template-columns:minmax(0, 1.4fr) minmax(0, 1fr);gap:16px;align-items:start}.driver-shortage-modal__section{padding:16px;border:1px solid var(--neutral-200, #ebebeb);border-radius:10px;background:var(--neutral-0, #ffffff)}.driver-shortage-modal__section-header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:12px}.driver-shortage-modal__section-title{margin:0;font-size:13px;font-weight:700;color:var(--neutral-900, #1d1d1d)}.driver-shortage-modal__section-hint{font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__zone-grid{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:10px}.driver-shortage-modal__zone-card{padding:12px;border:1px solid var(--neutral-200, #ebebeb);border-radius:8px;background:var(--neutral-50, #f9fafb);display:flex;flex-direction:column;gap:6px}.driver-shortage-modal__zone-card-header{display:flex;justify-content:space-between;gap:8px;font-size:12px}.driver-shortage-modal__zone-card-name{font-weight:600;color:var(--neutral-900, #1d1d1d)}.driver-shortage-modal__zone-card-id{color:var(--neutral-500, #999999)}.driver-shortage-modal__zone-card-count{font-size:18px;font-weight:700;color:var(--neutral-900, #1d1d1d)}.driver-shortage-modal__zone-progress{height:6px;border-radius:999px;background:var(--neutral-200, #ebebeb);overflow:hidden}.driver-shortage-modal__zone-progress-fill{height:100%;border-radius:999px;transition:width .2s ease}.driver-shortage-modal__zone-progress-fill--normal{background:var(--positive-7d, #1a8817)}.driver-shortage-modal__zone-progress-fill--warning{background:var(--warning-7d, #f9a825)}.driver-shortage-modal__zone-progress-fill--red-risk{background:var(--error-7d, #d32f2f)}.driver-shortage-modal__zone-card-footer{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__zone-badge{padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;white-space:nowrap}.driver-shortage-modal__zone-badge--normal{background:var(--positive-1, #f4f9f3);color:var(--positive-7d, #1a8817)}.driver-shortage-modal__zone-badge--warning{background:var(--warning-1, #fef6e9);color:var(--warning-7d, #f9a825)}.driver-shortage-modal__zone-badge--red-risk{background:var(--error-1, #fdf5f5);color:var(--error-7d, #d32f2f)}.driver-shortage-modal__zone-empty{grid-column:1/-1;padding:16px;text-align:center;font-size:12px;color:var(--neutral-500, #999999)}.driver-shortage-modal__zone-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:12px;font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__zone-legend-item{display:inline-flex;align-items:center;gap:5px}.driver-shortage-modal__zone-legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.driver-shortage-modal__zone-legend-dot--normal{background:var(--positive-7d, #1a8817)}.driver-shortage-modal__zone-legend-dot--warning{background:var(--warning-7d, #f9a825)}.driver-shortage-modal__zone-legend-dot--red-risk{background:var(--error-7d, #d32f2f)}.driver-shortage-modal__kpi-table{width:100%;border-collapse:collapse;font-size:12px}.driver-shortage-modal__kpi-table th,.driver-shortage-modal__kpi-table td{padding:8px 6px;border-bottom:1px solid var(--neutral-200, #ebebeb);text-align:left}.driver-shortage-modal__kpi-table th{color:var(--neutral-500, #999999);font-weight:600}.driver-shortage-modal__kpi-delta{font-weight:600;color:var(--neutral-500, #999999)}.driver-shortage-modal__kpi-delta--up{color:var(--error-7d, #d32f2f)}.driver-shortage-modal__kpi-delta--down{color:var(--positive-7d, #1a8817)}.driver-shortage-modal__kpi-hint{margin:10px 0 0;font-size:11px;color:var(--neutral-500, #999999)}.driver-shortage-modal__impact-outcome{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:16px;padding:16px;border:1px solid var(--neutral-200, #ebebeb);border-radius:10px;background:var(--neutral-0, #ffffff)}.driver-shortage-modal__impact-list{margin:8px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px}.driver-shortage-modal__impact-item{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--neutral-400, #b8b8b8);transition:color .2s ease,font-weight .2s ease}.driver-shortage-modal__impact-item--active{color:var(--neutral-700, #5d5d5d);font-weight:600}.driver-shortage-modal__impact-arrow{width:14px;text-align:center;color:var(--neutral-400, #b8b8b8);font-weight:700}.driver-shortage-modal__impact-arrow--up{color:var(--error-7d, #d32f2f)}.driver-shortage-modal__impact-arrow--down{color:var(--positive-7d, #1a8817)}.driver-shortage-modal__impact-detail{margin-left:auto;font-size:11px;font-weight:700;color:var(--neutral-900, #1d1d1d)}@media(max-width: 900px){.driver-shortage-modal__stat-cards,.driver-shortage-modal__two-col,.driver-shortage-modal__impact-outcome,.driver-shortage-modal__zone-grid{grid-template-columns:1fr}}
.port-gate-list{display:flex;flex-direction:column;padding:var(--space-lg, 16px)}.port-gate-list__title{margin:0 0 12px;font-size:13px;font-weight:600;color:var(--neutral-900)}.port-gate-list__list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.port-gate-list__row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-0, #ffffff);font-size:13px;font-weight:600;color:var(--neutral-900);cursor:pointer;transition:border-color .2s ease,background .2s ease}.port-gate-list__row--open:hover{border-color:var(--app-accent-color, var(--brand-700));background:var(--neutral-50)}.port-gate-list__row--closed{color:var(--neutral-400);background:var(--neutral-100);cursor:not-allowed}.port-gate-list__status{padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}.port-gate-list__status--open{background:var(--positive-1, #f4f9f3);color:var(--positive-7d, #1a8817)}.port-gate-list__status--closed{background:var(--neutral-200);color:var(--neutral-500)}
.port-gate-sim{display:flex;flex-direction:column;gap:0;min-width:0;padding:var(--space-lg, 16px)}.port-gate-sim__message{margin:0;font-size:12px;color:var(--neutral-500)}.port-gate-sim__gate-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.port-gate-sim__gate-tab{padding:8px 14px;border:1px solid var(--neutral-200);border-radius:16px;background:var(--neutral-0, #ffffff);color:var(--neutral-700);font-size:14px;cursor:pointer;transition:border-color .2s ease,color .2s ease}.port-gate-sim__gate-tab--active{border-color:var(--brand-700);color:var(--brand-700);font-weight:600}.port-gate-sim__info-list{margin:0 0 16px;padding:0}.port-gate-sim__info-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--neutral-200);font-size:13px}.port-gate-sim__info-row dt{margin:0;color:var(--neutral-500);font-weight:400}.port-gate-sim__info-row dd{margin:0;color:var(--neutral-900);text-align:right;font-weight:500}.port-gate-sim__queue-badge{display:inline-block;padding:3px 10px;border-radius:14px;background:#fef3c7;color:var(--neutral-900);font-size:12px;font-weight:500}.port-gate-sim__tabs{display:flex;gap:20px;margin-bottom:14px;border-bottom:1px solid var(--neutral-200)}.port-gate-sim__tab{padding:8px 0 10px;font-size:13px;color:var(--neutral-500);border-bottom:2px solid rgba(0,0,0,0)}.port-gate-sim__tab--active{color:var(--brand-700);border-bottom-color:var(--brand-700);font-weight:600}.port-gate-sim__card{padding:16px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-0, #ffffff);display:flex;flex-direction:column;gap:14px;margin-bottom:16px}.port-gate-sim__sim-subtitle{margin:0 0 4px;font-size:12px;color:var(--neutral-500);line-height:1.45}.port-gate-sim__lanes-header{display:flex;justify-content:space-between;font-size:13px;color:var(--neutral-700);font-weight:500}.port-gate-sim__lanes-count{color:var(--brand-700);font-weight:700}.port-gate-sim__lane-grid{display:grid;grid-template-columns:repeat(4, minmax(0, 1fr));gap:8px}.port-gate-sim__lane-chip{padding:8px 6px;border:none;border-radius:20px;font-size:11px;font-weight:500;text-align:center;cursor:pointer;transition:background .2s ease,color .2s ease;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.port-gate-sim__lane-chip--open{background:#dcfce7;color:#166534}.port-gate-sim__lane-chip--closed{background:#fee2e2;color:#991b1b}.port-gate-sim__lane-chip:disabled{cursor:not-allowed;opacity:.92}.port-gate-sim__lane-chip--readonly:disabled{cursor:default;opacity:1}.port-gate-sim__profile-block{display:flex;flex-direction:column;gap:6px}.port-gate-sim__profile-label{font-size:13px;font-weight:500;color:var(--neutral-700)}.port-gate-sim__profile-select{width:100%;padding:10px 12px;border:1px solid var(--neutral-200);border-radius:6px;background:var(--neutral-0, #ffffff);color:var(--neutral-900);font-size:13px;cursor:pointer}.port-gate-sim__profile-select:focus{outline:2px solid color-mix(in srgb, var(--brand-700) 35%, transparent);outline-offset:1px}.port-gate-sim__gate-total{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px;padding:12px 14px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-50);font-size:13px;font-weight:600}.port-gate-sim__gate-total strong{font-size:18px;font-weight:700}.port-gate-sim__traffic-legend{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;padding:12px 14px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-0, #ffffff)}.port-gate-sim__traffic-legend-title{font-size:12px;font-weight:600;color:var(--neutral-700)}.port-gate-sim__traffic-legend-items{display:flex;flex-wrap:wrap;gap:8px 12px}.port-gate-sim__traffic-legend-item{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--neutral-600)}.port-gate-sim__traffic-legend-swatch{width:14px;height:6px;border-radius:999px;flex-shrink:0}.port-gate-sim__slider-block{display:flex;flex-direction:column;gap:10px;width:100%}.port-gate-sim__slider-row{display:flex;justify-content:space-between;font-size:13px;color:var(--neutral-700);font-weight:500}.port-gate-sim__slider-value{color:var(--brand-700);font-weight:700}.port-gate-sim__run-actions{display:flex;gap:8px;align-items:stretch}.port-gate-sim__scenario-select{flex:1;min-width:0;padding:12px 14px;border:1px solid var(--neutral-200);border-radius:6px;background:var(--neutral-0, #ffffff);color:var(--neutral-900);font-size:14px;font-weight:600;cursor:pointer}.port-gate-sim__scenario-select:focus{outline:2px solid color-mix(in srgb, var(--brand-700) 35%, transparent);outline-offset:1px}.port-gate-sim__run-btn{flex:1;min-width:0;padding:12px 16px;border:none;border-radius:6px;background:var(--brand-700);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:filter .2s ease}.port-gate-sim__run-btn:hover{filter:brightness(1.06)}.port-gate-sim__run-reset{flex-shrink:0;width:40px;padding:0;border:1px solid var(--neutral-200);border-radius:6px;background:var(--neutral-0, #ffffff);color:var(--neutral-600);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:border-color .2s ease,color .2s ease,background-color .2s ease}.port-gate-sim__run-reset:hover{border-color:var(--neutral-300);color:var(--neutral-900);background:var(--neutral-50)}.port-gate-sim__run-reset-icon{width:16px;height:16px;display:block}.port-gate-sim__diversion{margin-bottom:16px}.port-gate-sim__diversion-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:10px}.port-gate-sim__diversion-item{padding:12px 14px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-0, #ffffff)}.port-gate-sim__diversion-item-header{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.port-gate-sim__diversion-item-name{font-size:13px;font-weight:600;color:var(--neutral-900)}.port-gate-sim__diversion-status{padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;white-space:nowrap}.port-gate-sim__diversion-status--active{background:var(--warning-bg);color:var(--warning-dark)}.port-gate-sim__diversion-status--standby{background:var(--neutral-100);color:var(--neutral-500)}.port-gate-sim__diversion-item-detail{margin:0;font-size:12px;line-height:1.5;color:var(--neutral-700)}.port-gate-sim__diversion-empty{padding:12px 14px;font-size:12px;color:var(--neutral-500);text-align:center}.port-gate-sim__result-cards{display:grid;grid-template-columns:repeat(2, minmax(0, 1fr));gap:10px;margin-bottom:16px}.port-gate-sim__result-card{padding:14px;border-radius:8px;border:1px solid var(--neutral-200);display:flex;flex-direction:column;gap:6px}.port-gate-sim__result-label{font-size:12px;font-weight:600;color:var(--neutral-500)}.port-gate-sim__result-card strong{font-size:18px;font-weight:700}.port-gate-sim__section-title{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--neutral-900)}.port-gate-sim__section-subtitle{margin:0 0 12px;font-size:12px;color:var(--neutral-500)}.port-gate-sim__chart-section,.port-gate-sim__delay-section{margin-bottom:18px}.port-gate-sim__lane-vehicles-section{margin-bottom:18px}.port-gate-sim__lane-vehicles-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;max-height:260px;overflow-y:auto}.port-gate-sim__lane-vehicles-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border:1px solid var(--neutral-200);border-radius:6px;background:var(--neutral-0, #ffffff)}.port-gate-sim__lane-vehicles-name{font-size:12px;font-weight:500;color:var(--neutral-700)}.port-gate-sim__lane-vehicles-count{font-size:12px;font-weight:700;color:var(--neutral-900);white-space:nowrap}.port-gate-sim__chart-wrap{position:relative;overflow:visible;border:1px solid var(--neutral-200);border-radius:8px;padding:12px;background:var(--neutral-0, #ffffff)}.port-gate-sim__chart-plot{display:flex;flex-direction:column;gap:8px}.port-gate-sim__chart{width:100%;height:100px;display:block;cursor:crosshair}.port-gate-sim__chart-hit-area{cursor:crosshair}.port-gate-sim__chart-hint{margin:0;font-size:11px;color:var(--neutral-500);line-height:1.4}.port-gate-sim__chart-crosshair{stroke:var(--neutral-300);stroke-width:1;stroke-dasharray:3 3}.port-gate-sim__chart-point{stroke:#fff;stroke-width:1.5}.port-gate-sim__chart-point--current{fill:var(--neutral-500)}.port-gate-sim__chart-point--scenario{fill:#ef4444}.port-gate-sim__chart-tooltip{width:100%;padding:8px 10px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-50);box-shadow:none}.port-gate-sim__chart-tooltip-time{margin:0 0 6px;font-size:12px;font-weight:600;color:var(--neutral-900)}.port-gate-sim__chart-tooltip-metrics{margin:0 0 8px;display:grid;gap:4px}.port-gate-sim__chart-tooltip-metrics div{display:flex;justify-content:space-between;gap:8px;font-size:11px}.port-gate-sim__chart-tooltip-metrics dt{margin:0;color:var(--neutral-500)}.port-gate-sim__chart-tooltip-metrics dd{margin:0;font-weight:600;color:var(--neutral-900)}.port-gate-sim__chart-tooltip-impact{margin:0;padding:6px 8px;border-radius:6px;font-size:11px;line-height:1.4;display:flex;flex-direction:column;gap:2px}.port-gate-sim__chart-tooltip-impact strong{font-size:12px}.port-gate-sim__chart-tooltip-impact span{font-weight:500}.port-gate-sim__chart-line--current{stroke:var(--neutral-500);stroke-width:2}.port-gate-sim__chart-line--scenario{stroke:#ef4444;stroke-width:2.5}.port-gate-sim__chart-legend{display:flex;gap:16px;margin-top:8px;font-size:11px}.port-gate-sim__chart-legend-item{display:flex;align-items:center;gap:6px;color:var(--neutral-600)}.port-gate-sim__chart-legend-item--current::before{content:"";width:16px;height:2px;background:var(--neutral-500);display:inline-block}.port-gate-sim__chart-legend-item--scenario::before{content:"";width:16px;height:2px;background:#ef4444;display:inline-block}.port-gate-sim__chart-axis{display:flex;justify-content:space-between;margin-top:6px;font-size:11px;color:var(--neutral-500)}.port-gate-sim__chart-empty{margin:0;padding:24px 8px;text-align:center;font-size:12px;color:var(--neutral-500)}.port-gate-sim__delay-flow{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px;border:1px solid var(--neutral-200);border-radius:8px;background:var(--neutral-0, #ffffff)}.port-gate-sim__delay-node{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1;text-align:center;padding:4px 8px}.port-gate-sim__delay-badge{width:32px;height:28px;border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;box-sizing:border-box}.port-gate-sim__delay-name{font-size:12px;font-weight:600;color:var(--neutral-900)}.port-gate-sim__delay-time{font-size:11px;font-weight:600}.port-gate-sim__delay-arrow{color:var(--neutral-400);font-size:16px;flex-shrink:0}
.zone-legend{position:absolute;left:var(--space-md, 16px);bottom:60px;z-index:10;background:var(--neutral-900, #1d1d1d);border-radius:var(--radius-md, 8px);padding:10px 14px;pointer-events:none}.zone-legend__title{color:var(--neutral-400, #9ca3af);font-size:11px;font-weight:600;margin-bottom:6px}.zone-legend__rows{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;gap:16px}.zone-legend__row{display:flex;align-items:center;gap:8px}.zone-legend__dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.zone-legend__label{color:var(--neutral-50, #ffffff);font-size:13px}
.port-traffic-viewer{position:relative;flex:1 1 auto;min-width:0;height:100%;min-height:0}.port-traffic-viewer [class*=IafDraggable-module_widget-container],.port-traffic-viewer [class*=IafDraggable-module_canvas-container]{border-radius:0}.port-traffic-viewer .esri-view-root{height:100%}.port-traffic-viewer .esri-view-root .esri-view-surface{height:100%}.port-traffic-viewer--loading,.port-traffic-viewer--error{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:24px;font-size:14px}.port-traffic-viewer--loading{color:var(--neutral-500);background:var(--neutral-100)}.port-traffic-viewer__scene-loading{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--neutral-500);background:var(--neutral-900);pointer-events:none}.port-traffic-viewer--error{color:var(--error-dark, #7f1d1d);background:var(--error-50, #fef2f2)}.port-traffic-viewer__lane-tooltip{position:absolute;transform:translate(-50%, -130%);padding:6px 10px;border-radius:6px;background:var(--neutral-900);color:var(--neutral-0, #ffffff);white-space:nowrap;pointer-events:none;z-index:10;display:flex;flex-direction:column;gap:2px}.port-traffic-viewer__lane-tooltip-name{font-size:12px;font-weight:500}.port-traffic-viewer__lane-tooltip-queue{font-size:11px;font-weight:400;color:var(--neutral-300, #d1d5db)}
.active-zones-panel{display:flex;flex-direction:column;width:360px;flex-shrink:0;height:100%;min-height:0;overflow:hidden;background:var(--neutral-0, #ffffff);border-right:1px solid var(--neutral-200)}.active-zones-panel__header{flex-shrink:0;padding:var(--space-lg, 16px);border-bottom:1px solid var(--neutral-200)}.active-zones-panel__title{margin:0 0 var(--space-md, 12px);font-size:20px;font-weight:700;color:var(--neutral-900, #1d1d1d)}.active-zones-panel__tabs{display:flex;gap:var(--space-md, 12px);margin-bottom:var(--space-md, 12px);border-bottom:1px solid var(--neutral-200)}.active-zones-panel__tab{padding:8px 0 10px;background:rgba(0,0,0,0);border:none;font-size:13px;color:var(--neutral-500);border-bottom:2px solid rgba(0,0,0,0);cursor:pointer;transition:color .2s ease,border-color .2s ease}.active-zones-panel__tab--active{color:var(--app-accent-color, var(--brand-700));border-bottom-color:var(--app-accent-color, var(--brand-700));font-weight:600}.active-zones-panel__gate-tab{flex:1;min-height:0;overflow-y:auto}.active-zones-panel__search-row{display:flex;align-items:center;gap:var(--space-sm, 8px)}.active-zones-panel__search{position:relative;display:flex;align-items:center;flex:1;min-width:0}.active-zones-panel__reset-button{flex-shrink:0}.active-zones-panel__search-icon{position:absolute;left:10px;width:12px;height:12px;color:var(--neutral-500);pointer-events:none}.active-zones-panel__search-input{width:100%}.active-zones-panel__search-input input{padding-left:28px}.active-zones-panel__list{flex:1;min-height:0;overflow-y:auto;padding:var(--space-lg, 16px);display:flex;flex-direction:column;gap:var(--space-md, 12px)}.active-zones-panel__tile{border:1px solid var(--neutral-200);border-radius:var(--radius-md, 8px);padding:var(--space-md, 12px);cursor:pointer;transition:border-color .2s ease,background .2s ease}.active-zones-panel__tile:hover{border-color:var(--app-accent-color, var(--brand-700));background:var(--neutral-50)}.active-zones-panel__tile:focus-visible{outline:2px solid var(--app-accent-color, var(--brand-700));outline-offset:2px}.active-zones-panel__tile--selected{border-color:var(--app-accent-color, var(--brand-700));background:var(--neutral-50)}.active-zones-panel__tile-title{font-size:14px;font-weight:700;color:var(--neutral-900, #1d1d1d);margin-bottom:8px}.active-zones-panel__tile-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-sm, 8px);padding:3px 0;font-size:13px}.active-zones-panel__tile-label{color:var(--Neutral-900, #1D1D1D);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:20px}.active-zones-panel__tile-value{color:var(--Neutral-700, #5D5D5D);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:20px}.active-zones-panel__type-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:12px;font-weight:600}.active-zones-panel__back-button{display:inline-flex;align-items:center;gap:4px;margin:16px 16px 0;padding:0;border:none;background:rgba(0,0,0,0);font-size:13px;font-weight:500;color:var(--app-accent-color, var(--brand-700));cursor:pointer}.active-zones-panel__back-button:hover{text-decoration:underline}.active-zones-panel__empty{color:var(--neutral-500);font-size:13px;text-align:center;padding:var(--space-lg, 16px) 0}
.port-traffic-page{position:relative;display:flex;flex-direction:row;width:100%;height:calc(100vh - var(--app-header-height, 50px));overflow:hidden}
