:root{--bg:#f4f7fb;--surface:#fff;--text:#172033;--muted:#60708a;--primary:#155eef;--primary-dark:#0f46b8;--success:#067647;--warning:#b54708;--danger:#b42318;--border:#d8e0eb;--shadow:0 18px 50px #1720331f}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{background:linear-gradient(180deg, #edf4ff 0, var(--bg) 340px);color:var(--text);font-family:Arial,Helvetica,sans-serif}a{color:inherit}button,input,select{font:inherit}.page-shell{min-height:100vh;padding:24px 16px 48px}.container{width:min(100%,760px);margin:0 auto}.brand{align-items:center;gap:12px;margin-bottom:20px;display:flex}.brand-mark{background:var(--primary);color:#fff;letter-spacing:.5px;border-radius:14px;place-items:center;width:48px;height:48px;font-weight:800;display:grid;box-shadow:0 10px 24px #155eef4d}.brand h1,.brand p{margin:0}.brand h1{font-size:1.22rem}.brand p{color:var(--muted);margin-top:2px;font-size:.92rem}.card{background:var(--surface);box-shadow:var(--shadow);border:1px solid #d8e0ebe6;border-radius:22px;padding:24px}.card+.card{margin-top:18px}.hero-title{margin:0 0 8px;font-size:clamp(1.7rem,5vw,2.4rem)}.hero-copy{color:var(--muted);margin:0 0 22px;line-height:1.55}.grid{gap:16px;display:grid}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.field{gap:7px;display:grid}.field label{font-size:.92rem;font-weight:700}.field small{color:var(--muted)}.input,.select{border:1px solid var(--border);width:100%;min-height:48px;color:var(--text);background:#fff;border-radius:12px;outline:none;padding:11px 13px}.input:focus,.select:focus{border-color:var(--primary);box-shadow:0 0 0 4px #155eef1f}.phone-row{grid-template-columns:120px 1fr;gap:10px;display:grid}.checkbox-row{align-items:flex-start;gap:10px;line-height:1.4;display:flex}.checkbox-row input{margin-top:3px}.summary{background:#f8faff;border:1px solid #dfe8f7;border-radius:16px;gap:10px;padding:16px;display:grid}.summary-row{justify-content:space-between;gap:18px;display:flex}.summary-row span:first-child{color:var(--muted)}.summary-row strong{text-align:right}.button{background:var(--primary);color:#fff;cursor:pointer;border:0;border-radius:13px;width:100%;min-height:50px;padding:12px 18px;font-weight:800}.button:hover{background:var(--primary-dark)}.button:disabled{opacity:.55;cursor:not-allowed}.button.secondary{color:var(--text);background:#e9eff9}.button.danger{background:var(--danger)}.alert{border-radius:12px;margin-bottom:16px;padding:12px 14px;line-height:1.45}.alert.error{color:var(--danger);background:#fff0ee;border:1px solid #ffd1cc}.alert.success{color:var(--success);background:#ecfdf3;border:1px solid #abefc6}.alert.warning{color:var(--warning);background:#fffaeb;border:1px solid #fedf89}.muted{color:var(--muted)}.center{text-align:center}.status-badge{letter-spacing:.03em;border-radius:999px;align-items:center;padding:7px 11px;font-size:.82rem;font-weight:800;display:inline-flex}.status-badge.active{color:var(--success);background:#dcfae6}.status-badge.expired{color:var(--danger);background:#fee4e2}.status-badge.pending,.status-badge.pending_card{color:var(--warning);background:#fff1c2}.status-badge.paid_zelle,.status-badge.courtesy{color:var(--success);background:#dcfae6}.result-card{border:1px solid var(--border);border-radius:16px;gap:12px;padding:16px;display:grid}.result-card+.result-card{margin-top:12px}.result-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.result-header h3{margin:0}.result-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px;display:grid}.result-grid div{gap:2px;display:grid}.result-grid small{color:var(--muted)}.toolbar{align-items:center;gap:10px;margin-bottom:16px;display:flex}.toolbar .input{flex:1}.toolbar .button{width:auto;min-width:112px}.top-nav{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.top-nav a{color:var(--primary);font-weight:700;text-decoration:none}.receipt-code{letter-spacing:.04em;font-size:1.25rem;font-weight:900}.sign-page{background:#fff;min-height:100vh;padding:28px}.sign-sheet{text-align:center;border:8px solid #111;width:min(100%,700px);margin:0 auto;padding:28px}.sign-sheet h1{margin:0;font-size:clamp(2.2rem,8vw,4.8rem);line-height:.95}.sign-sheet h2{margin:16px 0;font-size:clamp(1.4rem,4vw,2.5rem)}.sign-sheet img{width:min(72vw,360px);height:auto}.sign-sheet .url{font-size:clamp(1.1rem,4vw,1.8rem);font-weight:800}.sign-sheet .instructions{font-size:clamp(1rem,3vw,1.35rem);line-height:1.45}@media (max-width:620px){.grid.two,.result-grid{grid-template-columns:1fr}.card{border-radius:18px;padding:19px}.toolbar{flex-direction:column;align-items:stretch}.toolbar .button{width:100%}}@media print{.no-print{display:none!important}.sign-page{padding:0}.sign-sheet{border-width:10px;align-content:center;width:100%;min-height:100vh;display:grid}}.button.compact{width:auto;min-height:40px;padding:9px 14px}.nav-links{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.textarea{resize:vertical;min-height:100px}.input-suffix{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.input-suffix span{color:var(--muted);font-weight:800}hr{border:0;border-top:1px solid var(--border);width:100%}.location-banner,.location-choice{border:1px solid var(--border);background:#f8faff;border-radius:15px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.location-banner div,.location-choice div{gap:3px;display:grid}.location-banner small,.location-choice small{color:var(--muted)}.location-choice{background:#fff;text-decoration:none}.location-choice:hover{border-color:var(--primary);box-shadow:0 0 0 3px #155eef14}.location-list{gap:12px;display:grid}.availability{white-space:nowrap;border-radius:999px;align-items:center;padding:7px 11px;font-size:.82rem;font-weight:800;display:inline-flex}.availability.open{color:var(--success);background:#dcfae6}.availability.full{color:var(--danger);background:#fee4e2}.wide-shell{padding-top:20px}.wide-container{width:min(100%,1180px);margin:0 auto}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px;display:grid}.metric-card,.network-section,.lot-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:0 10px 30px #17203312}.metric-card{gap:6px;padding:18px;display:grid}.metric-card small,.metric-card span{color:var(--muted)}.metric-card strong{font-size:1.75rem}.network-section{margin-top:18px;padding:22px}.section-heading{justify-content:space-between;align-items:center;gap:18px;margin-bottom:18px;display:flex}.section-heading h1,.section-heading h2,.section-heading p{margin:0}.section-heading p{color:var(--muted);margin-top:5px}.lot-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px;display:grid}.lot-card{box-shadow:none;gap:14px;padding:17px;display:grid}.occupancy-track{background:#e8edf5;border-radius:999px;height:9px;overflow:hidden}.occupancy-track span{background:var(--primary);border-radius:inherit;height:100%;display:block}.card-links{flex-wrap:wrap;gap:14px;display:flex}.card-links a{color:var(--primary);font-weight:700;text-decoration:none}.statement-generator{grid-template-columns:minmax(220px,1fr) 180px auto;align-items:start;gap:10px;display:grid}.span-all{grid-column:1/-1}.statement-list{gap:10px;margin-top:18px;display:grid}.statement-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;text-decoration:none;display:flex}.statement-row>div{gap:4px;display:grid}.statement-row>div:last-child{justify-items:end}.statement-row small{color:var(--muted)}.status-badge.draft{color:#344054;background:#eef2f6}.status-badge.approved{color:#075985;background:#e0f2fe}.status-badge.paid{color:var(--success);background:#dcfae6}.status-badge.void,.status-badge.refunded,.status-badge.canceled,.status-badge.failed,.status-badge.force_logged_out{color:var(--danger);background:#fee4e2}.status-badge.needs_review{color:#93370d;background:#fff1c2}.statement-page{background:#edf1f7;min-height:100vh;padding:24px}.statement-document{width:min(100%,1050px);box-shadow:var(--shadow);background:#fff;margin:0 auto;padding:34px}.statement-document>.no-print{margin-bottom:18px}.statement-document>.no-print a{color:var(--primary);font-weight:700;text-decoration:none}.statement-title-row,.statement-parties{justify-content:space-between;gap:30px;display:flex}.statement-title-row{border-bottom:3px solid var(--text);padding-bottom:18px}.statement-title-row h1,.statement-title-row p{margin:0}.statement-title-row p{color:var(--muted);margin-top:5px}.statement-status{align-content:start;justify-items:end;display:grid}.statement-status strong{font-size:1.2rem}.statement-parties{padding:20px 0}.statement-parties>div{gap:4px;min-width:0;display:grid}.statement-parties small{color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.statement-parties span{color:var(--muted)}.statement-summary-table,.transaction-table{border-collapse:collapse;width:100%}.statement-summary-table{margin:6px 0 18px}.statement-summary-table th,.statement-summary-table td{border-bottom:1px solid var(--border);padding:11px 8px}.statement-summary-table th{text-align:left}.statement-summary-table td{text-align:right;font-weight:700}.statement-summary-table .total-row th,.statement-summary-table .total-row td{border-top:2px solid var(--text);border-bottom:2px solid var(--text);font-size:1.2rem}.statement-note{color:var(--muted);line-height:1.5}.table-scroll{overflow-x:auto}.transaction-table{font-size:.86rem}.transaction-table th,.transaction-table td{border-bottom:1px solid var(--border);text-align:right;white-space:nowrap;padding:9px 8px}.transaction-table th:first-child,.transaction-table td:first-child,.transaction-table th:nth-child(2),.transaction-table td:nth-child(2){text-align:left}.statement-actions{flex-wrap:wrap;gap:10px;margin-top:24px;display:flex}.sign-location{margin:0 0 10px;font-size:1.25rem;font-weight:900}.sign-rate{margin:10px 0;font-size:1.45rem;font-weight:900}.sign-code{letter-spacing:.08em;font-weight:800}@media (max-width:900px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lot-grid{grid-template-columns:1fr}}@media (max-width:620px){.metric-grid{grid-template-columns:1fr}.section-heading,.statement-title-row,.statement-parties,.statement-row{flex-direction:column;align-items:stretch}.statement-generator{grid-template-columns:1fr}.statement-row>div:last-child{justify-items:start}.statement-document{padding:20px}.statement-page{padding:0}}@media print{body{background:#fff}.statement-page{background:#fff;padding:0}.statement-document{width:100%;max-width:none;box-shadow:none;padding:0}.transaction-table{font-size:.72rem}}.filters-grid{grid-template-columns:repeat(6,minmax(0,1fr)) auto;gap:10px;display:grid}.payments-table th:last-child,.payments-table td:last-child{text-align:right}.payments-table{min-width:1180px}.payments-col-created{width:118px}.payments-col-lot{width:98px}.payments-col-vehicle{width:176px}.payments-col-rate{width:148px}.payments-col-method{width:96px}.payments-col-status{width:116px}.payments-col-amount{width:96px}.payments-col-paid-through{width:156px}.payments-col-staff{width:180px}.payments-col-action{width:104px}.payments-table th:nth-child(3),.payments-table td:nth-child(3){text-align:left}.payments-paid-through-cell,.payments-staff-cell,.payment-action-cell,.payments-vehicle-cell{white-space:nowrap}.payment-record-link-wrap{margin-top:.3rem}.payment-record-link{font-size:.78rem;font-weight:600}.receipt-layout{grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);align-items:start;gap:18px;display:grid}.qr-preview{border:1px solid var(--border);background:#f8faff;border-radius:16px;place-items:center;padding:18px;display:grid}.qr-preview img{width:min(100%,280px);height:auto}.receipt-page .brand{margin-bottom:14px}.receipt-document{width:min(100%,760px)}.receipt-panel h1,.receipt-panel p{margin:0}.receipt-panel,.receipt-duplicate-page{gap:10px;display:grid}.receipt-copy{border:1px solid var(--border);page-break-inside:avoid;break-inside:avoid;border-radius:12px;padding:10px 12px}.receipt-copy-header{letter-spacing:.08em;justify-content:flex-end;margin-bottom:6px;font-size:.78rem;display:flex}.receipt-copy h1,.receipt-copy p{margin:0}.receipt-copy h1{font-size:1.05rem}.receipt-copy>p{color:var(--muted);font-size:.82rem}.compact-summary{gap:6px;margin-top:8px;padding:10px}.compact-summary .summary-row{font-size:.82rem}.compact-receipt-code{font-size:1rem}.compact-note{margin-top:8px;font-size:.76rem}.receipt-cut-line{text-align:center;letter-spacing:.06em;color:var(--muted);border-top:1px dashed #7b879a;margin:6px 0;padding-top:3px;font-size:.73rem;position:relative}.receipt-cut-line span{background:#fff;padding:0 8px}@page{size:letter portrait;margin:.4in}@media print{.receipt-page{font-size:10px}.receipt-document{padding:0!important}.receipt-duplicate-page{grid-template-rows:minmax(0,1fr) auto minmax(0,1fr);gap:6px;min-height:10.2in}.receipt-copy{border-color:#aab4c4;border-radius:8px;min-height:0;padding:8px 10px}.receipt-copy-header{margin-bottom:4px;font-size:9px}.receipt-copy h1{font-size:13px}.receipt-copy>p{font-size:9px}.compact-summary{gap:4px;margin-top:6px;padding:7px 8px}.compact-summary .summary-row{font-size:9px}.compact-receipt-code{font-size:11px}.compact-note{margin-top:6px;font-size:8px}.receipt-cut-line{margin:2px 0;padding-top:2px;font-size:8px}}.status-badge.expired_protected{color:#93370d;background:#fff1c2}.status-badge.expired_tow_eligible,.status-badge.tow_eligible,.status-badge.tow_authorized,.status-badge.towed{color:var(--danger);background:#fee4e2}.status-badge.grace,.status-badge.observed,.status-badge.notice_sent,.status-badge.payment_pending{color:#075985;background:#e0f2fe}.status-badge.disputed{color:#6941c6;background:#f4ebff}.terminal-strip,.terminal-identity{border:1px solid var(--border);background:#f8faff;border-radius:14px;grid-template-columns:minmax(180px,1fr) minmax(180px,280px) auto;align-items:center;gap:10px;margin-bottom:16px;padding:12px;display:grid}.terminal-strip>div,.terminal-identity>div{gap:3px;display:grid}.terminal-strip small,.terminal-identity small{color:var(--muted)}.terminal-identity{grid-template-columns:1fr auto}.enforcement-observe{margin:18px 0}.enforcement-list{gap:14px;display:grid}.evidence-form{grid-template-columns:180px minmax(220px,1fr) auto;align-items:center;gap:10px;display:grid}.action-row{flex-wrap:wrap;gap:10px;display:flex}.tow-authorization-form{background:#fff6f5;border:2px solid #fda29b;border-radius:14px;gap:12px;padding:14px;display:grid}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.sign-section{margin:4px 0 12px;font-size:1.4rem;font-weight:900}.enforcement-copy{border-top:2px solid #111;padding-top:14px}@media (pointer:coarse){.button{min-height:56px;font-size:1rem}.input,.select{min-height:54px;font-size:1rem}.result-card{padding:20px}}@media (max-width:760px){.terminal-strip,.terminal-identity,.evidence-form,.grid.three,.filters-grid,.receipt-layout{grid-template-columns:1fr}.terminal-strip .button,.terminal-identity .button,.evidence-form .button{width:100%}}.sms-consent-box{background:#f7faff;border:1px solid #cbd8eb;border-radius:14px;padding:14px 16px;font-size:.92rem}.sms-consent-box a{font-weight:700;text-decoration:underline}.terms-box{background:#fffaf0;border:1px solid #d9a441;border-radius:14px;padding:16px}.terms-box>strong{text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:1.05rem;display:block}.terms-box p{margin:0 0 12px;line-height:1.5}.terms-checkbox a{font-weight:700;text-decoration:underline}.legal-document{max-width:820px;margin-inline:auto}.legal-section{margin-top:24px}.legal-section h2{margin-bottom:6px;font-size:1.08rem}.legal-section p{line-height:1.65}.sign-risk-box{text-align:left;border:3px solid #111;gap:5px;padding:10px 12px;font-size:11px;line-height:1.25;display:grid}.sign-risk-box strong{text-align:center;font-size:16px}.modal-overlay{z-index:1200;background:#0c121e9e;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-content{background:var(--surface);border:1px solid var(--border);width:min(100%,560px);max-height:min(90vh,760px);box-shadow:var(--shadow);border-radius:16px;overflow:auto}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:14px;padding:16px 18px;display:flex}.modal-header h2{margin:0;font-size:1.14rem}.modal-close{color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:1.5rem;line-height:1}.modal-body{gap:14px;padding:16px 18px 18px;display:grid}.vehicle-info{border:1px solid var(--border);background:#f8faff;border-radius:12px;gap:3px;padding:10px 12px;display:grid}.vehicle-info small{color:var(--muted)}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.staff-time-device{word-break:break-word;max-width:220px;line-height:1.25;white-space:normal!important}.modal-actions .button{width:auto}.visually-hidden{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.plate-scanner{background:#f7faff;border:1px solid #b8c8df;border-radius:16px;gap:14px;margin:14px 0;padding:16px;display:grid}.plate-scanner.compact{margin:0 0 14px}.plate-scanner-heading{justify-content:space-between;align-items:center;gap:14px;display:flex}.plate-scanner-heading>div{gap:4px;display:grid}.plate-scanner-heading strong{font-size:1.05rem}.plate-scanner-heading small{color:var(--muted);line-height:1.35}.plate-camera-shell{background:#060a12;border-radius:14px;min-height:320px;position:relative;overflow:hidden}.plate-camera-video{object-fit:cover;width:100%;min-height:320px;max-height:68vh;display:block}.plate-camera-guide{aspect-ratio:2.1;pointer-events:none;border:4px solid #f8d34c;border-radius:14px;width:70%;position:absolute;top:50%;left:15%;transform:translateY(-50%);box-shadow:0 0 0 9999px #00000057}.plate-camera-guide span{color:#fff;white-space:nowrap;background:#111827;border-radius:999px;padding:5px 12px;font-size:.82rem;position:absolute;top:-34px;left:50%;transform:translate(-50%)}.plate-camera-actions{flex-wrap:wrap;justify-content:center;gap:10px;display:flex;position:absolute;bottom:12px;left:12px;right:12px}.plate-photo-fallback{color:#29466f;font:inherit;cursor:pointer;background:#fff;border:2px dashed #93a8c8;border-radius:12px;padding:16px;font-weight:700}.plate-photo-fallback:disabled{opacity:.55;cursor:not-allowed}.plate-scan-progress{gap:7px;display:grid}.plate-scan-progress>div{background:#dce6f3;border-radius:999px;height:10px;overflow:hidden}.plate-scan-progress>div>span{border-radius:inherit;background:#245b9e;height:100%;transition:width .2s;display:block}.plate-scan-progress small{color:var(--muted);text-transform:capitalize}.plate-scan-result{grid-template-columns:minmax(180px,320px) 1fr;align-items:start;gap:16px;display:grid}.plate-scan-result img{object-fit:contain;background:#111827;border-radius:12px;width:100%;max-height:230px}.plate-confirmation{gap:10px;display:grid}.plate-confirmation label{font-weight:800}.plate-candidate-input{letter-spacing:.12em;text-transform:uppercase;font-weight:900;font-size:1.55rem!important}.ocr-low-confidence{color:#9a3412;font-weight:700}.ocr-alternatives{color:var(--muted);flex-wrap:wrap;align-items:center;gap:7px;font-size:.86rem;display:flex}.ocr-alternatives span{font-weight:700}.ocr-alternatives button{color:#203f69;font:inherit;letter-spacing:.06em;cursor:pointer;background:#fff;border:1px solid #9bb0cd;border-radius:999px;padding:6px 10px;font-weight:800}.ocr-alternatives button:hover,.ocr-alternatives button:focus-visible{background:#eaf2ff}@media (max-width:760px){.plate-scanner-heading,.plate-scan-result{grid-template-columns:1fr;display:grid}.plate-scanner-heading .button{width:100%}.plate-camera-shell,.plate-camera-video{min-height:280px}.plate-camera-actions{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));display:grid}}
