/* source: font-system.css */
/* The document head owns the single Google Fonts request. Do not import it
   again from a CSS bundle: that previously requested a second weight set and
   delayed font discovery. Roamnessa uses two fonts: Oxanium for signature moments,
   Funnel Sans for every functional and supporting interface element. */
body,
body button,
body input,
body select,
body textarea,
body summary,
body * {
  font-family: 'Funnel Sans', Arial, sans-serif !important;
}

body h1,
body .brand,
body .mark,
body .hero h1,
body .optimizer-copy h1,
body .destination-hero h1 {
  font-family: Oxanium, Arial, sans-serif !important;
  font-weight: 700 !important;
}

/* Keep the two signature marketing lines expressive without turning the rest
   of the UI into a multi-font system. */
body .hero h1 em,
body .how h2 em {
  font-family: Georgia, 'Times New Roman', serif !important;
  font-style: italic;
  font-weight: 400 !important;
  letter-spacing: -0.045em;
}

/* source: styles.css */
:root{--ink:var(--color-ink-900);--cream:var(--color-cream);--paper:var(--color-paper);--orange:var(--color-coral-500);--lime:var(--color-lime-signal);--green:var(--color-forest-700);--muted:var(--color-text-muted);--line:var(--color-border)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Funnel Sans,Arial,sans-serif}.shell{max-width:1180px;margin:auto;padding-left:28px;padding-right:28px}.announcement{background:var(--color-ink-900);color:var(--color-cream);text-align:center;padding:10px;font-size:12px;font-weight:700;letter-spacing:.02em}.announcement span{color:var(--color-border);margin-left:10px}.nav{height:84px;display:flex;align-items:center;justify-content:space-between}.brand{font-size:24px;font-weight:800;color:var(--ink);text-decoration:none;letter-spacing:-1.5px;display:flex;align-items:center;gap:8px}.brand-mark{background:var(--orange);border-radius:8px;color:var(--color-paper);font-family:Georgia,serif;font-style:italic;font-size:20px;width:27px;height:27px;display:grid;place-items:center}.nav nav{display:flex;gap:32px}.nav a,.footer a{color:var(--ink);text-decoration:none;font-size:14px;font-weight:700}.support{border:1px solid var(--ink);background:transparent;border-radius:30px;padding:10px 16px;font:700 13px Funnel Sans}.support span{margin-left:6px}.hero{position:relative;padding-top:90px;padding-bottom:104px;overflow:hidden;min-height:610px}.eyebrow,.section-label{font:500 11px 'Funnel Sans',monospace;text-transform:uppercase;letter-spacing:.13em;color:var(--color-text-muted)}.eyebrow i{background:var(--orange);width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:8px}h1,h2{font-size:clamp(46px,6vw,78px);line-height:.98;letter-spacing:-.07em;margin:20px 0 22px;font-weight:800}h1 em,h2 em{font-family:Georgia,serif;font-weight:400;color:var(--orange)}.hero-copy{font-size:17px;line-height:1.7;max-width:505px;color:var(--muted);margin-bottom:29px}.search-box{position:relative;display:flex;background:var(--color-paper);border:1px solid var(--color-cream);box-shadow:0 15px 33px color-mix(in srgb,var(--color-ink-900) 7%,transparent);border-radius:12px;width:min(630px,100%);height:68px;z-index:3}.search-icon{font:30px Georgia;padding:13px 15px 10px 20px}.search-box input{border:0;outline:0;font:500 15px Funnel Sans;flex:1;min-width:0}.search-box button,.optimize-btn,.cta button{border:0;background:var(--orange);color:var(--color-paper);border-radius:9px;margin:7px;padding:0 19px;font:800 13px Funnel Sans}.search-box button span,.optimize-btn span,.select-plan span,.cta button span{font-size:19px;margin-left:8px}.suggestions{position:absolute;background:var(--color-paper);left:0;right:0;top:75px;border:1px solid var(--color-cream);border-radius:10px;overflow:hidden;box-shadow:0 12px 28px color-mix(in srgb,var(--color-ink-900) 13%,transparent)}.suggestions button{margin:0!important;padding:11px 18px!important;width:100%;color:var(--ink)!important;background:var(--color-paper)!important;text-align:left;border-radius:0!important}.suggestions small{float:right;color:var(--muted)}.popular{display:flex;gap:9px;align-items:center;margin-top:16px;font-size:12px;color:var(--color-leaf-400)}.popular button{border:0;background:var(--color-cream);border-radius:18px;padding:7px 10px;font:600 12px Funnel Sans;color:var(--color-text-muted)}.hero-art{position:absolute;right:-110px;top:8px;width:590px;height:590px;opacity:.95}.globe{height:100%;border-radius:50%;background:radial-gradient(circle at 35% 31%,var(--color-citron-100) 0 4%,var(--color-lime-signal) 17%,var(--color-leaf-400) 47%,var(--color-forest-700) 77%,var(--color-ink-900) 100%);box-shadow:inset -35px -30px 70px color-mix(in srgb,var(--color-ink-900) 56%,transparent),0 40px 45px color-mix(in srgb,var(--color-ink-900) 13%,transparent);position:relative}.globe:before{content:'';position:absolute;inset:60px 0;border:1px solid color-mix(in srgb,var(--color-citron-100) 33%,transparent);border-radius:50%;transform:rotate(-35deg)}.orbit{position:absolute;border:1px solid color-mix(in srgb,var(--color-cream) 56%,transparent);border-radius:50%;width:110%;height:30%;left:-5%;top:36%}.orbit.two{transform:rotate(66deg)}.pin{position:absolute;color:var(--color-paper);font-size:22px;text-shadow:0 2px 7px var(--color-ink-900)}.pin-one{top:28%;left:34%}.pin-two{top:52%;left:65%}.pin-three{top:67%;left:31%}.trust{display:flex;justify-content:space-between;padding-top:29px;padding-bottom:29px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.trust div{display:flex;gap:8px;align-items:baseline}.trust strong{font-size:20px;letter-spacing:-1px}.trust span{font-size:12px;color:var(--muted)}.plans-section{padding-top:120px;padding-bottom:120px}.section-intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:48px}.section-intro h2,.how h2{font-size:51px;margin:15px 0 0}.section-intro p{max-width:350px;color:var(--muted);font-size:14px;line-height:1.7}.finder{background:var(--paper);padding:26px;border:1px solid var(--color-cream);border-radius:15px}.finder-top{display:flex;align-items:center;justify-content:space-between}.active-country{display:flex;gap:11px;align-items:center}.active-country>span{font-size:30px}.active-country small{display:block;font-size:11px;color:var(--muted)}.active-country strong{font-size:18px}.change-destination{background:transparent;border:0;text-decoration:underline;font:700 12px Funnel Sans}.plan-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.pricing-note{font-size:10px;color:var(--color-leaf-400);margin:17px 0 0}.optimizer{background:var(--green);color:var(--color-paper);padding:100px 0}.optimizer-grid{display:grid;grid-template-columns:1fr 470px;gap:80px;align-items:center}.light{color:var(--color-border)}.optimizer h2{font-size:55px;margin-top:15px}.optimizer h2 em{color:var(--lime)}.optimizer-copy>p{color:var(--color-border);max-width:410px;line-height:1.7;font-size:15px}.optimizer-steps{margin-top:35px;font:12px 'Funnel Sans',monospace;color:var(--color-border);display:flex;gap:9px;flex-wrap:wrap}.optimizer-steps span{color:var(--lime)}.trip-card{background:var(--color-cream);color:var(--ink);border-radius:14px;padding:25px}.trip-card label{display:block;font-size:12px;font-weight:800;margin-bottom:17px}.chips{display:flex;gap:5px;flex-wrap:wrap;margin-top:9px}.chips span{font:600 11px Funnel Sans;background:var(--color-cream);border-radius:15px;padding:5px 8px}.chips button{border:0;background:transparent;padding:0 0 0 3px}.trip-card input,.trip-card select{width:100%;border:1px solid var(--color-border);border-radius:6px;background:var(--color-paper);padding:11px;font:500 12px Funnel Sans;margin-top:8px}.field-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.toggle-row{display:flex!important;align-items:center;gap:9px;margin:4px 0 15px!important}.toggle-row input{display:none}.toggle{width:30px;height:17px;border-radius:15px;background:var(--color-border);position:relative}.toggle:before{content:'';background:var(--color-paper);width:13px;height:13px;border-radius:50%;position:absolute;top:2px;left:2px;transition:.2s}.toggle-row input:checked+.toggle{background:var(--green)}.toggle-row input:checked+.toggle:before{left:15px}.optimize-btn{width:100%;height:48px;margin:0}.recommendation{margin-top:15px;border-radius:8px;background:var(--color-citron-100);padding:12px;color:var(--color-forest-700)}.recommendation strong{font-size:12px}.recommendation p{font-size:11px;line-height:1.5;margin:4px 0}.recommendation span{font:500 11px 'Funnel Sans',monospace}.how{padding-top:120px;padding-bottom:120px;display:grid;grid-template-columns:31% 1fr;gap:70px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;padding-top:16px}.steps b{font:500 12px 'Funnel Sans',monospace;color:var(--orange)}.steps h3{font-size:17px;margin:17px 0 9px}.steps p{font-size:13px;line-height:1.7;color:var(--muted)}.cta{background:var(--color-lime-signal);border-radius:14px;margin-bottom:70px;padding:43px 50px;display:flex;justify-content:space-between;align-items:center}.cta>div{display:flex;gap:22px;align-items:center}.cta span{font-size:36px}.cta h2{font-size:35px;margin:0}.cta button{height:48px;margin:0;background:var(--ink)}.footer{border-top:1px solid var(--line);padding-top:30px;padding-bottom:40px;display:flex;align-items:center;justify-content:space-between}.footer p{font-size:12px;color:var(--muted)}.footer div{display:flex;gap:20px}.footer a{font-size:11px}.toast{position:fixed;bottom:25px;left:50%;transform:translate(-50%,20px);opacity:0;background:var(--color-ink-900);color:var(--color-paper);padding:12px 16px;border-radius:8px;font-size:12px;transition:.25s;z-index:10}.toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:800px){.nav nav,.support{display:none}.hero{padding-top:62px;min-height:610px}.hero-art{width:390px;height:390px;right:-150px;top:200px;opacity:.65}.trust{gap:15px;overflow:auto}.trust div{min-width:max-content}.section-intro,.how{display:block}.section-intro p{margin-top:20px}.plan-grid,.optimizer-grid,.steps{grid-template-columns:1fr}.optimizer-grid{gap:40px}.optimizer{padding:75px 0}.how{padding-top:80px;padding-bottom:80px}.steps{gap:20px}.cta{padding:30px;display:block}.cta>div{margin-bottom:20px}.cta h2{font-size:28px}.footer{display:block}.footer p{margin:15px 0}.footer div{flex-wrap:wrap}.search-box{height:62px}.search-box button{padding:0 11px;font-size:11px}.popular{overflow:auto;white-space:nowrap}.plans-section{padding-top:80px;padding-bottom:80px}}@media(max-width:430px){.shell{padding-left:18px;padding-right:18px}.finder{padding:16px}.plan-grid{gap:10px}.active-country strong{font-size:16px}.change-destination{font-size:10px}.optimizer-grid{padding-left:18px;padding-right:18px}.trip-card{padding:18px}}
.recovery-row{display:flex;justify-content:flex-end;margin-top:var(--space-4)}.esim-recovery{display:inline-flex;align-items:center;gap:7px;color:var(--green);font:700 12px Funnel Sans;text-decoration:none;border-bottom:1px solid var(--color-leaf-400);padding-bottom:2px}.esim-recovery span{color:currentColor;font-size:16px;line-height:1}.esim-recovery:hover{color:var(--orange);border-color:var(--orange)}@media(max-width:800px){.recovery-row{justify-content:flex-start;margin-top:var(--space-4)}}
.search-box button{transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}.search-box button:hover{filter:brightness(.96);box-shadow:0 5px 12px color-mix(in srgb,var(--color-coral-500) 20%,transparent)}.search-box button:active,.search-box button.is-submitted{transform:translateY(1px) scale(.97);box-shadow:inset 0 2px 5px color-mix(in srgb,var(--color-coral-500) 33%,transparent)}
/* `hidden` makes Safari treat the page as a scroll container, which can let a
   sticky header's first row slide beneath the browser chrome. `clip` prevents
   horizontal overflow without changing the scrolling ancestor. */
html{overflow-x:clip}body{max-width:100%;overflow-x:clip}
.trust-review-link{display:flex;gap:8px;align-items:baseline;color:var(--ink);text-decoration:none;padding:7px 10px;margin:-7px -10px;border-radius:9px}.trust-review-link strong{color:var(--ink)}.trust-review-link span{color:var(--muted);text-decoration:underline;text-underline-offset:4px}.trust-review-link:hover{background:var(--color-cream)}.trust-review-link:hover strong,.trust-review-link:hover span{color:var(--green)}
/* The destination box is already a large, clearly bounded field. Keep a tap
   or click calm instead of adding a second ring around the whole search bar. */
.search-box:focus-within{border-color:var(--color-border);box-shadow:0 15px 33px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}.search-box input:focus-visible{outline:0!important}

/* Editorial sections use a wider frame than the plan finder. This keeps
   functional product decisions dense while the brand story has room to move. */
.editorial-shell{width:min(1360px,calc(100% - (var(--space-6) * 2)));margin-inline:auto}
.hero--editorial{max-width:1360px}
.how.editorial-shell{grid-template-columns:minmax(260px,.72fr) minmax(0,1.28fr);gap:var(--space-9)}
.cta.editorial-shell{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--space-8)}
.cta.editorial-shell button{justify-self:end}
@media(max-width:800px){.editorial-shell{width:calc(100% - (var(--space-4) * 2))}.how.editorial-shell{display:block}.cta.editorial-shell{display:block}.cta.editorial-shell button{justify-self:auto;margin-top:var(--space-5)}}

/* Preserve a readable destination prompt beside the mobile call to action. */
@media(max-width:600px){.hero .search-box input,.hero .search-box input::placeholder{font-size:11px!important;letter-spacing:0}.hero .search-box .search-icon{flex:0 0 auto;font-size:24px;padding-right:10px;padding-left:16px}}
@media(max-width:430px){.search-icon{padding-left:var(--space-3);padding-right:var(--space-2);font-size:24px}.search-box input{font-size:11px}.search-box button{padding:0 var(--space-2);font-size:10px}.search-box button span{font-size:15px;margin-left:var(--space-1)}}

/* source: globe-treatment.css */
/* Restore the original bright, travel-editorial globe: the lime core carries
   the light, while the outer greens give it depth. */
.hero-art { opacity: .95; }

.globe {
  background: radial-gradient(circle at 35% 31%, var(--color-citron-100) 0 4%, var(--color-lime-signal) 17%, var(--color-leaf-400) 47%, var(--color-moss-600) 77%, var(--color-ink-900) 100%);
  box-shadow: inset -35px -30px 70px color-mix(in srgb,var(--color-ink-900) 56%,transparent), 0 40px 45px color-mix(in srgb,var(--color-ink-900) 13%,transparent);
}

.globe::before { border-color: color-mix(in srgb,var(--color-citron-100) 33%,transparent); }
.orbit { border-color: color-mix(in srgb,var(--color-citron-100) 56%,transparent); }

@media (max-width: 800px) {
  .hero-art { opacity: .65; }
}

/* source: cta-lime.css */
/* The destination CTA keeps its original generous size and vivid lime surface. */
.cta { background: var(--color-lime-signal); }

/* The announcement has two messages: the promise leads, the offer supports. */
.announcement { color: var(--color-paper); }
.announcement span { color: var(--color-lime-signal); }

/* Give the navigation mark and wordmark their own breathing room. */
.brand { gap: var(--brand-wordmark-gap); }

/* source: editorial-widths.css */
/* Storytelling content sits inside a narrower, intentional reading layout. */
.how {
  max-width: 1040px;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: 48px;
}

@media (max-width: 800px) {
  .how { max-width: none; }
}

/* source: optimizer-contrast.css */
/* The standalone optimizer is an editorial planning surface, not a dark
   campaign banner. Its final bundle loads this after the shared palette so
   every heading and supporting line keeps readable contrast. */
