
/* ═══ TOKENS ═══ change here, never in the components ═══════════════ */
:root{
  /* colour */
  /* ── Romanian tricolour: the three source colours ── */
  --c-blue:#002B7F; --c-yellow:#FCD116; --c-red:#CE1126;
  /* column tints for data tables — faint, so the type stays the loudest thing */
  --tint-1:rgba(237,161,0,.10); --tint-2:rgba(42,120,214,.09); --tint-3:rgba(235,104,52,.10);
  --c-wind:#1B6FC9;         /* wind barb — a genuine blue, kept distinct from the darker rain-blue on the same card */
  /* ── surfaces (everything below is derived from the three above) ── */
  --c-paper:#FDF8E7;        /* page — yellow washed out to paper */
  --c-surface:#FFFFFF;      /* cards and fields */
  --c-band:var(--c-blue);   /* nav bar, footer, offer blocks */
  --c-outside:#E8DFBC;      /* margins beyond the width cap */
  /* ── ink ── */
  --c-text:#0B1B3B;         /* body copy — blue driven down to near-black */
  --c-on-band:#FFFFFF; --c-on-band-mute:#C3CEE8;
  --c-mute:#5A6076;
  --c-line:#D9CFA6;         /* hairlines — yellow driven down */
  --c-line-strong:var(--c-blue);
  --c-bar:var(--c-band);             /* nav bar surface */
  --c-on-bar:var(--c-on-band);       /* anything drawn on the nav bar */
  --c-bar-line:rgba(246,241,228,.35);/* hairlines on the bar */
  --c-bar-line-soft:rgba(246,241,228,.12);/* row rules inside the menu */
  --c-pill:var(--c-surface);         /* the wordmark pill behind Craiova */
  /* tints and hairlines drawn ON a dark band — rule 8, nothing literal outside :root */
  --c-on-band-tint:rgba(255,255,255,.06);
  --c-on-band-line:rgba(255,255,255,.25);
  --c-on-band-line-strong:rgba(255,255,255,.4);
  --c-on-band-line-hard:rgba(255,255,255,.5);
  --c-row-hit:rgba(252,209,22,.35);
  --ar-line:2; --ar-line-bold:3; --ar-dash:18 14; --ar-fade:.55;  /* airport-road diagram */
  --vh-px:1px; --dim:.55;  /* disabled control */  /* visually-hidden text box */
  --c-future:#E8922E; --c-future-soft:rgba(232,146,46,.35);
  --c-alert-tint:rgba(206,17,38,.07);   /* today row in the seasons list */  /* radar forecast frames */
  --c-day-0:rgba(0,43,127,.05); --c-day-1:rgba(252,209,22,.20); --c-day-2:rgba(0,43,127,.12);  /* journey day bands */  /* highlighted route-table row */
  /* ── roles ── */
  --c-accent:var(--c-blue); --c-action:var(--c-yellow); --c-alert:var(--c-red);
  --c-ok:#0F7B3F;           /* confirmation green — only shown for something that actually happened */
  --c-field:#FFFFFF;
  /* type */
  --f-display:'Zilla Slab',Georgia,serif; --f-body:'Karla',system-ui,sans-serif; --f-mono:'IBM Plex Mono',monospace;
  --t-2xs:10px; --t-xs:11px; --t-sm:12px; --t-base:15px; --t-md:17px; --t-lg:20px; --t-xl:clamp(24px,6vw,34px); --t-hero:clamp(28px,7vw,50px);
  --lh-tight:1.05; --lh-body:1.5; --lh-foot:1.9; --ls-mono:.1em; --ls-chip:.06em;
  /* space */
  --s-1:4px; --s-2:7px; --s-3:11px; --s-4:14px; --s-5:18px; --s-6:24px; --s-7:32px; --s-8:44px;
  /* shape + motion */
  --c-ink:var(--c-band); --c-gold:var(--c-yellow); --c-rust:var(--c-red); --c-on-ink:var(--c-on-band-mute);
  --c-flag-blue:var(--c-blue); --c-flag-yellow:var(--c-yellow); --c-flag-red:var(--c-red);
  /* Flag red on the blue band is 2.26:1 — fails even the large-text bar.
     Same hue lifted until it passes AA (5.11:1), for use on --c-band only. */
  --c-flag-red-on-band:#FF7B87;
  /* The flag yellow is 1.38:1 on paper — unreadable as text. This is the same
     hue taken down until it passes AA (5.88:1), for flag-sequence wording. */
  --c-flag-yellow-ink:#7A5C00;
  /* the value scale used by the menu bars and their legend — one definition,
     read by the CSS gradient and by menuBar() alike */
  --val-hue-best:140; --val-hue-worst:2; --val-sat:58%; --val-light:42%;
  --r-sm:3px; --bar-h:6px; --bar-clear:66px; /* sticky top bar (54px) + air: jump targets land below it */ --rail-h:8px; --export-h:130px;
  --r:0px; --bw:1px; --bw-heavy:2px; --dur:.15s; --dur-draw:1.6s; --band-o:.45;
  /* widths — same rule as orijent22: everything capped and centred, colour blocks stop at the cap */
  --max-width:960px;        /* the column, phones to laptops */
  --max-width-wide:1200px;  /* the column once the screen is truly wide (>=1280px) */
  --w-text:62ch; --w-sub:50ch; --c-outside:#E9E4D6;
  --gutter:16px;            /* side margin on phones */
  --qr-w:200px;             /* QR blocks — scan size on a phone */
  --qr-sm:132px;            /* QR blocks in a row of channels */
  --card-min:240px;         /* grid floor — section cards */
  --gallery-min:240px;      /* grid floor — gallery */
  --entrygal-min:200px;     /* grid floor — photos inside an entry */
  --tile-min:200px;         /* grid floor — season + partner tiles */
  --pinmap-h:380px;          /* the shop map on list pages */
  --map-h:260px;            /* inline map height */
  --wx-daymin:58px;         /* minimum width of one day in the front-page forecast strip */
  --map-span:0.004;         /* map half-height in degrees, read by JS */
  --shot-ratio:16/9;        /* page + card photo ratio */
  --gshot-ratio:4/3;        /* gallery thumbnail ratio */
  --entryshot-w:520px;      /* widest an in-card photo goes */
  --hint:26px;              /* zoom hint badge — lower right of a cropped photo */
  --hint-glyph:60%;         /* glyph size inside that badge */
  --crop-tol:0.02;          /* how far a rendered box may differ from the file before it counts as cropped — read by JS */
  --z-bar:50; --z-menu:60; --z-lb:99;  /* stacking order, bottom to top */
  --lb-scrim:rgba(20,24,28,.92);  /* lightbox backdrop */
  --lb-pad:14px;            /* breathing room around a full-frame photo */
  --lb-img-max:82vh;        /* tallest a full-frame photo goes, leaving room for its caption */
  --nav-h:54px;             /* nav bar height */
  --burger:42px; --qr-size:160px;            /* burger hit area */
  --gutter-wide:28px;       /* side margin once there is room */
  /* rules and accents — every drawn line on the site is one of these */
  --bw-rule:2px;            /* heading underline */
  --bw-accent:3px;          /* snap/tips left bar, card top bar */
  --bw-band:4px;            /* footer top band */
  --bw-input:1.5px;         /* text input border, burger lines */
  --bw-focus:3px;           /* focus outline */
  --u-off:4px;              /* underline offset in the menu */
  --lift:2px;               /* hover raise + inset ring on cards */
  --t-note:14px;            /* small print inside cards and tiles */
  --t-input:16px;           /* inputs stay 16px — below that iOS zooms the page on focus */
  --svg-ax:20px; --svg-dest:22px; --svg-home:30px; --svg-tick:13px;  /* type sizes inside SVG coordinate space */
  --rail-w:220px;           /* the tricolour rail on the hero */
  --art-leg:2.2px;          /* route line in the card artwork */
  --art-dot:4px;            /* destination dot in the card artwork */
  --art-hub:8px;            /* Craiova hub dot in the card artwork */
  --leg-h:132px;            /* height of the journey strip on a day-trip page */
  --leg-line:6px;           /* the road itself */
  --leg-stop:7px;           /* an intermediate stop */
  --leg-end:12px;           /* start and finish */
  --ac-h:14px;              /* height of the air-conditioning bar */
  --ac-gap:3px;             /* space between its segments */
  --ac-max:10;              /* the scale it is measured on */
  /* the bar takes its colour from the score: hot at the bottom of the scale,
     iceberg at the top. Two hues and the ramp between them, nothing hard-coded. */
  --ac-hot-h:8;             /* worst reading — fire red */
  --ac-warm-h:38;           /* just below the knee — amber */
  --ac-cool-h:172;          /* just above it — cold teal */
  --ac-cold-h:196;          /* best reading — iceberg */
  --ac-knee:0.5;            /* where warm becomes cold; the ramp skips green entirely */
  --ac-sat:74%;             /* saturation of both ends */
  --ac-lum-lo:40%;          /* first lit segment */
  --ac-lum-hi:64%;          /* last lit segment — the bar brightens left to right */
  --ac-pulse:2.8s;          /* how slowly the leading segment breathes */
  --cool-map-h:260px;       /* the at-a-glance map on the cool page */
  --cool-tile:256px;        /* an OpenStreetMap raster tile */
  --cool-zoom-max:16;       /* never zoom past this, however tight the cluster */
  --cool-pin:26px;          /* the pin that carries the reading */
  --cool-me:14px;           /* you, when the browser will say where you are */
  --cool-me:7px;            /* you, when the browser will say where you are */
  --burger-w:19px;          /* burger icon line length */
  --flag-w:24px; --flag-h:16px;  /* route-table flags */
  --cool-loop:6s; --cool-air:1.6s; --cool-spin:8s;  /* cool-down art animation */
  --sim-loop:6s; --sim-pulse:2.4s; --sim-pkt:1.8s;  /* SIM hero animation */
  --roam-col:150px; --roam-flag-w:24px;  /* roaming-zone country grid */
  --cf-w:1.35em; --cf-h:0.9em; --cf-va:-0.1em;  /* flag in front of a currency code */
  --dur-flash:.5s;          /* copied/fail button flash */
  --dur-step:.05s;          /* per-bar stagger in the climate chart */
}
/* ═══ base ═══ */
*{box-sizing:border-box}
body{margin:0;background:var(--c-paper);color:var(--c-text);font-family:var(--f-body);font-size:var(--t-base);line-height:var(--lh-body);-webkit-text-size-adjust:100%}
a{color:inherit}
.wrap{max-width:var(--max-width);margin:0 auto;padding:0 var(--gutter)}
.blurb,.sub,.note{max-width:var(--w-text)}
.snap{border-left:var(--bw-accent) solid var(--c-line);padding-left:var(--s-3)}
.tip{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-ok);font-weight:500;margin-right:var(--s-1)}
.mono{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase}
/* ═══ nav bar ═══ */
.bar{position:sticky;top:0;z-index:var(--z-bar);background:var(--c-bar);color:var(--c-on-bar)}
.brand{display:flex;align-items:center;gap:var(--s-2)}
.bar .barrow{display:flex;align-items:center;justify-content:space-between;height:var(--nav-h)}  /* nav row only — must not match #menu */
.brand{font-family:var(--f-display);font-size:var(--t-lg);text-decoration:none}
.brand b{color:var(--c-flag-blue);background:var(--c-pill);font-style:normal;font-weight:500;
  padding:.06em .3em;border-radius:var(--r-sm)}
