/* Atlas. Full-bleed holiday photography behind smoked-glass panels.
   Rule: if text is hard to read, darken the PANEL, never the picture. */
:root {
  --ink: #f6f1e7; --soft: #dcd6ca; --dim: #a39d91;
  --glass: rgba(8, 21, 27, .56); --glass-strong: rgba(6, 16, 21, .84); --glass-light: rgba(255, 255, 255, .07);
  --line: rgba(255, 205, 160, .24); --line-soft: rgba(255, 255, 255, .12);
  --sun: #ffb067; --coral: #ff7a5c; --sea: #74e6d2; --warn: #ffd66b; --bad: #ff9486; --night: #061217;
  --serif: "Sitka Banner", "Sitka Display", "Sitka Heading", Georgia, "Times New Roman", serif;
  --label: Bahnschrift, "DIN Alternate", "Segoe UI Variable Text", "Segoe UI", sans-serif;
  --body: "Segoe UI Variable Text", "Segoe UI", system-ui, sans-serif;
  --r: 18px; --r-sm: 12px;
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body { margin: 0; background: var(--night); color: var(--ink); font: 17px/1.5 var(--body); overflow-x: hidden;
       -webkit-font-smoothing: antialiased; }
button, input, textarea { font: inherit; color: inherit; }
button { cursor: pointer; border: 0; background: none; padding: 0; }
button:focus-visible, input:focus-visible, textarea:focus-visible, [tabindex]:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; }
[hidden] { display: none !important; }
.sprite { position: absolute; width: 0; height: 0; }
.ico { width: 22px; height: 22px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.ico.big { width: 30px; height: 30px; }
*::-webkit-scrollbar { width: 10px; height: 10px; } *::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .22); border-radius: 8px; }

/* --- the picture and its wash ------------------------------------------------------------------ */
#bg { position: fixed; inset: 0; z-index: -2; background: linear-gradient(160deg, #0d3b4a, #0a2230 45%, #3a2a2a); }
#bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.4s ease; }
#bg img.on { opacity: 1; }
#wash { position: fixed; inset: 0; z-index: -1; pointer-events: none;
        background: linear-gradient(180deg, rgba(4, 14, 19, .50), rgba(4, 14, 19, .10) 30%, rgba(4, 14, 19, .16) 62%, rgba(4, 14, 19, .66)); }

/* --- glass -------------------------------------------------------------------------------------- */
.panel { background: linear-gradient(180deg, rgba(14, 32, 40, .76), rgba(6, 17, 22, .82)); border: 1px solid var(--line);
         border-radius: var(--r); -webkit-backdrop-filter: blur(7px) saturate(120%); backdrop-filter: blur(7px) saturate(120%);
         box-shadow: inset 0 1px 0 rgba(255, 240, 220, .09), 0 28px 60px -30px #000; }
.panel.strong { background: linear-gradient(180deg, rgba(12, 28, 35, .86), rgba(5, 14, 18, .92)); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
.panel.soft { background: linear-gradient(180deg, rgba(14, 32, 40, .74), rgba(6, 17, 22, .80)); }

/* --- words -------------------------------------------------------------------------------------- */
h1, h2, h3 { font-family: var(--serif); font-weight: 600; margin: 0; letter-spacing: -.01em; line-height: 1.08; text-wrap: balance; }
h1 { font-size: clamp(40px, 5.6vw, 78px); text-shadow: 0 2px 4px rgba(0, 0, 0, .5), 0 4px 36px rgba(0, 0, 0, .6); }
h2 { font-size: clamp(26px, 2.6vw, 36px); }
h3 { font-size: 23px; }
p { margin: 0; }
.tag { font: 600 12.5px/1 var(--label); font-stretch: 88%; letter-spacing: .14em; text-transform: uppercase; }
.soft { color: var(--soft); } .dim { color: var(--dim); } .small { font-size: 14.5px; }
.sea { color: var(--sea); } .sun { color: var(--sun); } .warn-ink { color: var(--warn); } .bad { color: var(--bad); }
.num { font-family: var(--label); font-stretch: 92%; font-variant-numeric: tabular-nums; letter-spacing: 0; }

/* --- top bar ------------------------------------------------------------------------------------ */
#top { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 18px; padding: 14px clamp(16px, 3vw, 44px);
       background: rgba(4, 14, 19, .58); border-bottom: 1px solid var(--line-soft);
       -webkit-backdrop-filter: blur(12px) saturate(120%); backdrop-filter: blur(12px) saturate(120%); }
.brand { display: flex; align-items: center; gap: 12px; min-height: 44px; }
.brand .mark { width: 36px; height: 36px; border-radius: 50%; background:
               radial-gradient(circle at 50% 46%, #fff3d6 0 23%, transparent 24%),
               linear-gradient(180deg, var(--sun) 0 56%, #0f5566 56% 70%, #0b3a48 70% 84%, #082a35 84%);
               box-shadow: 0 0 0 1.5px rgba(255, 230, 200, .55), 0 6px 18px -6px #000; }
.brand .word { font: 600 30px/1 var(--serif); letter-spacing: .01em; }
#nav { display: flex; gap: 4px; margin-left: 10px; }
#nav button, #owner-link { padding: 10px 16px; border-radius: 999px; font: 600 15px/1 var(--label); font-stretch: 92%; letter-spacing: .08em;
                           text-transform: uppercase; color: var(--soft); }
#nav button:hover, #owner-link:hover { color: var(--ink); background: var(--glass-light); }
#nav button.on { color: var(--night); background: var(--ink); }
#sample-pill { margin-left: auto; padding: 8px 14px; border-radius: 999px; background: rgba(255, 214, 107, .16); border: 1px solid rgba(255, 214, 107, .55);
               color: var(--warn); font: 600 13px/1 var(--label); letter-spacing: .1em; text-transform: uppercase; }
#owner-link { margin-left: 0; border: 1px solid var(--line-soft); }
#sample-pill[hidden] + #owner-link { margin-left: auto; }
#stopped { position: fixed; left: 0; right: 0; top: 0; z-index: 99; padding: 14px 16px; text-align: center; background: #b0463c; color: #fff; font-weight: 600; }

#view { padding: 6px clamp(16px, 3vw, 44px) 40px; min-height: calc(100vh - 150px); outline: none; }
#foot { display: flex; flex-wrap: wrap; gap: 10px 24px; justify-content: space-between; align-items: center;
        padding: 14px clamp(16px, 3vw, 44px) 20px; font-size: 13.5px; color: var(--soft); background: rgba(4, 14, 19, .86); }
#foot button, #foot a { color: var(--soft); text-decoration: underline; text-underline-offset: 3px; margin-left: 16px; font-size: 13.5px;
                        min-height: 32px; padding: 6px 2px; display: inline-flex; align-items: center; }
