/* ==========================================================================
   Octa Calculator - Global CSS Design System
   ========================================================================== */

/* Inter is loaded via <link> in includes/head.php (with preconnect) so the
   font download starts in parallel with this stylesheet, not after it. */

:root {
    /* Color Palette */
    --color-primary: #635BFF;
    /* Stripe Indigo */
    --color-primary-hover: #5635EC;
    --color-primary-light: #F0F0FF;
    --color-secondary: #0A2540;
    /* Stripe Dark Navy */
    --color-secondary-hover: #1A3E5D;
    /* Two-color system: "accent" is an alias of primary so legacy
       references stay valid without introducing a second hue. */
    --color-accent: #635BFF;
    --color-accent-hover: #5635EC;
    --color-accent-light: #F0F0FF;

    /* Neutral Colors */
    --color-bg-base: #F7F9FC;
    --color-bg-card: #FFFFFF;
    --color-border: #E6E8EB;
    --color-border-hover: #C1C9D2;
    --color-text-main: #0A2540;
    --color-text-muted: #4F5B66;
    --color-text-light: #6A7C92;
    --color-success: #635BFF;
    /* aliases primary (two-color system) */
    --color-warning: #635BFF;
    --color-danger: #FF5E5B;
    /* functional error red stays for validation */

    /* Surfaces */
    --color-bg-header: rgba(255, 255, 255, 0.85);
    --color-bg-menu: rgba(255, 255, 255, 0.98);
    --color-ad-bg: #F1F5F9;
    --color-ad-border: #CBD5E1;
    --color-surface-inverse: #0A2540;
    /* dark panels (formula boxes) */

    /* Shadow Styles (Stripe-inspired smooth transition shadows) */
    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.02);
    --shadow-md: 0 4px 6px rgba(50, 50, 93, 0.11), 0 1px 3px rgba(0, 0, 0, 0.08);
    --shadow-lg: 0 15px 35px rgba(50, 50, 93, 0.1), 0 5px 15px rgba(0, 0, 0, 0.07);
    --shadow-xl: 0 30px 60px -12px rgba(50, 50, 93, 0.25), 0 18px 36px -18px rgba(0, 0, 0, 0.3);

    /* Layout Variables */
    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 16px;
    --transition-fast: 0.15s ease;
    --transition-normal: 0.25s ease;
    --header-height: 72px;

    /* Currency nav accent (distinct from site primary) */
    --nav-currency: #0D9488;
    --nav-currency-hover: #0F766E;
    --nav-currency-soft: rgba(13, 148, 136, 0.1);
    --nav-currency-border: rgba(13, 148, 136, 0.28);
    --nav-currency-ring: rgba(13, 148, 136, 0.45);

    /* Category atmosphere — ultra-light page wash + nav accents */
    --cat-construction-tint: rgba(245, 158, 11, 0.07);
    --cat-construction-accent: #D97706;
    --cat-construction-soft: rgba(245, 158, 11, 0.13);
    --cat-construction-border: rgba(245, 158, 11, 0.24);

    --cat-finance-tint: rgba(16, 185, 129, 0.07);
    --cat-finance-accent: #059669;
    --cat-finance-soft: rgba(16, 185, 129, 0.13);
    --cat-finance-border: rgba(16, 185, 129, 0.24);

    /* Footer (fixed palette — not tied to --color-secondary text token) */
    --footer-bg: #0A2540;
    --footer-fg: #F4F7FB;
    --footer-muted: rgba(228, 233, 242, 0.72);
    --footer-divider: rgba(255, 255, 255, 0.12);
    --footer-hover: #FFFFFF;

    color-scheme: light;
}

/* ==========================================================================
   Dark theme. Every component reads the tokens above, so overriding them
   here re-skins the whole site (including calculator internals, which use
   the same variables). Toggled via data-theme on <html> — see head.php
   (no-flash pre-script) and global.js (switcher).
   ========================================================================== */
[data-theme="dark"] {
    --color-primary: #7C77FF;
    --color-primary-hover: #928DFF;
    --color-primary-light: rgba(124, 119, 255, 0.14);
    --color-secondary: #E8EDF6;
    /* headings & emphasis text on dark */
    --color-secondary-hover: #FFFFFF;
    --color-accent: #7C77FF;
    --color-accent-hover: #928DFF;
    --color-accent-light: rgba(124, 119, 255, 0.14);

    --color-bg-base: #0C1322;
    --color-bg-card: #131C30;
    --color-border: #22304A;
    --color-border-hover: #3B4D6B;
    --color-text-main: #E4E9F2;
    --color-text-muted: #A7B2C5;
    --color-text-light: #7E8BA3;

    --color-bg-header: rgba(12, 19, 34, 0.85);
    --color-bg-menu: rgba(19, 28, 48, 0.98);
    --color-ad-bg: #101828;
    --color-ad-border: #2A3A57;
    --color-surface-inverse: #0E1930;

    --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.4), 0 1px 2px rgba(0, 0, 0, 0.3);
    --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.45), 0 1px 3px rgba(0, 0, 0, 0.35);
    --shadow-lg: 0 15px 35px rgba(0, 0, 0, 0.45), 0 5px 15px rgba(0, 0, 0, 0.35);
    --shadow-xl: 0 30px 60px -12px rgba(0, 0, 0, 0.6), 0 18px 36px -18px rgba(0, 0, 0, 0.5);

    --nav-currency: #2DD4BF;
    --nav-currency-hover: #5EEAD4;
    --nav-currency-soft: rgba(45, 212, 191, 0.14);
    --nav-currency-border: rgba(45, 212, 191, 0.32);
    --nav-currency-ring: rgba(45, 212, 191, 0.5);

    /* Category nav accents only in dark (no page/card tints) */
    --cat-construction-accent: #FBBF24;
    --cat-construction-soft: rgba(251, 191, 36, 0.12);

    --cat-finance-accent: #34D399;
    --cat-finance-soft: rgba(52, 211, 153, 0.12);

    --footer-bg: #060D18;
    --footer-fg: #E8EDF6;
    --footer-muted: #8B99B0;
    --footer-divider: rgba(255, 255, 255, 0.1);
    --footer-hover: #FFFFFF;

    color-scheme: dark;
}

/* Legacy inline styles use --color-secondary as a dark panel background
   (formula breakdown boxes, homepage feature card). In dark mode that token
   becomes a light heading color, so force those panels back to a dark
   surface until the inline styles are refactored. */
[data-theme="dark"] [style*="background-color: var(--color-secondary)"],
[data-theme="dark"] [style*="background: var(--color-secondary)"] {
    background-color: var(--color-surface-inverse) !important;
}

/* Smooth theme change on the big surfaces */
body,
.card,
.site-header,
.mega-menu,
.search-panel {
    transition: background-color 0.25s ease, border-color 0.25s ease;
}

/* Accessible focus ring everywhere */
:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius: 4px;
}

/* Base Reset */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    scroll-behavior: auto;
    font-size: 16px;
    -webkit-text-size-adjust: 100%;
    /* clip (not hidden) prevents horizontal scroll from off-screen elements
       like the off-canvas mobile menu, without breaking position: sticky. */
    overflow-x: clip;
}

body {
    background-color: var(--color-bg-base);
    color: var(--color-text-main);
    font-family: var(--font-sans);
    line-height: 1.5;
    letter-spacing: -0.01em;
    overflow-x: clip;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* Typography */
h1,
h2,
h3,
h4,
h5,
h6 {
    color: var(--color-secondary);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -0.03em;
    margin-bottom: 0.5rem;
}

h1 {
    font-size: 2.25rem;
}

h2 {
    font-size: 1.75rem;
    margin-top: 2rem;
}

h3 {
    font-size: 1.25rem;
}

p {
    margin-bottom: 1.25rem;
    color: var(--color-text-muted);
}

a {
    color: var(--color-primary);
    text-decoration: none;
    transition: color var(--transition-fast);
}

a:hover {
    color: var(--color-primary-hover);
}

/* Layout Containers */
.container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.header-shell {
    width: 100%;
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 clamp(0.75rem, 2vw, 1.25rem);
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) minmax(0, auto);
    grid-template-areas: "logo nav actions";
    align-items: center;
    gap: 0.5rem clamp(0.35rem, 1.2vw, 1.5rem);
    height: 100%;
}

/* Centered layout for reading content aligning with the main calculator width */
.educational-content,
.related-links-section {
    max-width: 100%;
    margin: 2.5rem 0;
    padding: 0;
}

.main-content {
    flex: 1;
    padding: 2.5rem 0;
    position: relative;
}

/* Category page atmosphere — light mode only */
[data-theme="light"] body[class^="cat-"] .main-content::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(165deg, var(--cat-tint) 0%, transparent 58%);
    pointer-events: none;
    z-index: 0;
}

[data-theme="light"] body[class^="cat-"] .main-content>.container {
    position: relative;
    z-index: 1;
}

[data-theme="light"] body.cat-construction {
    --cat-tint: var(--cat-construction-tint);
    --cat-accent: var(--cat-construction-accent);
    --cat-soft: var(--cat-construction-soft);
    --cat-border: var(--cat-construction-border);
}

[data-theme="light"] body.cat-finance {
    --cat-tint: var(--cat-finance-tint);
    --cat-accent: var(--cat-finance-accent);
    --cat-soft: var(--cat-finance-soft);
    --cat-border: var(--cat-finance-border);
}

/* Header & Navigation */
.site-header {
    background-color: var(--color-bg-header);
    border-bottom: 1px solid var(--color-border);
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 100;
    height: var(--header-height);
    display: flex;
    align-items: center;
    box-shadow: var(--shadow-sm);
    transition: background-color var(--transition-normal), border-color var(--transition-normal), box-shadow var(--transition-normal), transform 0.28s ease;
}

.site-header.transparent {
    background-color: color-mix(in srgb, var(--color-bg-header) 72%, transparent);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-color: transparent;
    box-shadow: none;
}

.site-header-spacer {
    height: var(--header-height);
    flex-shrink: 0;
}

.site-header.site-header--hidden {
    transform: translateY(-100%);
    pointer-events: none;
}

.logo-link {
    grid-area: logo;
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-width: 0;
    flex-shrink: 0;
}

.logo-mark {
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    display: block;
}

.logo-img {
    height: 40px;
    width: auto;
    object-fit: contain;
}

.brand-name {
    font-size: clamp(1rem, 0.75rem + 1.1vw, 1.35rem);
    font-weight: 800;
    color: var(--color-secondary);
    letter-spacing: -0.03em;
    white-space: nowrap;
}

.brand-name span {
    color: var(--color-primary);
}

.header-actions {
    display: flex;
    align-items: center;
    gap: clamp(0.35rem, 0.8vw, 0.65rem);
    justify-content: flex-end;
    min-width: 0;
    width: auto;
    max-width: 100%;
    flex-shrink: 1;
    grid-area: actions;
}

