/* source: font-system.css */
@import url('https://fonts.googleapis.com/css2?family=Funnel+Sans:wght@400;500;600;700&family=Oxanium:wght@700&display=swap');

/* Roamnessa uses two fonts: Oxanium for its public-facing 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: destination-page.css */
:root{--ink:var(--color-ink-900);--cream:var(--color-cream);--paper:var(--color-paper);--orange:var(--color-coral-500);--lime:var(--color-citron-100);--green:var(--color-forest-700);--muted:var(--color-text-muted);--line:var(--color-border)}*{box-sizing:border-box}body{margin:0;background:var(--cream);color:var(--ink);font-family:Onest,Arial,sans-serif}.destination-nav,main{max-width:1120px;margin:auto;padding-left:var(--space-6);padding-right:var(--space-6)}.destination-nav{height:82px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:var(--space-2);color:var(--ink);font-size:24px;font-weight:800;letter-spacing:-1.5px;text-decoration:none}.brand-mark{width:27px;height:27px}.destination-nav nav{display:flex;gap:var(--space-4)}.destination-nav nav a,.back,.setup-card a{color:var(--green);font-size:12px;font-weight:800;text-decoration:none}.back{display:inline-block;margin-top:var(--space-6)}.destination-hero{padding:var(--space-8) 0 var(--space-8);max-width:780px}.eyebrow{font:500 10px 'Azeret Mono',monospace;letter-spacing:.14em;color:var(--color-text-muted);margin:0;text-transform:uppercase}.destination-hero h1,.destination-section h2,.destination-content-grid h2,.destination-help h2{font-size:clamp(32px,5vw,59px);line-height:.98;letter-spacing:-.065em;margin:var(--space-3) 0 var(--space-4)}.destination-hero>p:not(.eyebrow){max-width:680px;color:var(--muted);font-size:17px;line-height:1.65}.destination-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2);margin-top:var(--space-6)}.destination-facts>div{border:1px solid var(--color-surface-highlight);background:var(--color-surface-highlight);border-radius:11px;padding:var(--space-3)}.destination-facts span{display:block;color:var(--color-text-muted);font-size:10px;font-weight:800}.destination-facts strong{display:block;font-size:15px;letter-spacing:-.03em;margin-top:var(--space-2)}.destination-section{border-top:1px solid var(--line);padding:var(--space-7) 0}.section-heading{display:flex;justify-content:space-between;gap:var(--space-5);align-items:end;margin-bottom:var(--space-5)}.section-heading h2{font-size:34px;margin:var(--space-2) 0 0}.section-heading>p{max-width:370px;color:var(--muted);font-size:13px;line-height:1.6;margin:0}.destination-plans{display:grid;gap:var(--space-2)}.destination-plan{display:grid;grid-template-columns:1fr auto auto;gap:var(--space-5);align-items:center;background:var(--paper);border:1px solid var(--color-border);border-radius:13px;padding:var(--space-4)}.destination-tag{display:inline-block;background:var(--color-surface-highlight);border-radius:5px;color:var(--color-forest-700);font-size:10px;font-weight:800;padding:var(--space-2) var(--space-2)}.destination-plan h2{font-size:17px;letter-spacing:-.03em;margin:var(--space-3) 0 var(--space-1)}.destination-plan p{color:var(--muted);font-size:11px;margin:0}.destination-plan-data{text-align:right}.destination-plan-data strong,.destination-plan-action strong{display:block;font-size:21px;letter-spacing:-.05em}.destination-plan-data .data-price-per-gb{font:600 9px Onest;color:var(--muted);letter-spacing:0;white-space:nowrap}.destination-plan-data span{color:var(--muted);font-size:11px}.destination-plan-action{text-align:right}.destination-buy{border:0;border-radius:8px;background:var(--ink);color:var(--color-paper);cursor:pointer;font:800 11px Onest;margin-top:var(--space-2);padding:var(--space-2) var(--space-3)}.destination-buy:disabled{opacity:.65}.destination-content-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4);padding-bottom:var(--space-7)}.destination-content-grid>article{border:1px solid var(--color-border);border-radius:13px;background:var(--paper);padding:var(--space-5)}.destination-content-grid h2{font-size:27px;margin-top:var(--space-2)}.destination-content-grid p,.destination-content-grid li{color:var(--muted);font-size:13px;line-height:1.68}.regional-options{background:var(--color-surface-highlight);border:0;margin:0 calc(50% - 50vw);padding-left:max(var(--space-6),calc((100vw - 1120px)/2));padding-right:max(var(--space-6),calc((100vw - 1120px)/2))}.regional-options-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-3)}.regional-option{background:var(--color-paper);border:1px solid var(--color-surface-highlight);border-radius:12px;padding:var(--space-4);display:flex;flex-direction:column;justify-content:space-between;min-height:160px}.regional-option h3{font-size:15px;margin:0 0 var(--space-2)}.regional-option p{color:var(--muted);font-size:11px;line-height:1.5;margin:0}.regional-option strong{display:block;font-size:19px;letter-spacing:-.04em;margin-top:var(--space-4)}.regional-option a{color:var(--green);display:inline-block;font-size:11px;font-weight:800;margin-top:var(--space-2);text-decoration:none}.setup-card{padding-top:var(--space-7)}.setup-card ol{padding-left:var(--space-4)}.destination-faq details{border-top:1px solid var(--color-surface-highlight);padding:var(--space-3) 0}.destination-faq summary{cursor:pointer;font-size:12px;font-weight:800}.destination-faq p{margin:var(--space-2) 0 0}.destination-help{border-top:1px solid var(--line);padding:var(--space-8) 0 var(--space-9);text-align:center}.destination-help h2{font-size:33px}.destination-help p{color:var(--muted);font-size:13px}.destination-help div{display:flex;justify-content:center;gap:var(--space-3);flex-wrap:wrap;margin-top:var(--space-4)}.destination-help a{border:1px solid var(--green);border-radius:999px;color:var(--green);font-size:11px;font-weight:800;padding:var(--space-2) var(--space-3);text-decoration:none}@media(max-width:760px){.destination-nav,main{padding-left:var(--space-4);padding-right:var(--space-4)}.destination-nav nav{gap:var(--space-3)}.destination-hero{padding:var(--space-7) 0}.destination-facts,.destination-content-grid,.regional-options-grid{grid-template-columns:1fr}.section-heading{display:block}.section-heading>p{margin-top:var(--space-3)}.destination-plan{grid-template-columns:1fr auto}.destination-plan-action{grid-column:1/-1;text-align:left;display:flex;justify-content:space-between;align-items:center}.destination-plan-action strong{display:inline}.regional-options{padding-left:var(--space-4);padding-right:var(--space-4)}.destination-section h2{font-size:31px}.destination-content-grid{padding-bottom:var(--space-6)}}