.optimizer {
  /* A clear lime is brighter and more travel-forward than the muddy olive
     surface this replaced, while ink text keeps the tool readable. */
  background: var(--color-lime-signal);
  color: var(--color-ink-900);
  border-block: 1px solid var(--color-forest-700);
}
.optimizer .light,
.optimizer .optimizer-copy > p { color: var(--color-text-muted); }
.optimizer h1 { color: var(--color-ink-900); }
.optimizer h1 em {
  color: var(--color-forest-700);
  text-decoration: underline 4px var(--color-coral-500);
  text-underline-offset: 8px;
}
.optimizer .optimizer-steps,
.optimizer .optimizer-steps span { color: var(--color-forest-700); }
.optimizer .trip-card {
  background: var(--color-paper);
  color: var(--color-ink-900);
  border-color: var(--color-leaf-400);
}

/* The standalone planning page uses the darkest approved green as its large
   surface. Keep lime/citron as an accent here, never as the page background. */
.optimizer-page .optimizer {
  background: var(--color-ink-900);
  color: var(--color-paper);
  border-block: 0;
}
.optimizer-page .optimizer .light {
  color: var(--color-citron-100);
}
.optimizer-page .optimizer .optimizer-copy > p {
  color: var(--color-border);
}
.optimizer-page .optimizer h1 { color: var(--color-paper); }
.optimizer-page .optimizer h1 em {
  color: var(--color-citron-100);
  text-decoration-color: var(--color-coral-500);
}
.optimizer-page .optimizer .optimizer-steps,
.optimizer-page .optimizer .optimizer-steps span {
  color: var(--color-citron-100);
}

/* source: hero-alignment.css */
/* Keep the homepage story comfortably inset from the browser edge. */
.hero.shell { max-width: 1080px; }
.hero-trip-planner { margin-top: 15px; }

@media (max-width: 800px) {
  .hero.shell { max-width: none; }
}

/* source: trip-optimizer.css */
.trip-destination-field { position: relative; }
.trip-suggestions { position: absolute; z-index: 5; left: 0; right: 0; top: calc(100% + 3px); max-height: 240px; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; background: var(--color-paper); border: 1px solid var(--color-border); border-radius: 7px; box-shadow: 0 8px 18px color-mix(in srgb,var(--color-ink-900) 15%,transparent); }
.trip-suggestions button { display: flex; justify-content: space-between; align-items: center; width: 100%; border: 0; background: var(--color-paper); padding: 10px 11px; color: var(--ink); font: 600 12px Funnel Sans; text-align: left; }
.trip-suggestions button:hover, .trip-suggestions button.keyboard-active { background: var(--color-cream); }
.trip-suggestions small { color: var(--muted); }
.recommendation{min-width:0;overflow-wrap:anywhere}.recommendation>span{display:block;margin-top:8px}.recommendation>.optimizer-lowest-price{width:max-content;margin-top:10px;margin-bottom:-2px;border-radius:999px;background:var(--color-paper);color:var(--color-forest-700);padding:4px 8px;font:800 9px/1 Funnel Sans,Arial,sans-serif;text-transform:uppercase;letter-spacing:.06em}.trip-buy-row { display: grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap: 8px; margin-top: 12px; }
.trip-buy { min-width:0;min-height:40px;border: 0; border-radius: 6px; padding: 9px 10px; background:var(--color-forest-700); color:var(--color-paper); font:700 11px/1.35 Funnel Sans; text-align:center;overflow-wrap:anywhere; }
.trip-buy-row-many{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:6px}.trip-buy-row-many .trip-buy{min-height:34px;padding:6px 8px;font-size:10px;line-height:1.2}.trip-buy-row-many .trip-cart-actions{display:contents}
.trip-buy-row.trip-buy-row-local{grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:6px;overflow:visible}.trip-buy-row.trip-buy-row-local .trip-buy{min-height:34px;padding:6px 8px;font-size:10px;line-height:1.2}
.trip-buy.secondary { background:var(--color-paper); color:var(--color-forest-700); border:1px solid var(--color-forest-700); }
.trip-view-options{display:inline-flex;align-items:center;gap:8px;margin-top:24px;color:var(--color-forest-700);font:800 12px/1.3 Funnel Sans,Funnel Sans,sans-serif;text-decoration:none;border-bottom:1px solid var(--color-leaf-400);padding-bottom:4px}.trip-view-options span{font-size:16px;line-height:1}.trip-view-options:hover{color:var(--color-ink-900);border-color:var(--color-forest-700)}
/* The label is updated by JavaScript when an item enters the cart. Keep that
   single label visible rather than layering a hover pseudo-label over it. */
.trip-buy[data-cart-added="true"]{background:var(--color-forest-700);color:var(--color-paper);border:1px solid var(--color-forest-700)}.trip-buy[data-cart-added="true"]:hover{background:var(--color-ink-900);border-color:var(--color-ink-900);color:var(--color-paper)}
.optimizer-local-alternative,.optimizer-regional-alternative{display:grid;gap:10px;min-width:0;margin-top:14px;padding-top:12px;border-top:1px solid var(--color-cream)}.optimizer-local-alternative p,.optimizer-regional-alternative p{margin:0;color:var(--color-text-muted);font-size:11px;line-height:1.5}.optimizer-regional-alternative .trip-buy{margin-top:0;justify-self:start}
.optimizer-plan-list{display:grid;gap:6px;margin:10px 0 0;padding:0;list-style:none}.optimizer-plan-list li{display:flex;justify-content:space-between;gap:10px;align-items:baseline;padding:7px 0;border-top:1px solid var(--color-cream);color:var(--color-text-muted);font-size:10px;line-height:1.4}.optimizer-plan-list li span{min-width:0}.optimizer-plan-list .optimizer-plan-identity{display:flex;flex-wrap:wrap;align-items:center;gap:3px 6px}.optimizer-plan-identity b{color:var(--color-ink-900);font-size:11px}.optimizer-plan-identity small{flex-basis:100%;color:var(--color-text-muted);font-size:10px;line-height:1.35}.optimizer-plan-list li strong{flex:0 0 auto;color:var(--color-forest-700);font-size:11px}
.optimizer-plan-info{display:inline-grid;place-items:center;width:24px;height:24px;margin-left:7px;border:1px solid var(--color-forest-700);border-radius:50%;background:var(--color-paper);color:var(--color-forest-700);font:800 11px/1 Funnel Sans,Funnel Sans,sans-serif;vertical-align:middle;cursor:pointer}.optimizer-plan-info:hover{background:var(--color-forest-700);color:var(--color-paper)}.optimizer-plan-info:focus-visible{outline:2px solid var(--color-leaf-400);outline-offset:2px}
.optimizer-bulk-note{display:block;margin-top:7px;color:var(--color-forest-700);font-size:10px;font-weight:800;line-height:1.45}
.optimizer-split-assumption{display:block;margin:7px 0;color:var(--color-text-muted);font-size:10px;line-height:1.45}
/* Keep the separate-plan total informative, not visually stronger than the
   recommended one-eSIM option above it. */
.optimizer-local-alternative .optimizer-plan-list li{color:var(--color-text-muted);font-size:10px}
.optimizer-local-alternative .optimizer-plan-list li strong{color:var(--color-text-muted);font-size:10px;font-weight:600}
.recommendation .optimizer-local-alternative .optimizer-discount-total{display:block;margin-top:6px;color:var(--color-text-muted);font-size:10px;font-weight:600;line-height:1.45}
@media(max-width:430px){.trip-buy-row,.trip-buy-row.trip-buy-row-local{grid-template-columns:1fr}.optimizer-plan-list li{align-items:flex-start;flex-direction:column;gap:3px}.optimizer-regional-alternative .trip-buy{width:100%}}

/* source: optimizer-actions.css */
/* Keep the regional alternative's follow-up action beside its add button. */
.optimizer-regional-alternative .regional-cart-actions{display:flex!important;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:8px}
.optimizer-regional-alternative .regional-cart-actions .trip-cart-actions{display:inline-flex;flex:0 0 auto}
.optimizer-regional-alternative .trip-buy{width:auto!important;justify-self:auto}
.trip-checkout-error{flex-basis:100%;margin:8px 0 0;color:var(--color-coral-500);font-size:.84rem;line-height:1.45}

/* source: catalog-ui.css */
.catalog-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-3);
  padding: var(--space-5) 0 var(--space-1);
}
.catalog-controls button {
  border: 1px solid var(--green);
  background: var(--color-paper);
  color: var(--green);
  border-radius: var(--radius-full);
  padding: var(--space-2) var(--space-3);
  font: 700 12px "Funnel Sans", Arial, sans-serif;
  cursor: pointer;
}
.catalog-controls span { color: var(--muted); font-size: 11px; }
.duration-notice {
  margin: var(--space-4) 0 0;
  color: var(--color-coral-500);
  font-size: 12px;
  font-weight: 700;
}
.catalog-error {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2);
  padding: var(--space-1) 0;
}
.catalog-error p { margin: 0; }
.catalog-retry {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: var(--space-2) var(--space-3);
  border: 1px solid var(--color-forest-700);
  border-radius: var(--radius-full);
  background: var(--color-forest-700);
  color: var(--color-paper);
  cursor: pointer;
  font: 700 1rem/1 "Funnel Sans", Arial, sans-serif;
}
.catalog-retry:focus-visible {
  outline: 3px solid var(--color-lime-signal);
  outline-offset: 3px;
}
.country-summary {
  display: block;
  margin-top: var(--space-1);
  color: var(--green);
  font-size: 11px;
  font-weight: 700;
  line-height: 1.35;
}
.country-summary-more {
  border: 0;
  background: transparent;
  color: inherit;
  padding: 0;
  font: inherit;
  text-decoration: underline;
  cursor: pointer;
}
.country-summary-more:hover,
.country-summary-more:focus-visible { color: var(--color-ink-900); }
.active-country > div { min-width: 0; }

@media (max-width: 520px) {
  .catalog-controls {
    align-items: center;
    flex-direction: column;
    gap: var(--space-2);
  }
}

/* source: plan-comparison.css */
.plan-card-actions{display:flex;align-items:center;gap:8px}
.plan-compare-toggle{display:none}
.plan-card-info{position:absolute;z-index:2;inset-block-start:6px;inset-inline-end:6px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;background:transparent;color:var(--color-forest-700);cursor:pointer}
.plan-card-info span{display:grid;place-items:center;width:27px;height:27px;border:1px solid var(--color-forest-700);border-radius:50%;background:var(--color-paper);font:800 14px/1 "Funnel Sans",sans-serif}
.plan-card-info:hover span{background:var(--color-forest-700);color:var(--color-paper)}
/* The information glyph already has a circular border. Do not draw a second
   green circle around it on focus; use the same calm filled state as hover. */
.plan-card-info:focus-visible{outline:0!important}.plan-card-info:focus-visible span{background:var(--color-forest-700);color:var(--color-paper)}
.regional-card[data-plan-compare-key]{position:relative}.regional-card[data-plan-compare-key].is-comparison-selected{background:var(--color-surface-positive);border-color:var(--color-leaf-400);box-shadow:0 0 0 2px var(--color-lime-signal)}
.plan-comparison-tray{display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:12px 14px;border:1px solid var(--color-leaf-400);border-radius:10px;background:var(--color-paper)}
.plan-comparison-info{display:grid;place-items:center;flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:var(--color-ink-900);color:var(--color-paper);font:700 15px/1 Georgia,serif;text-align:center}
.plan-comparison-copy{display:grid;gap:2px;margin-right:auto}
.plan-comparison-tray strong{font-size:12px}
.plan-comparison-tray small{color:var(--color-text-muted);font-size:10px}
.plan-comparison-tray button{border:1px solid var(--color-forest-700);border-radius:7px;background:var(--color-forest-700);color:var(--color-paper);padding:8px 10px;font:800 11px "Funnel Sans",sans-serif;cursor:pointer}
.plan-comparison-tray button:disabled{cursor:default;opacity:.48}
.plan-comparison-tray #clearPlanComparison{border:0;background:transparent;color:var(--color-forest-700);padding:7px 2px;text-decoration:underline;text-underline-offset:3px}
.plan-comparison-dialog{width:min(920px,calc(100vw - 28px));max-height:calc(100dvh - 28px);border:0;border-radius:12px;padding:28px;background:var(--color-paper);color:var(--color-ink-900);box-shadow:0 22px 70px color-mix(in srgb,var(--color-ink-900) 53%,transparent)}
.plan-comparison-dialog::backdrop{background:color-mix(in srgb,var(--color-ink-900) 53%,transparent)}
.plan-comparison-close{position:absolute;top:13px;right:13px;width:33px;height:33px;border:1px solid var(--color-leaf-400);border-radius:50%;background:var(--color-paper);color:var(--color-forest-700);font-size:20px;cursor:pointer}
.plan-comparison-dialog h2{margin:7px 38px 20px 0;font-size:29px;letter-spacing:-.055em}
.plan-comparison-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:12px}
.plan-comparison-table th,.plan-comparison-table td{padding:12px;text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border);overflow-wrap:anywhere}
.plan-comparison-table th{width:22%;color:var(--color-text-muted);font-size:10px;letter-spacing:.06em;text-transform:uppercase}
.plan-comparison-table td{font-weight:800}
.plan-comparison-table thead th{color:var(--color-ink-900);font-size:13px;letter-spacing:0;text-transform:none}
.plan-comparison-table tr.is-different td{background:var(--color-citron-100)}
@media(max-width:600px){.plan-card-actions{gap:6px}.plan-comparison-tray{align-items:center;flex-wrap:wrap}.plan-comparison-copy{width:calc(100% - 36px)}.plan-comparison-tray #openPlanComparison{margin-left:36px}.plan-comparison-dialog{padding:24px 10px}.plan-comparison-table{font-size:10px}.plan-comparison-table th,.plan-comparison-table td{padding:9px 4px}.plan-comparison-table th{width:24%;font-size:8px}.plan-comparison-table thead th{font-size:10px}}

/* source: route-ui.css */
.route-filter{display:flex;align-items:center;gap:6px;white-space:nowrap;border:1px solid var(--color-border);border-radius:20px;padding:3px 9px;color:var(--color-text-muted);font:600 11px Funnel Sans}.route-filter select{border:0;background:transparent;color:var(--green);font:700 11px Funnel Sans;outline:0}

/* source: regional-plans.css */
.regional-section {
  margin-top: var(--space-5);
  border-top: 1px solid var(--line);
  padding-top: var(--space-5);
}
.multi-regional-section { border-top: 0; }
.regional-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: var(--space-5);
  margin-bottom: var(--space-4);
}
.regional-heading h3 {
  margin: var(--space-2) 0 0;
  font-size: 25px;
  letter-spacing: -.045em;
}
.regional-heading p {
  max-width: 370px;
  margin: 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}
.regional-notice {
  margin: 0 0 var(--space-3);
  color: var(--color-moss-600);
  font-size: 10px;
  line-height: 1.45;
}
.regional-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-3);
}
.regional-card {
  /* Regional plans remain visually distinct from country plans, including
     when they appear inside a country-specific catalogue. */
  /* The global shared-surface rule is intentionally broad; keep this
     component-level distinction authoritative on every page. */
  background: var(--color-surface-muted) !important;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-plan);
  padding: var(--space-4);
}
.regional-card[data-clickable-regional-plan] {
  cursor: pointer;
  transition: transform .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease;
}
.regional-card.trip-recommended:not(.is-comparison-selected) {
  background: var(--color-surface-muted) !important;
  border-color: var(--color-border) !important;
  box-shadow: none !important;
}
.regional-card[data-clickable-regional-plan]:is(:hover, :focus-within, :active) {
  background: var(--color-surface-positive) !important;
  border-color: var(--color-leaf-400);
  box-shadow: 0 0 0 2px var(--color-lime-signal);
  transform: none;
}

@media (max-width: 760px) {
  .regional-heading { display: block; }
  .regional-heading p { margin-top: var(--space-3); }
  .regional-grid { grid-template-columns: 1fr; }
}