/* Search: full width on large screens, shrinks steadily as viewport narrows */
.header-search {
    container-type: inline-size;
    container-name: header-search;
    position: relative;
    flex: 0 1 auto;
    width: clamp(2.35rem, 25vw - 7rem, 16rem);
    min-width: 2.35rem;
    max-width: 16rem;
}

.header-search-field {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0.45rem;
    width: 100%;
    min-height: 2.35rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-bg-card);
    padding: 0.38rem 0.55rem 0.38rem 0.7rem;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast), padding 0.2s ease, border-radius 0.2s ease, gap 0.2s ease;
    font-family: var(--font-sans);
    cursor: pointer;
    text-align: left;
}

.header-search-trigger:hover {
    border-color: color-mix(in srgb, var(--color-primary) 35%, var(--color-border));
}

.header-search-live {
    position: absolute;
    inset: -1px;
    border-radius: 999px;
    pointer-events: none;
    opacity: 0.45;
    background: linear-gradient(90deg, var(--color-primary), #2DD4BF, #8B87FF, var(--color-primary));
    background-size: 300% 100%;
    animation: header-search-glow 2.8s linear infinite;
    mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
    mask-composite: exclude;
    -webkit-mask-composite: xor;
    padding: 1.5px;
}

.header-search.is-modal-open .header-search-live,
.header-search-trigger:focus-visible .header-search-live {
    opacity: 0.95;
    animation-duration: 1.6s;
}

.header-search-trigger:focus-visible {
    outline: none;
    border-color: color-mix(in srgb, var(--color-primary) 55%, var(--color-border));
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

@keyframes header-search-glow {
    0% {
        background-position: 0% 50%;
    }

    100% {
        background-position: 300% 50%;
    }
}

.header-search-icon {
    color: var(--color-text-light);
    flex-shrink: 0;
}

.header-search-placeholder {
    flex: 1;
    min-width: 0;
    font-size: 0.84rem;
    color: var(--color-text-light);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.header-search-kbd {
    display: none;
    flex-shrink: 0;
    font-size: 0.62rem;
    font-family: var(--font-sans);
    color: var(--color-text-light);
    border: 1px solid var(--color-border);
    border-radius: 4px;
    padding: 0.1rem 0.3rem;
    background: var(--color-bg-base);
    white-space: nowrap;
}

/* Search bar inner layout responds to its own width (fluid, not viewport steps) */
/* Search inner content follows the bar's live width */
@container header-search (min-width: 11rem) {
    .header-search-kbd {
        display: inline-block;
    }
}

@container header-search (max-width: 11rem) {
    .header-search-kbd {
        display: none !important;
    }
}

@container header-search (max-width: 6.75rem) {

    .header-search-placeholder,
    .header-search-live {
        display: none !important;
    }

    .header-search-field {
        justify-content: center;
        gap: 0;
        padding: 0;
        border-radius: 50%;
        aspect-ratio: 1;
    }

    .header-search-icon {
        margin: 0;
    }
}

.header-search-mobile {
    display: none;
}

/* Currency Converter nav item — nav-link style with animated icon ring */
.nav-link-currency-item {
    color: var(--nav-currency-hover);
}

.nav-link-currency-item:hover,
.nav-link-currency-item.active {
    color: var(--nav-currency);
    background: var(--nav-currency-soft);
}

.nav-currency-icon-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.35rem;
    height: 1.35rem;
    flex-shrink: 0;
}

.nav-currency-ring {
    position: absolute;
    inset: 0;
    border-radius: 50%;
    border: 1.5px solid var(--nav-currency-ring);
    animation: nav-cc-ring-pulse 2.4s ease-out infinite;
}

@keyframes nav-cc-ring-pulse {
    0% {
        transform: scale(0.92);
        opacity: 0.95;
    }

    70% {
        transform: scale(1.35);
        opacity: 0;
    }

    100% {
        transform: scale(1.35);
        opacity: 0;
    }
}

.nav-link-currency-item .nav-currency-icon {
    width: 0.85rem;
    height: 0.85rem;
    position: relative;
    z-index: 1;
    color: var(--nav-currency);
}

.nav-link-currency-item:hover .nav-currency-icon,
.nav-link-currency-item.active .nav-currency-icon {
    color: inherit;
}

.search-icon {
    color: var(--color-text-muted);
    cursor: pointer;
    padding: 0.5rem;
    border-radius: 50%;
    transition: background-color var(--transition-fast), color var(--transition-fast);
    display: flex;
    align-items: center;
    justify-content: center;
}

.search-icon:hover {
    background-color: var(--color-bg-base);
    color: var(--color-primary);
}

.main-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    overflow: hidden;
    grid-area: nav;
}

.nav-list {
    display: flex;
    list-style: none;
    gap: 0.55rem;
    align-items: center;
    flex-wrap: nowrap;
    min-width: 0;
}

.nav-link {
    color: var(--color-text-muted);
    font-weight: 500;
    font-size: clamp(0.78rem, 0.62rem + 0.55vw, 0.9rem);
    padding: 0.45rem clamp(0.45rem, 0.2rem + 0.5vw, 0.75rem);
    border-radius: var(--radius-sm);
    transition: all var(--transition-fast);
    display: flex;
    align-items: center;
    gap: 0.3rem;
    white-space: nowrap;
}

.nav-link:hover,
.nav-link.active {
    color: var(--color-primary);
    background-color: var(--color-primary-light);
}

/* Category nav accents — both themes (main menu items only) */
.nav-link-cat--construction:hover,
.nav-link-cat--construction.active {
    color: var(--cat-construction-accent);
    background-color: var(--cat-construction-soft);
}

.nav-link-cat--finance:hover,
.nav-link-cat--finance.active {
    color: var(--cat-finance-accent);
    background-color: var(--cat-finance-soft);
}

/* Mega menu + card tints — light mode only */
[data-theme="light"] .nav-cat-construction .menu-item-icon {
    background-color: var(--cat-construction-soft);
    color: var(--cat-construction-accent);
}

[data-theme="light"] .nav-cat-construction .menu-item-card:hover {
    background-color: var(--cat-construction-soft);
}

[data-theme="light"] .nav-cat-construction .mega-menu-footer a:hover {
    color: var(--cat-construction-accent);
}

[data-theme="light"] .nav-cat-finance .menu-item-icon {
    background-color: var(--cat-finance-soft);
    color: var(--cat-finance-accent);
}

[data-theme="light"] .nav-cat-finance .menu-item-card:hover {
    background-color: var(--cat-finance-soft);
}

[data-theme="light"] .nav-cat-finance .mega-menu-footer a:hover {
    color: var(--cat-finance-accent);
}

[data-theme="light"] body.cat-construction .main-content .calc-form-card,
[data-theme="light"] body.cat-construction .main-content .calc-tile {
    border-color: color-mix(in srgb, var(--cat-border) 35%, var(--color-border));
}

[data-theme="light"] body.cat-finance .main-content .calc-form-card,
[data-theme="light"] body.cat-finance .main-content .calc-tile {
    border-color: color-mix(in srgb, var(--cat-border) 35%, var(--color-border));
}

[data-theme="light"] body[class^="cat-"] .main-content .calc-form-card {
    box-shadow: var(--shadow-sm), inset 0 1px 0 var(--cat-soft);
}

/* Featured currency converter nav item */
.nav-item-currency {
    display: none;
}

/* Mega Menu Dropdown styling */
.nav-item-has-menu {
    position: static;
    /* Construction uses static for centering relative to viewport */
}

.nav-item-has-menu.narrow-item {
    position: relative;
    /* Narrow items use relative positioning */
}

.mega-menu-trigger::after {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    transition: transform var(--transition-fast);
    margin-left: 6px;
}

.nav-item-has-menu:hover .mega-menu-trigger::after {
    transform: rotate(-135deg) translateY(1px);
}

/* Floating mega menu panels (premium glassmorphism) */
.mega-menu {
    position: absolute;
    background-color: var(--color-bg-menu);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--radius-lg);
    box-shadow: 0 50px 100px -20px rgba(50, 50, 93, 0.12),
        0 30px 60px -30px rgba(0, 0, 0, 0.15),
        0 -18px 60px -10px rgba(0, 0, 0, 0.015);
    opacity: 0;
    visibility: hidden;
    transform: translateY(15px) translateX(-50%);
    transition: opacity var(--transition-normal), transform var(--transition-normal), visibility var(--transition-normal);
    z-index: 99;
}

.mega-menu-wide {
    top: var(--header-height);
    left: 50%;
    width: 960px;
    max-width: calc(100vw - 2rem);
}

.mega-menu-narrow {
    top: calc(100% + 8px);
    left: 50%;
    width: 340px;
}

.nav-item-has-menu:hover .mega-menu,
.nav-item-has-menu:focus-within .mega-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0) translateX(-50%);
}

/* Layout systems inside menu */
.mega-menu-grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem 0.75rem;
    padding: 1.5rem;
}

.mega-menu-grid-4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.5rem 0.75rem;
    padding: 1.5rem;
}

.mega-menu-list-vertical {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1rem;
}

/* Menu Item Card Styling (Stripe-Style) */
.menu-item-card {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    padding: 0.75rem 1rem;
    border-radius: var(--radius-md);
    transition: background-color var(--transition-fast), transform var(--transition-fast);
}

.menu-item-card:hover {
    background-color: var(--color-primary-light);
    transform: translateY(-1px);
}

.menu-item-icon {
    width: 36px;
    height: 36px;
    border-radius: var(--radius-sm);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform var(--transition-fast);
}

.menu-item-card:hover .menu-item-icon {
    transform: scale(1.08);
}

.menu-item-icon svg {
    width: 20px;
    height: 20px;
    stroke: currentColor;
    fill: none;
    stroke-width: 2;
}

.menu-item-text {
    display: flex;
    flex-direction: column;
    text-align: left;
}

.menu-item-title {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--color-secondary);
    line-height: 1.25;
    transition: color var(--transition-fast);
    margin-bottom: 2px;
}

.menu-item-card:hover .menu-item-title {
    color: var(--color-primary);
}

.menu-item-desc {
    font-size: 0.78rem;
    color: var(--color-text-light);
    line-height: 1.35;
}

/* Instant Search Palette */
.search-modal {
    position: fixed;
    inset: 0;
    z-index: 1000;
}

.search-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(10, 37, 64, 0.45);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
}

.search-panel {
    position: relative;
    max-width: 580px;
    margin: 12vh auto 0;
    background: var(--color-bg-card);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xl);
    overflow: hidden;
    animation: search-pop 0.16s ease;
}

@keyframes search-pop {
    from {
        opacity: 0;
        transform: translateY(8px) scale(0.98);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.search-input-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-muted);
}

.search-input-row input {
    flex: 1;
    border: none;
    outline: none;
    font-size: 1.05rem;
    font-family: var(--font-sans);
    color: var(--color-text-main);
    background: transparent;
}