.destination-filter-panel{display:flex;align-items:end;gap:var(--space-2);flex-wrap:wrap;margin:0 0 var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:13px;background:var(--color-surface-muted)}.destination-filter-tabs{display:flex;gap:var(--space-2);flex-wrap:wrap}.destination-filter-tabs button,.destination-filter-select select{min-height:36px;border:1px solid var(--color-border);border-radius:999px;background:var(--color-paper);color:var(--ink);font:800 11px Onest}.destination-filter-tabs button{padding:var(--space-2) var(--space-3);cursor:pointer}.destination-filter-tabs button.is-active{border-color:var(--green);background:var(--green);color:var(--color-paper)}.destination-filter-select{display:flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-1) 0 var(--space-2);border:1px solid var(--color-border);border-radius:999px;background:var(--color-paper);color:var(--color-text-muted);font:800 10px Onest}.destination-filter-select select{min-height:32px;border:0;padding:0 var(--space-4) 0 var(--space-1);background:transparent;outline:0}.destination-filter-check{display:inline-flex;align-items:center;gap:var(--space-2);min-height:36px;padding:0 var(--space-2);border:1px solid var(--color-border);border-radius:999px;background:var(--color-paper);color:var(--color-text-muted);font:800 11px Onest}.destination-filter-check input{appearance:none;width:16px;height:16px;margin:0;border:1px solid var(--color-surface-highlight);border-radius:5px;background:var(--color-paper);cursor:pointer}.destination-filter-check input:checked{border-color:var(--green);background:var(--green);box-shadow:inset 0 0 0 3px var(--color-paper)}.destination-calculator-link{color:var(--green);font-size:11px;font-weight:800;text-decoration:underline;text-underline-offset:4px}.destination-filter-prompt{margin:0 0 var(--space-3);color:var(--color-text-muted);font-size:12px}.destination-detail-hint{margin:0 0 var(--space-3);color:var(--color-forest-700);font-size:11px;font-weight:800}.destination-filter-empty{margin:0 0 var(--space-3);padding:var(--space-3);border:1px solid var(--color-surface-highlight);border-radius:9px;background:var(--color-surface-highlight);color:var(--color-text-muted);font-size:12px;font-weight:800}.destination-plan{cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.destination-plan:hover,.destination-plan:focus-within,.destination-plan:focus{border-color:var(--color-border);box-shadow:0 9px 20px color-mix(in srgb,var(--color-ink-900) 14%,transparent);outline:0;transform:translateY(-1px)}.destination-plan[hidden]{display:none}.destination-plan-dialog{width:min(560px,calc(100vw - 28px));max-height:calc(100dvh - 28px);border:0;border-radius:17px;padding:var(--space-6);background:var(--color-paper);color:var(--ink);box-shadow:0 22px 70px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}.destination-plan-dialog::backdrop{background:var(--color-surface-highlight)}.destination-plan-dialog h2{font-size:29px;letter-spacing:-.055em;margin:var(--space-2) var(--space-6) var(--space-5) 0}.destination-plan-dialog-close{position:absolute;top:13px;right:13px;width:33px;height:33px;border:1px solid var(--color-surface-highlight);border-radius:50%;background:var(--color-paper);color:var(--green);font-size:20px;cursor:pointer}.destination-plan-dialog dl{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin:0}.destination-plan-dialog dl div{padding:var(--space-3);border:1px solid var(--color-surface-highlight);border-radius:10px;background:var(--color-surface-muted)}.destination-plan-dialog dt{color:var(--color-text-muted);font-size:10px;font-weight:800}.destination-plan-dialog dd{margin:var(--space-2) 0 0;color:var(--ink);font-size:13px;font-weight:800;overflow-wrap:anywhere}.destination-plan-dialog .partner-networks dd small{display:block;margin-top:var(--space-2);color:var(--color-text-muted);font-size:10px;font-weight:600;line-height:1.4}@media(max-width:760px){.destination-filter-panel{align-items:stretch}.destination-filter-tabs{width:100%}.destination-filter-tabs button{flex:1 1 112px}.destination-filter-select{flex:1 1 170px;justify-content:space-between}.destination-filter-check{flex:1 1 170px}.destination-calculator-link{padding:var(--space-2) var(--space-1)}.destination-plan-dialog{padding:var(--space-5) var(--space-4)}.destination-plan-dialog dl{grid-template-columns:1fr}.destination-plan-dialog-close{position:fixed;top:18px;right:18px;background:var(--color-paper);z-index:2}}

.destination-validity-group{margin-top:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--color-surface-highlight)}.destination-validity-group:first-child{margin-top:0;padding-top:0;border-top:0}.destination-validity-group .validity-group-heading{margin:0 0 var(--space-2)}.destination-validity-group .validity-group-toggle{display:inline-flex;align-items:center;justify-content:space-between;width:100%;min-height:44px;border:0;padding:0;background:transparent;color:var(--color-ink-900);cursor:pointer;font:800 16px Onest;text-align:left}.destination-validity-group .validity-group-toggle>span:last-child{transition:transform .16s ease}.destination-validity-group .validity-group-toggle[aria-expanded="true"]>span:last-child{transform:rotate(180deg)}.destination-validity-group .validity-group-cards{display:grid;grid-template-columns:1fr;gap:var(--space-2)}.destination-validity-group:not([data-expanded="true"]) .validity-group-cards{display:none}

