/* Copyright 2026 AbilitySoft. All rights reserved. */
/* app.css rules the free tools need on the public layout (public pages never load app.css). Regenerate if those classes change in app.css. */
:root{--bg-card:hsl(0,0%,100%);--bg-muted:hsl(210,40%,96%);--border-light:hsl(214,32%,91%);--border-subtle:hsl(220,13%,95%);--color-brand-100:#f9c9c9;--color-brand-50:#fdecec;--color-brand-600:#b71c1c;--font-heading:'Outfit',system-ui,-apple-system,sans-serif;--radius-2xl:24px;--radius-lg:14px;--radius-pill:9999px;--radius-xl:18px;--shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.06),0 4px 6px -4px rgb(0 0 0 / 0.04);--shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.05),0 2px 4px -2px rgb(0 0 0 / 0.04);--shadow-sm:0 1px 3px 0 rgb(0 0 0 / 0.05),0 1px 2px -1px rgb(0 0 0 / 0.04);--text-faint:hsl(215,16%,44%);--text-muted:hsl(215,16%,40%);--text-primary:hsl(222,47%,11%);--transition-base:0.2s cubic-bezier(0.4,0,0.2,1)}
.filter-panel{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-2xl);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow var(--transition-base)}
.filter-panel:hover{box-shadow:var(--shadow-md)}
.filter-panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;cursor:pointer;user-select:none}
.filter-panel-header:hover{background:var(--bg-muted)}
.filter-panel-chevron{transition:transform var(--transition-base);color:var(--text-faint);font-size:0.75rem}
.filter-panel-body{padding:0 1.5rem 1.5rem}
@media(max-width:639px){#ports_map,#airports_map,#terminals_map,
  #pd-map,#ap-map,#detail_map,#ci-map,
  #wx-map,#wt-map,#vessel_map,#air_map,
  #rc-route-map,#ship-route-map,
  .canal-map-wrap,.cd-map-wrap,.ci-map-wrap{
    height:260px!important;
  }}
.card,.section-card,.stat-card,.filter-panel,.glass-card{border-radius:var(--radius-2xl)!important}
@media(max-width:640px){.page-content .cbm-row{grid-template-columns:repeat(6,minmax(0,1fr))}.page-content .cbm-row>.col-span-3{grid-column:span 2/span 2}.page-content .cbm-row>.col-span-1{grid-column:span 2/span 2}.page-content .cbm-row>.col-span-2{grid-column:span 4/span 4}}
.empty-page-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;gap:1.25rem;min-height:320px}
.empty-page-state-icon{width:5rem;height:5rem;border-radius:var(--radius-xl);background:var(--bg-muted);border:1.5px dashed var(--border-light);display:flex;align-items:center;justify-content:center;font-size:1.75rem;color:var(--text-faint)}
.empty-page-state-title{font-family:var(--font-heading);font-weight:700;font-size:1.125rem;color:var(--text-primary);margin:0}
.empty-page-state-desc{font-size:0.875rem;color:var(--text-muted);max-width:380px;line-height:1.65;margin:0}
.if-ux-page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}
.if-ux-page-actions{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;flex-wrap:wrap}
.if-ux-action{display:inline-flex;align-items:center;gap:.4rem;min-height:2.75rem;padding:.6rem 1rem;border-radius:var(--radius-xl);font-size:.8rem;font-weight:700;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;border:1px solid transparent;transition:transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base),background-color var(--transition-base)}
.if-ux-action:hover{transform:translateY(-1px)}
.if-ux-action-muted{background:#fff;border-color:var(--border-light);color:var(--text-muted)}
.if-ux-action-muted:hover{border-color:var(--color-brand-300);color:var(--color-brand-600)}
.if-ux-eyebrow{margin:0 0 .35rem;color:var(--color-brand-600);font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}
.if-ux-title{margin:0;color:var(--text-primary);font-family:var(--font-heading);font-size:clamp(1.35rem,2.2vw,2rem);font-weight:800;letter-spacing:0;line-height:1.15}
.if-ux-subtitle{margin:.45rem 0 0;max-width:52rem;color:var(--text-muted);font-size:.875rem;line-height:1.65}
.if-ux-stat{display:flex;align-items:center;gap:.85rem;min-height:5.25rem;padding:1rem 1.1rem;background:#fff;border:1px solid var(--border-subtle);border-radius:var(--radius-xl);box-shadow:var(--shadow-sm);text-decoration:none;color:inherit;transition:transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base)}
.if-ux-stat:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg);border-color:var(--color-brand-100)}
.if-ux-stat-icon{width:2.75rem;height:2.75rem;border-radius:var(--radius-lg);display:flex;align-items:center;justify-content:center;flex:none;font-size:1rem;background:var(--bg-muted);color:var(--text-muted)}
.if-ux-stat-brand .if-ux-stat-icon{background:var(--color-brand-50);color:var(--color-brand-600)}
.if-ux-stat-info .if-ux-stat-icon{background:#f8fafc;color:#334155}
.if-ux-stat-success .if-ux-stat-icon{background:#f0fdf4;color:#15803d}
.if-ux-stat-warning .if-ux-stat-icon{background:#fffbeb;color:#92400e}
.if-ux-stat-danger .if-ux-stat-icon{background:#fff1f2;color:#9f1239}
.if-ux-stat-copy{display:flex;flex-direction:column;min-width:0}
.if-ux-stat-label{color:var(--text-muted);font-size:.72rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.if-ux-stat-value{margin-top:.15rem;color:var(--text-primary);font-family:var(--font-heading);font-size:1.45rem;font-weight:800;line-height:1.15;font-variant-numeric:tabular-nums}
.if-ux-empty{background:#fff;border:1px dashed var(--border-light);border-radius:var(--radius-2xl)}
.if-ux-filter{overflow:hidden}
.if-ux-filter-toggle{width:100%;border:0;background:transparent;text-align:left;cursor:pointer}
.if-ux-filter-toggle span{display:inline-flex;align-items:center;gap:.5rem}
.if-ux-badge{display:inline-flex;align-items:center;gap:.35rem;border-radius:var(--radius-pill);padding:.25rem .65rem;font-size:.6875rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border:1px solid var(--border-light);background:var(--bg-muted);color:var(--text-muted)}
.if-ux-badge-dot{width:.35rem;height:.35rem;border-radius:50%;background:currentColor;flex-shrink:0}
.dyn-color{color:var(--dyn-color)}
@media(max-width:767px){.if-ux-page-header{flex-direction:column;align-items:stretch;margin-bottom:1rem}.if-ux-page-actions{justify-content:stretch}.if-ux-page-actions > *{flex:1 1 auto}.if-ux-title{font-size:1.35rem}.if-ux-stat{min-height:4.75rem;padding:.9rem}}
@media(prefers-reduced-motion:reduce){.if-ux-stat,.if-ux-stat:hover{transition:none;transform:none}}
.if-ux-stat-value{overflow-wrap:break-word;min-width:0}
.if-ux-page-header{flex-wrap:wrap}
.if-ux-page-header>.min-w-0{flex:1 1 16rem}
.if-ux-title{overflow-wrap:break-word;word-break:normal}