.search-close {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--color-border);
    background: var(--color-bg-base);
    color: var(--color-text-light);
    font-size: 0.7rem;
    font-weight: 600;
    padding: 0.2rem 0.45rem;
    border-radius: 6px;
    cursor: pointer;
    flex-shrink: 0;
}

.search-close-icon {
    display: none;
}

.search-close:hover {
    color: var(--color-text-main);
    border-color: color-mix(in srgb, var(--color-primary) 35%, var(--color-border));
}

.search-results {
    max-height: 46vh;
    overflow-y: auto;
    padding: 0.5rem;
}

.search-group-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-light);
    padding: 0.5rem 0.75rem 0.25rem;
}

.search-result {
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas: "name cat" "desc cat";
    gap: 0 0.75rem;
    padding: 0.6rem 0.75rem;
    border-radius: var(--radius-sm);
    text-decoration: none;
}

.search-result:hover,
.search-result.active {
    background: var(--color-primary-light);
}

.search-result-name {
    grid-area: name;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--color-secondary);
}

.search-result-name mark {
    background: transparent;
    color: var(--color-primary);
}

.search-result-desc {
    grid-area: desc;
    font-size: 0.8rem;
    color: var(--color-text-light);
}

.search-result-cat {
    grid-area: cat;
    align-self: center;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--color-text-light);
    background: var(--color-bg-base);
    border: 1px solid var(--color-border);
    padding: 0.15rem 0.5rem;
    border-radius: 999px;
    white-space: nowrap;
}

.search-empty {
    padding: 1.25rem 0.75rem;
    color: var(--color-text-muted);
    font-size: 0.92rem;
    text-align: center;
}

.search-all-link {
    display: block;
    padding: 0.6rem 0.75rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-primary);
    text-align: center;
}

.search-footer {
    display: flex;
    gap: 1rem;
    padding: 0.6rem 1.25rem;
    border-top: 1px solid var(--color-border);
    font-size: 0.75rem;
    color: var(--color-text-light);
}

.search-footer-right {
    margin-left: auto;
}

.search-footer kbd {
    display: inline-block;
    border: 1px solid var(--color-border);
    background: var(--color-bg-base);
    border-radius: 4px;
    padding: 0.05rem 0.3rem;
    font-size: 0.7rem;
    font-family: var(--font-sans);
    margin-right: 0.15rem;
}

@media (max-width: 640px) {
    .search-panel {
        margin: 0;
        max-width: none;
        height: 100%;
        border-radius: 0;
    }

    .search-results {
        max-height: none;
        flex: 1;
    }

    .search-panel {
        display: flex;
        flex-direction: column;
    }

    .search-footer {
        display: none;
    }
}

/* Calculator directory tile grid (homepage, category hubs) */
.calc-tile-grid,
.tools-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.85rem;
    margin-bottom: 4rem;
}

@media (max-width: 1100px) {

    .calc-tile-grid,
    .tools-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {

    .calc-tile-grid,
    .tools-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {

    .calc-tile-grid,
    .tools-grid {
        grid-template-columns: 1fr;
    }
}

/* Calculator tile card */
.calc-tile {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    min-height: 8.75rem;
    padding: 1.1rem 1.15rem 1.15rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    background: var(--color-bg-card);
    text-decoration: none;
    color: inherit;
    box-shadow: var(--shadow-sm);
    transition:
        border-color var(--transition-fast),
        box-shadow var(--transition-normal),
        transform var(--transition-normal);
}

.calc-tile:hover {
    border-color: color-mix(in srgb, var(--color-primary) 32%, var(--color-border));
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.calc-tile-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.15rem;
}

.calc-tile-icon {
    width: 2.65rem;
    height: 2.65rem;
    border-radius: 11px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    background: var(--color-primary-light);
    color: var(--color-primary);
    border: 1px solid color-mix(in srgb, var(--color-primary) 14%, transparent);
    transition: transform var(--transition-fast), border-color var(--transition-fast);
}

.calc-tile:hover .calc-tile-icon {
    transform: scale(1.04);
    border-color: color-mix(in srgb, var(--color-primary) 28%, transparent);
}

.calc-tile-icon .icon,
.calc-tile-icon svg {
    width: 1.15rem;
    height: 1.15rem;
}

.calc-tile-title {
    display: block;
    font-size: 0.96rem;
    font-weight: 650;
    line-height: 1.3;
    color: var(--color-secondary);
    letter-spacing: -0.01em;
    transition: color var(--transition-fast);
}

.calc-tile:hover .calc-tile-title {
    color: var(--color-primary);
}

.calc-tile-desc {
    display: block;
    margin: 0;
    font-size: 0.83rem;
    line-height: 1.5;
    color: var(--color-text-muted);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.calc-tile-fav {
    margin-left: auto;
    opacity: 0.35;
}

.calc-tile:hover .calc-tile-fav,
.calc-tile .calc-tile-fav[aria-pressed="true"] {
    opacity: 1;
}

[data-theme="light"] body.cat-construction .calc-tile:hover {
    border-color: var(--cat-construction-border);
}

[data-theme="light"] body.cat-construction .calc-tile:hover .calc-tile-title {
    color: var(--cat-construction-accent);
}

[data-theme="light"] body.cat-finance .calc-tile:hover {
    border-color: var(--cat-finance-border);
}

[data-theme="light"] body.cat-finance .calc-tile:hover .calc-tile-title {
    color: var(--cat-finance-accent);
}

/* Related/Popular/Trending/Recents/Favorites grid (compact single-row items) */
.related-calc-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.65rem;
    margin-bottom: 4rem;
}

@media (max-width: 900px) {
    .related-calc-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 560px) {
    .related-calc-grid {
        grid-template-columns: 1fr;
    }
}

/* Premium Unified Modern Tool Card */
.tool-card-compact {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    padding: 1.5rem !important;
    text-decoration: none !important;
    background-color: var(--color-bg-card) !important;
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05), 0 2px 4px -1px rgba(0, 0, 0, 0.03) !important;
    transition: all var(--transition-normal) !important;
    position: relative;
    cursor: pointer;
    overflow: hidden;
    margin-bottom: 0 !important;
    text-align: left !important;
    min-height: 200px;
}

/* Related/Popular/Trending/Recents/Favorites Card (Single-line row layout) */
.related-calc-card {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 0.85rem !important;
    padding: 0.85rem 1.25rem !important;
    text-decoration: none !important;
    background-color: var(--color-bg-card) !important;
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-md) !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.02) !important;
    transition: all var(--transition-normal) !important;
    position: relative;
    cursor: pointer;
    overflow: hidden;
    margin-bottom: 0 !important;
    text-align: left !important;
    min-height: 0 !important;
}

/* Hover glow overlay */
.tool-card-compact::after,
.related-calc-card::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: radial-gradient(circle at 10% 10%, rgba(86, 53, 236, 0.05) 0%, transparent 60%);
    opacity: 0;
    transition: opacity var(--transition-normal);
    pointer-events: none;
    z-index: 1;
}

.tool-card-compact:hover::after,
.related-calc-card:hover::after {
    opacity: 1;
}

.tool-card-compact:hover {
    border-color: var(--color-primary) !important;
    transform: translateY(-3px) !important;
    box-shadow: 0 12px 20px -8px rgba(86, 53, 236, 0.15), 0 8px 12px -10px rgba(86, 53, 236, 0.1) !important;
}

.related-calc-card:hover {
    border-color: var(--color-primary) !important;
    transform: translateY(-2px) !important;
    box-shadow: 0 8px 15px -6px rgba(86, 53, 236, 0.12), 0 4px 6px -8px rgba(86, 53, 236, 0.08) !important;
}

/* Category card Header Row */
.tool-card-header {
    display: flex !important;
    align-items: center !important;
    gap: 0.75rem !important;
    margin-bottom: 0.75rem !important;
    z-index: 2;
}

/* Icon Badges */
.tool-card-icon,
.menu-item-icon {
    width: 36px !important;
    height: 36px !important;
    border-radius: var(--radius-sm) !important;
    background: linear-gradient(135deg, var(--color-primary-light), rgba(86, 53, 236, 0.03)) !important;
    border: 1px solid rgba(86, 53, 236, 0.12) !important;
    color: var(--color-primary) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    flex-shrink: 0 !important;
    transition: all var(--transition-normal) !important;
    padding: 0 !important;
    margin: 0 !important;
    z-index: 2;
}

/* Single-row icon badge scale adjustment */
.related-calc-card .menu-item-icon {
    width: 32px !important;
    height: 32px !important;
}

.tool-card-compact:hover .tool-card-icon,
.related-calc-card:hover .menu-item-icon {
    transform: scale(1.08) rotate(2deg) !important;
    border-color: var(--color-primary) !important;
    box-shadow: 0 0 10px rgba(86, 53, 236, 0.15) !important;
}

.tool-card-icon svg,
.menu-item-icon svg {
    width: 18px !important;
    height: 18px !important;
}

.related-calc-card .menu-item-icon svg {
    width: 16px !important;
    height: 16px !important;
}

/* Typography rules */
.tool-card-header h3 {
    display: inline-block !important;
    font-size: 1.05rem !important;
    font-weight: 700 !important;
    color: var(--color-secondary) !important;
    margin: 0 !important;
    line-height: 1.2 !important;
    transition: color var(--transition-fast) !important;
}

.related-calc-name {
    display: inline-block !important;
    font-size: 0.95rem !important;
    font-weight: 600 !important;
    color: var(--color-secondary) !important;
    margin: 0 !important;
    line-height: 1.2 !important;
    transition: color var(--transition-fast) !important;
    z-index: 2;
    flex: 1 !important;
    min-width: 0 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.tool-card-compact:hover .tool-card-header h3,
.related-calc-card:hover .related-calc-name {
    color: var(--color-primary) !important;
}

/* Text column: stack the name over its description (search results + any
   name+desc related card). The calculator-page variant has no text wrapper
   (name + arrow only), so it is untouched. */
.related-calc-text {
    display: flex !important;
    flex-direction: column !important;
    gap: 0.12rem !important;
    min-width: 0 !important;
    flex: 1 1 auto !important;
}

.related-calc-text .related-calc-name {
    flex: 0 0 auto !important;
    white-space: normal !important;
}

.related-calc-desc {
    display: block !important;
    font-size: 0.8rem !important;
    font-weight: 400 !important;
    color: var(--color-text-muted) !important;
    line-height: 1.4 !important;
}

/* Category card Description body */
.tool-card-compact p {
    display: block !important;
    font-size: 0.86rem !important;
    color: var(--color-text-muted) !important;
    line-height: 1.45 !important;
    margin-bottom: 1.25rem !important;
    z-index: 2;
}

/* Premium circular arrow button */
.tool-card-arrow-btn {
    width: 32px !important;
    height: 32px !important;
    border-radius: 50% !important;
    background-color: var(--color-primary-light) !important;
    color: var(--color-primary) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    transition: all var(--transition-normal) !important;
    font-size: 1.1rem !important;
    font-weight: bold !important;
    z-index: 2;
    flex-shrink: 0 !important;
}

/* Category card: push to bottom right */
.tool-card-compact .tool-card-arrow-btn {
    margin-top: auto !important;
    align-self: flex-end !important;
}

/* Related card: align vertically center on the right */
.related-calc-card .tool-card-arrow-btn {
    width: 26px !important;
    height: 26px !important;
    font-size: 0.95rem !important;
    margin-left: auto !important;
}

.tool-card-compact:hover .tool-card-arrow-btn,
.related-calc-card:hover .tool-card-arrow-btn {
    background-color: var(--color-primary) !important;
    color: #FFFFFF !important;
    transform: translateX(4px) !important;
}

/* "View all" footer row inside mega menus */
.mega-menu-footer {
    border-top: 1px solid var(--color-border);
    padding: 0.85rem 1.5rem;
    text-align: right;
}

.mega-menu-footer a {
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--color-primary);
}

