/* =================================
HOMEPAGE
================================= */

.container {
box-sizing: border-box;
}

html {
scroll-behavior: smooth;
}

body {
margin: 0;
font-family:
Inter,
-apple-system,
BlinkMacSystemFont,
"Segoe UI",
sans-serif;
color: #17231d;
background: #f7f8f4;
line-height: 1.6;
}

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

img {
max-width: 100%;
display: block;
}

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

/* =================================
HEADER
================================= */

.site-header {
position: relative;
z-index: 20;
background: rgba(247, 248, 244, 0.92);
border-bottom: 1px solid rgba(23, 35, 29, 0.08);
backdrop-filter: blur(14px);
}

.nav-wrap {
min-height: 78px;
display: flex;
align-items: center;
justify-content: space-between;
gap: 30px;
}

.brand {
display: inline-flex;
align-items: center;
gap: 11px;
font-weight: 800;
letter-spacing: -0.04em;
}

.brand-mark {
width: 34px;
height: 34px;
display: grid;
place-items: center;
border-radius: 10px;
background: #173d2b;
color: #fff;
font-size: 16px;
font-weight: 800;
}

.brand-name {
font-size: 21px;
color: #17231d;
}

.brand-name span {
color: #4e8968;
}

.main-nav {
display: flex;
align-items: center;
gap: 28px;
font-size: 14px;
font-weight: 600;
color: #536158;
}

.main-nav a {
transition: color 0.2s ease;
}

.main-nav a {
color: #173d2b;
}

.main-nav .nav-cta {
padding: 11px 18px;
border-radius: 999px;
background: #173d2b;
color: #fff;
}

.main-nav .nav-cta {
color: #fff;
background: #24563d;
}

/* =================================
BUTTONS
================================= */

.button {
min-height: 50px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 12px;
padding: 0 21px;
border-radius: 999px;
font-size: 14px;
font-weight: 700;
transition:
transform 0.2s ease,
background 0.2s ease,
box-shadow 0.2s ease;
}

.button {
transform: translateY(-2px);
}

.button-primary {
background: #173d2b;
color: #fff;
box-shadow: 0 12px 28px rgba(23, 61, 43, 0.18);
}

.button-primary {
background: #24563d;
}

.button-secondary {
background: transparent;
border: 1px solid rgba(23, 35, 29, 0.14);
color: #26352d;
}

.button-secondary {
background: #fff;
}

.button-light {
background: #fff;
color: #173d2b;
}

.button-light {
background: #edf2ec;
}

/* =================================
EYEBROW
================================= */

.eyebrow {
display: inline-flex;
align-items: center;
gap: 9px;
margin-bottom: 20px;
color: #5b7164;
font-size: 11px;
font-weight: 800;
letter-spacing: 0.14em;
text-transform: uppercase;
}

.eyebrow > span {
width: 7px;
height: 7px;
border-radius: 50%;
background: #6da37f;
}

/* =================================
HERO
================================= */

.hero {
position: relative;
overflow: hidden;
padding: 92px 0 110px;
background:
radial-gradient(
circle at 75% 48%,
rgba(105, 155, 121, 0.16),
transparent 31%
),
#f7f8f4;
}

.hero-grid {
min-height: 590px;
display: grid;
grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
align-items: center;
gap: 55px;
}

.hero-copy {
position: relative;
z-index: 5;
max-width: 590px;
}

.hero h1 {
max-width: 650px;
margin: 0;
color: #17231d;
font-size: clamp(48px, 6vw, 78px);
line-height: 0.98;
letter-spacing: -0.065em;
font-weight: 800;
}

.hero h1 em {
display: block;
color: #5d9470;
font-style: normal;
}

.hero-text {
max-width: 510px;
margin: 28px 0 30px;
color: #647168;
font-size: 17px;
line-height: 1.75;
}

.hero-actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
}

.hero-note {
display: flex;
align-items: center;
gap: 8px;
margin-top: 20px;
color: #738078;
font-size: 12px;
font-weight: 600;
}

.note-icon {
width: 20px;
height: 20px;
display: grid;
place-items: center;
border-radius: 50%;
background: #dcebdd;
color: #39714c;
font-size: 11px;
}

/* =================================
HERO PRODUCT
================================= */

.hero-product {
position: relative;
min-height: 570px;
display: grid;
place-items: center;
}

.product-glow {
position: absolute;
width: 490px;
height: 490px;
border-radius: 50%;
background:
radial-gradient(
circle,
#c9e4ce 0%,
#b5d5bb 45%,
#91b99d 100%
);
box-shadow:
0 40px 90px rgba(55, 94, 68, 0.18),
inset 0 0 70px rgba(255, 255, 255, 0.18);
}

