@font-face {
    font-family: "IBM Plex Mono";
    src: url("../fonts/IBMPlexMono.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "Space Grotesk";
    src: url("../fonts/SpaceGrotesk.ttf") format("truetype");
    font-weight: 100 900;
    font-style: normal;
    font-display: swap;
}

:root {
    --color-bg: #f3f4f2;
    --color-surface: #ffffff;
    --color-surface-2: #e8ebe7;
    --color-text: #111513;
    --color-text-muted: #5f6763;
    --color-primary: #171c1a;
    --color-accent: #bdf35d;
    --color-accent-2: #dfead6;
    --color-line: #cfd5d0;
    --color-dark-soft: #242b28;
    --space-1: 8px;
    --space-2: 12px;
    --space-3: 16px;
    --space-4: 24px;
    --space-5: 32px;
    --space-6: 48px;
    --space-7: 72px;
    --space-8: 104px;
    --text-display: clamp(3rem, 7.2vw, 6.5rem);
    --text-h1: clamp(2.5rem, 5vw, 4.8rem);
    --text-h2: clamp(2rem, 3.7vw, 3.7rem);
    --text-h3: clamp(1.2rem, 2vw, 1.65rem);
    --text-body: 1rem;
    --text-small: .875rem;
    --radius-sm: 12px;
    --radius-md: 20px;
    --radius-lg: 30px;
    --shadow: 0 24px 60px rgba(17, 21, 19, .09);
    --font-display: "Space Grotesk", sans-serif;
    --font-mono: "IBM Plex Mono", monospace
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    background: var(--color-bg);
    color: var(--color-text);
    font-family: var(--font-display);
    font-size: var(--text-body);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased
}

body.no-scroll {
    overflow: hidden
}

a {
    color: inherit;
    text-decoration: none
}

img {
    max-width: 100%
}

button,
input,
select {
    font: inherit
}

button {
    color: inherit
}

::selection {
    background: var(--color-accent);
    color: var(--color-text)
}

.shell {
    width: min(1240px, calc(100% - 40px));
    margin: 0 auto
}

.header-notice {
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-primary);
    color: #e8ece9;
    font: 500 10px/1 var(--font-mono);
    letter-spacing: .18em;
    text-transform: uppercase
}

.site-header {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(243, 244, 242, .88);
    backdrop-filter: blur(18px);
    border-bottom: 1px solid rgba(207, 213, 208, .75)
}

.header-inner {
    height: 72px;
    display: flex;
    align-items: center;
    justify-content: space-between
}

.brand {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    font-weight: 700;
    letter-spacing: -.03em
}

.brand img {
    width: 42px;
    height: 42px;
    object-fit: contain;
    display: block
}

.nav {
    display: flex;
    align-items: center;
    gap: 28px;
    font-size: .92rem
}

.nav a {
    transition: .25s
}

.nav a:hover {
    opacity: .55
}

.nav-cta {
    padding: 10px 16px;
    border: 1px solid var(--color-primary);
    border-radius: 999px
}

.menu-toggle {
    display: none;
    width: 44px;
    height: 44px;
    background: transparent;
    border: 0;
    position: relative
}

.menu-toggle span {
    position: absolute;
    width: 22px;
    height: 1px;
    background: var(--color-text);
    left: 11px;
    transition: .25s
}

.menu-toggle span:first-child {
    top: 18px
}

.menu-toggle span:last-child {
    top: 25px
}

.hero {
    overflow: hidden;
    padding: var(--space-6) 0 var(--space-7);
    min-height: calc(100vh - 100px);
    display: flex;
    align-items: center
}

.hero-grid {
    display: grid;
    grid-template-columns: 1.05fr .95fr;
    gap: 48px;
    align-items: center
}

.eyebrow,
.kicker,
.micro {
    font-family: var(--font-mono);
    text-transform: uppercase;
    letter-spacing: .11em;
    font-size: 11px
}

.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border: 1px solid var(--color-line);
    border-radius: 999px;
    background: rgba(255, 255, 255, .55)
}

.core-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--color-accent);
    box-shadow: 0 0 0 6px rgba(189, 243, 93, .2)
}

h1,
h2,
h3,
p {
    margin-top: 0
}

h1 {
    font-size: var(--text-h1);
    line-height: .98;
    letter-spacing: -.06em;
    margin: 28px 0 28px;
    max-width: 760px
}

h1 em {
    font-style: normal;
    color: var(--color-text-muted);
    font-weight: 500
}

.hero-copy>p {
    max-width: 650px;
    font-size: 1.12rem;
    color: var(--color-text-muted)
}

.hero-actions {
    display: flex;
    align-items: center;
    gap: 24px;
    margin: 32px 0
}

.btn {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: 13px 20px;
    font-weight: 600;
    cursor: pointer;
    transition: transform .25s, background .25s, color .25s, border .25s
}