.mega-menu-footer a:hover {
    color: var(--color-primary-hover);
}

/* Icon chips: one accent color everywhere (two-color design system).
   The per-calculator color names are kept in markup/DB but all map to the
   primary tint, so the UI never turns into a rainbow. */
.color-blue,
.color-indigo,
.color-teal,
.color-orange,
.color-green,
.color-brown,
.color-purple,
.color-pink,
.color-amber,
.color-slate,
.color-cyan,
.color-rose,
.color-emerald,
.color-violet,
.color-red,
.color-yellow {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

/* Mobile Nav Toggle & Menu Button */
.mobile-nav-toggle {
    display: none;
    background: none;
    border: none;
    cursor: pointer;
    padding: 0.5rem;
    z-index: 101;
}

.mobile-nav-toggle span {
    display: block;
    width: 24px;
    height: 2px;
    background-color: var(--color-secondary);
    margin: 5px 0;
    transition: transform var(--transition-fast), opacity var(--transition-fast);
}

.mobile-nav-toggle.active span:nth-child(1) {
    transform: rotate(45deg) translate(5px, 5px);
}

.mobile-nav-toggle.active span:nth-child(2) {
    opacity: 0;
}

.mobile-nav-toggle.active span:nth-child(3) {
    transform: rotate(-45deg) translate(5px, -5px);
}

/* Breadcrumbs Styling */
.breadcrumbs {
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--color-border);
    background-color: var(--color-bg-card);
    margin-bottom: 1.5rem;
}

.breadcrumbs-list {
    display: flex;
    flex-wrap: wrap;
    list-style: none;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.85rem;
    font-weight: 500;
}

.breadcrumbs-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--color-text-light);
}

.breadcrumbs-item a {
    color: var(--color-text-muted);
    transition: color var(--transition-fast);
}

.breadcrumbs-item a:hover {
    color: var(--color-primary);
}

.breadcrumbs-item::after {
    content: '/';
    color: var(--color-text-light);
}

.breadcrumbs-item:last-child {
    color: var(--color-text-muted);
    font-weight: 400;
}

.breadcrumbs-item:last-child::after {
    display: none;
}

/* General Layout Elements */
.hero-section {
    text-align: center;
    max-width: 800px;
    margin: 0 auto 3rem auto;
}

.hero-title {
    font-size: 2.75rem;
    letter-spacing: -0.03em;
    color: var(--color-secondary);
    margin-bottom: 1rem;
}

.hero-title span {
    color: var(--color-primary);
}

/* Theme switcher menu (in .header-actions) */
.theme-menu {
    position: relative;
    flex-shrink: 0;
}

.theme-toggle {
    color: var(--color-text-muted);
    cursor: pointer;
    padding: 0.5rem;
    border: none;
    background: transparent;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

.theme-toggle:hover {
    background-color: var(--color-bg-base);
    color: var(--color-primary);
}

.theme-icon {
    display: none;
}

[data-theme-pref="light"] .theme-toggle .theme-icon-light,
[data-theme-pref="dark"] .theme-toggle .theme-icon-dark,
[data-theme-pref="system"] .theme-toggle .theme-icon-system {
    display: block;
}

.theme-menu-panel {
    position: absolute;
    top: calc(100% + 0.4rem);
    right: 0;
    min-width: 10.5rem;
    padding: 0.4rem;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: var(--color-bg-card);
    box-shadow: var(--shadow-lg);
    z-index: 120;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.theme-menu-panel[hidden] {
    display: none;
}

.theme-menu-option {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    width: 100%;
    padding: 0.55rem 0.7rem;
    border: none;
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--color-text-muted);
    font-family: var(--font-sans);
    font-size: 0.86rem;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast);
}

.theme-menu-option:hover {
    background: var(--color-bg-base);
    color: var(--color-text-main);
}

.theme-menu-option.is-active {
    color: var(--color-primary);
    background: var(--color-primary-light);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 25%, var(--color-border));
}

.theme-option-icon {
    flex-shrink: 0;
}

.hero-subtitle {
    font-size: 1.15rem;
    color: var(--color-text-muted);
    font-weight: 400;
}

.grid-cols-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
}

.grid-cols-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2rem;
}

/* Cards & Components */
.card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 1.75rem;
    box-shadow: var(--shadow-sm);
    transition: transform var(--transition-fast), box-shadow var(--transition-fast);
}

.card-hover:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
    border-color: var(--color-border-hover);
}

/* Premium Preset Card Style */
.preset-card {
    padding: 1.1rem !important;
    cursor: pointer;
    border: 1px solid var(--color-border) !important;
    background-color: var(--color-bg-card) !important;
    transition: all var(--transition-fast) !important;
}

.preset-card:hover {
    border-color: var(--color-primary) !important;
    background-color: var(--color-primary-light) !important;
    transform: translateY(-2px) !important;
    box-shadow: var(--shadow-md) !important;
}

.calc-app-container {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-lg);
    overflow: visible;
    margin-bottom: 3rem;
    padding: 3.5rem;
}

@media (max-width: 1024px) {
    .calc-app-container {
        padding: 2.5rem;
    }
}

@media (max-width: 768px) {
    .calc-app-container {
        padding: 1.5rem;
    }
}

@media (max-width: 480px) {
    .calc-app-container {
        padding: 1rem;
    }
}


.calc-form-card {
    padding: 2.5rem 3rem;
}

@media (max-width: 768px) {
    .calc-form-card {
        padding: 1.5rem;
    }
}

@media (max-width: 480px) {
    .calc-form-card {
        padding: 1.25rem 1rem;
    }
}

@media (max-width: 480px) {
    .calc-form-card {
        padding: 1.25rem 1rem;
    }
}

.formula-card {
    background-color: var(--color-bg-base);
    border-left: 4px solid var(--color-primary);
    padding: 1.5rem;
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    margin: 1.5rem 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.formula-card-title {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--color-primary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.formula-card-equation {
    font-size: 1.25rem;
    font-weight: 800;
    color: var(--color-secondary);
    font-family: monospace;
}

.info-callout {
    background-color: var(--color-accent-light);
    border: 1px solid rgba(20, 184, 166, 0.2);
    border-left: 4px solid var(--color-accent);
    padding: 1.25rem;
    border-radius: var(--radius-sm);
    margin: 1.5rem 0;
    color: var(--color-secondary);
}

.table-modern {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin: 2rem 0;
    border-radius: var(--radius-md);
    overflow: hidden;
    border: 1px solid var(--color-border);
}

.table-modern th {
    background-color: var(--color-bg-base);
    color: var(--color-secondary);
    font-weight: 700;
    text-align: left;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
}

.table-modern td {
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-muted);
}

.table-modern tr:last-child td {
    border-bottom: none;
}

.table-modern tr:hover td {
    background-color: var(--color-bg-base);
}

/* Modern SaaS Input with Integrated Unit Dropdown */
.input-with-unit {
    position: relative;
    display: flex;
    align-items: center;
    background-color: var(--color-bg-base);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    transition: var(--transition-fast);
}

.input-with-unit:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

.input-with-unit input.form-control {
    border: none;
    background: transparent;
    box-shadow: none;
    padding-right: 5rem;
    /* Make space for the dropdown */
}

.input-with-unit input.form-control:focus {
    box-shadow: none;
    /* Let the wrapper handle the shadow */
}

.input-with-unit select.unit-select {
    position: absolute;
    right: 0;
    height: 100%;
    border: none;
    border-left: 1px solid var(--color-border);
    background-color: var(--color-bg-base);
    color: var(--color-text-muted);
    font-weight: 600;
    font-size: 0.85rem;
    padding: 0 2rem 0 0.75rem;
    appearance: none;
    cursor: pointer;
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    text-transform: uppercase;
    transition: all var(--transition-fast);
}

.input-with-unit select.unit-select:hover {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
    border-left-color: var(--color-primary);
}

.input-with-unit select.unit-select:focus {
    outline: none;
}

/* Custom dropdown arrow for the inline select */
.input-with-unit::after {
    content: "";
    position: absolute;
    right: 0.75rem;
    width: 0.4rem;
    height: 0.4rem;
    border-right: 2px solid var(--color-text-muted);
    border-bottom: 2px solid var(--color-text-muted);
    transform: translateY(-50%) rotate(45deg);
    top: 50%;
    pointer-events: none;
    transition: border-color var(--transition-fast);
}

.input-with-unit:focus-within::after {
    border-color: var(--color-primary);
}

/* Stripe Form Card & Groups */
.stripe-form-card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-sm);
    margin-bottom: 2rem;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.stripe-form-card:focus-within {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(99, 91, 255, 0.15), var(--shadow-md);
}

.stripe-form-row {
    display: flex;
    border-bottom: 1px solid var(--color-border);
}

.stripe-form-row:hover {
    position: relative;
    z-index: 500;
}

.stripe-form-row:last-child {
    border-bottom: none;
}

.stripe-form-field {
    flex: 1;
    padding: 1.15rem 1.25rem;
    display: flex;
    flex-direction: column;
    position: relative;
    background-color: transparent;
}

.stripe-form-field:hover {
    z-index: 1000;
}

.stripe-form-field:not(:last-child) {
    border-right: 1px solid var(--color-border);
}

