@font-face{font-family:Nunito;src:url('/static/fonts/nunito/Nunito-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url('/static/fonts/nunito/Nunito-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url('/static/fonts/nunito/Nunito-SemiBold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Nunito;src:url('/static/fonts/nunito/Nunito-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:'JetBrains Mono';src:url('/static/fonts/jetbrains-mono/JetBrainsMono-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'JetBrains Mono';src:url('/static/fonts/jetbrains-mono/JetBrainsMono-SemiBold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}*,::after,::before{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;width:100%;overflow:hidden;font-family:Nunito,system-ui,sans-serif;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}body{background:#eef1f6;color:#1a1a2e}:root{--pos-unit:1vh;--pos-font-title:2vh;--pos-font-price:1.6vh;--pos-font-body:1.4vh;--pos-font-small:1.2vh;--pos-font-btn:1.4vh;--pos-font-tiny:1vh;--pos-bg:#eef1f6;--pos-bg-panel:#ffffff;--pos-bg-input:#f5f7fa;--pos-text:#1a1a2e;--pos-text-muted:#6b7280;--pos-border:#e2e6ed;--pos-accent:#2563eb;--pos-accent-hover:#1d4ed8;--pos-success:#10b981;--pos-danger:#ef4444;--pos-warning:#f59e0b;--pos-shadow-sm:0 1px 2px rgba(0,0,0,0.04);--pos-shadow:0 2px 6px rgba(0,0,0,0.06);--pos-shadow-lg:0 4px 12px rgba(0,0,0,0.1);--pos-radius-sm:0.4vh;--pos-radius:0.6vh;--pos-radius-lg:0.8vh}.pos-root{display:grid;height:100vh;width:100vw;max-width:1920px;margin:0 auto;background:var(--pos-bg)}@media (orientation:portrait){.pos-root{grid-template-rows:5vh 5vh 4vh auto auto 4vh 5vh;grid-template-columns:1fr;grid-template-areas:"header" "scanner" "categories" "products" "receipt" "totals" "status"}.pos-header{grid-area:header}.pos-scanner-row{grid-area:scanner}.pos-categories-row{grid-area:categories}.pos-products{grid-area:products}.pos-receipt{grid-area:receipt}.pos-totals{grid-area:totals}.pos-status{grid-area:status;display:flex!important}.pos-actions{display:none!important}.pos-products .pos-scanner{display:none}.pos-products .pos-categories{display:none}.pos-receipt-header{display:none!important}}@media (orientation:landscape){.pos-root{grid-template-rows:4vh 88vh 4vh 4vh;grid-template-columns:70% 30%;grid-template-areas:"header header" "products receipt" "totals totals" "status status"}.pos-header{grid-area:header}.pos-products{grid-area:products}.pos-receipt{grid-area:receipt}.pos-totals{grid-area:totals}.pos-status{grid-area:status}.pos-scanner-row{display:none!important}.pos-categories-row{display:none!important}.pos-actions{display:none!important}}.pos-header{display:flex;align-items:center;justify-content:space-between;padding:0 1.5vw;background:var(--pos-bg-panel);border-bottom:1px solid var(--pos-border);box-shadow:var(--pos-shadow-sm)}.pos-header-left{display:flex;align-items:center;gap:1vw}.pos-logo{height:3vh;width:auto}.pos-shop-name{font-size:var(--pos-font-title);font-weight:700;color:var(--pos-text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:35vw}.pos-header-right{display:flex;align-items:center;gap:1vw}.pos-clock{font-family:'JetBrains Mono',monospace;font-size:var(--pos-font-small);color:var(--pos-text-muted)}.pos-menu-btn{background:0 0;border:none;font-size:2vh;cursor:pointer;padding:.3vh .6vw;color:var(--pos-text-muted);transition:color .2s}.pos-menu-btn:hover{color:var(--pos-text)}.pos-products{display:flex;flex-direction:column;padding:1vh 1vw;overflow:hidden;background:var(--pos-bg)}.pos-scanner{display:flex;align-items:center;gap:.6vw;margin-bottom:1vh;flex-shrink:0}.pos-search-toggle{display:flex;flex-shrink:0;background:var(--pos-bg-input);border:1px solid var(--pos-border);border-radius:var(--pos-radius);overflow:hidden}.pos-search-toggle-btn{padding:.8vh .8vw;font-size:var(--pos-font-tiny);font-family:Nunito,sans-serif;font-weight:600;background:0 0;border:none;cursor:pointer;color:var(--pos-text-muted);transition:all .2s;white-space:nowrap}.pos-search-toggle-btn.active{background:var(--pos-accent);color:#fff}.pos-scanner-input{flex:1;height:3.5vh;padding:0 1vw;font-size:var(--pos-font-body);font-family:'JetBrains Mono',monospace;border:1px solid var(--pos-border);border-radius:var(--pos-radius);background:var(--pos-bg-input);color:var(--pos-text);outline:0;transition:border-color .2s,box-shadow .2s}.pos-scanner-input::placeholder{font-family:Nunito,sans-serif;color:var(--pos-text-muted)}.pos-scanner-input:focus{border-color:var(--pos-accent);box-shadow:0 0 0 2px rgba(37,99,235,.1)}.pos-scanner-input.scan-ok{border-color:var(--pos-success);animation:scanPulse .3s ease}.pos-scanner-input.scan-err{border-color:var(--pos-danger);animation:scanShake .3s ease}@keyframes scanPulse{0%,100%{background:var(--pos-bg-input)}50%{background:rgba(16,185,129,.1)}}@keyframes scanShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}.pos-icon-btn{width:3.5vh;height:3.5vh;display:flex;align-items:center;justify-content:center;border:1px solid var(--pos-border);border-radius:var(--pos-radius);background:var(--pos-bg-panel);font-size:1.6vh;cursor:pointer;transition:all .2s;flex-shrink:0}.pos-icon-btn:hover{border-color:var(--pos-accent);background:rgba(37,99,235,.05)}.pos-icon-btn.active{background:var(--pos-accent);border-color:var(--pos-accent);color:#fff}.pos-scanner-row{display:flex;padding:.8vh 1.5vw;background:var(--pos-bg-panel);border-bottom:1px solid var(--pos-border);align-items:center;gap:1.5vw}.pos-scanner-row .pos-scanner-input{height:4vh;font-size:var(--pos-font-body)}.pos-scanner-row .pos-icon-btn{width:4vh;height:4vh;font-size:2vh}.pos-scanner-row .pos-search-toggle-btn{padding:1vh 1.5vw;font-size:var(--pos-font-small)}.pos-categories{display:flex;gap:.5vw;padding:.5vh 0;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none;margin-bottom:.5vh;flex-shrink:0}.pos-categories::-webkit-scrollbar{display:none}.pos-cat-btn{flex-shrink:0;padding:.5vh 1vw;font-size:var(--pos-font-tiny);font-family:Nunito,sans-serif;font-weight:600;background:var(--pos-bg-panel);border:1px solid var(--pos-border);border-radius:var(--pos-radius);cursor:pointer;white-space:nowrap;transition:all .2s}.pos-cat-btn:hover{border-color:var(--pos-accent)}.pos-cat-btn.active{background:var(--pos-accent);border-color:var(--pos-accent);color:#fff}.pos-categories-row{display:flex;padding:0 1.5vw;background:var(--pos-bg);overflow-x:auto;align-items:center}.pos-categories-row .pos-categories{margin-bottom:0;padding:.3vh 0}.pos-categories-row .pos-cat-btn{padding:.6vh 1.5vw;font-size:var(--pos-font-small)}.pos-grid{flex:1;overflow-y:auto;padding:.5vh;scrollbar-width:thin;scrollbar-color:var(--pos-border) transparent;display:flex;flex-wrap:wrap;justify-content:space-between;align-content:flex-start;gap:.5vh}.pos-grid::-webkit-scrollbar{width:4px}.pos-grid::-webkit-scrollbar-track{background:0 0}.pos-grid::-webkit-scrollbar-thumb{background:var(--pos-border);border-radius:2px}.pos-product{flex:0 0 auto;width:clamp(92px,7vw,140px);padding:.6vh;background:var(--pos-bg-panel);border:1px solid var(--pos-border);border-radius:var(--pos-radius);cursor:pointer;transition:all .15s;box-shadow:var(--pos-shadow-sm);font-size:var(--pos-font-tiny)}.pos-product:hover{border-color:var(--pos-accent);transform:translateY(-1px);box-shadow:var(--pos-shadow)}.pos-product:active{transform:translateY(0)}.pos-product-img{width:100%;aspect-ratio:1/1;object-fit:contain;border-radius:var(--pos-radius-sm);background:var(--pos-bg);display:block}.pos-product-info{display:flex;flex-direction:column;padding-top:.4vh}.pos-product-name{font-size:var(--pos-font-tiny);font-weight:600;text-align:center;color:var(--pos-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.3}.pos-product-price{font-family:'JetBrains Mono',monospace;font-size:var(--pos-font-small);font-weight:600;color:var(--pos-accent);text-align:center;margin-top:.2vh}@media (orientation:portrait){.pos-product{width:clamp(100px,20vw,160px)}}.pos-receipt{display:flex;flex-direction:column;background:var(--pos-bg-panel);border-left:1px solid var(--pos-border);overflow:hidden}@media (orientation:portrait){.pos-receipt{border-left:none;border-top:1px solid var(--pos-border);max-height:25vh}}.pos-receipt-header{padding:1vh 1vw;border-bottom:1px solid var(--pos-border);background:var(--pos-bg);flex-shrink:0}.pos-receipt-title{font-size:var(--pos-font-body);font-weight:700;color:var(--pos-text)}.pos-receipt-body{flex:1;overflow-y:auto;padding:.5vh .5vw}@media (orientation:portrait){.pos-receipt-body{max-height:25vh}}.pos-receipt-table{width:100%;border-collapse:collapse;font-size:var(--pos-font-tiny)}.pos-receipt-table th{text-align:left;padding:.4vh .3vw;font-weight:600;color:var(--pos-text-muted);font-size:calc(var(--pos-font-tiny) * .9);text-transform:uppercase;border-bottom:1px solid var(--pos-border)}.pos-receipt-table td{padding:.6vh .3vw;border-bottom:1px solid var(--pos-border);vertical-align:middle}.pos-receipt-table .r{text-align:right;font-family:'JetBrains Mono',monospace}.pos-line-name{font-weight:500;color:var(--pos-text);max-width:6vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}@media (orientation:portrait){.pos-line-name{max-width:25vw}}.pos-qty-controls{display:flex;align-items:center;gap:.3vw}.pos-qty-btn{width:2.2vh;height:2.2vh;display:flex;align-items:center;justify-content:center;border:1px solid var(--pos-border);border-radius:var(--pos-radius-sm);background:var(--pos-bg);font-size:var(--pos-font-tiny);font-weight:700;cursor:pointer;transition:all .15s}.pos-qty-btn:hover{background:var(--pos-accent);border-color:var(--pos-accent);color:#fff}.pos-qty-value{font-family:'JetBrains Mono',monospace;min-width:1.5vw;text-align:center;font-weight:600}.pos-remove-btn{background:0 0;border:none;color:var(--pos-danger);font-size:var(--pos-font-body);cursor:pointer;padding:.3vh;opacity:.7;transition:opacity .2s}.pos-remove-btn:hover{opacity:1}.pos-receipt-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--pos-text-muted);font-size:var(--pos-font-small)}.pos-totals{display:flex;align-items:center;justify-content:space-between;padding:0 2vw;background:var(--pos-bg-panel);border-top:1px solid var(--pos-border);box-shadow:var(--pos-shadow)}.pos-totals-info{display:flex;align-items:center;gap:2vw}.pos-total-item{display:flex;flex-direction:column}.pos-total-label{font-size:calc(var(--pos-font-tiny) * .9);color:var(--pos-text-muted);text-transform:uppercase;font-weight:600}.pos-total-value{font-family:'JetBrains Mono',monospace;font-size:var(--pos-font-body);font-weight:600;color:var(--pos-text)}.pos-total-value.large{font-size:var(--pos-font-title);color:var(--pos-accent)}.pos-total-value.bonus{color:var(--pos-success)}.pos-total-value.muted{color:var(--pos-text-muted)}.pos-totals-actions{display:flex;gap:1vw}.pos-btn{height:3.2vh;padding:0 2vw;font-size:var(--pos-font-btn);font-family:Nunito,sans-serif;font-weight:700;border:none;border-radius:var(--pos-radius);cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.5vw;transition:all .2s;text-transform:uppercase;letter-spacing:.3px}.pos-btn:disabled{opacity:.5;cursor:not-allowed}.pos-btn-primary{background:var(--pos-success);color:#fff;box-shadow:0 2px 8px rgba(16,185,129,.25)}.pos-btn-primary:hover:not(:disabled){background:#059669;transform:translateY(-1px);box-shadow:0 4px 12px rgba(16,185,129,.35)}.pos-btn-secondary{background:var(--pos-bg);color:var(--pos-text-muted);border:1px solid var(--pos-border)}.pos-btn-secondary:hover:not(:disabled){border-color:var(--pos-text-muted);color:var(--pos-text)}.pos-actions{display:none;align-items:center;justify-content:center;gap:3vw;padding:1vh 3vw;background:var(--pos-bg-panel);border-top:1px solid var(--pos-border)}@media (orientation:portrait){.pos-totals{flex-direction:row;padding:.5vh 2vw;gap:.3vh;height:4vh}.pos-totals-info{width:100%;justify-content:space-between}.pos-totals-actions{display:none}.pos-status{display:flex;justify-content:space-between;align-items:center;padding:.5vh 2vw}.pos-status-left{flex:0 0 auto}.pos-status-center{display:flex;flex:1;justify-content:flex-end;align-items:center;gap:1vw}.pos-status-center .pos-btn{height:4vh;font-size:var(--pos-font-small)}.pos-status-center .pos-btn-primary{flex:2;max-width:30vw}.pos-status-center .pos-btn-secondary{flex:1;max-width:15vw;font-size:var(--pos-font-tiny)}.pos-status-right{display:none}}@media (orientation:landscape){.pos-status-center{display:none!important}}.pos-status{display:flex;align-items:center;justify-content:space-between;padding:0 1.5vw;background:var(--pos-bg-panel);border-top:1px solid var(--pos-border);font-size:var(--pos-font-tiny);color:var(--pos-text-muted)}.pos-status-left{display:flex;align-items:center;gap:1.5vw}.pos-status-item{display:flex;align-items:center;gap:.3vw}.pos-status-indicator{width:.8vh;height:.8vh;border-radius:50%;background:var(--pos-success)}.pos-status-indicator.offline{background:var(--pos-danger)}.pos-status-right{font-size:var(--pos-font-tiny)}.pos-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}@keyframes fadeIn{from{opacity:0}to{opacity:1}}.pos-modal-content{background:var(--pos-bg-panel);border-radius:var(--pos-radius-lg);padding:2vh 2vw;max-width:90vw;width:35vh;text-align:center;box-shadow:var(--pos-shadow-lg);animation:slideUp .2s ease}@keyframes slideUp{from{transform:translateY(15px);opacity:0}to{transform:translateY(0);opacity:1}}.pos-modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5vh}.pos-modal-title{font-size:var(--pos-font-body);font-weight:700}.pos-modal-close{background:0 0;border:none;font-size:2vh;cursor:pointer;color:var(--pos-text-muted);line-height:1}.pos-modal-body{display:flex;flex-direction:column;align-items:center;gap:1.5vh}.pos-modal-body p{font-size:var(--pos-font-small);color:var(--pos-text-muted);line-height:1.5}.pos-qr-code{background:#fff;padding:1.5vh;border-radius:var(--pos-radius)}.pos-qr-code svg{width:20vh;height:20vh}.pos-qr-amount{font-family:'JetBrains Mono',monospace;font-size:var(--pos-font-title);font-weight:700;color:var(--pos-accent)}.pos-qr-status{font-size:var(--pos-font-small);color:var(--pos-text-muted);padding:.8vh 1.5vw;background:var(--pos-bg);border-radius:var(--pos-radius-sm)}.pos-modal-footer{margin-top:1.5vh}.pos-menu{position:fixed;top:0;right:-25vw;width:25vw;height:100vh;background:var(--pos-bg-panel);box-shadow:var(--pos-shadow-lg);z-index:1001;transition:right .25s ease;display:flex;flex-direction:column}.pos-menu.open{right:0}@media (orientation:portrait){.pos-menu{width:70vw;right:-70vw}}.pos-menu-header{display:flex;justify-content:space-between;align-items:center;padding:1.5vh 1.5vw;border-bottom:1px solid var(--pos-border)}.pos-menu-title{font-size:var(--pos-font-body);font-weight:700}.pos-menu-close{background:0 0;border:none;font-size:2vh;cursor:pointer;color:var(--pos-text-muted)}.pos-menu-body{flex:1;padding:1.5vh 1.5vw;overflow-y:auto}.pos-menu-item{display:flex;align-items:center;gap:1vw;padding:1vh .8vw;font-size:var(--pos-font-small);color:var(--pos-text);text-decoration:none;border-radius:var(--pos-radius-sm);transition:background .2s}.pos-menu-item:hover{background:var(--pos-bg)}.pos-menu-icon{font-size:1.8vh}.pos-menu-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:rgba(0,0,0,.35);z-index:1000;opacity:0;pointer-events:none;transition:opacity .25s}.pos-menu-overlay.visible{opacity:1;pointer-events:auto}.pos-error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;background:var(--pos-bg);padding:2vh 4vw;text-align:center}.pos-error-icon{font-size:8vh;margin-bottom:2vh}.pos-error-title{font-size:2.5vh;font-weight:700;color:var(--pos-text);margin-bottom:1vh}.pos-error-message{font-size:var(--pos-font-body);color:var(--pos-text-muted);margin-bottom:3vh;max-width:50vh;line-height:1.5}.pos-error-actions{display:flex;gap:1.5vw}.pos-error-btn{padding:1.2vh 3vw;font-size:var(--pos-font-body);font-family:Nunito,sans-serif;font-weight:600;border:none;border-radius:var(--pos-radius);cursor:pointer;text-decoration:none;transition:all .2s}.pos-error-btn-primary{background:var(--pos-accent);color:#fff}.pos-error-btn-primary:hover{background:var(--pos-accent-hover)}.pos-error-btn-secondary{background:var(--pos-bg-panel);color:var(--pos-text);border:1px solid var(--pos-border)}.pos-error-btn-secondary:hover{border-color:var(--pos-text-muted)}.pos-card-badge{display:inline-flex;align-items:center;gap:.3vw;padding:.3vh .6vw;background:rgba(16,185,129,.1);border:1px solid var(--pos-success);border-radius:var(--pos-radius-sm);font-size:var(--pos-font-tiny);color:var(--pos-success)}.hidden{display:none!important}@media (min-width:1921px){.pos-root{max-width:1920px;border-left:1px solid var(--pos-border);border-right:1px solid var(--pos-border)}body{background:#dde2eb}}@media print{.pos-root{display:none}}.pos-error-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4vh 4vw;background:var(--pos-bg);text-align:center;font-family:Nunito,system-ui,sans-serif}.pos-error-icon{font-size:8vh;margin-bottom:2vh;opacity:.8}.pos-error-title{font-size:4vh;font-weight:700;color:var(--pos-text);margin:0 0 2vh 0}.pos-error-message{font-size:2vh;color:var(--pos-text-muted);max-width:60vw;line-height:1.6;margin:0 0 4vh 0}.pos-error-actions{display:flex;gap:2vw;flex-wrap:wrap;justify-content:center}.pos-error-btn{display:inline-flex;align-items:center;justify-content:center;padding:1.5vh 3vw;border-radius:var(--pos-radius);font-size:1.8vh;font-weight:600;text-decoration:none;transition:all .2s;min-width:15vw}.pos-error-btn-primary{background:var(--pos-accent);color:#fff}.pos-error-btn-primary:hover{background:var(--pos-accent-hover)}.pos-error-btn-secondary{background:var(--pos-bg-panel);color:var(--pos-text);border:1px solid var(--pos-border)}.pos-error-btn-secondary:hover{background:var(--pos-bg);border-color:var(--pos-accent)}