/* Keep the country-page filter controls in one familiar, scrollable row. */
.destination-filter-panel{align-items:center;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin}.destination-filter-panel>*{flex:0 0 auto}.destination-filter-tabs{flex-wrap:nowrap}.destination-filter-tabs button{white-space:nowrap}.destination-filter-best{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;margin:0 0 var(--space-3);padding:var(--space-2) var(--space-2);border:1px solid var(--color-surface-highlight);border-radius:9px;background:var(--color-surface-highlight);color:var(--color-forest-700);font-size:10px;line-height:1.35}.destination-filter-best[hidden]{display:none!important}.destination-filter-best>span{font:800 9px 'Azeret Mono',monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.destination-filter-best>strong{font-size:11px}.destination-filter-best>small{color:var(--color-text-muted);font-size:10px}.destination-filter-best button{margin-left:auto;border:0;border-radius:6px;background:var(--green);color:var(--color-paper);padding:var(--space-2) var(--space-2);font:800 10px Onest;cursor:pointer}@media(max-width:760px){.destination-filter-panel{align-items:center;flex-wrap:nowrap}.destination-filter-tabs{width:auto}.destination-filter-tabs button,.destination-filter-select,.destination-filter-check{flex:0 0 auto}.destination-filter-best{align-items:flex-start}.destination-filter-best button{margin-left:0}}

/* Match the compact homepage controls without forcing a horizontal scroll. */
.destination-filter-panel{gap:var(--space-2);padding:var(--space-2);overflow:visible;flex-wrap:wrap}.destination-filter-panel>*{flex:0 0 auto}.destination-filter-tabs{gap:var(--space-1)}.destination-filter-tabs button{min-height:32px;padding:var(--space-2) var(--space-2);font-size:10px}.destination-filter-select{min-height:32px;gap:var(--space-1);padding-left:var(--space-2);font-size:9px}.destination-filter-select select{min-height:29px;padding-right:var(--space-3);font-size:10px}.destination-filter-check{min-height:32px;gap:var(--space-2);padding:0 var(--space-2);font-size:10px}.destination-filter-check input{width:14px;height:14px}.destination-calculator-link{font-size:10px;white-space:nowrap}@media(min-width:980px){.destination-filter-panel{flex-wrap:nowrap}}@media(max-width:979px){.destination-filter-panel{align-items:center;overflow:visible}.destination-filter-tabs{width:auto}.destination-filter-tabs button,.destination-filter-select,.destination-filter-check{flex:0 0 auto}}

/* Destination guide language control, matching the rest of the storefront. */
.destination-language-menu{position:relative;flex:0 0 auto}.destination-language-menu summary{cursor:pointer;list-style:none;border:1px solid var(--ink);border-radius:30px;padding:var(--space-2) var(--space-2);background:var(--paper);font:700 11px Onest}.destination-language-menu summary::-webkit-details-marker{display:none}.destination-language-menu:not([open]) .language-options{display:none}.destination-language-menu .language-options{position:absolute;right:0;top:39px;z-index:30;display:grid;grid-template-columns:repeat(2,minmax(82px,1fr));gap:var(--space-1);width:193px;padding:var(--space-2);background:var(--paper);border:1px solid var(--line);border-radius:10px;box-shadow:0 16px 30px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}.destination-language-menu .language-options a{padding:var(--space-2);border-radius:6px;color:var(--ink);font:700 11px Onest;text-decoration:none}.destination-language-menu .language-options a:hover{background:var(--color-surface-highlight)}@media(max-width:760px){.destination-nav{height:auto;min-height:72px;flex-wrap:wrap;padding-top:var(--space-3);padding-bottom:var(--space-3)}.destination-nav nav{order:3;width:100%;gap:var(--space-3)}.destination-language-menu{margin-left:auto}.destination-language-menu[open]{width:100%}.destination-language-menu[open] summary{margin-left:auto;width:max-content}.destination-language-menu[open] .language-options{position:static;width:100%;margin-top:var(--space-2);box-shadow:none}}

/* Keep language choice with the other destination-page help links. */
.destination-language-footer{display:flex;justify-content:center;margin-top:var(--space-4)}.destination-language-footer .destination-language-menu{margin-left:0}@media(max-width:760px){.destination-language-footer .destination-language-menu[open]{width:min(100%,240px)}.destination-language-footer .destination-language-menu[open] summary{margin-left:auto;margin-right:auto}}

@media(max-width:760px){
  .destination-filter-panel{display:block;margin:0 0 var(--space-3);padding:0;border:0;background:transparent}
  .destination-mobile-controls{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}
  .destination-mobile-disclosure{position:relative}
  .destination-mobile-disclosure summary{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--green);border-radius:10px;background:var(--paper);color:var(--green);cursor:pointer;font:800 13px Onest;list-style:none}
  .destination-mobile-disclosure summary::-webkit-details-marker{display:none}
  .destination-mobile-disclosure summary::after{content:'⌄';margin-left:var(--space-2);font-size:15px;line-height:1}
  .destination-mobile-disclosure[open] summary{border-bottom-left-radius:0;border-bottom-right-radius:0;background:var(--color-surface-highlight)}
  .destination-mobile-disclosure[open] summary::after{transform:rotate(180deg)}
  .destination-mobile-disclosure-content{position:absolute;z-index:20;top:100%;left:0;display:grid;gap:var(--space-2);width:max(100%,220px);padding:var(--space-2);border:1px solid var(--green);border-radius:0 0 10px 10px;background:var(--paper);box-shadow:0 14px 28px color-mix(in srgb,var(--color-ink-900) 14%,transparent)}
  .destination-mobile-filters .destination-mobile-disclosure-content{right:0;left:auto}
  .destination-mobile-disclosure-content .destination-filter-tabs{display:grid;width:100%;gap:var(--space-2)}
  .destination-mobile-disclosure-content .destination-filter-tabs button{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:9px;background:var(--color-paper);color:var(--color-text-muted);text-align:left;font:700 12px Onest}
  .destination-mobile-disclosure-content .destination-filter-tabs button.is-active{background:var(--green);border-color:var(--green);color:var(--color-paper)}
  .destination-mobile-disclosure-content .destination-filter-select,.destination-mobile-disclosure-content .destination-filter-check{display:flex;justify-content:space-between;width:100%;min-height:44px;margin:0;border:1px solid var(--color-border);border-radius:9px;padding:var(--space-2) var(--space-3);background:var(--color-paper);font-size:11px}
  .destination-mobile-disclosure-content .destination-filter-select select{max-width:62%;min-width:0;font-size:11px;text-align:right}
  .destination-mobile-disclosure-content .destination-calculator-link{padding:var(--space-2) var(--space-1);font-size:11px}
}