.brand i{color:var(--c-flag-yellow);font-style:normal}
.brand u{color:var(--c-flag-red-on-band);text-decoration:none}
.burger{width:var(--burger);height:var(--burger);border:var(--bw) solid var(--c-bar-line);background:none;cursor:pointer;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:var(--s-1)}
.burger i{width:var(--burger-w);height:var(--bw-input);background:var(--c-on-bar);transition:transform var(--dur),opacity var(--dur)}
.burger[aria-expanded="true"] i:nth-child(1){transform:translateY(6.5px) rotate(45deg)}
.burger[aria-expanded="true"] i:nth-child(2){opacity:0}
.burger[aria-expanded="true"] i:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}
#menu{display:none;height:auto;position:relative;z-index:var(--z-menu);background:var(--c-ink);color:var(--c-paper);padding-block:var(--s-3) var(--s-6);max-height:calc(100vh - var(--nav-h));overflow-y:auto}  /* block only — .wrap owns the gutter */
#menu.open{display:block}
#menu a{display:block;text-decoration:none;padding:var(--s-2) 0;border-bottom:var(--bw) solid var(--c-bar-line-soft);font-family:var(--f-display);font-size:var(--t-md)}
#menu a.sec{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;
  color:var(--c-flag-yellow);border-bottom:0;margin-top:var(--s-5);padding-bottom:var(--s-1)}
#menu a[aria-current="page"]{color:var(--c-flag-yellow);text-decoration:underline;text-underline-offset:var(--u-off)}
#menu .mrow{display:flex;align-items:stretch;border-bottom:var(--bw) solid var(--c-bar-line-soft)}
#menu .mrow a{flex:1;border-bottom:0}
#menu .mx{flex:none;min-width:var(--burger);display:flex;align-items:center;justify-content:center;gap:var(--s-1);background:none;border:0;border-left:var(--bw) solid var(--c-bar-line-soft);color:var(--c-on-bar);font-family:var(--f-mono);font-size:var(--t-xs);cursor:pointer}
#menu .mx::after{content:"\25BE";transition:transform var(--dur)}
#menu .mx[aria-expanded="true"]::after{transform:rotate(180deg)}
#menu .msub{padding-left:var(--s-4);border-bottom:var(--bw) solid var(--c-bar-line-soft)}
#menu .msub a{font-family:var(--f-body);font-size:var(--t-base)}
#menu .msub a:last-child{border-bottom:0}
/* ═══ hero ═══ */
.hero{border-bottom:var(--bw-heavy) solid var(--c-ink)}
.shot{margin:var(--s-5) 0;overflow:hidden;border:var(--bw) solid var(--c-line)}
.shot img{width:100%;height:auto;aspect-ratio:var(--shot-ratio);object-fit:cover;display:block}
.shot svg{width:100%;height:auto;display:block}
.shot.ph .mdash{animation:ctg-dash 1.6s linear infinite}
@keyframes ctg-dash{to{stroke-dashoffset:-60}}
@media (prefers-reduced-motion:reduce){.shot.ph .mdash{animation:none}}
.hero .shot{margin:var(--s-5) 0 0;border-bottom:var(--bw-heavy) solid var(--c-blue)}  /* gutter like every other block */
.heroimg .ph{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--c-mute);text-align:center;padding:var(--s-6)}
.heroimg .ph b{display:block;font-family:var(--f-display);font-size:clamp(22px,6vw,40px);letter-spacing:0;text-transform:none;color:var(--c-ink);margin-bottom:var(--s-1)}
.herotext{padding-block:var(--s-6)}   /* block only — never reset .wrap's gutter */
h1{font-family:var(--f-display);font-size:var(--t-hero);line-height:var(--lh-tight);margin:var(--s-2) 0}
h1{color:var(--c-flag-blue)}
h1 em{font-style:normal;color:var(--c-flag-red)}
h1 i{font-style:normal;color:var(--c-flag-yellow-ink)}
.kicker{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.18em;text-transform:uppercase;color:var(--c-blue)}
.sub{max-width:var(--w-sub);color:var(--c-mute);margin:0}
.rail{display:flex;height:var(--rail-h);margin-top:var(--s-4);max-width:var(--rail-w)}
.rail i{flex:1}
.rail i:nth-child(1){background:var(--c-flag-blue)}
.rail i:nth-child(2){background:var(--c-flag-yellow)}
.rail i:nth-child(3){background:var(--c-flag-red)}
/* ═══ page ═══ */
.page{padding-block:var(--s-6) 0}     /* block only — never reset .wrap's gutter */
h1.pt{font-family:var(--f-display);font-size:var(--t-xl);line-height:var(--lh-tight);color:var(--c-text);margin:0 0 var(--s-1)}
h2.sh{font-family:var(--f-display);font-size:var(--t-lg);margin:var(--s-7) 0 var(--s-1);padding-bottom:var(--s-2);border-bottom:var(--bw-rule) solid var(--c-blue)}
.blurb{color:var(--c-mute);margin:var(--s-2) 0 0;max-width:62ch}
.crumb{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--c-accent);text-decoration:none;display:inline-block;margin-bottom:var(--s-3)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-min),1fr));grid-auto-rows:1fr;gap:var(--s-4);margin:var(--s-6) 0}
.gcard{display:flex;flex-direction:column;height:100%;text-decoration:none;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-4);transition:border-color var(--dur),transform var(--dur)}
.gcard .art{display:block;margin:calc(var(--s-4)*-1) calc(var(--s-4)*-1) var(--s-4);aspect-ratio:var(--shot-ratio);overflow:hidden;background:var(--c-paper);border-bottom:var(--bw) solid var(--c-line);color:var(--c-blue)}
.gcard .art svg,.gcard .art img{width:100%;height:100%;display:block;object-fit:cover}
.gcard.dark .art{background:var(--c-on-band-tint);border-bottom-color:var(--c-on-band-line);color:var(--c-yellow)}
.gcard p{margin-top:var(--s-1)}
.gcard .grow{flex:1}
.gcard .more{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-blue);margin-top:var(--s-3)}
.gcard:hover .more{text-decoration:underline}
.gcard.dark .more{color:var(--c-flag-yellow)}
.gcard:hover{border-color:var(--c-blue);box-shadow:0 0 0 var(--lift) var(--c-yellow) inset;transform:translateY(calc(var(--lift)*-1))}
.gcard .n{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-red);letter-spacing:var(--ls-mono)}
.gcard h3{font-family:var(--f-display);font-size:var(--t-lg);font-weight:500;margin:var(--s-1) 0 0}
.gcard p{margin:0;font-size:var(--t-note);color:var(--c-mute)}
.gcard.dark{background:var(--c-ink);color:var(--c-paper);border-color:var(--c-ink)}
.gcard.dark p{color:var(--c-on-ink)}.gcard.dark .n{color:var(--c-flag-yellow)}
#q{width:100%;padding:var(--s-3);border:var(--bw-input) solid var(--c-ink);background:none;font-family:var(--f-body);font-size:var(--t-input);margin:var(--s-5) 0 var(--s-1)}
#q:focus{outline:var(--bw-focus) solid var(--c-flag-yellow);outline-offset:var(--bw)}
.count{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
.card{padding:var(--s-4) 0;border-bottom:var(--bw) solid var(--c-line)}
.kindline{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-red);margin-bottom:var(--s-1)}
.gcard .n{text-transform:uppercase}
.kind{font-family:var(--f-mono);font-size:var(--t-2xs);letter-spacing:.12em;text-transform:uppercase;color:var(--c-red);background:none;border:0;padding:0;cursor:pointer}
.kind:hover{color:var(--c-blue)}
.card h3{font-family:var(--f-display);font-size:var(--t-md);font-weight:500;margin:var(--s-1) 0}
.entrygal{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--entrygal-min),1fr));gap:var(--s-2);margin:0 0 var(--s-3)}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--gallery-min),1fr));gap:var(--s-3);margin:var(--s-5) 0}
.gshot{margin:0;background:var(--c-surface);border:var(--bw) solid var(--c-line)}
/* the badge sits on the picture, never on the caption — wire() puts the image in this box */
.shotwrap{position:relative;display:block;line-height:0}
/* a photo whose frame crops it says so, and opens full size on tap. The hint is added
   by wire() only when the rendered box actually differs from the file, never by hand. */