/* source: regional-country-filter.css */
.regional-country-filter{position:relative;display:flex;align-items:center;gap:6px;color:var(--color-text-muted);font-size:10px;font-weight:800}
.regional-country-filter>span{white-space:nowrap}
.regional-country-input{display:flex;align-items:center;gap:5px;min-width:120px;max-width:180px;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.regional-country-chips{display:flex;gap:4px;flex-wrap:wrap}
.regional-country-chip{display:inline-flex;align-items:center;white-space:nowrap;border:0;border-radius:999px;background:var(--color-border);color:var(--color-forest-700);padding:4px 7px;font:800 9px Funnel Sans;cursor:pointer}
.regional-country-chip:hover{background:var(--color-lime-signal)}
.regional-country-filter .regional-country-input input{box-sizing:border-box;appearance:none;min-width:90px;min-height:0!important;height:auto!important;flex:1;border:0!important;border-radius:0!important;outline:0!important;box-shadow:none!important;background:transparent!important;padding:0!important;color:var(--color-forest-700);font:700 10px Funnel Sans}
.regional-country-filter .regional-country-input input:focus,.regional-country-filter .regional-country-input input:focus-visible{border:0!important;outline:0!important;box-shadow:none!important;background:transparent!important}
.regional-country-input input::placeholder{color:var(--color-leaf-400)}
.regional-country-suggestions{position:fixed;z-index:1000;max-height:190px;overflow:auto;padding:6px;background:var(--color-paper);border:1px solid var(--color-border);border-radius:13px;box-shadow:0 14px 28px color-mix(in srgb,var(--color-ink-900) 13%,transparent)}
.regional-country-suggestions button{display:block;width:100%;border:0;border-radius:8px;background:transparent;padding:9px 10px;text-align:left;color:var(--color-forest-700);font:700 11px Funnel Sans;cursor:pointer}
.regional-country-suggestions button:hover,.regional-country-suggestions button.active{background:var(--color-cream)}
@media(max-width:760px){.regional-country-filter{display:flex}.regional-country-filter>span{display:inline;margin:0}.regional-country-input{max-width:min(310px,90vw)}}

/* source: search-regional.css */
body{overflow-x:hidden}.hero,.hero.search-open{overflow:visible}.hero-art{right:20px}.suggestions{max-height:min(440px,calc(100dvh - 120px));overflow-y:scroll;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;touch-action:pan-y}.suggestions .search-result{display:flex!important;align-items:center;justify-content:space-between;gap:15px}.suggestions .search-result.keyboard-active{background:var(--color-cream)!important}.suggestions .search-result-title{font-weight:800}.suggestions .search-result small{float:none!important;color:var(--color-text-muted);font-size:10px;white-space:nowrap}@media(max-width:800px){.hero{min-height:0;padding-top:38px;padding-bottom:48px}.hero-art{display:none}}

/* source: hero-safe-layout.css */
/* At intermediate desktop widths, reserve a dedicated copy column so the
   decorative globe never sits beneath the hero headline. */
@media (min-width: 801px) {
  .hero h1 { max-width: 560px; }
  .hero-art { right: -110px; }
}

/* source: heading-hierarchy.css */
/* Shared information hierarchy for storefront catalog sections. */
.section-label,
.eyebrow,
.kicker {
  color: var(--color-moss-600);
  font: 700 11px/1.2 "Funnel Sans", Arial, sans-serif;
  letter-spacing: .13em;
  text-transform: uppercase;
}

/* A section title names a collection of plans; it is always dark ink. */
.regional-heading h3,
.multi-result-heading h3 {
  margin: var(--space-2) 0 0;
  color: var(--color-ink-900);
  font: 700 28px/1.12 "Funnel Sans", Arial, sans-serif;
  letter-spacing: -.045em;
}

/* Package-type labels remain small, deliberate metadata. */
.plan-card-utility {
  color: var(--color-moss-600);
  font: 700 11px/1.2 "Funnel Sans", Arial, sans-serif;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.region-plan-badges {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: var(--space-2);
}
.region-plan-badges > span {
  color: var(--color-moss-600);
  font: 700 11px/1.2 "Funnel Sans", Arial, sans-serif;
  letter-spacing: normal;
  text-transform: none;
}

@media (max-width: 760px) {
  .regional-heading h3,
  .multi-result-heading h3 { font-size: 24px; }
}

/* source: locale.css */
.nav-actions{display:flex;align-items:center;gap:8px}.language-menu,.currency-menu{position:relative}.language-menu summary,.currency-menu summary{cursor:pointer;list-style:none;border:1px solid var(--ink);border-radius:30px;padding:9px 12px;background:var(--paper);font:700 12px Funnel Sans}.language-menu summary::-webkit-details-marker,.currency-menu summary::-webkit-details-marker{display:none}.language-menu:not([open]) .language-options,.currency-menu:not([open]) .currency-options{display:none}.language-options,.currency-options{position:absolute;right:0;top:43px;z-index:20;display:grid;grid-template-columns:repeat(2,minmax(88px,1fr));gap:2px;width:205px;padding:8px;background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 30px color-mix(in srgb,var(--color-ink-900) 13%,transparent)}.language-options a,.currency-options button{padding:8px;border:0;border-radius:6px;background:transparent;color:var(--ink);text-align:left;font:700 12px Funnel Sans}.language-options a{font-size:12px!important}.language-options a:hover,.currency-options button:hover,.currency-options button[aria-current="true"]{background:var(--color-cream)}.footer-controls{display:flex;align-items:center;gap:8px}.footer .language-options,.footer .currency-options{display:grid;grid-template-columns:repeat(2,minmax(88px,1fr));gap:2px}.footer-controls .language-options,.footer-controls .currency-options{top:auto;bottom:43px}.hero>.hero-art{z-index:0}.hero>:not(.hero-art){position:relative;z-index:1}@media(max-width:800px){.nav-actions .support{display:inline-block}.language-menu summary,.currency-menu summary{padding:8px 10px}.footer-controls{margin-top:18px}}

/* source: rtl.css */
html[dir="rtl"] .hero-art{left:-110px;right:auto}html[dir="rtl"] .language-options{left:0;right:auto}html[dir="rtl"] .search-icon{padding-left:var(--space-3);padding-right:var(--space-4)}html[dir="rtl"] .section-intro,html[dir="rtl"] .finder-top,html[dir="rtl"] .footer{direction:rtl}@media(max-width:800px){html[dir="rtl"] .hero-art{left:-150px;right:auto}}

/* source: search-layer.css */
.finder-actions .destination-guide-link{display:none!important}
.hero>.search-box{z-index:4}.hero>.popular{z-index:1}
.popular button{cursor:pointer;transition:transform .16s ease,background .16s ease,box-shadow .16s ease}.popular button:hover{background:var(--color-surface-highlight);box-shadow:0 6px 14px color-mix(in srgb,var(--color-ink-900) 14%,transparent);transform:translateY(-1px)}.popular button:focus-visible{outline:2px solid var(--color-forest-700);outline-offset:2px}
.plans-section{padding-top:var(--space-9);padding-bottom:var(--space-6)}.how{padding-top:var(--space-7)}@media(max-width:800px){.plans-section{padding-top:var(--space-8);padding-bottom:var(--space-6)}.how{padding-top:var(--space-6)}}
.search-trip-chips{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2);max-width:630px}.search-trip-chips button{border:0;border-radius:16px;background:var(--color-surface-highlight);color:var(--color-text-muted);padding:var(--space-2) var(--space-2);font:700 11px 'Funnel Sans',Arial,sans-serif;cursor:pointer}.search-trip-help{display:flex;align-items:center;gap:var(--space-2);max-width:630px;margin:var(--space-2) 0 0;color:var(--muted);font-size:11px;line-height:1.35}.search-trip-help-plus{display:grid;flex:0 0 16px;width:16px;height:16px;place-items:center;border:1px solid var(--color-surface-highlight);border-radius:50%;color:var(--color-ink-900);font:800 14px/1 'Funnel Sans',Arial,sans-serif}.multi-destination-results{margin-top:var(--space-4)}.multi-destination-loading{display:flex;align-items:center;gap:var(--space-3);min-height:94px;margin:0;padding:var(--space-4);border:1px solid var(--color-border);border-radius:12px;background:var(--color-surface-highlight);color:var(--color-ink-900)}.multi-destination-loading>span:last-child{display:grid;gap:var(--space-1)}.multi-destination-loading strong{font:800 16px/1.25 'Funnel Sans',Arial,sans-serif}.multi-destination-loading small{color:var(--color-text-muted);font:600 11px/1.45 'Funnel Sans',Arial,sans-serif}.multi-destination-loading-spinner{width:24px;height:24px;flex:0 0 24px;border:3px solid var(--color-border);border-top-color:var(--color-forest-700);border-radius:50%;animation:multi-destination-spin .8s linear infinite}@keyframes multi-destination-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.multi-destination-loading-spinner{animation:none;border-top-color:var(--color-border);background:var(--color-lime)}}.finder.multi-destination-mode>.finder-top,.finder.multi-destination-mode>.filters,.finder.multi-destination-mode>#planGrid,.finder.multi-destination-mode>#catalogControls,.finder.multi-destination-mode>#durationNotice,.finder.multi-destination-mode>#countryNotice,.finder.multi-destination-mode>.plan-details-hint,.finder.multi-destination-mode>.mobile-plan-refinements{display:none!important}.multi-regional-section{margin-top:0}.multi-result-section{border-top:1px solid var(--line);padding-top:var(--space-6);margin-top:var(--space-6)}.multi-result-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-3)}.multi-result-heading h3{font-size:23px;letter-spacing:-.045em;margin:var(--space-2) 0 0}.multi-result-heading p{max-width:340px;margin:0;color:var(--muted);font-size:12px;line-height:1.5}.multi-empty{margin:0;color:var(--color-text-muted);font-size:12px}.multi-view-country{margin-top:var(--space-3);border:0;background:transparent;padding:0;color:var(--green);font:800 12px 'Funnel Sans',Arial,sans-serif;text-decoration:underline;cursor:pointer}@media(max-width:760px){.multi-result-heading{display:block}.multi-result-heading p{margin-top:var(--space-2)}}
.multi-destination-results{margin-top:0}.multi-regional-section{padding-top:0}
.country-best-choice,.filter-best-choice{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;background:var(--color-surface-highlight);border:1px solid var(--color-surface-highlight);border-radius:9px;color:var(--color-forest-700);padding:var(--space-2) var(--space-2);margin-top:var(--space-2);font-size:10px;line-height:1.35}.country-best-choice>span,.filter-best-choice>span{font:800 9px 'Funnel Sans',Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.country-best-choice strong,.filter-best-choice strong{font-size:11px}.country-best-choice small,.filter-best-choice small{color:var(--color-text-muted);font-size:10px}.country-best-choice .select-plan,.filter-best-choice .select-plan{margin-left:auto;border:0;border-radius:6px;background:var(--color-forest-700);color:var(--color-paper);padding:var(--space-2) var(--space-2);font:800 10px 'Funnel Sans',Arial,sans-serif;cursor:pointer}.country-best-choice .country-best-view-cart{margin-left:0;border:1px solid var(--color-forest-700);border-radius:6px;background:transparent;color:var(--color-forest-700);padding:var(--space-2) var(--space-2);font:800 10px 'Funnel Sans',Arial,sans-serif;cursor:pointer}.filter-best-choice-wide{margin:0 0 var(--space-3)}@media(max-width:560px){.country-best-choice,.filter-best-choice{align-items:flex-start}.country-best-choice .select-plan,.filter-best-choice .select-plan{margin-left:0}}
.country-best-choice[hidden],.filter-best-choice[hidden]{display:none!important}
.hero-data-optimizer-heading{display:flex;align-items:center;gap:var(--space-3);max-width:630px;margin-top:var(--space-3);color:var(--color-ink-900)}.hero-data-optimizer-heading strong{font:800 11px 'Funnel Sans',Arial,sans-serif;letter-spacing:.01em}.hero-trip-planner{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;column-gap:var(--space-3);row-gap:var(--space-3);max-width:630px;margin:var(--space-2) 0 var(--space-4)}.hero-trip-planner label{display:grid;grid-template-rows:15px 36px;gap:var(--space-2);min-width:0;color:var(--color-text-muted);font:800 10px 'Funnel Sans',Arial,sans-serif}.hero-trip-planner select{width:100%;min-width:0;height:36px;border:1px solid var(--color-border);border-radius:7px;background:var(--color-paper);padding:var(--space-2);color:var(--ink);font:700 11px 'Funnel Sans',Arial,sans-serif}.hero-trip-recommendation{max-width:760px;margin:0!important}.hero-trip-recommendation .trip-buy{cursor:pointer}.trip-recommendation-results{padding-top:var(--space-5)}.trip-recommendation-results:has(.hero-trip-recommendation[hidden]){display:none}@media(max-width:560px){.hero-trip-planner{column-gap:var(--space-2);row-gap:var(--space-3)}}
.hero-trip-planner .hero-data-use{max-width:none;grid-template-rows:15px 36px auto}.hero-data-use-label{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);min-width:0}.hero-data-use small{font:600 9px/1.4 'Funnel Sans',Arial,sans-serif;color:var(--color-text-muted)}.hero-data-use .data-calculator-link{justify-self:end;margin-top:var(--space-2);font:800 10px 'Funnel Sans',Arial,sans-serif;color:var(--color-forest-700);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
/* English fits the original compact desktop row; translated labels retain the safer two-column layout above. */
body[data-locale="en"] .hero-trip-planner{grid-template-columns:minmax(112px,1fr) minmax(175px,1.35fr) max-content max-content;row-gap:var(--space-2)}
body[data-locale="en"] .hero-trip-planner .hero-data-use{max-width:205px}
body[data-locale="en"] .hero-trip-planner .hero-data-use .data-calculator-link{justify-self:start;margin-left:var(--space-2)}
body[data-locale="en"] .hero-trip-planner .hero-hotspot{grid-column:auto}
body[data-locale="en"] .hero-trip-planner button{grid-column:auto;width:auto}
@media(max-width:560px){body[data-locale="en"] .hero-trip-planner{grid-template-columns:1fr 1fr;row-gap:var(--space-3)}body[data-locale="en"] .hero-trip-planner .hero-hotspot{grid-column:1}body[data-locale="en"] .hero-trip-planner button{grid-column:2;width:100%}}
.plan-card[data-plan-details],.regional-card[data-plan-details]{cursor:pointer}.plan-details-dialog{width:min(520px,calc(100% - 28px));border:0;border-radius:16px;padding:var(--space-6);background:var(--color-paper);color:var(--ink);box-shadow:0 24px 70px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}.plan-details-dialog::backdrop{background:var(--color-surface-highlight)}.plan-details-dialog h2{font-size:27px;letter-spacing:-.05em;margin:var(--space-2) var(--space-6) var(--space-4) 0}.plan-details-close{position:absolute;top:15px;right:15px;border:0;background:var(--color-surface-highlight);border-radius:50%;width:30px;height:30px;font-size:21px;line-height:1;cursor:pointer}.plan-detail-checklist{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.plan-detail-checklist li,.plan-detail-price{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--line);font-size:12px}.plan-detail-checklist span,.plan-detail-price span{color:var(--muted)}.plan-detail-price strong{font-size:19px}.verified-reviews{margin-top:var(--space-5);padding:var(--space-4);background:var(--color-surface-highlight);border-radius:10px}.verified-reviews h3{margin:0;font-size:14px}.verified-reviews p{font-size:11px;line-height:1.55;color:var(--color-text-muted)}.verified-reviews .review-empty{margin-bottom:0;font-weight:700;color:var(--color-ink-900)}
.trip-recommended{background:var(--color-surface-highlight)!important;border-color:var(--color-border)!important;box-shadow:0 0 0 3px var(--color-surface-highlight),0 12px 24px color-mix(in srgb,var(--color-ink-900) 14%,transparent)!important}
.plan-card,.regional-card{min-width:0;overflow:hidden}.plan-card h3,.plan-card .provider,.plan-card .plan-details span,.regional-card p{overflow-wrap:anywhere}.plan-card .plan-bottom{gap:var(--space-2);align-items:flex-end;flex-wrap:wrap}.plan-card .plan-bottom>strong{white-space:nowrap}.plan-card .select-plan,.regional-card .select-plan{margin-left:auto;max-width:100%;white-space:normal}
.finder-actions{display:flex;align-items:center;gap:var(--space-3)}.destination-guide-link{color:var(--color-forest-700);font-size:11px;font-weight:800;text-decoration:none;border-bottom:1px solid currentColor}.destination-guide-link[hidden]{display:none}@media(max-width:620px){.finder-actions{gap:var(--space-2)}.destination-guide-link{font-size:10px}}
.multi-country-controls{display:flex;align-items:center;gap:var(--space-4);margin-top:var(--space-3)}.multi-show-more{margin-top:0;border:0;background:transparent;padding:0;color:var(--green);font:800 12px 'Funnel Sans',Arial,sans-serif;text-decoration:underline;cursor:pointer}@media(max-width:760px){.multi-country-controls{flex-wrap:wrap;gap:var(--space-2) var(--space-4)}}
.plan-details-hint{display:inline-flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-3);padding:var(--space-2) var(--space-2);border:1px solid var(--color-surface-highlight);border-radius:999px;background:var(--color-surface-highlight);color:var(--color-text-muted);font:800 11px 'Funnel Sans',Arial,sans-serif}.plan-details-hint::before{content:'i';display:grid;place-items:center;width:15px;height:15px;padding:0;border-radius:50%;background:var(--color-ink-900);color:var(--color-paper);font:800 11px/1 Arial}
.plan-detail-checklist .plan-detail-coverage{display:block;line-height:1.55}.plan-detail-checklist .plan-detail-coverage strong{display:block;margin-top:var(--space-2);color:var(--color-ink-900);font-size:11px;font-weight:700}.plan-coverage-country-list{display:flex!important;flex-wrap:wrap;gap:var(--space-2)}.plan-coverage-country{border:1px solid var(--color-surface-highlight);border-radius:999px;background:var(--color-surface-highlight);color:var(--color-ink-900);padding:var(--space-2) var(--space-2);font:700 10px/1.2 'Funnel Sans',Arial,sans-serif;cursor:pointer}.plan-coverage-country:hover,.plan-coverage-country.active{border-color:var(--color-ink-900);background:var(--color-surface-highlight)}.plan-coverage-country:focus-visible{outline:2px solid var(--color-forest-700);outline-offset:2px}.plan-coverage-network-popover{position:fixed;z-index:40;display:grid;gap:var(--space-2);width:min(310px,calc(100vw - 24px));padding:var(--space-3) var(--space-6) var(--space-3) var(--space-3);border:1px solid var(--color-surface-highlight);border-radius:12px;background:var(--color-surface-highlight);color:var(--ink);box-shadow:0 14px 30px color-mix(in srgb,var(--color-ink-900) 14%,transparent);font-size:11px;line-height:1.45}.plan-coverage-network-popover>span{color:var(--color-text-muted);font-weight:700}.plan-coverage-network-popover>strong{color:var(--color-ink-900);font-size:12px;overflow-wrap:anywhere}.plan-coverage-network-popover>small{color:var(--muted);font-size:10px;line-height:1.4}.plan-coverage-network-close{position:absolute;top:8px;right:8px;width:22px;height:22px;border:0;border-radius:50%;background:var(--color-surface-highlight);color:var(--color-ink-900);font:700 17px/1 Arial;cursor:pointer}.plan-coverage-network-close:focus-visible{outline:2px solid var(--color-forest-700);outline-offset:2px}
.plan-detail-checklist .plan-detail-partner-networks{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,62%);align-items:start}.plan-detail-checklist .plan-detail-partner-networks strong{text-align:right;max-width:none}.plan-detail-checklist .plan-detail-partner-networks small{grid-column:2;color:var(--muted);font-size:10px;line-height:1.35;text-align:right;margin-top:var(--space-1)}

