*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}:root{--bg:#f5f5f0;--surface:#fff;--text:#1a1a1a;--text-muted:#666;--primary:#2d5a27;--primary-hover:#3d7a35;--accent:#e8f0e6;--border:#e0e0d8;--danger:#c0392b;--swish:#4aa74a;--shadow:0 2px 8px #00000014;--radius:12px}body{background:var(--bg);color:var(--text);-webkit-user-select:none;user-select:none;height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}#root{height:100dvh}.app{flex-direction:column;height:100dvh;display:flex}.app-header{background:var(--primary);color:#fff;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.app-header h1{font-size:1.3rem;font-weight:600}.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.header-btn{color:#fff;cursor:pointer;font:inherit;white-space:nowrap;background:#ffffff1f;border:1px solid #ffffff14;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:.9rem;font-weight:500;line-height:1;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.header-btn:hover{background:#fff3;border-color:#ffffff2e}.header-btn:active{background:#ffffff47}.header-btn-label{display:inline}@media (width<=720px){.header-btn{gap:6px;padding:8px 10px}.header-btn-label{display:none}}.company-switcher{background:var(--primary-hover);z-index:50;border-radius:8px;min-width:220px;margin-top:4px;position:absolute;top:100%;left:0;overflow:hidden;box-shadow:0 8px 24px #0000004d}.company-option{color:#fff;cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:12px 16px;font-size:.95rem;display:flex}.company-option:active,.company-option:hover{background:#ffffff1a}.company-option.current{background:#ffffff26;font-weight:600}.app-main{flex:1;display:flex;overflow:hidden}.main-products{flex:1;padding:12px;overflow-y:auto}.main-cart{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;width:300px;display:flex}.product-search{align-items:center;margin-bottom:10px;display:flex;position:relative}.product-search .search-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:12px}.search-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:100%;color:var(--text);padding:10px 40px;font-size:1rem}.search-input::placeholder{color:var(--text-muted)}.search-clear{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:4px;display:flex;position:absolute;right:8px}.search-clear:active{color:var(--text)}.category-tabs{gap:6px;margin-bottom:12px;padding-bottom:4px;display:flex;overflow-x:auto}.cat-tab{border:1px solid var(--border);background:var(--surface);cursor:pointer;white-space:nowrap;color:var(--text);border-radius:20px;padding:8px 16px;font-size:.9rem}.cat-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.product-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;display:grid}.product-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;min-height:90px;box-shadow:var(--shadow);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px 12px;transition:transform .1s;display:flex}.product-card:active{background:var(--accent);transform:scale(.95)}.product-name{text-align:center;font-size:1rem;font-weight:600}.product-price{color:var(--text-muted);font-size:.85rem}.product-stock{color:var(--primary);font-size:.75rem;font-weight:600}.product-stock.stock-low{color:#e67e22}.product-stock.stock-zero{color:var(--danger);font-weight:700}.product-card.out-of-stock{opacity:.5;cursor:not-allowed;background:var(--bg)}.product-card.out-of-stock:active{background:var(--bg);transform:none}.product-card.low-stock{border-color:#e67e22}.product-combo-badge{background:var(--primary);color:#fff;border-radius:4px;margin-top:4px;padding:2px 6px;font-size:.7rem;font-weight:600;display:inline-block}.combo-detail{color:var(--primary);font-size:.8em}.cart{flex-direction:column;flex:1;display:flex;overflow-y:auto}.empty-cart{justify-content:center;align-items:center}.empty-text{color:var(--text-muted);text-align:center;padding:2rem}.cart-items{flex:1;padding:8px;overflow-y:auto}.cart-item{border-bottom:1px solid var(--border);padding:10px}.cart-item-info{justify-content:space-between;margin-bottom:6px;display:flex}.cart-item-name{font-weight:500}.cart-item-price{font-weight:600}.cart-item-controls{align-items:center;gap:8px;display:flex}.qty-btn{border:1px solid var(--border);background:var(--bg);cursor:pointer;width:36px;height:36px;color:var(--text);border-radius:8px;justify-content:center;align-items:center;display:flex}.qty-btn.delete{color:var(--danger);margin-left:auto}.qty-btn:active{background:var(--border)}.qty{text-align:center;min-width:24px;font-size:1.1rem;font-weight:600}.cart-total{border-top:2px solid var(--primary);justify-content:space-between;padding:12px;font-size:1.1rem;font-weight:600;display:flex}.total-amount{color:var(--primary);font-size:1.2rem}.btn{border-radius:var(--radius);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;padding:12px 20px;font-size:1rem;font-weight:600;display:flex}.btn-primary{background:var(--primary);color:#fff}.btn-primary:active{background:var(--primary-hover)}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border)}.btn-lg{padding:16px 24px;font-size:1.1rem}.btn-checkout{border-radius:var(--radius);margin:8px}.btn-icon{cursor:pointer;color:var(--text-muted);background:0 0;border:none;padding:4px;display:flex}.checkout-overlay{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.checkout-modal{background:var(--surface);border-radius:16px;width:100%;max-width:480px;max-height:90dvh;padding:24px;overflow-y:auto;box-shadow:0 8px 32px #0003}.checkout-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.checkout-header h2{font-size:1.3rem}.payment-methods{flex-direction:column;gap:12px;display:flex}.pay-btn{border:2px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:pointer;color:var(--text);align-items:center;gap:16px;padding:20px;font-size:1.2rem;font-weight:600;display:flex}.pay-btn:active{background:var(--accent)}.pay-btn.swish{border-color:var(--swish);color:var(--swish)}.done{text-align:center}.done-icon{background:var(--accent);width:64px;height:64px;color:var(--primary);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;display:flex}.done-total{color:var(--primary);margin:8px 0;font-size:2rem;font-weight:700}.done-method{color:var(--text-muted);margin-bottom:24px}.checkout-actions{flex-direction:column;gap:10px;margin-top:20px;display:flex}.swish-qr{text-align:center}.swish-qr h2{color:var(--swish);margin-bottom:8px}.swish-amount{margin-bottom:16px;font-size:2rem;font-weight:700}.qr-wrapper{border-radius:var(--radius);border:2px solid var(--swish);background:#fff;padding:16px;display:inline-block}.swish-number{margin-top:12px;font-weight:600}.swish-hint{color:var(--text-muted);margin-top:4px;font-size:.9rem}.product-manager{max-width:560px}.product-list{max-height:40dvh;margin-bottom:16px;overflow-y:auto}.product-list-item{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.product-list-info{flex-direction:column;gap:2px;display:flex}.product-list-name{font-weight:600}.product-list-detail{color:var(--text-muted);font-size:.8rem}.product-list-actions{gap:6px;display:flex}.btn-sm{border:1px solid var(--border);background:var(--bg);cursor:pointer;color:var(--text);border-radius:6px;padding:6px 12px;font-size:.8rem}.btn-sm.active{background:var(--accent);border-color:var(--primary);color:var(--primary)}.btn-sm.inactive{color:var(--text-muted)}.btn-sm.delete{color:var(--danger)}.add-product-form{flex-direction:column;gap:10px;display:flex}.add-product-form input,.add-product-form select{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:12px;font-size:1rem}.form-actions{gap:8px;display:flex}.form-actions .btn{flex:1}.add-btn{width:100%}.order-history{max-width:560px}.history-summary{gap:12px;margin-bottom:16px;display:flex}.summary-card{background:var(--accent);border-radius:var(--radius);text-align:center;flex:1;padding:16px}.summary-label{color:var(--text-muted);margin-bottom:4px;font-size:.85rem;display:block}.summary-value{color:var(--primary);font-size:1.4rem;font-weight:700}.history-toggle{gap:6px;margin-bottom:12px;display:flex}.order-list{max-height:50dvh;overflow-y:auto}.order-item{border-bottom:1px solid var(--border);padding:10px 0}.order-item-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.order-time{font-weight:600}.order-method{color:var(--text-muted);font-size:.85rem}.order-total{color:var(--primary);font-weight:700}.order-item-lines{flex-wrap:wrap;gap:6px;display:flex}.order-line{color:var(--text-muted);background:var(--bg);border-radius:4px;padding:2px 8px;font-size:.8rem}.settings-form{flex-direction:column;gap:16px;display:flex}.settings-form label{flex-direction:column;gap:4px;display:flex}.settings-form label span{font-size:.9rem;font-weight:600}.settings-form input{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:12px;font-size:1rem}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex;overflow-y:auto}.login-container{align-items:flex-start;gap:32px;width:100%;max-width:820px;display:flex}.login-info{flex:1;padding:16px 0}.login-info h1{color:var(--primary);margin-bottom:4px;font-size:2rem}.login-tagline{color:var(--text-muted);margin-bottom:24px;font-size:1.1rem}.feature-list{flex-direction:column;gap:14px;margin-bottom:20px;display:flex}.feature-item{color:var(--text);align-items:flex-start;gap:12px;display:flex}.feature-item svg{color:var(--primary);flex-shrink:0;margin-top:2px}.feature-item div{flex-direction:column;gap:2px;display:flex}.feature-item strong{font-size:.95rem}.feature-item span{color:var(--text-muted);font-size:.85rem}.login-disclaimer{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;font-size:.8rem;line-height:1.4}.login-card{background:var(--surface);border-radius:16px;flex-shrink:0;width:100%;max-width:380px;padding:32px;box-shadow:0 8px 32px #0000001a}.login-tabs{border:1px solid var(--border);border-radius:8px;gap:0;margin-bottom:20px;display:flex;overflow:hidden}.login-tab{background:var(--bg);cursor:pointer;color:var(--text-muted);border:none;flex:1;padding:10px;font-weight:600}.login-tab.active{background:var(--primary);color:#fff}.login-form{flex-direction:column;gap:12px;display:flex}.login-form input{border:1px solid var(--border);background:var(--bg);border-radius:8px;padding:14px;font-size:1rem}.login-form input:disabled{opacity:.6}.login-error{color:var(--danger);text-align:left;font-size:.9rem}.product-sort-btns{flex-direction:column;gap:2px;margin-right:6px;display:flex}.sort-btn{border:1px solid var(--border);background:var(--bg);cursor:pointer;width:24px;height:20px;color:var(--text-muted);border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex}.sort-btn:disabled{opacity:.3;cursor:default}.sort-btn:not(:disabled):active{background:var(--border)}.order-item.clickable{cursor:pointer;border-radius:8px;margin:0 -8px;padding:10px 8px}.order-item.clickable:active{background:var(--accent)}.register-note{color:var(--text-muted);text-align:center;margin-top:12px;font-size:.8rem}@media (width<=700px){.login-page{align-items:flex-start;padding:16px 16px 32px}.login-container{flex-direction:column-reverse;align-items:center}.login-info{text-align:center}.feature-list{text-align:left}.login-card{max-width:100%}}@media (width<=768px){.main-cart{width:240px}.product-grid{grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}}@media (width<=600px){.app-main{flex-direction:column}.main-cart{border-left:none;border-top:1px solid var(--border);width:100%;max-height:40dvh}.main-products{flex:1}}.display-screen{color:#f0f0f0;background:#111;flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:32px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;display:flex}.display-idle{text-align:center}.display-company{color:#fff;text-align:center;margin-bottom:16px;font-size:2.5rem;font-weight:700}.display-welcome{color:#888;font-size:2rem}.display-error{color:#f66;font-size:1.2rem}.display-loading{color:#888;font-size:1.5rem}.display-items{flex:1;width:100%;max-width:600px;margin:24px 0;overflow-y:auto}.display-item{border-bottom:1px solid #333;justify-content:space-between;padding:12px 0;font-size:1.5rem;display:flex}.display-item-name{font-weight:500}.display-item-qty{color:#aaa}.display-item-price{color:#4ade80;font-weight:600}.display-total{color:#4ade80;border-top:3px solid #4ade80;justify-content:space-between;width:100%;max-width:600px;padding:20px 0;font-size:2rem;font-weight:700;display:flex}.display-paying{text-align:center}.display-paying-title{color:#4ade80;margin-bottom:12px;font-size:1.8rem}.display-paying-total{margin-bottom:24px;font-size:3rem;font-weight:700}.display-qr{background:#fff;border-radius:16px;margin-bottom:20px;padding:20px;display:inline-block}.display-paying-hint{color:#888;font-size:1.3rem}.dashboard-modal{max-width:600px}.dashboard-hero{text-align:center;background:var(--accent);border-radius:var(--radius);margin-bottom:16px;padding:20px 0}.dashboard-hero-total{color:var(--primary);font-size:2.5rem;font-weight:700}.dashboard-hero-label{color:var(--text-muted);margin-top:4px;font-size:.95rem}.dashboard-section-title{color:var(--text);margin:16px 0 8px;font-size:.95rem}.dashboard-hours{flex-direction:column;gap:6px;display:flex}.dashboard-hour-bar{align-items:center;gap:8px;display:flex}.dashboard-hour-label{text-align:right;width:28px;color:var(--text-muted);font-size:.85rem;font-weight:600}.dashboard-hour-track{background:var(--bg);border-radius:4px;flex:1;height:20px;overflow:hidden}.dashboard-hour-fill{background:var(--primary);border-radius:4px;min-width:2px;height:100%;transition:width .3s}.dashboard-hour-value{color:var(--text-muted);text-align:right;min-width:70px;font-size:.8rem}.dashboard-methods{flex-direction:column;gap:10px;display:flex}.dashboard-method{flex-direction:column;gap:4px;display:flex}.dashboard-method-header{justify-content:space-between;font-size:.9rem;display:flex}.dashboard-method-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.dashboard-method-track{background:var(--bg);border-radius:4px;height:8px;overflow:hidden}.dashboard-method-fill{border-radius:4px;height:100%;transition:width .3s}.dashboard-products{flex-direction:column;display:flex}.dashboard-product{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;font-size:.9rem;display:flex}.dashboard-orders{flex-direction:column;display:flex}.dashboard-order{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;font-size:.9rem;display:flex}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spin{animation:1s linear infinite spin}.totp-input-group{justify-content:center;gap:8px;display:flex}.totp-digit{text-align:center;border:2px solid var(--border);background:var(--bg);width:48px;height:56px;color:var(--text);border-radius:8px;outline:none;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:24px;transition:border-color .15s}.totp-digit:focus{border-color:var(--primary)}.totp-digit:disabled{opacity:.5}.totp-error{color:var(--danger);text-align:center;margin-top:8px;font-size:.85rem}.totp-loading{color:var(--text-muted);text-align:center;margin-top:8px;font-size:.85rem}.totp-setup{flex-direction:column;display:flex}.totp-success{color:var(--primary);flex-direction:column;align-items:center;gap:12px;padding:32px 0;font-size:1.2rem;font-weight:600;display:flex}.totp-expand-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;margin-bottom:8px;padding:4px 0;font-size:.85rem;display:flex}.totp-expand-btn:hover{color:var(--text)}.totp-uri-box{background:var(--bg);border:1px solid var(--border);border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 10px;display:flex}.totp-uri-text{word-break:break-all;color:var(--text-muted);flex:1;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:.75rem}.totp-banner{justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;font-size:.9rem;display:flex}.totp-banner-yellow{color:#854d0e;background:#fef9c3;border-bottom:1px solid #fde68a}.totp-banner-red{color:var(--danger);background:#fef2f2;border-bottom:1px solid #fecaca}.totp-enforce-page{background:var(--bg);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex}.scanner-overlay{z-index:200;color:#fff;background:#000;flex-direction:column;display:flex;position:fixed;inset:0}.scanner-header{background:#0009;justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.scanner-title{align-items:center;gap:8px;font-weight:600;display:inline-flex}.scanner-close{color:#fff;cursor:pointer;background:#ffffff1a;border:none;border-radius:8px;padding:6px;display:flex}.scanner-stage{flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%}.scanner-frame{pointer-events:none;border:2px solid #ffffffd9;border-radius:16px;position:absolute;inset:12% 8%;box-shadow:0 0 0 9999px #00000059}.scanner-error{text-align:center;color:#fff;flex-direction:column;align-items:center;gap:12px;padding:24px;display:flex}.scanner-footer{text-align:center;background:#0009;padding:12px 16px;font-size:.9rem}.search-scan{color:var(--text);cursor:pointer;background:#0000000f;border:none;border-radius:8px;align-items:center;padding:6px 8px;display:flex;position:absolute;right:8px}.search-scan:hover{background:#0000001f}.search-scan:active{background:#0000002e}.search-input.with-scan{padding-right:80px}.search-clear.with-scan{right:44px}
