/* Cache bust: 20260306-mobile */
/* Mobile-safe / zoom-tolerant: prevents overflow on iPhone 13 Pro, zoom, accessibility text scaling */

/* Root: prevent horizontal scroll */
html {
    overflow-x: hidden;
    max-width: 100vw;
}

/* Body: contain overflow */
body {
    overflow-x: hidden;
    max-width: 100vw;
    min-width: 0;
}

/* Flex/grid children: allow shrink where overflow occurs */
.lcd-balance-group .lcd-row,
.lcd-balance-group .lcd-label,
.lcd-balance-group .today-balance-wrap,
.lcd-balance-group .last-transaction-box,
.header-top-row .header-brand,
.welcome-header-controls .welcome-header-brand,
.rules-grid .rule-card,
#january-rules-grid .rule-card,
.month-tabs-wrap,
.transactions-panel .rule-card,
.back-btns > *,
.whatif-slot-row .whatif-slot-label,
.rule-edit-page {
    min-width: 0;
}

/* Cards, modals, panels: contain content */
.rule-card,
.ob-card,
.welcome-card,
.modal-content,
.rule-edit-content,
.whatif-modal-content,
.panel {
    max-width: 100%;
    overflow-wrap: break-word;
    word-break: break-word;
}

/* Long text: wrap instead of overflow */
.rule-label-text,
.rule-label,
.rule-amount span,
.lcd-value,
.last-transaction-box #lastTransaction,
.last-transaction-box .lcd-value,
.lcd-label {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* One-line truncation where needed */
.rule-label-text.ellipsis,
.rule-label.ellipsis,
.whatif-slot-label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Inputs, selects: responsive */
input,
select {
    max-width: 100%;
    min-width: 0;
}

/* Tables: responsive */
table {
    max-width: 100%;
    table-layout: fixed;
}

td, th {
    overflow-wrap: break-word;
    word-break: break-word;
}

/* Grid layouts: shrink on narrow screens */
[class*="grid"],
.rules-grid,
#january-rules-grid {
    min-width: 0;
}

/* Month tabs: allow horizontal scroll if overflow */
.month-tabs-container {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.month-tab,
.year-select {
    min-width: 0;
}

/* Modals: safe on small viewport */
[class*="modal"][style*="fixed"] {
    padding: 10px;
    box-sizing: border-box;
}

[class*="modal"] [style*="max-width"] {
    max-width: min(90vw, 400px) !important;
    width: 100% !important;
}

/* Header text: stay inside block, wrap if needed */
.header-brand,
.welcome-header-brand {
    overflow: hidden;
    max-width: 100%;
}
.header-brand .header-brand-text,
.welcome-header-brand .brand-text {
    overflow-wrap: break-word;
    word-break: break-word;
    max-width: 100%;
    min-width: 0;
}

/* Buttons: text stays inside */
button,
.action-btn,
[class*="-btn"] {
    overflow-wrap: break-word;
    word-break: break-word;
    text-align: center;
}
button *,
.action-btn *,
[class*="-btn"] * {
    overflow-wrap: break-word;
    word-break: break-word;
}

/* Override white-space:nowrap on header when it causes overflow */
@media (max-width: 430px) {
    .header-brand .header-brand-text,
    .welcome-header-brand .brand-text {
        white-space: normal !important;
    }
}

/* iPhone 13 Pro Max / narrow viewport: LCD balance, last transaction */
@media (max-width: 430px) {
    .lcd-balance-group .lcd-row .lcd-label {
        min-width: 0 !important;
        max-width: 100% !important;
        width: auto !important;
    }
    .lcd-balance-group .lcd-row {
        flex-wrap: wrap !important;
    }
    .last-transaction-box {
        max-width: 100% !important;
        min-width: 0 !important;
    }
    .today-balance-wrap,
    .today-balance-box {
        max-width: 100% !important;
    }
}