.bulk-savings-dialog{width:min(430px,calc(100% - 30px));border:0;border-radius:18px;padding:var(--space-6);background:var(--color-paper);color:var(--ink);box-shadow:0 28px 80px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}.bulk-savings-dialog::backdrop{background:var(--color-surface-highlight)}.bulk-savings-dialog h2{font-size:34px;line-height:1;letter-spacing:-.06em;margin:var(--space-3) var(--space-6) var(--space-3) 0}.bulk-savings-dialog p{margin:0;color:var(--muted);font-size:14px;line-height:1.65}.bulk-savings-close{position:absolute;right:14px;top:14px;border:0;border-radius:50%;width:31px;height:31px;background:var(--color-surface-highlight);color:var(--ink);font-size:21px;line-height:1;cursor:pointer}.bulk-savings-action{margin-top:var(--space-5);border:0;border-radius:8px;background:var(--green);color:var(--color-paper);padding:var(--space-3) var(--space-4);font:800 12px 'Funnel Sans',Arial,sans-serif;cursor:pointer}
/* Keep the remove mark in a selected-destination chip separated from its label. */
.search-trip-chips button span{margin-left:var(--space-1)}
@media(max-width:600px){.plan-details-dialog[open]{position:fixed;inset:10px;width:auto;max-width:none;height:auto;max-height:none;margin:0;padding:var(--space-4) var(--space-4) var(--space-5);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.plan-details-dialog h2{margin-right:var(--space-7);font-size:22px;line-height:1.1;overflow-wrap:anywhere}.plan-details-close{position:sticky;float:right;top:0;right:auto;z-index:2}.plan-detail-checklist li,.plan-detail-price{gap:var(--space-3);align-items:flex-start}.plan-detail-checklist li strong,.plan-detail-price strong{max-width:62%;text-align:right;overflow-wrap:anywhere}.plan-detail-checklist .plan-detail-coverage strong{max-width:none;text-align:left}}

/* Keep the cart and immediate Stripe Checkout actions adjacent without making cards taller. */
.filter-recommendation-hint{margin:calc(var(--space-3) * -1) 0 var(--space-3);color:var(--color-text-muted);font-size:10px;line-height:1.4}.country-best-choice+.filter-recommendation-hint{margin:var(--space-2) 0 var(--space-3)}.multi-country-filters+.filter-recommendation-hint{margin:calc(var(--space-2) * -1) 0 var(--space-3)}
.region-plan-badges .calling-plan-badge{display:inline-flex;border-radius:6px;padding:var(--space-2) var(--space-2);background:var(--color-surface-highlight);color:var(--color-forest-700);letter-spacing:0;text-transform:none;white-space:nowrap}

/* source: support-bot.css */
/* Canonical support assistant component. */
.support-bot-toggle {
  position: fixed;
  right: var(--space-5);
  bottom: var(--space-5);
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 52px;
  height: 52px;
  padding: 0;
  overflow: hidden;
  border: 0;
  border-radius: var(--radius-full);
  background: var(--color-forest-700);
  color: var(--color-paper);
  box-shadow: 0 12px 28px color-mix(in srgb, var(--color-ink-900) 22%, transparent);
  font: 800 13px/1 var(--font-body, "Funnel Sans"), Arial, sans-serif;
  cursor: pointer;
  transition: width 220ms ease, padding 220ms ease;
}

.support-bot-toggle:hover,
.support-bot-toggle:focus-visible {
  justify-content: flex-start;
  width: 176px;
  padding-inline: var(--space-4);
  outline: none;
}

.support-bot-logo {
  display: grid;
  place-items: center;
  flex: 0 0 28px;
  width: 28px;
  height: 28px;
  border-radius: var(--radius-full);
  background: transparent;
  color: var(--color-forest-700);
  font-size: 15px;
  object-fit: contain;
}

.support-bot-toggle:not(:hover):not(:focus-visible) .support-bot-logo,
.support-bot-toggle.is-nudging .support-bot-logo {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
}

.support-bot-label {
  width: 0;
  margin-left: 0;
  overflow: hidden;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 160ms ease, width 220ms ease;
}

.support-bot-toggle:hover .support-bot-label,
.support-bot-toggle:focus-visible .support-bot-label {
  width: 114px;
  margin-left: var(--space-2);
  opacity: 1;
}

.support-bot-toggle.is-nudging {
  justify-content: center;
  width: 52px;
  padding: 0;
  overflow: hidden;
  animation: supportBotBounce 900ms ease-in-out infinite;
  transition: none;
}

.support-bot-toggle.is-nudging .support-bot-label {
  width: 0;
  margin-left: 0;
  opacity: 0;
}

.support-bot {
  position: fixed;
  right: var(--space-5);
  bottom: 84px;
  z-index: 1000;
  width: min(370px, calc(100vw - 32px));
  overflow: hidden;
  border: 1px solid var(--color-leaf-400);
  border-radius: var(--radius-surface);
  background: var(--color-paper);
  box-shadow: 0 18px 40px color-mix(in srgb, var(--color-ink-900) 15%, transparent);
}

.support-bot[hidden] {
  display: none;
}

.support-bot-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--space-3);
  padding: var(--space-4);
  background: var(--color-forest-700);
  color: var(--color-paper);
}

.support-bot-header strong {
  display: block;
  font-size: 16px;
}

.support-bot-header p {
  margin: var(--space-1) 0 0;
  color: var(--color-citron-100);
  font-size: 11px;
  line-height: 1.5;
}

.support-bot-close {
  border: 0;
  background: transparent;
  color: var(--color-paper);
  font-size: 20px;
  cursor: pointer;
}

.support-bot-messages {
  height: 220px;
  padding: var(--space-4);
  overflow: auto;
  background: var(--color-paper);
}

.support-bot-message {
  max-width: 100%;
  margin: 0 0 var(--space-2);
  padding: var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-button);
  background: var(--color-cream);
  color: var(--color-ink-900);
  font-size: 12px;
  line-height: 1.55;
}

.support-bot-message.user {
  margin-left: auto;
  border-color: var(--color-leaf-400);
  background: var(--color-citron-100);
}

.support-bot-action {
  display: block;
  width: max-content;
  margin-top: var(--space-2);
  color: var(--color-forest-700);
  font-weight: 800;
  text-decoration: underline;
}

.support-bot-topics {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  padding: 0 var(--space-3) var(--space-3);
  background: var(--color-paper);
}

.support-bot-topics button {
  padding: 6px var(--space-2);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-full);
  background: var(--color-paper);
  color: var(--color-forest-700);
  font: 700 10px/1 var(--font-body, "Funnel Sans"), Arial, sans-serif;
  cursor: pointer;
}

.support-bot-note {
  margin: 0;
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--color-border);
  background: var(--color-paper);
  color: var(--color-text-muted);
  font-size: 10px;
  line-height: 1.45;
}

.support-bot-form {
  display: flex;
  gap: var(--space-2);
  padding: var(--space-3) var(--space-4);
  border-top: 1px solid var(--color-border);
  background: var(--color-paper);
}

.support-bot-form input {
  min-width: 0;
  flex: 1;
  padding: var(--space-3);
  border: 1px solid var(--color-leaf-400);
  border-radius: var(--radius-button);
  background: var(--color-paper);
  color: var(--color-ink-900);
  font: 500 12px/1.4 var(--font-body, "Funnel Sans"), Arial, sans-serif;
}

.support-bot-form button {
  padding-inline: var(--space-3);
  border: 0;
  border-radius: var(--radius-button);
  background: var(--color-forest-700);
  color: var(--color-paper);
  font: 800 12px/1 var(--font-body, "Funnel Sans"), Arial, sans-serif;
  cursor: pointer;
}

.support-bot-form button:hover,
.support-bot-form button:focus-visible {
  background: var(--color-ink-900);
}

.support-bot-nudge {
  display: none !important;
}

.support-bot-mobile-nudge {
  position: fixed;
  right: var(--space-5);
  bottom: 84px;
  z-index: 1001;
  padding: 7px 10px;
  border: 1px solid var(--color-lime-signal);
  border-radius: var(--radius-full);
  background: var(--color-cream);
  color: var(--color-ink-900);
  font: 800 11px/1 var(--font-body, "Funnel Sans"), Arial, sans-serif;
  animation: supportBotNudgeIn 200ms ease-out both;
}

@keyframes supportBotBounce {
  0%, 100% { transform: translateY(0); }
  45% { transform: translateY(-8px); }
}

@keyframes supportBotNudgeIn {
  from { opacity: 0; transform: translateY(5px); }
  to { opacity: 1; transform: translateY(0); }
}

.support-bot-mobile-nudge::after {
  content: "";
  position: absolute;
  right: 16px;
  bottom: -5px;
  width: 9px;
  height: 9px;
  border-right: 1px solid var(--color-lime-signal);
  border-bottom: 1px solid var(--color-lime-signal);
  background: var(--color-cream);
  transform: rotate(45deg);
}

@media (max-width: 600px) {
  .support-bot-toggle {
    right: var(--space-3);
    bottom: var(--space-3);
  }

  .support-bot {
    right: var(--space-3);
    bottom: 77px;
  }

  .support-bot-form input {
    font-size: 16px;
  }

  .support-bot-mobile-nudge {
    right: var(--space-3);
    bottom: 76px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .support-bot-toggle.is-nudging,
  .support-bot-mobile-nudge {
    animation: none;
  }
}

/* source: cart-badge.css */
.cart-link{display:inline-flex;align-items:center;justify-content:center;gap:7px}.cart-link>span:first-child{margin-left:0!important}
.cart-count{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--lime,var(--color-lime-signal));color:var(--green,var(--color-forest-700));font:800 10px/1 Funnel Sans,Arial,sans-serif}
.cart-count[hidden]{display:none}

/* source: cart-preview.css */
.nav-actions{position:relative}
.cart-preview{position:absolute;right:0;top:calc(100% + 9px);z-index:60;width:min(338px,calc(100vw - 32px));padding:8px;background:var(--paper,var(--color-paper));border:1px solid var(--line,var(--color-border));border-radius:12px;box-shadow:0 16px 35px color-mix(in srgb,var(--color-ink-900) 14%,transparent);color:var(--ink,var(--color-ink-900))}
.cart-preview-items{display:grid;gap:2px;max-height:288px;overflow:auto}
.cart-preview-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px;border-bottom:1px solid var(--color-cream)}
.cart-preview-item:last-child{border-bottom:0}
.cart-preview-item strong,.cart-preview-item span,.cart-preview-item b{display:block}
.cart-preview-item strong{font:800 11px/1.35 Funnel Sans,Arial,sans-serif}
.cart-preview-item span{margin-top:2px;color:var(--color-text-muted);font:600 10px/1.35 Funnel Sans,Arial,sans-serif}
.cart-preview-item>div:last-child{display:flex;align-items:center;gap:8px;flex:0 0 auto}
.cart-preview-item b{font:800 11px/1 Funnel Sans,Arial,sans-serif;white-space:nowrap}
.cart-preview-item button{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-paper);color:var(--color-text-muted);font:700 16px/1 Arial,sans-serif;cursor:pointer}
.cart-preview-item button:hover,.cart-preview-item button:focus-visible{background:var(--color-cream);border-color:var(--color-border);color:var(--color-coral-500);outline:none}
.cart-preview-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:7px}
.cart-preview-actions--single{grid-template-columns:1fr}
.cart-preview-view,.cart-preview-checkout{display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;border-radius:7px;text-decoration:none!important;font:800 11px/1 Funnel Sans,Arial,sans-serif}
.cart-preview-view{border:1px solid var(--color-border);background:var(--color-paper);color:var(--green,var(--color-forest-700))!important}
.cart-preview-checkout{background:var(--lime,var(--color-lime-signal));color:var(--green,var(--color-forest-700))!important}
.cart-preview-empty,.cart-preview-loading{margin:7px 4px;color:var(--color-text-muted);font:700 11px/1.45 Funnel Sans,Arial,sans-serif}.cart-preview-empty{text-align:center}
.cart-preview-error{margin:4px 4px 7px;color:var(--color-coral-500);font:700 10px/1.45 Funnel Sans,Arial,sans-serif}
@media(max-width:800px){.cart-preview{display:none!important}}

/* source: package-reviews.css */
.package-reviews{margin-top:14px;padding-top:0}.plan-details-no-partner .plan-detail-checklist li:last-child,.plan-detail-checklist .plan-detail-partner-networks{border-bottom:0}.plan-details-no-partner .plan-detail-price{border-bottom:1px solid var(--line)}.package-reviews-summary{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);min-height:42px;color:var(--color-forest-700);cursor:pointer;font-size:15px;font-weight:700;list-style:none}.package-reviews-summary::-webkit-details-marker{display:none}.package-reviews-summary-icon{display:grid;place-items:center;width:24px;height:24px;border:1px solid var(--color-leaf-400);border-radius:50%;font-size:18px;font-weight:400;line-height:1}.package-reviews[open] .package-reviews-summary-icon{transform:rotate(45deg)}.package-reviews-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:12px}.package-reviews-heading h3{margin:0}.package-reviews-heading>span{color:var(--color-text-muted);font-size:13px}.package-review{background:var(--color-cream);border:1px solid var(--color-cream);border-radius:12px;margin-top:12px;padding:15px}.package-review>div{display:flex;justify-content:space-between;gap:14px}.package-review-stars{color:var(--color-coral-500);letter-spacing:.05em}.package-review h4{margin:13px 0 4px}.package-review p{margin:7px 0;color:var(--color-text-muted);line-height:1.55}.package-review footer{display:flex;flex-direction:column;gap:4px;border-top:1px solid var(--color-cream);margin-top:12px;padding-top:10px;color:var(--color-text-muted);font-size:12px}.package-review-actions{display:flex;flex-wrap:wrap;gap:16px;margin-top:16px}.package-review-actions a{color:var(--color-forest-700);font-size:13px;font-weight:800}.review-disclosure{color:var(--color-forest-700)!important;font-size:11px!important;line-height:1.5!important;margin:16px 0 0!important}.package-reviews .review-empty{color:var(--color-text-muted);font-size:13px}.package-reviews .review-loading{min-height:20px;margin:12px 0 0}.package-reviews .review-loading:after{content:'';display:inline-block;width:10px;height:10px;margin-left:8px;border:2px solid var(--color-border);border-top-color:var(--color-forest-700);border-radius:50%;vertical-align:-1px;animation:review-spin .7s linear infinite}@keyframes review-spin{to{transform:rotate(360deg)}}@media(max-width:560px){.package-reviews-heading{align-items:flex-start}.package-review>div{flex-direction:column;gap:4px}}

