From 91a8b85f3879145ce98edaa025e8779856d3275e Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Thu, 9 Apr 2026 13:01:14 +0200 Subject: [PATCH] update --- .paul/governance/governance_2026-04-09.jsonl | 22 ++ .vscode/ftp-kr.sync.cache.json | 229 ++++++++++++++++++- public/assets/css/login.css | 2 +- 3 files changed, 244 insertions(+), 9 deletions(-) create mode 100644 .paul/governance/governance_2026-04-09.jsonl diff --git a/.paul/governance/governance_2026-04-09.jsonl b/.paul/governance/governance_2026-04-09.jsonl new file mode 100644 index 0000000..4eb1b5d --- /dev/null +++ b/.paul/governance/governance_2026-04-09.jsonl @@ -0,0 +1,22 @@ +{"ts":"2026-04-09T10:03:09Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/orderPRO/.paul/phases/92-buyer-name-copy\"\",\"description\":\"Create phase directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":fa","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:03:39Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\phases\\\\92-buyer-name-copy\\\\92-01-PLAN.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:03:50Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:08:36Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\resources\\\\views\\\\orders\\\\show.php","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:08:55Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\resources\\\\views\\\\orders\\\\show.php","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:09:24Z","tool":"Bash","cmd":"wc -l \"C:/visual studio code/projekty/orderPRO/resources/scss/shared/_ui-components.scss\"\",\"description\":\"Count lines in ui-components scss\"},\"tool_response\":{\"stdout\":\"287 C:/visual studi","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:09:34Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\resources\\\\scss\\\\shared\\\\_ui-components.scss","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:09:41Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/orderPRO\" && npm run build 2>&1 | tail -5\",\"description\":\"Build SCSS to CSS\"},\"tool_response\":{\"stdout\":\"npm error Missing script: \"build\"\\nnpm error\","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:09:47Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/orderPRO\" && npm run 2>&1\",\"description\":\"List available npm scripts\"},\"tool_response\":{\"stdout\":\"Lifecycle scripts included in orderpro@1.0.0:\\n test\","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:09:56Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/orderPRO\" && npm run build:css 2>&1\",\"description\":\"Build SCSS to CSS\"},\"tool_response\":{\"stdout\":\"> orderpro@1.0.0 build:css\\n> sass --style=compressed","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:10:08Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:13:19Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\phases\\\\92-buyer-name-copy\\\\92-01-SUMMARY.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:13:36Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:13:41Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\PROJECT.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:13:47Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:13:52Z","tool":"Edit","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\ROADMAP.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:14:04Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\STATE.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:14:10Z","tool":"Bash","cmd":"mkdir -p \"C:/visual studio code/projekty/orderPRO/.paul/changelog\"\",\"description\":\"Create changelog directory\"},\"tool_response\":{\"stdout\":\"\",\"stderr\":\"\",\"interrupted\":false,\"isImag","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:14:19Z","tool":"Write","file":"C:\\\\visual studio code\\\\projekty\\\\orderPRO\\\\.paul\\\\changelog\\\\2026-04-09.md","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:14:27Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/orderPRO\" && git status --short\",\"description\":\"Check git status\"},\"tool_response\":{\"stdout\":\" M .paul/PROJECT.md\\n M .paul/ROADMAP.md\\n M .paul/STATE.","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T10:14:36Z","tool":"Bash","cmd":"cd \"C:/visual studio code/projekty/orderPRO\" && git add resources/views/orders/show.php resources/scss/shared/_ui-components.scss public/assets/css/app.css .paul/phases/92-buyer-name-copy/ .paul/cha","cwd":"/c/visual studio code/projekty/orderPRO"} +{"ts":"2026-04-09T11:00:11Z","tool":"Write","file":"D:\\\\notatnik-ai\\\\programowanie\\\\global-agent.md","cwd":"/c/visual studio code/projekty/orderPRO"} diff --git a/.vscode/ftp-kr.sync.cache.json b/.vscode/ftp-kr.sync.cache.json index 0259d25..f37cfa9 100644 --- a/.vscode/ftp-kr.sync.cache.json +++ b/.vscode/ftp-kr.sync.cache.json @@ -119,7 +119,220 @@ "lmtime": 1771943170048, "modified": true }, - "clients": {}, + "clients": { + "windows": { + "OrderPROPrint": { + "Services": { + "PollingService.cs": { + "type": "-", + "size": 5430, + "lmtime": 1775684710854, + "modified": false + }, + "PrintApiClient.cs": { + "type": "-", + "size": 1958, + "lmtime": 1775684719491, + "modified": false + }, + "PrintService.cs": { + "type": "-", + "size": 882, + "lmtime": 0, + "modified": false + } + }, + "obj": { + "Debug": { + "net8.0-windows": { + "apphost.exe": { + "type": "-", + "size": 152064, + "lmtime": 1775684730896, + "modified": false + }, + ".NETCoreApp,Version=v8.0.AssemblyAttributes.cs": { + "type": "-", + "size": 198, + "lmtime": 0, + "modified": false + }, + "OrderPRO.196A0DA8.Up2Date": { + "type": "-", + "size": 0, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.AssemblyInfo.cs": { + "type": "-", + "size": 1292, + "lmtime": 1775684727798, + "modified": false + }, + "OrderPROPrint.AssemblyInfoInputs.cache": { + "type": "-", + "size": 66, + "lmtime": 1775684727782, + "modified": false + }, + "OrderPROPrint.assets.cache": { + "type": "-", + "size": 1373, + "lmtime": 1775684727438, + "modified": false + }, + "OrderPROPrint.csproj.AssemblyReference.cache": { + "type": "-", + "size": 432, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.csproj.CoreCompileInputs.cache": { + "type": "-", + "size": 66, + "lmtime": 1775684727815, + "modified": false + }, + "OrderPROPrint.csproj.FileListAbsolute.txt": { + "type": "-", + "size": 2358, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.dll": { + "type": "-", + "size": 34816, + "lmtime": 1775684730716, + "modified": false + }, + "OrderPROPrint.GeneratedMSBuildEditorConfig.editorconfig": { + "type": "-", + "size": 888, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.genruntimeconfig.cache": { + "type": "-", + "size": 66, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.GlobalUsings.g.cs": { + "type": "-", + "size": 377, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.pdb": { + "type": "-", + "size": 21288, + "lmtime": 1775684730692, + "modified": false + }, + "ref": { + "OrderPROPrint.dll": { + "type": "-", + "size": 11264, + "lmtime": 1775684730717, + "modified": false + } + }, + "refint": { + "OrderPROPrint.dll": { + "type": "-", + "size": 11264, + "lmtime": 1775684730717, + "modified": false + } + } + } + }, + "OrderPROPrint.csproj.nuget.dgspec.json": { + "type": "-", + "size": 2688, + "lmtime": 1775684727184, + "modified": false + }, + "OrderPROPrint.csproj.nuget.g.props": { + "type": "-", + "size": 1730, + "lmtime": 0, + "modified": false + }, + "OrderPROPrint.csproj.nuget.g.targets": { + "type": "-", + "size": 150, + "lmtime": 0, + "modified": false + }, + "project.assets.json": { + "type": "-", + "size": 4373, + "lmtime": 1775684727173, + "modified": false + }, + "project.nuget.cache": { + "type": "-", + "size": 497, + "lmtime": 1775684727180, + "modified": false + }, + "Release": {} + }, + "bin": { + "Debug": { + "net8.0-windows": { + "nl": {}, + "OrderPROPrint.deps.json": { + "type": "-", + "size": 1659, + "lmtime": 1775684730986, + "modified": false + }, + "OrderPROPrint.dll": { + "type": "-", + "size": 34816, + "lmtime": 1775684730716, + "modified": false + }, + "OrderPROPrint.exe": { + "type": "-", + "size": 152064, + "lmtime": 1775684730896, + "modified": false + }, + "OrderPROPrint.pdb": { + "type": "-", + "size": 21288, + "lmtime": 1775684730692, + "modified": false + }, + "OrderPROPrint.runtimeconfig.json": { + "type": "-", + "size": 386, + "lmtime": 1775684731018, + "modified": false + }, + "PdfiumViewer.dll": { + "type": "-", + "size": 115712, + "lmtime": 0, + "modified": false + }, + "x64": { + "pdfium.dll": { + "type": "-", + "size": 15807488, + "lmtime": 1523160524000, + "modified": false + } + } + } + } + } + } + } + }, "composer-setup.php": { "type": "-", "size": 59524, @@ -2459,8 +2672,8 @@ "routes": { "web.php": { "type": "-", - "size": 29230, - "lmtime": 1775673880474, + "size": 29262, + "lmtime": 1775684219403, "modified": false } }, @@ -2501,8 +2714,8 @@ "Database": { "ConnectionFactory.php": { "type": "-", - "size": 1175, - "lmtime": 1771691906777, + "size": 1250, + "lmtime": 1775683345873, "modified": false }, "Migrator.php": { @@ -3063,8 +3276,8 @@ }, "AllegroOrderImportService.php": { "type": "-", - "size": 32098, - "lmtime": 1775675664259, + "size": 32746, + "lmtime": 1775684128009, "modified": false }, "AllegroOrdersSyncService.php": { @@ -3472,7 +3685,7 @@ "test-results": { "type": "-", "size": 3404, - "lmtime": 1775317059568, + "lmtime": 1775684251816, "modified": false } } diff --git a/public/assets/css/login.css b/public/assets/css/login.css index b10ff7d..7682eda 100644 --- a/public/assets/css/login.css +++ b/public/assets/css/login.css @@ -1 +1 @@ -:root{--c-primary: #6690f4;--c-primary-dark: #3164db;--c-action-primary: #0f766e;--c-action-primary-dark: #0b5f59;--c-bg: #f4f6f9;--c-surface: #ffffff;--c-text: #4e5e6a;--c-text-strong: #2d3748;--c-muted: #718096;--c-border: #b0bec5;--c-danger: #cc0000;--focus-ring: 0 0 0 3px rgba(102, 144, 244, 0.15);--focus-ring-action: 0 0 0 3px rgba(15, 118, 110, 0.18);--shadow-card: 0 1px 4px rgba(0, 0, 0, 0.06)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 12px;border:1px solid rgba(0,0,0,0);border-radius:8px;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .1s ease}.btn--primary{color:#fff;background:var(--c-action-primary)}.btn--primary:hover{background:var(--c-action-primary-dark)}.btn--secondary{color:var(--c-text-strong);border-color:var(--c-border);background:var(--c-surface)}.btn--secondary:hover{border-color:#cbd5e0;background:#f8fafc}.btn--danger{color:#fff;border-color:#b91c1c;background:#dc2626}.btn--danger:hover{border-color:#991b1b;background:#b91c1c}.btn--sm{min-height:28px;padding:3px 10px;font-size:12px}.btn--block{width:100%}.btn--disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring-action);border-color:var(--c-action-primary)}.form-control{width:100%;min-height:30px;border:1px solid var(--c-border);border-radius:6px;padding:4px 8px;font:inherit;color:var(--c-text-strong);background:#fff;transition:border-color .2s ease,box-shadow .2s ease}.form-control:focus{outline:none;border-color:var(--c-primary);box-shadow:var(--focus-ring)}.input{min-height:34px;border:1px solid var(--c-border);border-radius:8px;padding:5px 10px;font:inherit;color:var(--c-text-strong);background:#fff}.input--sm{min-height:28px;padding:3px 8px;font-size:12px}.flash{padding:8px 12px;border-radius:6px;font-size:13px}.flash--success{border:1px solid #b7ebcf;background:#f0fff6;color:#0f6b39}.flash--error{border:1px solid #fed7d7;background:#fff5f5;color:var(--c-danger)}.alert{padding:12px 14px;border-radius:8px;border:1px solid rgba(0,0,0,0);font-size:13px;min-height:44px}.alert--danger{border-color:#fed7d7;background:#fff5f5;color:var(--c-danger)}.alert--success{border-color:#b7ebcf;background:#f0fff6;color:#0f6b39}.alert--warning{border-color:#f7dd8b;background:#fff8e8;color:#815500}.form-field{display:grid;gap:5px}.field-label{color:var(--c-text-strong);font-size:13px;font-weight:600}.table-wrap{width:100%;overflow-x:auto}.table-wrap--visible{overflow:visible !important;overflow-x:visible !important}.table{width:100%;border-collapse:collapse;background:var(--c-surface)}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--c-border);text-align:left}.table th{color:var(--c-text-strong);font-weight:700;background:#f8fafc}.table--details th{white-space:nowrap}.table--details th:first-child,.table--details td:first-child{width:36px;text-align:center}.pagination{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.pagination__item{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 10px;border-radius:8px;border:1px solid var(--c-border);color:var(--c-text-strong);background:var(--c-surface);text-decoration:none;font-weight:600}.pagination__item:hover{border-color:#cbd5e0;background:#f8fafc}.pagination__item.is-active{border-color:var(--c-primary);color:var(--c-primary);background:#edf2ff}.receipt-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid var(--c-text-strong)}.receipt-header__seller{flex:1}.receipt-header__seller strong{font-size:14px;display:block;margin-bottom:4px}.receipt-header__title{text-align:right}.receipt-header__title h1{font-size:18px;font-weight:700;margin-bottom:4px}.receipt-print{max-width:700px;margin:0 auto}@media print{.receipt-print{max-width:100%}}:root{--shadow-card: 0 20px 50px rgba(22, 34, 58, 0.14)}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:"Roboto","Segoe UI",sans-serif;color:var(--c-text);background:var(--c-bg);overflow-x:hidden}.bg-orb{position:fixed;width:460px;height:460px;border-radius:999px;filter:blur(28px);z-index:0;opacity:.45;pointer-events:none}.bg-orb-left{top:-200px;left:-180px;background:radial-gradient(circle, rgba(102, 144, 244, 0.48) 0%, rgba(102, 144, 244, 0) 70%)}.bg-orb-right{right:-200px;bottom:-220px;background:radial-gradient(circle, rgba(30, 42, 58, 0.36) 0%, rgba(30, 42, 58, 0) 70%)}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px 20px;position:relative;z-index:1}.login-card{width:100%;max-width:430px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;box-shadow:var(--shadow-card);padding:34px 30px 28px;animation:card-enter 420ms ease-out}.login-header{margin-bottom:24px}.login-badge{display:inline-block;margin:0 0 14px;padding:5px 12px;border-radius:999px;border:1px solid #d9e2ff;background:#eef2ff;color:#3f5faf;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}h1{margin:0;color:var(--c-text-strong);font-size:clamp(1.6rem,2.5vw,1.9rem);line-height:1.15;font-weight:700}.login-subtitle{margin:10px 0 0;font-size:15px;line-height:1.55;color:var(--c-muted)}.login-alert{margin-bottom:18px}.login-alert-placeholder{opacity:.56}.login-form{display:grid;gap:16px}.form-field{display:grid;gap:7px}.field-label{color:var(--c-text-strong);font-size:13px;font-weight:600}.login-form .form-control{min-height:46px;padding:0 14px;border-width:2px}.login-form .form-control::placeholder{color:#cbd5e0}.login-submit{margin-top:2px;font-size:15px;min-height:48px}@keyframes card-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width: 640px){.login-page{padding:18px 14px}.login-card{padding:24px 20px 20px}h1{font-size:1.55rem}} +:root{--c-primary: #6690f4;--c-primary-dark: #3164db;--c-action-primary: #0f766e;--c-action-primary-dark: #0b5f59;--c-bg: #f4f6f9;--c-surface: #ffffff;--c-text: #4e5e6a;--c-text-strong: #2d3748;--c-muted: #718096;--c-border: #b0bec5;--c-danger: #cc0000;--focus-ring: 0 0 0 3px rgba(102, 144, 244, 0.15);--focus-ring-action: 0 0 0 3px rgba(15, 118, 110, 0.18);--shadow-card: 0 1px 4px rgba(0, 0, 0, 0.06)}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 12px;border:1px solid rgba(0,0,0,0);border-radius:8px;font:inherit;font-weight:600;text-decoration:none;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,color .2s ease,transform .1s ease}.btn--primary{color:#fff;background:var(--c-action-primary)}.btn--primary:hover{background:var(--c-action-primary-dark)}.btn--secondary{color:var(--c-text-strong);border-color:var(--c-border);background:var(--c-surface)}.btn--secondary:hover{border-color:#cbd5e0;background:#f8fafc}.btn--danger{color:#fff;border-color:#b91c1c;background:#dc2626}.btn--danger:hover{border-color:#991b1b;background:#b91c1c}.btn--sm{min-height:28px;padding:3px 10px;font-size:12px}.btn--block{width:100%}.btn--disabled{opacity:.3;cursor:not-allowed;pointer-events:none}.btn:active{transform:translateY(1px)}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring-action);border-color:var(--c-action-primary)}.form-control{width:100%;min-height:30px;border:1px solid var(--c-border);border-radius:6px;padding:4px 8px;font:inherit;color:var(--c-text-strong);background:#fff;transition:border-color .2s ease,box-shadow .2s ease}.form-control:focus{outline:none;border-color:var(--c-primary);box-shadow:var(--focus-ring)}.input{min-height:34px;border:1px solid var(--c-border);border-radius:8px;padding:5px 10px;font:inherit;color:var(--c-text-strong);background:#fff}.input--sm{min-height:28px;padding:3px 8px;font-size:12px}.flash{padding:8px 12px;border-radius:6px;font-size:13px}.flash--success{border:1px solid #b7ebcf;background:#f0fff6;color:#0f6b39}.flash--error{border:1px solid #fed7d7;background:#fff5f5;color:var(--c-danger)}.alert{padding:12px 14px;border-radius:8px;border:1px solid rgba(0,0,0,0);font-size:13px;min-height:44px}.alert--danger{border-color:#fed7d7;background:#fff5f5;color:var(--c-danger)}.alert--success{border-color:#b7ebcf;background:#f0fff6;color:#0f6b39}.alert--warning{border-color:#f7dd8b;background:#fff8e8;color:#815500}.form-field{display:grid;gap:5px}.field-label{color:var(--c-text-strong);font-size:13px;font-weight:600}.table-wrap{width:100%;overflow-x:auto}.table-wrap--visible{overflow:visible !important;overflow-x:visible !important}.table{width:100%;border-collapse:collapse;background:var(--c-surface)}.table th,.table td{padding:10px 12px;border-bottom:1px solid var(--c-border);text-align:left}.table th{color:var(--c-text-strong);font-weight:700;background:#f8fafc}.table--details th{white-space:nowrap}.table--details th:first-child,.table--details td:first-child{width:36px;text-align:center}.pagination{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.pagination__item{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 10px;border-radius:8px;border:1px solid var(--c-border);color:var(--c-text-strong);background:var(--c-surface);text-decoration:none;font-weight:600}.pagination__item:hover{border-color:#cbd5e0;background:#f8fafc}.pagination__item.is-active{border-color:var(--c-primary);color:var(--c-primary);background:#edf2ff}.receipt-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;border-bottom:2px solid var(--c-text-strong)}.receipt-header__seller{flex:1}.receipt-header__seller strong{font-size:14px;display:block;margin-bottom:4px}.receipt-header__title{text-align:right}.receipt-header__title h1{font-size:18px;font-weight:700;margin-bottom:4px}.receipt-print{max-width:700px;margin:0 auto}@media print{.receipt-print{max-width:100%}}.copy-name-row{display:flex;align-items:center;gap:6px}.copy-btn-inline{display:inline-flex;align-items:center;justify-content:center;background:none;border:none;padding:2px;cursor:pointer;color:var(--c-text-muted, #999);border-radius:3px;transition:color .15s;flex-shrink:0}.copy-btn-inline:hover{color:var(--c-primary)}.copy-btn-inline .check-icon{color:var(--c-action-primary)}:root{--shadow-card: 0 20px 50px rgba(22, 34, 58, 0.14)}*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:"Roboto","Segoe UI",sans-serif;color:var(--c-text);background:var(--c-bg);overflow-x:hidden}.bg-orb{position:fixed;width:460px;height:460px;border-radius:999px;filter:blur(28px);z-index:0;opacity:.45;pointer-events:none}.bg-orb-left{top:-200px;left:-180px;background:radial-gradient(circle, rgba(102, 144, 244, 0.48) 0%, rgba(102, 144, 244, 0) 70%)}.bg-orb-right{right:-200px;bottom:-220px;background:radial-gradient(circle, rgba(30, 42, 58, 0.36) 0%, rgba(30, 42, 58, 0) 70%)}.login-page{min-height:100vh;display:grid;place-items:center;padding:32px 20px;position:relative;z-index:1}.login-card{width:100%;max-width:430px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:12px;box-shadow:var(--shadow-card);padding:34px 30px 28px;animation:card-enter 420ms ease-out}.login-header{margin-bottom:24px}.login-badge{display:inline-block;margin:0 0 14px;padding:5px 12px;border-radius:999px;border:1px solid #d9e2ff;background:#eef2ff;color:#3f5faf;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}h1{margin:0;color:var(--c-text-strong);font-size:clamp(1.6rem,2.5vw,1.9rem);line-height:1.15;font-weight:700}.login-subtitle{margin:10px 0 0;font-size:15px;line-height:1.55;color:var(--c-muted)}.login-alert{margin-bottom:18px}.login-alert-placeholder{opacity:.56}.login-form{display:grid;gap:16px}.form-field{display:grid;gap:7px}.field-label{color:var(--c-text-strong);font-size:13px;font-weight:600}.login-form .form-control{min-height:46px;padding:0 14px;border-width:2px}.login-form .form-control::placeholder{color:#cbd5e0}.login-submit{margin-top:2px;font-size:15px;min-height:48px}@keyframes card-enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media(max-width: 640px){.login-page{padding:18px 14px}.login-card{padding:24px 20px 20px}h1{font-size:1.55rem}}