/* TravelScope v4 — digital: graphite, navy, steel/sky blue, dark green, amber. Fluid rem/clamp/@container, px only for hairlines. */
:root{
  color-scheme:dark;
  --void:#04060b;--deep:#070c16;--navy:#0b1628;--steel:#5d7896;--sky:#8fb8e8;--blue:#3d6fd8;
  --green:#14524a;--teal:#2fa38a;--amber:#f4a62a;--flare:#ff7a3d;--grey:#8b97a8;
  --ink:#e9eef6;--muted:#9aa6b8;--dim:#6b7789;
  --glass:rgb(160 190 230 / .05);--glass-2:rgb(160 190 230 / .085);--line:rgb(150 180 220 / .14);--line-2:rgb(150 180 220 / .24);
  --glow-amber:0 0 2.5rem -.4rem rgb(244 166 42 / .45);
  --shadow:0 1.6rem 3.5rem -1.2rem rgb(0 0 0 / .7);
  --radius:clamp(1rem,.8rem + .6vw,1.4rem);
  --gutter:clamp(1.1rem,.6rem + 2.2vw,2.25rem);
  --section:clamp(3.5rem,2rem + 5.5vw,7rem);
  --content:74rem;
  --font-body:"Manrope",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --font-display:"Unbounded","Manrope",system-ui,sans-serif;
  --step--1:clamp(.84rem,.81rem + .12vw,.92rem);
  --step-0:clamp(1rem,.96rem + .2vw,1.1rem);
  --step-1:clamp(1.12rem,1.04rem + .38vw,1.32rem);
  --step-2:clamp(1.35rem,1.18rem + .8vw,1.8rem);
  --step-3:clamp(1.7rem,1.35rem + 1.7vw,2.6rem);
  --step-4:clamp(2.2rem,1.45rem + 3.2vw,3.7rem);
  --ease:cubic-bezier(.2,.7,.2,1);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:5rem;background:var(--void)}