/* source: mobile-layout.css */
.mobile-menu-trigger,.mobile-site-menu{display:none}
.mobile-popular-chip{display:none}

@media(max-width:800px){
  /* On phones keep the sticky header to one calm row. Secondary navigation
     and preferences live in the accessible menu drawer below. */
  .nav{height:64px;min-height:64px;display:flex;align-items:center;gap:9px;padding-top:0;padding-bottom:0}
  .nav>.brand{min-width:0;font-size:20px}
  .nav nav{display:none}
  .nav-actions{display:flex;align-items:center;width:auto;min-width:0;margin-left:auto;gap:7px;white-space:nowrap}
  .nav-actions .support:not(.cart-link){display:none}
  .nav-actions .support.cart-link{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:8px 11px;font-size:12px;line-height:1;white-space:nowrap}
  .nav-actions .support span{margin-left:3px}
  .mobile-menu-trigger{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:38px;border:1px solid var(--ink);border-radius:999px;padding:8px 11px;background:var(--paper);color:var(--ink);font:800 12px/1 Funnel Sans;cursor:pointer}
  .mobile-menu-trigger>span:first-child{font-size:15px;line-height:1}
  .mobile-site-menu{display:none}
  .mobile-site-menu[open]{position:fixed;inset:0 0 0 auto;display:block;width:min(88vw,360px);max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;background:transparent;color:var(--ink)}
  .mobile-site-menu::backdrop{background:color-mix(in srgb,var(--color-ink-900) 40%,transparent)}
  .mobile-site-menu-panel{display:flex;flex-direction:column;min-height:100%;padding:20px;background:var(--cream)}
  .mobile-site-menu-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--line);font-size:19px}
  .mobile-site-menu-header button{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--ink);border-radius:50%;background:var(--paper);color:var(--ink);font-size:27px;line-height:1;cursor:pointer}
  .mobile-site-menu-links{display:grid;gap:2px;padding:18px 0}
  .mobile-site-menu-links a{padding:14px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:16px;font-weight:800;text-decoration:none}
  .mobile-site-menu-controls{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:20px;border-top:1px solid var(--line)}
  .mobile-site-menu-controls .language-menu,.mobile-site-menu-controls .currency-menu{position:relative}
  .mobile-site-menu-controls .language-options,.mobile-site-menu-controls .currency-options{top:auto;bottom:43px}
  .hero-copy{display:none}
  .popular>button:not(.mobile-popular-chip){display:none}
  .popular>.mobile-popular-chip{display:block}
  .how{display:none}
  /* Give compact phone screens a calmer, more deliberate reading rhythm. */
  .shell{padding-left:24px;padding-right:24px}
  .trust{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;justify-items:center;gap:16px 12px;overflow:visible;padding-top:28px;padding-bottom:28px;text-align:center}
  .trust div{display:grid;justify-items:center;gap:2px;min-width:0}
  .trust strong{font-size:19px}
  .trust span{font-size:11px;line-height:1.35}
  .trust-review-link{display:grid;gap:2px;min-width:0;margin:0;padding:0;align-items:start;justify-items:center;text-align:center}
  .announcement span{margin-left:0}
  .plans-section{padding-top:60px;padding-bottom:60px}
  .section-intro{margin-bottom:30px}
  .finder{padding:22px}
  .filters{margin-top:28px;margin-bottom:24px;gap:10px}
  .plan-grid{gap:16px}
  .plan-card{padding:19px}
  .optimizer{padding-top:60px;padding-bottom:60px}
  .optimizer-grid{gap:30px}
  .trip-card{padding:22px}
  .optimizer-steps{margin-top:24px}
  .how{padding-top:60px;padding-bottom:60px}
  .steps{gap:22px}
  .cta{margin-bottom:40px;padding:30px}
  .footer{padding-top:32px;padding-bottom:36px}
  .footer-links{display:grid!important;grid-template-columns:1fr;justify-items:center;text-align:center;gap:14px!important;margin-top:34px;padding-top:26px;border-top:1px solid var(--line)}
  .footer-links a{font-size:13px}
  .footer-controls{justify-content:center;margin-top:20px}

  /* More separation around dense planning content without creating empty gaps. */
  .hero{padding-bottom:86px}
  .hero-copy,.section-intro p,.regional-heading p,.multi-result-heading p{line-height:1.75}
  .search-trip-chips{margin-top:13px}
  .hero-trip-recommendation{margin-top:22px!important}
  .plans-section{padding-top:72px;padding-bottom:72px}
  .section-intro{margin-bottom:34px}
  .finder{padding:24px}
  .plan-card,.regional-card{padding:20px}
  .plan-details{gap:12px;line-height:1.55}
  .regional-section{margin-top:40px;padding-top:34px}
  /* Multi-destination results already sit inside the finder; do not add the
     single-destination section's large mobile gap above their first header. */
  .multi-destination-results .multi-regional-section{margin-top:0;padding-top:0}
  .multi-destination-results .multi-regional-section .regional-heading{margin-bottom:12px}
  .multi-result-section{margin-top:40px;padding-top:34px}
  .regional-heading,.multi-result-heading{margin-bottom:20px}
  .regional-card+.regional-card{margin-top:2px}
  .how{padding-top:72px;padding-bottom:72px}
  .steps{gap:28px}

  /* Prioritize finding a plan on phones. The trust summary follows the
     results, alongside the longer explanatory content, instead of delaying
     the first useful package list. Desktop keeps the editorial order. */
  main#main-content{display:flex;flex-direction:column}
  main#main-content>.hero{order:1;min-height:0;padding-bottom:42px}
  main#main-content>.trip-recommendation-results{order:2}
  main#main-content>.plans-section{order:4}
  /* Keep the trust ribbon visually separate from the closing trip CTA. */
  main#main-content>.trust{order:5;margin:0 0 24px}
  main#main-content>.how{order:6}
  main#main-content>.cta{order:7;margin-bottom:0}

  /* Phone cards are an at-a-glance purchase decision. The full routing,
     coverage, carrier, and top-up information remains in the detail card. */
  main#main-content .plan-card[data-plan-details],
  main#main-content .regional-card[data-plan-details]{padding:14px}
  main#main-content .plan-card[data-plan-details] .plan-top{display:none}
  main#main-content .plan-card[data-plan-details] h3,
  main#main-content .regional-card[data-plan-details] h3{margin:0 0 9px;font-size:15px;line-height:1.3}
  main#main-content .plan-card[data-plan-details] .data,
  main#main-content .regional-card[data-plan-details] .data{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0;padding:0;border:0}
  main#main-content .plan-card[data-plan-details] .data strong,
  main#main-content .regional-card[data-plan-details] .data strong{font-size:22px;letter-spacing:-1px}
  main#main-content .plan-card[data-plan-details] .plan-bottom,
  main#main-content .regional-card[data-plan-details] .plan-bottom{align-items:center;margin-top:12px}
  main#main-content .plan-card[data-plan-details] .plan-bottom>strong,
  main#main-content .regional-card[data-plan-details] .plan-bottom>strong{font-size:17px}
  main#main-content .plan-card[data-plan-details] .plan-buy-now-stack{display:none}
  main#main-content .plan-card[data-plan-details] .plan-actions,
  main#main-content .regional-card[data-plan-details] .plan-actions{display:grid;grid-template-columns:1fr 1fr;width:min(100%,250px);flex:1 1 210px;gap:8px}
  main#main-content .plan-card[data-plan-details] .plan-bottom.has-plan-quantity,
  main#main-content .regional-card[data-plan-details] .plan-bottom.has-plan-quantity{align-items:stretch;flex-wrap:wrap}
  main#main-content .plan-card[data-plan-details] .plan-actions.has-plan-quantity,
  main#main-content .regional-card[data-plan-details] .plan-actions.has-plan-quantity{grid-template-columns:minmax(0,1.35fr) minmax(82px,1fr);width:100%;flex:1 1 100%;margin-left:0}
  main#main-content .plan-actions.has-plan-quantity .plan-card-quantity{width:100%;min-width:0}
  main#main-content .plan-card[data-plan-details] .select-plan,
  main#main-content .regional-card[data-plan-details] .select-plan,
  main#main-content .plan-card[data-plan-details] .buy-now,
  main#main-content .regional-card[data-plan-details] .buy-now{min-height:40px;padding:9px 12px!important;font-size:11px!important;white-space:nowrap}
  main#main-content .validity-group-cards .plan-card{min-height:0;padding:16px;background:var(--color-paper)}
  main#main-content .validity-group-cards .plan-card h3{display:-webkit-box;overflow:hidden;margin:0;font-size:17px;line-height:1.32;-webkit-box-orient:vertical;-webkit-line-clamp:2}
  main#main-content .validity-group-cards .plan-card .data{margin:12px 0}
  main#main-content .validity-group-cards .plan-card .plan-bottom{align-items:center;margin-top:12px}
}
@media(max-width:360px){
  .nav>.brand{font-size:18px}
  .nav-actions{gap:5px}
  .nav-actions .support.cart-link,.mobile-menu-trigger{padding:8px 8px;font-size:11px}
  main#main-content .plan-card[data-plan-details] .plan-actions.has-plan-quantity,
  main#main-content .regional-card[data-plan-details] .plan-actions.has-plan-quantity{grid-template-columns:1fr}
  main#main-content .plan-actions.has-plan-quantity .buy-now{width:100%;max-width:none}
}

@media(max-width:430px){
  .shell{padding-left:22px;padding-right:22px}
  .finder{padding:20px}
  .trip-card{padding:20px}
}

@media(max-width:620px){
  /* The country-plan controls should be readable at a glance, not a side-scrolling strip. */
  .filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:visible;padding-bottom:0;gap:6px;margin-top:24px}
  .filters>.filter{min-height:44px;padding:8px 5px;white-space:normal;text-align:center;font-size:10px;line-height:1.15}
  .mobile-plan-refinements{display:block;margin-top:-14px;margin-bottom:24px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-paper)}
  .mobile-plan-refinements summary{padding:12px 13px;cursor:pointer;color:var(--color-forest-700);font:800 12px Funnel Sans;list-style:none}
  .mobile-plan-refinements summary::-webkit-details-marker{display:none}
  .mobile-plan-refinements summary:after{content:'+';float:right;font-size:17px;line-height:.7}
  .mobile-plan-refinements[open] summary:after{content:'–'}
  .mobile-plan-refinement-content{display:grid;gap:9px;padding:0 11px 11px}
  .mobile-plan-refinement-content>.filter,.mobile-plan-refinement-content>.duration-filter,.mobile-plan-refinement-content>.route-filter,.mobile-plan-refinement-content>.data-range-filter,.mobile-plan-refinement-content>.hotspot-filter{width:100%;min-height:42px;border:1px solid var(--color-border);border-radius:10px;padding:8px 11px;white-space:normal}
  .mobile-plan-refinement-content>.duration-filter,.mobile-plan-refinement-content>.route-filter{display:flex;justify-content:space-between;align-items:center}
  .mobile-plan-refinement-content>.duration-filter select,.mobile-plan-refinement-content>.route-filter select{max-width:60%;text-align:right}
  .mobile-plan-refinement-content>.data-range-filter{display:flex;justify-content:space-between;align-items:center;gap:9px}
  .mobile-plan-refinement-content>.data-range-filter select{max-width:60%;min-width:0;text-align:right}
  /* Keep the destination context readable before showing plan controls. */
  .finder-top{align-items:stretch;flex-direction:column;gap:15px}
  .active-country{align-items:flex-start}
  .finder-actions{justify-content:space-between;width:100%;padding-top:11px;border-top:1px solid var(--line)}
  .destination-guide-link,.change-destination{min-height:30px;display:inline-flex;align-items:center}
}

@media(max-width:760px){
  .filters:empty{display:none}
  .regional-section>.regional-controls-row{display:none}
  .mobile-regional-control-actions,.mobile-regional-filter-sheet{display:none!important}
  /* Keep Sort and Filters in normal document flow. The former negative margin
     pulled this control row into the section copy on narrow screens. */
  .mobile-plan-controls{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0 24px}
  .mobile-plan-disclosure{position:relative}
  .mobile-plan-disclosure summary{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--color-border);border-radius:10px;background:var(--color-paper);color:var(--color-forest-700);cursor:pointer;font:800 13px Funnel Sans;list-style:none}
  .mobile-plan-disclosure summary::-webkit-details-marker{display:none}
  .mobile-plan-disclosure[open] summary{border-bottom-left-radius:0;border-bottom-right-radius:0;background:var(--color-cream)}
  .mobile-plan-disclosure-content{position:absolute;z-index:12;top:100%;left:0;display:grid;gap:8px;width:max(100%,220px);padding:9px;border:1px solid var(--color-border);border-radius:0 0 10px 10px;background:var(--color-paper);box-shadow:0 14px 28px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}
  .mobile-plan-filters .mobile-plan-disclosure-content{right:0;left:auto;width:max(100%,280px)}
  /* An open phone control owns the full row and expands in normal flow. The
     old absolute panel covered the first plan card and exposed stacked card
     borders around its narrow edges. */
  .mobile-plan-controls>.mobile-plan-disclosure[open]{grid-column:1/-1}
  .mobile-plan-controls>.mobile-plan-disclosure[open]>.mobile-plan-disclosure-content{position:static;right:auto;left:auto;width:100%;border-top:0;box-shadow:none}
  @supports selector(.mobile-plan-controls:has(>.mobile-plan-disclosure[open])){
    .mobile-plan-controls:has(>.mobile-plan-disclosure[open])>.mobile-plan-disclosure:not([open]){display:none}
  }
  .mobile-plan-disclosure-content>.filter,.mobile-plan-disclosure-content>.duration-filter,.mobile-plan-disclosure-content>.route-filter,.mobile-plan-disclosure-content>.data-range-filter,.mobile-plan-disclosure-content>.regional-data-range,.mobile-plan-disclosure-content>.hotspot-filter,.mobile-plan-disclosure-content>.regional-country-filter{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:44px;margin:0;border:1px solid var(--color-border);border-radius:9px;padding:8px 11px;background:var(--color-paper);white-space:normal}
  .mobile-plan-disclosure-content>.multi-filter-buttons{display:grid;width:100%;gap:8px}
  .mobile-plan-disclosure-content>.multi-filter-buttons>.filter{display:flex;align-items:center;justify-content:flex-start;width:100%;min-height:44px;margin:0;border:1px solid var(--color-border);border-radius:9px;padding:8px 11px;background:var(--color-paper);color:var(--color-text-muted);text-align:left;font:700 12px Funnel Sans}
  .mobile-plan-disclosure-content>.multi-filter-buttons>.filter.active{background:var(--color-paper);border-color:var(--color-forest-700);color:var(--color-forest-700)}
  .mobile-plan-disclosure-content>.filter{text-align:left;font:700 12px Funnel Sans;color:var(--color-text-muted)}
  .mobile-plan-disclosure-content>.filter.active{background:var(--color-forest-700);color:var(--color-paper)}
  .mobile-plan-disclosure-content>.duration-filter select,.mobile-plan-disclosure-content>.route-filter select,.mobile-plan-disclosure-content>.data-range-filter select{max-width:62%;min-width:0;text-align:right}
  /* Mobile refinements use one typographic system. Desktop toolbar rules use
     muted labels and emphasized values, which made this stacked panel look
     like unrelated controls with several sizes and colors. */
  .mobile-plan-filters .mobile-plan-disclosure-content :is(.regional-country-filter,.duration-filter,.route-filter,.data-range-filter,.regional-data-range,.hotspot-filter),
  .mobile-plan-filters .mobile-plan-disclosure-content :is(.regional-country-filter,.duration-filter,.route-filter,.data-range-filter,.regional-data-range,.hotspot-filter) :is(span,input,select){color:var(--color-forest-700);font:700 12px/1.25 "Funnel Sans",Arial,sans-serif}
  .mobile-plan-filters .mobile-plan-disclosure-content input::placeholder{color:var(--color-forest-700);opacity:1}
  .multi-country-filters{padding-bottom:0!important;margin-bottom:10px!important;border-bottom:0!important}
  .multi-country-filters+.filter-recommendation-hint{margin:0 0 14px!important}
  .mobile-plan-disclosure-content .multi-data-stack{position:static;display:grid;gap:7px;min-width:0}
  .mobile-plan-disclosure-content .multi-data-stack .multi-data-calculator-link{position:static;padding:5px 2px;font-size:11px}
  /* Multi-destination filters expand in the document flow. This keeps the
     first package visible rather than floating a panel over it. */
  .multi-country-filters>.mobile-plan-disclosure{width:100%}
  .multi-country-filters .mobile-plan-disclosure-content{position:static;width:100%;margin:0;border-top:0;border-radius:0 0 10px 10px;box-shadow:none}
  .multi-country-filters .mobile-plan-disclosure-content>.multi-data-stack{width:100%}
  .multi-country-filters .mobile-plan-disclosure-content .data-range-filter{display:flex;align-items:center;justify-content:space-between;gap:9px;width:100%;min-height:44px;margin:0;border:1px solid var(--color-border);border-radius:9px;padding:8px 11px;background:var(--color-paper);white-space:nowrap}
  .multi-country-filters .mobile-plan-disclosure-content .data-range-filter select{max-width:62%;min-width:0;text-align:right}
}

