/* Shared light theme for the public Mile150 site. */
:root {
    color-scheme: light;
    --text-primary: #102e4c;
    --text-secondary: #50657a;
    --bg-primary: #fff;
    --bg-secondary: #f4f8fc;
    --border-color: #dce5ed;
    --primary-color: #0766b3;
    --primary-dark: #064c89;
    --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    --font-display: var(--font-sans);
    --shadow-sm: 0 2px 9px #1c416708;
    --shadow-md: 0 8px 30px #1c416710;
    --nav-height: 64px;
}
*,*::before,*::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-height) + 12px); }
body { margin: 0; font: 16px/1.55 var(--font-sans); color: var(--text-primary); background: #fff; -webkit-font-smoothing: antialiased; }
h1,h2,h3,h4,p,ul,ol { margin: 0; }
img { max-width: 100%; display: block; }
a { text-decoration: none; color: inherit; }
a:hover { color: var(--primary-color); }
a:focus-visible,button:focus-visible { outline: 3px solid #0878cd; outline-offset: 4px; }
button { font: inherit; }
.container { width: min(calc(100% - clamp(32px, 5vw, 84px)), 1540px); margin-inline: auto; }
#site-nav { position: sticky; top: 0; z-index: 10; }
.nav { background: rgb(249 253 255 / 93%); backdrop-filter: blur(16px); border-bottom: 1px solid var(--border-color); }
.nav-inner { height: calc(var(--nav-height) - 1px); display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.nav-logo { font-size: 19px; font-weight: 750; letter-spacing: -.055em; }
.nav-logo span { color: var(--primary-color); }
.nav-links { display: flex; align-items: center; gap: clamp(13px, 3.4vw, 52px); }
.nav-links a { display: inline-flex; align-items: center; min-height: 44px; font-size: 15px; font-weight: 600; }
.studio-hero {
    position: relative; isolation: isolate; overflow: hidden;
    min-height: clamp(280px, 25vw, 384px); display: grid; place-items: center;
    background: linear-gradient(135deg, #dfedff, #f2faff 55%, #d7effc);
    border-bottom: 1px solid #dae8f3;
}
.hero-wall { position: absolute; z-index: -2; inset: -210px -130px; opacity: .45; filter: blur(3px) saturate(.86); transform: rotate(-10deg); }
.studio-hero::after { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at center, #f2f9ff 8%, rgb(240 249 255 / 90%) 34%, rgb(235 248 255 / 18%) 80%); }
@media (prefers-reduced-motion: no-preference) {
    .hero-wall { animation: drift 30s ease-in-out infinite alternate; }
    @keyframes drift { from { transform: rotate(-10deg) translate(-46px, -12px); } to { transform: rotate(-10deg) translate(46px, 12px); } }
}
.hero-title { padding: clamp(38px, 4vw, 68px) 16px 30px; text-align: center; }
.hero-title h1 { color: #0c355a; font-size: clamp(52px, 6.7vw, 100px); font-weight: 760; letter-spacing: -.065em; line-height: 1.02; }
.hero-title h1 span { color: #0876bb; }
.hero-title p { margin: 14px auto 0; font-size: clamp(17px, 1.8vw, 27px); letter-spacing: -.025em; text-wrap: balance; }

.hero-actions { display: flex; justify-content: center; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.hero-actions a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 8px 20px; border-radius: 99px; font-size: 15px; font-weight: 650; background: #fff; border: 1px solid #c3d4e2; }
.hero-actions a:first-child { background: #133c60; border-color: #133c60; color: white; }
.hero-actions a:hover { box-shadow: 0 3px 12px #173b5f20; }
.hero-actions a:first-child:hover { background: #0b527e; }
.hero-actions svg { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.hero-stats { display: grid; grid-template-columns: repeat(3, 1fr); margin: clamp(24px, 3vw, 40px) auto 0; padding: 14px 0; width: fit-content; max-width: 100%; background: rgb(255 255 255 / 86%); border: 1px solid #d4e1ec; border-radius: 20px; }
.hero-stats div { display: flex; min-width: 0; flex-direction: column-reverse; justify-content: center; padding-inline: clamp(9px, 2.6vw, 42px); }
.hero-stats div + div { border-left: 1px solid #d4e1ec; }
.hero-stats dt { color: var(--text-secondary); font-size: clamp(11px, 1.4vw, 13px); white-space: nowrap; }
.hero-stats dd { margin: 0; color: #123b60; font-size: clamp(23px, 2.3vw, 35px); font-weight: 720; letter-spacing: -.05em; line-height: 1.15; }
.apps-section { padding: clamp(28px, 2.8vw, 47px) 0 clamp(54px, 6vw, 94px); }
.section-title,.catalog-title,.app-detail h1 { font-weight: 720; letter-spacing: -.05em; line-height: 1.08; }
.section-title,.catalog-title { font-size: clamp(34px, 3.4vw, 53px); margin-bottom: 22px; }
.faq-section { background: var(--bg-secondary); padding: clamp(38px, 5vw, 80px) 0; border-top: 1px solid var(--border-color); }
.faq-layout { display: grid; grid-template-columns: 1fr 1.7fr; gap: 8%; }
.section-label { font-size: 11px; text-transform: uppercase; letter-spacing: .13em; font-weight: 700; color: var(--text-secondary); margin-bottom: 12px; }
.faq-intro p { color: var(--text-secondary); }
.btn-pill,.text-link { display: inline-flex; align-items: center; min-height: 44px; font-weight: 620; }
.btn-pill { background: var(--primary-color); color: #fff; border-radius: 99px; padding: 9px 19px; }
.btn-pill:hover { background: var(--primary-dark); color: #fff; }
.faq-intro .btn-pill { margin-top: 16px; }
.faq-item { border-bottom: 1px solid var(--border-color); }
.faq-question { display: flex; gap: 14px; align-items: center; padding: 18px 0; width: 100%; border: 0; color: inherit; background: none; cursor: pointer; text-align: left; font-weight: 600; }
.faq-number { font-size: 12px; color: var(--text-secondary); }
.faq-icon { margin-left: auto; font-size: 20px; color: var(--primary-color); }
.faq-item.active .faq-icon { transform: rotate(45deg); }
.faq-answer { display: grid; grid-template-rows: 0fr; opacity: 0; color: var(--text-secondary); padding-inline: 30px 12px; }
.faq-answer > p { min-height: 0; overflow: hidden; }
.faq-answer > p::after { content: ""; display: block; height: 18px; }
.faq-item.active .faq-answer { grid-template-rows: 1fr; opacity: 1; }
.faq-answer a,.prose a,.text-link { color: var(--primary-color); text-decoration: underline; text-underline-offset: 3px; }
.footer { padding: 42px 0 22px; border-top: 1px solid var(--border-color); }
.footer-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 26px; }
.footer-brand { font-size: 21px; font-weight: 720; letter-spacing: -.045em; }
.footer-tag,.footer-bottom,.footer li { font-size: 13px; color: var(--text-secondary); }
.footer-tag { margin-top: 6px; }
.footer ul { list-style: none; padding: 4px 0 0; }
.footer li { margin: 4px 0; }
.footer-bottom { border-top: 1px solid var(--border-color); padding-top: 16px; margin-top: 30px; }
.catalog-page { padding: clamp(30px, 4vw, 60px) 0 80px; }
.crumb { display: flex; flex-wrap: wrap; gap: 8px; font-size: 13px; color: var(--text-secondary); margin-bottom: 24px; }
.app-detail h1 { font-size: clamp(36px, 4vw, 60px); margin: 6px 0 10px; }
.app-detail-hero,.catalog-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 18px; }
.app-detail-hero img { border-radius: 22px; }
.catalog-lede,.prose,.app-detail-hero p { max-width: 65ch; color: var(--text-secondary); }
.prose { display: grid; gap: 16px; margin: 28px 0; }
@media (max-width: 650px) {
    :root { --nav-height: 57px; }
    .studio-hero { min-height: 245px; }
    .hero-title p { max-width: 30ch; }
    .hero-wall { opacity: .36; }
    .faq-layout { grid-template-columns: 1fr; gap: 25px; }
    .footer-grid { grid-template-columns: 1fr 1fr; gap: 20px 16px; }
    .footer-grid>div:first-child { grid-column: 1 / -1; }
    .nav-logo { font-size: 17px; }
    .nav-links a { font-size: 14px; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
.policy-menu { position: relative; }
.policy-menu button { min-height: 44px; display: flex; align-items: center; gap: 5px; font-size: 15px; font-weight: 600; cursor: pointer; border: 0; background: transparent; color: inherit; padding: 0; }
.policy-menu button::after { content: ""; width: 6px; height: 6px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; transform: translateY(-2px) rotate(45deg); }
.policy-menu button[aria-expanded="true"]::after { transform: translateY(2px) rotate(225deg); }
.policy-menu button:focus-visible { outline: 3px solid var(--primary-color); outline-offset: 3px; }
.policy-menu > div { position: absolute; top: 100%; right: 0; min-width: 11rem; padding: 6px; background: white; border: 1px solid var(--border-color); border-radius: 10px; box-shadow: var(--shadow-md); }
.policy-menu a { display: flex; padding-inline: 10px; border-radius: 5px; }
.policy-menu a:hover,.policy-menu a:focus-visible { background: var(--bg-secondary); }
@media (max-width: 650px) { .policy-menu button { font-size: 14px; } }
@media (max-width: 420px) {
    .nav-inner { height: auto; min-height: calc(var(--nav-height) - 1px); gap: 3px 8px; flex-wrap: wrap; }
    .nav-links { gap: 9px; }
}

.policy-menu > div { z-index: 1; transform-origin: top right; }
.policy-menu > div[inert] { opacity: 0; visibility: hidden; pointer-events: none; transform: translateY(-5px) scale(.98); }
.transfer-notice {
    position: fixed; z-index: 12; right: max(16px, env(safe-area-inset-right)); bottom: max(16px, env(safe-area-inset-bottom));
    width: min(355px, calc(100% - 32px)); padding: 18px 20px;
    max-height: 80dvh; overflow: auto; border: 1px solid var(--border-color); border-radius: 16px;
    background: #fff; box-shadow: 0 8px 38px #18395226;
}
.transfer-notice h2 { font-size: 17px; letter-spacing: -.025em; line-height: 1.3; }
.transfer-notice p { margin-block: 8px 12px; font-size: 14px; color: var(--text-secondary); }
.transfer-notice > div { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
.transfer-notice a { display: inline-flex; align-items: center; min-height: 44px; font-size: 13px; text-decoration: underline; color: var(--primary-dark); }
.transfer-notice button { border: 0; border-radius: 99px; padding: 8px 16px; min-height: 44px; color: #fff; background: var(--primary-color); cursor: pointer; font-size: 14px; font-weight: 600; }
@media (prefers-reduced-motion: no-preference) {
    .faq-answer { transition: grid-template-rows .25s ease, opacity .2s ease; }
    .faq-icon,.policy-menu button::after { transition: transform .2s ease; }
    .policy-menu > div { transition: opacity .16s ease, transform .18s ease, visibility 0s; }
    .policy-menu > div[inert] { transition-delay: 0s, 0s, .18s; }
    .transfer-notice { animation: notice-in .22s ease-out; }
    @keyframes notice-in { from { opacity: 0; transform: translateY(8px); } }
}

.hero-stats dd { position: relative; font-variant-numeric: tabular-nums; }
.hero-stats.is-counting dd > span:first-child { opacity: 0; }
.stat-counter { position: absolute; inset: 0; text-align: center; }
