/* Shared layout guardrails for public, portal and administration screens. */
:root { --content-gap: clamp(1rem, 2.4vw, 1.5rem); --card-padding: clamp(1.15rem, 2.8vw, 2rem); }

main, main section, main article, main header, main form, main div { min-width: 0; }
main :is(h1, h2, h3, h4, p, li, label, small, strong, span, a) { overflow-wrap: anywhere; }
main :is(input, select, textarea, button) { min-width: 0; max-width: 100%; }
main :is(button, .button-primary, .button-secondary, .button-danger, .button-quiet) { flex-shrink: 0; }

.page-return { display:flex; align-items:center; min-height:3.5rem; padding-top:.75rem; }
.page-return a { display:inline-flex; align-items:center; min-height:2.4rem; padding:.35rem .2rem; color:var(--accent-cyan); font-size:.84rem; font-weight:750; }
.page-return a:hover { color:var(--text-primary); }
.page-return + .admin-page { padding-top:clamp(1.5rem,4vw,3rem); }
.admin-page > .container > .page-return--admin { min-height:auto; margin:0 0 1.25rem; padding:0; }
.admin-page > .container > .page-return--admin a { min-height:2rem; padding:0; }

/* Portal cards used across dashboard, quotes, invoices, payments and projects. */
.contact-page > .container > header { margin-bottom: var(--content-gap); }
.contact-page > .container > header h1 { margin: 0; }
.contact-page > .container > header p { max-width: 46rem; margin: .8rem 0 0; color: var(--text-secondary); }
.contact-page > .container > .glass-card,
.contact-page .cms-list > .glass-card { padding: var(--card-padding); }
.contact-page .cms-list > .glass-card { display: flex; flex-direction: column; align-items: flex-start; gap: .85rem; }
.contact-page .cms-list > .glass-card > :is(h1, h2, h3, p, ul) { margin: 0; }
.contact-page .cms-list > .glass-card > .portal-actions { width: 100%; }
.contact-page .cms-list > .glass-card > .button-primary,
.contact-page .cms-list > .glass-card > .button-secondary { margin-top: auto; }

/* Detailed project page: cards must never share an edge with their content. */
.portal-project { display: grid; gap: var(--content-gap); }
.portal-project-header { display: grid; gap: .65rem; margin-bottom: .25rem; }
.portal-project-header h1, .portal-project-header p { margin: 0; }
.portal-project-card { display: grid; gap: .75rem; padding: var(--card-padding); }
.portal-project-card h2, .portal-project-card p, .portal-project-card ul { margin: 0; }
.portal-project-card ul { display: grid; gap: .6rem; padding-left: 1.2rem; }

/* Safe form and data-grid collapse rules. */
.form-grid, .portfolio-grid, .customer-profile-grid, .task-layout, .quote-editor-layout,
.contact-layout, .support-ticket-grid, .cms-list, .notification-feed { min-width: 0; }
.form-grid > *, .portfolio-grid > *, .customer-profile-grid > *, .task-layout > *,
.quote-editor-layout > *, .contact-layout > *, .support-ticket-grid > *, .cms-list > * { min-width: 0; }
.form-submit, .portal-actions, .admin-actions, .quote-editor-header, .notification-item-actions { flex-wrap: wrap; }

/* Most legacy admin cards had borders but no interior rhythm. Keep specialised cards untouched. */
.admin-page .glass-card:not(.quote-panel):not(.contact-form-panel):not(.support-ticket-card):not(.task-create):not(.notification-item) { padding: var(--card-padding); }
.admin-page .glass-card > :first-child { margin-top: 0; }
.admin-page .glass-card > :last-child { margin-bottom: 0; }

@media (max-width: 760px) {
  .contact-page > .container > .glass-card,
  .contact-page .cms-list > .glass-card,
  .portal-project-card { padding: 1.15rem; }
  .form-submit > *, .portal-actions > *, .admin-actions > * { flex: 1 1 100%; }
  .quote-summary, .market-stats, .value-points { grid-template-columns: 1fr; }
  .quote-summary > div { border-right: 0; border-bottom: 1px solid var(--border); }
  .quote-summary > div:last-child { border-bottom: 0; }
}

@media (max-width: 460px) {
  :root { --page-padding: 1rem; }
  .contact-page { padding-block: 7rem 3.5rem; }
  .contact-page > .container > header h1, .portal-project-header h1 { font-size: clamp(2.2rem, 12vw, 3.2rem); line-height: 1; }
}