.product-stage {
position: relative;
width: 100%;
height: 570px;
display: grid;
place-items: center;
}

/* The physical card */

.physical-card {
position: relative;
z-index: 4;

/*
   Landscape business-card proportions.
   1.586 is approximately standard bank-card ratio.
*/
width: min(440px, 72%);
aspect-ratio: 1.586 / 1;

transform: rotate(-7deg);

border-radius: 17px;

background:
    linear-gradient(
        145deg,
        #26364a 0%,
        #18283b 45%,
        #101e2e 100%
    );

box-shadow:
    0 34px 55px rgba(16, 29, 43, 0.34),
    0 12px 22px rgba(16, 29, 43, 0.18);

border: 1px solid rgba(255, 255, 255, 0.13);

overflow: hidden;

transition:
    transform 0.35s ease,
    box-shadow 0.35s ease;

}

.physical-card {
transform: rotate(-4deg) translateY(-5px);
box-shadow:
0 42px 65px rgba(16, 29, 43, 0.38),
0 15px 25px rgba(16, 29, 43, 0.2);
}

/*
Subtle 3D-print texture.
This gives the surface a printed-plastic appearance
without making the card look glossy or metallic.
*/

.card-surface {
position: absolute;
inset: 0;

display: flex;
align-items: center;
justify-content: center;

background:
    repeating-linear-gradient(
        0deg,
        rgba(255, 255, 255, 0.018) 0,
        rgba(255, 255, 255, 0.018) 1px,
        transparent 1px,
        transparent 3px
    );

box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.08),
    inset 0 -1px 0 rgba(0, 0, 0, 0.22);

}

/*
Personalised name.
Kept horizontal because the physical card
itself is horizontal.
*/

.card-name {
position: relative;
z-index: 3;

color: #f3f6f3;

font-size: clamp(25px, 3vw, 39px);
font-weight: 800;
letter-spacing: 0.075em;
line-height: 1;

text-align: center;

/*
   Slight shadow makes the lettering feel
   subtly embossed/raised into the print.
*/
text-shadow:
    0 1px 0 rgba(255, 255, 255, 0.16),
    0 -1px 0 rgba(0, 0, 0, 0.38);

white-space: nowrap;

}

/*
Small Taptapcards branding near the bottom.
*/

.card-brand {
position: absolute;
left: 28px;
bottom: 23px;

color: rgba(255, 255, 255, 0.58);

font-size: 11px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: lowercase;

}

.card-brand span {
color: rgba(142, 193, 157, 0.8);
}

/*
Subtle side edge to give the card actual thickness.
*/

.card-edge {
position: absolute;
left: 0;
right: 0;
bottom: -5px;

height: 8px;

border-radius: 0 0 17px 17px;

background: #0d1926;

transform: skewX(-18deg);
opacity: 0.9;

}

/* =================================
FLOATING LABELS
================================= */

.floating-label {
position: absolute;
z-index: 8;

display: flex;
align-items: center;
gap: 9px;

padding: 10px 14px;

border: 1px solid rgba(255, 255, 255, 0.65);
border-radius: 999px;

background: rgba(255, 255, 255, 0.82);
box-shadow: 0 12px 28px rgba(38, 69, 49, 0.12);

color: #33463b;

font-size: 11px;
font-weight: 700;

backdrop-filter: blur(12px);

}

.label-dot {
width: 7px;
height: 7px;
flex: 0 0 7px;

border-radius: 50%;
background: #5d9470;

}

.label-one {
top: 116px;
left: 8%;
}

.label-two {
right: 5%;
top: 205px;
}

.label-three {
bottom: 118px;
left: 11%;
}

/* =================================
GENERAL SECTION HEADINGS
================================= */

.section-heading {
max-width: 680px;
margin-bottom: 55px;
}

.section-heading h2,
.demo-heading h2 {
margin: 0;
color: #17231d;
font-size: clamp(38px, 5vw, 60px);
line-height: 1.02;
letter-spacing: -0.055em;
}

.section-heading h2 span,
.demo-heading h2 span {
color: #6a9275;
}

.section-heading p,
.demo-heading p {
max-width: 580px;
margin: 22px 0 0;
color: #6b776f;
font-size: 16px;
}

/* =================================
HOW IT WORKS
================================= */

.steps-section {
padding: 110px 0;
background: #fff;
}

.steps-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 18px;
}

.step-card {
position: relative;
min-height: 310px;
padding: 32px;
overflow: hidden;

border: 1px solid #e5e9e5;
border-radius: 24px;

background: #f8faf7;

transition:
    transform 0.25s ease,
    box-shadow 0.25s ease;

}

