/* ============================================================
   LUZiGÁS · Clube TAP — refined client website
   Palette: Clube TAP blue primary, orange accent only
   Tone: sober, editorial, restrained
   ============================================================ */

:root {
    /* Brand — Clube TAP blue */
    --brand:        #1F7AE0;
    --brand-dark:   #1862B8;
    --brand-light:  #E8F2FC;
    --brand-soft:   #F4F9FE;

    /* Secondary accent (LUZiGÁS orange — used sparingly) */
    --accent:       #1F7AE0;
    --accent-dark:  #1862B8;

    /* Neutrals */
    --ink:          #0F1623;
    --ink-2:        #2A3346;
    --ink-3:        #4A5468;
    --muted:        #6B7484;
    --line:         #E6E9EF;
    --line-2:       #EFF1F5;
    --bg:           #FFFFFF;
    --bg-soft:      #F7F8FA;

    /* Tariff accents */
    --c-fixo:       #1F7AE0;
    --c-indexado:   #1F7AE0;
    --c-green:      #3FA535;

    /* Type — one family, two weights for hierarchy */
    --font:         'Manrope', system-ui, -apple-system, sans-serif;

    /* Radius */
    --r-sm: 10px;
    --r-md: 14px;
    --r-lg: 18px;

    /* Shadows — restrained */
    --shadow-sm: 0 1px 2px rgba(15,22,35,.05);
    --shadow-md: 0 4px 16px rgba(15,22,35,.06);
    --shadow-lg: 0 16px 40px -12px rgba(15,22,35,.12);

    /* Layout */
    --nav-h: 72px;
}

/* ============================================================
   Base
   ============================================================ */
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
    font-family: var(--font);
    color: var(--ink);
    background: var(--bg);
    font-size: 16px;
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font);
    font-weight: 700;
    letter-spacing: -0.015em;
    color: var(--ink);
    margin: 0 0 .5rem;
}

p { margin: 0 0 1rem; }

a { color: var(--brand); text-decoration: none; transition: color .15s; }
a:hover { color: var(--brand-dark); }