.btn:hover {
    transform: translateY(-2px)
}

.btn-dark {
    background: var(--color-primary);
    color: #fff
}

.btn-dark:hover {
    background: #2a302d
}

.btn-light {
    background: #fff;
    color: var(--color-text)
}

.btn-accent {
    background: var(--color-accent);
    color: var(--color-text)
}

.btn-ghost {
    background: transparent;
    border-color: var(--color-line)
}

.text-link {
    display: inline-flex;
    gap: 10px;
    align-items: center;
    font-weight: 600;
    border-bottom: 1px solid var(--color-line);
    padding-bottom: 4px
}

.text-link span {
    transition: .25s
}

.text-link:hover span {
    transform: translate(3px, 3px)
}

.hero-note {
    font-size: .82rem;
    color: var(--color-text-muted);
    max-width: 650px;
    padding-left: 14px;
    border-left: 2px solid var(--color-accent)
}

.hero-visual {
    height: 600px;
    position: relative;
    border-radius: var(--radius-lg);
    overflow: hidden;
    background: linear-gradient(145deg, #1a1f1d, #0c0f0e);
    perspective: 1000px;
    box-shadow: var(--shadow);
    transform-style: preserve-3d
}

.visual-grid {
    position: absolute;
    inset: 0;
    background-image: linear-gradient(rgba(255, 255, 255, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .045) 1px, transparent 1px);
    background-size: 44px 44px;
    mask-image: linear-gradient(to bottom, #000, transparent)
}

.budget-orbit {
    position: absolute;
    width: 360px;
    height: 360px;
    left: 50%;
    top: 48%;
    transform: translate(-50%, -50%);
    transform-style: preserve-3d
}

.orbit {
    position: absolute;
    inset: 0;
    border: 1px solid rgba(189, 243, 93, .35);
    border-radius: 50%;
    animation: spin 16s linear infinite
}

.orbit-two {
    inset: 38px;
    transform: rotateX(65deg);
    border-color: rgba(255, 255, 255, .22);
    animation-duration: 10s;
    animation-direction: reverse
}

.orbit-three {
    inset: 74px;
    transform: rotateY(70deg);
    animation-duration: 13s
}

.orbit-node {
    position: absolute;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--color-accent);
    box-shadow: 0 0 22px rgba(189, 243, 93, .7)
}

.node-a {
    left: 20px;
    top: 174px
}

.node-b {
    right: 72px;
    top: 72px
}

.node-c {
    left: 170px;
    bottom: 22px
}

.reserve-core {
    position: absolute;
    inset: 105px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 30%, #39423e, #111513 68%);
    border: 1px solid rgba(255, 255, 255, .12);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    color: #fff;
    box-shadow: 0 30px 70px rgba(0, 0, 0, .35), inset 0 0 40px rgba(189, 243, 93, .08)
}

.reserve-core span {
    font: 500 11px var(--font-mono);
    color: var(--color-accent);
    letter-spacing: .16em
}

.reserve-core strong {
    font-size: 1.3rem;
    letter-spacing: -.04em
}

.reserve-core small {
    font-size: .62rem;
    color: #8f9a94
}

.signal-card {
    position: absolute;
    min-width: 150px;
    padding: 12px 14px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 14px;
    color: #dfe6e1;
    background: rgba(23, 28, 26, .7);
    backdrop-filter: blur(10px);
    font: 500 11px var(--font-mono);
    display: grid;
    gap: 9px
}

.signal-card i {
    display: block;
    height: 3px;
    background: linear-gradient(90deg, var(--color-accent), rgba(189, 243, 93, .07));
    border-radius: 999px
}

.signal-a {
    top: 70px;
    left: 38px
}

.signal-b {
    bottom: 70px;
    left: 52px
}

.signal-c {
    right: 38px;
    top: 210px
}

@keyframes spin {
    to {
        transform: rotate(360deg)
    }
}

.section {
    padding: var(--space-8) 0
}

.split-intro {
    display: grid;
    grid-template-columns: 180px 1.35fr 1fr;
    gap: 40px;
    align-items: start
}

.section-marker {
    display: flex;
    align-items: center;
    gap: 12px;
    font: 500 11px var(--font-mono);
    text-transform: uppercase;
    letter-spacing: .11em;
    color: var(--color-text-muted)
}

.section-marker i {
    height: 1px;
    width: 46px;
    background: var(--color-line)
}

.section-marker span {
    color: var(--color-text)
}

.section-marker.compact {
    margin-bottom: 28px
}

.section-marker.inverse {
    color: #aab4ae
}

.section-marker.inverse span {
    color: #fff
}

.section-marker.inverse i {
    background: #4c5651
}

.section-heading h2,
.section-top h2,
.advice-card h2,
.repeat-copy h2,
.income-copy h2,
.example-copy h2,
.faq-intro h2,
.form-intro h2 {
    font-size: var(--text-h2);
    line-height: 1.04;
    letter-spacing: -.05em;
    margin: 10px 0 0
}

.section-copy p {
    color: var(--color-text-muted)
}

.reserve-bento {
    margin-top: 48px;
    display: grid;
    grid-template-columns: 1.3fr .9fr .72fr;
    gap: 18px
}

.image-panel {
    margin: 0;
    overflow: hidden;
    background: var(--color-surface-2);
    border-radius: var(--radius-md);
    min-height: 340px
}

.image-panel img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block
}

