diff --git a/app/static/css/mobile_phone.css b/app/static/css/mobile_phone.css new file mode 100644 index 0000000..3dc393f --- /dev/null +++ b/app/static/css/mobile_phone.css @@ -0,0 +1,82 @@ +/* ════════════════════════════════════════════════════════════════════════ + mobile_phone.css — phone-width (<768px) responsive polish. + + Layered ON TOP of ipad_responsive.css (which handles iPad/tablet widths + 1024/820/768) and Bootstrap 5 (whose grid already stacks col-md-* below + 768px). These rules refine the patterns Bootstrap doesn't: page-header + rows, action toolbars, oversized headings, table density, and tap targets + on small phones. + ════════════════════════════════════════════════════════════════════════ */ + +/* ── Proper .table-responsive wrappers win over the iPad catch-all ── + ipad_responsive.css turns bare tables into `display:block` scroll blocks at + ≤1024px. Tables we explicitly wrap in .table-responsive should keep true + table layout INSIDE the scroll container (cleaner columns + header align). */ +.table-responsive > table, +.table-responsive table { + display: table !important; + width: 100%; +} + +/* ── Phone layout (≤576px) ── */ +@media (max-width: 576px) { + /* Tighter page gutters so content isn't cramped by container padding. */ + .container-fluid.mt-4 { + padding-left: 0.75rem; + padding-right: 0.75rem; + } + + /* Page-header rows: title + action button stack instead of squeezing. + Scoped to DIRECT children of the content container, so the navbar, card + headers, dropdown headers, and in-table flex rows are all untouched. */ + .container-fluid.mt-4 > .d-flex.justify-content-between { + flex-wrap: wrap; + gap: 0.5rem; + } + /* A single action button in that header grows to full width under the title. */ + .container-fluid.mt-4 > .d-flex.justify-content-between > .btn, + .container-fluid.mt-4 > .d-flex.justify-content-between > a.btn { + width: 100%; + } + + /* Softer headings so long titles don't wrap awkwardly on narrow screens. */ + h1, .h1 { font-size: 1.5rem; } + h2, .h2 { font-size: 1.3rem; } + h3, .h3 { font-size: 1.15rem; } + + /* Toolbars / explicit button rows wrap rather than overflow. */ + .btn-toolbar { flex-wrap: wrap; } + + /* Denser tables so more columns fit before horizontal scroll kicks in. */ + .table { font-size: 0.875rem; } + .table > :not(caption) > * > * { padding: 0.4rem 0.5rem; } + + /* Card padding a touch tighter than the 820px iPad rule. */ + .card-body { padding: 0.85rem; } + + /* Pagination wraps instead of overflowing the viewport. */ + .pagination { flex-wrap: wrap; row-gap: 0.25rem; } + + /* Near-full-width modal dialogs on phones. */ + .modal-dialog:not(.modal-fullscreen) { margin: 0.5rem; } + + /* Large stat/KPI numbers scale down so cards don't overflow. */ + .display-1, .display-2, .display-3 { font-size: 2.25rem; } + .display-4 { font-size: 2rem; } + .display-5 { font-size: 1.6rem; } + .display-6 { font-size: 1.4rem; } + + /* Comfortable tap target for icon-only action buttons in table rows. */ + td .btn-sm { min-height: 38px; } +} + +/* ── Very small phones (≤380px) ── */ +@media (max-width: 380px) { + .container-fluid.mt-4 { + padding-left: 0.5rem; + padding-right: 0.5rem; + } + h2, .h2 { font-size: 1.2rem; } + .btn { font-size: 0.9rem; } + .table { font-size: 0.82rem; } +} diff --git a/app/templates/base.html b/app/templates/base.html index d8a6e39..96bdacc 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -13,6 +13,7 @@ + {% if tenant_branding %} diff --git a/app/templates/reports/scorecard.html b/app/templates/reports/scorecard.html index 4912b00..7e3087a 100644 --- a/app/templates/reports/scorecard.html +++ b/app/templates/reports/scorecard.html @@ -138,7 +138,7 @@
Score by Area
-
+
@@ -169,7 +169,7 @@
Follow-up Required
-
+
AreaAvg ScoreInspections
@@ -206,7 +206,7 @@
Open Issues
-
+
InspectionDateScore
IDSeverityAreaDescriptionStatusReported