img { max-width: 100%; display: block; }
::selection { background: var(--brand); color: #fff; }

/* Logo size — explicit, beats base reset */
.navbar-brand img { height: 32px; width: auto; display: block; }
.site-footer img { height: 20px; width: auto; display: inline-block; vertical-align: middle; }

.container { max-width: 1180px; }

/* ============================================================
   Buttons — clean, restrained
   ============================================================ */
.btn {
    font-family: var(--font);
    font-weight: 600;
    border-radius: 999px;
    padding: .65rem 1.4rem;
    font-size: .95rem;
    line-height: 1.4;
    transition: background .15s, color .15s, border-color .15s, transform .15s;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    border: 1.5px solid transparent;
    white-space: nowrap;
    cursor: pointer;
}
.btn-lg { padding: .85rem 1.65rem; font-size: 1rem; }
.btn-sm { padding: .45rem 1rem; font-size: .85rem; }

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

.btn-outline-light {
    border-color: rgba(255,255,255,.5);
    color: #fff;
    background: transparent;
}
.btn-outline-light:hover {
    background: #fff;
    color: var(--ink);
    border-color: #fff;
}

.btn-outline-brand {
    border-color: var(--brand);
    color: var(--brand);
    background: transparent;
}
.btn-outline-brand:hover {
    background: var(--brand);
    color: #fff;
}

.btn .bi-arrow-right-short { font-size: 1.3em; transition: transform .2s; line-height: 1; }
.btn:hover .bi-arrow-right-short { transform: translateX(2px); }

/* ============================================================
   Navbar — translucent dark over hero, then white on scroll
   ============================================================ */
.site-navbar {
    background: transparent;
    padding: 1rem 0;
    transition: background .25s, padding .25s, box-shadow .25s;
    min-height: var(--nav-h);
}
.site-navbar.scrolled {
    background: rgba(255,255,255,.96);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    padding: .6rem 0;
    box-shadow: 0 1px 0 var(--line);
}

.site-navbar .navbar-brand img { transition: filter .25s; }
/* On dark hero we show the white logo; on scrolled (white nav) we filter it dark */
.site-navbar.scrolled .navbar-brand img {
    filter: brightness(0) saturate(100%);
}

.site-navbar .nav-link {
    color: rgba(255,255,255,.85);
    font-weight: 500;
    font-size: .9rem;
    padding: .5rem .9rem;
}
.site-navbar.scrolled .nav-link { color: var(--ink-2); }
.site-navbar .nav-link:hover { color: #fff; }
.site-navbar.scrolled .nav-link:hover { color: var(--brand); }

.lang-switch {
    display: flex;
    gap: .25rem;
    margin: 0 .25rem;
}
.lang-link {
    display: inline-flex;
    padding: .2rem;
    border-radius: 4px;
    border: 1.5px solid transparent;
    opacity: .65;
    transition: opacity .15s, border-color .15s;
}
.lang-link:hover { opacity: 1; }
.lang-link.active { opacity: 1; border-color: rgba(255,255,255,.6); }
.site-navbar.scrolled .lang-link.active { border-color: var(--brand); }

.toggler-bar {
    display: block;
    width: 22px;
    height: 2px;
    background: #fff;
    margin: 4px 0;
    border-radius: 1px;
    transition: background .25s;
}
.site-navbar.scrolled .toggler-bar { background: var(--ink); }
.navbar-toggler { border: none; padding: .4rem; }
.navbar-toggler:focus { box-shadow: none; }

@media (max-width: 991px) {
    .navbar-collapse {
        background: rgba(15,22,35,.96);
        margin-top: .5rem;
        padding: 1rem;
        border-radius: var(--r-md);
    }
    .site-navbar.scrolled .navbar-collapse {
        background: #fff;
        box-shadow: var(--shadow-md);
        border: 1px solid var(--line);
    }
    .lang-switch { padding: .5rem .9rem; }
}

/* ============================================================
   Hero — restrained, no orbs, no floating cards
   ============================================================ */
.hero {
    position: relative;
    color: #fff;
    min-height: 560px;
    display: flex;
    align-items: center;
    padding: calc(var(--nav-h) + 2rem) 0 3rem;
    overflow: hidden;
    background: #1862B8;
    background-size: cover;
    background-position: center;
}
.hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(21, 21, 21, 0.75);
    z-index: 0;
}
/* When a hero image is set (data-hero-img), it shows behind */
.hero[data-hero-img] {
    background: var(--hero-img) center/cover no-repeat;
}
.hero--compact { min-height: 380px; padding-bottom: 2rem; }

.hero-inner { text-align: center; max-width: 760px; margin: 0 auto; }

.hero-eyebrow {
    color: rgba(255,255,255,.85);
    font-size: .82rem;
    font-weight: 500;
    letter-spacing: .03em;
    margin-bottom: 1.25rem;
}
.hero-eyebrow .dot {
    display: inline-block;
    width: 4px; height: 4px;
    background: var(--accent);
    border-radius: 50%;
    margin: 0 .55rem .15rem;
    vertical-align: middle;
}

.hero-title {
    font-size: clamp(1.85rem, 4.2vw, 3rem);
    line-height: 1.15;
    font-weight: 800;
    color: #fff;
    margin-bottom: 1.5rem;
    text-transform: uppercase;
    letter-spacing: -0.01em;
}
.hero-save {
    color: var(--accent);
    font-weight: 900;
}

.hero-cta {
    display: inline-flex;
    flex-wrap: wrap;
    gap: .75rem;
    justify-content: center;
}

.hero-scroll {
    position: absolute;
    bottom: 1.5rem;
    left: 50%;
    transform: translateX(-50%);
    color: rgba(255,255,255,.6);
    font-size: 1.6rem;
    animation: bounce 2.4s ease-in-out infinite;
}
@keyframes bounce {
    0%, 100% { transform: translate(-50%, 0); }
    50%      { transform: translate(-50%, 8px); }
}

/* ============================================================
   Section helpers — sober scale
   ============================================================ */
.section {
    padding: 4.5rem 0;
}
.section-tight { padding: 3rem 0; }
.section-soft { background: var(--bg-soft); }

.section-eyebrow {
    color: var(--brand);
    font-size: .85rem;
    font-weight: 600;
    letter-spacing: .02em;
    margin-bottom: .75rem;
}

.section-title {
    font-size: clamp(1.6rem, 2.8vw, 2.1rem);
    line-height: 1.2;
    margin-bottom: 1rem;
    font-weight: 800;
}

.section-lead {
    color: var(--ink-3);
    font-size: 1rem;
    max-width: 680px;
    margin: 0 auto;
}

.link-arrow {
    color: var(--brand);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    transition: gap .2s;
}
.link-arrow:hover { gap: .55rem; }

/* ============================================================
   Tariff cards — with illustrative SVG, minimal
   ============================================================ */
.tariff-card {
    background: #fff;
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: 1.75rem 1.5rem 1.5rem;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: border-color .2s, box-shadow .2s, transform .2s;
}
.tariff-card:hover {
    border-color: var(--brand);
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.tariff-illustration {
    height: 90px;
    margin-bottom: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
.tariff-illustration svg { width: 100%; height: 100%; }

.tariff-name {
    font-size: 1.15rem;
    font-weight: 700;
    margin-bottom: 1rem;
    color: var(--ink);
}

.tariff-link {
    color: var(--ink-2);
    font-weight: 500;
    font-size: .92rem;
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    margin-top: auto;
    transition: color .15s, gap .2s;
}
.tariff-link:hover { color: var(--brand); gap: .55rem; }

.tariff-cta-row {
    margin-top: 2.5rem;
    text-align: center;
}
.tariff-cta {
    background: var(--brand);
    color: #fff;
    padding: 1rem 2rem;
    border-radius: 999px;
    font-weight: 600;
    font-size: 1rem;
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    transition: background .15s, transform .15s;
}
.tariff-cta:hover {
    background: var(--brand-dark);
    color: #fff;
    transform: translateY(-1px);
}

/* ============================================================
   Simulator · modern structured panel
   ============================================================ */
.simulator-section {
    position: relative;
    background: #111B31;
    color: #fff;
    padding: 5.5rem 0;
    overflow: hidden;
}
.simulator-section::before {
    content: "";
    position: absolute;
    inset: 0;
    background: transparent;
    background-size: 54px 54px;
    pointer-events: none;
}
.simulator-section .container {
    position: relative;
    z-index: 1;
}
.simulator-section .section-eyebrow { color: var(--accent); }
.section-title--light { color: #fff; }
.section-lead--light { color: rgba(255,255,255,.72); margin: 0; }

.simulator-layout {
    display: grid;
    gap: 2rem;
}
.simulator-header {
    max-width: 760px;
}
.simulator-header .section-lead {
    max-width: 640px;
}
.simulator-grid {
    display: grid;
    grid-template-columns: minmax(280px, .82fr) minmax(0, 1.18fr);
    gap: 1.25rem;
    align-items: stretch;
}
.simulator-panel {
    /* background: rgba(255,255,255,.075);
    border: 1px solid rgba(255,255,255,.13);
    border-radius: calc(var(--r-lg) + 6px);
    box-shadow: 0 24px 70px -32px rgba(0,0,0,.65); */
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}
.simulator-panel--quote {
    padding: 1.35rem;
}
.simulator-panel--calculator {
    padding: 1.35rem;
}
.simulator-panel-header {
    display: flex;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 1.25rem;
}
.simulator-step {
    width: 2.45rem;
    height: 2.45rem;
    flex: 0 0 2.45rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(255,255,255,.1);
    border: 1px solid rgba(255,255,255,.16);
    color: #fff;
    font-size: .78rem;
    font-weight: 800;
    letter-spacing: .04em;
}
.simulator-panel-title {
    color: #fff;
    font-size: 1.15rem;
    margin-bottom: .25rem;
}
.simulator-panel-text {
    color: rgba(255,255,255,.66);
    font-size: .92rem;
    margin: 0;
}

.quote-form {
    display: grid;
    gap: 1rem;
}
.quote-form-fields {
    display: grid;
    gap: .85rem;
}
.quote-form .form-control,
.quote-form .form-select {
    background: rgba(255,255,255,.07);
    border: 1px solid rgba(255,255,255,.15);
    color: #fff;
    border-radius: var(--r-md);
    font-family: var(--font);
    font-size: .95rem;
}
.quote-form .form-control:focus {
    background: rgba(255,255,255,.1);
    border-color: rgba(31,122,224,.9);
    color: #fff;
    box-shadow: 0 0 0 4px rgba(31,122,224,.22);
}
.quote-form .form-control::placeholder { color: transparent; }
.quote-form .form-floating > label { color: rgba(255,255,255,.56); }
.quote-form .form-floating > .form-control:focus ~ label,
.quote-form .form-floating > .form-control:not(:placeholder-shown) ~ label {
    color: #fff;
    background: rgba(17,27,49,.92);
    border-radius: 999px;
    padding: 0 .45rem;
    margin-left: .35rem;
    height: auto;
}
.quote-upload {
    position: relative;
    display: grid;
    gap: .55rem;
}
.quote-upload-label {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: .9rem;
    border-radius: var(--r-md);
    border: 1px dashed rgba(255,255,255,.24);
    background: rgba(255,255,255,.045);
    color: #fff;
    cursor: pointer;
    transition: border-color .15s, background .15s;
}
.quote-upload-label:hover {
    border-color: rgba(255,255,255,.42);
    background: rgba(255,255,255,.07);
}
.quote-upload-icon {
    width: 2.35rem;
    height: 2.35rem;
    flex: 0 0 2.35rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: rgba(243,146,0,.15);
    color: var(--accent);
}
.quote-upload-label strong,
.quote-upload-label small {
    display: block;
}
.quote-upload-label strong {
    font-size: .9rem;
    font-weight: 700;
}
.quote-upload-label small {
    color: rgba(255,255,255,.58);
    font-size: .78rem;
}
.quote-form input[type="file"] {
    padding: .7rem .85rem;
}
.quote-form input[type="file"]::file-selector-button {
    background: rgba(255,255,255,.12);
    color: #fff;
    border: none;
    padding: .42rem .85rem;
    border-radius: 999px;
    margin-right: .85rem;
    cursor: pointer;
    font-family: var(--font);
    font-weight: 700;
    font-size: .82rem;
}
.quote-form .form-label,
.quote-form .form-text { color: rgba(255,255,255,.65); font-size: .85rem; }

.simulator {
    /* background: rgba(255,255,255,.045);
    border: 1px solid rgba(255,255,255,.1); */
    border-radius: var(--r-lg);
    padding: 1rem;
    overflow: hidden;
}
.simulator-control-group {
    background: rgba(0,0,0,.18);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: var(--r-md);
    padding: 1rem;
}
.simulator-control-group + .simulator-control-group,
.simulator-controls {
    margin-top: .9rem;
}
.simulator-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .9rem;
}
.simulator-control-heading {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .75rem;
}
.simulator-control-kicker {
    color: rgba(255,255,255,.42);
    text-transform: uppercase;
    letter-spacing: .08em;
    font-size: .68rem;
    font-weight: 800;
}
.sim-label {
    display: block;
    color: #fff;
    text-transform: none;
    letter-spacing: 0;
    font-size: .92rem;
    font-weight: 700;
    margin: 0;
}

.simulator-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .45rem;
}
.sim-tab {
    min-height: 3.2rem;
    background: rgba(255,255,255,.065);
    color: rgba(255,255,255,.7);
    border: 1px solid rgba(255,255,255,.08);
    padding: .7rem .65rem;
    border-radius: var(--r-sm);
    font-family: var(--font);
    font-weight: 700;
    font-size: .85rem;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s, transform .15s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
}
.sim-tab i { font-size: 1em; }
.sim-tab:hover {
    color: #fff;
    border-color: rgba(255,255,255,.18);
    transform: translateY(-1px);
}
.sim-tab.active {
    background: var(--brand);
    color: #fff;
    border-color: var(--brand);
    box-shadow: 0 12px 28px -18px rgba(31,122,224,.9);
}
.sim-tab[data-tariff="green"].active {
    background: var(--c-green);
    border-color: var(--c-green);
}

.sim-power-pills {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: .4rem;
}
.power-pill {
    background: rgba(255,255,255,.065);
    color: rgba(255,255,255,.72);
    border: 1px solid rgba(255,255,255,.08);
    padding: .58rem .55rem;
    border-radius: 10px;
    font-family: var(--font);
    font-weight: 800;
    font-size: .82rem;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s, transform .15s;
}
.power-pill span,
.power-pill small {
    display: block;
    line-height: 1.1;
}
.power-pill small {
    font-weight: 700;
    opacity: .48;
    font-size: .65rem;
    margin-top: .18rem;
}
.power-pill:hover {
    background: rgba(255,255,255,.1);
    color: #fff;
    transform: translateY(-1px);
}
.power-pill.active {
    background: #fff;
    color: var(--ink);
    border-color: #fff;
}

.sim-hours {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .35rem;
    background: rgba(0,0,0,.22);
    padding: .35rem;
    border-radius: var(--r-sm);
}
.hours-pill {
    background: transparent;
    color: rgba(255,255,255,.62);
    border: none;
    padding: .68rem .45rem;
    border-radius: 9px;
    font-family: var(--font);
    font-weight: 800;
    cursor: pointer;
    font-size: .82rem;
    transition: background .15s, color .15s;
}
.hours-pill:hover { color: #fff; }
.hours-pill.active {
    background: rgba(255,255,255,.14);
    color: #fff;
}

.sim-result {
    display: grid;
    grid-template-columns: .85fr 1.15fr;
    gap: .75rem;
    margin-top: .9rem;
}
.sim-result-card {
    background: rgba(31,122,224,.13);
    border: 1px solid rgba(31,122,224,.25);
    border-radius: var(--r-md);
    padding: 1rem;
}
.sim-result-card--energy {
    background: rgba(255,255,255,.075);
    border-color: rgba(255,255,255,.12);
}
.sim-result-label {
    color: rgba(255,255,255,.62);
    font-weight: 700;
    font-size: .78rem;
    margin-bottom: .35rem;
}
.sim-result-value {
    font-size: clamp(1.45rem, 3vw, 2rem);
    font-weight: 800;
    color: #fff;
    line-height: 1;
}
.sim-result-value .sim-unit {
    font-size: .75rem;
    color: rgba(255,255,255,.5);
    font-weight: 700;
    margin-left: .25rem;
}
.sim-result-energy {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.energy-line {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    padding-top: .35rem;
    border-top: 1px solid rgba(255,255,255,.08);
}
.energy-line:first-child {
    padding-top: 0;
    border-top: 0;
}
.energy-line-label {
    font-size: .72rem;
    color: rgba(255,255,255,.5);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight: 700;
}
.energy-line-value {
    font-size: 1rem;
    font-weight: 800;
    color: #fff;
    white-space: nowrap;
}
.energy-line-value small {
    color: rgba(255,255,255,.48);
    font-size: .7em;
    font-weight: 700;
    margin-left: 2px;
}

@media (max-width: 991px) {
    .simulator-section { padding: 4rem 0; }
    .simulator-grid { grid-template-columns: 1fr; }
    .simulator-controls { grid-template-columns: 1fr; }
}

@media (max-width: 575px) {
    .simulator-section { padding: 3.25rem 0; }
    .simulator-panel,
    .simulator { padding: 1rem; }
    .simulator-panel-header { gap: .75rem; }
    .simulator-tabs,
    .sim-power-pills,
    .sim-result { grid-template-columns: 1fr; }
    .sim-hours { grid-template-columns: 1fr; }
}

/* ============================================================
   Advantages — clean two-col, no bullet icons
   ============================================================ */
.advantage-row {
    padding: 2.5rem 0;
}
.advantage-image {
    border-radius: var(--r-md);
    overflow: hidden;
    aspect-ratio: 4 / 3;
    background: var(--brand-soft);
}
.advantage-image img {
    width: 100%; height: 100%; object-fit: cover;
}

.advantage-content h3 {
    font-size: clamp(1.25rem, 2.4vw, 1.6rem);
    font-weight: 700;
    margin-bottom: 1rem;
}
.advantage-content p {
    color: var(--ink-3);
    font-size: .98rem;
    margin-bottom: .65rem;
}
.advantage-content p strong {
    color: var(--ink);
    font-weight: 700;
}

/* ============================================================
   Join page — clean white card
   ============================================================ */
.join-section { padding: 3.5rem 0 5rem; background: var(--bg-soft); }
.join-card {
    background: #fff;
    border-radius: var(--r-lg);
    padding: clamp(1.5rem, 3vw, 2.75rem);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--line);
}

.contact-note {
    background: var(--brand-soft);
    border-left: 3px solid var(--brand);
    border-radius: var(--r-sm);
    padding: .85rem 1.1rem;
    color: var(--ink-3);
    font-size: .9rem;
}
.contact-note i { color: var(--brand); margin-right: .4rem; }
.contact-note a { font-weight: 600; }

.form-floating > .form-control,
.form-floating > .form-select {
    border-radius: var(--r-sm);
    /* border: 1px solid var(--line); */
    padding-top: 1.35rem;
    transition: border-color .15s, box-shadow .15s;
}
.form-floating > .form-control:focus,
.form-floating > .form-select:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px rgba(31,122,224,.15);
}
.form-floating > label { color: var(--muted); font-weight: 500; }

.form-check-input:checked {
    background-color: var(--brand);
    border-color: var(--brand);
}
.form-check-input:focus {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px rgba(31,122,224,.15);
}

/* ============================================================
   Privacy page
   ============================================================ */
.privacy-section { padding: 3.5rem 0 5rem; background: var(--bg-soft); }
.privacy-card {
    background: #fff;
    border-radius: var(--r-lg);
    padding: clamp(1.5rem, 3vw, 2.75rem);
    box-shadow: var(--shadow-md);
    border: 1px solid var(--line);
}
.privacy-title { font-size: 1.6rem; margin-bottom: .75rem; }
.privacy-intro {
    color: var(--muted);
    font-size: .98rem;
    margin-bottom: 2rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--line);
}
.privacy-block { margin-bottom: 1.5rem; }
.privacy-block h4 {
    color: var(--brand);
    font-size: 1rem;
    margin-bottom: .5rem;
    font-weight: 700;
}
.privacy-block p { color: var(--ink-3); font-size: .95rem; }
.privacy-contact { padding-top: 1.25rem; border-top: 1px solid var(--line); }

/* ============================================================
   Footer — slim, single row on desktop
   ============================================================ */
.site-footer {
    background: var(--bg);
    color: var(--ink-3);
    padding: 1.75rem 0;
    border-top: 1px solid var(--line);
    font-size: .85rem;
}
.footer-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    text-align: center;
}
.footer-row > * { display: inline-flex; align-items: center; gap: .35rem; }
.footer-row a { color: var(--brand); font-weight: 500; }
.footer-row .footer-sep { color: var(--muted); opacity: .5; }
.footer-row img { display: inline-block; }