.zoomhint{position:absolute;right:var(--s-2);bottom:var(--s-2);width:var(--hint);height:var(--hint);display:grid;place-items:center;background:var(--c-band);color:var(--c-on-band);border:var(--bw) solid var(--c-bar-line);pointer-events:none}
.zoomhint svg{width:var(--hint-glyph);height:var(--hint-glyph);display:block}
.zoomable{cursor:zoom-in}
.lb{position:fixed;inset:0;margin:0;z-index:var(--z-lb);display:none;background:var(--lb-scrim);padding:var(--lb-pad);cursor:zoom-out}
.lb.on{display:grid;grid-template-rows:auto auto;align-content:center;justify-items:center;gap:var(--s-3)}
.lb img{max-width:100%;max-height:var(--lb-img-max);width:auto;height:auto;object-fit:contain;display:block;border:var(--bw) solid var(--c-bar-line)}
.lb figcaption{margin:0;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-on-band);text-align:center;max-width:var(--w-text)}
.lbclose{position:absolute;top:var(--lb-pad);right:var(--lb-pad);font-family:var(--f-mono);font-size:var(--t-sm);letter-spacing:var(--ls-mono);text-transform:uppercase;background:var(--c-band);color:var(--c-on-band);border:var(--bw) solid var(--c-bar-line);padding:var(--s-2) var(--s-3);cursor:pointer}
.gshot img{width:100%;display:block;aspect-ratio:var(--gshot-ratio);object-fit:cover}
/* Drawn maps are diagrams, not photographs: cover would crop the edges off the
   route. Contain shows the whole drawing, on the page's own paper. */
