@font-face{font-family:"Space Grotesk";src:url("space-grotesk.ttf") format("truetype");font-style:normal;font-weight:300 700;font-display:swap}
:root{font:16px "Space Grotesk",system-ui,sans-serif;color:#17212f;background:#f4f6f8;--accent:#17212f}
*{box-sizing:border-box}body{margin:0}header{height:76px;background:white;border-bottom:1px solid #e1e5eb;display:flex;align-items:center;padding:12px 24px;gap:14px}header img{width:172px;height:50px;object-fit:contain;object-position:left}header #logout{margin-left:auto}.lab{font-size:11px;letter-spacing:1px;border:1px solid #bcc4ce;padding:4px 8px;border-radius:4px}main{max-width:1280px;margin:auto;padding:20px}h1{font-size:25px;margin:0 0 16px}h2{font-size:19px}h3{font-size:16px}p{line-height:1.5}.muted,small{color:#596575;font-size:13px}.panel{background:white;border:1px solid #e1e5eb;border-radius:8px;padding:20px;margin-bottom:16px}.access{max-width:430px;margin:5vh auto}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.spread{justify-content:space-between}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:12px}.sale-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(290px,1fr);gap:20px}.products button{text-align:left;background:white;min-height:130px}.product-image{height:72px;width:100%;object-fit:contain;background:#f4f6f8;border-radius:4px;margin-bottom:8px}.product-placeholder{height:55px;display:grid;place-items:center;background:#f4f6f8;margin-bottom:8px;font-size:26px;font-weight:600}.products strong,.products span{display:block;margin-bottom:5px}
button,input,select,textarea{font:inherit;border:1px solid #c5ccd6;border-radius:6px;padding:12px;min-height:46px}button{background:white;cursor:pointer;color:inherit}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);color:white;border-color:var(--accent)}button.danger{color:#a32222}button:disabled{opacity:.5;cursor:not-allowed}input,select,textarea{width:100%;background:white;color:inherit}label{display:block;font-size:13px;font-weight:600;margin:12px 0 5px}form .primary,.full{width:100%;margin-top:16px}nav{display:flex;gap:6px;overflow:auto;margin:0 0 20px;padding:4px 0}nav button{white-space:nowrap}nav .active{background:var(--accent);color:white}.total{font-size:30px;font-weight:700}.line{padding:10px 0;border-bottom:1px solid #edf0f3}.quantity{display:flex;align-items:center;gap:12px}.quantity button{padding:5px 12px;min-height:36px}.summary{display:grid;grid-template-columns:1fr auto;gap:10px;margin:18px 0}.summary strong{font-size:22px}.category{min-height:36px;padding:7px 12px;font-size:13px}.tiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.tile{background:#f4f6f8;padding:18px;border-radius:6px}.tile strong{display:block;font-size:25px;margin-top:8px}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:12px 8px;border-bottom:1px solid #e1e5eb}.table-scroll{overflow:auto}#notice{max-width:1240px;margin:0 auto;padding:0 20px;color:#8f2525;white-space:pre-wrap}#notice:not(:empty){padding:14px 20px;background:#fff0ee}dialog{border:1px solid #c5ccd6;border-radius:10px;max-width:560px;width:calc(100% - 32px);max-height:90vh;padding:24px}dialog::backdrop{background:#17212f80}dialog pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px ui-monospace,monospace}.code{overflow-wrap:anywhere;background:#f4f6f8;padding:15px;user-select:all}.bar{height:12px;background:var(--accent);min-width:2px}.chart-row{display:grid;grid-template-columns:94px 1fr 95px;align-items:center;gap:10px;margin:12px 0;font-size:12px}.warning{color:#9e4b00}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.checkbox{display:flex;align-items:center;gap:10px}.checkbox input{width:22px;min-height:22px}.receipt{font:14px ui-monospace,monospace;white-space:pre-wrap}.hidden{display:none!important}.toolbar{margin-bottom:16px}.toolbar input{flex:1;min-width:100px}.focus:focus-visible,button:focus-visible{outline:3px solid #5684ad;outline-offset:2px}
@media(max-width:700px){header{padding:10px 16px;height:68px}main{padding:14px}.sale-grid{grid-template-columns:1fr}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.panel{padding:16px}.access{margin:3vh auto}nav button{font-size:14px;padding:10px}.chart-row{grid-template-columns:80px 1fr 80px}}
.eyebrow{display:block;font-size:11px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:#526678;margin-bottom:8px}
.merchant-name{display:block;font-size:24px;letter-spacing:-.5px}.terminal-heading{padding:8px 0 12px}.terminal-heading>div{min-width:0;overflow-wrap:anywhere}
.panel{border-radius:16px;box-shadow:0 3px 14px #17212f05}.sale-grid>*{min-width:0}.bank-sale{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)}
.sale-entry h1{margin-bottom:24px}.amount-stage{border:1px solid #dce6ee;background:#f5f8fb;border-radius:14px;padding:28px 20px;text-align:center}
.amount-display{font-size:clamp(34px,6vw,56px);font-weight:750;letter-spacing:-1.5px;overflow-wrap:anywhere}.amount-stage p{font-size:14px;color:#526678}
.session-badge{display:inline-block;font-size:12px;font-weight:600;padding:8px 12px;border-radius:24px;background:#e9edf1;color:#526678}.session-badge.is-open{background:#e2f3ee;color:#176249}
.sale-disclaimer{font-size:12px;text-align:center;color:#596575;line-height:1.6}.order-panel h2{margin:0 0 18px}.order-panel .summary{padding-top:12px}
.payment-total{font-size:40px;font-weight:750;letter-spacing:-1px;margin:20px 0}.payment-total small{font-size:14px;letter-spacing:0}
.payment-methods button{text-align:left;padding:18px;min-height:104px}.payment-methods strong,.payment-methods small{display:block}.payment-methods small{margin-top:8px;line-height:1.4}
dialog{border-radius:18px}dialog[open]{overflow-y:auto}.receipt-card{background:#fff;border:1px solid #dce3ea;border-radius:14px;padding:22px;min-width:0}
.receipt-brand{text-align:center}.receipt-brand h2{margin:6px 0;font-size:23px;overflow-wrap:anywhere}.receipt-brand p{font-size:12px;color:#596575;overflow-wrap:anywhere}
.receipt-status{text-align:center;border-radius:8px;background:#edf3f8;padding:10px;font-size:13px;font-weight:700;margin:18px 0}
.receipt-meta{margin:18px 0;font-size:12px}.receipt-meta dt{color:#596575;margin-top:10px}.receipt-meta dd{margin:3px 0;overflow-wrap:anywhere;font-weight:600}
.receipt-items{border-top:1px dashed #c5ccd6;border-bottom:1px dashed #c5ccd6}.receipt-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;padding:14px 0;font-size:14px}.receipt-item>div{overflow-wrap:anywhere}.receipt-item small{display:block;margin-top:5px}
.receipt-total{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#17212f;color:white;border-radius:10px;padding:16px;font-size:14px}.receipt-total strong{font-size:27px;white-space:nowrap}
.receipt-method{text-align:center;font-size:13px;font-weight:600}.receipt-footer{text-align:center;font-size:12px;overflow-wrap:anywhere;border-top:1px dashed #c5ccd6;padding-top:16px}
.receipt-text{margin:18px 0}.receipt-text summary{cursor:pointer;color:#526678;font-size:13px}.receipt-actions{margin-top:18px}.receipt-actions button{flex:1 1 140px}
@media(max-width:700px){.bank-sale{grid-template-columns:1fr}.amount-stage{padding:24px 16px}.merchant-name{font-size:21px}.receipt-card{padding:16px}dialog{padding:16px}.receipt-total strong{font-size:24px}}
@media(max-width:380px){header img{width:140px}.receipt-item{gap:8px;font-size:13px}.payment-methods{grid-template-columns:1fr}.receipt-total{padding:12px}}
@media print{body>*{display:none!important}body>dialog[open]{display:block!important;position:static;border:0;width:100%;max-width:none;max-height:none;overflow:visible;padding:0}dialog button,.receipt-text{display:none}.receipt-card{border:0;box-shadow:none;break-inside:avoid}dialog #dialog-body>*:not(.receipt-card){display:none}dialog #dialog-body>.receipt-paper-preview{display:block!important}.receipt-total{background:white;color:black;border-top:1px solid black}}
:root{background:#f2f2f2;--accent:#171717;color:#171717}
.panel{background:#f2f2f2;border:0;box-shadow:none;border-radius:0;padding:20px 4px}
button{border-color:transparent;border-radius:12px;background:#f2f2f2;box-shadow:4px 4px 9px #d5d5d5,-4px -4px 9px #ffffff}
button:active{box-shadow:inset 3px 3px 7px #d5d5d5,inset -3px -3px 7px #ffffff}button.primary{box-shadow:3px 3px 8px #c9c9c9,-3px -3px 8px #ffffff}
.ui-icon{width:20px;height:20px;vertical-align:middle;flex-shrink:0}.terminal-menu{position:relative;align-self:flex-start;z-index:2}
.terminal-menu>summary{cursor:pointer;list-style:none;padding:12px 16px;border-radius:12px;background:#f2f2f2;box-shadow:4px 4px 9px #d5d5d5,-4px -4px 9px #fff}
.terminal-menu>summary::-webkit-details-marker{display:none}.menu-options{position:absolute;right:0;top:52px;min-width:230px;padding:12px;background:#fafafa;border:1px solid #dedede;border-radius:14px;box-shadow:0 12px 28px #17171726}
.menu-options button{display:block;width:100%;text-align:left;box-shadow:none;background:transparent;border-radius:8px}.menu-options button:hover,.menu-options .active{background:#e7e7e7}
.workspace-label{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 0;border-top:1px solid #d6d6d6;border-bottom:1px solid #d6d6d6;font-weight:600}.workspace-label small{font-weight:400}
.amount-stage{border:0;background:#f2f2f2;box-shadow:inset 5px 5px 12px #d9d9d9,inset -5px -5px 12px #fff}.order-panel{border-left:1px solid #d6d6d6;padding-left:22px}
.tile{background:transparent;border-radius:0;border-bottom:1px solid #d6d6d6}.receipt-card{position:relative;color:#111;box-shadow:0 5px 18px #1717170c;border:0;border-radius:0;padding:24px}
.receipt-brand img,.profile-heading img{width:164px;max-width:100%;height:48px;object-fit:contain}.receipt-brand h2{font-size:20px;margin-top:12px}.receipt-total{background:#171717}
.receipt-brand>img{width:213px;height:47px}.receipt-status{background:#eee}.receipt-card small,.receipt-card .muted,.receipt-card .sale-disclaimer,.receipt-brand p,.receipt-meta dt{color:#555}
.receipt,.receipt-card{font-family:"Space Grotesk",system-ui,sans-serif}
.receipt-attribution{text-align:center;margin:14px 0 6px;display:grid;gap:4px}.receipt-attribution>span{font-size:14px}.receipt-attribution strong{display:flex;justify-content:center;align-items:center;gap:8px;font-size:16px}.receipt-attribution img{width:32px;height:32px;padding:4px;box-sizing:border-box;object-fit:contain;background:#171717;border-radius:50%;filter:none}
.maintenance-code{padding:16px;background:#f2f2f2;border:1px solid #d6d6d6;border-radius:12px;margin:20px 0}
.ticket-row{display:flex;gap:10px;align-items:center;border-bottom:1px solid #d6d6d6;padding:14px 0}.ticket-detail{display:flex;gap:12px;justify-content:space-between;align-items:center;min-width:0;flex:1;box-shadow:none;background:transparent;text-align:left;padding:4px}
.ticket-detail>span{min-width:0;overflow-wrap:anywhere;font-size:13px}.ticket-detail small{display:block;margin-top:6px;font-size:11px}.ticket-detail>strong{white-space:nowrap}.ticket-reprint{padding:10px}.profile-heading{text-align:center}
.ticket-row.is-cancelled .ticket-detail>span,.ticket-row.is-cancelled .ticket-detail small,.ticket-row.is-cancelled .ticket-amount,.receipt-status.is-cancelled,.receipt-total.is-cancelled,.receipt-void{color:#b42318!important}
.receipt-status.is-cancelled{background:#fff0ee;border-bottom:2px solid #b42318}
.receipt-total.is-cancelled{border:2px solid #b42318;background:#fff0ee;color:#b42318}
@media(max-width:700px){.order-panel{border-left:0;border-top:1px solid #d6d6d6;padding:22px 4px}.terminal-heading{gap:16px}.merchant-name{font-size:20px}.sale-grid{gap:10px}}
@media print{.receipt-card{background:white}.receipt-total{background:white;color:black}}
.receipt-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.receipt-actions button{width:100%;min-height:58px;margin:0;padding:12px;box-shadow:none;border:1px solid #ccc}
.menu-options{display:grid;gap:10px;padding:16px}.menu-options button{min-height:52px;border:1px solid #ddd}
.row:not(.terminal-heading)>.full{flex-basis:100%}.payment-methods{gap:16px}.maintenance-actions{display:grid;gap:16px;margin-top:20px}.maintenance-actions button{min-height:58px;width:100%}
body.thermal{margin:0;padding:0;width:var(--thermal-width);min-height:0;background:white;color:black}
html:has(body.thermal){width:var(--thermal-width);background:white}
body.thermal>.receipt-card{width:var(--thermal-width);min-width:var(--thermal-width);max-width:var(--thermal-width);padding:12px 16px;box-shadow:none;border:0;border-radius:0;background:white;color:black;font:20px/1.35 "Space Grotesk",sans-serif}
body.thermal .receipt-brand h2{font-size:25px;margin:8px 0}
body.thermal .receipt-brand p,body.thermal .receipt-method,body.thermal .receipt-footer,body.thermal .sale-disclaimer{font-size:18px;line-height:1.35}
body.thermal .receipt-status{background:white;border-bottom:1px solid black;border-radius:0;padding:8px;margin:8px 0;font-size:20px}
body.thermal .receipt-meta{font-size:18px;margin:8px 0}
body.thermal .receipt-meta dt{color:black;margin-top:6px}
body.thermal .receipt-meta dd{font-size:18px}
body.thermal .receipt-items{border-color:black}
body.thermal .receipt-item{font-size:20px;padding:10px 0;gap:8px}
body.thermal .receipt-item small,body.thermal .receipt-card small,body.thermal .receipt-card p,body.thermal .receipt-meta dt{color:black}
body.thermal .receipt-total{background:white;color:black;border:2px solid black;border-radius:0;padding:10px;font-size:20px}
body.thermal .receipt-total strong{font-size:30px}
body.thermal .receipt-card .summary{font-size:20px;gap:8px;margin:8px 0}
body.thermal .receipt-brand>img{width:213px;height:62px}
body.thermal .receipt-copy-label{text-align:center;border-top:1px solid black;border-bottom:1px solid black;font-weight:700;font-size:20px;padding:6px;margin:4px 0 10px}
body.thermal .receipt-attribution>span{font-size:18px}
body.thermal .receipt-attribution strong{font-size:20px}
body.thermal .receipt-attribution img{width:36px;height:36px;padding:4px}
.receipt-paper-preview{display:none}
.receipt-print-layout{text-align:center}
.receipt-print-fields{margin:18px 0;text-align:center}
.receipt-print-fields p{display:grid;gap:4px;margin:0 0 18px;font-size:18px;line-height:1.35}
.receipt-print-fields p:last-child{margin-bottom:0}
.receipt-print-fields p strong{font-size:16px}
.receipt-print-fields .receipt-copy-label{display:block;width:100%;margin:8px 0 0;padding:4px 0}
body.thermal .receipt-print-layout{padding:12px 20px;text-align:center;font:20px/1.35 "Space Grotesk",sans-serif}
body.thermal .receipt-print-layout .receipt-brand>img{width:213px;height:62px}
body.thermal .receipt-print-fields{margin:18px 0 20px}
body.thermal .receipt-print-fields p{font-size:22px;line-height:1.35;margin-bottom:22px;overflow-wrap:anywhere}
body.thermal .receipt-print-fields p strong{font-size:19px}
body.thermal .receipt-print-layout .receipt-footer,body.thermal .receipt-print-layout .sale-disclaimer{font-size:16px}
.receipt-paper-preview .receipt-attribution img{width:36px;height:36px;padding:4px}
@media print{dialog #dialog-body>.receipt-paper-preview{display:block!important}.receipt-paper-preview .receipt-card{width:100%;max-width:100%;padding:8mm 5mm;font:14pt/1.35 "Space Grotesk",sans-serif}.receipt-paper-preview .receipt-brand>img{width:213px;height:47px}.receipt-paper-preview .receipt-print-fields p{font-size:14pt;margin-bottom:6mm}.receipt-paper-preview .receipt-print-fields p strong{font-size:12pt}.receipt-paper-preview .receipt-attribution img{width:36px;height:36px;padding:4px}}
.receipt-report{font:24px/1.45 "Space Grotesk",sans-serif}
.receipt-report-entry{padding:18px 0;border-bottom:1px dashed #777;break-inside:avoid}
.receipt-report-entry p{display:grid;gap:4px;margin:0 0 18px;overflow-wrap:anywhere}
.receipt-report-entry p:last-child{margin-bottom:0}
.receipt-report-entry p strong{font-size:22px}
.receipt-signature-demo{margin:18px 0;padding:14px 0;border-top:1px solid black;border-bottom:1px solid black;text-align:center;break-inside:avoid}
.receipt-signature-demo p{font-size:12px;line-height:1.4}
.receipt-signature-demo>div{height:112px;border-bottom:1px solid black;margin:12px 0 4px}
.receipt-signature-demo small{font-weight:700}
body.thermal .receipt-signature-demo{font-size:16px;margin:12px 0;padding:10px 0}
body.thermal .receipt-signature-demo p{font-size:13px;line-height:1.4}
body.thermal .receipt-signature-demo>div{height:34mm;margin:8px 0 4px}
@media print{.receipt-signature-demo{break-inside:avoid}.receipt-signature-demo>div{height:34mm}}
.ticket-filters{margin:18px 0;padding:16px 0;border-top:1px solid #d6d6d6;border-bottom:1px solid #d6d6d6}
.ticket-filters .row{margin-top:8px}
#close-dialog{display:block;width:100%;margin:16px 0 0}
#close-dialog[hidden]{display:none}
dialog:has(.receipt-report){width:min(760px,calc(100% - 24px))}
.inline-error{color:#a32222;background:#fff0ee;border-left:3px solid #a32222;padding:10px 12px}
@media print{dialog #close-dialog{display:none!important}.receipt-report th,.receipt-report td{padding:5px 2px}}
.print-progress{display:grid;justify-items:center;gap:8px;text-align:center;padding:0}
.print-progress h2,.print-progress p{margin:4px 0}
dialog:has(.print-progress){padding:10px 12px}
.print-progress[hidden]{display:none}
.printer-animation{width:140px;height:74px;position:relative;display:grid;place-items:center;margin:0}
.printer-body{width:120px;height:52px;background:#171717;border-radius:12px 12px 6px 6px;position:absolute;bottom:4px;box-shadow:inset 0 -7px #444}
.printer-body:before{content:"";position:absolute;left:40px;top:-18px;width:40px;height:24px;background:#ddd;border:2px solid #171717}
.printer-slot{position:absolute;left:15px;right:15px;top:14px;height:4px;background:white}
.printer-paper{position:absolute;z-index:-1;top:0;width:50px;height:55px;background:repeating-linear-gradient(white 0 7px,#bbb 8px 9px);border:1px solid #777;animation:paper-feed 1.1s ease-in-out infinite alternate}
.printer-led{position:absolute;right:16px;top:12px;width:8px;height:8px;border-radius:50%;background:#76d39b;animation:printer-blink .6s infinite alternate}
@keyframes paper-feed{from{transform:translateY(7px)}to{transform:translateY(-8px)}}
@keyframes printer-blink{to{opacity:.35}}