@media (max-width: 575px) {
    .site-footer { font-size: .8rem; }
    .footer-row { gap: .5rem .75rem; }
}

/* ============================================================
   Cookie banner — minimal pill
   ============================================================ */
.cookie-banner {
    position: fixed;
    bottom: 1.25rem;
    left: 1.25rem;
    right: 1.25rem;
    max-width: 640px;
    margin: 0 auto;
    background: rgba(15,22,35,.96);
    color: #fff;
    padding: .85rem 1.1rem;
    border-radius: var(--r-md);
    box-shadow: var(--shadow-lg);
    display: none;
    align-items: center;
    justify-content: space-between;
    gap: .85rem;
    z-index: 1090;
    font-size: .85rem;
}
.cookie-banner.show { display: flex; animation: slide-up .35s ease; }
@keyframes slide-up {
    from { transform: translateY(20px); opacity: 0; }
    to   { transform: translateY(0); opacity: 1; }
}
.cookie-banner a { color: #fff; text-decoration: underline; }

@media (max-width: 575px) {
    .cookie-banner {
        flex-direction: column;
        align-items: stretch;
        text-align: center;
        left: .5rem;
        right: .5rem;
        bottom: .5rem;
    }
}

/* ============================================================
   Toast
   ============================================================ */
.toast { background: var(--ink); border-radius: var(--r-sm); }
.toast.bg-success { background: #146C2D !important; }
.toast.bg-danger  { background: #B42318 !important; }

/* ============================================================
   Reveal animation — subtle
   ============================================================ */
[data-reveal] {
    opacity: 0;
    transform: translateY(16px);
    transition: opacity .6s ease, transform .6s ease;
}
[data-reveal].is-visible {
    opacity: 1;
    transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: .01ms !important;
        transition-duration: .01ms !important;
    }
    [data-reveal] { opacity: 1; transform: none; }
}
