/* ══════════════════════════════════════════════════════
   Fleao Design System — Warm, Community-First
   ══════════════════════════════════════════════════════ */

/* ── Design Tokens ── */
:root {
    /* Primary colors */
    --fleao-green: #5B8C5A;
    --fleao-green-light: #E8F0E8;
    --fleao-green-dark: #3D6B3C;
    --fleao-green-50: rgba(91, 140, 90, 0.08);
    --fleao-green-100: rgba(91, 140, 90, 0.12);
    --fleao-green-200: rgba(91, 140, 90, 0.2);

    /* Accent / CTA colors */
    --fleao-coral: #E8704A;
    --fleao-coral-light: #FDF0EB;
    --fleao-coral-dark: #D15A35;
    --fleao-coral-50: rgba(232, 112, 74, 0.08);

    /* Warm neutrals */
    --fleao-cream: #FAF8F4;
    --fleao-cream-dark: #F3F0EA;
    --fleao-white: #FFFFFF;
    --fleao-border: #E8E4DC;
    --fleao-border-light: #F0EDE6;

    /* Text */
    --fleao-text: #2C3E50;
    --fleao-text-secondary: #7F8C9B;
    --fleao-text-muted: #A0ADB8;

    /* Supplementary accents */
    --fleao-gold: #E9B949;
    --fleao-gold-light: #FEF7E0;
    --fleao-teal: #5BA3A3;
    --fleao-teal-light: #E6F3F3;
    --fleao-rose: #E07A8B;
    --fleao-rose-light: #FDF0F2;

    /* Shadows */
    --fleao-shadow-sm: 0 1px 2px rgba(44, 62, 80, 0.04);
    --fleao-shadow: 0 1px 3px rgba(44, 62, 80, 0.06), 0 4px 12px rgba(44, 62, 80, 0.04);
    --fleao-shadow-md: 0 2px 6px rgba(44, 62, 80, 0.06), 0 8px 24px rgba(44, 62, 80, 0.06);
    --fleao-shadow-lg: 0 4px 12px rgba(44, 62, 80, 0.08), 0 16px 40px rgba(44, 62, 80, 0.08);

    /* Border radius */
    --fleao-radius-sm: 8px;
    --fleao-radius: 12px;
    --fleao-radius-md: 14px;
    --fleao-radius-lg: 16px;
    --fleao-radius-xl: 20px;
    --fleao-radius-full: 9999px;

    /* Typography */
    --fleao-font: 'Nunito', sans-serif;
    --fleao-font-display: 'Nunito', sans-serif;

    /* Spacing */
    --fleao-container-max: 1200px;
    --fleao-container-sm: 900px;

    /* ─── Legacy variable overrides (cascade to unrewritten pages) ─── */
    --mint: var(--fleao-green);
    --mint-light: var(--fleao-green-light);
    --dark: var(--fleao-cream);
    --dark-card: var(--fleao-white);
    --gray-text: var(--fleao-text-secondary);
    --white: var(--fleao-text);
    --border: var(--fleao-border);
}

/* ── Base Reset ── */
*, *::before, *::after {
    box-sizing: border-box;
}

/* ── Typography ── */
body {
    font-family: var(--fleao-font);
    background: var(--fleao-cream);
    color: var(--fleao-text);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--fleao-font-display);
    color: var(--fleao-text);
    line-height: 1.2;
}

/* ── Logo Component ──
   Centralized: change once, updates everywhere.
   To swap to an image logo, replace .fleao-logo contents with <img>.
*/
.fleao-logo {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    color: var(--fleao-text);
    font-family: var(--fleao-font-display);
    font-size: 1.5rem;
    font-weight: 800;
    letter-spacing: -0.5px;
}
.fleao-logo-icon {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
}
.fleao-logo-text {
    color: var(--fleao-text);
}
/* Legacy .logo class override */
a.logo, .logo {
    font-family: var(--fleao-font-display) !important;
    font-size: 1.5rem !important;
    font-weight: 800 !important;
    color: var(--fleao-green) !important;
    letter-spacing: -0.5px !important;
    text-decoration: none !important;
}