.dark-panel {
    border-radius: var(--radius-md);
    background: var(--color-primary);
    color: #fff;
    padding: 34px;
    min-height: 340px;
    position: relative;
    overflow: hidden
}

.dark-panel h3 {
    font-size: 2rem;
    line-height: 1.05;
    letter-spacing: -.04em;
    margin: 58px 0 16px
}

.dark-panel p {
    color: #adb8b2
}

.mini-orbit {
    position: absolute;
    width: 180px;
    height: 180px;
    border: 1px solid rgba(189, 243, 93, .3);
    border-radius: 50%;
    right: -48px;
    bottom: -58px
}

.mini-orbit:before,
.mini-orbit:after {
    content: "";
    position: absolute;
    border: 1px solid rgba(189, 243, 93, .16);
    border-radius: 50%;
    inset: 24px
}

.mini-orbit:after {
    inset: 52px
}

.mini-orbit span {
    position: absolute;
    width: 9px;
    height: 9px;
    background: var(--color-accent);
    border-radius: 50%;
    top: 18px;
    left: 53px
}

.quote-panel {
    border-radius: var(--radius-md);
    background: var(--color-accent);
    padding: 34px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 340px
}

.quote-panel p {
    font-size: 1.65rem;
    line-height: 1.15;
    letter-spacing: -.035em
}

.quote-panel small {
    font-family: var(--font-mono);
    font-size: .72rem
}

.advice-section {
    background: var(--color-surface)
}

.advice-grid {
    display: grid;
    grid-template-columns: 1.2fr .8fr;
    grid-template-rows: auto auto;
    gap: 18px
}

.advice-card {
    background: var(--color-surface-2);
    border-radius: var(--radius-lg);
    padding: 46px;
    min-height: 460px
}

.advice-card p {
    max-width: 690px;
    color: var(--color-text-muted)
}

.flow-lines {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 50px;
    font: 500 11px var(--font-mono);
    text-transform: uppercase
}

.flow-lines i {
    width: 44px;
    height: 1px;
    background: var(--color-text-muted)
}

.portraitish {
    min-height: 460px
}

.logic-panel {
    grid-column: 1/-1;
    border: 1px solid var(--color-line);
    border-radius: var(--radius-md);
    padding: 28px 34px;
    display: grid;
    grid-template-columns: 140px 1fr auto;
    gap: 30px;
    align-items: center
}

.logic-panel p {
    margin: 0;
    color: var(--color-text-muted);
    max-width: 700px
}

.chip-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px
}

.chip-row span {
    font: 500 10px var(--font-mono);
    text-transform: uppercase;
    padding: 8px 10px;
    border-radius: 999px;
    background: var(--color-accent-2)
}

.analysis-section {
    background: var(--color-primary);
    color: #fff
}

.section-top {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 40px;
    margin-bottom: 48px
}

.analysis-section .section-marker {
    color: #9ba59f
}

.analysis-section .section-marker span {
    color: #fff
}

.analysis-section .section-marker i {
    background: #424a46
}

.analysis-section .kicker {
    color: var(--color-accent)
}

.analysis-stage {
    display: grid;
    grid-template-columns: .72fr 1.28fr;
    gap: 18px
}

.analysis-rail {
    display: grid;
    gap: 8px
}

.analysis-step {
    background: #202724;
    color: #fff;
    border: 1px solid #303936;
    border-radius: 16px;
    padding: 22px;
    text-align: left;
    cursor: pointer;
    display: grid;
    grid-template-columns: 38px 1fr;
    gap: 3px 12px;
    transition: .25s
}

.analysis-step span {
    grid-row: 1/3;
    font: 500 11px var(--font-mono);
    color: #8d9992
}

.analysis-step b {
    font-size: 1.02rem
}

.analysis-step small {
    color: #8f9994
}

.analysis-step:hover,
.analysis-step.active {
    background: #29312d;
    border-color: #56615b;
    transform: translateX(4px)
}

.analysis-step.active span {
    color: var(--color-accent)
}

.analysis-screen {
    min-height: 470px;
    border-radius: var(--radius-md);
    background: #0e1210;
    border: 1px solid #303936;
    overflow: hidden
}

.screen-head {
    height: 54px;
    padding: 0 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid #2a312e;
    font: 500 10px var(--font-mono);
    letter-spacing: .08em;
    color: #7e8b84
}

