@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600;700;800&display=swap";
.enforce-root{--bg:#f7f7f5;--surface:#fff;--surface-2:#f1f1ee;--surface-3:#e8e8e4;--border:#e2e2dd;--border-strong:#cfcfc8;--text:#0a0a0c;--muted:#6a6a72;--muted-2:#9a9aa2;--primary:#0074c9;--success:#007834;--success-bg:#d8f9dd;--warning:#a96b00;--warning-bg:#ffecc0;--danger:#d01c29;--danger-bg:#ffe8e6;--plate-yellow:#f5c842;--plate-yellow-deep:#c89a1d;--font-sans:-apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}@supports (color:lab(0% 0 0)){.enforce-root{--primary:lab(46.6457% -.178784 -60.0399);--success:lab(43.9578% -49.0421 33.2602);--success-bg:lab(94.8646% -14.8135 9.47288);--warning:lab(50.9641% 24.0543 101.399);--warning-bg:lab(94.4085% 3.25733 27.7726);--danger:lab(45.6514% 66.6325 43.1177);--danger-bg:lab(93.735% 15.3724 8.32428)}}.enforce-stage{background:var(--bg);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex}.enforce-topbar{flex:none;justify-content:space-between;align-items:center;gap:12px;padding:22px 24px 14px;display:flex}.enforce-brand{font-family:var(--font-mono);letter-spacing:.12em;color:var(--muted);text-transform:uppercase;align-items:center;gap:10px;font-size:11px;font-weight:600;display:flex}.enforce-brand-dot{background:var(--success);width:8px;height:8px;box-shadow:0 0 8px var(--success);border-radius:50%}.enforce-officer{font-family:var(--font-mono);color:var(--muted);text-align:right;font-size:11px;line-height:1.4}.enforce-officer b{color:var(--text);font-weight:600}.enforce-body{flex-direction:column;flex:auto;padding:12px 24px 24px;display:flex}.enforce-bottombar{padding:14px 20px calc(20px + env(safe-area-inset-bottom));background:linear-gradient(180deg, transparent 0%, var(--bg) 30%);border-top:1px solid var(--border);flex:none}.enforce-bottombar.no-border{background:0 0;border-top:none}.enforce-restart-btn{background:var(--surface-2);border:1px solid var(--border);width:100%;height:56px;color:var(--text);cursor:pointer;border-radius:16px;justify-content:center;align-items:center;gap:10px;font-size:15px;font-weight:500;transition:background .12s,transform 80ms;display:flex}.enforce-restart-btn:hover{background:var(--surface-3)}.enforce-restart-btn:active{transform:scale(.98)}.enforce-restart-btn .arrow{font-family:var(--font-mono);color:var(--muted)}.enforce-plate-display{background:linear-gradient(180deg, #fde98a 0%, var(--plate-yellow) 100%);box-shadow:0 0 0 3px var(--plate-yellow-deep), 0 8px 20px #0000002e;text-align:center;color:#0a0a0c;border:3px solid #0a0a0c;border-radius:14px;padding:18px 14px 14px;position:relative}.enforce-plate-number{font-family:var(--font-mono);letter-spacing:.08em;text-shadow:1px 1px #00000014;font-size:44px;font-weight:800;line-height:1}.enforce-plate-tag{color:#fff;font-family:var(--font-mono);letter-spacing:.05em;background:#d62828;border-radius:3px;padding:2px 5px;font-size:9px;font-weight:700;position:absolute;top:6px;right:8px}.enforce-plate-input-wrap{background:linear-gradient(180deg, #fde98a 0%, var(--plate-yellow) 100%);box-shadow:0 0 0 3px var(--plate-yellow-deep), 0 12px 28px #00000038;border:3px solid #0a0a0c;border-radius:18px;margin-top:8px;padding:22px 18px 18px;position:relative}.enforce-plate-input{width:100%;font-family:var(--font-mono);text-align:center;color:#0a0a0c;letter-spacing:.08em;text-transform:uppercase;background:0 0;border:none;outline:none;padding:0;font-size:56px;font-weight:800;line-height:1.1}.enforce-plate-input::placeholder{color:#0a0a0c40}.enforce-eyebrow{font-family:var(--font-mono);letter-spacing:.18em;color:var(--muted);text-transform:uppercase;font-size:10px;font-weight:600}.enforce-cta{background:var(--primary);color:#fff;letter-spacing:.01em;cursor:pointer;border:none;border-radius:18px;justify-content:center;align-items:center;gap:10px;width:100%;height:64px;font-size:17px;font-weight:600;transition:filter .12s,transform 80ms;display:flex}.enforce-cta:hover{filter:brightness(1.08)}.enforce-cta:active{transform:scale(.99)}.enforce-cta:disabled{background:var(--surface-2);color:var(--muted-2);cursor:not-allowed}.enforce-cta.warn{background:var(--warning);color:#fff}.enforce-cta.danger{background:var(--danger);color:#fff}.enforce-cta.ghost{border:1px solid var(--border);color:var(--text);background:0 0}.enforce-status-hero{border-radius:22px;margin-top:16px;padding:24px 22px;position:relative;overflow:hidden}.enforce-status-hero.valid{background:var(--success-bg);border:1px solid #5cb572;border:1px solid lab(66.8564% -39.0505 25.526)}.enforce-status-hero.expired{background:var(--warning-bg);border:1px solid #d0901e;border:1px solid lab(65.057% 18.8831 63.965)}.enforce-status-hero.unknown{background:var(--danger-bg);border:1px solid #fa6863;border:1px solid lab(63.4204% 56.5783 32.9929)}.enforce-status-hero.excluded{background:#e6eeff;background:lab(93.9587% .647992 -14.9551);border:1px solid #7f99ef;border:1px solid lab(64.0547% 7.97361 -46.8513)}.enforce-status-hero.wrong_lot{background:#d9f3ff;background:lab(94.2506% -7.60987 -16.2185);border:1px solid #37a8ec;border:1px solid lab(65.0522% -15.1356 -43.7783)}.enforce-status-hero.subscribed{background:var(--success-bg);border:1px solid #5cb572;border:1px solid lab(66.8564% -39.0505 25.526)}.enforce-status-hero.subscriber_outside_hours{background:var(--warning-bg);border:1px solid #d0901e;border:1px solid lab(65.057% 18.8831 63.965)}.enforce-status-hero.permitted{background:var(--success-bg);border:1px solid #5cb572;border:1px solid lab(66.8564% -39.0505 25.526)}.enforce-status-hero.permit_outside_hours{background:var(--warning-bg);border:1px solid #d0901e;border:1px solid lab(65.057% 18.8831 63.965)}.enforce-status-label{font-family:var(--font-mono);letter-spacing:.2em;align-items:center;gap:8px;margin-bottom:6px;font-size:11px;font-weight:700;display:flex}.enforce-status-hero.valid .enforce-status-label{color:var(--success)}.enforce-status-hero.expired .enforce-status-label{color:var(--warning)}.enforce-status-hero.unknown .enforce-status-label{color:var(--danger)}.enforce-status-hero.excluded .enforce-status-label{color:#4158bd;color:lab(40.1054% 17.0682 -56.8352)}.enforce-status-hero.wrong_lot .enforce-status-label{color:#006aa4;color:lab(41.4449% -10.0948 -52.2652)}.enforce-status-hero.subscribed .enforce-status-label{color:var(--success)}.enforce-status-hero.subscriber_outside_hours .enforce-status-label{color:var(--warning)}.enforce-status-hero.permitted .enforce-status-label{color:var(--success)}.enforce-status-hero.permit_outside_hours .enforce-status-label{color:var(--warning)}.enforce-status-dot{border-radius:50%;width:10px;height:10px}.enforce-status-hero.valid .enforce-status-dot{background:var(--success);box-shadow:0 0 12px var(--success)}.enforce-status-hero.expired .enforce-status-dot{background:var(--warning);box-shadow:0 0 12px var(--warning);animation:1.2s ease-in-out infinite enforce-pulse}.enforce-status-hero.unknown .enforce-status-dot{background:var(--danger);box-shadow:0 0 12px var(--danger);animation:1.2s ease-in-out infinite enforce-pulse}.enforce-status-hero.excluded .enforce-status-dot{background:#4158bd;background:lab(40.1054% 17.0682 -56.8352);box-shadow:0 0 12px #4158bd;box-shadow:0 0 12px lab(40.1054% 17.0682 -56.8352)}.enforce-status-hero.wrong_lot .enforce-status-dot{background:#006aa4;background:lab(41.4449% -10.0948 -52.2652);animation:1.2s ease-in-out infinite enforce-pulse;box-shadow:0 0 12px #006aa4;box-shadow:0 0 12px lab(41.4449% -10.0948 -52.2652)}.enforce-status-hero.subscribed .enforce-status-dot{background:var(--success);box-shadow:0 0 12px var(--success)}.enforce-status-hero.subscriber_outside_hours .enforce-status-dot{background:var(--warning);box-shadow:0 0 12px var(--warning);animation:1.2s ease-in-out infinite enforce-pulse}.enforce-status-hero.permitted .enforce-status-dot{background:var(--success);box-shadow:0 0 12px var(--success)}.enforce-status-hero.permit_outside_hours .enforce-status-dot{background:var(--warning);box-shadow:0 0 12px var(--warning);animation:1.2s ease-in-out infinite enforce-pulse}@keyframes enforce-pulse{0%,to{opacity:1}50%{opacity:.35}}.enforce-status-headline{letter-spacing:-.02em;color:var(--text);margin-bottom:6px;font-size:32px;font-weight:700;line-height:1.05}.enforce-status-sub{font-family:var(--font-mono);color:var(--text);opacity:.78;font-size:13px;line-height:1.5}.enforce-info-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;margin-top:14px;padding:4px 18px}.enforce-info-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:14px 0;display:flex}.enforce-info-row:last-child{border-bottom:none}.enforce-info-row .k{font-family:var(--font-mono);letter-spacing:.14em;color:var(--muted);text-transform:uppercase;font-size:11px}.enforce-info-row .v{font-family:var(--font-mono);color:var(--text);text-align:right;font-size:14px;font-weight:500}.enforce-sms-preview{background:var(--surface);border:1px solid var(--border);border-radius:22px;margin-top:14px;overflow:hidden}.enforce-sms-header{border-bottom:1px solid var(--border);font-family:var(--font-mono);color:var(--muted);letter-spacing:.08em;justify-content:space-between;align-items:center;padding:14px 18px;font-size:11px;display:flex}.enforce-sms-body{background:var(--surface-2);padding:18px}.enforce-sms-bubble{color:#fff;white-space:pre-wrap;background:#0074c9;background:lab(46.8906% -2.37101 -53.5295);border-radius:18px 18px 18px 4px;max-width:92%;padding:14px 16px;font-size:15px;line-height:1.45}.enforce-sms-meta{font-family:var(--font-mono);color:var(--muted-2);letter-spacing:.08em;margin-top:8px;font-size:10px}.enforce-chip-grid{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;display:grid}.enforce-chip-grid.cols-4{grid-template-columns:repeat(4,1fr)}.enforce-chip{background:var(--surface);border:1px solid var(--border);height:48px;color:var(--text);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:500;transition:all .12s;display:flex}.enforce-chip:hover{border-color:var(--border-strong)}.enforce-chip.active{background:var(--surface-3);border-color:var(--primary);color:var(--text);box-shadow:inset 0 0 0 1px var(--primary)}.enforce-color-chip{border:2px solid var(--border);cursor:pointer;border-radius:12px;height:56px;transition:transform .12s,border-color .12s;position:relative}.enforce-color-chip:hover{border-color:var(--border-strong)}.enforce-color-chip.active{border-color:var(--primary);transform:scale(1.04)}.enforce-color-chip.active:after{content:"";border-radius:8px;position:absolute;inset:4px;box-shadow:inset 0 0 0 2px #fff9}.enforce-input{background:var(--surface);border:1px solid var(--border);width:100%;height:52px;color:var(--text);border-radius:14px;outline:none;margin-top:10px;padding:0 16px;font-size:16px;transition:border-color .12s}.enforce-input:focus{border-color:var(--primary)}.enforce-input::placeholder{color:var(--muted-2)}.enforce-photo-slot{border:2px dashed var(--border-strong);background:var(--surface);aspect-ratio:16/10;color:var(--muted);font-family:var(--font-mono);cursor:pointer;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:8px;margin-top:10px;font-size:12px;transition:border-color .12s;display:flex;position:relative;overflow:hidden}.enforce-photo-slot:hover{border-color:var(--primary);color:var(--text)}.enforce-photo-slot.has-photo{border-style:solid;border-color:var(--primary);padding:0}.enforce-photo-slot img{object-fit:cover;width:100%;height:100%}.enforce-photo-slot input[type=file]{opacity:0;cursor:pointer;position:absolute;inset:0}.enforce-ticket{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:20px;margin-top:16px;padding:22px}.enforce-ticket-amount{font-family:var(--font-mono);letter-spacing:-.02em;color:var(--text);margin:8px 0;font-size:56px;font-weight:800;line-height:1}.enforce-ticket-amount .cents{color:var(--muted);font-size:28px}.enforce-ticket-id{font-family:var(--font-mono);color:var(--muted);letter-spacing:.16em;font-size:12px}.enforce-qr-block{border:1px solid var(--border);background:#fff;border-radius:12px;justify-content:center;align-items:center;width:140px;height:140px;margin:18px auto 6px;padding:10px;display:flex}.enforce-qr-block svg{width:100%;height:100%}.enforce-helper{font-family:var(--font-mono);color:var(--muted);text-align:center;letter-spacing:.05em;margin-top:14px;font-size:11px;line-height:1.5}.enforce-form-label{font-family:var(--font-mono);letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-top:18px;font-size:11px;font-weight:600;display:block}.enforce-form-label:first-of-type{margin-top:4px}.enforce-success-burst{text-align:center;padding:28px 0 8px}.enforce-burst-circle{background:var(--success-bg);border:2px solid var(--success);width:88px;height:88px;color:var(--success);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;font-size:36px;font-weight:700;animation:.38s cubic-bezier(.2,1.4,.4,1) enforce-pop;display:flex}@keyframes enforce-pop{0%{transform:scale(0)}to{transform:scale(1)}}.enforce-burst-title{letter-spacing:-.01em;margin-bottom:6px;font-size:28px;font-weight:700}.enforce-burst-sub{font-family:var(--font-mono);color:var(--muted);font-size:13px;line-height:1.5}.enforce-suggest-row{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px;display:flex}.enforce-suggest-chip{font-family:var(--font-mono);letter-spacing:.08em;background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:8px;padding:7px 11px;font-size:11px;font-weight:600;transition:all .12s}.enforce-suggest-chip:hover{color:var(--text);border-color:var(--border-strong)}.enforce-screen-enter{animation:.32s cubic-bezier(.2,.7,.3,1) both enforce-fade-up}@keyframes enforce-fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.enforce-spinner{vertical-align:middle;border:2px solid #fff6;border-top-color:#fff;border-radius:50%;width:16px;height:16px;margin-right:8px;animation:.7s linear infinite enforce-spin;display:inline-block}@keyframes enforce-spin{to{transform:rotate(360deg)}}.enforce-error{color:var(--danger);font-family:var(--font-mono);text-align:center;margin-top:12px;font-size:12px}.enforce-tabs{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;flex:none;gap:6px;margin:0 24px 4px;padding:2px;display:flex}.enforce-tab{color:var(--muted);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;border-radius:11px;flex:1 1 0;padding:10px 0;font-size:12px;font-weight:600;transition:background .12s,color .12s}.enforce-tab.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #00000014}.enforce-list{padding:8px 24px calc(20px + env(safe-area-inset-bottom));flex-direction:column;flex:auto;min-height:0;display:flex}.enforce-list-sort{gap:6px;margin-bottom:12px;display:flex}.enforce-seg{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:12px;flex:1 1 0;padding:12px 0;font-size:14px;font-weight:600;transition:background .12s,color .12s,border-color .12s}.enforce-seg.active{background:var(--primary);border-color:var(--primary);color:#fff}.enforce-list-search{gap:8px;margin-bottom:12px;display:flex}.enforce-list-search-input{border:1px solid var(--border);background:var(--surface);height:48px;color:var(--text);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;border-radius:12px;flex:auto;padding:0 16px;font-size:16px}.enforce-list-search-input::placeholder{color:var(--muted-2);text-transform:none;letter-spacing:0}.enforce-list-filter-btn{border:1px solid var(--border);background:var(--surface-2);height:48px;color:var(--text);font-family:var(--font-mono);letter-spacing:.04em;cursor:pointer;white-space:nowrap;border-radius:12px;flex:none;padding:0 16px;font-size:12px;font-weight:600}.enforce-list-filter-panel{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;flex-wrap:wrap;gap:8px;margin-bottom:14px;padding:12px;display:flex}.enforce-lot-tick{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:500;display:inline-flex}.enforce-lot-tick.on{border-color:var(--primary);color:var(--text);background:var(--surface)}.enforce-lot-dot{border-radius:50%;flex:none;width:10px;height:10px}.enforce-lot-check{color:var(--primary);width:10px;font-weight:700}.enforce-list-rows{flex-direction:column;flex:auto;gap:8px;min-height:0;display:flex;overflow-y:auto}.enforce-list-row{border:1px solid var(--border);background:var(--surface);text-align:left;cursor:pointer;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:14px 16px;transition:background .1s,transform 80ms;display:flex}.enforce-list-row:active{background:var(--surface-2);transform:scale(.99)}.enforce-list-row-main{flex:1 1 0;align-items:center;gap:10px;min-width:0;display:flex}.enforce-list-row-mid{flex:1 1 0;justify-content:center;min-width:0;display:flex}.enforce-list-plate{font-family:var(--font-mono);letter-spacing:.08em;color:var(--text);font-size:18px;font-weight:700}.enforce-list-status-pill{box-sizing:border-box;color:#fff;width:84px;font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;text-align:center;border-radius:8px;flex:none;padding:7px 10px;font-size:10px;font-weight:700}.enforce-list-status-pill.ok{background:var(--success)}.enforce-list-status-pill.bad{background:var(--danger)}.enforce-list-row-right{flex-direction:column;flex:1 1 0;align-items:flex-end;gap:2px;min-width:0;display:flex}.enforce-list-lot-name{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--text);font-size:11px;font-weight:400}.enforce-list-exp-time{font-family:var(--font-mono);color:var(--text);font-size:13px}.enforce-list-exp-rel{color:var(--muted);font-size:11px}.enforce-list-empty{text-align:center;color:var(--muted);flex-direction:column;flex:auto;justify-content:center;align-items:center;padding:40px 12px;font-size:14px;display:flex}@media (min-width:820px){.enforce-stage{max-width:680px}}
