/* Aeroinis — the Private Aviation Calendar, in daylight.

   This page was the site's one dark room end to end. It now wears the same
   light the board (/flights) wears — off-white ground, navy ink, gold only
   as an accent — while the map at the top stays photographic: satellite
   imagery is a picture, and a picture is not a theme. Everything under the
   map is paper. Scoped under .avc- so nothing leaks into the shared sheets;
   one file for /calendar and /tr/calendar, which used to carry a copy each. */

body.avc { margin: 0; background: #f7f9fc; color: #0F1E33; font-family: Satoshi, 'Segoe UI', system-ui, sans-serif;
  --avc-ink: #0F1E33; --avc-ink-2: #1B3050; --avc-mut: #607185; --avc-line: #dde5ed; --avc-paper: #ffffff;
  --avc-gold: #C8A96A; --avc-gold-ink: #866329; --avc-gold-soft: rgba(200,169,106,.14); --avc-live: #2f8f5b; }
.avc-shell { max-width: 1240px; margin-inline: auto; padding-inline: 24px; }
.avc a { color: var(--avc-gold-ink); text-decoration: none; }
.avc a:hover { color: var(--avc-ink); }

/* ── the header over the map: light type on imagery, ink once it settles on paper ── */
.avc-jpnav { position: fixed; inset: 0 0 auto; z-index: 60; height: 88px; display: flex; align-items: center; background: transparent; transition: background .4s, backdrop-filter .4s, box-shadow .4s; }
.avc-jpnav.is-solid { background: rgba(247,249,252,.88); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid var(--avc-line); box-shadow: 0 8px 30px rgba(15,30,51,.06); }
.avc-jpnav .jp-wrap { width: 100%; max-width: 1280px; margin-inline: auto; padding-inline: clamp(20px, 4vw, 48px); display: flex; align-items: center; gap: 34px; }
.avc-jpnav .jp-mark { display: flex; align-items: center; gap: 12px; font: 700 .8rem/1 Satoshi, sans-serif; letter-spacing: .3em; color: #F5F4F0; text-decoration: none; }
.avc-jpnav .jp-mark__i { width: 26px; height: 26px; color: var(--avc-gold); }
.avc-jpnav .jp-mark__w i { font-style: normal; color: var(--avc-gold); }
.avc-jpnav nav { display: flex; gap: 26px; margin-inline: auto; }
.avc-jpnav nav a { position: relative; font: 600 .75rem/1 Satoshi, sans-serif; letter-spacing: .18em; text-transform: uppercase; color: rgba(245,244,240,.8); text-decoration: none; padding-bottom: 6px; text-shadow: 0 1px 8px rgba(5,7,15,.6); }
.avc-jpnav nav a::after { content: ""; position: absolute; left: 0; bottom: 0; height: 1px; width: 0; background: var(--avc-gold); transition: width 250ms ease; }
.avc-jpnav nav a:hover { color: #F5F4F0; }
.avc-jpnav nav a:hover::after { width: 100%; }
.avc-jpnav nav a.is-here { color: var(--avc-gold); }
.avc-jpnav nav a.is-here::after { width: 100%; }
.avc-jpnav .jp-lang { display: inline-flex; align-items: center; gap: 8px; margin-right: 18px; font: 700 .72rem/1 Satoshi, sans-serif; letter-spacing: .16em; text-shadow: 0 1px 8px rgba(5,7,15,.6); }
.avc-jpnav .jp-lang b { color: #F5F4F0; }
.avc-jpnav .jp-lang i { font-style: normal; color: rgba(245,244,240,.35); }
.avc-jpnav .jp-lang a { color: rgba(245,244,240,.7); text-decoration: none; }
.avc-jpnav .jp-lang a:hover { color: var(--avc-gold); }
/* Shape and size come from the jet world (.jetp .jp-ghost, aeroinis-jet.css):
   this page carries that bar's markup but not its body class, so the values
   have to be repeated here. They were copied when the jet sheet still said
   2px; it says 999px now. Colour stays this page's own -- its header is
   transparent over a light hero, not a dark one. */
.avc-jpnav .jp-ghost { display: inline-flex; align-items: center; justify-content: center; min-height: 44px; padding: 0 22px; border: 1px solid var(--avc-gold); border-radius: 999px; background: rgba(5,7,15,.25); color: #F5F4F0; font: 700 .75rem/1 Satoshi, sans-serif; letter-spacing: .18em; text-transform: uppercase; text-decoration: none; }
.avc-jpnav .jp-ghost:hover { background: var(--avc-gold); color: #0B0F1E; }
.avc-jpnav nav .jp-switch { opacity: .6; }
.avc-jpnav nav .jp-switch:hover { opacity: 1; color: #E9C87F; }
.avc-jpnav.is-solid .jp-mark, .avc-jpnav.is-solid nav a, .avc-jpnav.is-solid .jp-lang b, .avc-jpnav.is-solid .jp-lang a, .avc-jpnav.is-solid .jp-ghost { color: var(--avc-ink); text-shadow: none; }
.avc-jpnav.is-solid nav a.is-here { color: var(--avc-gold-ink); }
.avc-jpnav.is-solid nav a:hover { color: var(--avc-gold-ink); }
.avc-jpnav.is-solid .jp-lang i { color: #b8c4d1; }
.avc-jpnav.is-solid .jp-ghost { background: transparent; border-color: var(--avc-ink); }
.avc-jpnav.is-solid .jp-ghost:hover { background: var(--avc-ink); color: #fff; }
@media (max-width: 900px) { .avc-jpnav nav { display: none; } }

/* ── the map: a picture at the top of the page, not the whole page ── */
.avc-full { padding: 0; }
.avc-maphold { position: relative; margin-top: 30px; border: 1px solid var(--avc-line); border-radius: 18px; overflow: hidden; background: #05070F; }
[data-avc-map] { height: min(66vh, 640px); }
.avc-maphold--hero { margin-top: 0; border-radius: 0; border-left: 0; border-right: 0; border-top: 0; }
.avc-maphold--hero [data-avc-map] { height: min(72vh, 720px); min-height: 460px; }
.avc-maphold.is-fs { border-radius: 0; border: 0; }
.avc-maphold.is-fs [data-avc-map] { height: 100vh; }
.avc-live { position: absolute; z-index: 5; top: 18px; left: 20px; display: flex; align-items: center; gap: 10px; pointer-events: none; }
.avc-live i { width: 9px; height: 9px; border-radius: 50%; background: #5FA97B; box-shadow: 0 0 8px rgba(95,169,123,.9); }
.avc-live span { font-size: 11px; font-weight: 700; letter-spacing: .2em; color: #F5F4F0; text-shadow: 0 1px 8px rgba(5,7,15,.9); }
.avc-layers { position: absolute; z-index: 5; top: 104px; right: 52px; display: flex; gap: 6px; }
.avc-maphold--hero .maplibregl-ctrl-top-right { top: 96px; }
.avc-layers button { border: 1px solid rgba(255,255,255,.35); border-radius: 999px; background: rgba(5,7,15,.55); color: rgba(245,244,240,.9); font: 700 11px/1 Satoshi, sans-serif; letter-spacing: .12em; padding: 9px 14px; cursor: pointer; backdrop-filter: blur(6px); }
.avc-layers button.is-on { background: var(--avc-gold); border-color: var(--avc-gold); color: #0B0F1E; }
.avc-feedline { position: absolute; z-index: 5; bottom: 0; left: 0; right: 0; display: flex; align-items: center; gap: 16px; padding: 10px 20px; background: rgba(5,7,15,.66); border-top: 1px solid rgba(245,244,240,.12); font-size: 11.5px; color: rgba(245,244,240,.75); }
.avc-feedline b { color: rgba(245,244,240,.9); }
[data-avc-status] { margin-left: auto; font-family: ui-monospace, Consolas, monospace; font-size: 11.5px; }
.avc-hub { display: grid; justify-items: center; gap: 4px; pointer-events: auto; cursor: pointer; padding: 5px 7px; }
.avc-hub svg { width: 16px; height: 16px; filter: drop-shadow(0 1px 3px rgba(0,0,0,.7)); }
.avc-hub b { font: 700 10px/1 ui-monospace, Consolas, monospace; letter-spacing: .06em; color: #F5F4F0;
  background: rgba(10,14,26,.78); border: 1px solid rgba(200,169,106,.45); border-radius: 6px; padding: 3px 6px; box-shadow: 0 1px 5px rgba(0,0,0,.5); }
.avc-hub:hover svg { filter: drop-shadow(0 0 7px rgba(200,169,106,1)); }
.avc-hub:hover b { border-color: var(--avc-gold); }
.avc-hub--main svg { width: 20px; height: 20px; }
.avc-hub--main b { color: var(--avc-gold); }
/* ── the altitude profile: a legend that is also a reading ──
   Four bars, one per band, each as tall as that band's share of the fleet
   right now, the count above, the name beneath. The colours are the ones the
   jets wear on the map. A band is a button: pressed out, its jets leave the
   map, so the reader can look at the cruise layer alone. */
.avc-alt { position: absolute; z-index: 5; left: 14px; bottom: 14px; width: 172px; background: rgba(7,12,24,.58); border: 0; border-radius: 12px; padding: 9px 11px 8px; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.avc-alt > b { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; font: 700 8px/1 Satoshi, sans-serif; letter-spacing: .18em; color: rgba(245,244,240,.55); margin-bottom: 7px; }
.avc-alt > b u { display: none; }
.avc-alt__b small, .avc-alt__hint { display: none; }
.avc-alt > b u { text-decoration: none; font: 500 8.5px/1 ui-monospace, Consolas, monospace; letter-spacing: 0; color: rgba(245,244,240,.42); text-transform: none; }
.avc-alt__bars { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; align-items: end; }
.avc-alt__b { display: grid; justify-items: center; gap: 3px; padding: 0; border: 0; background: none; color: inherit; cursor: pointer; font: inherit; -webkit-tap-highlight-color: transparent; }
.avc-alt__b em { font: 600 10.5px/1 ui-monospace, Consolas, monospace; font-style: normal; color: #F5F4F0; font-variant-numeric: tabular-nums; min-height: 10px; }
.avc-alt__b i { --h: 8%; display: block; width: 100%; height: 22px; border-radius: 3px; background: linear-gradient(to top, var(--c) var(--h), rgba(245,244,240,.07) var(--h)); transition: background .5s ease; }
.avc-alt__b span { font: 500 8.5px/1 ui-monospace, Consolas, monospace; color: rgba(245,244,240,.6); }
.avc-alt__b small { font: 500 8.5px/1 Satoshi, sans-serif; letter-spacing: .04em; color: rgba(245,244,240,.5); }
.avc-alt__b:hover em, .avc-alt__b:focus-visible em { color: var(--avc-gold, #C8A96A); }
.avc-alt__b:focus-visible { outline: 1px solid var(--avc-gold, #C8A96A); outline-offset: 3px; border-radius: 6px; }
.avc-alt__b[aria-pressed="false"] { opacity: .38; }
.avc-alt__b[aria-pressed="false"] i { background: linear-gradient(to top, rgba(245,244,240,.25) var(--h), rgba(245,244,240,.05) var(--h)); }
.avc-alt__hint { display: none; }
.avc-alt.is-filtered > b { color: var(--avc-gold, #C8A96A); }
.avc-fleetbox { display: none; position: absolute; z-index: 6; right: 16px; bottom: 16px; width: 290px; background: rgba(7,12,24,.82); border: 1px solid rgba(245,244,240,.16); border-radius: 14px; padding: 16px 18px; -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); color: #F5F4F0; }
.avc-maphold.is-fs .avc-fleetbox { display: block; }
.avc-fleetbox h3 { margin: 0 0 10px; font-size: 10.5px; font-weight: 700; letter-spacing: .2em; color: var(--avc-gold); }
.avc-fl { display: grid; grid-template-columns: 130px minmax(0,1fr) 30px; gap: 8px; align-items: center; padding: 3px 0; font-size: 11.5px; color: rgba(245,244,240,.75); }
.avc-fl span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.avc-fl i { display: block; height: 5px; border-radius: 2px; background: var(--avc-gold); opacity: .85; }
.avc-fl b { text-align: right; font-family: ui-monospace, Consolas, monospace; color: #F5F4F0; }
.avc-fl--sum { border-top: 1px solid rgba(245,244,240,.14); margin-top: 7px; padding-top: 8px; }

/* the popup over the map keeps its glass: it sits on imagery, not paper */
.maplibregl-popup-content { background: transparent !important; padding: 0 !important; box-shadow: none !important; border-radius: 16px; }
.maplibregl-popup-tip { display: none; }
.maplibregl-popup-close-button { z-index: 3; width: 26px; height: 26px; border-radius: 50%; background: rgba(10,14,26,.6); color: #F5F4F0; font-size: 15px; top: 8px; right: 8px; }
.maplibregl-popup-close-button:hover { background: rgba(200,169,106,.4); }
.avc-pop { width: 270px; background: rgba(13,17,30,.58); backdrop-filter: blur(28px) saturate(1.25); -webkit-backdrop-filter: blur(28px) saturate(1.25); border: 1px solid rgba(255,255,255,.16); border-radius: 20px; overflow: hidden; padding-bottom: 14px; box-shadow: 0 24px 60px rgba(0,0,0,.5), inset 0 1px 0 rgba(255,255,255,.12); }
.avc-pop b { display: block; font: 400 18px/1.2 Newsreader, Georgia, serif; letter-spacing: -.01em; color: #F5F4F0; padding: 0 16px; }
.avc-pop span { display: block; font: 700 10px/1.7 ui-monospace, Consolas, monospace; letter-spacing: .12em; color: var(--avc-gold); padding: 0 16px; margin-bottom: 8px; }
.avc-pop em { display: inline-block; width: 82px; font: 700 9.5px/2 Satoshi, sans-serif; font-style: normal; letter-spacing: .12em; color: rgba(245,244,240,.45); text-transform: uppercase; }
.avc-pop i { display: inline-block; font: 500 12.5px/2 ui-monospace, Consolas, monospace; font-style: normal; color: #F5F4F0; }
.avc-pop svg { display: block; width: 130px; height: auto; margin: 14px 16px 10px; }
.avc-pop img.avc-pfoto { display: block; width: 100%; height: 132px; object-fit: cover; margin-bottom: 8px; }
.avc-pop .avc-pcredit { display: block; font-size: 8.5px; color: rgba(245,244,240,.4); text-decoration: none; padding: 0 16px; margin: -4px 0 8px; }
.avc-pop .avc-pcredit:hover { color: var(--avc-gold); }
.avc-phold { position: relative; height: 132px; overflow: hidden; margin-bottom: 6px; }
.avc-phold img.avc-pfoto { position: absolute; inset: 0; height: 100%; margin: 0; opacity: 0; transition: opacity .35s; }
.avc-phold img.avc-pfoto.is-on { opacity: 1; }
.avc-phold .avc-pcredit--over { position: absolute; right: 8px; bottom: 6px; background: rgba(5,7,15,.6); border-radius: 4px; padding: 2px 6px; margin: 0; font-size: 8.5px; color: rgba(245,244,240,.75); opacity: 0; transition: opacity .35s; }
.avc-pdots { display: flex; justify-content: center; gap: 7px; margin: 0 0 8px; }
.avc-pdots i { width: 7px; height: 7px; border-radius: 50%; background: rgba(245,244,240,.28); cursor: pointer; }
.avc-pdots i.is-on { background: var(--avc-gold); }
.avc-pop .avc-pnote { display: block; font-size: 11px; line-height: 1.5; color: rgba(245,244,240,.6); text-decoration: none; padding: 0 16px; margin: 2px 0 8px; }
/* ── the jet card: picture, name, a grid of figures — small, and it moves
   with its jet ── */
.avc-pop--jet { width: 244px; }
.avc-pop--jet .avc-pop__media { position: relative; min-height: 6px; }
.avc-pop--jet .avc-pop__media img.avc-pfoto { margin: 0; height: 96px; }
.avc-pop--jet .avc-pop__media svg { width: 104px; margin: 12px auto 4px; }
.avc-pop--jet .avc-pop__media .avc-pcredit { margin: 0; padding: 4px 12px 0; font-size: 7.5px; }
.avc-pop--jet .avc-pop__head { padding: 8px 12px 7px; }
.avc-pop--jet .avc-pop__head b { padding: 0; font-size: 16px; }
.avc-pop--jet .avc-pop__head span { padding: 0; margin: 2px 0 0; font-size: 9px; }
.avc-pop__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: rgba(255,255,255,.09); border-top: 1px solid rgba(255,255,255,.1); }
.avc-pop__grid > div { background: rgba(13,17,30,.42); padding: 6px 9px 7px; min-width: 0; }
.avc-pop__grid > div.is-wide { grid-column: span 2; }
/* the jet card's cells flow: three to a row, and a short last row stretches
   to the edge, so no slot is ever left showing the seam */
.avc-pop--jet .avc-pop__grid { display: flex; flex-wrap: wrap; }
.avc-pop--jet .avc-pop__grid > div { flex: 1 1 calc(33.333% - 1px); box-sizing: border-box; }
.avc-pop--jet .avc-pop__grid > div.is-wide { flex-basis: calc(66.666% - 1px); }
.avc-pop--jet .avc-pop__grid i, .avc-pop--jet .avc-pop__grid small { white-space: normal; overflow: visible; text-overflow: clip; overflow-wrap: anywhere; }
.avc-pop__grid em { display: block; width: auto; font: 700 7.5px/1 Satoshi, sans-serif; font-style: normal; letter-spacing: .14em; text-transform: uppercase; color: rgba(245,244,240,.45); margin-bottom: 4px; }
.avc-pop__grid i { display: block; font: 600 12px/1.15 ui-monospace, Consolas, monospace; font-style: normal; color: #F5F4F0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.avc-pop__grid small { display: block; font: 500 9px/1.3 ui-monospace, Consolas, monospace; color: rgba(245,244,240,.55); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.avc-pop__id { padding: 7px 12px 9px; border-top: 1px solid rgba(200,169,106,.4); background: rgba(200,169,106,.1); }
.avc-pop__id[hidden] { display: none; }
.avc-pop__id em { display: block; width: auto; font: 700 7.5px/1 Satoshi, sans-serif; font-style: normal; letter-spacing: .18em; color: var(--avc-gold); margin-bottom: 4px; }
.avc-pop__id b { padding: 0; font: 600 14px/1.2 ui-monospace, Consolas, monospace; letter-spacing: .06em; color: #F5F4F0; }
.avc-pop__id small { display: block; font: 500 10px/1.4 Satoshi, sans-serif; color: rgba(245,244,240,.65); margin-top: 2px; }

/* ── the ticker under the map ── */
.avc-tickwrap { overflow: hidden; border-block: 1px solid var(--avc-line); background: #fff; padding: 10px 0; margin-top: 22px; }
.avc-tickwrap--in { margin-top: 0; }
[data-avc-ticker] { display: inline-flex; gap: 56px; white-space: nowrap; font: 500 11.5px/1 ui-monospace, Consolas, monospace; color: var(--avc-mut); animation: avc-tick 46s linear infinite; }
[data-avc-ticker] b { color: var(--avc-gold-ink); }
@keyframes avc-tick { from { transform: translateX(0); } to { transform: translateX(-50%); } }

/* ── the intro: the eyebrow, the sentence, three numbers ── */
.avc-hero { padding: 128px 0 0; }
.avc-intro { display: flex; justify-content: space-between; align-items: flex-end; gap: 32px; flex-wrap: wrap; padding-top: 40px; }
.avc-intro .avc-eyebrow { display: flex; align-items: center; gap: 10px; }
.avc-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .26em; color: var(--avc-gold-ink); }
.avc-stamp { margin-left: 14px; font: 500 11px/1 ui-monospace, Consolas, monospace; letter-spacing: 0; color: var(--avc-mut); text-transform: none; }
.avc-h1 { margin: 14px 0 0; font: 400 clamp(34px, 4.6vw, 58px)/1.05 Newsreader, Georgia, serif; letter-spacing: -.02em; max-width: 21ch; color: var(--avc-ink); }
.avc-intro .avc-h1 { font-size: clamp(26px, 2.8vw, 38px); margin: 10px 0 0; }
.avc-h1 em { color: var(--avc-mut); }
.avc-track { margin: 10px 0 0; max-width: 62ch; font-size: 13.5px; line-height: 1.6; color: var(--avc-mut); }
.avc-track b { color: var(--avc-ink); font-weight: 600; }
.avc-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--avc-live); box-shadow: 0 0 8px rgba(47,143,91,.6); animation: avcPulse 2s ease-in-out infinite; }
@keyframes avcPulse { 0%, 100% { box-shadow: 0 0 6px rgba(47,143,91,.5); } 50% { box-shadow: 0 0 14px rgba(47,143,91,.9); } }
.avc-chips { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }
.avc-intro .avc-chips { margin-top: 0; margin-bottom: 6px; }
.avc-chip-st { display: inline-flex; align-items: center; gap: 9px; background: #fff; border: 1px solid var(--avc-line); border-radius: 999px; padding: 8px 15px; font: 700 9.5px/1 Satoshi, sans-serif; letter-spacing: .16em; color: var(--avc-mut); box-shadow: 0 2px 10px rgba(15,30,51,.04); }
.avc-chip-st b { font: 600 17px/1 ui-monospace, Consolas, monospace; color: var(--avc-ink); letter-spacing: 0; }
.avc-chip-st.is-gold b { color: var(--avc-gold-ink); }
.avc-stats { display: flex; gap: 40px; margin-top: 26px; flex-wrap: wrap; }
.avc-stats b { display: block; font: 600 32px/1 ui-monospace, Consolas, monospace; color: var(--avc-ink); }
.avc-stats small { display: block; margin-top: 5px; font-size: 10px; font-weight: 700; letter-spacing: .18em; color: var(--avc-mut); }
.avc-stats .is-gold b { color: var(--avc-gold-ink); }

/* ── cards and the two-column block ── */
.avc-grid2 { display: grid; grid-template-columns: minmax(0,1.5fr) minmax(0,1fr); gap: 22px; margin-top: 26px; }
.avc-card { background: var(--avc-paper); border: 1px solid var(--avc-line); border-radius: 16px; padding: 22px 26px; box-shadow: 0 6px 24px rgba(15,30,51,.05); }
.avc-card--gold { background: #fbf7ef; border-color: #e9dcc0; }
.avc-card h3 { margin: 0; font-size: 11px; font-weight: 700; letter-spacing: .2em; color: var(--avc-ink); }
.avc-card--gold h3 { color: var(--avc-gold-ink); }
.avc-src { display: flex; flex-direction: column; gap: 11px; margin-top: 14px; font-size: 12.5px; line-height: 1.55; color: var(--avc-mut); }
.avc-src b { color: var(--avc-ink); }
.avc-neg { margin-top: 13px; padding-top: 12px; border-top: 1px solid #e9dcc0; font-size: 12px; line-height: 1.55; color: var(--avc-mut); }

/* ── the calendar ── */
.avc-season { display: flex; align-items: baseline; gap: 16px; margin-top: 54px; }
.avc-season h2 { margin: 0; font: 400 32px/1.1 Newsreader, Georgia, serif; letter-spacing: -.01em; color: var(--avc-ink); }
.avc-calsub { font-size: 13px; color: var(--avc-mut); }
.avc-calwrap { margin-top: 24px; background: var(--avc-paper); border: 1px solid var(--avc-line); border-radius: 18px; padding: 24px 26px; box-shadow: 0 10px 30px rgba(15,30,51,.05); }
.avc-calhead { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.avc-calhead b { font: 400 24px/1 Newsreader, Georgia, serif; letter-spacing: -.01em; min-width: 210px; color: var(--avc-ink); }
.avc-calhead b u { text-decoration: none; font: 500 12px/1 ui-monospace, Consolas, monospace; color: var(--avc-mut); }
.avc-calhead button { border: 1px solid var(--avc-line); border-radius: 10px; background: #fff; color: var(--avc-ink); font: 600 17px/1 Satoshi, sans-serif; width: 38px; height: 38px; cursor: pointer; }
.avc-calhead button:hover { border-color: var(--avc-ink); }
.avc-caltoday { width: auto !important; padding: 0 16px; font-size: 12px !important; letter-spacing: .08em; margin-left: auto; }
.avc-nexthdr { margin: 0 0 8px; font: 700 9.5px/1 Satoshi, sans-serif; letter-spacing: .16em; color: var(--avc-mut); }
.avc-next3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 10px; margin-bottom: 18px; }
.avc-next3 button { display: flex; align-items: center; gap: 11px; text-align: left; border: 1px solid var(--avc-line); border-radius: 12px; background: #f7f9fc; padding: 11px 14px; cursor: pointer; color: var(--avc-ink); }
.avc-next3 button:hover { border-color: var(--avc-gold); background: #fbf7ef; }
.avc-next3 button i { flex: none; width: 9px; height: 9px; border-radius: 50%; }
.avc-next3 button span { min-width: 0; }
.avc-next3 button b { display: block; font: 600 12.5px/1.3 Satoshi, sans-serif; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.avc-next3 button em { display: block; font: 500 10.5px/1.5 ui-monospace, Consolas, monospace; font-style: normal; color: var(--avc-mut); }
.avc-next3 button s { margin-left: auto; text-decoration: none; font: 700 11px/1 ui-monospace, Consolas, monospace; color: var(--avc-live); }
.avc-calfilt { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.avc-calfilt button { display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--avc-line); border-radius: 999px; background: #fff; color: var(--avc-mut); font: 700 9.5px/1 Satoshi, sans-serif; letter-spacing: .12em; padding: 7px 13px; cursor: pointer; }
.avc-calfilt button i { width: 9px; height: 9px; border-radius: 50%; opacity: .3; }
.avc-calfilt button.is-on { color: var(--avc-ink); border-color: #b8c4d1; }
.avc-calfilt button.is-on i { opacity: 1; }
.avc-calgrid { display: grid; grid-template-columns: repeat(7, minmax(0,1fr)); gap: 6px; }
.avc-cd { position: relative; min-height: 88px; border-radius: 10px; background: #f3f6fa; padding: 8px 9px; font: 600 12.5px/1 ui-monospace, Consolas, monospace; color: var(--avc-ink-2); }
.avc-cd--head { min-height: 0; background: none; padding: 4px 9px; font: 700 10px/1 Satoshi, sans-serif; letter-spacing: .14em; color: var(--avc-mut); }
.avc-cd--we { background: #edf1f6; }
.avc-cd--out { opacity: .38; }
.avc-cd--today { box-shadow: inset 0 0 0 1.5px var(--avc-ink); background: #fff; }
.avc-cd--ev { background: #fbf7ef; cursor: pointer; }
.avc-cd--ev:hover { background: #f4ead6; }
.avc-cd--past.avc-cd--ev { background: #eef1f5; }
.avc-cd i { position: absolute; left: 9px; right: 9px; bottom: 8px; height: 4px; border-radius: 2px; background: var(--avc-gold); }
.avc-cd--past i { background: #c4ccd6; }
.avc-ce { display: block; margin-top: 3px; text-decoration: none; font: 600 9.5px/1.3 Satoshi, sans-serif; letter-spacing: .01em; color: #fff; background: var(--avc-ink-2); border-radius: 4px; padding: 3px 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: pointer; }
.avc-ce:hover { filter: brightness(1.15); }
.avc-ce.is-past { background: #c4ccd6; color: var(--avc-ink); }
.avc-ce--more { background: none; color: var(--avc-gold-ink); padding: 2px 6px 0; }
.avc-calev { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 18px; }
.avc-calev button { display: inline-flex; align-items: center; gap: 9px; border: 1px solid #e9dcc0; border-radius: 999px; background: #fbf7ef; color: var(--avc-ink); font: 600 12px/1 Satoshi, sans-serif; padding: 9px 15px; cursor: pointer; }
.avc-calev button:hover { background: #f4ead6; }
.avc-calev button b { width: 9px; height: 9px; border-radius: 50%; }
.avc-calev button em { font: 500 11px/1 ui-monospace, Consolas, monospace; font-style: normal; color: var(--avc-gold-ink); }
.avc-calev button.is-past { opacity: .55; border-color: var(--avc-line); background: #f3f6fa; }

/* the event modal, on paper */
.avc-evm { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; background: rgba(15,30,51,.45); -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.avc-evm__card { position: relative; width: min(400px, calc(100vw - 40px)); background: #fff; border: 1px solid var(--avc-line); border-radius: 18px; padding: 26px 28px 24px; box-shadow: 0 30px 80px rgba(15,30,51,.25); color: var(--avc-ink); }
.avc-evm__x { position: absolute; top: 12px; right: 14px; border: 0; background: none; color: var(--avc-mut); font-size: 22px; cursor: pointer; }
.avc-evm__x:hover { color: var(--avc-ink); }
.avc-evm__st { font: 700 11px/1 ui-monospace, Consolas, monospace; letter-spacing: .1em; color: var(--avc-live); }
.avc-evm__st.is-past { color: var(--avc-mut); }
.avc-evm__cat { margin-left: 12px; font: 700 10px/1 Satoshi, sans-serif; letter-spacing: .14em; }
.avc-evm__card h3 { margin: 10px 0 6px; font: 400 26px/1.15 Newsreader, Georgia, serif; letter-spacing: -.01em; color: var(--avc-ink); }
.avc-evm__d { margin: 0 0 20px; font: 500 12.5px/1.5 ui-monospace, Consolas, monospace; color: var(--avc-gold-ink); }
.avc-evm__a { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.avc-evm__go { display: inline-flex; align-items: center; background: var(--avc-ink); color: #fff !important; border-radius: 999px; padding: 11px 20px; font: 700 11px/1 Satoshi, sans-serif; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; }
.avc-evm__go:hover { background: var(--avc-ink-2); }
.avc-evm__site { display: inline-flex; align-items: center; border: 1px solid var(--avc-gold); color: var(--avc-gold-ink); border-radius: 999px; padding: 10px 18px; font: 700 11px/1 Satoshi, sans-serif; letter-spacing: .12em; text-transform: uppercase; text-decoration: none; }
.avc-evm__site:hover { background: var(--avc-gold-soft); }
.avc-evm__map { border: 0; background: none; color: var(--avc-mut); font: 600 11.5px/1 Satoshi, sans-serif; letter-spacing: .04em; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.avc-evm__map:hover { color: var(--avc-ink); }

/* ── the season ahead ── */
.avc-cards { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; margin-top: 26px; }
.avc-ev { background: var(--avc-paper); border: 1px solid var(--avc-line); border-radius: 16px; padding: 22px 26px; display: flex; flex-direction: column; gap: 11px; box-shadow: 0 6px 24px rgba(15,30,51,.05); transition: transform .2s, box-shadow .2s; }
.avc-ev:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(15,30,51,.09); }
.avc-ev--fo { border-color: #e9dcc0; }
.avc-ev img { height: 170px; width: 100%; object-fit: cover; border-radius: 10px; display: block; }
/* the picture: a curated frame for the few events that have one, the city's
   own photograph for the rest (the same live lookup the board uses), and a
   plate in the category's colour while the photograph is on its way */
.avc-ev__media { position: relative; height: 170px; border-radius: 10px; overflow: hidden; background: #e9edf2; }
.avc-ev__media img { position: absolute; inset: 0; height: 100%; opacity: 0; transition: opacity .45s ease; }
.avc-ev__media.is-photo img { opacity: 1; }
.avc-ev__plate { position: absolute; inset: 0; display: grid; place-items: center; background: linear-gradient(135deg, color-mix(in srgb, var(--c) 78%, #0b1220), color-mix(in srgb, var(--c) 30%, #0b1220)); }
.avc-ev__plate b { font: 500 42px/1 Newsreader, Georgia, serif; letter-spacing: .04em; color: rgba(255,255,255,.92); }
.avc-ev__plate small { position: absolute; left: 14px; bottom: 12px; font: 700 9px/1 Satoshi, sans-serif; letter-spacing: .2em; color: rgba(255,255,255,.7); }
.avc-ev__credit { position: absolute; right: 8px; bottom: 6px; font: 500 8.5px/1 ui-monospace, Consolas, monospace; color: rgba(255,255,255,.7); background: rgba(5,7,15,.45); padding: 3px 6px; border-radius: 4px; text-decoration: none; }
/* two facts under the place line: what a one-way from Istanbul tends to
   cost for this distance, and how many empty legs the board holds to the
   event's airport right now. The second is a link into the board. */
.avc-ev__facts { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 2px; padding-top: 12px; border-top: 1px solid var(--avc-line); }
.avc-ev__facts > * { display: block; min-width: 0; text-decoration: none; color: inherit; }
.avc-ev__facts small { display: block; font: 700 8.5px/1 Satoshi, sans-serif; letter-spacing: .18em; color: var(--avc-mut); margin-bottom: 5px; }
.avc-ev__facts b { display: block; font: 600 15px/1.15 ui-monospace, Consolas, monospace; color: var(--avc-ink); font-variant-numeric: tabular-nums; }
.avc-ev__facts em { display: block; margin-top: 3px; font: 500 10.5px/1.35 Satoshi, sans-serif; font-style: normal; color: var(--avc-mut); }
.avc-ev__facts a b { color: var(--avc-gold-ink); }
.avc-ev__facts a:hover b { text-decoration: underline; text-underline-offset: 3px; }
.avc-ev__facts a.is-none b { color: var(--avc-mut); font-weight: 500; }
.avc-ev h4 button { all: unset; cursor: pointer; }
.avc-ev h4 button:hover { color: var(--avc-gold-ink); }
.avc-ev h4 button:focus-visible { outline: 1px solid var(--avc-gold); outline-offset: 3px; border-radius: 4px; }
.avc-ev p code + code::before { content: " · "; color: var(--avc-mut); }
/* what comes after the cards: one line per event, the way the strip above
   the month does it */
.avc-later { margin-top: 18px; }
.avc-later h3 { margin: 0 0 10px; font: 700 10px/1 Satoshi, sans-serif; letter-spacing: .22em; color: var(--avc-mut); }
.avc-later__list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; }
.avc-later__list button { all: unset; display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 12px; border: 1px solid var(--avc-line); border-radius: 10px; background: #fff; cursor: pointer; }
.avc-later__list button:hover { border-color: var(--avc-gold); background: #fbf7ef; }
.avc-later__list i { width: 8px; height: 8px; border-radius: 50%; }
.avc-later__list b { display: block; font: 600 13px/1.3 Satoshi, sans-serif; color: var(--avc-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.avc-later__list em { display: block; font: 500 10.5px/1.4 ui-monospace, Consolas, monospace; font-style: normal; color: var(--avc-mut); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.avc-later__list s { text-decoration: none; font: 700 10.5px/1 ui-monospace, Consolas, monospace; color: var(--avc-gold-ink); }
.avc-ev-top { display: flex; align-items: center; gap: 10px; font: 500 12px/1 ui-monospace, Consolas, monospace; color: var(--avc-gold-ink); flex-wrap: wrap; }
.avc-chip { border: 1px solid var(--avc-line); border-radius: 999px; padding: 3px 10px; font: 700 9.5px/1.4 Satoshi, sans-serif; letter-spacing: .14em; color: var(--avc-mut); }
.avc-ev--fo .avc-chip { background: var(--avc-gold-soft); border-color: #e9dcc0; color: var(--avc-gold-ink); }
.avc-ok { display: inline-flex; align-items: center; gap: 5px; font: 700 10.5px/1 Satoshi, sans-serif; color: var(--avc-live); }
.avc-ok svg { stroke: var(--avc-live); }
.avc-tbc { font: 700 10.5px/1 Satoshi, sans-serif; color: var(--avc-mut); }
.avc-count { font: 700 11px/1 ui-monospace, Consolas, monospace; color: var(--avc-mut); }
.avc-count.is-now { color: var(--avc-live); }
.avc-evlive { margin: 0; font: 600 11.5px/1.4 ui-monospace, Consolas, monospace; color: var(--avc-live); }
.avc-ev h4 { margin: 0; font: 400 24px/1.2 Newsreader, Georgia, serif; letter-spacing: -.01em; color: var(--avc-ink); }
.avc-ev p { margin: 0; font-size: 13px; color: var(--avc-mut); }
.avc-ev p code { font-family: ui-monospace, Consolas, monospace; font-size: 12px; color: var(--avc-ink-2); }
.avc-go { margin-top: auto; font: 700 11.5px/1 Satoshi, sans-serif; letter-spacing: .14em; color: var(--avc-gold-ink); }
.avc-ev--wide { grid-column: 1 / -1; flex-direction: row; align-items: center; gap: 30px; background: linear-gradient(135deg, #fbf5e8, #fff); border-color: #e9dcc0; }
.avc-ev--wide .avc-when { font: 400 26px/1.15 Newsreader, Georgia, serif; white-space: nowrap; color: var(--avc-ink); }
.avc-ev--wide > div:nth-child(2) { flex: 1; }
.avc-ev--wide .avc-chip { background: var(--avc-gold-soft) !important; border-color: #e9dcc0 !important; color: var(--avc-gold-ink) !important; }
.avc-ev--wide .avc-count { color: var(--avc-gold-ink) !important; }
.avc-ev.is-flash { box-shadow: 0 0 0 2px var(--avc-gold); transition: box-shadow .3s; }

/* ── the fine print and the close ── */
.avc-fine { padding-top: 34px; }
.avc-fine p { margin: 0 0 8px; font-size: 11.5px; line-height: 1.55; color: var(--avc-mut); max-width: 100ch; }
.avc-fine b { color: var(--avc-ink-2); }
.avc-cta { margin-top: 60px; border-top: 1px solid var(--avc-line); padding: 52px 0; display: flex; align-items: center; gap: 48px; flex-wrap: wrap; }
.avc-cta h2 { margin: 0; font: 400 34px/1.15 Newsreader, Georgia, serif; letter-spacing: -.02em; color: var(--avc-ink); }
.avc-cta p { margin: 12px 0 0; font-size: 14.5px; line-height: 1.6; color: var(--avc-mut); max-width: 56ch; }
.avc .avc-btn { display: inline-block; background: var(--avc-ink); color: #fff; border-radius: 999px; padding: 15px 30px; font: 700 13px/1 Satoshi, sans-serif; letter-spacing: .06em; }
.avc .avc-btn:hover { color: #fff; background: var(--avc-ink-2); }
.avc .avc-btn--ghost { background: none; border: 1px solid var(--avc-ink); color: var(--avc-ink); }
.avc .avc-btn--ghost:hover { background: var(--avc-ink); color: #fff; }

@media (max-width: 900px) {
  .avc-grid2, .avc-cards, .avc-later__list { grid-template-columns: 1fr; }
  .avc-ev--wide { flex-direction: column; align-items: flex-start; }
  [data-avc-map] { height: 62vh; }
  .avc-layers { right: 14px; top: 60px; }
}

/* telefon gecidi: tek elle kullanilan harita */
@media (max-width: 640px) {
  html, body { overflow-x: hidden; }
  .avc-jpnav { height: 62px; }
  .avc-jpnav .jp-wrap { gap: 10px; padding-inline: 12px; }
  .avc-jpnav .jp-mark__w { display: none; }
  .avc-jpnav .jp-ghost { padding: 8px 11px; font-size: 10px; letter-spacing: .1em; white-space: nowrap; }
  .avc-layers { left: 10px; right: 54px; top: 70px; flex-wrap: wrap; justify-content: flex-start; gap: 5px; }
  .avc-layers button { padding: 7px 10px; font-size: 10px; letter-spacing: .05em; }
  [data-avc-map], .avc-maphold--hero [data-avc-map] { height: 62svh; min-height: 400px; }
  .avc-alt { width: 164px; }
  .maplibregl-popup { max-width: min(320px, 88vw) !important; }
  .avc-pop { width: min(300px, 84vw); }
  .avc-h1 { font-size: clamp(1.5rem, 7.4vw, 2rem); }
  .avc-shell { padding-inline: 14px; }
  .avc-calgrid { gap: 4px; }
  .avc-cd { min-height: 60px; padding: 6px; font-size: 11px; }
  .avc-ce { display: none; }
}

/* ── the phone menu: below 900px the bar hid its links and offered nothing
   in their place. The button is built by the page module from the links
   already in the bar; the panel slides under it. ── */
.avc .jp-burger { display: none; flex-direction: column; justify-content: center; gap: 4px; width: 40px; height: 40px; padding: 10px 8px; margin-inline-start: -8px; background: none; border: 0; cursor: pointer; }
.avc .jp-burger i { display: block; height: 1.5px; background: #F5F4F0; border-radius: 2px; transition: transform .25s, opacity .2s; }
.avc .avc-jpnav.is-solid .jp-burger i { background: var(--avc-ink); }
.avc .jp-burger.is-on i:nth-child(1) { transform: translateY(5.5px) rotate(45deg); }
.avc .jp-burger.is-on i:nth-child(2) { opacity: 0; }
.avc .jp-burger.is-on i:nth-child(3) { transform: translateY(-5.5px) rotate(-45deg); }
.avc .jp-mobnav { position: absolute; top: 100%; left: 0; right: 0; display: flex; flex-direction: column; padding: 6px 20px 14px; background: rgba(247,249,252,.97); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid var(--avc-line); box-shadow: 0 18px 40px rgba(15,30,51,.12); }
.avc .jp-mobnav a { padding: 14px 2px; border-bottom: 1px solid var(--avc-line); font: 600 12px/1 Satoshi, sans-serif; letter-spacing: .16em; text-transform: uppercase; color: var(--avc-ink); text-decoration: none; }
.avc .jp-mobnav a.is-here { color: var(--avc-gold-ink); }
.avc .jp-mobnav a:last-child { border-bottom: 0; color: var(--avc-gold-ink); }
@media (max-width: 900px) { .avc .jp-burger { display: flex; } }
@media (min-width: 901px) { .avc .jp-mobnav { display: none; } }

/* ── the phone, second pass: what the first one missed ──
   The layer buttons wrapped into two rows across the map; they are one row
   that scrolls now, with the zoom control moved under them. The altitude
   legend sat on the map credit; it sits above it. The month head put the
   title, the arrows and Today on one line and lost Today off the edge; the
   title takes its own line. */
@media (max-width: 640px) {
  .avc-layers { top: 72px; left: 10px; right: 10px; flex-wrap: nowrap; overflow-x: auto; gap: 6px; padding-bottom: 2px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .avc-layers::-webkit-scrollbar { display: none; }
  .avc-layers button { flex: 0 0 auto; }
  .avc-maphold--hero .maplibregl-ctrl-top-right { top: 118px; }
  .avc-alt { left: 10px; bottom: 30px; width: 156px; }
  /* the map credit: MapLibre reopens its compact box whenever a source's
     attribution changes, so a class removed once does not hold. On a phone
     the box stays folded to its "i" by style, and opens while the button has
     focus or the finger is on it. */
  .avc-maphold--hero .maplibregl-ctrl-attrib.maplibregl-compact-show:not(:focus-within):not(:hover) { padding: 2px 24px 2px 0; min-height: 20px; }
  .avc-maphold--hero .maplibregl-ctrl-attrib.maplibregl-compact-show:not(:focus-within):not(:hover) .maplibregl-ctrl-attrib-inner { display: none; }
  .avc-season { flex-wrap: wrap; gap: 4px 16px; }
  .avc-ev__facts b { font-size: 13px; }
  .avc-season h2 { font-size: 27px; }
  .avc-alt__b i { height: 18px; }
  .avc-calhead { flex-wrap: wrap; gap: 10px; }
  .avc-calhead b { flex: 1 1 100%; order: -1; min-width: 0; font-size: 22px; }
  .avc-calhead button { width: 36px; height: 36px; }
  .avc-caltoday { margin-left: auto; padding: 0 14px; }
  .avc-next3 .avc-ev, .avc-next3 > * { min-width: 0; }
  .avc-intro { padding-top: 28px; gap: 18px; }
  .avc-chip-st { padding: 7px 12px; }
  .avc-chip-st b { font-size: 15px; }
}
.avc-chip-st [data-avc-next-label] { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* touch-type:start — generated by tools/touch-type.mjs, do not edit by hand */
/* iOS zooms the page when a focused control's text is under 16px and does not
   zoom back. max(16px, 1em) raises only what is below the floor: a control
   designed larger keeps its size, and nothing has to be listed by name — which
   matters, because the worst offenders inherit their size rather than being
   given one. Checkboxes and radios are left alone; they have no text. */
@media (pointer: coarse) {
  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea { font-size: max(16px, 1em) !important; }
}
/* touch-type:end */