.live-dot {
    display: flex;
    align-items: center;
    gap: 8px
}

.live-dot:before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-accent);
    box-shadow: 0 0 0 5px rgba(189, 243, 93, .12)
}

.screen-body {
    display: grid;
    grid-template-columns: .85fr 1.15fr;
    gap: 30px;
    align-items: center;
    padding: 56px 44px
}

.radar-ring {
    aspect-ratio: 1;
    border: 1px solid #2f3a35;
    border-radius: 50%;
    position: relative;
    background: repeating-radial-gradient(circle, transparent 0 32px, rgba(255, 255, 255, .04) 33px 34px)
}

.radar-ring:before,
.radar-ring:after {
    content: "";
    position: absolute;
    background: #2f3a35
}

.radar-ring:before {
    width: 1px;
    height: 100%;
    left: 50%
}

.radar-ring:after {
    height: 1px;
    width: 100%;
    top: 50%
}

.radar-core {
    position: absolute;
    inset: 34%;
    border-radius: 50%;
    background: var(--color-accent);
    color: var(--color-text);
    display: grid;
    place-items: center;
    font: 600 1.2rem var(--font-mono);
    box-shadow: 0 0 44px rgba(189, 243, 93, .24)
}

.screen-copy h3 {
    font-size: 2rem;
    line-height: 1.05;
    letter-spacing: -.04em;
    margin: 10px 0 18px;
    word-break: break-word;
}

.screen-copy p:last-child {
    color: #96a39c
}

.categories-section {
    background: #eef0ed
}

.category-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    grid-auto-rows: minmax(220px, auto);
    gap: 14px
}

.category-card {
    border: 1px solid var(--color-line);
    border-radius: 18px;
    background: rgba(255, 255, 255, .55);
    padding: 28px;
    position: relative;
    overflow: hidden
}

.category-card>span {
    font: 500 10px var(--font-mono);
    color: var(--color-text-muted)
}

.category-card h3 {
    font-size: 1.45rem;
    letter-spacing: -.03em;
    margin: 40px 0 12px
}

.category-card p {
    color: var(--color-text-muted)
}

.category-card.span-2 {
    grid-column: span 2
}

.category-card.dark {
    background: var(--color-primary);
    color: #fff;
    border-color: var(--color-primary)
}

.category-card.dark p {
    color: #aeb8b3
}

.category-card.accent {
    background: var(--color-accent);
    border-color: transparent
}

.category-card.accent p {
    color: #313832
}

.category-card.signal {
    background: linear-gradient(145deg, #f7f9f5, #e7ece7);
    border-color: #d4dbd4
}

.category-card.signal:before {
    content: "";
    position: absolute;
    width: 118px;
    height: 118px;
    border: 1px solid rgba(26, 31, 29, .12);
    border-radius: 50%;
    right: -34px;
    top: -38px;
    box-shadow: 0 0 0 22px rgba(26, 31, 29, .035)
}

.signal-grid {
    position: absolute;
    right: 24px;
    bottom: 24px;
    width: 92px;
    height: 58px;
    display: flex;
    align-items: end;
    gap: 7px
}

.signal-grid i {
    display: block;
    flex: 1;
    border-radius: 5px 5px 2px 2px;
    background: var(--color-primary);
    opacity: .86
}

.signal-grid i:nth-child(1) {
    height: 22%
}

.signal-grid i:nth-child(2) {
    height: 46%
}

.signal-grid i:nth-child(3) {
    height: 68%
}

.signal-grid i:nth-child(4) {
    height: 100%;
    background: var(--color-accent);
    border: 1px solid rgba(26, 31, 29, .14)
}

.bar-code {
    position: absolute;
    right: 26px;
    bottom: 25px;
    display: flex;
    gap: 5px;
    align-items: end
}

.bar-code i {
    width: 8px;
    background: var(--color-text);
    border-radius: 8px
}

.bar-code i:nth-child(1) {
    height: 18px
}

.bar-code i:nth-child(2) {
    height: 48px
}

.bar-code i:nth-child(3) {
    height: 30px
}

.bar-code i:nth-child(4) {
    height: 66px
}

.bar-code i:nth-child(5) {
    height: 42px
}

.pulse {
    position: absolute;
    width: 90px;
    height: 90px;
    border-radius: 50%;
    background: var(--color-accent);
    right: -20px;
    bottom: -25px;
    box-shadow: 0 0 0 25px rgba(189, 243, 93, .09), 0 0 0 50px rgba(189, 243, 93, .045)
}

.repeat-grid,
.income-grid,
.example-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 70px;
    align-items: center
}

.repeat-copy p,
.income-copy p,
.example-copy p {
    color: var(--color-text-muted);
    max-width: 570px
}

.ledger {
    background: var(--color-surface);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow);
    overflow: hidden
}

.ledger-head,
.ledger-row,
.ledger-footer {
    padding: 18px 24px
}