/* source: accessibility.css */
/* WCAG-oriented interaction layer: visible focus, durable contrast, and
   comfortably sized controls on compact touch screens. */
/* Keep one restrained neutral focus cue on every interactive control. A border
   by itself does not tell keyboard users which field currently owns focus. */
:where(a,button,summary,input,select,textarea):focus-visible{outline:2px solid var(--color-forest-700)!important;outline-offset:2px!important;box-shadow:none!important}
/* Small standalone utilities still need a usable pointer target. Their visual
   glyphs may stay compact, but the interactive surface is never below 24px. */
.optimizer-plan-info,.cart-preview-item button,.plan-coverage-network-close{min-width:24px!important;min-height:24px!important}
.country-summary-more,.multi-view-country,.data-filter-calculator-link,.multi-data-calculator-link,.regional-data-calculator-link,.cart-header-shop,.package-review-actions a{display:inline-flex;align-items:center;min-height:24px}
/* Honor system motion preferences across every bundle, including legacy page
   styles that opt into smooth scrolling or decorative animations. */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto!important}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
}
/* The custom hotspot toggle remains visually compact while its real checkbox
   stays in the tab order and accessibility tree. */
.toggle-row input{display:block!important;position:absolute!important;inline-size:1px!important;block-size:1px!important;margin:0!important;opacity:0!important;overflow:hidden!important}
.toggle-row input:focus-visible+.toggle{outline:2px solid var(--color-forest-700)!important;outline-offset:3px!important}
.coral{background:var(--color-cream)!important;color:var(--color-coral-500)!important}.lime{background:var(--color-citron-100)!important;color:var(--color-forest-700)!important}.purple{background:var(--color-cream)!important;color:var(--color-text-muted)!important}
.provider,.plan-details span,.regional-heading p,.multi-result-heading p,.cart-preview-item span{color:var(--color-text-muted)!important}
.cart-preview-item button{width:36px!important;height:36px!important}.cart-preview-view,.cart-preview-checkout{min-height:44px}
@media(max-width:760px){
  .filters>.filter,.regional-sort-tabs>.filter,.multi-filter-buttons>.filter{min-height:44px!important;padding:9px 12px!important}
  .duration-filter,.route-filter,.data-range-filter,.regional-data-range,.hotspot-filter{min-height:44px!important;padding:7px 12px!important}
  .duration-filter select,.route-filter select,.data-range-filter select,.regional-data-range select{min-height:36px!important}
  .hotspot-filter{display:inline-flex!important;align-items:center!important;gap:9px!important}
  .hotspot-filter input{inline-size:22px!important;block-size:22px!important}
  .validity-group-toggle,.select-plan,.buy-now,.country-best-view-cart,.trip-buy{min-height:44px!important}
  .search-trip-chips button,.regional-country-chips button{min-height:36px!important}
  .item-quantity button{width:44px!important;min-width:44px!important;min-height:44px!important}.item-quantity span{min-width:36px!important}
  .remove,.plan-details-close{min-width:44px!important;min-height:44px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
}

/* Recommendation labels share one calm green treatment; coral is reserved for
   primary destination-finding actions, never informational badges. */
.coral,.lime,.purple{background:var(--color-surface-highlight)!important;color:var(--color-ink-900)!important}

/* source: design-system.css */
/* Roamnessa's canonical shared UI foundation. Load once per page bundle. */
*,*::before,*::after{box-sizing:border-box}
body{background:var(--color-cream);color:var(--color-ink-900);font-family:"Funnel Sans",Arial,sans-serif}
button{appearance:none;border:0;background:transparent;padding:0;font:inherit}
input,select,textarea{font:inherit}
button,a,input,select,textarea{transition:border-color .16s ease,background-color .16s ease,color .16s ease,box-shadow .16s ease}
input:not([type="checkbox"]):not([type="radio"]),select,textarea{min-height:44px;border:1px solid var(--color-border);border-radius:var(--radius-field);background:var(--color-paper);color:var(--color-ink-900);padding:10px 12px}
input:not([type="checkbox"]):not([type="radio"])::placeholder,textarea::placeholder{color:var(--color-text-muted);opacity:.72}
input:not([type="checkbox"]):not([type="radio"]):focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--color-leaf-400);outline-offset:2px;border-color:var(--color-forest-700)}
label{color:var(--color-ink-900);font-weight:700}
form>label+label{margin-top:var(--space-4)}
:where(.card,.trip-card,.review-submit-card,.destination-content-grid>article,.regional-option,.summary,.item,.analytics-consent,.support-bot){border-radius:var(--radius-surface)}
:where(.plan-card,.regional-card,.destination-plan,.region-plan-card){border-radius:var(--radius-plan)}
:where(.plan-card-utility,.destination-tag,.review-badge,.utility-label){border-radius:var(--radius-label)}
:where(.button,.summary button,.optimize-btn,.destination-buy,.review-submit-card button,.analytics-consent button){min-height:44px;border-radius:var(--radius-button);font-family:"Funnel Sans",Arial,sans-serif;font-weight:800}
:where(.button,.summary button,.destination-buy,.review-submit-card button){background:var(--color-forest-700);color:var(--color-paper)}
:where(.button,.summary button,.destination-buy,.review-submit-card button):hover{background:var(--color-moss-600)}
:where(.search-box button,.optimize-btn){background:var(--color-coral-500);color:var(--color-paper)}
:where(.search-box button,.optimize-btn):hover{background:var(--color-moss-600)}
:where(.card,.trip-card,.review-submit-card,.destination-content-grid>article,.regional-option,.summary){border-color:var(--color-border)}
.eyebrow,.section-label,.kicker{font-family:"Funnel Sans",Arial,sans-serif;letter-spacing:.13em}
@media(max-width:760px){input:not([type="checkbox"]):not([type="radio"]),select,textarea{min-height:44px;font-size:16px}.card,.trip-card,.review-submit-card,.destination-content-grid>article,.regional-option,.summary{padding:var(--space-5)}}

/* Shared brand mark */
.brand{display:inline-flex;align-items:center;gap:var(--brand-wordmark-gap)}.brand-mark,.brand>span{background:transparent!important}.brand img.brand-mark{width:var(--brand-mark-size);height:var(--brand-mark-size);flex:0 0 var(--brand-mark-size);object-fit:contain;background:transparent!important;border-radius:50%!important;margin:0}

/* Radius system */
/* Roamnessa radius system: functional UI stays precise; editorial surfaces stay calm. */
:root {
  --radius-label: 2px;
  --radius-image: 4px;
  --radius-field: 6px;
  --radius-button: 8px;
  --radius-plan: 10px;
  --radius-surface: 12px;
  /* Reserved for tracks, toggles, and genuinely circular controls only. */
  --radius-full: 999px;
}

/* Actions and form controls */
button, .button, .support, .select-plan, .trip-buy, .continue,
.cart-header-badge, .currency-selector, .calculator-language-menu summary {
  border-radius: var(--radius-button);
}

.support-ticket-return {
  border-radius: var(--radius-button);
}

input:not([type="checkbox"]):not([type="radio"]), select, textarea,
.duration-filter, .route-filter, .data-range-filter, .hotspot-filter,
.regional-country-filter, .region-phone-number-filter, .region-details-hint,
.filter, .catalog-controls button, .mobile-menu-trigger {
  border-radius: var(--radius-field);
}

/* Dense product choices */
.plan-card, .regional-card, .plan, .item, .recommendation,
.country-best-choice, .filter-best-choice, .mobile-plan-refinements,
.mobile-plan-disclosure summary, .mobile-plan-disclosure-content,
.eid-step, .compact-card-group {
  border-radius: var(--radius-plan);
}

/* General surfaces and dialogs */
.finder, .trip-card, .card, .summary, .cta, .plan-details-dialog,
.account-service-modal, .support-ticket, .referral-form, .review-card,
.review-submit-card, .toast, .calculator-language-options,
.device-model-suggestions {
  border-radius: var(--radius-surface);
}

/* Labels are deliberately almost square rather than pill-shaped. */
.plan-tag, .calling-plan-badge, .review-badge, .optimizer-lowest-price,
.region-plan-badges .calling-plan-badge, .data-price-per-gb,
.country-best-choice > span, .filter-best-choice > span {
  border-radius: var(--radius-label);
}

/* Keep circles only for things that are inherently circular. */
.avatar, .brand-mark, .eyebrow::before, .eyebrow i, .globe, .orbit,
.plan-details-close, .mobile-site-menu-header button, .toggle, .toggle::before,
.cart-header-badge b, .search-trip-help-plus, .eid-badge, .dial-code b {
  border-radius: 50%;
}

/* Photography and data-heavy content should not inherit card softness. */
main img:not(.brand-mark), .destination-hero img, .destination-guide img,
.story-image, .photo, table {
  border-radius: var(--radius-image);
}

/*
 * Public component mappings
 *
 * Some page-local declarations are more specific than shared primitives.
 * Keep their component categories explicit here so a component stylesheet
 * cannot quietly reintroduce the old 13–24px "everything rounded"
 * treatment.
 */

/* Trust and compatibility */
.eid-screen,
.referral-form {
  border-radius: var(--radius-plan);
}

.referral-input-shell {
  border-radius: var(--radius-field);
}

.referral-form button {
  border-radius: var(--radius-button);
}

/* Regional catalog controls */
.region-phone-number-filter,
.region-details-hint,
.region-phone-number-filter input {
  border-radius: var(--radius-field);
}

/* Destination catalog */
.destination-facts > div,
.destination-plan,
.destination-filter-empty,
.destination-filter-best,
.destination-plan-dialog dl div,
.destination-mobile-disclosure summary,
.destination-mobile-disclosure-content,
.destination-mobile-disclosure-content .destination-filter-tabs button,
.destination-mobile-disclosure-content .destination-filter-check {
  border-radius: var(--radius-plan);
}

.destination-content-grid > article,
.regional-option,
.destination-filter-panel,
.destination-plan-dialog,
.destination-language-menu .language-options {
  border-radius: var(--radius-surface);
}

.destination-buy,
.destination-help a,
.destination-filter-best button,
.destination-language-menu summary,
.destination-language-menu .language-options a {
  border-radius: var(--radius-button);
}

.destination-tag,
.destination-filter-check input {
  border-radius: var(--radius-label);
}

.destination-filter-tabs button,
.destination-filter-select,
.destination-filter-select select,
.destination-filter-check {
  border-radius: var(--radius-field);
}

/* Standalone reviews and referral surfaces */
.review-score,
.referral-form button {
  border-radius: var(--radius-button);
}

.reviews-footer details div {
  border-radius: var(--radius-surface);
}

/* Color system */
/*
 * Roamnessa colour system
 *
 * The five supplied greens are the only green family used by the product.
 * Coral is the single warm signal: it is for primary actions and important
 * exceptions, never for routine metadata or decorative badges.
 */
:root {
  /* Brand palette */
  --color-ink-900: #132a13;
  --color-forest-700: #31572c;
  --color-moss-600: #4f772d;
  --color-leaf-400: #90a955;
  --color-citron-100: #ecf39e;
  --color-lime-signal: #c7ed56;
  /* The shared action coral pairs with white at WCAG AA for normal text. */
  --color-coral-500: #cd432e;

  /* Neutrals and semantic aliases */
  --color-paper: #fffdf8;
  --color-cream: #f5f2e9;
  --color-text: var(--color-ink-900);
  --color-text-muted: #455744;
  --color-text-subtle: var(--color-forest-700);
  --color-border: #c9d5b8;
  --color-border-strong: var(--color-leaf-400);
  --color-surface: var(--color-paper);
  --color-surface-muted: var(--color-cream);
  --color-surface-highlight: color-mix(in srgb, var(--color-citron-100) 48%, var(--color-paper));
  --color-surface-positive: color-mix(in srgb, var(--color-leaf-400) 18%, var(--color-paper));
  --color-surface-coral: color-mix(in srgb, var(--color-coral-500) 14%, var(--color-paper));
  --color-focus-ring: color-mix(in srgb, var(--color-citron-100) 76%, transparent);

  /* Backward-compatible aliases. New component CSS must use the names above. */
  --ink: var(--color-ink-900);
  --green: var(--color-forest-700);
  --green-mid: var(--color-moss-600);
  --lime-strong: var(--color-leaf-400);
  --lime: var(--color-citron-100);
  --cream: var(--color-cream);
  --paper: var(--color-paper);
  --muted: var(--color-text-muted);
  --line: var(--color-border);
  --orange: var(--color-coral-500);
}

body { background: var(--color-cream); color: var(--color-text); }

/* Shared component language. These are intentionally semantic rather than
   page-specific so every route uses the same palette. */
a { color: var(--color-forest-700); }
hr, .divider { border-color: var(--color-border); }

/* The announcement carries two distinct messages: the brand promise in paper
   white and the offer in lime. Keep this contrast even when the locale swaps
   the words inside the span. */
.announcement { background: var(--color-ink-900); color: var(--color-paper); }
.announcement span { color: var(--color-lime-signal); }
/* Text-mark fallbacks can use a green surface. The SVG mark supplies its own
   circular surface and must not inherit a rounded-square background. */
.brand-mark:not(img), .brand > span { background: var(--color-forest-700) !important; }
img.brand-mark {
  aspect-ratio: 1;
  border-radius: 50% !important;
  background: transparent !important;
}

.filter.active, .optimizer, .estimate, .support-bot-toggle, .support-bot-header {
  background: var(--color-forest-700);
}
.optimizer h2 em, .optimizer-steps span { color: var(--color-citron-100); }
.light { color: var(--color-citron-100); }

/* Coral is the warm directional signal for destination-finding moments.
   Paper text on this darker coral meets WCAG AA for normal text (4.73:1). */
.search-box button, .cta button {
  background: var(--color-coral-500) !important;
  color: var(--color-paper) !important;
}

/* Suggestions live inside the search box in the DOM, but they are choices—not
   primary actions. Keep the list calm; only the active row gets a pale tint. */
.search-box .suggestions .search-result {
  background: var(--color-paper) !important;
  color: var(--color-ink-900) !important;
  border: 0 !important;
  border-radius: 0 !important;
  border-bottom: 1px solid var(--color-border);
  box-shadow: none !important;
  filter: none !important;
  transform: none !important;
}
.search-box .suggestions .search-result:last-child { border-bottom: 0; }
.search-box .suggestions .search-result:hover,
.search-box .suggestions .search-result:focus-visible,
.search-box .suggestions .search-result.keyboard-active {
  background: var(--color-surface-highlight) !important;
}

/* Coral actions are directional, not three-dimensional. Keep the same calm
   surface treatment as the destination search action—no dark keyline or
   raised slab effect. Keyboard focus remains visible through accessibility.css. */