#foot button:hover { color: var(--ink); }

/* --- buttons ------------------------------------------------------------------------------------ */
.btn { display: inline-flex; align-items: center; justify-content: center; gap: 10px; min-height: 52px; padding: 0 26px; border-radius: 14px;
       font: 700 17px/1 var(--body); white-space: nowrap; transition: transform .12s, filter .12s, background .15s, border-color .15s; }
.btn:active { transform: translateY(1px); }
.btn.go { background: linear-gradient(180deg, var(--sun), var(--coral)); color: #2a1206; box-shadow: 0 14px 30px -14px var(--coral), inset 0 1px 0 rgba(255, 255, 255, .5); }
.btn.go:hover { filter: brightness(1.07); }
.btn.line { border: 1.5px solid var(--line); background: var(--glass-light); }
.btn.line:hover { border-color: var(--sun); }
.btn.small { min-height: 42px; padding: 0 16px; font-size: 15px; border-radius: 12px; }
.btn[disabled] { opacity: .5; cursor: not-allowed; }
.pick { min-height: 54px; padding: 10px 18px; border-radius: 14px; border: 1.5px solid var(--line-soft); background: var(--glass-light);
        font-weight: 600; text-align: center; transition: background .15s, border-color .15s; }
.pick:hover { border-color: var(--sun); }
.pick.on { background: var(--ink); color: var(--night); border-color: var(--ink); }
.pick small { display: block; font-weight: 400; font-size: 13px; opacity: .8; }

/* --- home --------------------------------------------------------------------------------------- */
.hero { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(20px, 3vw, 48px); align-items: end;
        min-height: min(66vh, 640px); padding: clamp(10px, 4vh, 50px) 0 26px; }
.hero-words .tag { color: var(--sun); margin-bottom: 18px; display: inline-block; }
.hero-words .tag, .hero-words p.lead, .hero-place { background: rgba(6, 17, 22, .76); border: 1px solid var(--line-soft); border-radius: 12px;
                                                     -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.hero-words .tag { padding: 8px 12px; }
.hero-words p.lead { display: inline-block; font-size: clamp(19px, 1.6vw, 24px); margin-top: 18px; padding: 8px 16px; }
.hero-place { margin-top: 18px; display: inline-flex; align-items: center; gap: 14px; padding: 8px 8px 8px 16px; border-radius: 999px; max-width: 100%; flex-wrap: wrap; }
.dots { display: flex; gap: 7px; }
.dots button { width: 16px; height: 16px; border-radius: 50%; background: rgba(255, 255, 255, .32); }
.dots button.on { background: var(--sun); }
.hero-place .where { font: 600 14px/1 var(--label); letter-spacing: .14em; text-transform: uppercase; white-space: nowrap; }

.ask { padding: 22px; }
.ask h2 { font-size: 28px; margin-bottom: 4px; }
.talk { display: flex; flex-direction: column; gap: 10px; max-height: 240px; overflow: auto; margin: 14px 0 4px; }
.talk:empty { display: none; }
.bubble { max-width: 88%; padding: 11px 15px; border-radius: 16px; }
.bubble.me { align-self: flex-end; background: rgba(255, 176, 103, .22); border: 1px solid rgba(255, 176, 103, .45); border-bottom-right-radius: 5px; }
.bubble.atlas { align-self: flex-start; background: rgba(255, 255, 255, .09); border: 1px solid var(--line-soft); border-bottom-left-radius: 5px; }
.ask textarea { width: 100%; min-height: 96px; resize: vertical; margin-top: 12px; padding: 14px 16px; border-radius: 14px; font-size: 18px; line-height: 1.45;
                background: rgba(0, 0, 0, .34); border: 1.5px solid var(--line-soft); }
.ask textarea::placeholder { color: var(--dim); }
.ask textarea:focus { border-color: var(--sun); outline: none; }
.ask textarea:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; }
.ask .row { display: flex; gap: 12px; align-items: center; margin-top: 12px; flex-wrap: wrap; }
.ask .row .btn.go { flex: 1; min-width: 220px; }
.choices { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.choices .pick { min-height: 46px; padding: 6px 16px; }

/* --- rows that slide ---------------------------------------------------------------------------- */
.band { margin-top: 34px; }
.band-head { display: flex; align-items: end; gap: 16px; margin-bottom: 14px; }
/* Titles sit on the photo, so they get their own small pane of glass rather than a darker picture. */
.band-head > div:first-child { padding: 9px 16px 10px; border-radius: 14px; background: rgba(6, 17, 22, .76); border: 1px solid var(--line-soft);
                              -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px); }
.band-head .soft { color: var(--ink); opacity: .86; }
.band-head .arrows { margin-left: auto; display: flex; gap: 8px; }
.arrow { width: 48px; height: 48px; border-radius: 50%; display: grid; place-items: center; background: var(--glass-strong); border: 1px solid var(--line); }
.arrow:hover { border-color: var(--sun); color: var(--sun); }
.arrow[disabled] { opacity: .3; cursor: default; }
.track { display: flex; gap: 16px; overflow-x: auto; scroll-snap-type: x proximity; scroll-behavior: smooth; padding: 4px 2px 16px; scrollbar-width: none; }
.track::-webkit-scrollbar { display: none; }
.track > * { scroll-snap-align: start; flex: none; }

.place { position: relative; width: 250px; height: 320px; border-radius: var(--r); overflow: hidden; text-align: left; border: 1px solid var(--line);
         box-shadow: 0 24px 50px -28px #000; transition: transform .2s; }
.place:hover { transform: translateY(-4px); }
.place img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.place:hover img { transform: scale(1.05); }
.place .glass { position: absolute; left: 10px; right: 10px; bottom: 10px; padding: 12px 14px; border-radius: 13px; background: rgba(6, 17, 22, .66);
                border: 1px solid var(--line-soft); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.place .glass h3 { font-size: 24px; }
.place .glass .facts { display: flex; gap: 12px; margin-top: 6px; font-size: 14px; color: var(--soft); }
.place .temp { position: absolute; top: 12px; right: 12px; padding: 7px 11px; border-radius: 999px; background: rgba(6, 17, 22, .7); border: 1px solid var(--line);
               font: 700 15px/1 var(--label); color: var(--sun); }
.place.on { outline: 3px solid var(--sun); outline-offset: 2px; }

.tile { width: 230px; min-height: 150px; padding: 18px; text-align: left; display: flex; flex-direction: column; gap: 8px; transition: transform .2s, border-color .2s; }
.tile:hover { transform: translateY(-4px); border-color: var(--sun); }
.tile .big-num { font: 700 38px/1 var(--label); font-stretch: 90%; }
.tile h3 { font-size: 22px; }
.tile .ico { color: var(--sun); }

/* --- the trip bar ------------------------------------------------------------------------------- */
.tripbar { position: sticky; top: 76px; z-index: 15; display: flex; gap: 8px; align-items: center; padding: 10px; margin-top: 6px; overflow-x: auto; scrollbar-width: none; }
.tripbar::-webkit-scrollbar { display: none; }
.chip { flex: none; display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 16px; border-radius: 999px; border: 1.5px solid var(--line-soft);
        background: var(--glass-light); font-weight: 600; white-space: nowrap; }
.chip:hover { border-color: var(--sun); }
.chip .ico { color: var(--sun); width: 20px; height: 20px; }
.chip.empty { border-color: var(--warn); color: var(--warn); border-style: dashed; }
.chip.empty .ico { color: var(--warn); }
a.btn { text-decoration: none; color: inherit; text-align: center; }
.tripbar .btn { margin-left: auto; flex: none; }

.notes { margin-top: 14px; display: grid; gap: 10px; }
.note { display: flex; gap: 12px; align-items: center; padding: 13px 16px; border-radius: 14px; }
.note.amber { border-color: rgba(255, 214, 107, .6); } .note.amber .ico { color: var(--warn); }
.note.tip .ico { color: var(--sea); }
.note .btn { margin-left: auto; flex: none; }

/* Many small cards: no blur behind each one (heavy on an 8 GB laptop). A darker pane does the same job. */
.track .panel, .three .panel, .tiles .panel { -webkit-backdrop-filter: none; backdrop-filter: none; background: linear-gradient(180deg, rgba(12, 28, 35, .82), rgba(6, 16, 21, .90)); }

/* --- holiday cards ------------------------------------------------------------------------------ */
.three { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.card { display: flex; flex-direction: column; overflow: hidden; width: 340px; text-align: left; }
.three .card { width: auto; }
.card .shot { position: relative; height: 170px; overflow: hidden; }
.three .card .shot { height: 210px; }
.card .shot img { width: 100%; height: 100%; object-fit: cover; display: block; }
.card .shot::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .05) 40%, rgba(6, 17, 22, .9)); }
.badge { position: absolute; z-index: 2; top: 12px; left: 12px; padding: 8px 12px; border-radius: 10px; font: 700 13px/1 var(--label); letter-spacing: .12em; text-transform: uppercase;
         background: linear-gradient(180deg, var(--sun), var(--coral)); color: #2a1206; }
.badge.b2 { background: var(--sea); } .badge.b3 { background: var(--ink); color: var(--night); }
.sample { position: absolute; z-index: 2; top: 12px; right: 12px; padding: 7px 10px; border-radius: 8px; font: 700 12px/1 var(--label); letter-spacing: .12em;
          background: rgba(6, 17, 22, .8); color: var(--warn); border: 1px solid rgba(255, 214, 107, .6); }
.card .where { position: absolute; z-index: 2; left: 16px; bottom: 10px; font: 600 13px/1 var(--label); letter-spacing: .14em; text-transform: uppercase; }
.card .body { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.card h3 { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.stars { color: var(--sun); font-size: 15px; letter-spacing: 2px; white-space: nowrap; font-family: var(--body); }
.facts { display: grid; gap: 6px; font-size: 15.5px; }
.facts div { display: flex; gap: 9px; align-items: center; }
.facts .ico { color: var(--sun); width: 19px; height: 19px; }
.price { display: flex; align-items: baseline; gap: 12px; margin-top: auto; padding-top: 6px; }
.price .total { font: 700 40px/1 var(--label); font-stretch: 90%; }
.three .price .total { font-size: 48px; }
.price .each { color: var(--soft); font-size: 15px; }
.over { color: var(--warn); font-weight: 600; font-size: 14.5px; }
.under { color: var(--sea); font-weight: 600; font-size: 14.5px; }
.why { font-size: 15px; color: var(--soft); }
.card .row { display: flex; gap: 10px; align-items: center; }
.card .row .btn { flex: 1; }
.cmp { display: inline-flex; align-items: center; gap: 8px; min-height: 48px; padding: 0 14px; border-radius: 12px; border: 1.5px solid var(--line-soft); font-weight: 600; font-size: 15px; }
.cmp.on { background: var(--sea); color: var(--night); border-color: var(--sea); }
.kind { font: 600 12px/1 var(--label); letter-spacing: .12em; text-transform: uppercase; color: var(--soft); }
.deal { align-self: flex-start; padding: 5px 10px; border-radius: 8px; background: rgba(116, 230, 210, .16); border: 1px solid rgba(116, 230, 210, .5); color: var(--sea); font-size: 13.5px; font-weight: 600; }

.day { width: 138px; padding: 12px 14px; text-align: left; border-radius: 14px; }
.day .d { font: 600 14px/1.2 var(--label); letter-spacing: .08em; text-transform: uppercase; color: var(--soft); }
.day .p { font: 700 24px/1.2 var(--label); margin-top: 4px; }
.day .s { font-size: 13.5px; font-weight: 600; }
.day.yours { border-color: var(--sun); background: rgba(255, 176, 103, .18); }
.day:hover { border-color: var(--sun); }
.sorts { display: flex; gap: 8px; margin-left: 18px; }
.sorts .pick { min-height: 42px; padding: 4px 14px; font-size: 15px; }

/* --- the pop-up sheet --------------------------------------------------------------------------- */
#shade { position: fixed; inset: 0; z-index: 40; background: rgba(2, 8, 11, .55); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); }
#sheet { position: fixed; z-index: 41; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(880px, calc(100vw - 28px)); max-height: calc(100vh - 40px);
         overflow: auto; padding: 26px; animation: rise .22s ease-out; }
#sheet.wide { width: min(1120px, calc(100vw - 28px)); padding: 0; }
@keyframes rise { from { opacity: 0; transform: translate(-50%, -46%); } }
.sheet-head { display: flex; align-items: center; gap: 14px; margin-bottom: 18px; }
.sheet-head .x { margin-left: auto; }
.grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); }
.grid.two { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }
.sheet-foot { display: flex; gap: 12px; justify-content: flex-end; margin-top: 22px; align-items: center; }
.sheet-foot .soft { margin-right: auto; }
.sheet-foot .btn.go { min-width: 220px; }
.step { display: flex; align-items: center; gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--line-soft); }
.step b { font-size: 19px; } .step .soft { font-size: 14.5px; }
.step .ctl { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.step .ctl button { width: 54px; height: 54px; border-radius: 50%; border: 1.5px solid var(--line); font-size: 28px; line-height: 1; background: var(--glass-light); }
.step .ctl button:hover { border-color: var(--sun); }
.step .ctl output { font: 700 30px/1 var(--label); min-width: 34px; text-align: center; }
.budget-read { font: 700 64px/1 var(--label); font-stretch: 90%; text-align: center; margin: 8px 0 4px; }
input[type=range] { width: 100%; height: 44px; accent-color: var(--sun); }
input[type=date], input[type=text], input[type=number] { min-height: 52px; padding: 0 14px; border-radius: 12px; background: rgba(0, 0, 0, .34); border: 1.5px solid var(--line-soft); color-scheme: dark; }
.field { display: grid; gap: 6px; } .field span { font-weight: 600; }

/* --- one holiday, opened ------------------------------------------------------------------------ */
.trip-shot { position: relative; height: 250px; overflow: hidden; border-radius: var(--r) var(--r) 0 0; }
.trip-shot img { width: 100%; height: 100%; object-fit: cover; }
.trip-shot::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0, 0, 0, .1), rgba(6, 16, 21, .95)); }
.trip-shot .over-shot { position: absolute; z-index: 2; left: 26px; right: 26px; bottom: 18px; display: flex; align-items: end; gap: 20px; }
.trip-shot .over-shot .price { margin: 0 0 0 auto; text-align: right; flex-direction: column; align-items: flex-end; gap: 2px; }
.trip-shot .x { position: absolute; z-index: 3; top: 14px; right: 14px; }
.trip-body { padding: 22px 26px 26px; display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 26px; }
.trip-body h3 { margin-bottom: 10px; }
.legs { display: grid; gap: 0; }
.leg { display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding-bottom: 16px; position: relative; }
.leg::before { content: ""; position: absolute; left: 16px; top: 34px; bottom: 2px; width: 2px; background: var(--line); }
.leg:last-child::before { display: none; }
.leg .dot { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 176, 103, .18); border: 1px solid var(--line); color: var(--sun); }
.leg .dot .ico { width: 18px; height: 18px; }
.leg b { display: block; }
table.money { width: 100%; border-collapse: collapse; font-size: 16px; }
table.money td { padding: 9px 0; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
table.money td:last-child { text-align: right; white-space: nowrap; font-family: var(--label); font-weight: 600; }
table.money tr.sum td { border-bottom: 0; font-size: 21px; font-weight: 700; padding-top: 12px; }
.st { display: inline-block; margin-left: 6px; padding: 2px 7px; border-radius: 6px; font: 700 11px/1.4 var(--label); letter-spacing: .1em; text-transform: uppercase; vertical-align: middle; }
.st.st-sample { color: var(--warn); border: 1px solid rgba(255, 214, 107, .55); }
.st.st-estimate { color: var(--sun); border: 1px solid var(--line); }
.st.st-confirmed { color: var(--sea); border: 1px solid rgba(116, 230, 210, .5); }
.checks { display: grid; gap: 8px; }
.checks div { display: flex; gap: 10px; align-items: flex-start; }
.checks .ico { color: var(--sea); margin-top: 2px; } .checks .w .ico { color: var(--warn); }
.box { padding: 14px 16px; border-radius: 14px; border: 1px solid var(--line-soft); background: rgba(255, 255, 255, .05); }
.ask-trip { display: grid; gap: 12px; }
.ask-trip .quick { display: flex; flex-wrap: wrap; gap: 8px; }   /* four buttons, all in view: no hidden ones to scroll for */
.ask-trip .quick .chip { scroll-snap-align: start; min-height: 44px; }
.ask-row { display: flex; gap: 10px; }
.ask-row input { flex: 1; min-width: 0; }
.ask-answer div { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border-radius: 12px; background: rgba(0, 0, 0, .34); }
.ask-answer .ico { color: var(--sea); margin-top: 2px; flex: none; } .ask-answer .w .ico { color: var(--warn); }
.box.amber { border-color: rgba(255, 214, 107, .55); }
.trip-actions { grid-column: 1 / -1; display: flex; gap: 12px; flex-wrap: wrap; align-items: center; }

/* --- compare ------------------------------------------------------------------------------------ */
#tray { position: fixed; z-index: 30; left: 50%; bottom: 18px; transform: translateX(-50%); display: flex; gap: 16px; align-items: center; padding: 12px 14px 12px 22px; border-radius: 999px; }
table.cmp-table { width: 100%; border-collapse: collapse; }
table.cmp-table th, table.cmp-table td { padding: 12px 14px; text-align: left; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
table.cmp-table th { font: 600 13px/1.3 var(--label); letter-spacing: .12em; text-transform: uppercase; color: var(--soft); width: 170px; }
table.cmp-table td.best { color: var(--sea); font-weight: 700; }
table.cmp-table .total { font: 700 30px/1 var(--label); }

#toast { position: fixed; z-index: 60; left: 50%; bottom: 90px; transform: translateX(-50%); padding: 14px 22px; border-radius: 14px; font-weight: 600; }

/* --- saved, help, owner ------------------------------------------------------------------------- */
.page-head { display: inline-block; margin: 22px 0 16px; padding: 16px 24px 18px; border-radius: var(--r); background: rgba(6, 17, 22, .76);
             border: 1px solid var(--line-soft); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); }
.page-head h1 { font-size: clamp(34px, 3.6vw, 52px); text-shadow: none; } .page-head p { margin-top: 6px; max-width: 60ch; }
.stack { display: grid; gap: 16px; align-content: start; }
.saved { padding: 20px; display: grid; grid-template-columns: 1fr auto; gap: 14px 20px; align-items: center; }
.pickrow { min-width: 0; }   /* lets a one-line row of choices scroll instead of stretching its panel */
.choices.one-line { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; padding-bottom: 4px; scroll-snap-type: x proximity; }
.choices.one-line::-webkit-scrollbar { display: none; }
.choices.one-line > * { flex: none; scroll-snap-align: start; }
.xlist { display: grid; gap: 10px; margin: 12px 0; }
.xrow { display: grid; grid-template-columns: 120px 1fr auto; gap: 16px; align-items: center; padding: 10px; color: inherit; text-decoration: none; }
.xrow img, .xrow > span:first-child { width: 120px; height: 90px; object-fit: cover; border-radius: 12px; }
.xrow h3 { font-size: 24px; }
.xrow .xinfo { display: grid; gap: 4px; min-width: 0; }
.xrow .xprice { display: grid; justify-items: end; gap: 2px; padding-right: 6px; }
.xrow.over { opacity: .78; }
a.xrow:hover, a.xrow:focus-visible { border-color: var(--sun); }
button.xrow { width: 100%; font: inherit; text-align: left; cursor: pointer; }
button.xrow:hover, button.xrow:focus-visible { border-color: var(--sun); }
.verdict { font-size: 14px; padding: 6px 10px; border-radius: 10px; background: var(--glass-light); }
.verdict.v-low { border-left: 3px solid var(--sea); } .verdict.v-high { border-left: 3px solid var(--warn); }
.verdict.v-usual, .verdict.v-learning { border-left: 3px solid var(--line-soft); }
@media (max-width: 720px) {
  .xrow { grid-template-columns: 76px 1fr; } .xrow img, .xrow > span:first-child { width: 76px; height: 76px; }
  .xrow .xprice { grid-column: 2; justify-items: start; padding: 0; }
}
.fares { display: grid; gap: 8px; }
.fare { display: grid; grid-template-columns: auto 1fr auto; gap: 14px; align-items: center; padding: 10px 14px; border-radius: 12px;
        background: var(--glass-light); border: 1px solid var(--line-soft); }
a.fare { color: inherit; text-decoration: none; transition: border-color .18s, background .18s; }
a.fare:hover, a.fare:focus-visible { border-color: var(--sun); background: rgba(255, 176, 103, .08); }
.fare .right { text-align: right; } .fare .go-link { color: var(--sun); font-weight: 600; margin-top: 4px; }
@media (max-width: 720px) { .fare .right { text-align: left; } }
.fare .p { font: 700 22px/1 var(--label); color: var(--sun); min-width: 64px; }
@media (max-width: 720px) { .fare { grid-template-columns: auto 1fr; } .fare > :last-child { grid-column: 2; } }
.mini { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.mini span { white-space: nowrap; padding: 4px 10px; border-radius: 999px; background: var(--glass-light); border: 1px solid var(--line-soft); font-size: 14px; }
.saved .acts { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
details.fold { padding: 4px 20px; }
details.fold summary { cursor: pointer; padding: 16px 0; font: 600 22px/1.2 var(--serif); list-style: none; display: flex; align-items: center; gap: 12px; }
details.fold summary::after { content: "+"; margin-left: auto; font: 400 28px/1 var(--body); color: var(--sun); }
details.fold[open] summary::after { content: "–"; }
details.fold .in { padding: 0 0 18px; display: grid; gap: 12px; max-width: 75ch; }
.in ul { margin: 0; padding-left: 22px; display: grid; gap: 6px; }
.tiles { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); }
.stat { padding: 16px 18px; } .stat .n { font: 700 34px/1.1 var(--label); } .stat .l { color: var(--soft); font-size: 14.5px; }
.cols { display: grid; gap: 16px; grid-template-columns: repeat(2, minmax(0, 1fr)); margin-top: 16px; }
.blk { padding: 20px; } .blk h3 { margin-bottom: 12px; }
table.plain { width: 100%; border-collapse: collapse; font-size: 15px; }
table.plain th, table.plain td { padding: 9px 8px; text-align: left; border-bottom: 1px solid var(--line-soft); vertical-align: top; }
table.plain th { color: var(--soft); font: 600 12.5px/1.3 var(--label); letter-spacing: .1em; text-transform: uppercase; }
.switch { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line-soft); }
.switch .t { margin-left: auto; width: 64px; height: 36px; border-radius: 999px; background: rgba(255, 255, 255, .18); position: relative; flex: none; transition: background .15s; }
.switch .t::after { content: ""; position: absolute; top: 4px; left: 4px; width: 28px; height: 28px; border-radius: 50%; background: #fff; transition: left .15s; }
.switch .t.on { background: var(--sea); } .switch .t.on::after { left: 32px; }
.switch .t.danger.on { background: var(--bad); }
pre.draft { white-space: pre-wrap; font: 15px/1.5 var(--body); padding: 14px; border-radius: 12px; background: rgba(0, 0, 0, .35); border: 1px solid var(--line-soft); margin: 0; }
.blank { padding: 40px 24px; text-align: center; display: grid; gap: 14px; justify-items: center; margin-top: 16px; }
.loading { padding: 70px 20px; text-align: center; }
.loading .spin { width: 54px; height: 54px; margin: 0 auto 18px; border-radius: 50%; border: 4px solid rgba(255, 255, 255, .2); border-top-color: var(--sun); animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

#nav button, #owner-link, #sample-pill { white-space: nowrap; }
#nav button, #owner-link { min-height: 44px; }   /* big enough for a finger on a tablet */
/* Tablets: the best three sit two across, and the top bar stays on one line. */
@media (max-width: 1050px) {
  .hero { grid-template-columns: 1fr; min-height: 0; } .three { grid-template-columns: repeat(2, minmax(0, 1fr)); } .trip-body { grid-template-columns: 1fr; }
  .three .card:nth-child(3):last-child { grid-column: 1 / -1; }
  .three .card:nth-child(3):last-child .shot { height: 180px; }
  .cols { grid-template-columns: 1fr; } .saved { grid-template-columns: 1fr; }
}
/* Small laptops and tablets: the top bar is the widest thing, so it gets compact before the page does. */
@media (max-width: 1180px) {
  #top { gap: 10px; } #nav { margin-left: 4px; gap: 2px; } #nav button, #owner-link { padding: 10px 9px; font-size: 13.5px; letter-spacing: .05em; }
  #sample-pill { font-size: 11px; padding: 7px 10px; letter-spacing: .05em; }
  .brand .word { font-size: 26px; }
  #easy span { display: none; } #easy { padding: 0 12px; }
}
.only-phone { display: none; }
.consent { display: flex; gap: 12px; align-items: flex-start; margin: 10px 0; font-size: 15px; line-height: 1.5; cursor: pointer; }
.consent input { width: 24px; height: 24px; flex: none; margin-top: 2px; accent-color: var(--sun); }
button.link { color: var(--sun); text-decoration: underline; text-underline-offset: 3px; font-size: inherit; }
.client { display: grid; gap: 12px; } .client.on { border-color: var(--sea); }
.client-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.client-notes { width: 100%; min-height: 64px; padding: 10px 12px; border-radius: 12px; background: rgba(0, 0, 0, .34); border: 1.5px solid var(--line-soft); resize: vertical; }
.client .acts { display: flex; gap: 10px; flex-wrap: wrap; }
.card.short input { min-height: 44px; }
.working .btn { margin-left: 0; }
.go-list { list-style: none; margin: 8px 0; padding: 0; display: grid; gap: 8px; }
.go-list li { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; } .go-list .ico { color: var(--sun); margin-top: 2px; flex: none; }
.heart { flex: none; display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-width: 48px; min-height: 48px; border-radius: 14px;
         border: 1.5px solid var(--line-soft); background: var(--glass-light); color: var(--ink); }
.heart.big { padding: 0 18px; font-weight: 700; }
.heart:hover { border-color: var(--coral); }
.heart.on { color: var(--coral); border-color: rgba(255, 122, 92, .6); background: rgba(255, 122, 92, .14); }
.heart.on .ico { fill: currentColor; }
.card.short { width: 280px; } .card.short .shot { height: 140px; } .card.short .price .total { font-size: 32px; }
.heads-up { align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px; min-height: 42px; border-radius: 999px; font-size: 14px; font-weight: 600;
            color: var(--sea); border: 1px solid rgba(116, 230, 210, .45); background: rgba(116, 230, 210, .10); }
.heads-up .ico { width: 17px; height: 17px; } .heads-up.w { color: var(--warn); border-color: rgba(255, 214, 107, .5); background: rgba(255, 214, 107, .10); }
.heads-up:hover { filter: brightness(1.15); }
.trend { display: flex; align-items: center; gap: 12px; margin: 6px 0; flex-wrap: wrap; }
.spark { width: 160px; height: 36px; } .spark polyline { fill: none; stroke: var(--sun); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.spark circle { fill: var(--sun); }
.aloud { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: fixed; z-index: 100; left: 16px; top: -60px; padding: 12px 18px; border-radius: 12px; background: var(--ink); color: var(--night); font-weight: 700; text-decoration: none; }
.skip:focus { top: 12px; }
.band-head .about { margin-left: 18px; align-self: center; }
.heat { display: flex; align-items: flex-end; gap: 6px; height: 200px; margin: 6px 0 12px; }
.heat-col { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: 6px; min-width: 0; padding: 6px 0; border-radius: 10px; }
.heat-col b { font: 700 15px/1 var(--label); } .heat-col span { font: 600 12px/1 var(--label); letter-spacing: .08em; text-transform: uppercase; color: var(--soft); }
.heat-col i { display: block; width: 100%; max-width: 44px; border-radius: 8px 8px 3px 3px; }
.heat-col i.hot { background: linear-gradient(180deg, var(--sun), var(--coral)); } .heat-col i.warm { background: linear-gradient(180deg, #ffd9a0, #e9a765); }
.heat-col i.cool { background: linear-gradient(180deg, #9fd9e6, #4c93a8); }
.heat-col.yours { background: rgba(255, 255, 255, .10); outline: 1px solid var(--line); }
.day[disabled] { opacity: .5; cursor: default; }
.secret { -webkit-text-security: disc; }
.keyrow { display: grid; gap: 8px; padding: 14px 0; border-bottom: 1px solid var(--line-soft); }
.pick.cheapest { border-color: var(--sea); } .pick.cheapest small { color: var(--sea); opacity: 1; font-weight: 700; }
.pick.cheapest.on small { color: #0b6b5d; }
.scroll-x { overflow-x: auto; }
.sheet-head .btn { margin-left: auto; } .sheet-head .btn + .x { margin-left: 0; }
.day { min-width: 138px; width: auto; }

/* --- phones: the menu moves to the bottom, pop-ups slide up from the bottom ------------------------ */
@media (max-width: 720px) {
  body { font-size: 16px; padding-bottom: 74px; }
  /* No blur on the top bar here: a blurred parent would trap the bottom menu inside it. */
  #top { padding: 10px 14px; gap: 10px; background: rgba(4, 14, 19, .88); -webkit-backdrop-filter: none; backdrop-filter: none; }
  .brand .mark { width: 30px; height: 30px; } .brand .word { font-size: 25px; }
  #nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 25; margin: 0; gap: 4px; padding: 8px 8px calc(8px + env(safe-area-inset-bottom));
         background: rgba(4, 14, 19, .92); border-top: 1px solid var(--line-soft); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
  #nav button { flex: 1; min-height: 50px; padding: 6px 2px; font-size: 13px; letter-spacing: .05em; }
  #owner-link { display: none; } .only-phone { display: inline; }
  #sample-pill { font-size: 11px; padding: 7px 10px; letter-spacing: .06em; }
  #view { padding: 4px 14px 30px; }
  h1 { font-size: 38px; } h2 { font-size: 25px; } .page-head { display: block; } .page-head h1 { font-size: 32px; }
  .hero { padding-top: 14px; gap: 16px; } .dots { display: none; } .hero-place { padding-left: 14px; border-radius: 18px; }   /* it wraps here: a pill shape would bulge */
  .ask { padding: 16px; } .ask h2 { font-size: 24px; } .ask .row .btn { flex: 1 1 100%; min-width: 0; }
  .band { margin-top: 26px; } .band-head { flex-wrap: wrap; gap: 10px; } .band-head .arrows { display: none; }
  .sorts { margin-left: 0; flex-wrap: wrap; }
  .track { gap: 12px; margin-right: -14px; padding-right: 14px; }
  .place { width: 210px; height: 270px; } .tile { width: 190px; } .card { width: min(300px, 82vw); }
  .three { grid-template-columns: 1fr; } .three .card:nth-child(3):last-child .shot { height: 210px; }
  .three .price .total, .price .total { font-size: 38px; }
  .tripbar { top: 58px; margin-left: -6px; margin-right: -6px; padding: 8px; }
  .chip { min-height: 46px; padding: 0 13px; font-size: 15px; }
  .note { flex-wrap: wrap; align-items: flex-start; } .note .btn { margin-left: 0; }
  #sheet, #sheet.wide { left: 0; right: 0; top: auto; bottom: 0; transform: none; width: 100%; max-height: 92vh; border-radius: 22px 22px 0 0; animation: up .22s ease-out; }
  #sheet { padding: 20px 16px calc(22px + env(safe-area-inset-bottom)); } #sheet.wide { padding: 0 0 env(safe-area-inset-bottom); }
  .sheet-head { flex-wrap: wrap; } .sheet-head h2 { font-size: 23px; }
  .sheet-foot .btn.go { flex: 1; min-height: 56px; }
  .grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid.two { grid-template-columns: 1fr; }
  .budget-read { font-size: 50px; }
  .step .ctl { gap: 10px; } .step .ctl button { width: 50px; height: 50px; }
  .trip-shot { height: 300px; border-radius: 22px 22px 0 0; }
  .trip-shot .over-shot { left: 16px; right: 16px; bottom: 14px; flex-direction: column; align-items: flex-start; gap: 8px; }
  .trip-shot .over-shot .price { margin: 0; flex-direction: row; align-items: baseline; gap: 10px; }
  .trip-body { padding: 16px; gap: 20px; } .trip-actions .btn { flex: 1 1 100%; }
  table.cmp-table { min-width: 520px; } table.cmp-table th { width: 96px; font-size: 11.5px; }
  table.cmp-table th, table.cmp-table td { padding: 9px 8px; font-size: 14.5px; } table.cmp-table .total { font-size: 22px; }
  #tray { left: 10px; right: 10px; bottom: 84px; transform: none; border-radius: 18px; flex-wrap: wrap; justify-content: center; padding: 12px; }
  #toast { bottom: 150px; width: calc(100% - 28px); text-align: center; }
  #foot { flex-direction: column; align-items: flex-start; padding: 14px 14px 22px; } #foot button { margin: 0 14px 6px 0; }
  .band-head .about { margin-left: 0; } .heat { gap: 3px; } .heat-col b { font-size: 12px; } .heat-col span { font-size: 10px; letter-spacing: 0; }
  .saved .acts { justify-content: flex-start; } .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); } .blk { padding: 16px; overflow-x: auto; }
}
@keyframes up { from { transform: translateY(30px); opacity: 0; } }
/* --- Easy read --------------------------------------------------------------------------------- */
#easy { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line-soft);
        font: 700 16px/1 var(--body); color: var(--ink); white-space: nowrap; }
#easy span { font: 600 13px/1 var(--label); letter-spacing: .08em; text-transform: uppercase; color: var(--soft); }
#easy[aria-pressed="true"] { background: var(--ink); color: var(--night); } #easy[aria-pressed="true"] span { color: var(--night); }
#sample-pill:not([hidden]) ~ #easy { margin-left: 0; }
#sample-pill[hidden] ~ #easy { margin-left: auto; }
#sample-pill[hidden] + #owner-link { margin-left: 0; }
body.easy { font-size: 19px; line-height: 1.7; letter-spacing: .02em; word-spacing: .1em; }
body.easy .small, body.easy .why, body.easy .each, body.easy table.plain, body.easy .facts, body.easy .go-list li, body.easy .checks { font-size: 17px; }
body.easy .tag, body.easy .where, body.easy .kind, body.easy .d { letter-spacing: .06em; font-size: 14px; }
body.easy .panel, body.easy .panel.soft, body.easy .track .panel, body.easy .three .panel { background: rgba(5, 14, 18, .93); }
body.easy .band-head > div:first-child, body.easy .page-head, body.easy .hero-words .tag, body.easy .hero-words p.lead, body.easy .hero-place { background: rgba(5, 14, 18, .9); }
body.easy *, body.easy *::before, body.easy *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
body.easy #bg img { transition: none; }
/* Narrow tablets: the top bar must still fit on one line, with Easy read and Owner reachable. */
@media (min-width: 721px) and (max-width: 940px) {
  #top { padding-left: 14px; padding-right: 14px; } #nav button, #owner-link { padding: 10px 7px; }
  #sample-pill { white-space: normal; max-width: 112px; text-align: center; line-height: 1.25; border-radius: 14px; }
}

@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; scroll-behavior: auto !important; } }

a { color: var(--sun); text-underline-offset: 3px; }
a.btn { text-decoration: none; }
.foot-note { margin-top: 16px; font-size: 14.5px; color: var(--soft); }

/* --- the finish: arrival, hover and small craft --------------------------------------------------
   Parts of a NEW page arrive one after another (#view.fresh, set in render). A redraw of the same
   page does not replay it. Nothing here darkens the picture. */
::selection { background: rgba(255, 176, 103, .42); color: #fff; }
#top { transition: background .25s, box-shadow .25s; }
#top.scrolled { background: rgba(4, 14, 19, .86); box-shadow: 0 18px 40px -26px #000; }
#nav button, #owner-link, .chip, .arrow, .cmp { transition: background .18s, color .18s, border-color .18s; }

/* Big prices: a small raised pound sign, so the number is what the eye lands on. */
.cur { font-size: .56em; font-weight: 600; vertical-align: .56em; margin-right: .08em; color: var(--sun); }
.card .price { border-top: 1px solid var(--line-soft); padding-top: 12px; }

.dots button { transition: width .3s cubic-bezier(.2, .7, .2, 1), background .3s; }
.dots button.on { width: 32px; border-radius: 999px; }

.card { transition: transform .28s cubic-bezier(.2, .7, .2, 1), border-color .28s, box-shadow .28s; }
.card .shot img { transition: transform .9s cubic-bezier(.2, .7, .2, 1); }
.place { transition: transform .28s cubic-bezier(.2, .7, .2, 1), border-color .28s, box-shadow .28s; }
@media (hover: hover) {
  .card:hover { transform: translateY(-5px); border-color: rgba(255, 205, 160, .55); box-shadow: inset 0 1px 0 rgba(255, 240, 220, .12), 0 38px 70px -32px #000; }
  .card:hover .shot img { transform: scale(1.06); }
  .place:hover { border-color: rgba(255, 205, 160, .6); box-shadow: 0 34px 60px -28px #000; }
  .btn.go:hover::after { left: 120%; transition: left .75s ease; }
}

/* The main button catches the light once when the mouse arrives. */
.btn.go { position: relative; overflow: hidden; isolation: isolate; }
.btn.go::after { content: ""; position: absolute; z-index: -1; top: 0; bottom: 0; left: -60%; width: 42%; transform: skewX(-20deg);
                 background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .42), transparent); }

@keyframes arrive { from { opacity: 0; transform: translateY(16px); } }
#view.fresh :is(.hero-words > *, .ask, .tripbar, .band-head, .track > *, .three > *, .note, .page-head, .stack > *, .blank, .waiting) {
  animation: arrive .6s cubic-bezier(.2, .7, .2, 1) backwards; }
#view.fresh .hero-words > :nth-child(2) { animation-delay: .07s; }
#view.fresh .hero-words > :nth-child(3) { animation-delay: .14s; }
#view.fresh .hero-words > :nth-child(4), #view.fresh .ask { animation-delay: .21s; }
#view.fresh :is(.track, .three, .stack, .notes) > :nth-child(2) { animation-delay: .06s; }
#view.fresh :is(.track, .three, .stack, .notes) > :nth-child(3) { animation-delay: .12s; }
#view.fresh :is(.track, .three, .stack, .notes) > :nth-child(4) { animation-delay: .18s; }
#view.fresh :is(.track, .three, .stack, .notes) > :nth-child(5) { animation-delay: .24s; }
#view.fresh :is(.track, .three, .stack, .notes) > :nth-child(n+6) { animation-delay: .30s; }

#shade { animation: fade .2s ease-out; }
@keyframes fade { from { opacity: 0; } }
#toast { animation: toast-in .25s cubic-bezier(.2, .7, .2, 1); }
@keyframes toast-in { from { opacity: 0; transform: translate(-50%, 10px); } }

/* While a search runs: the shape of what is coming, not a spinner. */
.waiting { display: inline-block; margin: 24px 0 14px; padding: 12px 20px 14px; border-radius: var(--r); background: rgba(6, 17, 22, .54); border: 1px solid var(--line-soft); }
.ghost .shot::after { display: none; }
.ghost .body { gap: 14px; padding-bottom: 28px; }
.ghost i { display: block; height: 16px; width: 62%; border-radius: 8px; }
.ghost i:first-child { height: 26px; width: 78%; } .ghost i.wide { height: 44px; width: 46%; margin-top: 10px; }
.ghost .shot, .ghost i { background: rgba(255, 255, 255, .07) linear-gradient(100deg, transparent 30%, rgba(255, 255, 255, .10) 50%, transparent 70%) 120% 0 / 220% 100% no-repeat;
                         animation: shimmer 1.3s linear infinite; }
@keyframes shimmer { to { background-position: -120% 0; } }
/* Result cards carry the small print, so their glass is darker than the rest. */
.three .panel { background: linear-gradient(180deg, rgba(10, 24, 30, .93), rgba(5, 14, 18, .96)); }

/* The name: "Atlas Flights". On the laptop version the top bar also holds Owner and the sample label,
   so on middle widths it shows just "Atlas" to keep everything on one line. */
.brand .word-2 { font-weight: 400; }
@media (min-width: 721px) and (max-width: 1400px) { body:not(.online) .brand .word-2 { display: none; } }

/* Accessibility, 16 Oct 2026 (WCAG 2.2 AA) ---------------------------------------------------------- */
/* The big headline sits on its own glass, so it reads over any photo (3:1 for large text, with room). */
.hero-words h1 { line-height: 1.22; }
.hero-words h1 .h1-glass { padding: 2px 14px; border-radius: 16px; background: rgba(6, 17, 22, .62);
                           -webkit-box-decoration-break: clone; box-decoration-break: clone; }
.hero-place { border-radius: 18px; }      /* it can wrap now it has a pause button: no bulging pill shape */
.skip:focus { outline: 3px solid var(--sun); outline-offset: 3px; }
#foot a:focus-visible, a:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; }
/* the picture dots: one Tab stop, arrows move; and a pause button for the moving pictures */
.dots button[tabindex="-1"]:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; }
.hero-pause { min-height: 32px; padding: 4px 12px; border-radius: 999px; border: 1px solid var(--line-soft); color: var(--ink);
              background: rgba(6, 17, 22, .74); font: 600 13px/1 var(--label); letter-spacing: .06em; }
.hero-pause:hover { border-color: var(--sun); }
/* placeholder text: light enough on the dark box */
.ask textarea::placeholder { color: var(--soft); }
#toast.gone { visibility: hidden; opacity: 0; }   /* hidden but still in the page, so the next message is read out */
