/* Component-specific states: neutral hover, persistent selection, clear keyboard focus.
   Inspired by Spectrum state hierarchy and Carbon's short, purposeful easing. */
:root{--motion-ease:cubic-bezier(.2,.7,.2,1);--state-wash:color-mix(in srgb,var(--ink) 6%,transparent);--state-edge:color-mix(in srgb,var(--ink) 22%,var(--line));--state-shadow:0 5px 18px #0000000b}
:root[data-theme=dark]{--state-wash:color-mix(in srgb,var(--ink) 8%,transparent);--state-shadow:0 8px 24px #0003}
button,summary,a.button{transition:box-shadow 160ms var(--motion-ease),border-color 160ms var(--motion-ease)}
button:active,.button:active{filter:none}
:where(button,summary,a,[role=tab]):focus-visible{outline:2px solid var(--accent);outline-offset:4px}
/* Navigation uses a fine baseline, never a rectangular hover background. */
header .primary-links{display:flex;align-items:center;gap:24px;flex-shrink:0;font-size:.85rem;height:auto}
header .primary-links a{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:10px 0;line-height:24px;color:var(--muted);text-decoration:none;border:0;white-space:nowrap}
header .primary-links a[aria-current=page]{color:var(--accent)}
header .primary-links a[aria-current=page]::before{content:'';position:absolute;bottom:4px;left:0;right:0;height:2px;background:currentColor;pointer-events:none}
@media(max-width:900px){
 body>header{height:auto;min-height:64px;flex-wrap:wrap;gap:8px 16px;padding:10px 16px 0}
 header .primary-links{display:flex;order:3;width:100%;gap:24px;overflow-x:auto}
 header .header-right{margin-left:auto}
}
header nav a::after{content:'';position:absolute;bottom:4px;left:0;right:0;height:1px;background:currentColor;opacity:0;transform:scaleX(.55);transform-origin:center;transition:transform 180ms var(--motion-ease),opacity 180ms var(--motion-ease);pointer-events:none}
header nav a[aria-current]::after{display:none}
/* Quiet tools retain the same size and position. */
:is(.playback-toolbar,.header-right,.module-tools,.chart-options,.map-options,.flight-export,.kpi-settings,.chart-range-menu) :is(button,summary){transition:box-shadow 150ms var(--motion-ease),border-color 150ms var(--motion-ease);}
.module-choice{transition:box-shadow 180ms var(--motion-ease),border-color 180ms var(--motion-ease)}
.module-heading-toggle .module-chevron{transition:opacity 150ms var(--motion-ease)}
/* Video cards reveal a play affordance inside the image. Titles stay still. */
.flight-card .poster{isolation:isolate;transition:box-shadow 240ms var(--motion-ease)}
.flight-card .poster::after{content:'▷';position:absolute;left:50%;top:50%;display:grid;place-items:center;width:46px;height:46px;border-radius:50%;border:1px solid #ffffff80;background:#14201bb3;color:#fff;font-size:27px;line-height:1;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transform:translate(-50%,-45%) scale(.9);transition:opacity 180ms var(--motion-ease),transform 240ms var(--motion-ease);pointer-events:none}
.flight-card h3{color:var(--ink)}
.flight-card .poster img,.category-tile .poster img,.featured-link .poster img{transition:transform 500ms var(--motion-ease)}
.flight-card:focus-visible .poster::after{opacity:1;transform:translate(-50%,-50%) scale(1)}
.flight-card:focus-visible h3{color:var(--ink);text-decoration:none}
.featured-content .button{border-radius:10px;background:linear-gradient(135deg,#23332bd9,#14201bb3);border-color:#ffffff40;box-shadow:inset 0 1px 0 #ffffff16,0 6px 24px #0002;gap:12px;transition:box-shadow 220ms var(--motion-ease),border-color 220ms var(--motion-ease)}
.featured-play{width:28px;height:28px;border:1px solid #ffffff55;border-radius:50%;font-size:17px;transition:box-shadow 220ms var(--motion-ease)}
.featured-link:focus-visible .button{background:linear-gradient(135deg,#23332bd9,#14201bb3);border-color:#ffffffb3;box-shadow:inset 0 1px 0 #ffffff30,0 10px 30px #0004}
@media(hover:hover) and (pointer:fine){
 button:not(:disabled):not([aria-disabled=true]):hover{border-color:var(--state-edge)}
 header nav a:hover{background:transparent;color:var(--ink)}
 header nav a:hover::after{opacity:.65;transform:scaleX(1)}
 header nav a[aria-current]:hover{color:var(--accent)}
 [role=tab]:not([aria-selected=true]):hover{background:var(--state-wash);color:var(--ink)}
 :is(.playback-toolbar,.header-right,.module-tools,.chart-options,.map-options,.flight-export,.kpi-settings,.chart-range-menu) :is(button,summary):not(:disabled):not([aria-disabled=true]):hover{color:var(--ink);border-color:transparent;box-shadow:inset 0 0 0 40px var(--state-wash)}
 .module-heading-toggle:hover:not(:disabled){background:transparent;color:var(--ink);box-shadow:none}
 .module-heading-toggle:hover .module-chevron{opacity:1}
 .module-choice:hover{border-color:var(--state-edge);box-shadow:inset 0 0 0 100px var(--state-wash)}
 .log-list button:not(:disabled):not([aria-current]):hover{border-color:var(--line);box-shadow:inset 0 0 0 100px var(--state-wash)}
 #categories button:not([aria-pressed=true]):hover{background:var(--state-wash);border-color:var(--state-edge);color:var(--ink)}
 #categories button[aria-pressed=true]:hover{border-color:var(--accent)}
 .flight-card:hover h3{color:var(--ink);text-decoration:none}
 .flight-card:hover .poster{box-shadow:var(--state-shadow)}
 .flight-card:hover .poster::after{opacity:1;transform:translate(-50%,-50%) scale(1)}
 .flight-card:hover .poster img,.category-tile:hover .poster img{transform:scale(1.015)}
 .category-tile:hover{border-color:var(--state-edge);box-shadow:var(--state-shadow)}
 .featured-link:hover .poster img{transform:scale(1.012)}
 .featured-link:hover .button{background:linear-gradient(135deg,#23332bd9,#14201bb3);border-color:#ffffff99;box-shadow:inset 0 1px 0 #ffffff30,0 10px 30px #0004}
 .featured-link:hover .featured-play{box-shadow:0 0 0 4px #ffffff0d}
}
@media(prefers-reduced-motion:reduce){
 button,summary,a.button,header nav a::after,.module-choice,.module-chevron,.poster img,.flight-card .poster,.flight-card .poster::after,.featured-content .button,.featured-play{transition:none!important}
 .poster img{transform:none!important}
 .flight-card .poster::after{transform:translate(-50%,-50%)!important}
}
@media(forced-colors:active){.flight-card .poster::after,.featured-content .button{background:Canvas;color:CanvasText;border-color:ButtonText}}
