/*! cloudflare-pages-asset-salt:cloudflare-pages-asset-salt-v5 */
.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--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--error{color:var(--error-dark, #7f1d1d);background:var(--error-50, #fef2f2)}.port-traffic-viewer .mmv{width:100% !important;height:100% !important}.esri-view-root .esri-view-surface{height:100%}.esri-view-root{height:100%}
.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__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__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}
.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-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}
.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--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--error{color:var(--error-dark, #7f1d1d);background:var(--error-50, #fef2f2)}.port-traffic-viewer .mmv{width:100% !important;height:100% !important}.esri-view-root .esri-view-surface{height:100%}.esri-view-root{height:100%}.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}