/* ── Navbar ── */
.fleao-nav {
    padding: 16px 32px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    max-width: var(--fleao-container-max);
    margin: 0 auto;
    background: transparent;
}
.fleao-nav-links {
    display: flex;
    align-items: center;
    gap: 8px;
}
.fleao-nav-link {
    color: var(--fleao-text-secondary);
    text-decoration: none;
    font-size: 0.95rem;
    font-weight: 600;
    padding: 8px 16px;
    border-radius: var(--fleao-radius-full);
    transition: all 0.2s;
}
.fleao-nav-link:hover {
    color: var(--fleao-text);
    background: var(--fleao-cream-dark);
}
.fleao-nav-link.active {
    color: var(--fleao-text);
    background: var(--fleao-white);
    box-shadow: var(--fleao-shadow-sm);
}

/* ── Buttons ── */
.fleao-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    font-family: var(--fleao-font);
    font-weight: 700;
    font-size: 0.95rem;
    padding: 12px 24px;
    border-radius: var(--fleao-radius);
    border: none;
    cursor: pointer;
    text-decoration: none;
    transition: all 0.2s;
    line-height: 1.3;
}
.fleao-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* Primary coral CTA */
.fleao-btn-primary {
    background: var(--fleao-coral);
    color: white;
}
.fleao-btn-primary:hover {
    background: var(--fleao-coral-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(232, 112, 74, 0.3);
}

/* Green button */
.fleao-btn-green {
    background: var(--fleao-green);
    color: white;
}
.fleao-btn-green:hover {
    background: var(--fleao-green-dark);
    transform: translateY(-1px);
    box-shadow: 0 4px 14px rgba(91, 140, 90, 0.3);
}

/* Outline / secondary */
.fleao-btn-outline {
    background: var(--fleao-white);
    color: var(--fleao-text);
    border: 1.5px solid var(--fleao-border);
}
.fleao-btn-outline:hover {
    border-color: var(--fleao-text-secondary);
    background: var(--fleao-cream);
}

/* Small button */
.fleao-btn-sm {
    padding: 8px 18px;
    font-size: 0.85rem;
    border-radius: var(--fleao-radius-sm);
}

/* Large button */
.fleao-btn-lg {
    padding: 16px 36px;
    font-size: 1.1rem;
    border-radius: var(--fleao-radius-md);
}

/* Legacy .btn-mint override */
.btn-mint, button.btn-mint, a.btn-mint {
    background: var(--fleao-coral) !important;
    color: white !important;
    font-family: var(--fleao-font) !important;
    font-weight: 700 !important;
    border-radius: var(--fleao-radius) !important;
    border: none !important;
    transition: all 0.2s !important;
}
.btn-mint:hover, button.btn-mint:hover, a.btn-mint:hover {
    background: var(--fleao-coral-dark) !important;
    opacity: 1 !important;
}
.btn-mint-sm, a.btn-mint-sm {
    background: var(--fleao-coral) !important;
    color: white !important;
    font-family: var(--fleao-font) !important;
    font-weight: 700 !important;
    border-radius: var(--fleao-radius) !important;
    transition: all 0.2s !important;
}
.btn-mint-sm:hover, a.btn-mint-sm:hover {
    background: var(--fleao-coral-dark) !important;
    opacity: 1 !important;
}

/* Legacy .btn-buy override */
.btn-buy, button.btn-buy, a.btn-buy {
    background: var(--fleao-coral) !important;
    color: white !important;
    font-family: var(--fleao-font) !important;
    font-weight: 700 !important;
    border-radius: var(--fleao-radius-md) !important;
    border: none !important;
}
.btn-buy:hover, button.btn-buy:hover, a.btn-buy:hover {
    background: var(--fleao-coral-dark) !important;
    opacity: 1 !important;
    box-shadow: 0 8px 24px rgba(232, 112, 74, 0.25) !important;
}

/* ── Cards ── */
.fleao-card {
    background: var(--fleao-white);
    border: 1px solid var(--fleao-border);
    border-radius: var(--fleao-radius-lg);
    padding: 28px;
    box-shadow: var(--fleao-shadow);
    transition: all 0.2s;
}
.fleao-card:hover {
    box-shadow: var(--fleao-shadow-md);
}

/* Legacy .card override */
.card {
    background: var(--fleao-white) !important;
    border: 1px solid var(--fleao-border) !important;
    color: var(--fleao-text) !important;
    box-shadow: var(--fleao-shadow) !important;
}

/* ── Form Inputs ── */
.fleao-input {
    width: 100%;
    padding: 12px 16px;
    background: var(--fleao-white);
    border: 1.5px solid var(--fleao-border);
    border-radius: var(--fleao-radius);
    color: var(--fleao-text);
    font-family: var(--fleao-font);
    font-size: 0.95rem;
    outline: none;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.fleao-input:focus {
    border-color: var(--fleao-green);
    box-shadow: 0 0 0 3px var(--fleao-green-50);
}
.fleao-input::placeholder {
    color: var(--fleao-text-muted);
}

/* Legacy field input override */
.field input {
    background: var(--fleao-white) !important;
    border: 1.5px solid var(--fleao-border) !important;
    color: var(--fleao-text) !important;
    border-radius: var(--fleao-radius) !important;
    font-family: var(--fleao-font) !important;
}
.field input:focus {
    border-color: var(--fleao-green) !important;
    box-shadow: 0 0 0 3px var(--fleao-green-50) !important;
}
.field input::placeholder {
    color: var(--fleao-text-muted) !important;
}
.field label {
    color: var(--fleao-text) !important;
    font-family: var(--fleao-font) !important;
    font-weight: 600 !important;
}

/* ── Badges ── */
.fleao-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 5px 14px;
    border-radius: var(--fleao-radius-full);
}
.fleao-badge-green {
    background: var(--fleao-green-light);
    color: var(--fleao-green-dark);
}
.fleao-badge-coral {
    background: var(--fleao-coral-light);
    color: var(--fleao-coral);
}
.fleao-badge-gold {
    background: var(--fleao-gold-light);
    color: #B8941F;
}

/* ── Loading Spinner ── */
.fleao-spinner {
    display: inline-block;
    width: 32px;
    height: 32px;
    border: 3px solid var(--fleao-border);
    border-top-color: var(--fleao-green);
    border-radius: 50%;
    animation: fleao-spin 0.8s linear infinite;
}
@keyframes fleao-spin {
    to { transform: rotate(360deg); }
}

/* Legacy spinner override */
.loading-spinner {
    border: 3px solid var(--fleao-border) !important;
    border-top-color: var(--fleao-green) !important;
}

/* ── Footer ── */
.fleao-footer {
    text-align: center;
    padding: 40px 24px;
    border-top: 1px solid var(--fleao-border);
    max-width: var(--fleao-container-max);
    margin: 0 auto;
    color: var(--fleao-text-secondary);
    font-size: 0.85rem;
}
.fleao-footer a {
    color: var(--fleao-green);
    text-decoration: none;
    font-weight: 600;
}
.fleao-footer a:hover {
    text-decoration: underline;
}

/* Legacy footer override */
footer {
    border-top-color: var(--fleao-border) !important;
    color: var(--fleao-text-secondary) !important;
}
footer a {
    color: var(--fleao-green) !important;
    font-family: var(--fleao-font) !important;
}
footer p {
    color: var(--fleao-text-secondary) !important;
}
footer .logo-sm {
    color: var(--fleao-green) !important;
    font-family: var(--fleao-font-display) !important;
}

/* ── Utility Classes ── */
.fleao-container {
    max-width: var(--fleao-container-max);
    margin: 0 auto;
    padding-left: 24px;
    padding-right: 24px;
}
.fleao-container-sm {
    max-width: var(--fleao-container-sm);
    margin: 0 auto;
    padding-left: 24px;
    padding-right: 24px;
}
.fleao-section {
    padding: 64px 0;
}
.fleao-text-center {
    text-align: center;
}

/* ── Page-level legacy overrides ──
   These ensure partially-updated pages still look warm.
*/

/* Nav overrides */
nav {
    border-bottom-color: var(--fleao-border) !important;
}
.nav-tag {
    border-color: var(--fleao-border) !important;
    color: var(--fleao-text-secondary) !important;
}
.powered {
    color: var(--fleao-text-secondary) !important;
}

/* Deal card overrides */
.deal-card {
    background: var(--fleao-white) !important;
    border-color: var(--fleao-border) !important;
    box-shadow: var(--fleao-shadow-sm) !important;
}
.deal-card:hover {
    border-color: var(--fleao-green-200) !important;
    box-shadow: var(--fleao-shadow) !important;
}
.deal-content h3 {
    color: var(--fleao-text) !important;
}
.deal-content .deal-desc {
    color: var(--fleao-text-secondary) !important;
}
.deal-content .deal-discount {
    background: var(--fleao-green-light) !important;
    color: var(--fleao-green-dark) !important;
}
.deal-content .deal-type {
    background: var(--fleao-cream-dark) !important;
    color: var(--fleao-text-secondary) !important;
}

/* Book card overrides */
.book-card {
    background: var(--fleao-white) !important;
    border-color: var(--fleao-border) !important;
    box-shadow: var(--fleao-shadow-sm) !important;
}
.book-card:hover {
    border-color: var(--fleao-green-200) !important;
    box-shadow: var(--fleao-shadow) !important;
}
.book-org {
    background: var(--fleao-green-light) !important;
    color: var(--fleao-green-dark) !important;
}
.book-card h3 {
    color: var(--fleao-text) !important;
}
.book-card-link {
    color: var(--fleao-green) !important;
    border-top-color: var(--fleao-border) !important;
    font-family: var(--fleao-font) !important;
}
.book-meta-item {
    color: var(--fleao-text-secondary) !important;
}

/* Progress bar override */
.progress-fill {
    background: var(--fleao-green) !important;
}
.progress-bar {
    background: var(--fleao-cream-dark) !important;
}
.redeem-progress-count {
    color: var(--fleao-green) !important;
}
.redeem-progress-label {
    color: var(--fleao-text-secondary) !important;
}

/* Deal badges */
.deal-discount {
    background: var(--fleao-green-light) !important;
    color: var(--fleao-green-dark) !important;
}
.deal-status-badge.available {
    background: var(--fleao-green-light) !important;
    color: var(--fleao-green-dark) !important;
}
.deal-status-badge.used {
    background: var(--fleao-cream-dark) !important;
    color: var(--fleao-text-secondary) !important;
}
.redeemed-check {
    background: var(--fleao-green-light) !important;
}
.redeemed-check svg {
    color: var(--fleao-green) !important;
}

/* QR box */
.qr-box {
    border-radius: var(--fleao-radius) !important;
    box-shadow: var(--fleao-shadow-sm) !important;
}
.qr-label {
    color: var(--fleao-text-secondary) !important;
}
.qr-redeemed {
    background: var(--fleao-cream-dark) !important;
    border-color: var(--fleao-border) !important;
}
.qr-redeemed svg {
    color: var(--fleao-green) !important;
}
.qr-redeemed span {
    color: var(--fleao-text-secondary) !important;
}
.qr-locked {
    background: var(--fleao-cream-dark) !important;
    border-color: var(--fleao-border) !important;
}
.qr-locked svg {
    opacity: 0.4 !important;
    color: var(--fleao-text-secondary) !important;
}
.qr-locked span {
    color: var(--fleao-text-secondary) !important;
}

/* Locked deal overlay */
.deal-locked-overlay {
    background: rgba(250, 248, 244, 0.6) !important;
}
.deal-locked-overlay span {
    color: var(--fleao-text-secondary) !important;
}

/* Share section overrides */
.share-section {
    background: var(--fleao-white) !important;
    border-color: var(--fleao-border) !important;
    box-shadow: var(--fleao-shadow-sm) !important;
}
.share-label {
    color: var(--fleao-text-secondary) !important;
}
.share-divider {
    background: var(--fleao-border) !important;
}
.share-btn {
    border-color: var(--fleao-border) !important;
    color: var(--fleao-text) !important;
}
.share-btn:hover {
    border-color: var(--fleao-green-200) !important;
    background: var(--fleao-green-50) !important;
    color: var(--fleao-text) !important;
}
.share-btn.copied {
    border-color: var(--fleao-green) !important;
    color: var(--fleao-green) !important;
}
.share-sticky {
    background: var(--fleao-white) !important;
    border-top-color: var(--fleao-border) !important;
}
.share-icon-btn {
    color: var(--fleao-text) !important;
}
.share-icon-btn span {
    color: var(--fleao-text-secondary) !important;
}
.share-icon-btn:hover, .share-icon-btn:active {
    background: var(--fleao-green-50) !important;
}

/* Book header overrides */
.book-header {
    background: linear-gradient(135deg, var(--fleao-green-50), var(--fleao-cream-dark)) !important;
    border-color: var(--fleao-border) !important;
}
.book-header .org-badge {
    background: var(--fleao-green-light) !important;
    color: var(--fleao-green-dark) !important;
}
.book-header h1 {
    color: var(--fleao-text) !important;
}
.book-header .desc {
    color: var(--fleao-text-secondary) !important;
}
.deal-count-badge {
    color: var(--fleao-text-secondary) !important;
    border-color: var(--fleao-border) !important;
}
.access-badge {
    color: var(--fleao-green-dark) !important;
    background: var(--fleao-green-light) !important;
    border-color: var(--fleao-green-200) !important;
}

/* Price banner override */
.price-banner {
    background: linear-gradient(135deg, var(--fleao-green-50), var(--fleao-cream-dark)) !important;
    border-color: var(--fleao-border) !important;
}
.price-banner .price-text {
    color: var(--fleao-text) !important;
}
.price-banner .price-amount {
    color: var(--fleao-green-dark) !important;
}
.price-subtext {
    color: var(--fleao-text-secondary) !important;
}

/* Error message override */
.error-msg {
    background: rgba(224, 73, 73, 0.06) !important;
    border: 1px solid rgba(224, 73, 73, 0.2) !important;
    color: #D14949 !important;
    border-radius: var(--fleao-radius) !important;
}

/* Switch links (form pages) */
.switch {
    color: var(--fleao-text-secondary) !important;
}
.switch a {
    color: var(--fleao-green) !important;
}

/* Subtitle */
.subtitle {
    color: var(--fleao-text-secondary) !important;
}

/* Empty states */
.empty-icon {
    background: var(--fleao-green-50) !important;
    border-color: var(--fleao-green-100) !important;
}
.empty-icon svg {
    color: var(--fleao-green) !important;
}
.empty-state h2 {
    color: var(--fleao-text) !important;
}
.empty-state p {
    color: var(--fleao-text-secondary) !important;
}
.empty-state .browse-link {
    color: var(--fleao-green) !important;
    border-color: var(--fleao-green-200) !important;
    font-family: var(--fleao-font) !important;
}
.empty-state .browse-link:hover {
    background: var(--fleao-green-50) !important;
}

/* ── Org pages ── */
.org-more-link {
    background: var(--fleao-white) !important;
    border-color: var(--fleao-border) !important;
}
.org-more-link a {
    color: var(--fleao-text-secondary) !important;
}
.org-more-link a span {
    color: var(--fleao-green) !important;
}
.org-more-link a:hover {
    color: var(--fleao-green) !important;
}

/* Already purchased link */
.already-purchased {
    border-top-color: var(--fleao-border) !important;
}
.already-purchased a {
    color: var(--fleao-text-secondary) !important;
}
.already-purchased a span {
    color: var(--fleao-green) !important;
}

/* ── Page titles ── */
.page-title {
    color: var(--fleao-text) !important;
    font-family: var(--fleao-font-display) !important;
}

/* Supporter name / nav right */
.supporter-name {
    color: var(--fleao-text-secondary) !important;
}
.btn-logout {
    border-color: var(--fleao-border) !important;
    color: var(--fleao-text-secondary) !important;
    font-family: var(--fleao-font) !important;
}
.btn-logout:hover {
    color: var(--fleao-text) !important;
    border-color: var(--fleao-text-secondary) !important;
}

/* Show-only deal sections */
.show-screen-box {
    background: var(--fleao-green-50) !important;
    border-color: var(--fleao-green-200) !important;
}
.show-screen-box svg {
    color: var(--fleao-green) !important;
}
.show-screen-box .show-screen-text {
    color: var(--fleao-green-dark) !important;
}
.show-screen-instruction {
    color: var(--fleao-text-secondary) !important;
}

/* Flash animation override */
@keyframes flashGreen {
    0%   { border-color: var(--fleao-border); background: var(--fleao-white); }
    20%  { border-color: rgba(91, 140, 90, 0.5); background: rgba(91, 140, 90, 0.06); }
    80%  { border-color: rgba(91, 140, 90, 0.3); background: rgba(91, 140, 90, 0.03); }
    100% { border-color: var(--fleao-border); background: var(--fleao-white); }
}

/* Coming soon tooltip */
.coming-soon-msg {
    color: var(--fleao-coral) !important;
}

/* ── Responsive Helpers ── */
@media (max-width: 768px) {
    .fleao-nav {
        padding: 12px 16px;
    }
    .fleao-container, .fleao-container-sm {
        padding-left: 16px;
        padding-right: 16px;
    }
    .fleao-section {
        padding: 40px 0;
    }
}