.stripe-field-label {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
    margin-bottom: 0.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.stripe-field-input {
    border: none;
    outline: none;
    font-size: 0.95rem;
    font-weight: 500;
    font-family: var(--font-sans);
    color: var(--color-text-main);
    background-color: transparent;
    width: 100%;
    padding: 0.2rem 0;
    transition: color var(--transition-fast);
}

/* Chrome autofill styling fix */
.stripe-field-input:-webkit-autofill {
    -webkit-box-shadow: 0 0 0 30px var(--color-bg-card) inset !important;
}

/* Integrated Unit Selector inside Field */
.stripe-field-select-wrapper {
    display: flex;
    align-items: center;
    width: 100%;
}

.stripe-field-select-wrapper input.stripe-field-input {
    flex: 1;
    padding-right: 0.5rem;
}

.stripe-inline-unit-select {
    border: none;
    background-color: var(--color-bg-base);
    color: var(--color-text-light);
    font-size: 0.75rem;
    font-weight: 700;
    padding: 0.3rem 1.5rem 0.3rem 0.6rem;
    border-radius: 4px;
    cursor: pointer;
    appearance: none;
    text-transform: uppercase;
    transition: all var(--transition-fast);
    border: 1px solid var(--color-border);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236a7c92' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.45rem center;
    background-size: 0.65rem;
    margin-left: 0.25rem;
}

.stripe-inline-unit-select:hover {
    color: var(--color-primary);
    background-color: var(--color-primary-light);
    border-color: var(--color-primary);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23635bff' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
}

.stripe-inline-unit-select:focus {
    outline: none;
}

/* Stripe Currency Input Wrapper */
.stripe-currency-wrapper {
    display: flex;
    align-items: center;
    width: 100%;
}

.stripe-currency-symbol {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--color-text-light);
    margin-right: 0.4rem;
    user-select: none;
}

/* Forms & Inputs (Standalone fields) */
.form-group {
    margin-bottom: 1.5rem;
}

.form-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 700;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--color-text-light);
    margin-bottom: 0.5rem;
}

.form-control {
    width: 100%;
    padding: 0.8rem 1rem;
    font-size: 0.95rem;
    font-weight: 500;
    font-family: var(--font-sans);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    background-color: var(--color-bg-card);
    color: var(--color-text-main);
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.form-control:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px rgba(99, 91, 255, 0.15);
}

select.form-control {
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 1rem center;
    background-size: 1rem;
    padding-right: 2.5rem;
    cursor: pointer;
}

/* Buttons */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    font-weight: 600;
    font-size: 0.95rem;
    font-family: var(--font-sans);
    padding: 0.8rem 1.5rem;
    border-radius: var(--radius-sm);
    border: none;
    cursor: pointer;
    transition: all var(--transition-fast);
    text-align: center;
    user-select: none;
}

.btn-primary {
    background: var(--color-primary);
    color: #FFFFFF !important;
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);
}

.btn-primary:hover,
.btn-primary:focus {
    background: var(--color-primary-hover);
    color: #FFFFFF !important;
    box-shadow: 0 6px 12px rgba(50, 50, 93, 0.11), 0 3px 6px rgba(0, 0, 0, 0.08);
    transform: translateY(-1px);
}

.btn-primary:active {
    background: var(--color-primary-hover);
    color: #FFFFFF !important;
    transform: translateY(1px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

.btn-secondary {
    background-color: var(--color-secondary);
    color: #FFFFFF !important;
}

.btn-secondary:hover,
.btn-secondary:focus {
    background-color: var(--color-secondary-hover);
    color: #FFFFFF !important;
    transform: translateY(-1px);
}

.btn-secondary:active {
    color: #FFFFFF !important;
    transform: translateY(1px);
}

.btn-accent {
    background: var(--color-primary);
    color: #FFFFFF !important;
}

.btn-accent:hover,
.btn-accent:focus {
    background: var(--color-primary-hover);
    color: #FFFFFF !important;
    transform: translateY(-1px);
}

.btn-accent:active {
    color: #FFFFFF !important;
    transform: translateY(1px);
}

.btn-outline {
    background-color: transparent;
    border: 1px solid var(--color-border);
    color: var(--color-text-muted);
}

.btn-outline:hover,
.btn-outline:focus {
    background-color: var(--color-bg-base);
    border-color: var(--color-border-hover);
    color: var(--color-text-main) !important;
    transform: translateY(-1px);
}

.btn-outline:active {
    color: var(--color-text-main) !important;
    transform: translateY(1px);
}

/* Tooltip implementation */
.tooltip-trigger {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    background-color: var(--color-border-hover);
    color: var(--color-text-muted);
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 50%;
    cursor: help;
    position: relative;
    z-index: 10;
}

.tooltip-trigger:hover {
    z-index: 99999;
}

.tooltip-trigger::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: 125%;
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    width: 200px;
    background-color: var(--color-surface-inverse);
    color: #FFFFFF;
    border: 1px solid var(--color-border);
    text-align: center;
    padding: 0.5rem 0.75rem;
    border-radius: var(--radius-sm);
    font-size: 0.75rem;
    font-weight: 400;
    line-height: 1.4;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition: opacity var(--transition-fast), transform var(--transition-fast);
    box-shadow: var(--shadow-md);
    z-index: 9999;
}

.tooltip-trigger:hover::after {
    opacity: 1;
    visibility: visible;
    transform: translateX(-50%) translateY(0);
}

/* Accordion FAQs */
.faq-accordion {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-top: 1.5rem;
}

.faq-item {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.faq-question {
    width: 100%;
    background: none;
    border: none;
    padding: 1.25rem 1.5rem;
    text-align: left;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--color-secondary);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.faq-question::after {
    content: '+';
    font-size: 1.5rem;
    font-weight: 400;
    color: var(--color-primary);
    transition: transform var(--transition-fast);
}

.faq-item.active .faq-question::after {
    transform: rotate(45deg);
}

.faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height var(--transition-normal) ease-out;
}

.faq-answer-inner {
    padding: 0 1.5rem 1.25rem 1.5rem;
    color: var(--color-text-muted);
}

.faq-item.active .faq-answer {
    max-height: 500px;
}

/* Footer */
.site-footer {
    background-color: var(--footer-bg);
    color: var(--footer-fg);
    padding: 3.5rem 0 1.75rem;
    margin-top: auto;
    border-top: 1px solid var(--footer-divider);
}

.footer-shell {
    width: 100%;
    max-width: 1440px;
    margin: 0 auto;
    padding: 0 clamp(0.75rem, 2vw, 1.25rem);
}

.footer-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) repeat(3, minmax(0, 1fr));
    gap: clamp(1.5rem, 3vw, 2.5rem);
    margin-bottom: 2.5rem;
}

.footer-brand {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    min-width: 0;
}

.footer-logo-link {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
    width: fit-content;
}

.footer-logo-mark {
    width: 36px;
    height: 36px;
    flex-shrink: 0;
}

.footer-logo-text {
    font-size: 1.25rem;
    font-weight: 800;
    color: var(--footer-fg);
    letter-spacing: -0.03em;
    white-space: nowrap;
}

.footer-logo-text span {
    color: var(--color-primary);
}

.footer-description {
    color: var(--footer-muted);
    font-size: 0.88rem;
    line-height: 1.6;
    max-width: 22rem;
    margin: 0;
}

.footer-col {
    min-width: 0;
}

.footer-title {
    color: var(--footer-fg);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: 1rem;
}

.footer-links {
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    margin: 0;
    padding: 0;
}

.footer-link {
    color: var(--footer-muted);
    font-size: 0.88rem;
    font-weight: 500;
    transition: color var(--transition-fast);
    display: inline-block;
}

.footer-link:hover,
.footer-link:focus-visible {
    color: var(--footer-hover);
}

.footer-bottom {
    border-top: 1px solid var(--footer-divider);
    padding-top: 1.35rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
}

.footer-copyright {
    color: var(--footer-muted);
    font-size: 0.82rem;
    margin: 0;
}

.footer-theme {
    display: flex;
    align-items: center;
    gap: 0.65rem;
}

.footer-theme-label {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--footer-muted);
}

.footer-theme-segment {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    padding: 0.2rem;
    border-radius: 999px;
    border: 1px solid var(--footer-divider);
    background: color-mix(in srgb, var(--footer-bg) 70%, #000 30%);
}

.footer-theme-btn {
    border: none;
    background: transparent;
    color: var(--footer-muted);
    font-family: var(--font-sans);
    font-size: 0.78rem;
    font-weight: 600;
    padding: 0.38rem 0.72rem;
    border-radius: 999px;
    cursor: pointer;
    transition: background-color var(--transition-fast), color var(--transition-fast);
    white-space: nowrap;
}

.footer-theme-btn:hover {
    color: var(--footer-fg);
}

.footer-theme-btn.is-active {
    background: color-mix(in srgb, var(--color-primary) 22%, transparent);
    color: var(--footer-fg);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 35%, transparent);
}

.footer-legal {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem 1.15rem;
}

.footer-legal-link {
    color: var(--footer-muted);
    font-size: 0.82rem;
    font-weight: 500;
    transition: color var(--transition-fast);
}

.footer-legal-link:hover,
.footer-legal-link:focus-visible {
    color: var(--footer-hover);
}

@media (max-width: 1024px) {
    .footer-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .footer-brand {
        grid-column: 1 / -1;
    }
}

@media (max-width: 600px) {
    .site-footer {
        padding: 2.5rem 0 1.5rem;
    }

    .footer-grid {
        grid-template-columns: 1fr;
        gap: 1.75rem;
        margin-bottom: 2rem;
    }

    .footer-bottom {
        flex-direction: column;
        align-items: stretch;
        gap: 1.1rem;
    }

    .footer-theme {
        flex-direction: column;
        align-items: stretch;
        gap: 0.45rem;
    }

    .footer-theme-segment {
        width: 100%;
        justify-content: stretch;
    }

    .footer-theme-btn {
        flex: 1;
        text-align: center;
    }

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

/* Keyboard Accessibility - Focus outlines */
button:focus-visible,
a:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: 3px solid var(--color-accent);
    outline-offset: 2px;
}