.step-card {
transform: translateY(-5px);
box-shadow: 0 20px 45px rgba(28, 53, 38, 0.08);
}

.step-number {
color: #9aaa9f;
font-size: 11px;
font-weight: 800;
letter-spacing: 0.12em;
}

.step-icon {
width: 48px;
height: 48px;
display: grid;
place-items: center;
margin: 45px 0 25px;

border-radius: 15px;

background: #e1eee3;
color: #326448;

font-size: 19px;
font-weight: 800;

}

.step-card h3 {
margin: 0 0 10px;
color: #203027;
font-size: 21px;
letter-spacing: -0.025em;
}

.step-card p {
max-width: 310px;
margin: 0;
color: #6e7972;
font-size: 14px;
}

/* =================================
FEATURES
================================= */

.features-section {
padding: 115px 0;
background: #f1f4ef;
}

.feature-heading {
max-width: none;

display: flex;
align-items: end;
justify-content: space-between;
gap: 50px;

}

.feature-heading > p {
max-width: 350px;
margin-bottom: 4px;
}

.features-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 18px;
}

.feature-card {
min-height: 300px;
padding: 32px;

border: 1px solid rgba(23, 61, 43, 0.09);
border-radius: 24px;

background: #fff;

transition:
    transform 0.25s ease,
    box-shadow 0.25s ease;

}

.feature-card {
transform: translateY(-4px);
box-shadow: 0 20px 45px rgba(28, 53, 38, 0.08);
}

.feature-large {
background: #173d2b;
color: #fff;
}

.feature-number {
color: #8a9a90;
font-size: 11px;
font-weight: 800;
letter-spacing: 0.12em;
}

.feature-large .feature-number {
color: rgba(255, 255, 255, 0.48);
}

.feature-icon {
width: 50px;
height: 50px;
display: grid;
place-items: center;
margin: 40px 0 25px;

border-radius: 15px;

background: #e3eee5;
color: #356c49;

font-size: 12px;
font-weight: 800;

}

.feature-large .feature-icon {
background: rgba(255, 255, 255, 0.12);
color: #d9ecdd;
}

.feature-card h3 {
margin: 0 0 10px;
font-size: 22px;
letter-spacing: -0.03em;
}

.feature-card p {
max-width: 420px;
margin: 0;
color: #718078;
font-size: 14px;
}

.feature-large p {
color: rgba(255, 255, 255, 0.68);
}

/* =================================
DEMO
================================= */

.demo-section {
padding: 115px 0;
background: #fff;
}

.demo-heading {
max-width: 700px;
margin-bottom: 45px;
}

.demo-frame {
width: min(430px, 100%);
margin: 0 auto;
overflow: hidden;

border: 1px solid #dfe5df;
border-radius: 24px;

background: #fff;

box-shadow:
    0 30px 70px rgba(25, 48, 34, 0.12),
    0 5px 15px rgba(25, 48, 34, 0.06);

}

.demo-browser-bar {
height: 36px;

display: flex;
align-items: center;
gap: 6px;

padding-left: 15px;

background: #f0f3ef;
border-bottom: 1px solid #e0e5e0;

}

.demo-browser-bar span {
width: 7px;
height: 7px;
border-radius: 50%;
background: #b9c2bb;
}

.demo-frame iframe {
display: block;

width: 100%;
height: 700px;

border: 0;

}

/* =================================
FINAL CTA
================================= */

.final-cta {
position: relative;
overflow: hidden;
padding: 120px 0;

background: #173d2b;
color: #fff;

}

.final-cta::before {
content: "";
position: absolute;

width: 520px;
height: 520px;

right: -170px;
top: -260px;

border-radius: 50%;

background: rgba(144, 190, 153, 0.14);

}

.cta-content {
position: relative;
z-index: 2;
max-width: 720px;
}

.final-cta .eyebrow {
color: rgba(255, 255, 255, 0.58);
}

.final-cta .eyebrow > span {
background: #9bc7a5;
}

.final-cta h2 {
margin: 0;

font-size: clamp(44px, 6vw, 72px);
line-height: 1;
letter-spacing: -0.06em;

}

.final-cta h2 em {
display: block;
color: #a7cbaa;
font-style: normal;
}

.final-cta p {
max-width: 590px;
margin: 25px 0 30px;

color: rgba(255, 255, 255, 0.67);
font-size: 16px;

}

/* =================================
FOOTER
================================= */

.site-footer {
padding: 38px 0;
background: #10291d;
color: #fff;
}

