:root {
    --primary-color: #6845a5;
    --success-color: #177245;
    --danger-color: #b4232f;
    --warning-color: #8c5a00;
    --section-title-color: #14213d;
    --section-accent-color: #6845a5;
    --section-border-color: #d7dfe8;
    --panel-shadow: 0 8px 24px rgba(20, 33, 61, .055);
    --page-title-size: clamp(1.65rem, 1.35rem + .8vw, 2rem);
    --page-title-line-height: 1.2;
    --page-section-gap: 1.5rem;
}

body,
.form-control,
.form-select,
.btn,
.table {
    font-family: 'DM Sans', 'Segoe UI', sans-serif;
}

h1, h2, h3, .page-view-title, .compact-page-header-title, .analysis-page-title,
.usage-plan-title, .pricing-price, .brand-text strong {
    font-family: Fraunces, Georgia, serif;
}

.page-view-title,
.compact-page-header-title { font-size: var(--page-title-size); }
.page-subtext,
.compact-page-header-description { color: #516075; }

.app-content .card,
.compact-page-header,
.usage-dashboard,
.rent-index-card,
.market-property-card,
.pricing-card,
.analysis-hero {
    border-color: #d7dfe8;
    border-radius: 12px;
    box-shadow: var(--panel-shadow);
}

.app-content .card:hover { transform: none; box-shadow: var(--panel-shadow) !important; }
.app-content .btn-primary { border-color: var(--primary-color); color: #fff; background-color: var(--primary-color); }
.app-content .btn-primary:hover { border-color: #50347f; background-color: #50347f; }
.app-content .btn,
.app-content .form-control,
.app-content .form-select { min-height: 42px; border-radius: 8px; }

.app-content a:focus-visible,
.app-content button:focus-visible,
.app-content summary:focus-visible,
.app-content input:focus-visible,
.app-content select:focus-visible,
.app-content textarea:focus-visible {
    outline: 3px solid #b39bda;
    outline-offset: 3px;
}

.sidebar-section-label {
    padding: .75rem .75rem .2rem;
    color: #9fafc3;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
}

.sidebar-tools { margin: .25rem 0; color: inherit; }
.sidebar-tools > summary {
    display: flex;
    min-height: 44px;
    align-items: center;
    gap: .75rem;
    padding: .35rem .75rem;
    border-radius: 12px;
    color: #e0e8f1;
    cursor: pointer;
    font-size: .88rem;
    font-weight: 600;
    list-style: none;
}
.sidebar-tools > summary::-webkit-details-marker { display: none; }
.sidebar-tools > summary:hover,
.sidebar-tools[open] > summary { background: rgba(255,255,255,.08); }
.sidebar-tools > summary > i:first-child { width: 18px; text-align: center; }
.sidebar-tools-caret { margin-left: auto; font-size: .7rem; transition: transform 180ms ease; }
.sidebar-tools[open] .sidebar-tools-caret { transform: rotate(180deg); }
.sidebar-tools > .sidebar-link { margin-left: .75rem; font-size: .85rem; }
.sidebar-tools.active > summary { color: #fff; }

/* Investment workspace: a quiet shell and a clear path from evidence to action. */
.app-sidebar { background: #282238; box-shadow: none; }
.sidebar-link.active { background: rgba(177, 151, 218, .18); }
.sidebar-link.active::before { background: #c5afe6; }
.app-content .btn-outline-primary { --bs-btn-color: #6845a5; --bs-btn-border-color: #a792c7; --bs-btn-hover-bg: #6845a5; --bs-btn-hover-border-color: #6845a5; }
.app-content .card { box-shadow: 0 3px 14px rgba(40, 34, 56, .04); }
.app-content .card-header h5 { font-size: 1rem; }
.property-card-actions { display: flex; flex-wrap: wrap; gap: .4rem; background: transparent; }
.property-card-actions .btn:first-child { flex: 1 1 auto; }
.analysis-view > .analysis-hero { order: 0; }
.analysis-view > .analysis-kpi-row { order: 1; }
.analysis-view > .analysis-quick-facts { order: 2; }
.analysis-view > .analysis-workspace-layout { order: 3; }
.analysis-view > .deal-status-strip { order: 4; }
.analysis-view > .analysis-kpi-row { --bs-gutter-x: .75rem; row-gap: .75rem; }
.analysis-view > .analysis-kpi-row > div { display: flex; }
.analysis-view > .analysis-kpi-row .card { width: 100%; }
.analysis-view > .analysis-kpi-row .return-rating-card::before { content: none; }
.analysis-hero { box-shadow: none; }
.analysis-hero-panel { align-content: center; }
.analysis-quick-facts { gap: 0; overflow: hidden; border: 1px solid var(--section-border-color); border-radius: 12px; background: #fff; }
.analysis-quick-facts div { border: 0; border-radius: 0; }
.analysis-quick-facts div + div { border-left: 1px solid var(--section-border-color); }
.analysis-quick-facts strong, .analysis-hero-panel strong, .return-rating-card h3 { font-variant-numeric: tabular-nums; }
.analysis-view .analysis-input-card .card-header { background: #443357 !important; }
.property-overview-metrics { margin-bottom: 1rem; }
.market-filter-disclosure { margin-top: 1rem; border-top: 1px solid var(--section-border-color); }
.market-filter-disclosure > summary { display: flex; align-items: center; gap: .4rem; min-height: 44px; color: #50347f; font-weight: 700; cursor: pointer; list-style: none; }
.market-filter-disclosure > summary::-webkit-details-marker { display: none; }
.market-filter-disclosure > summary::before { content: '+'; font-size: 1.15rem; }
.market-filter-disclosure[open] > summary::before { content: '−'; }
.market-filter-disclosure .market-filter-grid { margin-top: .4rem; }
@media (min-width: 768px) and (max-width: 1500px) {
    .market-search-main { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

.app-content .form-label { color: #344054; font-size: .875rem; font-weight: 650; }
.app-content .form-control:focus, .app-content .form-select:focus { border-color: #8064ad; box-shadow: 0 0 0 .2rem rgba(104,69,165,.14); }
.app-content .table { --bs-table-color: #273246; }
.app-content .table th { color: #596579; font-size: .8rem; font-weight: 700; }
.app-content .modal-content { border: 1px solid var(--section-border-color); border-radius: 14px; box-shadow: 0 20px 60px rgba(30,24,45,.18); }
.app-content .modal-header, .app-content .modal-footer { border-color: #e8e6ec; }
.app-content .card-header:is(.bg-primary, .bg-secondary, .bg-success, .bg-info, .bg-warning, .bg-danger) { background: #443357 !important; color: #fff !important; }

/* Bank-Check: give the form room and align controls even when labels wrap. */
.bank-check-layout { grid-template-columns: minmax(0, 1.35fr) minmax(300px, 1fr); gap: 1.25rem; }
.bank-check-input .card { overflow: visible; }
.bank-check-input .card-body { padding: clamp(1rem, 2vw, 1.5rem); }
.bank-check-input .row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 1rem; margin: 0; }
.bank-check-input .row > [class*="col-"] { display: flex; flex-direction: column; width: auto; max-width: none; min-width: 0; padding: 0; }
.bank-check-input .row > .col-12 { grid-column: 1 / -1; }
.bank-check-input .row .form-label { flex: 1 0 auto; line-height: 1.35; overflow-wrap: anywhere; }
.bank-check-input .form-control, .bank-check-input .form-select { width: 100%; min-width: 0; }
.bank-check-section-title { margin-top: 1.5rem; padding-top: 1.25rem; font-size: .95rem; }
:is(.bank-check-notice, .info-disclosure) { padding: .8rem 1rem; border: 1px solid #e2dbea; border-radius: 10px; background: #f8f6fb; color: #4d425d; }
:is(.bank-check-notice, .info-disclosure) > summary { display: flex; align-items: center; gap: .6rem; min-height: 28px; cursor: pointer; font-size: .875rem; font-weight: 700; list-style: none; }
:is(.bank-check-notice, .info-disclosure) > summary::-webkit-details-marker { display: none; }
:is(.bank-check-notice, .info-disclosure) > summary::after { content: '+'; margin-left: auto; font-size: 1.2rem; }
:is(.bank-check-notice, .info-disclosure)[open] > summary::after { content: '−'; }
:is(.bank-check-notice, .info-disclosure) > p { max-width: 75ch; margin: .65rem 0 0; font-size: .875rem; line-height: 1.55; }
.sales-info-disclosure { margin: .75rem 0; }
.sales-info-disclosure > h5 { margin: .65rem 0; }
.sales-selected-property { margin: .65rem 0; color: #596579; }
.bank-check-actions { display: flex; flex-wrap: wrap; gap: .6rem; position: sticky; bottom: 0; z-index: 2; margin: 1.5rem -1rem -1rem; padding: .85rem 1rem; border-top: 1px solid #e5e0ea; border-radius: 0 0 10px 10px; background: #fff; box-shadow: 0 -6px 18px rgba(40,34,56,.04); }
.bank-check-actions .btn { min-height: 44px; }
.bank-check-actions .btn:hover { transform: none; }
.bank-check-input :is(input, select):focus { scroll-margin-bottom: 110px; }

/* Sale planning: decisions first, with assumptions and source data side by side. */
.sales-planning-frame-inner { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.sales-planning-frame-inner > div:first-child { min-width: 0; }
.sales-planning-frame-inner .text-muted { line-height: 1.6; }
.sales-frame-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: .5rem; flex: 0 0 auto; }
.sales-frame-actions .btn:hover { transform: none; }
.sales-summary-row { --bs-gutter-x: .75rem; row-gap: .75rem; }
.sales-summary-row > [class*="col-"] { margin-bottom: 0 !important; }
.sales-summary-row .card { border-left: 3px solid var(--return-rating-color, var(--primary-color)); background: #fff !important; color: #273246 !important; }
.sales-summary-row .card::before { content: none; }
.sales-summary-row .card-body { display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: .35rem; min-height: 125px; text-align: left !important; }
.sales-summary-row h6 { margin: 0 !important; color: #596579; font-size: .8rem; line-height: 1.35; }
.sales-summary-row :is(h3, .h3, .h5) { margin: 0; font-size: clamp(1.2rem, 1.8vw, 1.65rem); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.sales-summary-row .return-rating-card h3 { color: var(--return-rating-color); }
.sales-summary-row .return-rating-badge { margin: 0; color: #485367; background: #f2f3f5; }
.sales-planning-view .sales-planning-layout { grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 1rem; }
.sales-planning-view .sales-planning-layout.input-panel-compact { grid-template-columns: minmax(0, .9fr) minmax(0, 1fr); }
.sales-planning-view .sales-planning-layout.input-panel-large { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }
.sales-planning-layout .input-panel-col .card-body > .row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .9rem 1rem; margin: 0; }
.sales-planning-layout .input-panel-col .card-body > .row > [class*="col-"] { display: flex; flex-direction: column; width: auto; max-width: none; min-width: 0; padding: 0; margin: 0 !important; }
.sales-planning-layout .input-panel-col .form-label { flex: 1 0 auto; line-height: 1.35; overflow-wrap: anywhere; }
.sales-planning-layout .input-panel-col .form-control { min-width: 0; width: 100%; }
.sales-planning-layout .input-panel-col .form-check { margin-top: auto; }
.sales-planning-layout .input-panel-col .text-muted.small { margin-top: 1rem; line-height: 1.5; }
.sales-panel-section-title { margin: 1.5rem 0 .85rem; padding-top: 1.15rem; border-top: 1px solid var(--section-border-color); color: #443357; font-size: .9rem; font-weight: 700; }
.sales-panel-section-title:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.sales-property-data { margin: 0; }
.sales-property-data > div { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .6rem; padding: .7rem 0; border-bottom: 1px solid #eceaf0; }
.sales-property-data > div:first-child { padding-top: 0; }
.sales-property-data > div:last-child { padding-bottom: 0; border-bottom: 0; }
.sales-property-data dt { color: #596579; font-size: .83rem; font-weight: 600; line-height: 1.4; overflow-wrap: anywhere; }
.sales-property-data dd { margin: 0; color: #273246; font-weight: 700; font-variant-numeric: tabular-nums; text-align: right; line-height: 1.4; overflow-wrap: anywhere; }
.sales-planning-view .table-responsive { border-radius: 8px; }
.sales-planning-view .table { font-variant-numeric: tabular-nums; }
@media (max-width: 991.98px) {
    .sales-planning-view .sales-planning-layout, .sales-planning-view .sales-planning-layout.input-panel-compact, .sales-planning-view .sales-planning-layout.input-panel-large { grid-template-columns: minmax(0, 1fr); }
    .sales-planning-frame-inner { align-items: flex-start; flex-direction: column; }
    .sales-frame-actions { justify-content: flex-start; }
}
@media (max-width: 575.98px) {
    .sales-summary-row > [class*="col-"] { width: 50%; }
    .sales-planning-layout .input-panel-col .card-body > .row { grid-template-columns: minmax(0, 1fr); }
    .sales-frame-actions { width: 100%; }
    .sales-frame-actions .btn { flex: 1 1 auto; }
}
.bank-check-empty .card-body { justify-items: start; padding: 1.5rem; text-align: left; }
.bank-check-empty h5, .bank-check-empty p { margin: 0; }
.bank-check-empty i { font-size: 1.4rem; }
.bank-kpi strong { font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.bank-kpi { --bank-metric-color: #443357; --bank-metric-soft: #f7f6f9; border-left: 3px solid #cfc9d9; }
.bank-kpi-green { --bank-metric-color: #12643d; --bank-metric-soft: #eff8f2; border-left-color: #238557; }
.bank-kpi-yellow { --bank-metric-color: #805500; --bank-metric-soft: #fff8e8; border-left-color: #bc8110; }
.bank-kpi-red { --bank-metric-color: #a42332; --bank-metric-soft: #fff2f2; border-left-color: #c73746; }
.bank-kpi:is(.bank-kpi-green, .bank-kpi-yellow, .bank-kpi-red) { background: var(--bank-metric-soft); }
.bank-kpi:is(.bank-kpi-green, .bank-kpi-yellow, .bank-kpi-red) strong { color: var(--bank-metric-color); }
.bank-kpi-status { color: var(--bank-metric-color); font-size: .75rem; font-weight: 700; }
.bank-score-track { height: 6px; margin-top: .3rem; overflow: hidden; border-radius: 999px; background: #ddd8e3; }
.bank-score-fill { height: 100%; max-width: 100%; min-width: 0; border-radius: inherit; background: var(--bank-metric-color); }
@media (max-width: 991.98px) { .bank-check-layout { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 575.98px) {
    .bank-check-input .row { grid-template-columns: minmax(0, 1fr); }
    .bank-check-input .row > .col-12 { grid-column: auto; }
    .bank-check-actions { position: static; flex-direction: column; }
    .bank-check-actions .btn { width: 100%; }
}
.property-editor .property-form-card > .card-header { background: #f5f3f8 !important; color: #332a40 !important; border-bottom: 1px solid #e8e3ed; }
.property-editor .property-form-card > .card-header i { color: var(--primary-color); }
.property-editor .property-form-actions .btn-secondary { --bs-btn-color: #4e5969; --bs-btn-bg: #fff; --bs-btn-border-color: #c8ced7; --bs-btn-hover-color: #303847; --bs-btn-hover-bg: #f2f4f7; --bs-btn-hover-border-color: #aab3bf; }
.form-disclosure { margin: 1rem 0; border-top: 1px solid var(--section-border-color); }
.form-disclosure > summary { display: flex; align-items: center; gap: .5rem; min-height: 48px; color: #50347f; font-weight: 700; cursor: pointer; list-style: none; }
.form-disclosure > summary::-webkit-details-marker { display: none; }
.form-disclosure > summary::before { content: '+'; font-size: 1.2rem; }
.form-disclosure[open] > summary::before { content: '−'; }
.quick-result-highlights { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .65rem; margin-bottom: 1.5rem; }
.quick-result-highlights > div { display: grid; align-content: start; gap: .35rem; padding: .85rem; background: #f7f6f9; border: 1px solid #e8e3ed; border-radius: 9px; }
.quick-result-highlights span { color: #596579; font-size: .8rem; font-weight: 700; }
.quick-result-highlights strong { font-size: 1.2rem; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.admin-shell { background: #f5f6f8; color: #273246; }
.admin-shell .navbar { background: #282238 !important; }
.admin-shell .stat-card, .admin-shell .chart-container, .admin-shell .login-panel { border: 1px solid #e0dfe5; border-radius: 12px; box-shadow: 0 3px 14px rgba(40,34,56,.04); }
.admin-shell .stat-number { color: var(--primary-color); font-size: 2rem; font-variant-numeric: tabular-nums; }
.admin-shell .stat-label { color: #596579; font-size: .78rem; font-weight: 700; }
.admin-shell .btn-primary { --bs-btn-bg: #6845a5; --bs-btn-border-color: #6845a5; --bs-btn-hover-bg: #50347f; --bs-btn-hover-border-color: #50347f; }
.admin-shell .form-control { min-height: 44px; }
.admin-shell :is(a, button, input, select):focus-visible { outline: 3px solid #b39bda; outline-offset: 3px; }

@media (max-width: 767.98px) {
    .quick-result-highlights { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .analysis-view > .analysis-kpi-row > div { width: 50%; }
    .analysis-quick-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .analysis-quick-facts div:nth-child(3) { border-left: 0; }
    .analysis-quick-facts div:nth-child(n+3) { border-top: 1px solid var(--section-border-color); }
    .analysis-hero-panel { text-align: left; justify-items: start; }
    .analysis-hero-actions { justify-content: flex-start; width: 100%; }
}
.app-sidebar.collapsed .sidebar-section-label,
.app-sidebar.collapsed .sidebar-tools > summary span,
.app-sidebar.collapsed .sidebar-tools > summary .sidebar-tools-caret,
.app-sidebar.collapsed .sidebar-tools > .sidebar-link span { display: none; }
.app-sidebar.collapsed .sidebar-tools > summary { justify-content: center; padding: .35rem; }

.app-content > .container-fluid.mt-4 { padding: 1.5rem clamp(1rem,2.25vw,2rem); }
.analysis-hero { border-left-width: 4px; }
.analysis-hero-panel { border: 1px solid #d7dfe8; border-radius: 10px; }

.price-trend-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin: .75rem 0 1rem;
    border-bottom: 1px solid #d7dfe8;
}
.price-trend-tabs button {
    min-height: 44px;
    padding: .55rem .9rem;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    color: #516075;
    background: transparent;
    font: 600 .92rem 'DM Sans', sans-serif;
}
.price-trend-tabs button.active { border-bottom-color: var(--primary-color); color: #14213d; }

/* Landing: replace the registration billboard with the tool people came to use. */
.landing-hero {
    position: relative;
    min-height: 0 !important;
    padding: clamp(2rem,5vw,4rem) clamp(1rem,6vw,5rem) !important;
    margin-bottom: 1rem !important;
    grid-template-columns: minmax(0,1fr) !important;
    background: #282238 !important;
}
.landing-hero .hero-copy { max-width: 900px; }
.landing-hero .hero-copy h1 { max-width: 760px; font-family: Fraunces,Georgia,serif; font-size: clamp(2.35rem,5vw,4rem); }
.landing-hero .hero-copy .lead { max-width: 650px; }
.landing-hero .hero-access-card { display: none; }
.landing-hero .hero-actions { margin: 1.1rem 0 .5rem; }
.landing-hero .hero-proof { margin-top: .8rem; }
.landing-nav { padding: .7rem clamp(1rem,4vw,3rem); box-shadow: none; backdrop-filter: none; }
.landing-nav .brand-mark i { background: var(--primary-color); }
.landing-nav .btn-primary, .calculator-card .btn-primary, .auth-shell .btn-primary { background: var(--primary-color); border-color: var(--primary-color); }
.landing-nav .btn-primary:hover, .calculator-card .btn-primary:hover, .auth-shell .btn-primary:hover { background: #50347f; border-color: #50347f; }
.calculator-card .text-primary { color: var(--primary-color) !important; }

.calculator-card {
    margin-top: 1rem !important;
    padding: clamp(1rem,2.6vw,2rem) !important;
}
.calculator-card > .d-flex { min-width: 0; }
.calculator-card .form-control,
.calculator-card .form-select { min-height: 44px; border-radius: 8px; }
.calculator-card .subtle-box { background: #f7f9fc; border-color: #d7dfe8; border-radius: 10px; }
.calculator-card .mode-card { border-color: #d7dfe8; border-radius: 10px; }
.calculator-card .mode-card.active { border-color: var(--primary-color); background: #f4f0f9; box-shadow: 0 0 0 2px rgba(104,69,165,.12); }
.calculator-card > #calculatorForm > .text-center .btn { min-height: 48px; }

.calculator-card.has-results {
    display: grid;
    grid-template-columns: minmax(0,1.05fr) minmax(340px,.95fr);
    grid-template-areas: "title title" "form result" "prompt prompt";
    align-items: start;
    gap: 1rem 1.5rem;
}
.calculator-card.has-results > .d-flex { grid-area: title; margin-bottom: 0 !important; }
.calculator-card.has-results > #calculatorForm { grid-area: form; min-width: 0; }
.calculator-card.has-results > #results { grid-area: result; min-width: 0; position: sticky; top: 1rem; }
.calculator-card.has-results > .register-prompt { grid-area: prompt; }
.calculator-card .result-card { margin: 0; padding: 1rem; color: #14213d; background: #f5f7fa; border: 1px solid #d7dfe8; border-radius: 12px; }
.calculator-card .result-card h3 { color: #14213d; font-family: Fraunces,Georgia,serif; }
.calculator-card .metric-box {
    padding: .85rem;
    color: #14213d;
    background: #fff;
    border: 1px solid #d7dfe8;
    border-radius: 10px;
}
.calculator-card .metric-box h4 { color: #516075; font-size: .82rem; font-weight: 600; }
.calculator-card .metric-box .value { color: #14213d; font-size: clamp(1.2rem,1.5vw,1.75rem); font-variant-numeric: tabular-nums; }
.calculator-card .metric-box small { color: #516075; }
.calculator-card .metric-box.return-rating-negative { background: #fff3f2; border-color: #d9a4a0; }
.calculator-card .metric-box.return-rating-tight { background: #fff8e8; border-color: #d9c18f; }
.calculator-card .metric-box.return-rating-solid,
.calculator-card .metric-box.return-rating-good { background: #f1f8f3; border-color: #a7cbb1; }
.calculator-card .metric-box.return-rating-attractive { background: #eaf5ee; border-color: #84b895; }
.calculator-card .return-rating-badge { color: #14213d; background: #edf1f5; }
.calculator-card .register-prompt { padding: 1rem; margin-top: 0; border-color: #d7dfe8; border-radius: 10px; text-align: left; }

.landing-hero,
.landing-section,
.calculator-card,
.legal-footer,
.faq-main { font-family: 'DM Sans','Segoe UI',sans-serif; }
.landing-section h2,
.landing-section h3,
.landing-section h4 { font-family: Fraunces,Georgia,serif; color: #14213d; }

/* Keep registration usable at the smallest supported viewport. */
html, body { max-width: 100%; }
.auth-shell, .auth-shell > *, .auth-container, .auth-card, .auth-card form,
.auth-card .row, .auth-card .input-group, .auth-card .input-group > * { min-width: 0; max-width: 100%; }
.auth-container { width: 100%; }
.google-auth-wrapper, .google-auth-container, .google-auth-container > div,
.google-auth-container iframe { width: 100% !important; max-width: 100% !important; }
.faq-item.empty-state { padding: 2rem; }
.auth-shell .auth-info-panel h1 { font-family: Fraunces,Georgia,serif; }

/* The public and signed-in help use the same short disclosure pattern. */
.faq-item { padding: 0; overflow: clip; }
.faq-item > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .8rem;
    min-height: 56px;
    padding: .9rem 1rem;
    color: #14213d;
    cursor: pointer;
    font-size: 1rem;
    font-weight: 650;
    list-style: none;
}
.faq-item > summary::-webkit-details-marker { display: none; }
.faq-item > summary::after { content: '+'; flex: 0 0 auto; color: var(--primary-color); font-size: 1.3rem; }
.faq-item[open] > summary { color: var(--primary-color); border-bottom: 1px solid #d7dfe8; }
.faq-item[open] > summary::after { content: '−'; }
.faq-item__answer { padding: 0 1rem 1rem; }
.faq-item:focus-within { border-color: #76b7ed; }

@media (max-width:1100px) {
    .auth-shell { grid-template-columns: minmax(0,1fr) !important; }
}

@media (max-width:768px) {
    .app-sidebar:not(.open) { visibility: hidden; }
    .app-sidebar.open { visibility: visible; }
    .app-content > .container-fluid.mt-4 { display: flex; flex-direction: column; padding: 1rem .85rem; }
    .app-content > .container-fluid.mt-4 > .usage-dashboard { order: 2; margin-top: 1.5rem; }
    .app-content > .container-fluid.mt-4 > .container-fluid { order: 1; }
    .compact-page-header-title, .page-view-title { font-size: 1.55rem; }
    .app-content .row { --bs-gutter-x: 1rem; }
    .app-content .btn { min-height: 44px; }
    .app-sidebar { width: min(300px,calc(100vw - 48px)); }
    .price-trend-tabs { display: grid; grid-template-columns: 1fr 1fr; }
    .price-trend-tabs button { padding-inline: .45rem; }
    .landing-nav { position: relative; align-items: center; flex-wrap: wrap; }
    .landing-nav-actions { justify-content: flex-start; gap: .55rem; }
    .landing-hero { padding: 2rem 1rem !important; }
    .landing-hero .hero-copy h1 { font-size: clamp(2rem,10vw,3rem); }
    .landing-hero .hero-actions .btn { width: auto; }
    .calculator-card { width: calc(100% - 1.25rem) !important; }
    .calculator-card.has-results { grid-template-columns: minmax(0,1fr); grid-template-areas: "title" "result" "form" "prompt"; }
    .calculator-card.has-results > #results { position: static; }
    .auth-shell { width: calc(100% - 1.25rem) !important; }
    .auth-info-panel h1 { font-size: clamp(2rem,10vw,3rem); }
}

@media (prefers-reduced-motion:reduce) {
    *,*::before,*::after { scroll-behavior: auto !important; animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

/* App screen redesign — Achromatic ledger.
   One shared shell keeps every workspace view dense, calm and recognisably
   Immobilien Analyzer without changing any Angular behaviour or data flow. */
:root {
    --app-ground: #f4f3f6;
    --app-surface: #ffffff;
    --app-raised: #faf9fb;
    --app-ink: #20202a;
    --app-muted: #5e5d69;
    --app-rule: #e7e5ea;
    --app-control: #cbc8d1;
    --app-accent: #6845a5;
    --primary-color: #20202a;
    --section-title-color: #20202a;
    --section-accent-color: #6845a5;
    --section-border-color: #e7e5ea;
    --panel-shadow: none;
}

body { color: var(--app-ink); background: var(--app-ground); }

/* The product shell: open plane, quiet labelled navigation, no decorative chrome. */
.app-sidebar {
    width: 240px;
    padding: 16px 12px;
    color: var(--app-ink);
    background: var(--app-ground);
    border-right: 1px solid var(--app-rule);
    box-shadow: none;
}
.app-sidebar.collapsed { width: 72px; }
.sidebar-brand { min-height: 48px; gap: 10px; padding: 0 8px 18px; }
.brand-mark,
.user-avatar,
.sidebar-link i,
.sidebar-icon-btn {
    width: 32px;
    height: 32px;
    border-radius: 7px;
    color: var(--app-ink);
    background: transparent;
    box-shadow: none;
}
.brand-mark { border: 1px solid var(--app-control); color: var(--app-accent); }
.brand-text { line-height: 1.08; }
.brand-text strong { font: 650 14px/1.1 'DM Sans', 'Segoe UI', sans-serif; letter-spacing: -.01em; }
.brand-text span { color: var(--app-muted); font-size: 12px; opacity: 1; }
.sidebar-icon-btn { border: 1px solid transparent; }
.sidebar-icon-btn:hover { border-color: var(--app-control); background: var(--app-surface); }
.sidebar-nav { gap: 2px; padding: 0; overflow-y: auto; }
.sidebar-section-label {
    padding: 24px 10px 7px;
    color: var(--app-muted);
    font-size: 12px;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
}
.sidebar-link {
    min-height: 34px;
    gap: 9px;
    padding: 1px 10px;
    border-radius: 7px;
    color: var(--app-muted);
    font-size: 14px;
    font-weight: 500;
}
.sidebar-link i { width: 18px; height: 28px; color: inherit; font-size: 15px; }
.sidebar-link:hover { color: var(--app-ink); background: #eceaef; }
.sidebar-link.active { color: var(--app-ink); background: #e6e4e9; font-weight: 600; }
.sidebar-link.active::before { display: none; }
.premium-badge {
    padding: 2px 6px;
    border-radius: 4px;
    color: #51486a;
    background: #ece8f2;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0;
}
.sidebar-tools { margin: 2px 0; }
.sidebar-tools > summary {
    min-height: 34px;
    gap: 9px;
    padding: 1px 10px;
    border-radius: 7px;
    color: var(--app-muted);
    font-size: 14px;
    font-weight: 500;
}
.sidebar-tools > summary:hover,
.sidebar-tools[open] > summary { color: var(--app-ink); background: #eceaef; }
.sidebar-tools > .sidebar-link { margin-left: 12px; font-size: 13px; }
.sidebar-tools.active > summary { color: var(--app-ink); }
.sidebar-footer { gap: 6px; margin-top: 12px; }
.sidebar-select,
.sidebar-user-btn {
    min-height: 38px;
    border: 1px solid var(--app-rule);
    border-radius: 7px;
    color: var(--app-ink);
    background: var(--app-surface);
}
.sidebar-select:hover,
.sidebar-user-btn:hover { border-color: var(--app-control); }
.user-avatar { color: var(--app-muted); background: #f0eef2; }
.user-meta small { color: var(--app-muted); opacity: 1; }
.app-sidebar.collapsed ~ .container-fluid.mt-4 { margin-left: 72px; width: calc(100% - 72px); }
.app-sidebar.collapsed .sidebar-brand .brand-mark { display: inline-flex; }

/* Dense canvas: every working view uses the same edges, panel rhythm and type scale. */
.app-content > .container-fluid.mt-4 {
    margin-left: 240px;
    width: calc(100% - 240px);
    padding: 28px 32px;
    transition: margin-left .18s ease, width .18s ease;
}
.app-content > .container-fluid.mt-4 > .container-fluid.mt-4 {
    width: 100%;
    margin: 0;
    padding: 0;
}
.app-content h1,
.app-content h2,
.app-content h3,
.app-content h4,
.app-content h5,
.app-content h6,
.app-content .page-view-title,
.app-content .compact-page-header-title,
.app-content .analysis-page-title {
    font-family: 'DM Sans', 'Segoe UI', sans-serif;
    color: var(--app-ink);
}
.app-content .page-view-title,
.app-content .compact-page-header-title,
.app-content .analysis-page-title {
    font-size: clamp(20px, 1.2vw + 12px, 26px);
    font-weight: 650;
    letter-spacing: -.025em;
    line-height: 1.15;
}
.app-content .page-subtext,
.app-content .compact-page-header-description { color: var(--app-muted) !important; font-size: 14px; line-height: 1.5; }
.app-content hr { margin: 18px 0 24px; border-color: var(--app-rule); opacity: 1; }

.app-content .card,
.app-content .compact-page-header,
.app-content .usage-dashboard,
.app-content .rent-index-card,
.app-content .market-property-card,
.app-content .pricing-card,
.app-content .analysis-hero {
    border: 1px solid var(--app-rule);
    border-radius: 8px;
    box-shadow: none !important;
    background: var(--app-surface);
}
.app-content .card:hover { transform: none; border-color: #d7d3dc; box-shadow: none !important; }
.app-content .card > .card-header,
.app-content .card > .card-header.bg-primary,
.app-content .card > .card-header.bg-secondary,
.app-content .card > .card-header.bg-success,
.app-content .card > .card-header.bg-danger,
.app-content .card > .card-header.bg-warning,
.app-content .card > .card-header.bg-info,
.app-content .card > .card-header.bg-dark {
    min-height: 52px;
    display: flex;
    align-items: center;
    border: 0;
    border-bottom: 1px solid var(--app-rule);
    border-left: 0;
    border-radius: 8px 8px 0 0;
    color: var(--app-ink) !important;
    background: var(--app-surface) !important;
}
.app-content .card > .card-header h5,
.app-content .card > .card-header h6 { font-size: 15px; font-weight: 600; }
.app-content .card > .card-header i { color: var(--app-muted); }
.app-content .card-footer { border-color: var(--app-rule); background: var(--app-raised); }

.app-content .btn,
.app-content .form-control,
.app-content .form-select,
.app-content .input-group-text { min-height: 34px; border-radius: 6px; font-size: 14px; }
.app-content .btn-primary,
.app-content .btn-success {
    border-color: var(--app-ink);
    color: #fff;
    background: var(--app-ink);
}
.app-content .btn-primary:hover,
.app-content .btn-success:hover { border-color: #000; background: #000; }
.app-content .btn-outline-primary { --bs-btn-color: #393343; --bs-btn-border-color: #bbb5c2; --bs-btn-hover-bg: #29252e; --bs-btn-hover-border-color: #29252e; }
.app-content .form-control,
.app-content .form-select { border-color: var(--app-control); color: var(--app-ink); background: #fff; }
.app-content .form-control:focus,
.app-content .form-select:focus { border-color: #82778e; box-shadow: 0 0 0 3px rgba(104,69,165,.13); }
.app-content a:focus-visible,
.app-content button:focus-visible,
.app-content summary:focus-visible,
.app-content input:focus-visible,
.app-content select:focus-visible,
.app-content textarea:focus-visible { outline: 3px solid rgba(104,69,165,.45); outline-offset: 2px; }

/* Reusable app data patterns: one divided KPI container, quiet tables, compact filters. */
.usage-dashboard { padding: 0; overflow: hidden; }
.usage-dashboard-header { min-height: 74px; padding: 14px 18px; gap: 18px; }
.usage-dashboard-kicker,
.usage-plan-block .usage-dashboard-kicker { color: var(--app-muted); font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.usage-plan-title { font: 600 17px/1.25 'DM Sans', sans-serif; color: var(--app-ink); }
.usage-summary-strip { gap: 0; margin-left: auto; }
.usage-summary-pill { min-height: 38px; padding: 2px 18px; border-radius: 0; border-left: 1px solid var(--app-rule); color: var(--app-muted); background: transparent; }
.usage-summary-pill strong { color: var(--app-ink); font-variant-numeric: tabular-nums; }
.usage-dashboard-actions { margin-left: 0; }
.usage-group-grid { padding: 16px 18px 18px; border-top: 1px solid var(--app-rule); background: var(--app-raised); }

.property-status-filter { gap: 8px; }
.property-status-filter .form-select { min-width: 160px; }
.property-overview-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0 0 14px; border: 1px solid var(--app-rule); border-radius: 6px; overflow: hidden; }
.property-overview-metric { min-height: 58px; padding: 9px 11px; border: 0; border-radius: 0; background: transparent !important; }
.property-overview-metric + .property-overview-metric { border-left: 1px solid var(--app-rule); }
.property-overview-metric span { color: var(--app-muted); font-size: 12px; }
.property-overview-metric strong { color: var(--app-ink); font-size: 17px; font-variant-numeric: tabular-nums; }
.property-card-actions { gap: 6px; padding: 10px; background: var(--app-raised); }

.app-content .table { --bs-table-color: var(--app-ink); --bs-table-bg: transparent; --bs-table-border-color: var(--app-rule); font-size: 14px; }
.app-content .table th { color: var(--app-muted); font-size: 12px; font-weight: 500; letter-spacing: 0; text-transform: none; }
.app-content .table td:last-child,
.app-content .table th:last-child { font-variant-numeric: tabular-nums; }
.app-content .table > :not(caption) > * > * { padding-top: 12px; padding-bottom: 12px; }
.app-content .badge,
.app-content .deal-status-badge,
.app-content .next-event-chip { border-radius: 4px; font-size: 11px; font-weight: 600; }

/* Wide, useful form and analysis layouts; no decorative feature tiles. */
.compact-page-header { padding: 0; border: 0 !important; background: transparent !important; }
.compact-page-header-eyebrow,
.compact-page-header__eyebrow,
.pricing-eyebrow { display: none; }
.analysis-hero { border-left-width: 1px; }
.analysis-view .analysis-input-card .card-header,
.app-content .card-header:is(.bg-primary, .bg-secondary, .bg-success, .bg-info, .bg-warning, .bg-danger) { background: var(--app-surface) !important; color: var(--app-ink) !important; }
.analysis-quick-facts { border-color: var(--app-rule); border-radius: 8px; }
.analysis-quick-facts div + div { border-left-color: var(--app-rule); }
.sales-summary-row .card,
.bank-kpi { border-left: 1px solid var(--app-rule); background: var(--app-surface) !important; }
.sales-summary-row .card-body { min-height: 102px; }
.bank-kpi:is(.bank-kpi-green, .bank-kpi-yellow, .bank-kpi-red) { background: var(--app-surface) !important; }
.bank-kpi:is(.bank-kpi-green, .bank-kpi-yellow, .bank-kpi-red) strong { color: var(--app-ink); }

.pricing-card { gap: 16px; padding: 20px; }
.pricing-card-highlighted,
.pricing-card-current { border-color: #c9c3d0; box-shadow: none; }
.pricing-current-pill { border-radius: 4px; color: #51486a; background: #ece8f2; font-size: 11px; font-weight: 600; }
.pricing-price span { font-family: 'DM Sans', sans-serif; font-size: 30px; font-weight: 650; font-variant-numeric: tabular-nums; }
.pricing-features i { color: #247b50; }
.pricing-intent-banner,
.pricing-legal-note { border-color: var(--app-rule); border-radius: 8px; background: var(--app-raised); }
.feature-gate-panel { border-color: var(--app-rule); border-radius: 8px; background: var(--app-surface); box-shadow: none; }
.feature-gate-panel::after { display: none; }
.feature-gate-panel__icon,
.feature-access-modal__icon,
.pricing-intent-icon { border-radius: 7px; color: var(--app-accent); background: #ece8f2; box-shadow: none; }

@media (max-width: 991.98px) {
    .app-sidebar { transform: translateX(-100%); width: min(300px, calc(100vw - 44px)); background: var(--app-surface); }
    .app-sidebar.open { transform: translateX(0); }
    .app-content > .container-fluid.mt-4,
    .app-sidebar.collapsed ~ .container-fluid.mt-4 { width: 100%; margin-left: 0; padding: 64px 20px 24px; }
    .mobile-topbar { position: fixed; inset: 0 0 auto; z-index: 1030; display: flex; height: 48px; align-items: center; justify-content: space-between; padding: 0 12px; border-bottom: 1px solid var(--app-rule); color: var(--app-ink); background: var(--app-ground); }
    .mobile-brand { font: 600 14px/1 'DM Sans', sans-serif; }
    .mobile-topbar .sidebar-icon-btn { border: 0; }
    .usage-dashboard-header { display: grid; grid-template-columns: 1fr auto; }
    .usage-summary-strip { grid-column: 1 / -1; grid-row: 2; margin: 0; overflow-x: auto; }
}
@media (max-width: 640px) {
    .app-content > .container-fluid.mt-4,
    .app-sidebar.collapsed ~ .container-fluid.mt-4 { padding: 64px 16px 20px; }
    .app-content > .container-fluid.mt-4 > .container-fluid.mt-4 { padding: 0; }
    .app-content .page-view-title,
    .app-content .compact-page-header-title,
    .app-content .analysis-page-title { font-size: 22px; }
    .app-content .btn,
    .app-content .form-control,
    .app-content .form-select { min-height: 40px; }
    .usage-dashboard-header { padding: 14px; }
    .usage-summary-pill { min-width: 132px; padding: 4px 12px; }
    .property-overview-metrics { grid-template-columns: 1fr; }
    .property-overview-metric + .property-overview-metric { border-top: 1px solid var(--app-rule); border-left: 0; }
    .analysis-quick-facts { grid-template-columns: 1fr 1fr; }
}

/* Colour pass — the brand lives in the workspace shell and in meaningful data,
   while investment signals keep one shared vocabulary in every view. */
:root {
    --app-ground: #f3eff6;
    --app-surface: #ffffff;
    --app-raised: #faf7fc;
    --app-ink: #241d2c;
    --app-muted: #655d6e;
    --app-rule: #e4dce8;
    --app-control: #c9bfd0;
    --app-accent: #7351ad;
    --app-accent-deep: #3b2851;
    --app-accent-soft: #ece5f6;
    --investment-positive: #147a4d;
    --investment-positive-soft: #e5f5ed;
    --investment-caution: #a05d00;
    --investment-caution-soft: #fff3de;
    --investment-negative: #b42336;
    --investment-negative-soft: #fcedf0;
    --investment-neutral: #655d6e;
    --investment-neutral-soft: #f1eef3;
    --primary-color: #573888;
    --section-accent-color: #7351ad;
}

.app-sidebar {
    color: #f7f2fb;
    background: var(--app-accent-deep);
    border-right-color: rgba(255,255,255,.1);
}
.brand-mark { border-color: rgba(255,255,255,.22); color: #f0e9ff; background: rgba(255,255,255,.07); }
.brand-text span { color: #cfc2dd; }
.brand-text strong { color: #fff; }
.sidebar-icon-btn { color: #f7f2fb; }
.sidebar-icon-btn:hover { border-color: rgba(255,255,255,.22); background: rgba(255,255,255,.09); }
.sidebar-section-label { color: #cbbdd9; }
.sidebar-link,
.sidebar-tools > summary { color: #e5ddeb; }
.sidebar-link:hover,
.sidebar-tools > summary:hover,
.sidebar-tools[open] > summary { color: #fff; background: rgba(255,255,255,.09); }
.sidebar-link.active { color: #fff; background: #624582; }
.premium-badge { color: #3b2851; background: #e8d9ff; }
.sidebar-select,
.sidebar-user-btn { border-color: rgba(255,255,255,.14); color: #fff; background: rgba(255,255,255,.08); }
.sidebar-select:hover,
.sidebar-user-btn:hover { border-color: rgba(255,255,255,.28); }
.user-avatar { color: #f4eeff; background: rgba(255,255,255,.12); }
.user-meta small { color: #d7cce2; }

.app-content .btn-primary,
.app-content .btn-success { border-color: #573888; background: #573888; }
.app-content .btn-primary:hover,
.app-content .btn-success:hover { border-color: #41276b; background: #41276b; }
.app-content .btn-outline-primary { --bs-btn-color: #573888; --bs-btn-border-color: #ae9ac9; --bs-btn-hover-bg: #573888; --bs-btn-hover-border-color: #573888; }
.usage-dashboard { border-top: 3px solid #7351ad; }
.usage-plan-title { color: #43296d; }
.usage-summary-pill:first-child { border-left-color: #d8cce7; }
.compact-page-header-title i,
.page-view-title i { color: #7351ad; }
.app-content .card > .card-header i { color: #7351ad; }
.app-content .card-header:is(.bg-primary, .bg-secondary, .bg-success, .bg-info, .bg-warning, .bg-danger) { border-left: 3px solid #7351ad; }

/* Status colour only reaches the figure and its compact textual evidence. */
.app-content .return-rating-negative,
.app-content .metric-negative,
.app-content .property-overview-metric.return-rating-negative { --investment-colour: var(--investment-negative); --investment-soft: var(--investment-negative-soft); }
.app-content .return-rating-tight,
.app-content .return-rating-solid,
.app-content .property-overview-metric.return-rating-tight,
.app-content .property-overview-metric.return-rating-solid { --investment-colour: var(--investment-caution); --investment-soft: var(--investment-caution-soft); }
.app-content .return-rating-good,
.app-content .return-rating-attractive,
.app-content .metric-positive,
.app-content .property-overview-metric.return-rating-good,
.app-content .property-overview-metric.return-rating-attractive { --investment-colour: var(--investment-positive); --investment-soft: var(--investment-positive-soft); }
.app-content .return-rating-muted,
.app-content .metric-neutral,
.app-content .property-metric-unavailable { --investment-colour: var(--investment-neutral); --investment-soft: var(--investment-neutral-soft); }

.app-content .return-rating-text,
.app-content .metric-positive,
.app-content .metric-negative { color: var(--investment-colour) !important; }
.app-content .return-rating-card {
    border-left: 3px solid var(--investment-colour, var(--app-rule)) !important;
    color: var(--app-ink) !important;
    background: var(--app-surface) !important;
}
.app-content .return-rating-card h3,
.app-content .return-rating-card .h3,
.app-content .return-rating-card .return-rating-text { color: var(--investment-colour) !important; }
.app-content .return-rating-badge,
.app-content .investment-status-label {
    display: inline-flex;
    width: fit-content;
    align-items: center;
    min-height: 20px;
    margin-top: 3px;
    padding: 1px 6px;
    border-radius: 4px;
    color: var(--investment-colour, var(--investment-neutral));
    background: var(--investment-soft, var(--investment-neutral-soft));
    font-size: 11px;
    font-weight: 650;
    line-height: 1.2;
}
.property-overview-metric { position: relative; min-height: 76px; }
.property-overview-metric strong { color: var(--investment-colour, var(--app-ink)); }
.property-overview-metric .investment-status-label { margin-top: 4px; }

.bank-kpi-green strong,
.ai-traffic-green,
.app-content .metric-positive { color: var(--investment-positive) !important; }
.bank-kpi-yellow strong,
.ai-traffic-yellow { color: var(--investment-caution) !important; }
.bank-kpi-red strong,
.ai-traffic-red,
.app-content .metric-negative { color: var(--investment-negative) !important; }
.bank-score-fill { background: #7351ad; }
.market-tone-good { border-top-color: var(--investment-positive); }
.market-tone-expensive { border-top-color: var(--investment-caution); }

/* Sale planning: the yearly comparison is a dense ledger, not a dark table band. */
.sales-planning-view .sales-yearly-analysis-table {
    --bs-table-bg: transparent;
    --bs-table-striped-bg: transparent;
    --bs-table-color: var(--app-ink);
    --bs-table-border-color: var(--app-rule);
    margin-bottom: 0;
    font-variant-numeric: tabular-nums;
}
.sales-planning-view .sales-yearly-analysis-table thead th {
    padding: 11px 12px;
    border-top: 1px solid #d9cde3;
    border-bottom: 1px solid #cbbbd8;
    color: #3b2851;
    background: #f1eaf5;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.25;
    vertical-align: bottom;
    white-space: normal;
}
.sales-planning-view .sales-yearly-analysis-table tbody td {
    padding: 11px 12px;
    border-color: var(--app-rule);
    color: var(--app-ink);
    background: var(--app-surface);
}
.sales-planning-view .sales-yearly-analysis-table tbody tr.table-warning > * {
    background: #fff5e3 !important;
}
@media (max-width: 767.98px) {
    .sales-planning-view .sales-yearly-analysis-table thead th { min-width: 124px; }
    .sales-planning-view .sales-yearly-analysis-table thead th:first-child { min-width: 64px; }
    .sales-planning-view .sales-yearly-analysis-table thead th:nth-child(2) { min-width: 112px; }
}

@media (max-width: 991.98px) {
    .app-sidebar { background: var(--app-accent-deep); }
    .mobile-topbar { color: var(--app-ink); background: #f7f3f9; border-bottom-color: #ded3e5; }
    .mobile-topbar .sidebar-icon-btn { color: #573888; }
}