/* Responsive Styles */
@media (max-width: 950px) {
    :root {
        --header-height: 64px;
    }

    .header-shell {
        gap: 0.65rem 1rem;
        padding: 0 1rem;
    }

    .site-header {
        height: 64px;
    }

    .site-header-spacer {
        height: 64px;
    }

    .header-shell {
        grid-template-columns: minmax(0, 1fr) auto auto;
        grid-template-areas: "logo actions toggle";
        gap: 0.65rem;
        padding: 0 1rem;
    }

    .mobile-nav-toggle {
        display: block;
        grid-area: toggle;
    }

    .header-actions {
        grid-area: actions;
        gap: 0.45rem;
    }

    .logo-link {
        grid-area: logo;
    }

    .main-nav {
        grid-column: 1 / -1;
        grid-area: unset;
        position: fixed;
        top: var(--header-height);
        left: -100%;
        width: 100%;
        height: calc(100vh - var(--header-height));
        background-color: var(--color-bg-card);
        flex-direction: column;
        align-items: stretch;
        padding: 1.25rem 1.5rem 2rem;
        gap: 1.25rem;
        transition: left var(--transition-normal);
        overflow-y: auto;
        box-shadow: var(--shadow-lg);
        z-index: 101;
        justify-content: flex-start;
    }

    .main-nav.active {
        left: 0;
    }

    .nav-list {
        flex-direction: column;
        width: 100%;
        gap: 0.35rem;
        align-items: stretch;
    }

    .nav-item-has-menu {
        width: 100%;
        position: relative;
    }

    .nav-link {
        width: 100%;
        justify-content: flex-start;
    }

    .mega-menu {
        position: static !important;
        box-shadow: none !important;
        max-height: 0;
        overflow: hidden;
        opacity: 1 !important;
        visibility: visible !important;
        transform: none !important;
        border: none !important;
        background-color: transparent !important;
        transition: max-height var(--transition-normal) ease-in-out;
    }

    .mega-menu-wide,
    .mega-menu-narrow {
        width: 100% !important;
        max-width: 100% !important;
        padding: 0 !important;
    }

    .nav-item-has-menu.active .mega-menu {
        max-height: 1200px;
    }

    .mega-menu-grid-3,
    .mega-menu-grid-4 {
        grid-template-columns: 1fr !important;
        padding: 0.5rem 0 !important;
        gap: 0.5rem !important;
    }

    .mega-menu-list-vertical {
        padding: 0.5rem 0 !important;
        gap: 0.5rem !important;
    }

    .menu-item-card {
        padding: 0.6rem 0.5rem !important;
        border-radius: var(--radius-sm) !important;
    }

    .menu-item-card:hover {
        background-color: var(--color-bg-base) !important;
    }

    .header-search {
        flex: 0 0 2.35rem;
        width: 2.35rem;
        min-width: 2.35rem;
        max-width: 2.35rem;
    }

    .header-search-field {
        justify-content: center;
        gap: 0;
        padding: 0;
        border-radius: 50%;
        aspect-ratio: 1;
    }

    .header-search-placeholder,
    .header-search-kbd,
    .header-search-live {
        display: none !important;
    }

    .header-search-icon {
        margin: 0;
    }

    .search-close {
        border: none;
        background: transparent;
        padding: 0.35rem;
        color: var(--color-text-muted);
    }

    .search-close-label {
        display: none;
    }

    .search-close-icon {
        display: block;
    }
}

@media (max-width: 1024px) {
    .mega-menu-container {
        grid-template-columns: repeat(3, 1fr);
        padding: 2rem 1.5rem;
    }

    .grid-cols-3 {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 768px) {
    .grid-cols-3 {
        grid-template-columns: 1fr;
    }

    .grid-cols-2 {
        grid-template-columns: 1fr;
    }

    .hero-title {
        font-size: 2.25rem;
    }
}

/* Inline SVG Icon styling system */
.icon {
    display: inline-block;
    width: 18px;
    height: 18px;
    stroke: currentColor;
    fill: none;
    stroke-width: 2;
    stroke-linecap: round;
    stroke-linejoin: round;
    vertical-align: middle;
}

.icon-sm {
    width: 14px;
    height: 14px;
    stroke-width: 2;
}

.icon-lg {
    width: 24px;
    height: 24px;
    stroke-width: 1.75;
}

/* ==========================================================================
   Calculator V2 component system.
   Every calculator form shares these classes (stripe-form-field,
   stripe-field-input, calc-layout-grid, results-grid, result-metric-card),
   so styling them here — with enough specificity to beat the per-calculator
   stylesheets — gives all 19 tools one consistent, modern layout:
   bigger touch targets, clean input groups, a hero result number, and a
   sticky results panel on desktop.
   ========================================================================== */

/* Two-panel layout: inputs left, live results right (sticky) */
.main-content .calc-layout-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    gap: 2rem;
    align-items: start;
}

.main-content .calc-results-panel {
    position: sticky;
    top: calc(var(--header-height) + 1.5rem);
}

@media (max-width: 1024px) {
    .main-content .calc-layout-grid {
        grid-template-columns: 1fr;
    }

    .main-content .calc-results-panel {
        position: static;
    }
}

/* Input panel card */
.main-content .calc-form-card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 1.75rem;
    box-shadow: var(--shadow-sm);
}

/* Fields: generous touch targets, calm borders, clear focus */
.main-content .stripe-form-field {
    margin-bottom: 0.25rem;
}

.main-content .stripe-form-field .stripe-field-label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-text-muted);
    margin-bottom: 0.45rem;
}

.main-content .stripe-form-field .stripe-field-input {
    width: 100%;
    height: 50px;
    padding: 0 1rem;
    font-size: 1.02rem;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--color-text-main);
    background-color: var(--color-bg-card);
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    appearance: none;
    -webkit-appearance: none;
}

.main-content .stripe-form-field select.stripe-field-input {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236a7c92' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.9rem center;
    padding-right: 2.4rem;
    cursor: pointer;
}

.main-content .stripe-form-field .stripe-field-input:hover {
    border-color: var(--color-border-hover);
}

.main-content .stripe-form-field .stripe-field-input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

/* Inline unit selector attached to an input */
.main-content .stripe-field-select-wrapper {
    display: flex;
    align-items: stretch;
}

.main-content .stripe-field-select-wrapper .stripe-field-input {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
    border-right-width: 0;
    min-width: 0;
    flex: 1;
}

.main-content .stripe-field-select-wrapper .stripe-inline-unit-select {
    height: 50px;
    padding: 0 1.9rem 0 0.75rem;
    font-size: 0.9rem;
    font-weight: 600;
    font-family: var(--font-sans);
    color: var(--color-text-muted);
    background-color: var(--color-bg-base);
    border: 1.5px solid var(--color-border);
    border-top-right-radius: 10px;
    border-bottom-right-radius: 10px;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236a7c92' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.55rem center;
}

/* --------------------------------------------------------------------------
   Results: calculator-platform hierarchy, not a dashboard.
   One HERO number (the first metric card) followed by clean label/value
   rows. Legacy markup carries inline styles, so the design system uses
   !important here deliberately — it is the single source of truth.
   -------------------------------------------------------------------------- */
.main-content .results-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0;
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-lg);
    padding: 0.5rem 1.4rem 0.9rem;
    box-shadow: var(--shadow-sm);
}

.main-content .results-grid .result-metric-card {
    grid-column: 1 / -1 !important;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 1rem;
    align-items: center;
    background: transparent !important;
    border: none !important;
    border-bottom: 1px solid var(--color-border) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    padding: 0.95rem 0 !important;
    transform: none !important;
}

.main-content .results-grid .result-metric-card:last-child {
    border-bottom: none !important;
}

.main-content .results-grid .result-metric-card::before {
    display: none !important;
}

.main-content .results-grid .result-metric-card .result-metric-icon {
    display: none !important;
}

.main-content .results-grid .result-metric-card .result-number {
    font-size: 1.15rem !important;
    font-weight: 700 !important;
    color: var(--color-secondary) !important;
    line-height: 1.25 !important;
}

.main-content .results-grid .result-metric-card .result-metric-desc {
    grid-column: 1;
    font-size: 0.78rem !important;
    color: var(--color-text-light) !important;
    margin: 0.1rem 0 0 !important;
}

/* The first metric is the HERO: big, primary, centered block */
.main-content .results-grid .result-metric-card:first-child {
    display: block;
    text-align: left;
    padding: 1.4rem 0 1.2rem !important;
}

.main-content .results-grid .result-metric-card:first-child .result-number {
    font-size: 2.75rem !important;
    font-weight: 800 !important;
    letter-spacing: -0.03em;
    color: var(--color-primary) !important;
    line-height: 1.1 !important;
    display: block;
    margin-top: 0.3rem;
}

/* "View results" jump link: only useful on mobile where results stack */
.main-content .view-results-btn {
    display: none !important;
}

@media (max-width: 1024px) {
    .main-content .view-results-btn {
        display: inline-flex !important;
        align-items: center;
        gap: 0.3rem;
        font-size: 0.78rem;
        font-weight: 600;
        color: var(--color-primary);
    }
}

/* --------------------------------------------------------------------------
   Collapsible breakdown accordion — shared across all calculators.
   Matches the reference style on the Concrete Calculator.
   -------------------------------------------------------------------------- */
.breakdown-details {
    width: 100%;
}

.breakdown-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    cursor: pointer;
    font-weight: 600;
    font-size: 0.92rem;
    color: var(--color-secondary);
    user-select: none;
    list-style: none;
    padding: 0;
}

.breakdown-summary::-webkit-details-marker {
    display: none;
}

.breakdown-summary svg.accordion-arrow {
    flex-shrink: 0;
    transition: transform var(--transition-fast);
}

.breakdown-details[open] .breakdown-summary svg.accordion-arrow {
    transform: rotate(180deg);
}

.breakdown-content {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--color-border);
    animation: fadeIn 0.25s ease-in-out;
}

/* --------------------------------------------------------------------------
   Formula / "how it was calculated" panels: light and readable, not a
   developer console. Kills the dark monospace boxes and window dots.
   -------------------------------------------------------------------------- */
.main-content .formula-card,
.main-content .breakdown-content,
.main-content #calculation-formula-breakdown,
.calc-app-container [style*="background-color: var(--color-secondary)"],
.educational-content [style*="background-color: var(--color-secondary)"] {
    background: var(--color-bg-base) !important;
    color: var(--color-text-main) !important;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 1.5rem !important;
}

.main-content .formula-card::before {
    display: none !important;
}

.main-content .formula-card-title {
    color: var(--color-text-light) !important;
}

.main-content .formula-card-equation {
    color: var(--color-primary) !important;
}

.main-content .formula-card-equation span.operator,
.main-content .formula-card-equation span.variable {
    color: var(--color-text-main) !important;
}

/* promoted global math formula elements */
.math-formula {
    font-family: monospace;
    font-weight: 700;
    color: var(--color-secondary) !important;
    background-color: var(--color-bg-card);
    padding: 0.35rem 0.65rem;
    border-radius: var(--radius-sm);
    display: inline-block;
    margin: 0.25rem 0 0.75rem 0;
    border: 1px solid var(--color-border);
}

#calculation-formula-breakdown .math-formula,
#calculation-formula-breakdown .math-formula * {
    color: var(--color-secondary) !important;
}

/* --------------------------------------------------------------------------
   Legacy input family (.form-group/.form-label/.form-control) gets the
   exact same treatment as the stripe-* family — one input component.
   -------------------------------------------------------------------------- */
.main-content .form-group {
    margin-bottom: 1.1rem;
}

.main-content .form-group .form-label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--color-text-muted);
    margin-bottom: 0.45rem;
}

.main-content .form-group .form-control {
    width: 100%;
    height: 50px;
    padding: 0 1rem;
    font-size: 1.02rem;
    font-family: var(--font-sans);
    font-weight: 500;
    color: var(--color-text-main);
    background-color: var(--color-bg-card);
    border: 1.5px solid var(--color-border);
    border-radius: 10px;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    appearance: none;
    -webkit-appearance: none;
}

.main-content .form-group select.form-control {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%236a7c92' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.9rem center;
    padding-right: 2.4rem;
    cursor: pointer;
}

.main-content .form-group .form-control:hover {
    border-color: var(--color-border-hover);
}

.main-content .form-group .form-control:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 0 3px var(--color-primary-light);
}

/* Preset chips */
.main-content .presets-card-container,
.main-content #preset-buttons-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(175px, 1fr));
    gap: 0.9rem;
}

