/* Topic pages (/plan/, /weather/, /international/, /shopping/, /wellness/, /family/, /auto-culture/). One accent per page, a
   living hero scene, a sticky section index, cards, steps, a tickable checklist, the climate chart and the origin picker.
   No inline styles (CSP); chart geometry arrives through CSS custom properties set from JS. */
.tp-page{--tp-accent:var(--orange);--tp-dark:#121a17}
.tp-weather{--tp-accent:#4f8fd6}.tp-international{--tp-accent:#d9a441}.tp-plan{--tp-accent:#e9fc82}.tp-shopping{--tp-accent:#c9932e}
.tp-wellness{--tp-accent:#5c8a4e}.tp-family{--tp-accent:#2a9d8f}.tp-auto-culture{--tp-accent:#c8102e}

/* Hero */
.tp-hero{position:relative;min-height:540px;display:flex;align-items:flex-end;background:var(--tp-dark);color:var(--paper);overflow:hidden;isolation:isolate}
.tp-hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3;animation:tp-breathe 26s ease-in-out infinite alternate}
.tp-hero::before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(0deg,#121a17f7 0,#121a17c0 42%,#121a1740 100%),linear-gradient(90deg,#121a17d0 0,#121a1700 70%)}
.tp-hero-inner{padding-block:70px 56px;position:relative}
.tp-hero .eyebrow{color:var(--tp-accent);margin:0 0 14px}
.tp-plan .tp-hero .eyebrow{color:var(--lime)}
.tp-hero h1{font-size:clamp(46px,7vw,104px);font-weight:900;letter-spacing:-.05em;line-height:.93;margin:0 0 22px;max-width:16ch}
.tp-lead{max-width:640px;font-size:18px;line-height:1.7;margin:0;color:#e2e6da}
.tp-stats{display:flex;gap:30px;flex-wrap:wrap;margin:30px 0 0}
.tp-stats div{display:flex;flex-direction:column-reverse;border-top:2px solid var(--tp-accent);padding-top:8px;min-width:120px}
.tp-stats dt{font-size:10px;letter-spacing:1.3px;text-transform:uppercase;color:#b9c1b0}
.tp-stats dd{margin:0 0 4px;font-size:40px;font-weight:900;letter-spacing:-1.5px;line-height:1;font-variant-numeric:tabular-nums}
.tp-credit{position:absolute;right:14px;bottom:10px;margin:0;font-size:9px;color:#ffffff99}
/* Ambient scene: per page a different motion (rain, snow-light dots, road lines, sparks), paused off screen. */
.tp-hero-scene{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.tp-hero-scene i{position:absolute;display:block;opacity:.0;animation:tp-float 9s linear infinite}
.tp-hero-scene i:nth-child(1){left:8%;animation-delay:0s}.tp-hero-scene i:nth-child(2){left:24%;animation-delay:-2s}.tp-hero-scene i:nth-child(3){left:41%;animation-delay:-4.5s}
.tp-hero-scene i:nth-child(4){left:58%;animation-delay:-1.2s}.tp-hero-scene i:nth-child(5){left:74%;animation-delay:-6s}.tp-hero-scene i:nth-child(6){left:90%;animation-delay:-3.3s}
.tp-hero-scene i{top:-10%;width:2px;height:90px;background:linear-gradient(180deg,#ffffff00,var(--tp-accent));border-radius:2px}
.tp-weather .tp-hero-scene i{width:2px;height:60px;transform:rotate(12deg);animation-duration:2.6s}
.tp-international .tp-hero-scene i{width:10px;height:10px;border-radius:50%;background:var(--tp-accent);animation-name:tp-drift;animation-duration:14s}
.tp-auto-culture .tp-hero-scene i{top:auto;bottom:18%;width:120px;height:3px;background:linear-gradient(90deg,#ffffff00,#ffd34d,#ffffff00);animation-name:tp-headlight;animation-duration:3.8s}
.tp-family .tp-hero-scene i,.tp-wellness .tp-hero-scene i{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle,var(--tp-accent),#ffffff00 70%);animation-name:tp-drift;animation-duration:16s}
.tp-offscreen .tp-hero-photo,.tp-offscreen .tp-hero-scene i{animation-play-state:paused}

/* Section index */
.tp-toc{position:sticky;top:0;z-index:6;background:var(--paper);border-bottom:1px solid var(--line)}
.tp-toc .wrap{display:flex;gap:6px;overflow-x:auto;padding-block:10px;scrollbar-width:thin}
.tp-toc a{flex:0 0 auto;font-size:11px;font-weight:700;text-decoration:none;padding:8px 12px;border:1px solid var(--line);border-radius:20px;white-space:nowrap;transition:background .2s,color .2s}
.tp-toc a:hover,.tp-toc a.tp-current{background:var(--ink);color:var(--paper);border-color:var(--ink)}

/* Sections */
.tp-section{padding-block:56px 20px;scroll-margin-top:60px}
.tp-section:nth-child(even){background:#e9e7dc}
.tp-head{display:grid;grid-template-columns:auto 1fr;gap:4px 20px;align-items:baseline;margin-bottom:26px;max-width:900px}
.tp-number{grid-row:1/3;font-size:54px;font-weight:900;letter-spacing:-3px;line-height:1;color:transparent;-webkit-text-stroke:2px var(--ink)}
.tp-head h2{font-size:clamp(28px,3.4vw,48px);letter-spacing:-1.8px;line-height:1.05;margin:0}
.tp-head p{grid-column:2;font-size:15px;line-height:1.7;color:#4a544c;margin:6px 0 0}
.tp-text{max-width:760px}.tp-text p{font-size:17px;line-height:1.8;margin:0 0 16px}
.tp-facts{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.tp-facts li{background:#f7f5ed;border:1px solid var(--line);padding:20px 20px 18px;transition:transform .3s,border-color .3s}
.tp-facts li:hover{transform:translateY(-3px);border-color:var(--ink)}
.tp-fact-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--ink);color:var(--tp-accent);font-size:20px;margin-bottom:12px}
.tp-plan .tp-fact-icon{color:var(--lime)}
.tp-facts h3{font-size:18px;letter-spacing:-.4px;margin:0 0 6px}.tp-facts p{font-size:14px;line-height:1.65;margin:0;color:#3f4941}
.tp-steps{list-style:none;counter-reset:tp;margin:0;padding:0;display:grid;gap:12px;max-width:900px}
.tp-steps li{counter-increment:tp;position:relative;padding:18px 20px 18px 78px;background:#f7f5ed;border:1px solid var(--line)}
.tp-steps li::before{content:counter(tp,decimal-leading-zero);position:absolute;left:18px;top:14px;font-size:34px;font-weight:900;letter-spacing:-2px;color:var(--tp-accent)}
.tp-plan .tp-steps li::before{color:var(--ink)}
.tp-steps h3{font-size:19px;margin:0 0 6px}.tp-steps p{font-size:14px;line-height:1.7;margin:0 0 6px}
.tp-checklist{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.tp-checklist label{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;background:#f7f5ed;border:1px solid var(--line);cursor:pointer;transition:background .25s,border-color .25s}
.tp-checklist input{width:22px;height:22px;flex:0 0 22px;margin:2px 0 0;accent-color:var(--ink)}
.tp-checklist strong{display:block;font-size:15px}.tp-checklist small{display:block;font-size:12px;line-height:1.55;color:var(--muted);margin-top:4px}
.tp-checklist label:has(input:checked){background:var(--lime);border-color:var(--ink)}
.tp-checklist label:has(input:checked) strong{text-decoration:line-through;text-decoration-thickness:2px}
.tp-checklist-note,.tp-note{font-size:11px;color:var(--muted);margin:12px 0 0}
.tp-places{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.tp-place a{display:flex;flex-direction:column;height:100%;text-decoration:none;background:#f7f5ed;border:1px solid var(--line);transition:transform .25s,box-shadow .25s}
.tp-place a:hover{transform:translateY(-4px);box-shadow:0 12px 24px #19231f22}
.tp-place-photo{display:block;aspect-ratio:1.55;overflow:hidden;background:var(--tp-dark)}
.tp-place-photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s}.tp-place a:hover .tp-place-photo img{transform:scale(1.05)}
.tp-place-logo{display:grid;place-items:center;background:#fff}.tp-place-logo img{width:auto;height:auto;max-width:60%;max-height:60%;object-fit:contain}.tp-logo-light{background:var(--ink)}
.tp-place-mono{display:grid;place-items:center;background:var(--tp-accent)}.tp-place-mono b{font-size:56px;font-weight:900;color:#fff}
.tp-place-body{display:flex;flex-direction:column;gap:5px;padding:13px 14px 16px}
.tp-place-body strong{font-size:17px;line-height:1.2;letter-spacing:-.4px}.tp-place-body small{font-size:11px;color:var(--muted)}.tp-place-body span{font-size:12px;line-height:1.55;color:#4a544c}
.tp-more{margin:16px 0 0}
.tp-events{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.tp-events a{display:flex;flex-direction:column;gap:5px;height:100%;padding:16px;text-decoration:none;background:#f7f5ed;border:1px solid var(--line);border-left:5px solid var(--tp-accent)}
.tp-plan .tp-events a{border-left-color:var(--ink)}
.tp-events time{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px}.tp-events strong{font-size:17px;line-height:1.25}.tp-events small{font-size:12px;color:var(--muted)}
.tp-empty{font-size:14px}
.tp-trips{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.tp-trips a{display:flex;flex-direction:column;height:100%;text-decoration:none;background:#f7f5ed;border:1px solid var(--line)}
.tp-trips img{width:100%;aspect-ratio:1.7;object-fit:cover;display:block}.tp-trips strong{font-size:19px;line-height:1.2;padding:14px 15px 4px}.tp-trips span{font-size:13px;line-height:1.6;color:#4a544c;padding:0 15px 16px}
.tp-links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.tp-links a{display:flex;flex-direction:column;gap:6px;height:100%;padding:16px;text-decoration:none;border:1px solid var(--ink);transition:background .2s,color .2s}
.tp-links a:hover{background:var(--ink);color:var(--paper)}.tp-links strong{font-size:16px}.tp-links span{font-size:13px;line-height:1.55}
.tp-faq{max-width:860px}.tp-faq details{border-bottom:1px solid var(--line)}
.tp-faq summary{cursor:pointer;padding:16px 0;font-size:17px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:20px}
.tp-faq summary::after{content:"+";font-size:24px;line-height:1;transition:transform .25s}.tp-faq details[open] summary::after{transform:rotate(45deg)}
.tp-faq summary::-webkit-details-marker{display:none}.tp-faq details p{font-size:15px;line-height:1.75;margin:0 0 18px}
.tp-table-wrap{overflow-x:auto}.tp-table{border-collapse:collapse;min-width:560px;width:100%;font-size:14px}
.tp-table th,.tp-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line)}.tp-table thead th{font-size:11px;letter-spacing:1px;text-transform:uppercase;background:var(--ink);color:var(--paper)}

/* Live forecast */
.tp-forecast ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(8,minmax(150px,1fr));gap:8px;overflow-x:auto}
.tp-forecast li{display:flex;flex-direction:column;gap:6px;padding:14px;background:var(--tp-dark);color:var(--paper);min-height:190px}
.tp-forecast li.tp-night{background:#0c1220}
.tp-wx-symbol{font-size:36px;line-height:1;color:#ffd34d}.tp-night .tp-wx-symbol{color:#b9c4ff}
.tp-forecast strong{font-size:12px;text-transform:capitalize}.tp-forecast b{font-size:30px;font-weight:900;letter-spacing:-1px}.tp-forecast b small{font-size:12px;font-weight:400;color:#b9c1b0}
.tp-forecast span{font-size:12px;line-height:1.45;color:#dfe3d6}.tp-forecast li>small{font-size:11px;color:#9fb7ff}

/* Climate chart */
.tp-climate-chart{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px;align-items:end;height:300px;padding:14px;background:var(--tp-dark);border-radius:4px}
.tp-month{position:relative;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;background:none;border:0;padding:0 0 4px;color:#cfd6c6;cursor:pointer}
.tp-month b{font-size:10px;letter-spacing:.6px;text-transform:uppercase;margin-top:6px}
.tp-bar{--lo:20;--hi:60;position:absolute;left:18%;right:18%;bottom:calc(40px + (100% - 64px) * var(--lo) / 100);height:calc((100% - 64px) * (var(--hi) - var(--lo)) / 100);border-radius:20px;background:linear-gradient(0deg,#4f8fd6,#ff9e5e);transition:height .9s cubic-bezier(.3,1.2,.4,1),bottom .9s cubic-bezier(.3,1.2,.4,1),filter .2s}
.tp-chart-ready .tp-bar{transition-delay:calc(var(--i,0) * 60ms)}
.tp-chart-waiting .tp-bar{height:4px;bottom:40px}
.tp-bar i{position:absolute;left:50%;transform:translateX(-50%);font-style:normal;font-size:11px;font-weight:700;color:#fff;white-space:nowrap}
.tp-high{top:-18px}.tp-low{bottom:-18px}
.tp-bud{--at:50;position:absolute;left:8%;right:8%;bottom:calc(40px + (100% - 64px) * var(--at) / 100);height:2px;background:var(--lime);box-shadow:0 0 6px var(--lime)}
.tp-month[aria-pressed=true]{color:#fff}.tp-month[aria-pressed=true] .tp-bar{filter:drop-shadow(0 0 10px #ffd34d)}
.tp-month[aria-pressed=true] b{color:var(--lime)}
.tp-climate-panels{margin-top:14px}
.tp-climate-panel{background:#f7f5ed;border:1px solid var(--line);padding:20px 22px;animation:tp-in .35s ease-out}
.tp-climate-panel h3{font-size:30px;letter-spacing:-1px;margin:0 0 12px;text-transform:capitalize}
.tp-climate-panel dl{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:0 0 14px}
.tp-climate-panel dt{font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.tp-climate-panel dd{margin:2px 0 0;font-size:22px;font-weight:900}.tp-climate-panel dd small{font-size:12px;font-weight:400;color:var(--muted)}
.tp-climate-panel p{font-size:15px;line-height:1.7;margin:0 0 8px}

/* Origin picker */
.tp-origin-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.tp-origin-tabs button{border:1px solid var(--ink);background:transparent;padding:11px 16px;font-size:13px;font-weight:700;border-radius:24px;color:var(--ink);transition:background .2s,color .2s}
.tp-origin-tabs button[aria-selected=true]{background:var(--ink);color:var(--paper)}
.tp-origin-panel{background:#f7f5ed;border:1px solid var(--line);border-top:5px solid var(--tp-accent);padding:22px 24px;max-width:900px;animation:tp-in .35s ease-out}
.tp-origin-entry{font-size:18px;line-height:1.7;margin:0 0 14px}
.tp-origin-panel h3{font-size:15px;text-transform:uppercase;letter-spacing:1px;margin:16px 0 8px}
.tp-origin-panel ul{margin:0;padding-left:20px}.tp-origin-panel li{font-size:15px;line-height:1.7}
.tp-origin-links{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 0}.tp-origin-links a{font-size:12px;font-weight:700}

.tp-sources{padding-block:30px 10px}.tp-sources summary{cursor:pointer;font-size:13px;font-weight:700}.tp-sources li{font-size:13px;line-height:1.8}

/* Reveals */
.tp-js .tp-facts li,.tp-js .tp-steps li,.tp-js .tp-place,.tp-js .tp-events li,.tp-js .tp-trips li,.tp-js .tp-links li{opacity:0;transform:translateY(16px);transition:opacity .5s,transform .5s}
.tp-js .tp-in{opacity:1!important;transform:none!important}

@keyframes tp-breathe{from{transform:scale(1.03)}to{transform:scale(1.13)}}
@keyframes tp-float{0%{transform:translateY(0);opacity:0}10%{opacity:.7}90%{opacity:.5}100%{transform:translateY(720px);opacity:0}}
@keyframes tp-drift{0%{transform:translate(0,620px);opacity:0}15%{opacity:.8}100%{transform:translate(40px,-80px);opacity:0}}
@keyframes tp-headlight{0%{transform:translateX(-200px);opacity:0}20%{opacity:.9}100%{transform:translateX(1500px);opacity:0}}
@keyframes tp-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

@media (max-width:1100px){.tp-places{grid-template-columns:repeat(3,minmax(0,1fr))}.tp-events,.tp-trips{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:760px){.tp-places{grid-template-columns:repeat(2,minmax(0,1fr))}.tp-events,.tp-trips{grid-template-columns:1fr}.tp-hero{min-height:460px}.tp-climate-chart{height:240px;gap:3px;padding:10px 6px}.tp-month b{font-size:8px}.tp-bar i{font-size:9px}.tp-number{font-size:40px}.tp-steps li{padding-left:64px}}
@media (max-width:480px){.tp-places{grid-template-columns:1fr}.tp-checklist{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.tp-page *,.tp-page *::before,.tp-page *::after{animation:none!important;transition:none!important}.tp-js .tp-facts li,.tp-js .tp-steps li,.tp-js .tp-place,.tp-js .tp-events li,.tp-js .tp-trips li,.tp-js .tp-links li{opacity:1;transform:none}.tp-hero-scene{display:none}}