.ledger-head {
    display: flex;
    justify-content: space-between;
    background: var(--color-primary);
    color: #c8d0cc;
    font: 500 10px var(--font-mono);
    text-transform: uppercase;
    letter-spacing: .08em
}

.ledger-row {
    display: grid;
    grid-template-columns: 14px 1fr auto;
    gap: 14px;
    align-items: center;
    border-bottom: 1px solid var(--color-line)
}

.ledger-row i {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--color-accent)
}

.ledger-row b {
    font: 500 10px var(--font-mono);
    color: var(--color-text-muted);
    text-transform: uppercase
}

.ledger-footer {
    font-size: .78rem;
    color: var(--color-text-muted)
}

.income-section {
    background: var(--color-surface)
}

.income-visual {
    min-height: 440px;
    border-radius: var(--radius-lg);
    background: var(--color-primary);
    position: relative;
    overflow: hidden;
    display: grid;
    place-items: center
}

.axis {
    position: absolute;
    inset: 40px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    color: #a9b3ae;
    font: 500 11px var(--font-mono);
    text-transform: uppercase
}

.axis i {
    height: 1px;
    flex: 1;
    margin: 0 18px;
    background: linear-gradient(90deg, var(--color-accent), #46504b, var(--color-accent))
}

.bridge {
    position: relative;
    width: 210px;
    height: 210px;
    border-radius: 50%;
    border: 1px solid #3d4742;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: #fff;
    box-shadow: 0 0 0 45px rgba(255, 255, 255, .025), 0 0 0 90px rgba(255, 255, 255, .015)
}

.bridge:before,
.bridge:after {
    content: "";
    position: absolute;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--color-accent);
    top: 50%;
    transform: translateY(-50%)
}

.bridge:before {
    left: -6px
}

.bridge:after {
    right: -6px
}

.bridge b {
    font-size: 1.45rem
}

.bridge span {
    font-size: .7rem;
    color: #8f9a94
}

.example-section {
    background: #e8ebe7
}

.formula {
    display: grid;
    gap: 8px
}

.formula>div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 20px;
    background: rgba(255, 255, 255, .75);
    border-radius: 14px
}

.formula>i {
    font-style: normal;
    padding-left: 18px;
    color: var(--color-text-muted)
}

.formula span {
    font-weight: 600
}

.formula b {
    font: 500 10px var(--font-mono);
    text-transform: uppercase;
    color: var(--color-text-muted)
}

.formula .formula-result {
    background: var(--color-accent)
}

.plan-section {
    padding-top: 0;
    background: #e8ebe7
}

.plan-shell {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1.14fr) minmax(360px, .86fr);
    gap: 30px;
    align-items: center;
    background: var(--color-primary);
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: var(--radius-lg);
    overflow: hidden;
    padding: 26px;
    box-shadow: 0 30px 70px rgba(18, 24, 21, .12)
}

.image-panel.wide {
    min-height: 0;
    aspect-ratio: 16/9;
    border-radius: 22px;
    align-self: center;
    position: relative;
    z-index: 2;
    border: 1px solid rgba(255, 255, 255, .1);
    box-shadow: 0 24px 54px rgba(0, 0, 0, .24)
}

.image-panel.wide img {
    object-position: center
}

.plan-copy {
    padding: 34px 34px 34px 6px;
    color: #fff;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    z-index: 2
}

.plan-copy .kicker {
    color: var(--color-accent)
}

.plan-copy h2 {
    font-size: var(--text-h2);
    line-height: 1.02;
    letter-spacing: -.05em
}

.plan-copy p {
    color: #aeb8b3
}

.plan-copy .btn {
    align-self: flex-start;
    margin-top: 16px
}

.plan-orbit {
    position: absolute;
    width: 280px;
    height: 280px;
    border: 1px solid rgba(189, 243, 93, .12);
    border-radius: 50%;
    right: -120px;
    top: -120px
}

.plan-orbit span,
.plan-orbit i {
    position: absolute;
    border: 1px solid rgba(189, 243, 93, .1);
    border-radius: 50%;
    inset: 34px
}

.plan-orbit i {
    inset: 72px
}

.faq-grid {
    display: grid;
    grid-template-columns: .75fr 1.25fr;
    gap: 70px
}

.faq-intro>p:last-child {
    color: var(--color-text-muted)
}

.faq-item {
    border-top: 1px solid var(--color-line)
}

.faq-item:last-child {
    border-bottom: 1px solid var(--color-line)
}

.faq-item button {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    background: transparent;
    border: 0;
    padding: 24px 0;
    text-align: left;
    font-weight: 600;
    cursor: pointer
}

.faq-item button i {
    font-style: normal;
    font-size: 1.5rem;
    font-weight: 400;
    transition: .25s
}

.faq-item.open button i {
    transform: rotate(45deg)
}

.faq-answer {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows .35s ease
}