.main-content [data-preset] {
    cursor: pointer;
    user-select: none;
    transition: border-color var(--transition-fast), transform var(--transition-fast), box-shadow var(--transition-fast);
}

.main-content [data-preset]:hover {
    transform: translateY(-2px);
    border-color: var(--color-border-hover);
}

.main-content [data-preset].active {
    border-color: var(--color-primary) !important;
    background-color: var(--color-primary-light);
}

/* Helper text below input fields */
.field-help-text {
    font-size: 0.8rem;
    color: var(--color-text-muted);
    margin-top: 0.35rem;
    margin-bottom: 0;
    line-height: 1.4;
    font-weight: 400;
}

/* Responsive Calculator Layout */
.calc-layout-grid {
    display: grid;
    grid-template-columns: 7fr 5fr;
    gap: 2rem;
    margin-bottom: 4rem;
    align-items: start;
}

@media (max-width: 992px) {
    .calc-layout-grid {
        grid-template-columns: 1fr;
    }
}

/* Compact Spec/Guide List for SEO/educational content */
.compact-guide-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin: 1.5rem 0 2.5rem 0;
}

.compact-guide-item {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 1rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    transition: background-color var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);
}

.compact-guide-item:hover {
    background-color: var(--color-bg-base);
    border-color: var(--color-border-hover);
    transform: translateX(4px);
}

.compact-guide-label {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--color-primary);
    background-color: var(--color-primary-light);
    padding: 0.4rem 0.85rem;
    border-radius: 4px;
    white-space: nowrap;
    min-width: 160px;
    text-align: center;
    display: inline-block;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    border: 1px solid rgba(99, 91, 255, 0.12);
}

.compact-guide-desc {
    font-size: 0.9rem;
    color: var(--color-text-muted);
    margin: 0;
    line-height: 1.5;
    flex: 1;
}

@media (max-width: 640px) {
    .compact-guide-item {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
        padding: 1rem;
    }

    .compact-guide-item:hover {
        transform: none;
    }

    .compact-guide-label {
        min-width: auto;
        width: 100%;
        text-align: left;
    }
}

/* Premium Stripe-Style Dashboard Results Cards */
.results-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1rem;
}

@media (max-width: 480px) {
    .results-grid {
        grid-template-columns: 1fr !important;
    }
}

.result-metric-card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 1.25rem 1.5rem;
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0.75rem;
    position: relative;
    overflow: hidden;
    transition: transform var(--transition-fast), box-shadow var(--transition-fast), border-color var(--transition-fast);
}

/* Accent Indigo Bar at the top of the Card */
.result-metric-card::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background-color: var(--color-primary);
    opacity: 0.8;
}

/* One accent color for every metric card (two-color design system) */
.result-metric-card.card-volume::before,
.result-metric-card.card-bags::before,
.result-metric-card.card-cost::before,
.result-metric-card.card-trucks::before {
    background-color: var(--color-primary);
}

.result-metric-card:hover {
    transform: translateY(-4px);
    border-color: rgba(99, 91, 255, 0.3);
    box-shadow: 0 15px 35px rgba(50, 50, 93, 0.08), 0 5px 15px rgba(0, 0, 0, 0.05);
}

.result-metric-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    transition: transform var(--transition-fast);
}

.result-metric-card:hover .result-metric-icon {
    transform: scale(1.1);
}

.card-volume .result-metric-icon {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

.card-bags .result-metric-icon {
    background-color: var(--color-accent-light);
    color: var(--color-accent);
}

.card-cost .result-metric-icon {
    background-color: var(--color-accent-light);
    color: var(--color-accent);
}

.card-trucks .result-metric-icon {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

.result-metric-desc {
    font-size: 0.8rem;
    color: var(--color-text-light);
    line-height: 1.4;
    border-top: 1px solid var(--color-border);
    padding-top: 0.75rem;
    margin-top: 0.25rem;
}

.result-number {
    font-family: var(--font-sans);
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
}

/* Stripe-style Developer Console for Formulas */
.formula-card {
    background-color: #0A2540;
    /* Stripe Dark Navy */
    border-radius: var(--radius-sm);
    padding: 1.25rem 1.5rem;
    margin: 1.5rem 0;
    box-shadow: var(--shadow-sm);
    border: 1px solid #1C3957;
    position: relative;
    overflow: hidden;
}

/* Dot window indicators for Developer Console look */
.formula-card::before {
    content: "";
    position: absolute;
    top: 0.75rem;
    left: 1rem;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--color-primary);
    box-shadow: 12px 0 0 var(--color-primary), 24px 0 0 var(--color-primary);
    opacity: 0.7;
}

.formula-card-title {
    font-size: 0.65rem;
    font-weight: 700;
    color: #6A7C92;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    margin-bottom: 0.75rem;
    text-align: right;
    font-family: var(--font-sans);
}

.formula-card-equation {
    font-size: 1.25rem;
    font-weight: 600;
    color: #B3B0FF;
    /* light indigo on the dark formula panel */
    font-family: 'Courier New', Courier, monospace;
    letter-spacing: 0.02em;
    padding-left: 0.5rem;
}

.formula-card-equation span.operator {
    color: #FFFFFF;
}

.formula-card-equation span.variable {
    color: #FFFFFF;
}

/* Responsive View Results button */
.view-results-btn {
    display: none !important;
}

@media (max-width: 768px) {
    .view-results-btn {
        display: inline-flex !important;
        align-items: center;
        gap: 0.25rem;
        background-color: var(--color-primary-light) !important;
        color: var(--color-primary) !important;
        padding: 0.35rem 0.75rem !important;
        border-radius: 50px !important;
        font-size: 0.8rem !important;
        font-weight: 600 !important;
        border: none !important;
        cursor: pointer;
        text-decoration: none !important;
        line-height: 1.2 !important;
        transition: all var(--transition-fast) !important;
    }

    .view-results-btn:hover {
        background-color: var(--color-primary) !important;
        color: #FFFFFF !important;
    }
}

/* Favorites Star Button */
.fav-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.88rem;
    font-weight: 600;
    color: var(--color-text-muted);
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    padding: 0.4rem 0.8rem;
    border-radius: var(--radius-sm);
    cursor: pointer;
    transition: all var(--transition-fast);
    font-family: var(--font-sans);
}

.fav-btn:hover {
    border-color: var(--color-border-hover);
    color: var(--color-text-main);
}

.fav-btn[aria-pressed="true"] {
    background-color: var(--color-primary-light);
    color: var(--color-primary);
    border-color: var(--color-primary);
}

/* Calculator page hero: title + intro left (matches the category page
   header style), Save badge right. Stacks on small screens. */
.calc-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1.5rem;
    margin-bottom: 2.5rem;
}

.calc-hero-text h1 {
    margin: 0 0 0.6rem;
}

.calc-hero-text p {
    color: var(--color-text-muted);
    font-size: 1.05rem;
    max-width: 800px;
    margin: 0;
}

.calc-hero>.fav-btn {
    flex-shrink: 0;
    margin-top: 0.5rem;
}

@media (max-width: 640px) {
    .calc-hero {
        flex-direction: column;
        gap: 0.9rem;
    }

    .calc-hero>.fav-btn {
        margin-top: 0;
    }
}

/* Compact star toggle inside calculator cards. Sits in normal flow,
   pushed to the right edge of its row (never overlaps the arrow). */
.fav-star {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    margin-left: auto;
    width: 30px;
    height: 30px;
    padding: 0;
    background: transparent;
    border: none;
    border-radius: 50%;
    color: var(--color-text-light);
    opacity: 0.55;
    cursor: pointer;
    transition: color var(--transition-fast), opacity var(--transition-fast), background-color var(--transition-fast);
}

/* In row cards the star sits between the name and the arrow — the arrow
   keeps its right-edge position, star nestles just before it. */
.related-calc-card .fav-star {
    margin-left: auto;
    margin-right: 0.15rem;
}

.related-calc-card .fav-star+.tool-card-arrow-btn {
    margin-left: 0 !important;
}

.fav-star svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
}

.fav-star:hover {
    opacity: 1;
    color: var(--color-primary);
    background-color: var(--color-primary-light);
}

.fav-star[aria-pressed="true"] {
    opacity: 1;
    color: var(--color-primary);
}

.fav-star[aria-pressed="true"] svg {
    fill: currentColor;
}

/* ==========================================================================
   Guide & Reference section (compact SEO content — replaces the article-
   style stack of H2 blocks). Reference tables stay visible as cards; prose
   collapses into an accordion. All content stays in the DOM for SEO.
   ========================================================================== */
.guide-section {
    margin-top: 3rem;
    padding-top: 2.5rem;
    border-top: 1px solid var(--color-border);
}

.guide-head {
    margin-bottom: 1.5rem;
}

.guide-eyebrow {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
    margin-bottom: 0.4rem;
}

.guide-title {
    font-size: 1.5rem;
    margin: 0 0 0.35rem;
}

.guide-sub {
    color: var(--color-text-muted);
    font-size: 0.95rem;
    margin: 0;
}

/* Reference cards (tables / charts) — visible, at-a-glance */
.guide-ref-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.guide-ref-card {
    background-color: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 1.1rem 1.25rem 1.25rem;
    box-shadow: var(--shadow-sm);
    overflow-x: auto;
}

.guide-ref-title {
    font-size: 0.95rem !important;
    font-weight: 700;
    color: var(--color-secondary);
    margin: 0 0 0.75rem !important;
    padding: 0 !important;
    border: none !important;
}

.guide-ref-body table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

.guide-ref-body th,
.guide-ref-body td {
    text-align: left;
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-muted);
}

.guide-ref-body th {
    font-weight: 700;
    color: var(--color-secondary);
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.guide-ref-body tr:last-child td {
    border-bottom: none;
}

.guide-ref-body p {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    margin: 0.5rem 0 0;
}

/* Prose accordion */
.guide-accordion {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.guide-item {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background-color: var(--color-bg-card);
    overflow: hidden;
    transition: border-color var(--transition-fast);
}

.guide-item[open] {
    border-color: var(--color-primary);
}

.guide-summary {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.8rem 1.1rem;
    cursor: pointer;
    list-style: none;
    user-select: none;
}

.guide-summary::-webkit-details-marker {
    display: none;
}

.guide-icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: var(--radius-sm);
    background-color: var(--color-primary-light);
    color: var(--color-primary);
}

.guide-icon svg {
    width: 17px;
    height: 17px;
}

.guide-q {
    flex: 1;
    min-width: 0;
    font-size: 1rem !important;
    font-weight: 600;
    color: var(--color-secondary);
    margin: 0 !important;
    padding: 0 !important;
    border: none !important;
    line-height: 1.35;
}

.guide-item[open] .guide-q {
    color: var(--color-primary);
}

.guide-chevron {
    flex-shrink: 0;
    width: 9px;
    height: 9px;
    border-right: 2px solid var(--color-text-light);
    border-bottom: 2px solid var(--color-text-light);
    transform: rotate(45deg);
    transition: transform var(--transition-fast);
    margin-top: -3px;
}

.guide-item[open] .guide-chevron {
    transform: rotate(-135deg);
    margin-top: 3px;
    border-color: var(--color-primary);
}

.guide-a {
    padding: 0 1.25rem 1.25rem;
    color: var(--color-text-muted);
    font-size: 0.92rem;
    line-height: 1.65;
}

.guide-a p {
    margin: 0 0 0.85rem;
}

.guide-a p:last-child {
    margin-bottom: 0;
}

.guide-a ul,
.guide-a ol {
    margin: 0 0 0.85rem 1.25rem;
}

.guide-a li {
    margin-bottom: 0.4rem;
}

.guide-a .math-formula {
    background-color: var(--color-bg-base);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-sm);
    padding: 0.75rem 1rem;
    font-family: 'Courier New', Courier, monospace;
    font-size: 0.88rem;
    color: var(--color-text-main);
    margin: 0 0 0.85rem;
}