body{margin:0;color:var(--ink);font:400 var(--step-0)/1.7 var(--font-body);-webkit-font-smoothing:antialiased;overflow-x:clip;
  background:
    radial-gradient(60rem 40rem at 85% -10%,rgb(244 166 42 / .10),transparent 60%),
    radial-gradient(55rem 45rem at -10% 20%,rgb(61 111 216 / .16),transparent 60%),
    radial-gradient(50rem 40rem at 110% 60%,rgb(20 82 74 / .28),transparent 60%),
    radial-gradient(45rem 35rem at 10% 95%,rgb(61 111 216 / .12),transparent 60%),
    linear-gradient(180deg,var(--deep),var(--void) 40%,#05080f);
  background-attachment:fixed}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:linear-gradient(rgb(143 184 232 / .045) 1px,transparent 1px),linear-gradient(90deg,rgb(143 184 232 / .045) 1px,transparent 1px);background-size:3.5rem 3.5rem;-webkit-mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 30%,transparent 80%);mask-image:radial-gradient(ellipse 80% 60% at 50% 0%,#000 30%,transparent 80%)}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--sky);text-decoration-thickness:1px;text-underline-offset:.2em}
a:hover{color:#fff}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:.4rem}
h1,h2,h3,h4{margin:0}
h1,h2{font-family:var(--font-display);font-weight:500;line-height:1.12;letter-spacing:-.02em;text-wrap:balance}
h3{font-weight:750;line-height:1.3;letter-spacing:-.005em;text-wrap:pretty}
p{margin:0;text-wrap:pretty}
.glow{background:linear-gradient(95deg,#ffd27a,var(--amber) 35%,var(--flare));-webkit-background-clip:text;background-clip:text;color:transparent}
.cool{background:linear-gradient(95deg,var(--sky),#c6dcf7);-webkit-background-clip:text;background-clip:text;color:transparent}
.skip{position:absolute;left:-100vw}.skip:focus{left:1rem;top:1rem;z-index:20;background:var(--navy);padding:.6rem 1rem;border-radius:.6rem}
.wrap{width:min(100% - 2*var(--gutter),var(--content));margin-inline:auto;container-type:inline-size}
.wrap.narrow{--content:50rem}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:10;background:rgb(5 8 14 / .55);backdrop-filter:blur(1rem) saturate(1.3);border-bottom:1px solid transparent}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:4.4rem}
.logo{display:inline-flex;align-items:center;gap:.65rem;color:var(--ink);text-decoration:none;font-family:var(--font-display);font-weight:600;font-size:var(--step-1);letter-spacing:-.01em}
.logo svg{width:1.9rem;height:1.9rem;flex:none}
.logo span{color:var(--amber)}
.logo:hover{color:var(--ink)}
.nav{display:flex;align-items:center;gap:.3rem 1.8rem;flex-wrap:wrap;justify-content:flex-end}
.nav a{position:relative;color:var(--muted);text-decoration:none;font-size:var(--step--1);font-weight:600;padding-block:.3rem}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,var(--amber),var(--sky));transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.nav a:hover{color:var(--ink)}.nav a:hover::after{transform:scaleX(1)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.6em;padding:.95em 1.5em;border-radius:99rem;font-weight:700;font-size:var(--step--1);text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s var(--ease),background .3s,border-color .3s}
.btn svg{width:1.1em;height:1.1em;transition:transform .3s var(--ease)}
.btn:hover svg{transform:translateX(.25rem)}
.btn-primary{color:#1a1206;background:linear-gradient(95deg,#ffd27a,var(--amber) 45%,var(--flare));box-shadow:var(--glow-amber)}
.btn-primary:hover{color:#1a1206;transform:translateY(-.12rem);box-shadow:0 0 3.2rem -.2rem rgb(244 166 42 / .6)}
.btn-ghost{color:var(--ink);border:1px solid var(--line-2);background:var(--glass)}
.btn-ghost:hover{color:var(--ink);border-color:var(--sky);background:var(--glass-2)}

/* ---------- hero ---------- */
.hero{position:relative;padding-block:clamp(2.5rem,1rem + 6vw,6rem) clamp(3rem,1.5rem + 5vw,6rem)}
.hero-grid{display:grid;gap:clamp(2rem,1rem + 4vw,4rem);align-items:center}
@container (min-width:56rem){.hero-grid{grid-template-columns:1.05fr .95fr}}
.eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-size:.78rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--sky)}
.eyebrow::before{content:"";width:2.2rem;height:1px;background:linear-gradient(90deg,transparent,var(--sky))}
.hero h1{font-size:var(--step-4);margin:1.3rem 0 1.4rem}
.hero .lead{font-size:var(--step-1);color:var(--muted);max-width:40ch}
.hero .actions{display:flex;flex-wrap:wrap;gap:.8rem;margin-top:2.2rem}
.points{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin:2.2rem 0 0;padding:0;list-style:none;color:var(--muted);font-size:var(--step--1);font-weight:600}
.points li{display:inline-flex;align-items:center;gap:.5em}
.points svg{width:1.1em;height:1.1em;color:var(--teal)}

/* digital route map */
.map-stage{position:relative;aspect-ratio:1/1.02;border-radius:calc(var(--radius)*2);overflow:hidden;isolation:isolate;border:1px solid var(--line-2);box-shadow:var(--shadow);
  background:radial-gradient(80% 60% at 75% 20%,rgb(244 166 42 / .14),transparent 60%),radial-gradient(70% 60% at 10% 90%,rgb(47 163 138 / .2),transparent 60%),linear-gradient(160deg,#0c1a2c,#070d17)}
.map-stage::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgb(143 184 232 / .07) 1px,transparent 1px),linear-gradient(90deg,rgb(143 184 232 / .07) 1px,transparent 1px);background-size:8.33% 8.33%}
.routemap{position:absolute;inset:0;width:100%;height:100%}
.routemap .land{fill:url(#landG);opacity:.85}.routemap .land2{fill:#0d2a33;opacity:.75}
.routemap .contours path,.routemap .contours ellipse{fill:none;stroke:rgb(143 184 232 / .16);stroke-width:1}
.routemap .river{fill:none;stroke:rgb(143 184 232 / .35);stroke-width:2.5;stroke-linecap:round}
.routemap .route-base{fill:none;stroke:rgb(255 210 122 / .15);stroke-width:10;stroke-linecap:round}
.routemap .route{fill:none;stroke:url(#routeGrad);stroke-width:3;stroke-linecap:round;stroke-dasharray:6 8;filter:drop-shadow(0 0 6px rgb(244 166 42 / .6))}
.routemap .node{fill:#070d17;stroke-width:3}
.routemap .pulse{fill:none;stroke:#8fb8e8;stroke-width:1.5;opacity:.7;transform-box:fill-box;transform-origin:center}
.routemap .pulse.p2{stroke:#ff7a3d}
.routemap text{font:700 12px var(--font-body);fill:#dbe5f2;letter-spacing:.02em}
.routemap .sub{font-weight:600;fill:#8796ab;font-size:10.5px}
.routemap .tag rect{fill:rgb(11 22 40 / .85);stroke:rgb(150 180 220 / .3)}
.routemap .tag text{font:700 11px var(--font-body);fill:#ffd27a}
.routemap .coords text{font:600 10px ui-monospace,"SFMono-Regular",Consolas,monospace;fill:#6b7789;letter-spacing:.06em}
.trip-glass{position:absolute;left:clamp(.9rem,4%,1.6rem);bottom:clamp(.9rem,4%,1.6rem);width:min(19rem,64%);padding:1rem 1.1rem;border-radius:1.1rem;
  background:rgb(12 22 38 / .62);backdrop-filter:blur(.9rem) saturate(1.4);border:1px solid var(--line-2);box-shadow:var(--shadow);z-index:2}
.trip-glass .tg-head{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:.7rem}
.trip-glass b{font-family:var(--font-display);font-weight:500;font-size:.95rem}
.trip-glass .ok{font-size:.72rem;font-weight:800;color:#7fe0c6;letter-spacing:.06em;text-transform:uppercase}
.trip-glass ol{margin:0;padding:0;list-style:none;display:grid;gap:.45rem;font-size:.84rem;color:var(--muted)}
.trip-glass li{display:flex;align-items:center;gap:.55rem}
.trip-glass li i{width:.55rem;height:.55rem;border-radius:50%;flex:none}
.trip-glass .meta-row{display:flex;gap:.4rem;margin-top:.8rem;flex-wrap:wrap}
.temp-glass{position:absolute;right:clamp(.9rem,4%,1.6rem);top:clamp(.9rem,4%,1.6rem);display:flex;align-items:center;gap:.6rem;padding:.6rem .85rem;border-radius:.9rem;
  background:rgb(12 22 38 / .55);backdrop-filter:blur(.8rem);border:1px solid var(--line-2);font-size:.82rem;font-weight:700;z-index:2}
.temp-glass small{display:block;color:var(--muted);font-weight:600;font-size:.72rem}
.temp-glass .sun{width:1.6rem;height:1.6rem;border-radius:50%;background:radial-gradient(circle,#ffd27a,var(--amber));box-shadow:0 0 1rem rgb(244 166 42 / .7)}
@container (max-width:24rem){.temp-glass{display:none}}
.temp-glass,.trip-glass{will-change:transform}

/* ---------- sections ---------- */
section{padding-block:var(--section);position:relative}
.kicker{display:inline-flex;align-items:center;gap:.6rem;font-size:.75rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--amber);margin-bottom:1rem}
.kicker::before{content:"";width:1.6rem;height:1px;background:currentColor;opacity:.7}
.section-head{display:grid;gap:1rem;margin-bottom:clamp(2rem,1.2rem + 2.4vw,3.4rem)}
.section-head h2{font-size:var(--step-3)}
.section-head p{color:var(--muted);font-size:var(--step-1);max-width:46ch}
@container (min-width:56rem){.section-head.split{grid-template-columns:1.1fr .9fr;align-items:end;gap:3rem}}
.band{background:linear-gradient(180deg,transparent,rgb(11 22 40 / .55) 18%,rgb(11 22 40 / .55) 82%,transparent)}

.card{position:relative;background:linear-gradient(180deg,var(--glass-2),var(--glass));border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.25rem,1rem + 1vw,1.9rem);
  transition:transform .4s var(--ease),border-color .4s,box-shadow .4s var(--ease)}
.card:hover{transform:translateY(-.2rem);border-color:var(--line-2);box-shadow:var(--shadow)}
.card h3{font-size:var(--step-1);margin:1.1rem 0 .45rem}
.card p{color:var(--muted)}
.ico{width:3rem;height:3rem;border-radius:.95rem;display:grid;place-items:center;color:var(--amber);
  background:radial-gradient(circle at 30% 20%,rgb(244 166 42 / .22),rgb(244 166 42 / .06));border:1px solid rgb(244 166 42 / .22)}
.ico.blue{color:var(--sky);background:radial-gradient(circle at 30% 20%,rgb(143 184 232 / .22),rgb(143 184 232 / .05));border-color:rgb(143 184 232 / .25)}
.ico.green{color:#6fd6b8;background:radial-gradient(circle at 30% 20%,rgb(47 163 138 / .28),rgb(47 163 138 / .06));border-color:rgb(47 163 138 / .3)}
.ico svg{width:1.45rem;height:1.45rem;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chip{font-size:.76rem;font-weight:700;padding:.32em .8em;border-radius:99rem;background:rgb(143 184 232 / .1);color:#bcd1ea;white-space:nowrap;border:1px solid rgb(143 184 232 / .14)}
.chip.a{background:rgb(244 166 42 / .12);color:#ffcf7d;border-color:rgb(244 166 42 / .22)}
.chip.g{background:rgb(47 163 138 / .14);color:#7fe0c6;border-color:rgb(47 163 138 / .25)}

/* ---------- itinerary demo ---------- */
.demo{display:grid;gap:clamp(1.5rem,1rem + 3vw,3.5rem);align-items:start}
@container (min-width:58rem){.demo{grid-template-columns:.85fr 1.15fr}}
.prompt{position:relative;border-radius:var(--radius);padding:1.5rem 1.6rem;background:linear-gradient(135deg,rgb(61 111 216 / .22),rgb(20 82 74 / .2));border:1px solid var(--line-2);overflow:hidden}
.prompt::after{content:"";position:absolute;right:-4rem;top:-4rem;width:12rem;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgb(244 166 42 / .25),transparent 70%)}
.prompt small{display:block;color:var(--sky);font-weight:800;letter-spacing:.18em;text-transform:uppercase;font-size:.7rem;margin-bottom:.6rem}
.prompt p{position:relative;font-family:var(--font-display);font-weight:400;font-size:var(--step-2);line-height:1.35}
.demo-notes{display:grid;gap:1rem;margin:1.6rem 0 0;padding:0;list-style:none}
.demo-notes li{display:flex;gap:.9rem;color:var(--muted)}
.demo-notes b{color:var(--ink)}
.demo-notes svg{flex:none;width:1.3rem;height:1.3rem;margin-top:.2rem;color:var(--amber);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.trip{border-radius:calc(var(--radius)*1.2);overflow:hidden;background:linear-gradient(180deg,rgb(14 26 46 / .9),rgb(8 14 26 / .9));border:1px solid var(--line-2);box-shadow:var(--shadow)}
.trip-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.7rem 1rem;align-items:center;padding:1.2rem 1.5rem;border-bottom:1px solid var(--line);background:linear-gradient(90deg,rgb(244 166 42 / .1),transparent 60%)}
.trip-head h3{margin:0;font-size:var(--step-1)}
.days{list-style:none;margin:0;padding:.4rem 1.5rem 1.2rem;counter-reset:d;position:relative}
.days::before{content:"";position:absolute;left:2.8rem;top:1.6rem;bottom:2rem;width:1px;background:linear-gradient(180deg,var(--amber),var(--sky),var(--teal))}
.day{position:relative;display:grid;grid-template-columns:2.6rem 1fr;gap:.25rem 1rem;padding:1rem 0}
.day::before{counter-increment:d;content:counter(d);grid-row:span 3;width:2.6rem;height:2.6rem;border-radius:50%;display:grid;place-items:center;font-weight:800;font-family:var(--font-display);
  background:#0a1322;border:1px solid var(--amber);color:#ffd27a;box-shadow:0 0 1rem -.2rem rgb(244 166 42 / .55);position:relative;z-index:1}
.day:nth-child(2)::before{border-color:#f7b955}.day:nth-child(3)::before{border-color:var(--sky);color:#cfe2f8;box-shadow:0 0 1rem -.2rem rgb(143 184 232 / .5)}
.day:nth-child(4)::before{border-color:var(--teal);color:#9be8d2;box-shadow:0 0 1rem -.2rem rgb(47 163 138 / .5)}.day:nth-child(5)::before{border-color:var(--grey);color:#d7dee8;box-shadow:none}
.day h4{font-size:var(--step-0);font-weight:800}
.day p{color:var(--muted);font-size:var(--step--1)}
.day .chips{margin-top:.4rem}

/* ---------- console ---------- */
.console{position:relative;border-radius:calc(var(--radius)*1.6);padding:clamp(1rem,.6rem + 2vw,2rem);container-type:inline-size;overflow:hidden;
  background:radial-gradient(110% 80% at 100% 0%,rgb(244 166 42 / .12),transparent 50%),radial-gradient(90% 70% at 0% 100%,rgb(20 82 74 / .35),transparent 60%),linear-gradient(180deg,#0a1322,#060a12);
  border:1px solid var(--line-2);box-shadow:var(--shadow)}
.console::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgb(143 184 232 / .05) 1px,transparent 1px),linear-gradient(90deg,rgb(143 184 232 / .05) 1px,transparent 1px);background-size:2.4rem 2.4rem;-webkit-mask-image:radial-gradient(ellipse at 50% 40%,#000,transparent 85%);mask-image:radial-gradient(ellipse at 50% 40%,#000,transparent 85%);pointer-events:none}
.console-bar{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1rem;margin-bottom:1rem}
.console-bar b{font-family:var(--font-display);font-weight:500;font-size:var(--step-1)}
.live{display:inline-flex;align-items:center;gap:.5em;color:#7fe0c6;font-size:var(--step--1);font-weight:700}
.live::before{content:"";width:.55rem;height:.55rem;border-radius:50%;background:currentColor;animation:pulse 2s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgb(127 224 198 / .6)}100%{box-shadow:0 0 0 .7rem rgb(127 224 198 / 0)}}
.widgets{position:relative;display:grid;gap:.9rem;grid-template-columns:1fr}
.widgets>*{min-width:0}
@container (min-width:36rem){.widgets{grid-template-columns:repeat(2,1fr)}.w-wide{grid-column:span 2}}
@container (min-width:62rem){.widgets{grid-template-columns:repeat(4,1fr)}.w-wide{grid-column:span 2}.w-tall{grid-row:span 2}}
.w{background:rgb(143 184 232 / .045);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.2rem;display:flex;flex-direction:column;gap:.7rem;backdrop-filter:blur(.3rem)}
.w h4{font-size:.72rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.w .big{font-family:var(--font-display);font-weight:500;font-size:var(--step-3);line-height:1;letter-spacing:-.02em}
.w .sub{color:var(--muted);font-size:var(--step--1)}
.legend{display:grid;gap:.35rem;margin:0;padding:0;list-style:none;font-size:var(--step--1);color:var(--muted);flex:1;min-width:9rem}
.legend li{display:flex;align-items:center;gap:.5rem}.legend i{width:.7rem;height:.7rem;border-radius:.2rem;flex:none}
.legend b{margin-left:auto;color:var(--ink);font-weight:700}
.donut-row{display:flex;align-items:center;gap:1.3rem;flex-wrap:wrap}
.donut{width:min(8.5rem,40cqi);aspect-ratio:1;border-radius:50%;flex:none;
  background:conic-gradient(var(--amber) 0 42%,var(--sky) 0 65%,var(--teal) 0 86%,var(--grey) 0);
  -webkit-mask:radial-gradient(closest-side,transparent 64%,#000 65%);mask:radial-gradient(closest-side,transparent 64%,#000 65%);filter:drop-shadow(0 0 .8rem rgb(244 166 42 / .25))}
.bars{display:flex;align-items:flex-end;gap:.6rem;height:7rem;margin-top:1.2rem}
.bars span{flex:1;height:var(--h);border-radius:.45rem .45rem .2rem .2rem;background:linear-gradient(to top,rgb(61 111 216 / .5),var(--sky));transform-origin:bottom;position:relative}
.bars span.hot{background:linear-gradient(to top,var(--flare),#ffd27a);box-shadow:0 0 1rem -.2rem rgb(244 166 42 / .6)}
.bars span::after{content:attr(data-v);position:absolute;top:-1.35rem;left:0;right:0;text-align:center;font-size:.72rem;color:var(--muted);font-weight:700}
.bar-labels{display:flex;gap:.6rem;font-size:.72rem;color:var(--dim)}.bar-labels span{flex:1;text-align:center}
.spark .line{fill:none;stroke:var(--amber);stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:400;stroke-dashoffset:0;filter:drop-shadow(0 0 .35rem rgb(244 166 42 / .6))}
.progress{height:.55rem;border-radius:99rem;background:rgb(143 184 232 / .12);overflow:hidden}
.progress i{display:block;height:100%;width:var(--v);border-radius:inherit;background:linear-gradient(90deg,var(--teal),var(--sky),var(--amber));transform-origin:left}
.flight{display:flex;align-items:center;justify-content:space-between;gap:.6rem;font-family:var(--font-display);font-weight:500;font-size:var(--step-2)}
.flight .path{flex:1;height:1px;background:repeating-linear-gradient(90deg,var(--steel) 0 .35rem,transparent 0 .7rem);position:relative}
.flight .path::after{content:"";position:absolute;left:58%;top:50%;width:.6rem;height:.6rem;border-radius:50%;transform:translate(-50%,-50%);background:var(--amber);box-shadow:0 0 .8rem var(--amber)}
.status{display:inline-flex;align-items:center;gap:.45em;font-size:.76rem;font-weight:800;color:#7fe0c6}
.status::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:currentColor}
.translate .src{font-size:var(--step-2);font-weight:700;line-height:1.2}
.translate .dst{color:#ffcf7d;font-family:var(--font-display);font-size:var(--step-1);margin-top:.3rem}
.chat{display:grid;gap:.6rem;margin:0;padding:0;list-style:none}
.chat li{display:flex;gap:.55rem;align-items:flex-end;font-size:var(--step--1)}
.av{width:1.9rem;height:1.9rem;border-radius:50%;flex:none;display:grid;place-items:center;font-weight:800;font-size:.72rem;color:#04060b}
.msg{background:rgb(143 184 232 / .1);border:1px solid var(--line);padding:.5rem .8rem;border-radius:1rem 1rem 1rem .3rem;max-width:85%}
.chat li.me{flex-direction:row-reverse}
.chat li.me .msg{background:linear-gradient(95deg,#ffcf7d,var(--amber));color:#1a1206;border:0;border-radius:1rem 1rem .3rem 1rem;font-weight:600}
.chat li.ai .msg{background:rgb(20 82 74 / .45);border-color:rgb(47 163 138 / .35);color:#c9f1e5}
.typing{display:inline-flex;gap:.25rem;padding:.6rem .85rem;background:rgb(143 184 232 / .1);border-radius:1rem}
.typing i{width:.4rem;height:.4rem;border-radius:50%;background:var(--muted);opacity:.5}

/* ---------- bento ---------- */
.bento{display:grid;gap:clamp(.9rem,.7rem + .8vw,1.3rem);grid-template-columns:1fr}
.bento>*{min-width:0}
@container (min-width:38rem){.bento{grid-template-columns:repeat(2,1fr)}.bento .wide,.bento .wide-md{grid-column:span 2}}
@container (min-width:60rem){.bento{grid-template-columns:repeat(4,1fr)}.bento .wide-md{grid-column:auto}.bento .tall{grid-row:span 2}}
.bento .card{display:flex;flex-direction:column}
.feature-art{margin-top:1.3rem;border-radius:calc(var(--radius)*.8);overflow:hidden;border:1px solid var(--line)}
.bento .tall .feature-art{flex:1;display:flex;min-height:12rem}.bento .tall .feature-art img{width:100%;height:100%;object-fit:cover}
.card-foot{margin-top:auto;padding-top:1.2rem;display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}
.avatars{display:flex}.avatars i{width:2rem;height:2rem;border-radius:50%;border:2px solid #0b1422;margin-left:-.5rem}.avatars i:first-child{margin-left:0}
.note-s{font-size:var(--step--1);font-weight:700;color:var(--ink)}
.owe{display:flex;justify-content:space-between;gap:.8rem;width:100%;padding:.7rem .9rem;border-radius:.9rem;background:rgb(47 163 138 / .16);border:1px solid rgb(47 163 138 / .3);color:#9be8d2;font-weight:800;font-size:var(--step--1)}
.thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:.35rem;width:100%}.thumbs i{aspect-ratio:1;border-radius:.55rem}

/* ---------- grids ---------- */
.grid{display:grid;gap:clamp(.9rem,.7rem + .8vw,1.3rem);grid-template-columns:1fr}
.grid>*{min-width:0}
@container (min-width:36rem){.g4,.g2{grid-template-columns:repeat(2,1fr)}.g6{grid-template-columns:repeat(2,1fr)}}
@container (min-width:44rem){.g3{grid-template-columns:repeat(3,1fr)}}
@container (min-width:58rem){.g6{grid-template-columns:repeat(3,1fr)}}
@container (min-width:62rem){.g4{grid-template-columns:repeat(4,1fr)}}
.persona .tag{display:inline-block;margin-top:1.1rem;font-size:.76rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--steel)}

/* ---------- destinations ---------- */
.dest{padding:0;overflow:hidden;display:flex;flex-direction:column;isolation:isolate}
.dest .pic{position:relative;overflow:hidden}
.dest img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .9s var(--ease)}
.dest:hover img{transform:scale(1.05)}
.dest .pic::after{content:"";position:absolute;inset:auto 0 0;height:40%;background:linear-gradient(transparent,rgb(6 10 18 / .7))}
.dest .body{padding:1.15rem 1.35rem 1.45rem;display:grid;gap:.4rem}
.dest h3{margin:0;font-family:var(--font-display);font-weight:500;font-size:var(--step-1)}
.dest .when{font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--amber)}

/* ---------- steps ---------- */
.steps{display:grid;gap:1.2rem;grid-template-columns:1fr;counter-reset:s;list-style:none;margin:0;padding:0}
@container (min-width:50rem){.steps{grid-template-columns:repeat(3,1fr)}}
.steps li{position:relative;padding:1.7rem 1.6rem 1.8rem;border-radius:var(--radius);background:linear-gradient(180deg,var(--glass-2),var(--glass));border:1px solid var(--line);overflow:hidden}
.steps li::before{counter-increment:s;content:"0" counter(s);display:block;font-family:var(--font-display);font-weight:400;font-size:var(--step-3);line-height:1;margin-bottom:1rem;
  background:linear-gradient(95deg,#ffd27a,var(--amber),var(--flare));-webkit-background-clip:text;background-clip:text;color:transparent}
.steps li::after{content:"";position:absolute;right:-3rem;top:-3rem;width:8rem;aspect-ratio:1;border-radius:50%;border:1px solid var(--line)}
.steps h3{font-size:var(--step-1);margin-bottom:.45rem}
.steps p{color:var(--muted)}

/* ---------- principles ---------- */
.principles{position:relative;overflow:hidden;border-radius:calc(var(--radius)*1.6);padding:clamp(1.8rem,1rem + 4vw,4rem);display:grid;gap:2rem;border:1px solid var(--line-2);
  background:radial-gradient(70% 120% at 100% 0%,rgb(244 166 42 / .16),transparent 55%),radial-gradient(80% 120% at 0% 100%,rgb(61 111 216 / .2),transparent 60%),linear-gradient(135deg,#0b1628,#05080f)}
.principles h2{font-size:var(--step-3)}
.principles h3{font-size:var(--step-1);margin:.9rem 0 .4rem}
.principles p{color:var(--muted)}

/* ---------- journal ---------- */
.post{padding:0;overflow:hidden;display:flex;flex-direction:column;isolation:isolate}
.post .pic{overflow:hidden;border-bottom:1px solid var(--line)}
.post img{width:100%;aspect-ratio:16/10;object-fit:cover;transition:transform .9s var(--ease)}
.post:hover img{transform:scale(1.05)}
.post .body{padding:1.25rem 1.4rem 1.5rem;display:grid;gap:.5rem;align-content:start}
.meta{font-size:.76rem;font-weight:700;color:var(--dim);letter-spacing:.04em}
.post h3{margin:0;font-size:var(--step-1);text-wrap:pretty}
.post h3 a{color:var(--ink);text-decoration:none}.post h3 a:hover{color:#ffcf7d}
.post p{color:var(--muted);font-size:var(--step--1)}
.post.compact{display:grid;grid-template-columns:1fr}
@container (min-width:30rem){.post.compact{grid-template-columns:minmax(9rem,38%) 1fr}.post.compact .pic{border-bottom:0;border-right:1px solid var(--line)}.post.compact img{height:100%;aspect-ratio:auto;min-height:11rem}}
.journal-more{margin-top:clamp(.9rem,.7rem + .8vw,1.3rem)}

/* ---------- faq ---------- */
details{border-bottom:1px solid var(--line);padding:1.2rem .2rem}
details:first-of-type{border-top:1px solid var(--line)}
summary{cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:1rem;font-weight:750;font-size:var(--step-1);transition:color .3s}
summary:hover{color:#ffcf7d}
summary::-webkit-details-marker{display:none}
summary::after{content:"";flex:none;width:.7rem;height:.7rem;margin-top:.45rem;border-right:2px solid var(--amber);border-bottom:2px solid var(--amber);transform:rotate(45deg);transition:transform .35s var(--ease)}
details[open] summary::after{transform:rotate(225deg)}
details p{color:var(--muted);margin-top:.7rem;max-width:62ch}

/* ---------- final ---------- */
.final .panel{position:relative;overflow:hidden;border-radius:calc(var(--radius)*1.6);padding:clamp(2.2rem,1rem + 5vw,5rem);text-align:center;border:1px solid var(--line-2);
  background:radial-gradient(60% 90% at 50% 115%,rgb(244 166 42 / .28),transparent 70%),radial-gradient(50% 80% at 0% 0%,rgb(61 111 216 / .22),transparent 60%),radial-gradient(50% 80% at 100% 0%,rgb(47 163 138 / .22),transparent 60%),linear-gradient(180deg,#0b1628,#05080f)}
.final .panel::after{content:"";position:absolute;inset:0;background-image:linear-gradient(rgb(143 184 232 / .06) 1px,transparent 1px),linear-gradient(90deg,rgb(143 184 232 / .06) 1px,transparent 1px);background-size:2.6rem 2.6rem;-webkit-mask-image:radial-gradient(ellipse at 50% 100%,#000,transparent 75%);mask-image:radial-gradient(ellipse at 50% 100%,#000,transparent 75%)}
.final .panel>*{position:relative;z-index:1}
.final h2{font-size:var(--step-3)}
.final p{color:var(--muted);font-size:var(--step-1);max-width:42ch;margin:1rem auto 0}

/* ---------- footer ---------- */
.foot{padding-block:2.6rem 3rem;border-top:1px solid var(--line);color:var(--dim);font-size:var(--step--1)}
.foot .wrap{display:flex;flex-wrap:wrap;gap:1rem 2rem;justify-content:space-between;align-items:center}
.foot nav{display:flex;gap:1.4rem;flex-wrap:wrap}.foot a{color:var(--muted);text-decoration:none}.foot a:hover{color:var(--ink)}

/* ---------- article ---------- */
.note{width:min(100% - 2*var(--gutter),44rem);margin-inline:auto;padding-block:clamp(2rem,1rem + 4vw,4rem) 1rem}
.note h1{font-size:var(--step-3);margin:.4rem 0 0}
.note .cover{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);margin:1.6rem 0 2rem;box-shadow:var(--shadow)}
.note p,.note li{font-size:var(--step-1);line-height:1.75;color:#cdd6e3}
.note p+p{margin-top:1rem}
.note h2{font-size:var(--step-2);margin:2.3rem 0 .7rem}
.note ul{padding-left:1.2em}.note li+li{margin-top:.4rem}.note li::marker{color:var(--amber)}
.tip{display:flex;gap:.9rem;border-radius:var(--radius);padding:1.1rem 1.3rem;margin:1.8rem 0;background:rgb(244 166 42 / .08);border:1px solid rgb(244 166 42 / .22)}
.tip p{color:#f3e2c2}
.tip svg{flex:none;width:1.4rem;height:1.4rem;margin-top:.25rem;color:var(--amber);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.back{display:inline-flex;margin-top:2rem;font-weight:700;text-decoration:none}

@media (max-width:44em){.nav a:not(.keep){display:none}}

/* ---------- motion ---------- */
@property --n{syntax:"<integer>";inherits:false;initial-value:0}
.count{--n:var(--to);counter-reset:n var(--n)}.count::after{content:counter(n)}
@keyframes rise{from{opacity:0;transform:translateY(1.4rem)}to{opacity:1;transform:none}}
@keyframes reveal{from{opacity:0;transform:translateY(2rem) scale(.985)}to{opacity:1;transform:none}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spin-r{to{transform:rotate(-360deg)}}
@keyframes dash{to{stroke-dashoffset:-240}}
@keyframes count{from{--n:0}to{--n:var(--to)}}
@keyframes grow{from{transform:scaleY(.08);opacity:.4}to{transform:none;opacity:1}}
@keyframes grow-x{from{transform:scaleX(0)}to{transform:none}}
@keyframes draw{from{stroke-dashoffset:400}to{stroke-dashoffset:0}}
@keyframes spin-in{from{transform:rotate(-120deg) scale(.85);opacity:.3}to{transform:none;opacity:1}}
@keyframes blink{0%,80%,100%{opacity:.25}40%{opacity:1}}
@keyframes drift{from{transform:translate(-50%,1.5rem)}to{transform:translate(-50%,-1.5rem)}}
@keyframes header-in{to{background:rgb(5 8 14 / .82);border-bottom-color:var(--line)}}
@keyframes ping{from{transform:scale(1);opacity:.8}to{transform:scale(2.6);opacity:0}}
@keyframes map-par{from{transform:translateY(1.2rem) scale(1.04)}to{transform:translateY(-1.2rem) scale(1.04)}}
@media (prefers-reduced-motion:no-preference){
  .stagger>*{animation:rise .9s var(--ease) both}
  .stagger>*:nth-child(2){animation-delay:.08s}.stagger>*:nth-child(3){animation-delay:.16s}.stagger>*:nth-child(4){animation-delay:.24s}.stagger>*:nth-child(5){animation-delay:.32s}
  .map-stage{animation:rise 1.1s .15s var(--ease) both}
  .routemap .route{animation:dash 5s linear infinite}
  .routemap .pulse{animation:ping 2.4s var(--ease) infinite}.routemap .pulse.p2{animation-delay:1.2s}
  .typing i{animation:blink 1.4s infinite}.typing i:nth-child(2){animation-delay:.2s}.typing i:nth-child(3){animation-delay:.4s}
  details[open] p{animation:fade .45s var(--ease)}
  @supports (animation-timeline:view()){
    .reveal{animation:reveal linear both;animation-timeline:view();animation-range:entry 5% entry 75%}
    .days .day{animation:reveal linear both;animation-timeline:view();animation-range:entry 0% entry 90%}
    .count{animation:count linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
    .bars span{animation:grow linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
    .progress i{animation:grow-x linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
    .spark .line{animation:draw linear both;animation-timeline:view();animation-range:entry 10% entry 100%}
    .donut{animation:spin-in linear both;animation-timeline:view();animation-range:entry 0% entry 100%}
    .map-stage .routemap{animation:map-par linear both;animation-timeline:view();animation-range:cover}
  }
  @supports (animation-timeline:scroll()){.top{animation:header-in linear both;animation-timeline:scroll();animation-range:0 6rem}}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}.live::before{animation:none}}
@media (max-width:40em){.trip-glass ol{display:none}.trip-glass .tg-head{margin-bottom:.2rem}.trip-glass{width:auto;right:clamp(.9rem,4%,1.6rem)}}
.final .actions{display:flex;justify-content:center;margin-top:2rem}

figure.pic{margin:0;position:relative}
.dest img{filter:saturate(.88) brightness(.9) contrast(1.05);transition:transform .9s var(--ease),filter .6s var(--ease)}
.dest:hover img{filter:none}
.dest .pic::after{z-index:1}