.faq-answer p {
    overflow: hidden;
    color: var(--color-text-muted);
    margin: 0;
    max-width: 720px
}

.faq-item.open .faq-answer {
    grid-template-rows: 1fr
}

.faq-item.open .faq-answer p {
    padding: 0 40px 24px 0
}

.form-section {
    background: var(--color-primary);
    color: #fff
}

.form-shell {
    display: grid;
    grid-template-columns: .72fr 1.28fr;
    gap: 70px;
    align-items: start
}

.form-intro {
    position: sticky;
    top: 130px
}

.form-intro .kicker {
    color: var(--color-accent)
}

.form-intro>p {
    color: #aeb8b3
}

.form-disclaimer {
    margin-top: 28px;
    border-left: 2px solid var(--color-accent);
    padding-left: 14px;
    color: #aeb8b3;
    font-size: .84rem
}

.lead-form {
    background: #fff;
    color: var(--color-text);
    border-radius: var(--radius-lg);
    padding: 36px
}

.form-block+.form-block {
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px solid var(--color-line)
}

.form-block-head {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 22px
}

.form-block-head span {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--color-accent);
    font: 500 10px var(--font-mono)
}

.form-block-head h3 {
    margin: 0
}

.form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px
}

.form-grid label {
    font-size: .82rem;
    font-weight: 600;
    display: grid;
    gap: 8px
}

.form-grid input,
.form-grid select {
    width: 100%;
    min-height: 50px;
    border: 1px solid var(--color-line);
    border-radius: 12px;
    padding: 0 14px;
    background: #f9faf8;
    color: var(--color-text);
    outline: none;
    transition: .2s
}

.form-grid input:focus,
.form-grid select:focus {
    border-color: #8fa863;
    box-shadow: 0 0 0 3px rgba(189, 243, 93, .2)
}

.budget-preview {
    margin-top: 18px;
    padding: 20px;
    border-radius: 14px;
    background: var(--color-primary);
    color: #fff;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 4px 16px;
    align-items: end
}

.budget-preview span {
    font-size: .82rem;
    color: #aeb8b3
}

.budget-preview strong {
    font-size: 2rem;
    line-height: 1;
    color: var(--color-accent)
}

.budget-preview small {
    grid-column: 1/-1;
    color: #829087;
    font-size: .72rem
}

.consent {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    margin: 28px 0 20px;
    font-size: .78rem;
    color: var(--color-text-muted)
}

.consent input {
    margin-top: 4px
}

.consent a {
    text-decoration: underline
}

.form-submit {
    width: 100%;
    border-radius: 14px
}

.form-legal {
    font-size: .72rem;
    color: var(--color-text-muted);
    margin: 14px 0 0
}

.site-footer {
    background: #0d100f;
    color: #d6ddd9;
    padding: 64px 0 28px
}

.footer-grid {
    display: grid;
    grid-template-columns: 1.4fr .7fr 1fr .7fr;
    gap: 40px
}

.footer-grid>div:first-child p {
    color: #8d9892;
    max-width: 360px
}

.footer-grid h3 {
    font-size: .78rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: #7f8b84;
    margin-bottom: 18px
}

.footer-grid a {
    display: block;
    margin: 8px 0;
    color: #d6ddd9
}

.footer-grid a:hover {
    color: var(--color-accent)
}

.footer-grid p {
    font-size: .9rem
}

.footer-disclaimer {
    margin-top: 42px;
    padding-top: 28px;
    border-top: 1px solid #29302d;
    color: #77847c;
    font-size: .76rem;
    max-width: 1240px
}

.footer-bottom {
    display: flex;
    justify-content: space-between;
    margin-top: 26px;
    color: #5f6a64;
    font: 500 10px var(--font-mono);
    text-transform: uppercase
}

.legal-main {
    padding: 72px 0 100px
}

.legal-shell {
    max-width: 930px
}

.legal-title {
    padding-bottom: 42px;
    border-bottom: 1px solid var(--color-line)
}

.legal-title span {
    font: 500 10px var(--font-mono);
    text-transform: uppercase;
    letter-spacing: .1em;
    color: var(--color-text-muted)
}

.legal-title h1 {
    margin: 16px 0 18px;
    word-break: break-word;
}

.legal-title p {
    font-size: 1.05rem;
    color: var(--color-text-muted);
    max-width: 760px
}

.legal-article {
    padding-top: 38px
}

.legal-article h2 {
    font-size: 1.35rem;
    letter-spacing: -.02em;
    margin: 38px 0 12px
}

.legal-article p {
    color: #414844
}

.legal-article strong {
    color: var(--color-text)
}

.thanks-main {
    padding: 90px 0 110px
}

.thanks-shell {
    max-width: 980px
}

.thanks-orbit {
    width: 110px;
    height: 110px;
    border: 1px solid var(--color-line);
    border-radius: 50%;
    display: grid;
    place-items: center;
    position: relative;
    margin-bottom: 34px
}