.cta button {
  min-height: 56px;
  padding-inline: var(--space-5);
  border: 0 !important;
  border-radius: var(--radius-button);
  box-shadow: none;
  cursor: pointer;
  transition: filter 160ms ease;
}
.cta button:hover { transform: none; box-shadow: none; filter: brightness(.97); }
.cta button:active { transform: none; box-shadow: none; }
h1 em, h2 em { color: var(--color-coral-500); }
/* The hero's emphasized second line is a deliberate editorial moment. */
.hero h1 em { color: var(--color-coral-500); }

/* Highlighted states are quiet green surfaces, never red or floating pills. */
.coral, .lime, .recommendation, .country-best-choice, .filter-best-choice,
.trip-recommended, .profile.active, .profiles button.active {
  background: var(--color-surface-highlight) !important;
  color: var(--color-ink-900) !important;
  border-color: var(--color-leaf-400) !important;
}
.cart-preview-checkout { background: var(--color-citron-100) !important; color: var(--color-ink-900) !important; }

.data-filter-calculator-link, .regional-data-calculator-link, .multi-data-calculator-link,
.destination-guide-link, .support-bot-action, .package-review-actions a {
  color: var(--color-forest-700);
}

/* One accessible focus treatment on every route. */
:where(a, button, summary, input, select, textarea):focus-visible {
  outline: 3px solid var(--color-focus-ring) !important;
  outline-offset: 2px;
}

/* Shared surfaces: pages may arrange these differently, but they do not get
   their own palette. This intentionally covers the storefront, destinations,
   regional plans, cart, calculator, optimizer, account, and trust pages. */
.finder, .trip-card, .setup, .estimate, .explain, .card, .summary,
.plan-card, .plan, .item, .regional-card, .regional-option, .destination-plan,
.package-review, .review-card, .review-submit-card, .support-ticket,
.account-service-modal, .plan-details-dialog, .destination-plan-dialog,
.bulk-savings-dialog, .calculator-country-suggestions, .device-model-suggestions,
.cart-preview, .support-bot {
  background: var(--color-surface);
  border-color: var(--color-border);
  color: var(--color-text);
}

.trip-card, .setup, .estimate, .explain, .card, .summary, .review-submit-card,
.regional-option, .destination-facts > div, .verified-reviews,
.support-bot-message, .destination-filter-best {
  background: var(--color-surface-highlight);
  border-color: var(--color-border-strong);
}

input, select, textarea, .destination-filter-select, .destination-filter-check,
.destination-filter-tabs button, .language-menu summary, .currency-menu summary,
.calculator-language-menu summary {
  background: var(--color-paper);
  border-color: var(--color-border);
  color: var(--color-text);
}

.plan-card:hover, .plan:hover, .item:hover, .regional-card:hover,
.destination-plan:hover, .destination-plan:focus-within,
.item[data-cart-plan-details]:hover, .plan-card[data-clickable-plan]:hover {
  background: var(--color-surface-highlight);
  border-color: var(--color-leaf-400);
}

/* Routine purchase, planning, and support actions remain forest green so
   coral stays scarce and the action hierarchy is immediately readable. */
.destination-buy, .select-plan, .trip-buy, .continue, .bulk-savings-action,
.home-link, .support-ticket-return, .optimize-btn, .support-bot-form button,
.summary button, .button, .primary {
  background: var(--color-forest-700) !important;
  color: var(--color-paper) !important;
  border:1px solid var(--color-forest-700)!important;
}

/* Supporting text, dividers and utility metadata use a single quiet green. */
.plan-card p, .plan p, .item p, .regional-card p, .destination-plan p,
.destination-plan-data span, .destination-filter-prompt, .destination-filter-select,
.destination-filter-check, .pricing-note, .popular, .support-bot-note,
.destination-facts span {
  color: var(--color-text-muted);
}

.destination-filter-empty, .not-found-message, .regional-notice {
  background: var(--color-surface-coral);
  border-color: var(--color-coral-500);
  color: var(--color-ink-900);
}
.package-review-stars { color: var(--color-coral-500); }

/* Spacing system */
/*
 * Roamnessa spacing: plans compress; editorial and travel content breathe.
 * Use only these tokens for component margin, padding, gap, and scroll-margin.
 * Plans use --space-1 through --space-6; editorial sections may use --space-7
 * through --space-10. Do not introduce ad-hoc spacing values.
 */
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 18px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 44px;
  --space-8: 60px;
  --space-9: 84px;
  --space-10: 116px;
}

/* Relationship rules */
.brand, .active-country, .trust div, .eyebrow, .section-label,
.destination-filter-select, .destination-filter-check { gap: var(--space-2); }
.active-country small, .destination-facts strong, .profiles span,
.friend-code > span { margin-top: var(--space-1); }
.plan-card h3, .plan h2, .destination-plan h2, .item h2 { margin-bottom: var(--space-3); }
.hero-copy, .section-intro p, .intro, .destination-hero > p:not(.eyebrow),
.section-heading > p { margin-top: var(--space-4); }
.hero-copy + .search-box, .intro + .layout, .intro + .calculator,
.destination-hero > p:not(.eyebrow) + .destination-facts { margin-top: var(--space-6); }

/* Product interfaces use the compact end of the scale. */
.plan-grid, .plans, .destination-plans, .items { gap: var(--space-5); }
.plan-card, .plan, .destination-plan, .item { padding: var(--space-5); }
.plan-card .data, .plan .data { margin-top: var(--space-4); }
.plan-details, .trip-buy-row, .plan-card-badges, .region-plan-badges { gap: var(--space-2); }
.finder, .trip-card, .setup, .estimate, .explain, .card, .summary { padding: var(--space-5); }

/* Storytelling sections use the generous end of the scale. */
.hero { padding-top: var(--space-10); padding-bottom: var(--space-9); }
.plans-section, .how { padding-top: var(--space-9); padding-bottom: var(--space-9); }
.optimizer { padding-top: var(--space-9); padding-bottom: var(--space-9); }
.destination-hero { padding-top: var(--space-8); padding-bottom: var(--space-8); }
.destination-section, .destination-help { padding-top: var(--space-8); padding-bottom: var(--space-8); }
.cta { margin-bottom: var(--space-8); padding: var(--space-7) var(--space-8); }

/*
 * Public page mapping
 *
 * These mappings give every page one spacing rhythm without changing the meaning of
 * absolute positioning (for example, a dialog close button or popover).
 */

/* Compact plan and regional interfaces: 4–32px only. */
.plan-card h3,
.plan h2,
.destination-plan h2 {
  margin: 0 0 var(--space-3);
}

.plan-card .data,
.plan .data,
.destination-plan-data {
  margin-top: var(--space-4);
}

.plan-bottom,
.destination-plan-action {
  margin-top: var(--space-4);
}

.filters,
.regional-filters,
.destination-filter-panel {
  gap: var(--space-2);
  margin-bottom: var(--space-5);
}

.validity-group-heading {
  margin-top: var(--space-2);
  /* Keep the validity label visually connected to its plans without letting
     the first card touch the label. */
  margin-bottom: var(--space-3);
  padding-top: var(--space-2);
}

.validity-group-cards,
.regional-grid {
  gap: var(--space-5);
}

/* Compatibility and referral pages. */
.card,
.referral-form,
.eid-step,
.eid-screen,
.device-model-suggestions {
  padding: var(--space-5);
}

.eid-steps,
.compatibility-notes,
.referral-form,
.support-ticket-form {
  gap: var(--space-3);
}

.guide-heading,
.trust-footer {
  gap: var(--space-5);
}

/* Destination, reviews, and calculator surfaces use the same hierarchy. */
.destination-facts,
.destination-content-grid,
.reviews-list,
.calculator,
.account-service-grid {
  gap: var(--space-5);
}

.destination-content-grid > article,
.destination-filter-panel,
.destination-filter-empty,
.destination-filter-best,
.review-card,
.review-submit-card,
.setup,
.estimate,
.explain,
.account-service-modal {
  padding: var(--space-5);
}

.review-card h3,
.destination-content-grid h2,
.setup h2 {
  margin-bottom: var(--space-3);
}

.review-meta,
.destination-plan-dialog dl,
.recommendation,
.screen-time-note {
  margin-top: var(--space-4);
}

@media (max-width: 800px) {
  .hero { padding-top: var(--space-8); padding-bottom: var(--space-7); }
  .plans-section, .how, .optimizer { padding-top: var(--space-8); padding-bottom: var(--space-8); }
  .destination-hero, .destination-section, .destination-help { padding-top: var(--space-7); padding-bottom: var(--space-7); }
  /* The homepage footer supplies the closing section gap on phones. Keeping
     the CTA's desktop margin here would double that space. */
  main#main-content > .cta { margin-bottom: 0; }
  .plan-grid, .plans, .destination-plans, .items { gap: var(--space-4); }
  .plan-card, .plan, .destination-plan, .item, .finder, .trip-card,
  .setup, .estimate, .explain, .card, .summary { padding: var(--space-5); }

}

/* Horizontal clipping belongs to the canonical page foundation. Unlike
   overflow:hidden, clip does not create a Safari scroll container. */
html,
body {
  overflow-x: clip;
}

/* Shared action geometry and destination-search treatment */
.select-plan,.optimize-btn,#ctaSearch,.search-box button{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;font-size:12px!important;line-height:1.1}.select-plan{padding:8px 10px!important}.optimize-btn{font-size:12px!important}.select-plan span,.optimize-btn span,#ctaSearch span,.search-box button span{font-size:15px!important;line-height:1;margin-left:0!important}.plan-card{position:relative}.plan-card .more{display:none!important}.plan-card .provider{position:absolute;top:17px;right:17px;margin:0;background:var(--color-cream);border-radius:5px;padding:5px 7px;color:var(--color-text-muted);font-size:9px;font-weight:700}

/* Country search is one calm surface: no field within a field, and no
   heavy green keyline around the coral action. */
.search-box input{border:0!important;border-radius:0!important;box-shadow:none!important}
#ctaSearch,.search-box button{border:0!important;border-radius:10px!important;background:var(--color-coral-500)!important;color:var(--color-paper)!important;box-shadow:none!important;transition:filter .16s ease}#ctaSearch:hover,.search-box button:hover{filter:brightness(.97);box-shadow:none!important;transform:none!important}#ctaSearch:active,.search-box button:active,.search-box button.is-submitted{box-shadow:none!important;transform:none!important}

/* Contrast-critical component refinements */
.popular,
.pricing-note {
  color: var(--color-text-muted) !important;
}

/* source: site-footer.css */
/* One public footer contract: brand, locale/currency controls, then utility links.
   Page styles may set surrounding space, but not a competing footer layout. */
.roamnessa-site-footer {
  box-sizing: border-box;
  direction: ltr;
  width: min(1180px, calc(100% - 56px));
  margin: var(--space-8) auto 0;
  padding: var(--space-6) 0 var(--space-7);
  border-top: 1px solid var(--color-border);
  display: grid;
  /* The locale controls belong in the visual space between the brand and
     the link group—not at the mathematical center of the viewport. */
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--space-5);
}

.roamnessa-site-footer .brand {
  display: inline-flex;
  align-items: center;
  gap: var(--brand-wordmark-gap);
  width: max-content;
  color: var(--color-ink-900);
  font: 800 italic 17px/1 "Funnel Sans", Arial, sans-serif;
  letter-spacing: -.8px;
  text-decoration: none;
}

.roamnessa-site-footer .brand-mark { width: var(--brand-mark-size); height: var(--brand-mark-size); flex: 0 0 var(--brand-mark-size); object-fit: contain; margin: 0; }
.roamnessa-site-footer .footer-controls { justify-self: center; display: flex; gap: 12px; }
.roamnessa-site-footer .footer-links { justify-self: end; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 24px; }
.roamnessa-site-footer .footer-links a {
  color: var(--color-ink-900);
  font: 700 13px/1.3 "Funnel Sans", Arial, sans-serif;
  text-decoration: none;
}
.roamnessa-site-footer .footer-links a:hover,
.roamnessa-site-footer .footer-links a:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

@media (max-width: 760px) {
  .roamnessa-site-footer {
    width: min(100% - 36px, 520px);
    margin-top: var(--space-6);
    grid-template-columns: 1fr;
    justify-items: center;
    gap: var(--space-5);
    padding: var(--space-6) 0;
  }
  .roamnessa-site-footer .footer-controls,
  .roamnessa-site-footer .footer-links { justify-self: center; }
  /* Safari can paint an outline around the open <details> box instead of the
     rounded summary. A shadow keeps the keyboard focus ring on the pill. */
  .roamnessa-site-footer .footer-controls summary:focus-visible {
    outline: none !important;
    box-shadow: 0 0 0 3px var(--color-focus-ring) !important;
  }
  .roamnessa-site-footer .footer-controls .language-options {
    right: auto;
    left: 50%;
    width: min(205px, calc(100vw - 32px));
    transform: translateX(-50%);
  }
  .roamnessa-site-footer .footer-links { justify-content: center; gap: 14px 20px; }
}

/* source: reference-plan-cards.css */
/* The plan card is a compact purchase brief: one clear hierarchy, one action. */
.validity-plan-group {
  grid-column: 1 / -1;
  margin-top: var(--space-2);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-cream);
}

.validity-plan-group:first-child {
  margin-top: 0;
  padding-top: 0;
  border-top: 0;
}

.validity-plan-group:not([data-expanded="true"]) .validity-group-cards { display: none; }

.validity-group-heading {
  margin: 0 0 var(--space-3) !important;
  padding: 0;
  border-top: 0;
}

.validity-group-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--color-forest-700);
  font: 700 18px/1.2 "Funnel Sans", Arial, sans-serif;
  cursor: pointer;
}

.validity-group-toggle[aria-expanded="true"] > span:last-child { transform: rotate(180deg); }

.finder {
  /* The catalog itself is the paper-white shell. This final rule prevents
     shared surface defaults from repainting it pale lime. */
  background: var(--color-paper);
  border-color: var(--color-border);
}

.validity-group-cards {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  width: 100%;
  max-width: none;
  gap: 18px;
  align-items: stretch;
}

.validity-group-cards .plan-card {
  /* Keep cards in each desktop row aligned, even when one plan title wraps. */
  display: flex;
  flex-direction: column;
  min-height: 220px;
  height: 100%;
  align-self: stretch;
  /* Leave a small rendered-height buffer below the compact-card contract.
     Grid rounding can otherwise turn a nominal 240px card into 240.078px. */
  padding: 16px;
  /* The package brief follows the reference: paper card, dark ink action. */
  background: var(--color-paper);
  border: 1px solid var(--color-border);
  border-radius: 11px;
  box-shadow: none;
}

.validity-group-cards .plan-card:hover,
.validity-group-cards .plan-card:focus-within {
  /* The paper card visibly lights up when it is being inspected, while the
     catalog shell remains quiet and white. */
  background: var(--color-surface-highlight);
  border-color: var(--color-leaf-400);
  box-shadow: none;
  transform: none;
}

/* Cards are keyboard-selectable articles, so the native browser outline can
   otherwise appear blue. Use the shared Roamnessa ring for keyboard focus and
   let the existing green selected state carry pointer selection. */
.validity-group-cards .plan-card:focus-visible {
  outline: 3px solid var(--color-focus-ring) !important;
  outline-offset: 2px;
}
.validity-group-cards .plan-card:focus:not(:focus-visible) {
  outline: 0;
}

.validity-group-cards .plan-card.is-comparison-selected {
  background: var(--color-surface-highlight) !important;
  border-color: var(--color-leaf-400) !important;
  box-shadow: 0 0 0 2px var(--color-lime-signal) !important;
}

.validity-group-cards .plan-card-utility {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding-inline-end: 44px;
  min-height: 16px;
  color: var(--color-forest-700);
  font: 700 11px/1.15 Oxanium, "Funnel Sans", sans-serif;
  letter-spacing: .12em;
}
.validity-group-cards .plan-card-utility:empty {
  visibility: hidden;
}