.guide-a code {
    background-color: var(--color-bg-base);
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
    font-size: 0.85rem;
}

@media (max-width: 560px) {
    .guide-ref-grid {
        grid-template-columns: 1fr;
    }

    .guide-summary {
        padding: 0.85rem 1rem;
    }

    .guide-a {
        padding: 0 1rem 1rem;
    }
}

/* ==========================================================================
   Calculator responsiveness (tablet + mobile).
   Root cause of horizontal overflow: CSS grid/flex items default to
   min-width:auto and refuse to shrink below their content's min-content
   width, so a 2-column field row forces the whole panel past the viewport.
   Fix: allow items to shrink, and stack paired fields one-per-row on phones.
   Design-system level — corrects all 19 calculators at once.
   ========================================================================== */
.main-content .calc-layout-grid>*,
.main-content .calc-form-card,
.main-content .calc-inputs-panel,
.main-content .calc-results-panel,
.main-content .stripe-form-field,
.main-content .stripe-field-input,
.main-content .form-group,
.main-content .form-control {
    min-width: 0;
}

.main-content .stripe-field-input,
.main-content .form-control,
.main-content .stripe-field-select-wrapper {
    max-width: 100%;
}

@media (max-width: 640px) {

    /* One field per row: stack paired fields, whether the row is flex or grid */
    .main-content .stripe-form-row {
        flex-direction: column;
        grid-template-columns: 1fr !important;
    }

    /* The 2-column divider is a right border on desktop; make it a bottom
       border when the fields stack. */
    .main-content .stripe-form-row .stripe-form-field:not(:last-child) {
        border-right: none;
        border-bottom: 1px solid var(--color-border);
    }

    /* Per-calculator 2-column field grids + any inline multi-column grids.
       Some of these are grid, some are inline display:flex — force single
       column for both by setting grid-template AND flex-direction. */
    .main-content [class*="-geo-grid"],
    .main-content .calc-app-container [style*="grid-template-columns"] {
        grid-template-columns: 1fr !important;
        flex-direction: column !important;
    }

    /* Stray vertical divider on stacked fields inside geo grids */
    .main-content [class*="-geo-grid"] .stripe-form-field:not(:last-child) {
        border-right: none;
    }

    /* Trim nested padding so fields get real width on phones */
    .calc-app-container {
        padding: 0.85rem !important;
    }

    .main-content .calc-form-card,
    .main-content .calc-inputs-panel {
        padding: 1.1rem !important;
    }
}

@media (max-width: 400px) {
    .calc-app-container {
        padding: 0.6rem !important;
    }

    .main-content .container {
        padding-left: 0.9rem;
        padding-right: 0.9rem;
    }
}

/* Mobile header: keep the logo compact so the menu toggle always fits */
@media (max-width: 600px) {
    .logo-link {
        min-width: 0;
        flex-shrink: 1;
    }

    .logo-mark {
        width: 34px;
        height: 34px;
    }

    .brand-name {
        font-size: 1.15rem;
    }

    .mobile-nav-toggle {
        flex-shrink: 0;
    }
}

@media (max-width: 380px) {
    .brand-name {
        font-size: 1rem;
    }

    .logo-mark {
        width: 30px;
        height: 30px;
    }
}

/* ==========================================================================
   Example preset "chips" — compact wrapping cluster instead of a grid of
   tall cards. Applies to all calculators (shared .preset-card class).
   ========================================================================== */
.main-content #preset-buttons-container,
.main-content .presets-card-container {
    display: flex !important;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.main-content .preset-card {
    flex: 0 1 auto;
    padding: 0.5rem 0.9rem !important;
    border-radius: var(--radius-md);
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: left;
    min-height: 0;
}

.main-content .preset-card h4 {
    font-size: 0.85rem !important;
    margin: 0 !important;
    line-height: 1.25;
    white-space: nowrap;
}

.main-content .preset-card p {
    font-size: 0.72rem !important;
    margin: 0.1rem 0 0 !important;
    line-height: 1.3;
}

/* Phones: title-only pills (the exact dimensions fill into the form on tap) */
@media (max-width: 600px) {
    .main-content .preset-card p {
        display: none;
    }

    .main-content .preset-card {
        border-radius: 999px;
        padding: 0.45rem 0.95rem !important;
    }

    .main-content .preset-card h4 {
        font-size: 0.82rem !important;
    }

    /* Smaller calculator H1 on mobile */
    .main-content .calc-hero h1,
    .main-content .calc-hero-text h1 {
        font-size: 1.5rem;
    }
}

@media (max-width: 380px) {

    .main-content .calc-hero h1,
    .main-content .calc-hero-text h1 {
        font-size: 1.35rem;
    }
}

/* ==========================================================================
   Legal & company static pages (about, contact, privacy, terms, disclaimer)
   ========================================================================== */
.legal-page {
    max-width: 760px;
    margin: 0 auto 3rem;
}

.legal-page-header {
    margin-bottom: 2rem;
}

.legal-page-header h1 {
    margin-bottom: 0.75rem;
}

.legal-page-lead {
    font-size: 1.1rem;
    line-height: 1.75;
    color: var(--color-text-muted);
    margin: 0 0 1.5rem;
}

.legal-page-updated {
    font-size: 0.9rem;
    color: var(--color-text-light);
    margin: 0;
}

.legal-page-body h2 {
    margin: 2rem 0 0.75rem;
    font-size: 1.2rem;
    color: var(--color-secondary);
}

.legal-page-body h3 {
    margin: 1.25rem 0 0.5rem;
    font-size: 1rem;
    color: var(--color-secondary);
}

.legal-page-body p,
.legal-page-body li {
    font-size: 0.96rem;
    line-height: 1.75;
    color: var(--color-text-muted);
}

.legal-page-body ul,
.legal-page-body ol {
    margin: 0.5rem 0 1rem;
    padding-left: 1.35rem;
}

.legal-page-body li {
    margin-bottom: 0.4rem;
}

.legal-page-body a {
    color: var(--color-primary);
    font-weight: 500;
}

.legal-page-cards {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 1.5rem 0 2rem;
}

.legal-page-card {
    padding: 1.35rem 1.5rem;
}

.legal-page-card h3 {
    margin: 0 0 0.5rem;
    font-size: 1rem;
    color: var(--color-primary);
}

.legal-page-card p {
    margin: 0;
    font-size: 0.94rem;
}

.contact-page {
    max-width: 640px;
    margin: 0 auto 3rem;
    text-align: center;
}

.contact-page-email {
    display: inline-flex;
    align-items: center;
    gap: 0.75rem;
    margin: 2rem 0;
    padding: 1.25rem 1.75rem;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--color-primary);
    text-decoration: none;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.contact-page-email:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-sm);
}

.contact-page-topics {
    text-align: left;
    margin-top: 2rem;
}

.contact-page-topics h2 {
    font-size: 1.1rem;
    margin-bottom: 1rem;
    color: var(--color-secondary);
}

.contact-page-topics ul {
    margin: 0;
    padding-left: 1.25rem;
}

.contact-page-topics li {
    margin-bottom: 0.5rem;
    color: var(--color-text-muted);
    font-size: 0.95rem;
    line-height: 1.6;
}

/* ==========================================================================
   HTML sitemap page
   ========================================================================== */
.sitemap-page {
    max-width: 1040px;
    margin: 0 auto 3rem;
}

.sitemap-page-header {
    margin-bottom: 2.5rem;
}

.sitemap-page-header h1 {
    margin-bottom: 0.75rem;
}

.sitemap-page-lead {
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--color-text-muted);
    margin: 0;
    max-width: 720px;
}

.sitemap-section {
    margin-bottom: 2.5rem;
}

.sitemap-section-title {
    margin: 0 0 1rem;
    padding-bottom: 0.5rem;
    border-bottom: 2px solid var(--color-primary-light);
    font-size: 1.15rem;
    color: var(--color-secondary);
}

.sitemap-link-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.sitemap-link-list--inline {
    flex-flow: row wrap;
    gap: 0.5rem 1.25rem;
}

.sitemap-link-list a {
    font-weight: 500;
    color: var(--color-primary);
    text-decoration: none;
}

.sitemap-link-list a:hover {
    text-decoration: underline;
}

.sitemap-category-nav {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.sitemap-category-nav-link {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.9rem;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-bg-card);
    color: var(--color-secondary);
    font-weight: 600;
    font-size: 0.9rem;
    text-decoration: none;
    transition: border-color 0.2s, box-shadow 0.2s;
}

.sitemap-category-nav-link:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-sm);
}

.sitemap-category-nav-icon {
    color: var(--color-primary);
    display: inline-flex;
}

.sitemap-category-nav-count {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-text-light);
    background: var(--color-primary-light);
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
}

.sitemap-category-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem 2rem;
}

.sitemap-category-block {
    background: var(--color-bg-card);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    padding: 1.25rem 1.35rem;
}

.sitemap-category-block-title {
    margin: 0 0 0.85rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
    font-size: 1rem;
}

.sitemap-category-block-title a {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--color-secondary);
    text-decoration: none;
    font-weight: 700;
}

.sitemap-category-block-title a:hover {
    color: var(--color-primary);
}

.sitemap-category-block-icon {
    color: var(--color-primary);
    display: inline-flex;
}

.sitemap-category-block-count {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--color-text-light);
}

.sitemap-calc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    column-count: 1;
}

.sitemap-calc-list a {
    display: block;
    font-size: 0.92rem;
    font-weight: 500;
    color: var(--color-primary);
    text-decoration: none;
    line-height: 1.45;
}

.sitemap-calc-list a:hover {
    text-decoration: underline;
}

.sitemap-category-block-note {
    margin: 0;
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--color-text-muted);
}

.sitemap-category-block-note a {
    color: var(--color-primary);
    font-weight: 600;
}

@media (max-width: 767px) {
    .sitemap-category-grid {
        grid-template-columns: 1fr;
    }

    .sitemap-link-list--inline {
        flex-direction: column;
        gap: 0.6rem;
    }
}