.thanks-orbit:before,
.thanks-orbit:after {
    content: "";
    position: absolute;
    border: 1px solid var(--color-line);
    border-radius: 50%;
    inset: 15px
}

.thanks-orbit:after {
    inset: 31px
}

.thanks-orbit span {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--color-accent);
    z-index: 2
}

.thanks-copy h1 {
    margin: 10px 0 22px;
    word-break: break-word;
}

.thanks-copy>p {
    max-width: 760px;
    color: var(--color-text-muted)
}

.thanks-email {
    display: inline-block;
    margin-top: 12px;
    padding: 10px 14px;
    background: var(--color-surface-2);
    border-radius: 10px;
    font-size: .82rem;
    word-break: break-word;
}

.thanks-steps {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    margin: 58px 0
}

.thanks-steps article {
    border: 1px solid var(--color-line);
    border-radius: 18px;
    padding: 24px
}

.thanks-steps span {
    font: 500 10px var(--font-mono);
    color: var(--color-text-muted)
}

.thanks-steps h2 {
    font-size: 1.25rem;
    margin: 24px 0 10px
}

.thanks-steps p {
    font-size: .9rem;
    color: var(--color-text-muted)
}

.thanks-info {
    display: grid;
    grid-template-columns: 1.3fr .7fr;
    gap: 18px;
    background: var(--color-primary);
    color: #fff;
    padding: 32px;
    border-radius: 20px;
    margin-bottom: 28px
}

.thanks-info p {
    color: #aeb8b3
}

.thanks-info h2 {
    font-size: 1.7rem
}

.reveal {
    opacity: 0;
    transform: translateY(24px);
    transition: opacity .7s ease, transform .7s ease
}

.reveal.in-view {
    opacity: 1;
    transform: none
}

:focus-visible {
    outline: 3px solid var(--color-accent);
    outline-offset: 3px
}

@media(max-width:1024px) {

    .hero-grid,
    .split-intro,
    .repeat-grid,
    .income-grid,
    .example-grid,
    .faq-grid,
    .form-shell {
        grid-template-columns: 1fr
    }

    .hero-visual {
        height: 520px
    }

    .split-intro {
        gap: 18px
    }

    .reserve-bento {
        grid-template-columns: 1fr 1fr
    }

    .reserve-bento .image-panel {
        grid-column: 1/-1
    }

    .analysis-stage {
        grid-template-columns: 1fr
    }

    .category-grid {
        grid-template-columns: repeat(2, 1fr)
    }

    .form-intro {
        position: static
    }

    .footer-grid {
        grid-template-columns: 1fr 1fr
    }

    .section-top {
        grid-template-columns: 1fr;
        gap: 18px
    }

    .plan-shell {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 20px
    }

    .image-panel.wide {
        min-height: 0;
        aspect-ratio: 16/9;
        width: 100%
    }

    .plan-copy {
        padding: 30px 20px 34px
    }

    .logic-panel {
        grid-template-columns: 1fr
    }

    .faq-grid {
        gap: 38px
    }
}

@media(max-width:768px) {
    .shell {
        width: min(100% - 28px, 1240px)
    }

    .site-header {
        top: 0
    }

    .header-inner {
        height: 64px
    }

    .nav {
        display: none;
        position: fixed;
        top: 92px;
        left: 14px;
        right: 14px;
        background: var(--color-surface);
        border: 1px solid var(--color-line);
        border-radius: 16px;
        padding: 18px;
        box-shadow: var(--shadow);
        flex-direction: column;
        align-items: stretch;
        gap: 4px
    }

    .nav.open {
        display: flex
    }

    .nav a {
        padding: 12px
    }

    .menu-toggle {
        display: block
    }

    .hero {
        padding: 46px 0 64px;
        min-height: auto
    }

    .hero-grid {
        gap: 36px
    }

    .hero-actions {
        align-items: flex-start;
        flex-direction: column
    }

    .hero-visual {
        height: 460px
    }

    .budget-orbit {
        width: 300px;
        height: 300px
    }

    .reserve-core {
        inset: 88px
    }

    .signal-card {
        min-width: 125px
    }

    .signal-a {
        top: 40px;
        left: 18px
    }

    .signal-b {
        bottom: 38px;
        left: 20px
    }

    .signal-c {
        right: 16px;
        top: 180px
    }

    .section {
        padding: 72px 0
    }

    .reserve-bento,
    .advice-grid,
    .category-grid,
    .form-grid,
    .thanks-steps,
    .thanks-info {
        grid-template-columns: 1fr
    }

    .reserve-bento .image-panel {
        grid-column: auto
    }

    .advice-card {
        padding: 30px;
        min-height: auto
    }

    .portraitish {
        min-height: 340px
    }

    .logic-panel {
        grid-column: auto
    }

    .category-card.span-2 {
        grid-column: auto
    }

    .screen-body {
        grid-template-columns: 1fr;
        padding: 32px 24px
    }

    .radar-ring {
        max-width: 270px;
        margin: auto;
        width: 100%
    }

    .plan-shell {
        padding: 14px;
        border-radius: 20px
    }

    .image-panel.wide {
        border-radius: 14px
    }

    .plan-copy {
        padding: 26px 14px 30px
    }

    .footer-grid {
        grid-template-columns: 1fr
    }

    .footer-bottom {
        gap: 12px;
        flex-direction: column
    }

    .thanks-main {
        padding: 64px 0
    }

    .legal-main {
        padding: 54px 0 80px
    }

    .form-shell {
        gap: 38px
    }

    .lead-form {
        padding: 24px
    }

    .budget-preview {
        grid-template-columns: 1fr
    }

    .budget-preview strong {
        margin-top: 6px
    }

    .analysis-step:hover,
    .analysis-step.active {
        transform: none
    }
}