.destination-capability-tag{margin-left:var(--space-2);text-transform:none;letter-spacing:0}.destination-calling-tag{background:var(--color-surface-highlight);color:var(--color-forest-700)}.regional-option>.destination-capability-tag{align-self:flex-start;margin:0 0 var(--space-2)}@media(max-width:760px){.destination-plan{padding:var(--space-3)}.destination-plan .destination-tag:not(.destination-capability-tag),.destination-plan p{display:none}.destination-plan h2{margin:var(--space-2) 0 0;font-size:15px;line-height:1.3}.destination-plan-data{text-align:right}.destination-plan-data strong{font-size:20px}.destination-plan-action{margin-top:var(--space-1)}.destination-plan-action strong{font-size:17px}.destination-buy{min-height:40px;margin:0;padding:var(--space-2) var(--space-3)}}
.destination-phone-number-filter{gap:var(--space-2);min-height:36px;padding:0 var(--space-2)}

/* Destination guides are editorial pages: the reading column stays narrow,
   while regional coverage intentionally breaks beyond the plan-card width. */
.destination-hero{max-width:680px}.destination-content-grid{max-width:980px}.regional-options{margin-top:var(--space-7);margin-bottom:var(--space-7)}

/* source: brand-color.css */
.brand{display:inline-flex;align-items:center;gap:var(--space-2)}.brand-mark,.brand>span{background:var(--color-forest-700)!important}.brand img.brand-mark{width:27px;height:27px;object-fit:contain;background:transparent!important;border-radius:50%!important}