.validity-group-cards .plan-utility-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.validity-group-cards .plan-utility-label--regional {
  letter-spacing: normal;
  text-transform: none;
}
.validity-group-cards .plan-card-utility .plan-tag--action {
  position: static;
  display: inline-flex;
  border: 0;
  border-left: 3px solid var(--color-moss-600);
  border-radius: 0;
  background: transparent;
  padding: 0 0 0 var(--space-2);
  color: var(--color-moss-600);
  font: 700 10px/1.15 "Funnel Sans", Arial, sans-serif;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.validity-group-cards .plan-utility-label i {
  width: 3px;
  height: 16px;
  background: var(--color-moss-600);
}
.validity-group-cards .plan-card h3 {
  padding-inline-end: 44px;
  margin: 12px 0 4px;
  color: var(--color-ink-900);
  font: 600 19px/1.1 Oxanium, "Funnel Sans", sans-serif;
  letter-spacing: -.04em;
}
.validity-group-cards .plan-card-meta { margin: 0; font: 700 11px/1.3 Oxanium, "Funnel Sans", sans-serif; }
.validity-group-cards .plan-card-without-title .plan-card-meta { margin-top: 12px; }
.validity-group-cards .plan-card-divider { height: 1px; margin: 12px 0; background: var(--color-border); }
.validity-group-cards .plan-card .data {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
}
.validity-group-cards .plan-card .data strong {
  font-size: 29px;
}
.validity-group-cards .plan-card-per-gb { margin-left: auto; font: 700 11px/1 Oxanium, "Funnel Sans", sans-serif; white-space: nowrap; }
.validity-group-cards .plan-card .plan-bottom {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  flex-wrap: nowrap;
  gap: 12px;
  margin-top: auto;
  padding-top: 14px;
}
.validity-group-cards .plan-card .plan-bottom > strong {
  flex: 0 0 auto;
  font-size: 20px;
  white-space: nowrap;
}
.validity-group-cards .plan-card .select-plan,
.validity-group-cards .plan-card .buy-now {
  min-height: 44px;
  height: 44px;
  padding: 0 10px !important;
  border-radius: 8px;
  font-size: 11px !important;
  line-height: 1;
  white-space: nowrap;
  box-shadow: none !important;
}
.validity-group-cards .plan-card-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex: 0 1 auto;
  min-width: 0;
  gap: 8px;
  margin-left: auto;
}
.validity-group-cards .plan-card-actions .plan-actions {
  display: flex;
  align-items: stretch;
  flex-wrap: nowrap;
  min-height: 44px;
  height: 44px;
  gap: var(--space-2);
}
.validity-group-cards .plan-actions { margin-left: auto; }
.validity-group-cards .plan-card .buy-now {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  max-width: 90px;
  appearance: none;
  border: 1px solid var(--color-forest-700) !important;
  background: var(--color-paper) !important;
  color: var(--color-forest-700) !important;
  font: 600 11px/1 "Funnel Sans", Arial, sans-serif !important;
  text-decoration: none;
  cursor: pointer;
}
.validity-group-cards .plan-card .buy-now:hover { background: var(--color-surface-highlight); }

/* Every regional card uses the same two-step purchase choice as the main
   catalogue. Scoping this to one results wrapper left other regional surfaces
   with a bare Buy now text button. */
.regional-card .plan-actions {
  display: flex;
  align-items: stretch;
  gap: var(--space-2);
  margin-left: auto;
}
.regional-card .select-plan,
.regional-card .buy-now {
  min-height: 44px;
  height: 44px;
  padding: 0 10px !important;
  border-radius: 8px;
  font-size: 11px !important;
  line-height: 1;
  white-space: nowrap;
  box-shadow: none !important;
}
.regional-card .buy-now {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  max-width: 90px;
  appearance: none;
  border: 1px solid var(--color-forest-700) !important;
  background: var(--color-paper) !important;
  color: var(--color-forest-700) !important;
  font: 600 11px/1 "Funnel Sans", Arial, sans-serif !important;
  text-decoration: none;
  cursor: pointer;
}
.regional-card .buy-now:hover { background: var(--color-surface-highlight); }

.validity-group-cards .plan-card.trip-recommended {
  /* Recommended cards keep that same green emphasis after the pointer leaves. */
  background: var(--color-surface-highlight) !important;
  border-color: var(--color-leaf-400) !important;
  box-shadow: 0 0 0 2px var(--color-surface-highlight) !important;
}
/* Comparing is driven by selecting the card itself. The explicit information
   control opens details without changing that selection. */
.validity-group-cards .plan-compare-toggle { display: none; }

@media (min-width: 1200px) {
  .validity-group-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 800px) {
  /* A single-column plan list needs a full section gap so adjacent packages
     read as distinct purchase choices rather than one joined stack. */
  .validity-group-cards { grid-template-columns: 1fr; gap: var(--space-6); }
  .validity-group-cards .plan-card { min-height: 0; height: auto; align-self: start; padding: 17px; }
  .validity-group-cards .plan-card h3 { font-size: 19px; }
  .validity-group-cards .plan-card .select-plan,
  .validity-group-cards .plan-card .buy-now { min-height: 44px; font-size: 11px !important; }
  .validity-group-cards .plan-card .plan-bottom { align-items: center; }
}

/* source: filter-row-system.css */
/* Canonical catalog toolbar. Filter geometry, wrapping, and calculator-link
   placement live here and nowhere else. */
.filters,
.multi-country-filters,
.regional-controls-row {
  display: flex;
  align-items: flex-start;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin: 0 0 var(--space-3);
  padding: 0;
  overflow: visible;
}

/* Keep the country price summary from visually running into its controls. */
.finder > .filters { margin-top: var(--space-3); }

.multi-country-filters { padding-bottom: var(--space-7); }
.regional-controls-row .regional-sort-tabs,
.regional-controls-row .regional-filters { display: contents; }
.multi-filter-buttons { display: flex; gap: var(--space-2); flex-wrap: wrap; }

.filters > .filter,
.filters > .duration-filter,
.filters > .route-filter,
.filters > .hotspot-filter,
.filters > .regional-country-filter,
.filters .data-range-filter,
.multi-country-filters .filter,
.multi-country-filters > .duration-filter,
.multi-country-filters > .route-filter,
.multi-country-filters > .hotspot-filter,
.multi-country-filters > .regional-country-filter,
.multi-country-filters .data-range-filter,
.regional-controls-row .filter,
.regional-controls-row .duration-filter,
.regional-controls-row .route-filter,
.regional-controls-row .hotspot-filter,
.regional-controls-row .regional-data-range,
.regional-controls-row .regional-country-filter {
  box-sizing: border-box;
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  height: 44px;
  margin: 0;
  padding: 0 var(--space-3);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-field);
  background: var(--color-paper);
  color: var(--color-text-muted);
  font: 700 11px/1 "Funnel Sans", Arial, sans-serif;
  white-space: nowrap;
  cursor: pointer;
  transition: background .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.trip-country-add-filter {
  flex: 0 1 190px;
  min-width: 150px;
  max-width: 190px;
  cursor: text;
}

.trip-country-add-filter[hidden] { display: none; }
.finder.multi-destination-mode > #countryTripAddFilter { display: none; }

.trip-country-add-filter .regional-country-suggestions {
  position: absolute;
  inset: calc(100% + 6px) auto auto 0;
  width: max(210px, 100%);
}

.filters > .filter.active,
.multi-country-filters .filter.active,
.regional-controls-row .filter.active {
  background: var(--color-paper);
  border-color: var(--color-forest-700);
  color: var(--color-forest-700);
  box-shadow: inset 0 -2px 0 var(--color-forest-700);
}

.filters > .filter:hover,
.multi-country-filters .filter:hover,
.regional-controls-row .filter:hover,
.filters > .hotspot-filter:hover,
.multi-country-filters > .hotspot-filter:hover,
.regional-controls-row .hotspot-filter:hover {
  background: var(--color-paper);
  border-color: var(--color-forest-700);
  box-shadow: none;
}

.filters > .filter.active:hover,
.multi-country-filters .filter.active:hover,
.regional-controls-row .filter.active:hover {
  background: var(--color-paper);
  border-color: var(--color-forest-700);
  box-shadow: inset 0 -2px 0 var(--color-forest-700);
}

/* Keep the checkbox control visibly separate from its label inside the shared
   catalog filter pill. */
.filters > .hotspot-filter,
.multi-country-filters > .hotspot-filter,
.regional-controls-row .hotspot-filter { gap: 9px; }

.hotspot-filter input {
  appearance: none;
  width: 14px;
  height: 14px;
  margin: 0;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-image);
  background: var(--color-paper);
  cursor: pointer;
}

.hotspot-filter input:checked {
  border-color: var(--color-forest-700);
  background: var(--color-forest-700) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14'%3E%3Cpath d='M3 7.1 5.7 9.7 11.2 4.2' fill='none' stroke='%23fffdf8' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/14px 14px no-repeat;
}

.filters > .duration-filter,
.filters > .route-filter,
.multi-country-filters > .duration-filter,
.multi-country-filters > .route-filter,
.regional-controls-row .duration-filter,
.regional-controls-row .route-filter {
  min-width: 150px;
  justify-content: space-between;
}

.filters select,
.multi-country-filters select,
.regional-controls-row select {
  appearance: none;
  flex: 0 1 auto;
  width: auto;
  field-sizing: content;
  min-width: 0;
  max-width: 100%;
  min-height: 0;
  height: auto;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--color-forest-700);
  font: 700 11px/1 "Funnel Sans", Arial, sans-serif;
  text-align: right;
  text-align-last: right;
  outline: 0;
}

/* Use one restrained, layout-owned chevron instead of the browser's native
   select arrow. Native arrows consume an inconsistent amount of the select's
   intrinsic width and can visually clip short values in the one-row toolbar. */
.filters :is(.duration-filter, .route-filter, .data-range-filter)::after,
.multi-country-filters :is(.duration-filter, .route-filter, .data-range-filter)::after,
.regional-controls-row :is(.duration-filter, .route-filter, .regional-data-range)::after {
  content: "";
  box-sizing: border-box;
  flex: 0 0 8px;
  width: 8px;
  height: 8px;
  margin: 0;
  margin-inline-end: 3px;
  border-right: 1.5px solid var(--color-forest-700);
  border-bottom: 1.5px solid var(--color-forest-700);
  transform: translateY(-1px) rotate(45deg);
  transform-origin: center;
  pointer-events: none;
}

.filters :is(.duration-filter, .route-filter, .data-range-filter),
.multi-country-filters :is(.duration-filter, .route-filter, .data-range-filter),
.regional-controls-row :is(.duration-filter, .route-filter, .regional-data-range) {
  column-gap: 8px;
  justify-content: flex-start;
}

.filters :is(.duration-filter, .route-filter, .data-range-filter) > span,
.multi-country-filters :is(.duration-filter, .route-filter, .data-range-filter) > span,
.regional-controls-row :is(.duration-filter, .route-filter, .regional-data-range) > span {
  flex: 0 0 auto;
}

/* The focus cue belongs to the selected value, not a second box inside the
   filter pill. */
.filters select:focus-visible,
.multi-country-filters select:focus-visible,
.regional-controls-row select:focus-visible {
  outline: 0 !important;
  box-shadow: none !important;
  text-decoration: underline;
  text-decoration-color: var(--color-forest-700);
  text-decoration-thickness: 2px;
  text-underline-offset: 4px;
}

.country-data-stack,
.multi-data-stack,
.regional-data-stack {
  position: static;
  display: grid;
  gap: var(--space-1);
  align-items: start;
  align-self: start;
  flex: 0 1 142px;
  width: 142px;
  min-width: 0;
}

.filters .data-range-filter,
.multi-country-filters .data-range-filter,
.regional-controls-row .regional-data-range {
  width: 100%;
  min-width: 0;
  justify-content: space-between;
}

.data-filter-calculator-link,
.multi-data-calculator-link,
.regional-data-calculator-link {
  position: static;
  display: inline-flex !important;
  align-items: center;
  justify-self: end;
  width: max-content;
  max-width: 100%;
  min-height: 0;
  margin: 0 !important;
  padding: 0;
  color: var(--color-forest-700);
  font: 800 10px/1.2 "Funnel Sans", Arial, sans-serif;
  text-decoration: none;
  border-bottom: 1px solid currentColor;
  white-space: nowrap;
}

@media (min-width: 1180px) {
  .filters,
  .multi-country-filters,
  .regional-controls-row {
    gap: var(--space-1);
    flex-wrap: nowrap;
  }

  .multi-filter-buttons {
    flex: 0 1 auto;
    flex-wrap: nowrap;
    gap: var(--space-1);
    min-width: 0;
  }

  .filters > .filter,
  .filters > .duration-filter,
  .filters > .route-filter,
  .filters > .hotspot-filter,
  .filters > .regional-country-filter,
  .filters .data-range-filter,
  .multi-country-filters .filter,
  .multi-country-filters > .duration-filter,
  .multi-country-filters > .route-filter,
  .multi-country-filters > .hotspot-filter,
  .multi-country-filters > .regional-country-filter,
  .multi-country-filters .data-range-filter,
  .regional-controls-row .filter,
  .regional-controls-row .duration-filter,
  .regional-controls-row .route-filter,
  .regional-controls-row .hotspot-filter,
  .regional-controls-row .regional-data-range,
  .regional-controls-row .regional-country-filter {
    min-height: 40px;
    height: 40px;
    padding-inline: 5px;
    font-size: 10px;
  }

  .filters > .duration-filter,
  .filters > .route-filter,
  .multi-country-filters > .duration-filter,
  .multi-country-filters > .route-filter,
  .regional-controls-row .duration-filter,
  .regional-controls-row .route-filter {
    min-width: 120px;
    flex: 0 1 auto;
  }

  .country-data-stack,
  .multi-data-stack,
  .regional-data-stack {
    flex: 1 1 124px;
    width: auto;
    min-width: 124px;
    max-width: 140px;
  }

  .filters select,
  .multi-country-filters select,
  .regional-controls-row select,
  .data-filter-calculator-link,
  .multi-data-calculator-link,
  .regional-data-calculator-link { font-size: 10px; }

  .trip-country-add-filter,
  .regional-controls-row .regional-country-filter:not(:has(.regional-country-chip)) {
    flex: 0 1 140px;
    min-width: 140px;
    max-width: 140px;
    gap: 2px;
  }

  .regional-country-filter.trip-country-add-filter .regional-country-input,
  .regional-controls-row .regional-country-filter:not(:has(.regional-country-chip)) .regional-country-input {
    min-width: 72px;
    max-width: 76px;
  }

  .regional-country-filter.trip-country-add-filter .regional-country-input input,
  .regional-controls-row .regional-country-filter:not(:has(.regional-country-chip)) input { min-width: 72px; }
}

@media (max-width: 760px) {
  .filters,
  .multi-country-filters,
  .regional-controls-row,
  .multi-filter-buttons { gap: var(--space-2); }
  .country-data-stack,
  .multi-data-stack,
  .regional-data-stack { flex: 1 1 142px; width: auto; }

  .filters > .trip-country-add-filter {
    grid-column: 1 / -1;
    width: 100%;
    max-width: none;
  }
}

/* source: plan-quantity.css */
/* A selected plan exposes its quantity directly, rather than making shoppers
   toggle the whole plan off and back on to order another eSIM. */
.plan-card-quantity {
  display: inline-flex;
  align-items: center;
  align-self: stretch;
  flex: 0 0 auto;
  min-height: 44px;
  height: 44px;
  overflow: hidden;
  border: 1px solid var(--color-forest-700);
  border-radius: var(--radius-button);
  /* A small paper buffer keeps this compact cart state distinct from a
     highlighted plan card without changing its established paper/forest look. */
  outline: 3px solid var(--color-paper);
  background: var(--color-paper);
  color: var(--color-forest-700);
  margin: 0;
}

.plan-card-quantity button {
  display: grid;
  place-items: center;
  width: 32px;
  min-width: 32px;
  height: 42px;
  min-height: 42px;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font: 800 17px/1 'Funnel Sans', Arial, sans-serif;
  cursor: pointer;
}

.plan-card-quantity button:hover,
.plan-card-quantity button:focus-visible { background: var(--color-surface-highlight); }
.plan-card-quantity [data-plan-quantity-decrease] { margin-left: 6px; }
.plan-card-quantity-label {
  padding-left: 10px;
  white-space: nowrap;
  font: 800 11px/1 'Funnel Sans', Arial, sans-serif;
}
.plan-card-quantity-value { min-width: 22px; text-align: center; font: 800 11px/1 'Funnel Sans', Arial, sans-serif; }

/* Buy now uses the shared short press response before checkout opens. */
.buy-now { transition: transform .16s ease, border-color .16s ease, background-color .16s ease, color .16s ease; }
.buy-now.is-checkout-feedback { transform: translateY(1px) scale(.97); }

/* Buttons use an explicit inline-flex display elsewhere. Keep the native
   hidden state authoritative when a plan is already in the cart. */
.plan-card-actions .select-plan[hidden],
.plan-actions .select-plan[hidden] { display: none !important; }