@media(max-width:420px) {
    .hero-visual {
        height: 400px
    }

    .budget-orbit {
        width: 250px;
        height: 250px
    }

    .reserve-core {
        inset: 72px
    }

    .signal-card {
        font-size: 9px;
        min-width: 110px
    }

    .signal-c {
        top: 152px
    }

    .dark-panel,
    .quote-panel {
        padding: 26px
    }

    .form-grid {
        gap: 14px
    }

    .btn {
        width: 100%
    }

    .text-link {
        width: auto
    }

    .footer-brand {
        margin-bottom: 8px
    }
}

.cookie-banner {
    position: fixed;
    left: 50%;
    bottom: 20px;
    z-index: 1000;
    width: min(1240px, calc(100% - 40px));
    background: var(--color-primary);
    color: #fff;
    border: 1px solid #303936;
    border-radius: var(--radius-md);
    box-shadow: 0 26px 70px rgba(10, 14, 12, .24);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translate(-50%, calc(100% + 50px));
    transition: opacity .3s ease, visibility .3s ease, transform .3s ease;
}

.cookie-banner.show {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translate(-50%, 0);
}

.cookie-banner__inner {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 48px;
    align-items: center;
    padding: 28px 30px;
}

.cookie-banner__content {
    max-width: 790px;
}

.cookie-banner__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 9px;
    color: var(--color-accent);
    font: 500 10px/1.3 var(--font-mono);
    letter-spacing: .12em;
    text-transform: uppercase;
}

.cookie-banner__eyebrow span {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--color-accent);
    box-shadow: 0 0 0 5px rgba(189, 243, 93, .12);
}

.cookie-banner h2 {
    margin: 0 0 10px;
    color: #fff;
    font-family: var(--font-display);
    font-size: clamp(1.55rem, 2.2vw, 2rem);
    font-weight: 600;
    line-height: 1.05;
    letter-spacing: -.04em;
}

.cookie-banner p {
    margin: 0;
    max-width: 790px;
    color: #aeb8b3;
    font-size: .82rem;
    line-height: 1.6;
}

.cookie-banner__actions {
    display: flex;
    align-items: center;
    gap: 10px;
}

.cookie-banner__button {
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 12px 18px;
    border: 1px solid transparent;
    border-radius: 999px;
    font: inherit;
    font-size: .8rem;
    font-weight: 600;
    line-height: 1.2;
    white-space: nowrap;
    cursor: pointer;
    transition: transform .25s ease, background .25s ease, color .25s ease, border-color .25s ease;
}

.cookie-banner__button--primary {
    background: var(--color-accent);
    color: var(--color-text);
    border-color: var(--color-accent);
}

.cookie-banner__button--primary:hover {
    background: #c9fa72;
    border-color: #c9fa72;
    transform: translateY(-2px);
}

.cookie-banner__button--secondary {
    background: transparent;
    color: #fff;
    border-color: #4c5651;
}

.cookie-banner__button--secondary:hover {
    background: #fff;
    color: var(--color-text);
    border-color: #fff;
    transform: translateY(-2px);
}

.cookie-banner__button:focus-visible {
    outline: 3px solid var(--color-accent);
    outline-offset: 3px;
}

@media (max-width: 768px) {
    .cookie-banner {
        bottom: 14px;
        width: calc(100% - 28px);
        border-radius: 16px;
    }

    .cookie-banner__inner {
        grid-template-columns: 1fr;
        gap: 22px;
        padding: 24px;
    }

    .cookie-banner__actions {
        width: 100%;
    }

    .cookie-banner__button {
        flex: 1;
    }
}

@media (max-width: 420px) {
    .cookie-banner__inner {
        padding: 20px;
    }

    .cookie-banner__actions {
        flex-direction: column-reverse;
        align-items: stretch;
    }

    .cookie-banner__button {
        width: 100%;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cookie-banner {
        transition: none;
    }
}