:root{font-family:'DM Sans',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#17251f;background:#f3f6f4;font-synthesis:none;text-rendering:optimizeLegibility;--green:#13795b;--green-dark:#0d5d45;--mint:#e5f4ed;--muted:#728079;--line:#e6ece8;--white:#fff;--red:#ad3939;--shadow:0 14px 42px rgba(23,54,40,.06)}*{box-sizing:border-box}body{margin:0;min-height:100vh}button,input,select{font:inherit}button,.button{cursor:pointer}.shell{min-height:100vh}.topbar{height:72px;background:var(--white);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(18px,4vw,58px);position:sticky;top:0;z-index:5}.brand{display:flex;align-items:center;gap:12px;font-family:Manrope,sans-serif;font-weight:800;letter-spacing:-.03em}.brand-icon{width:40px;height:40px;border-radius:14px;background:var(--green);display:grid;place-items:center;color:#fff;font-size:20px}.brand small{display:block;color:var(--muted);font:500 11px 'DM Sans',sans-serif;letter-spacing:.04em;margin-top:1px}.userbar{display:flex;align-items:center;gap:13px}.user-name{font-size:13px;font-weight:700}.user-role{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.logout{border:1px solid var(--line);background:white;border-radius:10px;padding:9px 13px;color:#425148;font-weight:700}.layout{display:grid;grid-template-columns:230px minmax(0,1fr);max-width:1440px;margin:auto;padding:24px clamp(14px,3vw,40px);gap:24px}.sidebar{background:#fff;border:1px solid var(--line);border-radius:18px;padding:12px;height:max-content;position:sticky;top:96px}.navlink{display:flex;gap:11px;align-items:center;padding:12px 13px;border-radius:11px;color:#54635b;text-decoration:none;font-size:14px;font-weight:600;margin:2px 0}.navlink.active,.navlink:hover{background:var(--mint);color:var(--green-dark)}.content{min-width:0}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:5px 0 23px}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:var(--green);font-size:11px;font-weight:800}.page-head h1{font:800 clamp(25px,3vw,34px) Manrope,sans-serif;letter-spacing:-.045em;margin:6px 0}.page-head p{margin:0;color:var(--muted);font-size:14px}.grid{display:grid;gap:15px}.stats{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:18px}.stat,.card{background:var(--white);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.stat{padding:19px}.stat-label{font-size:12px;color:var(--muted);font-weight:600}.stat-value{font:800 clamp(22px,2.7vw,30px) Manrope,sans-serif;letter-spacing:-.04em;margin-top:10px}.stat-note{font-size:11px;color:#87948d;margin-top:5px}.card{padding:20px;margin-bottom:16px}.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:17px}.card h2{font:750 17px Manrope,sans-serif;letter-spacing:-.025em;margin:0}.card-sub{color:var(--muted);font-size:12px;margin-top:5px}.two-col{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field label{font-size:12px;font-weight:700;color:#45544c}.input,.select{width:100%;height:45px;padding:0 12px;border:1px solid #dce5df;border-radius:10px;background:#fff;color:#24352c;outline:none}.input:focus,.select:focus{border-color:#44a384;box-shadow:0 0 0 3px rgba(19,121,91,.1)}.primary,.secondary,.danger{border:0;border-radius:10px;padding:12px 16px;font-weight:700;transition:.15s}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green-dark);transform:translateY(-1px)}.secondary{background:#eef4f0;color:#335143}.danger{background:#fff0ef;color:var(--red);padding:8px 11px}.full-btn{width:100%;height:48px}.form-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-top:14px}.alert{padding:12px 14px;border-radius:11px;margin-bottom:15px;font-size:13px;background:#edf7f1;color:#166044;border:1px solid #cde9d8}.alert.error{background:#fff1ef;color:#9b3434;border-color:#f1ceca}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px;white-space:nowrap}th{text-align:left;padding:11px 10px;color:#75827a;background:#f7f9f7;font-size:11px;text-transform:uppercase;letter-spacing:.07em}td{padding:12px 10px;border-bottom:1px solid #edf1ee}tbody tr:last-child td{border-bottom:0}.money{font-variant-numeric:tabular-nums;font-weight:700}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:var(--mint);color:var(--green-dark);font-size:11px;font-weight:700}.plate{font:800 15px Manrope,sans-serif;letter-spacing:.06em}.empty{text-align:center;padding:28px;color:var(--muted);font-size:13px}.ticket-form{max-width:720px}.amount-preview{display:flex;justify-content:space-between;align-items:center;background:#f3f8f5;border:1px solid #e3eee7;border-radius:13px;padding:14px 16px;margin-top:4px}.amount-preview strong{font:800 22px Manrope,sans-serif;color:var(--green-dark)}.receipt{max-width:420px;margin:25px auto;background:white;padding:26px;border:1px dashed #aab8ae;border-radius:8px;color:#111}.receipt h2,.receipt p{text-align:center}.receipt h2{font:800 20px Manrope,sans-serif;margin:3px}.receipt p{font-size:12px;color:#66736b}.receipt-line{display:flex;justify-content:space-between;gap:18px;border-bottom:1px dashed #ccd5ce;padding:9px 0;font-size:13px}.receipt-total{font-size:16px;font-weight:800}.receipt-actions{max-width:420px;margin:12px auto;display:flex;gap:10px}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(ellipse at 10% 0%,#e0f2e8,transparent 45%),#f3f6f4}.login-card{width:min(100%,430px);background:#fff;border:1px solid var(--line);border-radius:22px;padding:30px;box-shadow:0 24px 65px rgba(23,54,40,.1)}.login-card .brand{margin-bottom:28px}.login-card h1{font:800 25px Manrope,sans-serif;letter-spacing:-.04em;margin:0 0 7px}.login-card>p{color:var(--muted);font-size:13px;margin:0 0 23px}.login-card .field{margin-bottom:14px}.hint{font-size:11px;color:var(--muted);line-height:1.6}.toolbar{display:flex;gap:9px;align-items:end;flex-wrap:wrap}.toolbar .field{min-width:160px}.row-actions{display:flex;gap:6px}.mobile-nav{display:none}.print-only{display:none}
@media(max-width:920px){.layout{grid-template-columns:1fr}.sidebar{position:static;display:flex;overflow:auto;padding:7px}.navlink{white-space:nowrap;margin:0}.stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.topbar{height:64px;padding:0 14px}.brand-icon{width:36px;height:36px}.user-name{display:none}.layout{padding:15px 12px}.sidebar{top:64px}.navlink{font-size:12px;padding:10px}.stats{grid-template-columns:1fr 1fr;gap:9px}.stat{padding:14px}.stat:last-child{grid-column:1/-1}.stat-value{font-size:22px}.page-head{display:block}.page-head .primary{margin-top:12px}.card{padding:15px}.two-col,.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.user-role{font-size:10px}.toolbar{align-items:stretch}.toolbar .field{min-width:calc(50% - 6px);flex:1}.ticket-form{padding:17px}}
@media print{@page{size:80mm auto;margin:4mm}body{background:#fff}.topbar,.sidebar,.page-head,.stats,.card,.receipt-actions,.no-print{display:none!important}.layout{display:block;padding:0;margin:0}.content{display:block}.receipt{display:block!important;margin:0 auto;padding:5mm 3mm;width:72mm;max-width:none;border:0;font-family:monospace}.receipt h2{font-size:16px}.receipt p{font-size:10px}.receipt-line{font-size:11px;padding:6px 0}.receipt-total{font-size:14px}.print-only{display:block}}

/* Loket: pilihan tarif berbentuk tombol dan ringkasan lebih ringkas. */
.tariff-fieldset{min-width:0;margin:0;padding:0;border:0}.tariff-fieldset legend{font-size:12px;font-weight:700;color:#45544c;margin-bottom:7px}.tariff-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.tariff-option{position:relative;display:block;cursor:pointer}.tariff-radio{position:absolute;width:1px;height:1px;opacity:0}.tariff-choice{min-height:58px;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;gap:3px;border:1px solid #dce5df;border-radius:12px;background:#fff;transition:border-color .15s,background .15s,box-shadow .15s}.tariff-choice strong{font-size:14px;color:#263a30}.tariff-choice small{font-size:12px;color:var(--muted)}.tariff-radio:checked+.tariff-choice{border-color:var(--green);background:var(--mint);box-shadow:0 0 0 2px rgba(19,121,91,.12)}.tariff-radio:focus-visible+.tariff-choice{outline:3px solid rgba(19,121,91,.25);outline-offset:2px}.stats{gap:10px;margin-bottom:12px}.stat{padding:13px 15px}.stat-value{margin-top:4px}.stat-note{margin-top:2px}
@media(max-width:620px){.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.stats .stat,.stat{padding:10px 9px}.stats .stat:last-child{grid-column:auto}.stat-label{font-size:10px;line-height:1.25}.stat-value{font-size:clamp(15px,4.6vw,19px);overflow-wrap:anywhere}.stat-note{font-size:9px;line-height:1.25}.tariff-options{gap:7px}.tariff-choice{min-height:54px;padding:9px}.tariff-choice strong{font-size:12px}.tariff-choice small{font-size:11px}}

#plate_number{text-transform:uppercase}


/* Alinhamento dos botões de recibo/saída e layout do balcão. */
.row-actions{display:grid;grid-template-columns:repeat(2,minmax(100px,1fr));gap:8px;align-items:center;min-width:216px}.row-actions>form{margin:0;min-width:0}.row-actions>a.secondary,.row-actions>form>.danger{width:100%;height:38px;box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;text-align:center;white-space:nowrap;font-size:12px;line-height:1}.tariff-fieldset{align-self:start}
