/* Shared Spotlight trigger styles (landing hero + app navbar) */

/* Eyebrow above the search bar: deliberately
understated label, no pill chrome.
Visibility comes from weight + a small inline
kbd that mirrors the bar's own kbd, so the two
read as a single component. */
.hero-search-eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
margin: 0 0 14px 4px;
color: #1a1a1a;
font-size: 13px;
font-weight: 700;
line-height: 1.2;
letter-spacing: 0.15px;
}
.hero-search-eyebrow-label {
color: inherit;
}
.hero-search-eyebrow-kbd {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 3px 6px;
background: rgba(0, 0, 0, 0.72);
border: 1px solid rgba(0, 0, 0, 0.55);
border-radius: 6px;
box-shadow: 0 1px 0 rgba(255, 255, 255, 0.15) inset;
}
.hero-search-eyebrow-key {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 10.5px;
font-weight: 700;
color: #ffcd00;
line-height: 1;
letter-spacing: 0;
padding: 0 2px;
background: transparent;
border: 0;
}
/* "Ctrl" is 4 chars vs the single ⌘ glyph, so give it a hair
more breathing room and tighten the size by ½px so it lines
up visually with the K next to it. */
.hero-search-eyebrow-mod-text {
padding: 0 4px;
font-size: 10px;
letter-spacing: 0.2px;
}
/* OS-aware kbd visibility. Default is Apple (single ⌘ glyph
reads cleanly on first paint); the inline <script> above
flips <html data-os="other"> on non-Apple devices. */
[data-os-key="other"] { display: none; }
html[data-os="other"] [data-os-key="apple"] { display: none; }
html[data-os="other"] [data-os-key="other"] { display: inline-flex; }
.hero-search-noscript {
margin-top: 14px;
display: flex;
gap: 10px;
flex-wrap: wrap;
align-items: center;
}
.hero-search-noscript-label {
width: 100%;
margin: 0 0 4px 4px;
color: rgba(0, 0, 0, 0.72);
font-size: 12px;
font-weight: 700;
letter-spacing: 0.4px;
text-transform: uppercase;
}
/* Unified compact "jump to" pill — overrides the
Bootstrap btn-feature / btn-outline-warning /
btn-outline-light variants so the row reads as
one consistent group of secondary nav chips
instead of a mismatched palette of yellow,
orange and white. Dark pill + gold text mirrors
the Spotlight bar above so the no-JS hero still
feels like one component. */
.hero-search-noscript .btn,
.hero-search-noscript .btn.btn-feature,
.hero-search-noscript .btn.btn-outline-warning,
.hero-search-noscript .btn.btn-outline-light {
display: inline-flex;
align-items: center;
padding: 7px 16px;
font-size: 12px;
font-weight: 700;
line-height: 1.4;
letter-spacing: 0;
text-transform: none;
border-radius: 999px;
background: rgba(15, 17, 21, 0.92);
color: #ffcd00;
border: 1px solid rgba(0, 0, 0, 0.55);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
transition: transform 0.15s ease, background 0.2s ease, color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.hero-search-noscript .btn:hover,
.hero-search-noscript .btn:focus-visible {
transform: translateY(-1px);
background: #000;
color: #fff;
border-color: #ffcd00;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.22);
text-decoration: none;
outline: none;
}
/* No-JS hardening for the unified Spotlight CTA.
The bar still works as a plain <a> (its href
falls through to the dashboard for auth users
or the guest eSIM wizard for guests), but
anything implying live search, rotation, or a
keyboard shortcut would be a lie without JS,
so we strip those affordances and let the
<noscript> button row carry the catalogue. */
html:not(.js-enabled) .hero-search-eyebrow,
html:not(.js-enabled) .hero-search-kbd {
display: none !important;
}
html:not(.js-enabled) .esim-spotlight-hero-field {
/* It's a navigational link without JS, not a
text input — match the cursor to reality. */
cursor: pointer;
}
html:not(.js-enabled) .hero-search-rotator {
/* Freeze the rotator so the static default
("Travel eSIM · Japan") reads as a steady
label rather than something the user is
waiting on. */
animation: none !important;
transition: none !important;
}
/* .hero-search-meta styles removed — meta strip
was eliminated since the subtitle above the
bar already covers the same product list and
"no sign-up" promise. */
/* ---- Spotlight-style hero search bar ----
Dark glassmorphic pill that previews the
Spotlight modal aesthetic on the gold hero.
Full-width within .hero-search-row. */
.esim-spotlight-hero-field {
display: flex;
align-items: center;
gap: 14px;
width: 100%;
height: 58px;
padding: 0 10px 0 22px;
background: linear-gradient(180deg, rgba(15,17,21,0.62) 0%, rgba(10,12,15,0.55) 100%);
-webkit-backdrop-filter: blur(14px) saturate(180%);
backdrop-filter: blur(14px) saturate(180%);
border: 1px solid rgba(255, 255, 255, 0.18);
color: rgba(255, 255, 255, 0.95);
text-decoration: none;
border-radius: 50px;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.08),
0 1px 2px rgba(0, 0, 0, 0.15),
0 12px 32px rgba(0, 0, 0, 0.22);
transition: transform 0.18s ease, box-shadow 0.2s ease, border-color 0.2s ease, background 0.2s ease;
cursor: text;
position: relative;
overflow: hidden;
}
.esim-spotlight-hero-field::before {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
padding: 1px;
background: linear-gradient(135deg, rgba(255, 205, 0, 0.0) 35%, rgba(255, 205, 0, 0.55) 100%);
-webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
-webkit-mask-composite: xor;
mask-composite: exclude;
opacity: 0;
transition: opacity 0.25s ease;
pointer-events: none;
}
.esim-spotlight-hero-field:hover {
transform: translateY(-1px);
border-color: rgba(255, 255, 255, 0.28);
background: linear-gradient(180deg, rgba(20,22,28,0.7) 0%, rgba(12,14,18,0.62) 100%);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 2px 6px rgba(0, 0, 0, 0.18),
0 18px 42px rgba(0, 0, 0, 0.28);
color: #fff;
}
.esim-spotlight-hero-field:hover::before { opacity: 1; }
.esim-spotlight-hero-field:focus-visible {
outline: none;
border-color: rgba(255, 205, 0, 0.65);
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.1),
0 0 0 3px rgba(255, 205, 0, 0.35),
0 18px 42px rgba(0, 0, 0, 0.28);
}
.esim-spotlight-hero-field:active { transform: translateY(0); }
.hero-search-icon {
display: inline-flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
color: #ffcd00;
font-size: 14px;
flex-shrink: 0;
}
.hero-search-text {
flex: 1;
min-width: 0;
display: inline-flex;
align-items: baseline;
gap: 6px;
font-size: 15px;
font-weight: 500;
letter-spacing: 0.1px;
color: rgba(255, 255, 255, 0.92);
line-height: 1.2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.hero-search-rotator {
position: relative;
display: inline-flex;
align-items: baseline;
gap: 6px;
min-width: 0;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
}
.hero-search-rotator-tag,
.hero-search-rotator-sep,
.hero-search-rotator-word {
display: inline-block;
transition: opacity 0.32s ease, transform 0.32s ease;
will-change: opacity, transform;
}
.hero-search-rotator-tag {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: rgba(255, 255, 255, 0.55);
padding: 3px 8px;
background: rgba(255, 255, 255, 0.07);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 999px;
line-height: 1.4;
position: relative;
top: -1px;
}
/* Distinct accent when the rotator is on Crypton Mobile so
the two product categories read as truly different in a
single glance. Class toggled by the rotator JS. */
.hero-search-rotator[data-active="crypton-mobile"] .hero-search-rotator-tag {
color: #ffcd00;
background: rgba(255, 205, 0, 0.14);
border-color: rgba(255, 205, 0, 0.3);
}
.hero-search-rotator-sep {
color: rgba(255, 255, 255, 0.35);
font-weight: 400;
padding: 0 1px;
}
.hero-search-rotator-word {
color: #ffcd00;
font-weight: 600;
overflow: hidden;
text-overflow: ellipsis;
max-width: 100%;
}
.hero-search-rotator.is-leaving .hero-search-rotator-tag,
.hero-search-rotator.is-leaving .hero-search-rotator-sep,
.hero-search-rotator.is-leaving .hero-search-rotator-word {
opacity: 0;
transform: translateY(-6px);
}
.hero-search-rotator.is-entering .hero-search-rotator-tag,
.hero-search-rotator.is-entering .hero-search-rotator-sep,
.hero-search-rotator.is-entering .hero-search-rotator-word {
opacity: 0;
transform: translateY(6px);
}
/* Default placeholder for when JS is disabled (rotator
never inits and stays on its first word, so this is
only the absolute no-JS fallback path). */
.hero-search-default {
display: none;
flex: 1;
min-width: 0;
font-size: 15px;
color: rgba(255, 255, 255, 0.6);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.hero-search-kbd {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 4px 6px;
background: rgba(255, 255, 255, 0.08);
border: 1px solid rgba(255, 255, 255, 0.14);
border-radius: 7px;
flex-shrink: 0;
margin-left: 4px;
}
.hero-search-kbd-key {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
font-size: 11px;
font-weight: 600;
color: rgba(255, 255, 255, 0.78);
line-height: 1;
letter-spacing: 0;
background: transparent;
border: 0;
padding: 0 2px;
}
/* See .hero-search-eyebrow-mod-text — same rationale, scaled
to match the larger search-bar kbd. */
.hero-search-kbd-mod-text {
padding: 0 4px;
font-size: 10.5px;
letter-spacing: 0.2px;
}
@media (max-width: 540px) {
.esim-spotlight-hero-field {
min-width: 0;
width: 100%;
max-width: none;
}
.hero-search-kbd { display: none; }
}
@media (prefers-reduced-motion: reduce) {
.hero-search-rotator-word,
.esim-spotlight-hero-field { transition: none; }
}


/* ---- App navbar Spotlight trigger ---- */
.esim-spotlight-navbar-trigger {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    float: left;
    height: 36px;
    margin: 12px 0 12px 20px;
    padding: 0 14px 0 12px;
    background: rgba(0, 0, 0, 0.12);
    border: 1px solid rgba(75, 75, 75, 0.35);
    border-radius: 8px;
    color: #4b4b4b;
    font-size: 13px;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
    max-width: min(320px, 42vw);
}

.esim-spotlight-navbar-trigger:hover,
.esim-spotlight-navbar-trigger:focus-visible {
    background: rgba(0, 0, 0, 0.18);
    border-color: rgba(75, 75, 75, 0.55);
    outline: none;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
}

.esim-spotlight-navbar-trigger i {
    color: #686700;
    font-size: 14px;
    flex-shrink: 0;
}

.esim-spotlight-navbar-label {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: left;
}

.esim-spotlight-navbar-kbd {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    padding: 2px 6px;
    background: rgba(0, 0, 0, 0.15);
    border: 1px solid rgba(75, 75, 75, 0.35);
    border-radius: 5px;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    font-size: 10px;
    font-weight: 600;
    color: rgba(75, 75, 75, 0.85);
    flex-shrink: 0;
}

.esim-spotlight-navbar-kbd-key {
    background: transparent;
    border: 0;
    padding: 0 1px;
    font: inherit;
    color: inherit;
}

.esim-spotlight-navbar-kbd-mod-text {
    padding: 0 3px;
    font-size: 9px;
}

/* Desktop trigger lives in #navbar; mobile icon is a sibling in .app-topbar-inner */
.esim-spotlight-navbar-trigger--desktop {
    display: none;
}

.esim-spotlight-navbar-trigger--mobile {
    display: none;
}

@media (min-width: 768px) {
    .esim-spotlight-navbar-trigger--desktop {
        display: inline-flex;
    }
}

@media (max-width: 767px) {
    .esim-spotlight-navbar-trigger--mobile {
        display: inline-flex;
    }
}

@media (max-width: 991px) {
    .esim-spotlight-navbar-trigger--desktop .esim-spotlight-navbar-label,
    .esim-spotlight-navbar-trigger--desktop .esim-spotlight-navbar-kbd {
        display: none;
    }

    .esim-spotlight-navbar-trigger--desktop {
        width: 40px;
        max-width: none;
        padding: 0;
        justify-content: center;
    }
}

html.dark-mode .esim-spotlight-navbar-trigger {
    background: rgba(0, 0, 0, 0.35);
    border-color: rgba(255, 255, 255, 0.15);
    color: rgba(255, 255, 255, 0.9);
}

html.dark-mode .esim-spotlight-navbar-trigger i {
    color: #ffcd00;
}

html.dark-mode .esim-spotlight-navbar-kbd {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.15);
    color: rgba(255, 255, 255, 0.75);
}
