From ee599978da5c02f33a72aca3a5a6cebaeaa8d6d5 Mon Sep 17 00:00:00 2001 From: kikimor Date: Wed, 23 Sep 2026 20:10:52 +0300 Subject: [PATCH] Use type and spacing tokens on the themed screens Co-Authored-By: Claude Opus 5.5 --- frontend/src/App.css | 30 +-- .../src/components/ExtraCombinationsTable.css | 32 +-- frontend/src/components/Header.css | 48 ++-- frontend/src/components/History.css | 56 ++--- frontend/src/components/Main.css | 236 +++++++++--------- .../src/components/ReportPreviewModal.css | 54 ++-- .../components/ScaleMonitor/ScaleMonitor.css | 148 +++++------ 7 files changed, 302 insertions(+), 302 deletions(-) diff --git a/frontend/src/App.css b/frontend/src/App.css index e913343..6fba4f0 100644 --- a/frontend/src/App.css +++ b/frontend/src/App.css @@ -7,34 +7,34 @@ .status-bar { background: var(--surface); - padding: 12px 20px; + padding: var(--space-3) var(--space-5); display: flex; align-items: center; - gap: 20px; + gap: var(--space-5); box-shadow: var(--shadow-card); } .status-connected { color: var(--success); - font-size: 14px; - font-weight: 500; + font-size: var(--fs-md); + font-weight: var(--fw-medium); } .status-disconnected { color: var(--danger); - font-size: 14px; - font-weight: 500; + font-size: var(--fs-md); + font-weight: var(--fw-medium); } .status-error { color: var(--danger); - font-size: 12px; + font-size: var(--fs-sm); } .container { max-width: 1200px; - margin: 20px auto; - padding: 0 20px; + margin: var(--space-5) auto; + padding: 0 var(--space-5); flex: 1; width: 100%; } @@ -42,16 +42,16 @@ .error-message { background-color: var(--danger-soft); color: var(--danger); - padding: 12px 20px; + padding: var(--space-3) var(--space-5); border-radius: 4px; - margin-bottom: 20px; + margin-bottom: var(--space-5); border: 1px solid var(--danger); } .loading { text-align: center; - padding: 40px; - font-size: 18px; + padding: var(--space-10); + font-size: var(--fs-xl); color: var(--text-muted); } @@ -59,10 +59,10 @@ .status-bar { flex-direction: column; align-items: flex-start; - gap: 8px; + gap: var(--space-2); } .container { - padding: 0 10px; + padding: 0 var(--space-2-5); } } diff --git a/frontend/src/components/ExtraCombinationsTable.css b/frontend/src/components/ExtraCombinationsTable.css index 8eeddef..88945c0 100644 --- a/frontend/src/components/ExtraCombinationsTable.css +++ b/frontend/src/components/ExtraCombinationsTable.css @@ -1,24 +1,24 @@ .extra-combos { - margin-bottom: 16px; + margin-bottom: var(--space-4); } .extra-combos h3 { - margin: 0 0 8px 0; - font-size: 12px; + margin: 0 0 var(--space-2) 0; + font-size: var(--fs-sm); color: var(--text-muted); - font-weight: 600; + font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.5px; } .extra-combos-error { - padding: 6px 10px; + padding: var(--space-1-5) var(--space-2-5); background-color: var(--danger-soft); color: var(--danger); border: 1px solid var(--danger); border-radius: 6px; - font-size: 12px; - margin-bottom: 8px; + font-size: var(--fs-sm); + margin-bottom: var(--space-2); } .extra-combos-table-container { @@ -61,11 +61,11 @@ } .extra-combos-table th { - padding: 0.4rem 0.75rem; + padding: var(--space-1-5) var(--space-3); text-align: left; - font-weight: 600; + font-weight: var(--fw-semibold); color: var(--text-muted); - font-size: 0.75rem; + font-size: var(--fs-sm); border-bottom: 2px solid var(--border); white-space: nowrap; text-transform: uppercase; @@ -77,9 +77,9 @@ } .extra-combos-table td { - padding: 0.4rem 0.75rem; + padding: var(--space-1-5) var(--space-3); border-bottom: 1px solid var(--border); - font-size: 0.85rem; + font-size: var(--fs-md); color: var(--text); white-space: nowrap; } @@ -100,11 +100,11 @@ .extra-combos-delete-btn { background: none; border: 1px solid var(--border); - padding: 0 0.35rem; + padding: 0 var(--space-1-5); border-radius: 4px; cursor: pointer; transition: all 0.2s; - font-size: 0.9rem; + font-size: var(--fs-md); line-height: 1.4; color: var(--text-muted); } @@ -122,8 +122,8 @@ .extra-combos-empty { text-align: center; - padding: 1rem !important; + padding: var(--space-4) !important; color: var(--text-muted); font-style: italic; - font-size: 0.85rem; + font-size: var(--fs-md); } diff --git a/frontend/src/components/Header.css b/frontend/src/components/Header.css index d77cff1..e29151d 100644 --- a/frontend/src/components/Header.css +++ b/frontend/src/components/Header.css @@ -11,7 +11,7 @@ .header-content { max-width: 1400px; margin: 0 auto; - padding: 16px 20px; + padding: var(--space-4) var(--space-5); display: flex; justify-content: space-between; align-items: center; @@ -20,13 +20,13 @@ .header-left { display: flex; align-items: center; - gap: 16px; + gap: var(--space-4); } .header-left h1 { margin: 0; - font-size: 24px; - font-weight: 600; + font-size: var(--fs-2xl); + font-weight: var(--fw-semibold); } .nav-button { @@ -36,7 +36,7 @@ background: var(--header-chrome); border: 1px solid var(--header-chrome-border); color: var(--header-text); - font-size: 20px; + font-size: var(--fs-2xl); cursor: pointer; transition: background 0.2s, transform 0.2s; display: flex; @@ -79,7 +79,7 @@ .nav-dropdown-menu button { display: block; width: 100%; - padding: 10px 14px; + padding: var(--space-2-5) var(--space-4); background: none; border: none; text-align: left; @@ -98,44 +98,44 @@ .nav-dropdown-menu strong { display: block; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); } .nav-dropdown-menu span { display: block; - margin-top: 2px; - font-size: 11px; + margin-top: var(--space-0-5); + font-size: var(--fs-xs); color: var(--text-muted); } .header-right { display: flex; align-items: center; - gap: 20px; + gap: var(--space-5); } .user-info { display: flex; flex-direction: column; align-items: flex-end; - margin-right: 10px; + margin-right: var(--space-2-5); } .user-name { - font-weight: 600; - font-size: 14px; + font-weight: var(--fw-semibold); + font-size: var(--fs-md); } .user-role { - font-size: 12px; + font-size: var(--fs-sm); opacity: 0.9; } .avatar-container { display: flex; align-items: center; - gap: 12px; + gap: var(--space-3); } .avatar { @@ -147,8 +147,8 @@ display: flex; align-items: center; justify-content: center; - font-weight: bold; - font-size: 16px; + font-weight: var(--fw-bold); + font-size: var(--fs-lg); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; box-shadow: var(--shadow-card); @@ -160,13 +160,13 @@ } .logout-button { - padding: 8px 16px; + padding: var(--space-2) var(--space-4); background: var(--header-chrome); border: 1px solid var(--header-chrome-border); color: var(--header-text); border-radius: 6px; - font-size: 14px; - font-weight: 500; + font-size: var(--fs-md); + font-weight: var(--fw-medium); cursor: pointer; transition: background 0.2s; } @@ -178,12 +178,12 @@ @media (max-width: 768px) { .header-content { flex-direction: column; - gap: 12px; + gap: var(--space-3); align-items: stretch; } .header-left h1 { - font-size: 18px; + font-size: var(--fs-xl); text-align: center; } @@ -206,7 +206,7 @@ background: var(--header-chrome); border: 1px solid var(--header-chrome-border); color: var(--header-text); - font-size: 17px; + font-size: var(--fs-xl); line-height: 1; cursor: pointer; transition: background 0.2s, transform 0.2s; diff --git a/frontend/src/components/History.css b/frontend/src/components/History.css index 7f4d961..28a5a71 100644 --- a/frontend/src/components/History.css +++ b/frontend/src/components/History.css @@ -1,21 +1,21 @@ .history { max-width: 1200px; margin: 0 auto; - padding: 24px 20px; + padding: var(--space-6) var(--space-5); } .history-title { - margin: 0 0 16px 0; + margin: 0 0 var(--space-4) 0; color: var(--text); } .history-error { - padding: 10px 14px; - margin-bottom: 12px; + padding: var(--space-2-5) var(--space-4); + margin-bottom: var(--space-3); background: var(--danger-soft); color: var(--danger); border-radius: var(--radius-sm); - font-size: 13px; + font-size: var(--fs-base); } .history-table-wrap { @@ -28,23 +28,23 @@ .history-table { width: 100%; border-collapse: collapse; - font-size: 14px; + font-size: var(--fs-md); } .history-table th { text-align: left; - padding: 10px 14px; + padding: var(--space-2-5) var(--space-4); background: var(--surface-hover); color: var(--text-muted); - font-size: 11px; - font-weight: 600; + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border); } .history-table td { - padding: 10px 14px; + padding: var(--space-2-5) var(--space-4); border-bottom: 1px solid var(--border); color: var(--text); } @@ -64,16 +64,16 @@ .history-empty { text-align: center; color: var(--text-muted); - padding: 32px !important; + padding: var(--space-8) !important; } .history-badge { display: inline-block; - padding: 3px 10px; + padding: var(--space-1) var(--space-2-5); border: 1px solid; border-radius: 20px; - font-size: 11px; - font-weight: 600; + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); letter-spacing: 0.03em; white-space: nowrap; } @@ -91,12 +91,12 @@ } .history-void-btn { - padding: 4px 12px; + padding: var(--space-1) var(--space-3); background: none; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-muted); - font-size: 12px; + font-size: var(--fs-sm); cursor: pointer; } @@ -108,35 +108,35 @@ .history-void-inline { display: flex; flex-direction: column; - gap: 6px; + gap: var(--space-1-5); min-width: 180px; } .history-void-inline input { - padding: 6px 8px; + padding: var(--space-1-5) var(--space-2); border: 1px solid var(--border); border-radius: var(--radius-sm); - font-size: 12px; + font-size: var(--fs-sm); box-sizing: border-box; } .history-void-error { color: var(--danger); - font-size: 11px; + font-size: var(--fs-xs); } .history-void-actions { display: flex; - gap: 6px; + gap: var(--space-1-5); } .history-void-actions button { - padding: 4px 10px; + padding: var(--space-1) var(--space-2-5); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface-hover); color: var(--text); - font-size: 12px; + font-size: var(--fs-sm); cursor: pointer; } @@ -144,19 +144,19 @@ display: flex; align-items: center; justify-content: center; - gap: 4px; - margin-top: 16px; + gap: var(--space-1); + margin-top: var(--space-4); } .history-pager button { min-width: 32px; height: 32px; - padding: 0 8px; + padding: 0 var(--space-2); border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--surface); color: var(--text); - font-size: 13px; + font-size: var(--fs-base); cursor: pointer; } @@ -178,5 +178,5 @@ .history-page-gap { color: var(--text-muted); - padding: 0 4px; + padding: 0 var(--space-1); } diff --git a/frontend/src/components/Main.css b/frontend/src/components/Main.css index 9a4b4be..32693e6 100644 --- a/frontend/src/components/Main.css +++ b/frontend/src/components/Main.css @@ -15,21 +15,21 @@ } .vehicle-list-header { - padding: 12px; + padding: var(--space-3); display: flex; flex-direction: column; - gap: 8px; + gap: var(--space-2); border-bottom: 1px solid var(--border); } .vehicle-add-btn { - padding: 8px 16px; + padding: var(--space-2) var(--space-4); background: var(--accent-gradient); color: var(--accent-contrast); border: none; border-radius: 6px; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; } @@ -40,10 +40,10 @@ } .vehicle-search { - padding: 7px 10px; + padding: var(--space-2) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; - font-size: 13px; + font-size: var(--fs-base); } .vehicle-search:focus { @@ -61,7 +61,7 @@ display: flex; justify-content: space-between; align-items: center; - padding: 10px 12px; + padding: var(--space-2-5) var(--space-3); cursor: pointer; border-bottom: 1px solid var(--surface-hover); transition: background 0.15s; @@ -77,21 +77,21 @@ } .vehicle-list-number { - font-weight: 600; - font-size: 14px; + font-weight: var(--fw-semibold); + font-size: var(--fs-md); color: var(--text); } .vehicle-list-weight { - font-size: 12px; + font-size: var(--fs-sm); color: var(--text-muted); } .vehicle-list-empty { - padding: 20px; + padding: var(--space-5); text-align: center; color: var(--text-muted); - font-size: 13px; + font-size: var(--fs-base); } /* Right panel */ @@ -107,22 +107,22 @@ justify-content: center; height: 100%; color: var(--text-muted); - font-size: 16px; + font-size: var(--fs-lg); } /* No max-width: four readouts on one row do not fit in the old 700px cap. */ .vehicle-detail { - padding: 24px; + padding: var(--space-6); } /* Also used standalone by the "New Vehicle" form heading, which has no icon, pills or photo - hence the margin/weight living here rather than only on .vehicle-heading. Inside .vehicle-hero the margin is overridden to 0. */ .vehicle-detail-title { - margin: 0 0 20px 0; - font-size: 18px; + margin: 0 0 var(--space-5) 0; + font-size: var(--fs-xl); color: var(--text); - font-weight: 700; + font-weight: var(--fw-bold); } /* Header bar: icon, plate number, status pills, and (cockpit only) a photo @@ -133,10 +133,10 @@ display: flex; align-items: center; justify-content: space-between; - gap: 16px; + gap: var(--space-4); height: 108px; - margin-bottom: 20px; - padding: 0 16px; + margin-bottom: var(--space-5); + padding: 0 var(--space-4); border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); @@ -146,7 +146,7 @@ .vehicle-heading { display: flex; align-items: center; - gap: 12px; + gap: var(--space-3); min-width: 0; flex-shrink: 0; } @@ -158,7 +158,7 @@ reading's look carries over here too. */ .vehicle-heading .vehicle-detail-title { margin: 0; - font-size: 40px; + font-size: var(--fs-display); color: var(--reading); text-shadow: var(--reading-glow); } @@ -178,11 +178,11 @@ .vehicle-status { flex-shrink: 0; - padding: 4px 10px; + padding: var(--space-1) var(--space-2-5); border: 1px solid; border-radius: 20px; - font-size: 11px; - font-weight: 600; + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); letter-spacing: .03em; white-space: nowrap; } @@ -212,11 +212,11 @@ .vehicle-error { background-color: var(--danger-soft); color: var(--danger); - padding: 10px 14px; + padding: var(--space-2-5) var(--space-4); border-radius: 6px; border: 1px solid var(--danger); - font-size: 13px; - margin-bottom: 14px; + font-size: var(--fs-base); + margin-bottom: var(--space-4); } /* Weighing cards. A fixed five-column grid - four readouts and an action @@ -227,8 +227,8 @@ .weighing-section { display: grid; grid-template-columns: 1.8fr 0.85fr 0.85fr 0.85fr 0.85fr; - gap: 16px; - margin-bottom: 24px; + gap: var(--space-4); + margin-bottom: var(--space-6); align-items: stretch; } @@ -240,9 +240,9 @@ .weight-card { display: flex; align-items: flex-start; - gap: 10px; + gap: var(--space-2-5); min-width: 0; - padding: 16px; + padding: var(--space-4); border: 1px solid var(--border); border-radius: 8px; background: var(--surface); @@ -265,7 +265,7 @@ flex: none; display: flex; flex-direction: column; - gap: 6px; + gap: var(--space-1-5); } .weight-card-reading-actions .weight-set-btn, @@ -282,7 +282,7 @@ display: flex; flex-direction: column; justify-content: center; - gap: 8px; + gap: var(--space-2); } /* The buttons carry a stacking margin for when they sit inside a card; in this @@ -302,7 +302,7 @@ flex: 1; min-width: 0; height: 100%; - padding: 12px 0; + padding: var(--space-3) 0; box-sizing: border-box; } @@ -314,13 +314,13 @@ top: 6px; right: 6px; z-index: 1; - padding: 2px 6px; + padding: var(--space-0-5) var(--space-1-5); border: 1px solid var(--border); border-radius: 4px; background: var(--surface-hover); color: var(--text-muted); - font-size: 9px; - font-weight: 700; + font-size: var(--fs-xs); + font-weight: var(--fw-bold); letter-spacing: .04em; cursor: pointer; transition: border-color 0.2s, color 0.2s; @@ -363,12 +363,12 @@ } .weight-card-header { - font-size: 12px; - font-weight: 600; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; - margin-bottom: 6px; + margin-bottom: var(--space-1-5); } .weight-card--net .weight-card-header { @@ -376,11 +376,11 @@ } .weight-card-value { - font-size: 22px; - font-weight: 700; + font-size: var(--fs-2xl); + font-weight: var(--fw-bold); color: var(--text); - margin-bottom: 4px; - font-family: 'Courier New', monospace; + margin-bottom: var(--space-1); + font-family: var(--font-mono); } .weight-card--net .weight-card-value { @@ -390,34 +390,34 @@ /* The live reading is the instrument on this screen, so it is set larger than the recorded weights beside it. */ .weight-card-value--reading { - font-size: 40px; + font-size: var(--fs-display); color: var(--reading); text-shadow: var(--reading-glow); } .reading-value--disconnected { color: var(--border-strong); - font-size: 18px; + font-size: var(--fs-xl); } .weight-card-meta { - font-size: 11px; + font-size: var(--fs-xs); color: var(--text-muted); - margin-bottom: 10px; + margin-bottom: var(--space-2-5); } .weight-set-btn { width: 100%; - padding: 8px 12px; + padding: var(--space-2) var(--space-3); background: var(--accent-gradient); color: var(--accent-contrast); border: none; border-radius: 6px; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; - margin-top: 6px; + margin-top: var(--space-1-5); } .weight-set-btn:hover:not(:disabled) { @@ -437,7 +437,7 @@ position: relative; display: flex; gap: 1px; - margin-top: 6px; + margin-top: var(--space-1-5); } /* .weight-set-btn is width:100%; inside the split the halves are sized by flex. */ @@ -453,7 +453,7 @@ .design-notice-caret { flex: 0 0 28px; - padding: 8px 0; + padding: var(--space-2) 0; border-radius: 0 6px 6px 0; } @@ -481,12 +481,12 @@ .design-notice-menu button { display: block; width: 100%; - padding: 8px 12px; + padding: var(--space-2) var(--space-3); background: none; border: none; text-align: left; cursor: pointer; - font-size: 12px; + font-size: var(--fs-sm); color: var(--text); } @@ -500,53 +500,53 @@ .design-notice-menu strong { display: block; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); } .design-notice-menu span { display: block; margin-top: 1px; - font-size: 11px; + font-size: var(--fs-xs); color: var(--text-muted); } /* Extra fields section */ .extra-section { border-top: 1px solid var(--border); - padding-top: 20px; + padding-top: var(--space-5); } .extra-section h3 { - margin: 0 0 14px 0; - font-size: 14px; + margin: 0 0 var(--space-4) 0; + font-size: var(--fs-md); color: var(--accent); - font-weight: 600; + font-weight: var(--fw-semibold); } .extra-fields { display: grid; grid-template-columns: 1fr 1fr; - gap: 12px; - margin-bottom: 14px; + gap: var(--space-3); + margin-bottom: var(--space-4); } .vehicle-new-fields { display: grid; grid-template-columns: 1fr 1fr 1fr 1fr 1.6fr; - gap: 12px; - margin-bottom: 14px; + gap: var(--space-3); + margin-bottom: var(--space-4); } .extra-field { display: flex; flex-direction: column; - gap: 4px; + gap: var(--space-1); } .extra-field label { - font-size: 12px; - font-weight: 600; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); color: var(--text); text-transform: uppercase; letter-spacing: 0.5px; @@ -558,10 +558,10 @@ .extra-field input[type="text"], .extra-field input[type="number"], .extra-field select { - padding: 7px 10px; + padding: var(--space-2) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; - font-size: 14px; + font-size: var(--fs-md); background: var(--surface); color: var(--text); } @@ -579,13 +579,13 @@ } .extra-save-btn { - padding: 8px 20px; + padding: var(--space-2) var(--space-5); background: var(--accent-gradient); color: var(--accent-contrast); border: none; border-radius: 6px; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; transition: transform 0.2s, box-shadow 0.2s; } @@ -602,26 +602,26 @@ /* Vehicle form sections */ .vehicle-form-section { - margin-bottom: 20px; + margin-bottom: var(--space-5); } .vehicle-form-actions { display: flex; - gap: 10px; + gap: var(--space-2-5); justify-content: flex-end; - margin-top: 20px; - padding-top: 16px; + margin-top: var(--space-5); + padding-top: var(--space-4); border-top: 1px solid var(--border); } .vehicle-form-cancel { - padding: 8px 20px; + padding: var(--space-2) var(--space-5); background: var(--surface); color: var(--text-muted); border: 1px solid var(--border); border-radius: 6px; - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; transition: background 0.2s, border-color 0.2s; } @@ -693,25 +693,25 @@ } .weight-manual-tag { - margin-left: 6px; - padding: 1px 5px; + margin-left: var(--space-1-5); + padding: 1px var(--space-1-5); border-radius: 3px; background-color: var(--warning-soft); color: var(--warning); - font-size: 10px; - font-weight: 600; + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); text-transform: uppercase; letter-spacing: 0.3px; } .weight-manual-btn { - margin-top: 6px; - padding: 4px 10px; + margin-top: var(--space-1-5); + padding: var(--space-1) var(--space-2-5); background: none; border: 1px solid var(--border); border-radius: 6px; color: var(--text-muted); - font-size: 12px; + font-size: var(--fs-sm); cursor: pointer; transition: all 0.2s; } @@ -737,26 +737,26 @@ .manual-content { background: var(--surface); border-radius: 12px; - padding: 24px; + padding: var(--space-6); width: 340px; max-width: calc(100% - 32px); } .manual-content h3 { - margin: 0 0 16px 0; - font-size: 16px; + margin: 0 0 var(--space-4) 0; + font-size: var(--fs-lg); color: var(--text); } .manual-field { - margin-bottom: 12px; + margin-bottom: var(--space-3); } .manual-field label { display: block; - margin-bottom: 4px; - font-size: 11px; - font-weight: 600; + margin-bottom: var(--space-1); + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; @@ -764,18 +764,18 @@ .manual-field input { width: 100%; - padding: 8px 10px; + padding: var(--space-2) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; - font-size: 14px; + font-size: var(--fs-md); box-sizing: border-box; } .manual-actions { display: flex; - gap: 8px; + gap: var(--space-2); justify-content: flex-end; - margin-top: 16px; + margin-top: var(--space-4); } .reading-value--balanced { @@ -787,15 +787,15 @@ } .reading-error { - margin-top: 4px; - font-size: 11px; + margin-top: var(--space-1); + font-size: var(--fs-xs); color: var(--danger); font-style: italic; } .weight-license-block { - margin-top: 6px; - font-size: 11px; + margin-top: var(--space-1-5); + font-size: var(--fs-xs); color: var(--danger); font-style: italic; } @@ -957,7 +957,7 @@ display: grid; place-items: center; width: 34px; height: 34px; - font-size: 15px; + font-size: var(--fs-lg); color: var(--accent); background: var(--accent-soft); border: 1px solid var(--border-strong); @@ -982,7 +982,7 @@ background: linear-gradient(180deg, #ff8a3c 0%, #e8631b 100%); border: 1px solid #ffa563; color: #1a0c02; - font-weight: 700; + font-weight: var(--fw-bold); letter-spacing: .06em; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .35), var(--glow-warning); } @@ -997,7 +997,7 @@ background: linear-gradient(180deg, var(--accent) 0%, #1f7fae 100%); border: 1px solid var(--accent-hover); color: var(--accent-contrast); - font-weight: 700; + font-weight: var(--fw-bold); letter-spacing: .05em; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .28), var(--glow-accent); } @@ -1042,7 +1042,7 @@ /* Corner bracket on the data panel: an L drawn from two borders. */ [data-theme="cockpit"] .extra-section { - padding: 18px; + padding: var(--space-5); border: 1px solid var(--border); } [data-theme="cockpit"] .extra-section::after { @@ -1059,7 +1059,7 @@ [data-theme="cockpit"] .extra-section h3 { display: flex; align-items: center; - gap: 9px; + gap: var(--space-2-5); letter-spacing: .08em; } [data-theme="cockpit"] .extra-section h3::before { @@ -1067,7 +1067,7 @@ display: grid; place-items: center; width: 24px; height: 24px; - font-size: 13px; + font-size: var(--fs-base); color: var(--accent); background: var(--accent-soft); border: 1px solid var(--border-strong); @@ -1105,7 +1105,7 @@ right: 10px; bottom: 30px; writing-mode: vertical-rl; - font: 700 11px/1 system-ui, sans-serif; + font: var(--fw-bold) var(--fs-xs)/1 var(--font-sans); letter-spacing: .42em; color: var(--text-muted); opacity: .38; @@ -1178,8 +1178,8 @@ /* Labels: small, wide-tracked, cyan — the reference's instrument-panel voice. */ [data-theme="cockpit"] .weight-card-header { color: var(--accent); - font-size: 11px; - font-weight: 700; + font-size: var(--fs-xs); + font-weight: var(--fw-bold); text-transform: uppercase; opacity: .92; } @@ -1222,7 +1222,7 @@ [data-theme="cockpit"] .extra-combos-table th { background: rgba(0, 217, 255, .07); color: var(--accent); - font-size: 11px; + font-size: var(--fs-xs); letter-spacing: .08em; text-transform: uppercase; } @@ -1232,7 +1232,7 @@ [data-theme="cockpit"] .extra-section h4 { color: var(--accent); text-shadow: 0 0 12px rgba(0, 217, 255, .35); - font-size: 13px; + font-size: var(--fs-base); letter-spacing: .1em; text-transform: uppercase; } @@ -1240,7 +1240,7 @@ /* Field labels, quieter than the headings but still in voice. */ [data-theme="cockpit"] .extra-field label { color: var(--text-muted); - font-size: 10px; + font-size: var(--fs-xs); letter-spacing: .1em; text-transform: uppercase; } diff --git a/frontend/src/components/ReportPreviewModal.css b/frontend/src/components/ReportPreviewModal.css index 027a2cb..894bc4c 100644 --- a/frontend/src/components/ReportPreviewModal.css +++ b/frontend/src/components/ReportPreviewModal.css @@ -23,24 +23,24 @@ display: flex; align-items: center; justify-content: space-between; - padding: 10px 16px; + padding: var(--space-2-5) var(--space-4); border-bottom: 1px solid var(--border); flex-shrink: 0; } .report-preview-switcher { display: flex; - gap: 4px; + gap: var(--space-1); } .report-preview-switch-btn { - padding: 6px 14px; + padding: var(--space-1-5) var(--space-4); background: var(--surface-hover); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-muted); - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; } @@ -61,13 +61,13 @@ } .report-preview-download-btn { - padding: 6px 14px; + padding: var(--space-1-5) var(--space-4); background: none; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text-muted); - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; } @@ -84,38 +84,38 @@ .report-preview-body { overflow: auto; flex: 1; - padding: 8px; + padding: var(--space-2); background: var(--surface-sunken); } .report-preview-error { - padding: 24px; + padding: var(--space-6); color: var(--danger); - font-size: 14px; + font-size: var(--fs-md); } .report-preview-loading { - padding: 24px; + padding: var(--space-6); color: var(--text-muted); - font-size: 14px; + font-size: var(--fs-md); } .report-preview-empty { - padding: 40px 24px; + padding: var(--space-10) var(--space-6); text-align: center; color: var(--text-muted); - font-size: 14px; + font-size: var(--fs-md); } .report-preview-design-btn { - margin-top: 12px; - padding: 8px 16px; + margin-top: var(--space-3); + padding: var(--space-2) var(--space-4); background: var(--accent); border: none; border-radius: var(--radius-sm); color: var(--accent-contrast); - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; } @@ -133,20 +133,20 @@ display: flex; align-items: center; justify-content: center; - gap: 12px; - padding: 12px 16px; + gap: var(--space-3); + padding: var(--space-3) var(--space-4); border-top: 1px solid var(--border); flex-shrink: 0; } .report-preview-print-btn { - padding: 8px 24px; + padding: var(--space-2) var(--space-6); background: var(--accent); border: none; border-radius: var(--radius-sm); color: var(--accent-contrast); - font-size: 14px; - font-weight: 600; + font-size: var(--fs-md); + font-weight: var(--fw-semibold); cursor: pointer; } @@ -156,13 +156,13 @@ } .report-preview-close-btn { - padding: 8px 24px; + padding: var(--space-2) var(--space-6); background: none; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); - font-size: 14px; - font-weight: 600; + font-size: var(--fs-md); + font-weight: var(--fw-semibold); cursor: pointer; } diff --git a/frontend/src/components/ScaleMonitor/ScaleMonitor.css b/frontend/src/components/ScaleMonitor/ScaleMonitor.css index cee8b28..0ea63da 100644 --- a/frontend/src/components/ScaleMonitor/ScaleMonitor.css +++ b/frontend/src/components/ScaleMonitor/ScaleMonitor.css @@ -4,7 +4,7 @@ } .sm-body { - padding: 20px; + padding: var(--space-5); max-width: 1400px; margin: 0 auto; } @@ -12,19 +12,19 @@ .sm-toolbar { display: flex; align-items: center; - gap: 12px; - margin-bottom: 16px; + gap: var(--space-3); + margin-bottom: var(--space-4); flex-wrap: wrap; } .sm-back { - padding: 6px 12px; + padding: var(--space-1-5) var(--space-3); background: var(--surface); border: 1px solid var(--border); border-radius: 6px; color: var(--text-muted); cursor: pointer; - font-size: 13px; + font-size: var(--fs-base); } .sm-back:hover { @@ -33,9 +33,9 @@ } .sm-conn { - font-size: 12px; - font-weight: 600; - padding: 3px 8px; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); + padding: var(--space-1) var(--space-2); border-radius: 4px; text-transform: uppercase; letter-spacing: 0.3px; @@ -52,25 +52,25 @@ } .sm-status { - font-size: 12px; + font-size: var(--fs-sm); color: var(--text-muted); - font-family: 'Courier New', monospace; + font-family: var(--font-mono); } .sm-message { - padding: 8px 12px; + padding: var(--space-2) var(--space-3); background-color: var(--accent-soft); border: 1px solid var(--border-strong); border-radius: 6px; color: var(--text); - font-size: 13px; - margin-bottom: 12px; + font-size: var(--fs-base); + margin-bottom: var(--space-3); } .sm-columns { display: grid; grid-template-columns: 1fr 1fr; - gap: 16px; + gap: var(--space-4); } @media (max-width: 1000px) { @@ -82,25 +82,25 @@ .sm-panel { background: var(--surface); border-radius: 8px; - padding: 16px; + padding: var(--space-4); box-shadow: 0 1px 3px var(--shadow-card); } .sm-panel--wide { - margin-top: 16px; + margin-top: var(--space-4); } .sm-panel-head { display: flex; align-items: center; justify-content: space-between; - margin-bottom: 12px; + margin-bottom: var(--space-3); } .sm-panel-head h3 { margin: 0; - font-size: 12px; - font-weight: 600; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; @@ -108,16 +108,16 @@ .sm-panel-actions { display: flex; - gap: 6px; + gap: var(--space-1-5); } .sm-panel-actions button { - padding: 4px 10px; + padding: var(--space-1) var(--space-2-5); background: none; border: 1px solid var(--border); border-radius: 6px; color: var(--text-muted); - font-size: 12px; + font-size: var(--fs-sm); cursor: pointer; } @@ -128,26 +128,26 @@ .sm-send { display: flex; - gap: 6px; - margin-bottom: 10px; + gap: var(--space-1-5); + margin-bottom: var(--space-2-5); } .sm-send input { flex: 1; - padding: 6px 10px; + padding: var(--space-1-5) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; - font-size: 13px; - font-family: 'Courier New', monospace; + font-size: var(--fs-base); + font-family: var(--font-mono); } .sm-send button { - padding: 6px 14px; + padding: var(--space-1-5) var(--space-4); background: linear-gradient(135deg, var(--accent), var(--accent)); border: none; border-radius: 6px; color: var(--accent-contrast); - font-size: 13px; + font-size: var(--fs-base); cursor: pointer; } @@ -165,11 +165,11 @@ } .sm-line { - padding: 5px 8px; + padding: var(--space-1-5) var(--space-2); border-bottom: 1px solid var(--border); cursor: pointer; - font-family: 'Courier New', monospace; - font-size: 12px; + font-family: var(--font-mono); + font-size: var(--fs-sm); } .sm-line:hover { @@ -183,7 +183,7 @@ .sm-line-text { display: flex; justify-content: space-between; - gap: 8px; + gap: var(--space-2); color: var(--text); } @@ -199,37 +199,37 @@ .sm-line-hex { color: var(--text-muted); - font-size: 11px; + font-size: var(--fs-xs); word-break: break-all; - margin-top: 2px; + margin-top: var(--space-0-5); } .sm-empty { - padding: 20px; + padding: var(--space-5); text-align: center; color: var(--text-muted); font-style: italic; - font-size: 13px; + font-size: var(--fs-base); } .sm-form { display: flex; flex-direction: column; - gap: 10px; + gap: var(--space-2-5); } .sm-row { display: grid; grid-template-columns: 1fr 1fr; - gap: 10px; + gap: var(--space-2-5); } .sm-form label { display: flex; flex-direction: column; - gap: 4px; - font-size: 11px; - font-weight: 600; + gap: var(--space-1); + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; @@ -237,43 +237,43 @@ .sm-form input[type="text"], .sm-form input[type="number"] { - padding: 7px 10px; + padding: var(--space-2) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; - font-size: 14px; + font-size: var(--fs-md); text-transform: none; letter-spacing: normal; - font-weight: 400; + font-weight: var(--fw-regular); color: var(--text); } .sm-check { flex-direction: row !important; align-items: center; - gap: 6px; + gap: var(--space-1-5); text-transform: none !important; letter-spacing: normal !important; - font-weight: 400 !important; + font-weight: var(--fw-regular) !important; color: var(--text) !important; - font-size: 12px !important; + font-size: var(--fs-sm) !important; } .sm-hint { - font-size: 11px; + font-size: var(--fs-xs); color: var(--text-muted); font-style: italic; } .sm-preview { - margin-top: 14px; - padding-top: 14px; + margin-top: var(--space-4); + padding-top: var(--space-4); border-top: 1px solid var(--border); } .sm-preview h4 { - margin: 0 0 8px 0; - font-size: 11px; - font-weight: 600; + margin: 0 0 var(--space-2) 0; + font-size: var(--fs-xs); + font-weight: var(--fw-semibold); color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.5px; @@ -282,43 +282,43 @@ .sm-preview-ok { display: flex; align-items: baseline; - gap: 10px; + gap: var(--space-2-5); } .sm-preview-weight { - font-size: 24px; - font-weight: 700; - font-family: 'Courier New', monospace; + font-size: var(--fs-2xl); + font-weight: var(--fw-bold); + font-family: var(--font-mono); color: var(--text); } .sm-bal { color: var(--success); - font-size: 12px; - font-weight: 600; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); } .sm-unbal { color: var(--danger); - font-size: 12px; - font-weight: 600; + font-size: var(--fs-sm); + font-weight: var(--fw-semibold); } .sm-preview-error { color: var(--danger); - font-size: 13px; + font-size: var(--fs-base); font-style: italic; } .sm-save { - margin-top: 12px; - padding: 8px 16px; + margin-top: var(--space-3); + padding: var(--space-2) var(--space-4); background: linear-gradient(135deg, var(--accent), var(--accent)); border: none; border-radius: 6px; color: var(--accent-contrast); - font-size: 13px; - font-weight: 600; + font-size: var(--fs-base); + font-weight: var(--fw-semibold); cursor: pointer; } @@ -330,18 +330,18 @@ .sm-protocols { display: flex; flex-direction: column; - gap: 6px; + gap: var(--space-1-5); } .sm-protocol { display: flex; align-items: center; - gap: 10px; - padding: 8px 10px; + gap: var(--space-2-5); + padding: var(--space-2) var(--space-2-5); border: 1px solid var(--border); border-radius: 6px; cursor: pointer; - font-size: 13px; + font-size: var(--fs-base); } .sm-protocol:hover { @@ -349,15 +349,15 @@ } .sm-protocol-name { - font-weight: 600; + font-weight: var(--fw-semibold); color: var(--text); } .sm-protocol-kind, .sm-protocol-poll { - font-size: 11px; + font-size: var(--fs-xs); color: var(--text-muted); - font-family: 'Courier New', monospace; + font-family: var(--font-mono); } .sm-protocol-poll {