/* 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: package-reviews.css */
.package-reviews{margin-top:var(--space-3);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-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.package-reviews-heading h3{margin:0}.package-reviews-heading>span{color:var(--color-text-muted);font-size:13px}.package-review{background:var(--color-surface-highlight);border:1px solid var(--color-surface-highlight);border-radius:12px;margin-top:var(--space-3);padding:var(--space-3)}.package-review>div{display:flex;justify-content:space-between;gap:var(--space-3)}.package-review-stars{color:var(--color-text-muted);letter-spacing:.05em}.package-review h4{margin:var(--space-3) 0 var(--space-1)}.package-review p{margin:var(--space-2) 0;color:var(--color-text-muted);line-height:1.55}.package-review footer{display:flex;flex-direction:column;gap:var(--space-1);border-top:1px solid var(--color-surface-highlight);margin-top:var(--space-3);padding-top:var(--space-2);color:var(--color-text-muted);font-size:12px}.package-review-actions{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-4)}.package-review-actions a{color:var(--color-forest-700);font-size:13px;font-weight:800}.review-disclosure{color:var(--color-text-muted)!important;font-size:11px!important;line-height:1.5!important;margin:var(--space-4) 0 0!important}.package-reviews .review-empty{color:var(--color-text-muted);font-size:13px}.package-reviews .review-loading{min-height:20px;margin:var(--space-3) 0 0}.package-reviews .review-loading:after{content:'';display:inline-block;width:10px;height:10px;margin-left:var(--space-2);border:2px solid var(--color-surface-highlight);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:var(--space-1)}}