.gshot img[src$=".svg"]{object-fit:contain;background:var(--c-paper)}
.gshot figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);padding:var(--s-2) var(--s-3);border-top:var(--bw) solid var(--c-line)}
.entryshot{margin:0 0 var(--s-3);border:var(--bw) solid var(--c-line);overflow:hidden;max-width:var(--entryshot-w)}
.entryshot img{width:100%;display:block;aspect-ratio:var(--shot-ratio);object-fit:cover}
.note{margin:0 0 var(--s-2)}
.addr{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-mute);margin:0 0 var(--s-3)}
.acts{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.mapwrap{margin-top:var(--s-3)}
.mapwrap iframe{width:100%;height:var(--map-h);border:var(--bw) solid var(--c-line);display:block}
.mapfoot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2);margin-top:var(--s-2)}
.mapfoot .coords{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
.wxnow{margin:var(--s-5) 0;padding:var(--s-5);border:var(--bw) solid var(--c-line);background:var(--c-paper)}
.wxnow .wxtop{display:flex;align-items:baseline;gap:var(--s-3);flex-wrap:wrap}
.wxnow .wxtemp{font-family:var(--f-display);font-size:var(--t-hero);line-height:1;color:var(--c-red)}
.wxnow .wxcond{font-size:var(--t-md);color:var(--c-text)}
.wxnow .wxmeta{margin-top:var(--s-2);font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-mute);display:flex;flex-wrap:wrap;gap:var(--s-4)}
.wxnow .wxdays{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--s-1);margin-top:var(--s-4)}
.wxnow .wxday{min-width:0;text-align:center;padding:var(--s-1) 2px;border:var(--bw) solid var(--c-line)}
.wxnow .wxday .dt{font-size:10px;line-height:1.25;color:var(--c-mute);margin:2px 0 4px;letter-spacing:0}
.wxnow .wxday .d{font-family:var(--f-mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:var(--ls-mono);color:var(--c-mute)}
.wxnow .wxday .hi{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-red)}
.wxnow .wxday .lo{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-blue)}
.wxnow .wxday .gs{font-family:var(--f-mono);font-size:var(--t-2xs);font-weight:700;color:var(--c-red);margin-top:2px}
.wxnow .wxrain{margin:var(--s-3) 0;padding:8px 10px;border:2px solid var(--c-text);background:var(--c-surface);color:var(--c-text)}
.wxnow .wxrain .wxhlabel{margin-top:0}
.wxnow .wxrain .sum{margin:2px 0 6px;font-size:var(--t-note);line-height:1.45}
.wxnow .wxrain .rt{width:100%;border-collapse:collapse;table-layout:fixed;font-family:var(--f-mono);font-size:var(--t-xs);text-align:center}
.wxnow .wxrain .rt th,.wxnow .wxrain .rt td{padding:3px 0;border:1px solid var(--c-text)}
.wxnow .wxrain .rt td{font-weight:700}
.wxnow .wxrain .rt .k{width:2.6em;text-align:left;padding-left:4px;font-weight:400}
.wxnow .wxrain .leg{margin:4px 0 0;font-size:var(--t-xs);color:var(--c-text)}
.wxnow .wxgust{margin-top:var(--s-2);font-size:var(--t-xs);line-height:1.4;color:var(--c-ink)}
.wxnow .wxday .pr{font-family:var(--f-mono);font-size:var(--t-2xs);font-weight:700;color:var(--c-mute)}
.wxnow .wxcredit{margin-top:var(--s-3);font-family:var(--f-mono);font-size:var(--t-2xs);color:var(--c-mute)}
.wxnow .wxcredit a{color:var(--c-mute)}
.wxnow .wxerr{color:var(--c-mute)}
.wxnow .wxhlabel{margin:var(--s-5) 0 0;font-family:var(--f-mono);font-size:var(--t-xs);text-transform:uppercase;letter-spacing:var(--ls-mono);color:var(--c-mute)}
.wxnow .wxhourly{margin-top:var(--s-2)}
.wxnow .wxhext{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-3);margin:var(--s-4) 0 0;font-family:var(--f-mono)}
.wxhext > div{display:flex;flex-direction:column;gap:var(--s-1);padding:var(--s-3) var(--s-4);border:var(--bw) solid var(--c-line);border-left:var(--bw-accent) solid currentColor;background:var(--c-surface)}
.wxhext .l{font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase}
.wxhext b{font-size:var(--t-xl);line-height:1.1;font-weight:700}
.wxhext b small{font-size:var(--t-sm);font-weight:400}
.wxhext .t{font-size:var(--t-sm);color:var(--c-text)}
.wxhkey{margin-top:var(--s-1);font-family:var(--f-mono);font-size:var(--t-2xs);color:var(--c-mute);display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-4)}
.wxnow .wxhkey .k.tp{color:var(--c-red)}
.wxnow .wxhkey .k.rn{color:var(--c-blue)}
.wxnow .wxclock{margin:var(--s-1) 0 0;font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-text)}
.wxnow .wxclock b{color:var(--c-ink);font-weight:600}
#radarmap{border-radius:0;border:var(--bw) solid var(--c-line);position:relative;z-index:0;isolation:isolate}
#radarmap .leaflet-control-zoom a{color:var(--c-ink)}
.radarctl{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3);margin-top:var(--s-2)}
.radarctl button{font:inherit;font-family:var(--f-mono);font-size:var(--t-xs);padding:var(--s-1) var(--s-3);border:var(--bw) solid var(--c-line);background:var(--c-paper);color:var(--c-text);cursor:pointer}
.radarctl span{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
/* a grid, not a wrap: the swatches sit in the same three columns on every row, so the eye
   runs straight down them instead of hunting for the next box */
.radarlegend{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2) var(--s-3);margin-top:var(--s-2);font-family:var(--f-mono);font-size:var(--t-2xs);color:var(--c-mute)}
@media (max-width:359px){.radarlegend{grid-template-columns:repeat(2,minmax(0,1fr))}}
.radarlegend span{display:inline-flex;align-items:center;gap:var(--s-1)}
.radarlegend i{display:inline-block;width:var(--s-3);height:var(--s-3);border-radius:var(--r-sm)}
#radarmap .leaflet-tile-pane .leaflet-layer{transition:opacity .5s linear}
.radarslider{-webkit-appearance:none;appearance:none;width:100%;margin-top:var(--s-3);height:var(--s-2);border-radius:var(--r-sm);background:var(--c-line);outline:none}
.radarslider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:var(--s-5);height:var(--s-5);border-radius:50%;background:var(--c-blue);border:var(--bw-heavy) solid var(--c-surface);box-shadow:0 0 0 var(--bw) var(--c-blue);cursor:pointer}
.radarslider::-moz-range-thumb{width:var(--s-5);height:var(--s-5);border-radius:50%;background:var(--c-blue);border:var(--bw-heavy) solid var(--c-surface);box-shadow:0 0 0 var(--bw) var(--c-blue);cursor:pointer}
.radarslider.fut::-webkit-slider-thumb{background:var(--c-future);box-shadow:0 0 0 var(--bw) var(--c-future)}
.radarslider.fut::-moz-range-thumb{background:var(--c-future);box-shadow:0 0 0 var(--bw) var(--c-future)}
.radarbtns{display:inline-flex;gap:var(--s-2)}
.radarkey{display:grid;gap:var(--s-4);margin:var(--s-2) 0 0;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-2) var(--s-3)}
.radarkey span::before{content:"";display:inline-block;width:var(--s-5);height:var(--s-2);border-radius:var(--r-sm);margin-right:var(--s-1);vertical-align:middle}
.radarkey .pa::before{background:var(--c-blue)}
.radarkey .fu::before{background:var(--c-future)}
.radarslider:disabled{opacity:.4}
.radarnow,.radarframe{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
.radarnow{margin:var(--s-2) 0 0}
.radarctl .radarframe{margin:0}
.radarnow .lt,.radarframe .lt,.radarnow .zt,.radarframe .zt{color:var(--c-ink);font-weight:600;margin-right:var(--s-2)}
.metarraw{font-family:var(--f-mono);font-size:var(--t-sm);background:var(--c-line);padding:var(--s-2);overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin:var(--s-1) 0 var(--s-3)}
.wxchart .wxax{font-family:var(--f-mono);font-size:var(--svg-tick);fill:var(--c-mute)}
.wxchart .wxax.rn{fill:var(--c-blue)}
.wxchart .wxax.sun{fill:var(--c-gold)}
.wxnow .wxhkey .k.dk{color:var(--c-mute)}
.wxhkey .k.wd{color:var(--c-ink)}
.wxchart .wxax.wd{fill:var(--c-ink)}
.wxchart .wxscrub .sl{stroke:var(--c-ink);stroke-width:1.5}
.wxchart .wxscrub .sd{fill:var(--c-ink)}
.wxchart .wxscrub .srb{fill:var(--c-paper);stroke:var(--c-ink);stroke-width:1}
.wxchart .wxscrub .srt{font-family:var(--f-mono);font-size:var(--svg-tick);fill:var(--c-ink)}
.wxrose .wxax{font-family:var(--f-mono);font-size:var(--svg-tick);fill:var(--c-mute)}
.wxrose .wxax.big{fill:var(--c-ink);font-weight:600}
.wxrose .wxax.city{font-size:var(--svg-tick);fill:var(--c-blue)}
.wxalert{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-3) 0;padding:var(--s-3);border:var(--bw-heavy) solid;font-family:var(--f-mono);font-size:var(--t-xs)}
.wxalert .txt{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.wxalert .txt b{font-size:var(--t-sm);letter-spacing:.06em}
.wxalert .lab{letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
.wxalert .dot{width:12px;height:12px;border-radius:50%;flex:none;background:currentColor;animation:wxblink 1.1s steps(1,end) infinite}
@keyframes wxblink{0%,49%{opacity:1}50%,100%{opacity:.15}}
@media (prefers-reduced-motion: reduce){.wxalert .dot{animation:none}}
.wxalert.lvl1{color:#8A6D00;border-color:#E8C93A;background:rgba(232,201,58,.12)}
.wxalert.lvl2{color:#9A5200;border-color:#E8922E;background:rgba(232,146,46,.12)}
.wxalert.lvl3{color:#A11B12;border-color:#D9463C;background:rgba(217,70,60,.12)}
.wxalert.lvl4{color:#7A1C86;border-color:#B23CC6;background:rgba(178,60,198,.14)}
.wxhext .lo{color:var(--c-cold,#2F5FA8)}
.wxhext .hi{color:var(--c-warm,#B8322A)}
.wxhext i{font-style:normal;font-size:var(--t-xs);color:var(--c-mute)}
.wxshare{margin-top:var(--s-4);text-align:center}
.wxshare button{font:inherit;font-family:var(--f-mono);font-size:var(--t-xs);padding:var(--s-2) var(--s-4);border:var(--bw) solid var(--c-line);background:var(--c-paper);color:var(--c-text);cursor:pointer}
.wxshare button:disabled{opacity:var(--dim);cursor:default}
/* the moon map: one set of tokens, so the whole drawing re-skins from three lines */
.moonmap{--moon-face:#E9E4D2;--moon-sea:#B9B2A0;--moon-ray:#F4F0E4;margin:0 0 var(--s-4)}
.moonmap summary{list-style:none;cursor:pointer;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--c-blue);padding:var(--s-2) 0}
.moonmap summary::-webkit-details-marker{display:none}
.moonmap:not([open]) summary span::after{content:" +"}
.moonmap[open] summary span::after{content:" \2212"}
.mmbody svg{width:100%;height:auto;max-width:340px;display:block;margin:0 auto var(--s-3)}
.mmbody .ms circle{fill:var(--c-red)}
.mmbody .ms text{font-family:var(--f-mono);font-size:11px;fill:var(--c-ink)}
.mmkey{list-style:none;margin:0 0 var(--s-3);padding:0;font-family:var(--f-mono);font-size:var(--t-xs)}
.mmkey li{display:grid;grid-template-columns:18px 1fr auto;gap:2px var(--s-2);padding:var(--s-2) 0;border-top:var(--bw) solid var(--c-line)}
.mmkey b{color:var(--c-red)}
.mmkey .n{color:var(--c-ink)}
.mmkey .d{color:var(--c-mute);text-align:right;white-space:nowrap}
.mmkey .w{grid-column:2/4;color:var(--c-mute)}
.moonrow.moontap{cursor:default}
.moonrow{display:flex;align-items:center;gap:var(--s-3);margin:var(--s-2) 0 var(--s-3)}
.moontext{display:flex;flex-direction:column;gap:var(--s-1)}
.moontext b{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-ink)}
.moontext span{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
table.seasons{margin-top:var(--s-2);table-layout:fixed;font-size:var(--t-xs)}
table.seasons td:first-child{width:38%}
.mapapps{flex:1 0 100%;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute)}
.mapapps a{color:var(--c-blue)}
.btn{display:inline-block;font-family:var(--f-mono);font-size:var(--t-sm);text-decoration:none;padding:var(--s-2) var(--s-3);border:var(--bw) solid var(--c-blue);color:var(--c-blue);background:none;cursor:pointer}
.btn:hover{background:var(--c-blue);color:var(--c-on-band)}
.btn.wa{background:var(--c-yellow);border-color:var(--c-yellow);color:var(--c-text)}
.btn.wa:hover{background:var(--c-text);border-color:var(--c-text);color:var(--c-yellow)}
.btn.book{border-color:var(--c-red);color:var(--c-red)}
.btn.book:hover{background:var(--c-red);color:var(--c-on-band)}
.btn[disabled]{opacity:.35;pointer-events:none}
.btn.ok{background:var(--c-ok);border-color:var(--c-ok);color:var(--c-on-band);animation:flash var(--dur-flash) ease-out}
.btn.fail{background:var(--c-red);border-color:var(--c-red);color:var(--c-on-band);animation:flash var(--dur-flash) ease-out}
@keyframes flash{from{transform:scale(.92);opacity:.55}to{transform:none;opacity:1}}
.tips{border-left:var(--bw-accent) solid var(--c-flag-yellow);padding-left:var(--s-4);margin:var(--s-5) 0}
.tips dt{font-family:var(--f-display);font-size:var(--t-md);margin:var(--s-3) 0 2px}
.tips dd{margin:0}
.offer{margin:var(--s-6) 0;padding:var(--s-5);background:var(--c-ink);color:var(--c-paper)}
.offer h3{font-family:var(--f-display);font-size:var(--t-lg);margin:0 0 var(--s-2)}
.offer p{color:var(--c-on-ink);margin:0 0 var(--s-3)}
.offer ul{margin:0 0 var(--s-4);padding-left:var(--s-5)}
.offer .btn{border-color:var(--c-flag-yellow);color:var(--c-flag-yellow)}
.offer .btn:hover{background:var(--c-flag-yellow);color:var(--c-ink)}
.climate{margin:var(--s-5) 0;background:var(--c-surface);border:var(--bw) solid var(--c-line)}
.climate svg{width:100%;height:auto;display:block}
.climate .grid line{stroke:var(--c-line);stroke-width:1}
.climate .rain rect{fill:var(--c-blue);opacity:.18}
.climate .band{fill:var(--c-yellow);opacity:var(--band-o)}
.climate .now line{stroke:var(--c-ink);stroke-width:2;stroke-dasharray:7 7;opacity:.55}
.climate .now circle{fill:var(--c-ink);opacity:.55}
.climate .now text{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-ink);opacity:.75}
.climate .hi{fill:none;stroke:var(--c-red);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
.climate .lo{fill:none;stroke:var(--c-blue);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}
/* draw-on animation. --len is the measured path length, set in wire().
   .run plays it, .still jumps straight to the finished chart. Neither class
   present (no JS) = the finished chart, because --len defaults to 0. */
.climate .hi,.climate .lo{stroke-dasharray:var(--len,0);stroke-dashoffset:var(--len,0)}
.climate .rain rect{transform-box:fill-box;transform-origin:50% 100%}
.climate.run .hi,.climate.run .lo{transition:stroke-dashoffset var(--dur-draw) ease-out;stroke-dashoffset:0}
.climate.run .rain rect{animation:grow var(--dur-draw) ease-out both;animation-delay:calc(var(--i) * var(--dur-step))}
.climate.run .band{animation:fadeband var(--dur-draw) ease-out both;animation-delay:calc(var(--dur-draw) * .35)}
.climate.run .lbl{animation:fadelbl var(--dur-draw) ease-out both;animation-delay:calc(var(--dur-draw) * .55)}
.climate.still .hi,.climate.still .lo{transition:none;stroke-dashoffset:0}
.climate.still .rain rect,.climate.still .band,.climate.still .lbl{animation:none}
@keyframes grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes fadeband{from{opacity:0}to{opacity:var(--band-o)}}
@keyframes fadelbl{from{opacity:0}to{opacity:1}}
.climate .ax{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-mute)}
.climate .val{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-red)}
.climate .val.lo{fill:var(--c-blue)}
.climate .val.rn{fill:var(--c-blue);opacity:.7}
.climate.daylight .ax{font-size:var(--svg-ax)}
.climate.daylight .cell{font-family:var(--f-mono);font-size:var(--t-xs)}
.climate figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);padding:var(--s-2) var(--s-3);border-top:var(--bw) solid var(--c-line);
  display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-3)}
.climate figcaption span{max-width:var(--w-text)}
/* The card artwork for "how to get here" is the route network itself, drawn from
   the same list as the map and the table — not a picture of one. */
.artmap svg{width:100%;height:100%;display:block}
.artmap .grid line{stroke:var(--c-line);stroke-width:1}
.artmap .legs path{fill:none;stroke:var(--c-blue);stroke-width:var(--art-leg);opacity:.55}
.artmap .dest circle{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:var(--art-leg)}
.artmap .dest .lead{stroke:var(--c-blue);stroke-width:1}
.artmap .dest text{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-ink)}
.artmap .home circle{fill:var(--c-red)}
.artmap .home text{font-family:var(--f-display);font-size:var(--svg-home);fill:var(--c-red)}
/* The journey strip: Craiova on the left, the destination on the right, every
   stop placed at its true distance along the road. Drawn from trip.via — the
   same numbers the table shows, so the picture cannot disagree with the text. */
/* Air conditioning, measured the same way everywhere: how cold the room actually
   is where you sit, on a fixed scale. Not a review of the place — one property,
   one bar, drawn identically on every entry that reports it. */
.coolmap{margin:var(--s-4) 0 0;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-3)}
.coolmap .tiles{position:relative;width:100%;height:var(--cool-map-h);overflow:hidden;background:var(--c-paper);border:var(--bw) solid var(--c-line)}
.coolmap .tile{position:absolute;display:block;max-width:none}
.coolmap .pin{position:absolute;width:var(--cool-pin);height:var(--cool-pin);margin:calc(var(--cool-pin)/-2) 0 0 calc(var(--cool-pin)/-2);display:grid;place-items:center;border-radius:50%;text-decoration:none;background:hsl(var(--ac-h-now) var(--ac-sat) var(--ac-lum-hi));border:var(--bw-input) solid var(--c-ink);font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-ink)}
.coolmap .pin:hover,.coolmap .pin:focus{outline:var(--bw-accent) solid var(--c-yellow)}
.coolmap .mepin{position:absolute;width:var(--cool-me);height:var(--cool-me);margin:calc(var(--cool-me)/-2) 0 0 calc(var(--cool-me)/-2);border-radius:50%;background:var(--c-red);border:var(--bw-input) solid var(--c-paper)}
.coolmap figcaption{font-family:var(--f-mono);font-size:var(--t-xs);opacity:.75;margin-top:var(--s-2)}
.sortbar{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-4) 0 0}
.sortb{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-chip);text-transform:uppercase;padding:var(--s-2) var(--s-3);background:none;color:var(--c-ink);border:var(--bw) solid var(--c-line);cursor:pointer}
.sortb.on{background:var(--c-blue);color:var(--c-on-band);border-color:var(--c-blue)}
.sortb[disabled]{opacity:.5;cursor:default}
.coollist .ckm{margin-left:var(--s-3)}
/* the cool list: the same bar as on each entry, stacked and ranked */
.coollist{list-style:none;margin:var(--s-4) 0 0;padding:0;display:grid;gap:var(--s-4)}
.coollist a{display:block;text-decoration:none;color:inherit;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-4)}
.coollist a:hover,.coollist a:focus{box-shadow:0 0 0 var(--lift) var(--c-yellow) inset}
.coollist .cn{display:block;font-family:var(--f-display);font-size:var(--t-md)}
.coollist .cw{display:block;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-chip);text-transform:uppercase;opacity:.7;margin-top:var(--s-1,2px)}
.coollist .acbar{border:0;padding:0;background:none;margin-top:var(--s-3)}
.acbar{margin:var(--s-4) 0 0;padding:var(--s-3);background:var(--c-surface);border:var(--bw) solid var(--c-line)}
.acbar .lab{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-chip);text-transform:uppercase;margin-bottom:var(--s-2)}
.acbar .val{font-family:var(--f-mono);font-size:var(--t-note);letter-spacing:0}
.acbar .track{display:flex;gap:var(--ac-gap)}
.acbar .seg{flex:1 1 0;height:var(--ac-h);background:var(--c-paper);border:var(--bw) solid var(--c-line)}
/* lit segments: one hue for the whole bar, lightness ramped along it */
.acbar .seg.on{background:hsl(var(--ac-h-now) var(--ac-sat) calc(var(--ac-lum-lo) + (var(--ac-lum-hi) - var(--ac-lum-lo)) * var(--i) / var(--ac-max)));border-color:hsl(var(--ac-h-now) var(--ac-sat) var(--ac-lum-lo))}
/* only the leading segment breathes — a reading being taken, not a flashing light */
.acbar .seg.on.lead{animation:acpulse var(--ac-pulse) ease-in-out infinite}
@keyframes acpulse{0%,100%{opacity:1}50%{opacity:.55}}
.acbar .note{font-family:var(--f-body);font-size:var(--t-note);margin:var(--s-2) 0 0}
.legstrip{margin:var(--s-5) 0 0;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-4) var(--s-3)}
.legstrip svg{width:100%;height:auto;display:block}
.legstrip .road{stroke:var(--c-blue);stroke-width:var(--leg-line);stroke-linecap:round;opacity:.35}
.legstrip .tick{stroke:var(--c-blue);stroke-width:2;opacity:.45}
.legstrip .done{stroke:var(--c-blue);stroke-width:var(--leg-line);stroke-linecap:round}
.legstrip .stop{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:2}
.legstrip .end{fill:var(--c-red)}
.legstrip .day0{fill:var(--c-day-0)}
.legstrip .day1{fill:var(--c-day-1)}
.legstrip .day2{fill:var(--c-day-2)}
.legstrip .dl{font-family:var(--f-mono);font-size:var(--svg-ax);font-weight:700;letter-spacing:var(--ls-mono);text-transform:uppercase;fill:var(--c-blue)}
.ar-road{fill:var(--c-outside)}
.ar-median{fill:var(--c-line)}
.ar-dash{stroke:var(--c-surface);stroke-width:var(--ar-line-bold);stroke-dasharray:var(--ar-dash)}
.ar-bridge{fill:var(--c-mute);opacity:var(--ar-fade)}
.ar-stop line{stroke:var(--c-ink);stroke-width:var(--ar-line)}
.ar-stop rect{fill:var(--c-surface);stroke:var(--c-ink);stroke-width:var(--ar-line)}
.ar-stop text,.ar-coach text,.ar-bus text{font-family:var(--f-mono);font-size:var(--svg-tick);font-weight:700}
.ar-stop text{fill:var(--c-ink)}
.ar-coach rect{fill:var(--c-blue)}
.ar-coach text{fill:var(--c-surface)}
.ar-bus rect{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:var(--ar-line)}
.ar-bus text{fill:var(--c-blue)}
.ar-me circle{fill:var(--c-red);stroke:var(--c-surface);stroke-width:var(--ar-line-bold)}
.ar-n path{fill:var(--c-ink)}
.legstrip .nm{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-ink)}
.legstrip .km{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-muted,var(--c-ink));opacity:.7}
.legstrip figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-ink);opacity:.75;margin-top:var(--s-3)}
.routemap{margin:var(--s-5) 0 0;background:var(--c-surface);border:var(--bw) solid var(--c-line)}
.routemap svg{width:100%;height:auto;display:block}
.routemap .grid line{stroke:var(--c-line);stroke-width:1}
.routemap .legs path{fill:none;stroke:var(--c-blue);stroke-width:2;opacity:.55;transition:opacity var(--dur),stroke-width var(--dur)}
.routemap.picked .legs path{opacity:.12}
.routemap.picked .legs path.on{opacity:1;stroke:var(--c-red);stroke-width:6}
.routemap.picked .dest{opacity:.3}
.routemap.picked .dest.on{opacity:1}
.routemap .dest.on circle{fill:var(--c-red);stroke:var(--c-red);r:11}
.routemap .dest.on text{fill:var(--c-red);font-weight:700}
.routes tr.rrow{cursor:pointer}
.routes tr.rrow:hover td,.routes tr.rrow:focus td{background:var(--c-row-hit)}
.routes tr.rrow.on td{background:var(--c-yellow)}
.routes tr.rrow:focus{outline:var(--bw-heavy) solid var(--c-blue);outline-offset:calc(var(--bw-heavy)*-1)}
.routemap .dest circle{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:2}
.routemap .dest .lead{stroke:var(--c-blue);stroke-width:1;opacity:.5}
.routemap .dest text{font-family:var(--f-mono);font-size:var(--svg-dest);fill:var(--c-text)}
.routemap .home circle{fill:var(--c-red);stroke:var(--c-surface);stroke-width:3}
.routemap .home text{font-family:var(--f-display);font-size:var(--svg-home);fill:var(--c-red)}
.routemap figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);padding:var(--s-2) var(--s-3);border-top:var(--bw) solid var(--c-line)}
.routes{width:100%;border-collapse:collapse;margin:var(--s-5) 0;font-size:var(--t-base)}
.routes th{text-align:left;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-mute);font-weight:400;padding:var(--s-2) var(--s-2) var(--s-2) 0;border-bottom:var(--bw-rule) solid var(--c-blue)}
.routes td{padding:var(--s-2) var(--s-2) var(--s-2) 0;border-bottom:var(--bw) solid var(--c-line);vertical-align:top}
.routes td.code{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-blue);white-space:nowrap;text-align:right}
.routes td.code span{display:block;line-height:1.5}
.routes td.code .icao{opacity:.7}
.routes td.ctry .cname{display:block}
.routes .flag{display:block;width:var(--flag-w);height:var(--flag-h);margin-top:var(--s-1)}
.routes td.apt{padding-right:var(--s-3)}
.spec{width:100%;border-collapse:collapse;margin:var(--s-5) 0}
.spec th,.spec td{text-align:left;padding:var(--s-2) 0;border-bottom:var(--bw) solid var(--c-line);vertical-align:top}
.spec th{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-mute);width:38%;font-weight:400}
table.prices3{table-layout:fixed}
table.prices3 col.c1{width:40%;background:var(--tint-1)}
table.prices3 col.c2{width:35%;background:var(--tint-2)}
table.prices3 col.c3{width:25%;background:var(--tint-3)}
table.prices3 th{width:auto;white-space:normal}
table.prices3 td.pr{text-align:right;font-weight:600;color:var(--c-ink)}
table.cats2{table-layout:fixed}
table.cats2 col.c1{width:52%;background:var(--tint-1)}
table.cats2 col.c2{width:48%;background:var(--tint-2)}
table.cats2 th{width:auto;white-space:normal}
.ccyflags button{display:flex;flex-direction:column;align-items:center;gap:var(--s-1)}
.ccyflags .flag{display:block;width:var(--s-6);height:auto;border:var(--bw) solid var(--c-line)}
.spec td{font-family:var(--f-mono);font-size:var(--t-sm)}
.menu{width:100%;table-layout:fixed;border-collapse:collapse;margin:var(--s-3) 0 var(--s-5)}
.menu td{padding:var(--s-2) 0;border-bottom:var(--bw) solid var(--c-line);vertical-align:top;font-size:var(--t-sm);overflow-wrap:anywhere}
.menu td.q{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);white-space:nowrap;padding-left:var(--s-3);text-align:right;width:9ch}
.menu td.p{font-family:var(--f-mono);font-size:var(--t-sm);white-space:nowrap;padding-left:var(--s-3);text-align:right;width:11ch}
.mh{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-mute);margin:var(--s-5) 0 0}
.quote{margin:var(--s-5) 0;padding-left:var(--s-4);border-left:var(--r-sm) solid var(--c-accent,var(--c-line))}
.quote p{font-size:var(--t-lg);line-height:1.35;margin:0}
.quote cite{display:block;margin-top:var(--s-2);font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-mute);font-style:normal}
.msort{display:flex;flex-wrap:wrap;gap:var(--s-2);margin:var(--s-3) 0}
.bigstat{display:block;border-top:var(--bw-heavy) solid var(--c-ink);border-bottom:var(--bw) solid var(--c-line);padding:var(--s-4) 0;margin:var(--s-3) 0 var(--s-4)}
.bigstat .n{display:block;font-family:var(--f-display);font-size:var(--t-xl);line-height:1;font-weight:700;letter-spacing:-.01em}
.bigstat .u{display:block;margin-top:var(--s-2);font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-mute)}
.spec .conv{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);white-space:nowrap}
.spec .subline{display:block;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);margin-top:var(--s-1)}
.infodot{margin-top:var(--s-4)}
.infodot summary{list-style:none;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;cursor:pointer}
.infodot summary::-webkit-details-marker{display:none}
.infodot summary span{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;border:var(--bw-heavy) solid var(--c-blue);color:var(--c-blue);font-family:var(--f-display);font-style:italic;font-size:var(--t-sm);line-height:1}
.infodot[open] summary span{background:var(--c-blue);color:var(--c-surface)}
.infobody{border:var(--bw) solid var(--c-line);background:var(--c-surface);padding:var(--s-3);margin-top:var(--s-2)}
.infobody p{margin:0;font-size:var(--t-sm);color:var(--c-mute)}
ul.seasons{list-style:none;margin:var(--s-4) 0 0;padding:0}
ul.seasons li{display:flex;justify-content:space-between;align-items:baseline;gap:var(--s-4);padding:var(--s-3) var(--s-3);border-top:var(--bw) solid var(--c-line);border-left:var(--bw-heavy) solid transparent;box-sizing:border-box}
ul.seasons li:last-child{border-bottom:var(--bw) solid var(--c-line)}
ul.seasons .sn{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-ink);display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--s-2);min-width:0}
ul.seasons .sn .nm{font-weight:400;white-space:nowrap}
ul.seasons .sn i{font-style:normal;font-size:var(--t-xxs, 11px);letter-spacing:.08em;text-transform:uppercase;color:var(--c-surface);background:var(--c-blue);padding:1px var(--s-2);border-radius:var(--r-sm)}
ul.seasons .sd{font-family:var(--f-mono);text-align:right;white-space:nowrap}
ul.seasons .sd b{display:block;font-size:var(--t-sm);color:var(--c-ink);font-variant-numeric:tabular-nums}
ul.seasons .sd small{display:block;font-size:var(--t-xs);color:var(--c-mute);font-variant-numeric:tabular-nums}
ul.seasons li.next .sd b{color:var(--c-blue)}
ul.seasons.moonlist{margin-bottom:var(--s-4)}
ul.seasons li.past{opacity:var(--dim)}
ul.seasons li.today{border-left-color:var(--c-red);background:var(--c-alert-tint)}
ul.seasons li.soon{border-left-color:var(--c-gold)}
ul.seasons .sn i.today{background:var(--c-red)}
ul.seasons .sn i.soon{background:var(--c-gold);color:var(--c-flag-yellow-ink)}
ul.seasons li.recent{border-left-color:var(--c-blue);background:var(--c-day-0)}
ul.seasons .sn i.recent{background:var(--c-surface);color:var(--c-blue);border:var(--bw) solid var(--c-blue)}
ul.seasons li.recent .sd em{color:var(--c-blue)}
ul.seasons .sd em{display:block;font-style:normal;font-size:var(--t-xs);color:var(--c-mute)}
ul.seasons li.today .sd em{color:var(--c-red)}
ul.seasons li.today .sd b{color:var(--c-red)}
.coin3d{margin:var(--s-5) 0;text-align:center}
.coin3d svg{width:min(240px,60vw);height:auto;cursor:grab;touch-action:pan-y;filter:drop-shadow(0 10px 18px rgba(0,0,0,.18))}
.coin3d svg:active{cursor:grabbing}
.coin3d figcaption{margin-top:var(--s-2);color:var(--c-mute);font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase}
@media (prefers-reduced-motion: reduce){.coin3d svg{animation:none}}
.atms{margin:var(--s-4) 0}
.atm{border:var(--bw) solid var(--c-line);background:var(--c-surface);margin-bottom:var(--s-2)}
.atm summary{cursor:pointer;list-style:none;padding:var(--s-3);display:grid;grid-template-columns:1fr auto;gap:2px var(--s-3);align-items:baseline}
.atm summary::-webkit-details-marker{display:none}
.atm summary b{font-size:var(--t-base);color:var(--c-blue)}
.atm summary i{font-style:normal;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.1em;text-transform:uppercase;justify-self:end}
.atm summary i.ok{color:var(--c-flag-blue)}
.atm summary i.unv{color:var(--c-mute)}
.atm summary .addr{font-size:var(--t-sm);color:var(--c-mute)}
.atm summary .open{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--c-blue);justify-self:end}
.atm[open] summary .open::after{content:" \2212"}
.atm:not([open]) summary .open::after{content:" +"}
.atmbody{padding:0 var(--s-3) var(--s-3)}
.atmbody p{margin:0 0 var(--s-3)}
.atmmap{height:260px;border:var(--bw) solid var(--c-line)}
.accwrap{margin:var(--s-4) 0}
.acc{border:var(--bw) solid var(--c-line);background:var(--c-surface);margin-bottom:var(--s-2)}
.acc summary{cursor:pointer;padding:var(--s-3);font-weight:700;color:var(--c-blue);list-style:none;display:flex;justify-content:space-between;align-items:center;gap:var(--s-3)}
.acc summary::-webkit-details-marker{display:none}
.acc summary::after{content:"+";font-family:var(--f-mono);color:var(--c-mute);font-weight:400}
.acc[open] summary::after{content:"\2212"}
.acc[open] summary{border-bottom:var(--bw) solid var(--c-line)}
.accbody{padding:var(--s-3)}
.accbody p{margin:0}
.accnote{margin-top:var(--s-3)}
.pbar{margin:var(--s-4) 0;border:var(--bw) solid var(--c-line);background:var(--c-surface);padding:var(--s-3)}
.pbar .lab{display:flex;justify-content:space-between;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);margin-bottom:var(--s-2)}
.pbar .val{color:var(--c-ink);font-weight:700}
.pbt{display:grid;grid-template-columns:repeat(10,1fr);gap:var(--s-1)}
.pbc{height:var(--s-4);background:var(--c-line);border-radius:var(--r-sm)}
.pbc.on{background:var(--c-ok)}
.pbar .note{font-size:var(--t-sm);color:var(--c-mute);margin:var(--s-2) 0 0}
.rmap{margin:var(--s-4) 0;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-3)}
.rmap svg{width:100%;height:auto;display:block}
.rmap .rl{fill:none;stroke:var(--c-blue);stroke-width:var(--ar-line-bold);stroke-linejoin:round;stroke-linecap:round;opacity:.75}
.rmap .rs{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:var(--ar-line)}
.rmap .rs.end{fill:var(--c-red)}
.rmap .rt{font-family:var(--f-mono);font-size:var(--svg-ax);fill:var(--c-ink)}
.rmap .rt.e{font-weight:700}
.rmap .rt .sub{font-weight:400;fill:var(--c-mute)}
.rmap .pin circle{fill:var(--c-yellow);stroke:var(--c-blue);stroke-width:var(--ar-line)}
.rmap .pin.hub circle{fill:var(--c-red)}
.rmap .pin text{font-family:var(--f-mono);font-size:var(--svg-tick);font-weight:700;fill:var(--c-ink)}
.rmap .pin.hub text{fill:var(--c-surface)}
.rmap .cen circle{fill:none;stroke:var(--c-mute);stroke-width:var(--ar-line);stroke-dasharray:var(--ar-dash)}
.rmap .cen line{stroke:var(--c-mute);stroke-width:var(--ar-line)}
.rmap .cen text{font-family:var(--f-mono);font-size:var(--svg-tick);fill:var(--c-mute)}
.pinmapfig{margin:var(--s-5) 0 0}
.pinmapbox{height:var(--pinmap-h);border:var(--bw) solid var(--c-line);position:relative;z-index:0;isolation:isolate}
.pinico span{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border-radius:50%;background:var(--c-yellow);border:var(--bw-heavy) solid var(--c-blue);font-family:var(--f-mono);font-size:var(--t-xs);font-weight:700;color:var(--c-ink);box-sizing:border-box}
.pinico.hub span{background:var(--c-red);color:var(--c-surface)}
.pinmapfig figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-ink);margin-top:var(--s-2)}
.pinkey{margin:var(--s-3) 0 0;padding-left:var(--s-6);font-size:var(--t-sm);color:var(--c-ink)}
.pinkey li{margin:var(--s-1) 0}
.rmap .rsb line{stroke:var(--c-ink);stroke-width:var(--ar-line-bold)}
.rmap .rsb text{font-family:var(--f-mono);font-size:var(--svg-tick);fill:var(--c-mute)}
.rmap figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-ink);margin-top:var(--s-2)}
.cf{white-space:nowrap}
.card[id]{scroll-margin-top:var(--bar-clear)}
p.blurb+p.blurb{margin-top:var(--s-3)}
.wsteps{margin:var(--s-3) 0;padding-left:var(--s-5)}
.wsteps li{margin-bottom:var(--s-4)}
.wsteps li::marker{font-family:var(--f-mono);font-weight:700}
.ptab.progs td:first-child{font-family:var(--f-mono);font-weight:700;width:2.2em;text-align:left}
.ptab.progs td:last-child{white-space:nowrap}
.ptab.progs thead th:nth-child(2){text-align:left}
.tips .entrygal{margin-top:var(--s-2)}
.tiplink{display:inline-block;margin-top:var(--s-2);font-family:var(--f-mono);font-size:var(--t-sm)}
.coolart .merc,.coolart .bulb{fill:var(--c-red);animation:cool-fill var(--cool-loop) ease-in-out infinite}
.coolart .merc{transform-box:fill-box;transform-origin:50% 100%;animation-name:cool-fill,cool-drop}
.coolart .sun{transform-box:fill-box;transform-origin:center;animation:cool-sun var(--cool-loop) ease-in-out infinite}
.coolart .rays{transform-box:fill-box;transform-origin:center;animation:cool-spin calc(var(--cool-spin) * 2) linear infinite}
.coolart .air{stroke-dasharray:14 10;animation:cool-air var(--cool-air) linear infinite}
.coolart .w1{animation-delay:calc(var(--cool-air) / -3)}.coolart .w2{animation-delay:calc(var(--cool-air) * -2 / 3)}
.coolart .flake{transform-box:fill-box;transform-origin:center;animation:cool-spin var(--cool-spin) linear infinite}
@keyframes cool-fill{0%,15%{fill:var(--c-red)}55%,85%{fill:var(--c-blue)}100%{fill:var(--c-red)}}
@keyframes cool-drop{0%,15%{transform:scaleY(1)}55%,85%{transform:scaleY(.28)}100%{transform:scaleY(1)}}
@keyframes cool-sun{0%,15%{opacity:1;transform:scale(1)}55%,85%{opacity:.25;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}
@keyframes cool-air{to{stroke-dashoffset:-48}}
@keyframes cool-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.coolart .merc,.coolart .bulb,.coolart .sun,.coolart .rays,.coolart .air,.coolart .flake{animation:none}.coolart .merc,.coolart .bulb{fill:var(--c-blue)}.coolart .merc{transform:scaleY(.28)}.coolart .sun{opacity:.25}}
.simart .sim{animation:sim-in var(--sim-loop) ease-in-out infinite}
.simart .bar{opacity:.15;animation:sim-bar var(--sim-loop) linear infinite}
.simart .b1{animation-name:sim-bar1}.simart .b2{animation-name:sim-bar2}.simart .b3{animation-name:sim-bar3}
.simart .arc{opacity:0;animation:sim-arc var(--sim-pulse) ease-out infinite}
.simart .a1{animation-delay:calc(var(--sim-pulse) / 3)}.simart .a2{animation-delay:calc(var(--sim-pulse) * 2 / 3)}
.simart .pkt{opacity:0;animation:sim-pkt var(--sim-pkt) linear infinite}
.simart .p1{animation-delay:calc(var(--sim-pkt) / 3)}.simart .p2{animation-delay:calc(var(--sim-pkt) * 2 / 3)}
@keyframes sim-in{0%{transform:translateX(40px);opacity:0}8%{opacity:1}20%,86%{transform:translateX(-58px);opacity:1}94%,100%{transform:translateX(-58px);opacity:0}}
@keyframes sim-bar{0%,24%{opacity:.15}28%,88%{opacity:1}94%,100%{opacity:.15}}
@keyframes sim-bar1{0%,32%{opacity:.15}36%,88%{opacity:1}94%,100%{opacity:.15}}
@keyframes sim-bar2{0%,40%{opacity:.15}44%,88%{opacity:1}94%,100%{opacity:.15}}
@keyframes sim-bar3{0%,48%{opacity:.15}52%,88%{opacity:1}94%,100%{opacity:.15}}
@keyframes sim-arc{0%{opacity:0}25%{opacity:.9}100%{opacity:0}}
@keyframes sim-pkt{0%{transform:translate(0,0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translate(104px,22px);opacity:0}}
@media (prefers-reduced-motion:reduce){.simart .sim,.simart .bar,.simart .arc,.simart .pkt{animation:none}.simart .sim{transform:translateX(-58px)}.simart .bar,.simart .arc{opacity:1}}
.roamh{display:flex;align-items:center;gap:var(--s-2);margin:var(--s-5) 0 var(--s-3);font-size:var(--t-base)}
.roamh img{width:var(--roam-flag-w);height:auto;border:var(--bw) solid var(--c-line)}
.roamlist{list-style:none;padding:0;margin:0 0 var(--s-3);display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--roam-col),1fr));gap:var(--s-2) var(--s-4)}
.roamlist li{display:flex;align-items:center;gap:var(--s-2);font-size:var(--t-sm)}
.roamlist img{width:var(--roam-flag-w);height:auto;flex:none;border:var(--bw) solid var(--c-line)}
.roamch{border-left:var(--bw-accent) solid var(--c-red);padding-left:var(--s-4);margin-top:var(--s-5)}
.cf .cflag{display:inline-block;width:var(--cf-w);height:var(--cf-h);vertical-align:var(--cf-va);margin-right:var(--s-1);border:var(--bw) solid var(--c-line)}
.ptab{width:100%;border-collapse:collapse;margin:var(--s-3) 0 var(--s-4);font-variant-numeric:tabular-nums}
.ptab th,.ptab td{padding:var(--s-2) 0;border-bottom:var(--bw) solid var(--c-line);vertical-align:top}
.ptab tbody th{text-align:left;font-family:var(--f-body);font-size:var(--t-base);font-weight:400;color:var(--c-text);padding-right:var(--s-3)}
.ptab td{text-align:right;white-space:nowrap;font-family:var(--f-mono);font-size:var(--t-sm);color:var(--c-ink);padding-left:var(--s-3)}
.ptab thead th{font-family:var(--f-mono);font-size:var(--t-xs);font-weight:400;color:var(--c-mute);text-align:right;white-space:nowrap;padding-left:var(--s-3);border-bottom:var(--bw-heavy) solid var(--c-ink)}
.ptab .sub{display:block;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);margin-top:var(--s-1)}
.ptab.recs a{color:var(--c-ink)}
.ptab td.pk{color:var(--c-mute)}
.ptab .pu{font-size:var(--t-xs)}
.ptab .hn{display:block;margin-top:var(--s-1)}
.ptab.offers tbody th b{font-weight:600}
.ptab thead th:first-child{text-align:left;padding-left:0}
.vh{position:absolute;width:var(--vh-px);height:var(--vh-px);overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.costs{width:100%;border-collapse:collapse;margin:var(--s-4) 0 var(--s-5);font-variant-numeric:tabular-nums}
.costs th,.costs td{padding:var(--s-3) 0;border-bottom:var(--bw) solid var(--c-line);vertical-align:top}
.costs th{text-align:left;font-family:var(--f-body);font-size:var(--t-base);font-weight:400;color:var(--c-text);padding-right:var(--s-4)}
.costs .paid{display:block;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);margin-top:var(--s-1)}
.costs td{text-align:right;white-space:nowrap;font-family:var(--f-mono);font-size:var(--t-base);color:var(--c-ink)}
.costs tr.tot th,.costs tr.tot td{font-weight:700;border-top:var(--bw-heavy) solid var(--c-ink);border-bottom:0;padding-top:var(--s-4)}
.msort button{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;padding:var(--s-2) var(--s-3);border:var(--bw) solid var(--c-line);background:transparent;color:var(--c-mute);cursor:pointer}
.msort button[aria-pressed="true"]{color:var(--c-ink);border-color:var(--c-ink)}
.menu td.p .uu{display:block;font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);font-weight:400}
.menu td.v{width:34%;padding-left:var(--s-3);padding-right:var(--s-3)}
.vbar{position:relative;height:var(--bar-h);background:var(--c-line);border-radius:var(--r-sm);overflow:hidden}
.vbar i{display:block;height:100%;border-radius:var(--r-sm)}
.vkey{display:flex;align-items:center;gap:var(--s-2);font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-mute);margin:var(--s-3) 0 0}
.vkey span{flex:1;height:var(--bar-h);border-radius:var(--r-sm);background:linear-gradient(90deg,hsl(var(--val-hue-worst) var(--val-sat) var(--val-light)),hsl(calc((var(--val-hue-best) + var(--val-hue-worst))/2) var(--val-sat) var(--val-light)),hsl(var(--val-hue-best) var(--val-sat) var(--val-light)))}
.season,.plist{display:grid;grid-template-columns:repeat(auto-fit,minmax(var(--tile-min),1fr));gap:var(--s-3);margin:var(--s-5) 0}
.season div,a.pcard{display:block;color:inherit;text-decoration:none;cursor:pointer}
.pcard{background:var(--c-surface);border:var(--bw) solid var(--c-line);border-top:var(--bw-accent) solid var(--c-blue);padding:var(--s-4)}
.season h4{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-red);margin:0 0 var(--s-1)}
/* how the season reads, at a glance */
.season .hot{border-top-color:var(--c-red)}          .season .hot  h4{color:var(--c-red)}
.season .good{border-top-color:var(--c-ok)}          .season .good h4{color:var(--c-ok)}
.season .cold{border-top-color:var(--c-blue)}        .season .cold h4{color:var(--c-blue)}
.season p,.pcard p{margin:0 0 var(--s-2);font-size:var(--t-note)}
.ptile{margin:calc(var(--s-4)*-1) calc(var(--s-4)*-1) var(--s-4);aspect-ratio:var(--shot-ratio);overflow:hidden;border-bottom:var(--bw) solid var(--c-line);background:var(--c-paper)}
.ptile img,.ptile svg{width:100%;height:100%;display:block;object-fit:cover}
.pcard h3{font-family:var(--f-display);font-size:var(--t-md);font-weight:500;margin:0 0 var(--s-1)}
.form label{display:block;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:.06em;text-transform:uppercase;color:var(--c-mute);margin:var(--s-4) 0 2px}
.form input,.form select,.form textarea{width:100%;padding:var(--s-2);border:var(--bw) solid var(--c-line);background:var(--c-field);font-family:var(--f-body);font-size:var(--t-base)}
.form .row{display:flex;gap:var(--s-3);flex-wrap:wrap}.form .row>div{flex:1 1 200px}
.form .btn{margin:var(--s-5) var(--s-2) 0 0}
.hint{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);margin-top:var(--s-2)}
#exportBox{width:100%;height:var(--export-h);margin-top:var(--s-3);font-family:var(--f-mono);font-size:var(--t-xs);display:none}
.empty{color:var(--c-mute);padding:var(--s-6) 0}
/* ═══ footer ═══ */
footer{background:var(--c-band);color:var(--c-on-band);border-top:var(--bw-band) solid var(--c-yellow);margin-top:var(--s-8);padding:var(--s-6) 0 var(--s-8)}
.fchips{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-bottom:var(--s-5)}
.fchip{font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-chip);text-transform:uppercase;padding:var(--s-2) var(--s-3);border:var(--bw) solid var(--c-on-band-line-strong);color:var(--c-on-band);text-decoration:none}
.fchip:hover{border-color:var(--c-yellow);color:var(--c-yellow)}
.fchip[aria-current="page"]{background:var(--c-yellow);color:var(--c-text);border-color:var(--c-yellow)}
.fshare{margin-bottom:var(--s-5)}
.fshare .lbl{display:block;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-on-band-mute);margin-bottom:var(--s-2)}
.fshare .row{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.fshare .btn{border-color:var(--c-on-band-line-strong);color:var(--c-on-band)}
.fshare .btn:hover{background:var(--c-yellow);border-color:var(--c-yellow);color:var(--c-text)}
.fnav{display:flex;justify-content:space-between;align-items:stretch;gap:var(--s-3);margin-bottom:var(--s-5)}
.fnav a{flex:1 1 0;max-width:48%;text-decoration:none;border:var(--bw) solid var(--c-on-band-line-strong);padding:var(--s-3);color:var(--c-on-band)}
.fnav a:hover{border-color:var(--c-yellow);color:var(--c-yellow)}
.fnav a.next{margin-left:auto;text-align:right}
.fnav .dir{display:block;font-family:var(--f-mono);font-size:var(--t-xs);letter-spacing:var(--ls-mono);text-transform:uppercase;color:var(--c-yellow);margin-bottom:var(--s-1)}
.fnav .ttl{font-family:var(--f-display);font-size:var(--t-md)}
.flines{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-on-band-mute);line-height:var(--lh-foot)}
.fcopy{color:var(--c-on-band)}
.fbuild,.flinks{margin-top:calc(1em * var(--lh-foot))}   /* a true blank line, not a nudge */
.paddr{font-family:var(--f-mono);font-size:var(--t-sm);word-break:break-all;margin:0 0 var(--s-3)}
.qr{margin:var(--s-5) 0 var(--s-3);width:var(--qr-w);max-width:100%;background:var(--c-surface);border:var(--bw) solid var(--c-line);padding:var(--s-3)}
.qr.sm{width:var(--qr-sm)}
.qr figcaption{font-family:var(--f-mono);font-size:var(--t-xs);color:var(--c-mute);text-align:center;margin-top:var(--s-2)}
.qrrow{display:flex;flex-wrap:wrap;gap:var(--s-3);margin:var(--s-3) 0 var(--s-5)}
.qr img,.qr svg{width:100%;height:auto;display:block}
footer .btn{border-color:var(--c-on-band-line-hard);color:var(--c-on-band)}
footer .btn:hover{background:var(--c-yellow);border-color:var(--c-yellow);color:var(--c-text)}
footer a{color:var(--c-yellow)}
/* ═══ wide screens — orijent22 rule: nothing bleeds edge to edge ═══ */
@media(min-width:760px){
  :root{--gutter:var(--gutter-wide)}
  body{background:var(--c-outside)}
  .bar,main,footer{max-width:var(--max-width);margin-left:auto;margin-right:auto}
  main,footer{background:var(--c-paper)}
  .hero,.page{background:var(--c-paper)}
  main{border-left:var(--bw) solid var(--c-line);border-right:var(--bw) solid var(--c-line)}
}
@media(min-width:1280px){ :root{--max-width:var(--max-width-wide)} }
@media (prefers-reduced-motion:reduce){*{transition:none!important}}