.footer-inner {
display: grid;
grid-template-columns: 1fr auto;
align-items: center;
gap: 25px;
}

.footer-brand .brand-name {
color: #fff;
}

.footer-brand p {
margin: 12px 0 0;
color: rgba(255, 255, 255, 0.45);
font-size: 12px;
}

.footer-links {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 20px;
color: rgba(255, 255, 255, 0.6);
font-size: 12px;
font-weight: 600;
}

.footer-links a {
color: #fff;
}

.footer-copy {
grid-column: 1 / -1;
padding-top: 22px;
border-top: 1px solid rgba(255, 255, 255, 0.08);
color: rgba(255, 255, 255, 0.35);
font-size: 11px;
}

/* =================================
TABLET
================================= */

@media (max-width: 1000px) {

.main-nav {
    gap: 16px;
}

.hero {
    padding: 70px 0 90px;
}

.hero-grid {
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.hero h1 {
    font-size: clamp(45px, 6vw, 65px);
}

.product-glow {
    width: 390px;
    height: 390px;
}

.physical-card {
    width: min(390px, 90%);
}

.floating-label {
    font-size: 10px;
}

.label-one {
    left: 0;
}

.label-two {
    right: 0;
}

.label-three {
    left: 0;
}

}

/* =================================
MOBILE
================================= */

@media (max-width: 700px) {

.container {
    width: min(100% - 28px, 560px);
}

.nav-wrap {
    min-height: 72px;
    flex-wrap: wrap;
    padding: 13px 0;
}

.main-nav {
    width: 100%;

    display: grid;
    grid-template-columns: repeat(2, 1fr);

    gap: 8px;
}

.main-nav a {
    padding: 9px 6px;
    text-align: center;
    border-radius: 10px;
    background: rgba(23, 61, 43, 0.04);
}

.main-nav .nav-cta {
    grid-column: 1 / -1;
    background: #173d2b;
}


/* Hero */

.hero {
    padding: 65px 0 75px;
}

.hero-grid {
    display: flex;
    flex-direction: column;
    gap: 45px;
    min-height: 0;
}

.hero-copy {
    max-width: none;
}

.hero h1 {
    font-size: clamp(43px, 13vw, 62px);
}

.hero-text {
    font-size: 15px;
}

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

.hero-actions .button {
    width: 100%;
}


/*
   Keep the product in its own visual stage
   underneath the copy on mobile.
*/

.hero-product {
    width: 100%;
    min-height: 430px;
}

.product-stage {
    height: 430px;
}

.product-glow {
    width: min(390px, 88vw);
    height: min(390px, 88vw);
}

.physical-card {
    width: min(390px, 82vw);
    aspect-ratio: 1.586 / 1;
}

.card-name {
    font-size: clamp(21px, 6vw, 30px);
}

.card-brand {
    left: 21px;
    bottom: 17px;
    font-size: 9px;
}

.floating-label {
    padding: 8px 11px;
    font-size: 9px;
}

.label-one {
    top: 65px;
    left: 2%;
}

.label-two {
    top: 150px;
    right: 1%;
}

.label-three {
    bottom: 60px;
    left: 3%;
}


/* Sections */

.steps-section,
.features-section,
.demo-section {
    padding: 80px 0;
}

.section-heading,
.demo-heading {
    margin-bottom: 38px;
}

.section-heading h2,
.demo-heading h2 {
    font-size: 42px;
}


/* Steps */

.steps-grid {
    grid-template-columns: 1fr;
}

.step-card {
    min-height: 270px;
}


/* Features */

.feature-heading {
    display: block;
}

.feature-heading > p {
    margin-top: 20px;
}

.features-grid {
    grid-template-columns: 1fr;
}

.feature-card {
    min-height: 260px;
}


/* Demo */

.demo-frame {
    border-radius: 18px;
}

.demo-frame iframe {
    height: 650px;
}


/* CTA */

.final-cta {
    padding: 85px 0;
}

.final-cta h2 {
    font-size: 46px;
}


/* Footer */

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

.footer-links {
    justify-content: flex-start;
}

.footer-copy {
    grid-column: auto;
}

}

/* =================================
SMALL PHONES
================================= */

@media (max-width: 400px) {

.hero h1 {
    font-size: 43px;
}

.product-glow {
    width: 320px;
    height: 320px;
}

.hero-product,
.product-stage {
    min-height: 360px;
    height: 360px;
}

.physical-card {
    width: 84vw;
}

.card-name {
    font-size: 19px;
}

.floating-label {
    display: none;
}

.section-heading h2,
.demo-heading h2 {
    font-size: 37px;
}

.final-cta h2 {
    font-size: 40px;
}

}