/* source: analytics-consent.css */
.analytics-consent{position:fixed;z-index:10000;right:18px;bottom:18px;width:min(440px,calc(100vw - 36px));display:flex;gap:var(--space-4);align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4);border:1px solid var(--color-surface-highlight);border-radius:14px;background:var(--color-paper);color:var(--color-ink-900);box-shadow:0 16px 42px color-mix(in srgb,var(--color-ink-900) 18%,transparent);font:13px/1.45 Onest,Arial,sans-serif}.analytics-consent__copy{display:grid;gap:var(--space-1)}.analytics-consent strong{font-size:13px}.analytics-consent span,.analytics-consent small{color:var(--color-text-muted);font-size:11px}.analytics-consent__actions{display:flex;gap:var(--space-2);flex:none}.analytics-consent button{border:1px solid var(--color-forest-700);border-radius:8px;padding:var(--space-2) var(--space-2);background:var(--color-paper);color:var(--color-forest-700);cursor:pointer;font:800 11px Onest,Arial,sans-serif;white-space:nowrap}.analytics-consent button[data-analytics-choice="granted"]{background:var(--color-forest-700);color:var(--color-paper)}.analytics-consent--preferences{display:grid;gap:var(--space-3);align-items:stretch}.analytics-consent__setting{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-surface-highlight);border-radius:10px;background:var(--color-surface-highlight);cursor:pointer}.analytics-consent__setting>span{display:grid;gap:var(--space-1)}.analytics-consent__setting small{display:block;max-width:300px}.analytics-consent__setting input{inline-size:19px;block-size:19px;accent-color:var(--color-forest-700);flex:none}@media(max-width:560px){.analytics-consent{right:12px;bottom:12px;width:calc(100vw - 24px);display:block}.analytics-consent__actions{margin-top:var(--space-3)}.analytics-consent button{flex:1}.analytics-consent--preferences{display:grid}.analytics-consent--preferences .analytics-consent__actions{margin-top:0}}

/* source: radius-system.css */
/* 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);
}

/*
 * Legacy public pages
 *
 * These pages predate the token system and have more specific, page-local
 * declarations. Keep their component categories explicit here so a legacy
 * 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);
}

/* source: color-system.css */
/*
 * 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); }

.announcement { background: var(--color-ink-900); color: var(--color-citron-100); }
.announcement span { color: color-mix(in srgb, var(--color-citron-100) 78%, var(--color-paper)); }
/* 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 reserved for an action a customer can take. White text on this
   darker coral meets WCAG AA for normal text (4.73:1). */
.search-box button, .optimize-btn, .cta button, .support-bot-form button,
.summary button, .button, .primary {
  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-bottom: 1px solid var(--color-border);
}
.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;
}

/* The final destination CTA should unmistakably read as an action, rather
   than a decorative coral block. The dark keyline and short offset shadow
   give it a physical, pressable edge. */
.cta button {
  min-height: 56px;
  padding-inline: var(--space-5);
  border: 1px solid var(--color-ink-900) !important;
  border-radius: var(--radius-button);
  box-shadow: 0 4px 0 var(--color-ink-900);
  cursor: pointer;
  transition: transform 160ms ease, box-shadow 160ms ease, filter 160ms ease;
}
.cta button:hover { transform: translateY(-2px); box-shadow: 0 6px 0 var(--color-ink-900); filter: brightness(1.03); }
.cta button:active { transform: translateY(3px); box-shadow: 0 1px 0 var(--color-ink-900); }
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);
}

.finder, .trip-card, .setup, .estimate, .explain, .card, .summary,
.regional-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);
}

/* Primary purchase actions share one deliberately warm signal. */
.destination-buy, .select-plan, .trip-buy, .continue, .bulk-savings-action,
.home-link, .support-ticket-return {
  background: var(--color-coral-500) !important;
  color: var(--color-paper) !important;
  border-color: var(--color-coral-500) !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, .regional-coverage, .regional-country-list,
.regional-data span, .regional-data .data-price-per-gb {
  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); }

/* source: spacing-system.css */
/*
 * 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); }

/*
 * Legacy page mapping
 *
 * The original pages each carried their own spacing rhythm.  These mappings
 * make the shared rules win in the cascade 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,
.regional-card h4 {
  margin: 0 0 var(--space-3);
}

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

.plan-bottom,
.regional-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);
  margin-bottom: 0;
  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); }
  .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); }

}
