:root{--bg-primary: #ffffff;--bg-surface: #F8FAFC;--bg-subtle: #F1F5F9;--bg-dark: #F8FAFC;--bg-card: #8320fb;--bg-card-hover: #7312e6;--text-main: #0F172A;--text-body: #334155;--text-muted: #64748B;--text-placeholder:#94A3B8;--text-on-card: #FFFFFF;--text-on-card-sub:#E9D5FF;--primary: #8320fb;--primary-vivid: #9333EA;--primary-hover: #7212EA;--primary-light: rgba(131, 32, 251, .12);--primary-gradient: linear-gradient(135deg, #6366F1 0%, #8320FB 55%, #A855F7 100%);--primary-gradient-hover: linear-gradient(135deg, #4F46E5 0%, #7212EA 55%, #9333EA 100%);--hero-gradient: linear-gradient(135deg, #3B0764 0%, #6D28D9 50%, #8320FB 100%);--gold: #F59E0B;--gold-hover: #D97706;--gold-light: rgba(245, 158, 11, .15);--gold-gradient: linear-gradient(135deg, #F59E0B 0%, #FBBF24 100%);--accent-gold: #F59E0B;--success: #10B981;--success-light: rgba(16, 185, 129, .12);--warning: #F59E0B;--danger: #EF4444;--danger-light: rgba(239, 68, 68, .12);--border: #E2E8F0;--border-strong: #CBD5E1;--border-glow: rgba(131, 32, 251, .4);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-full: 9999px;--shadow-xs: 0 1px 2px rgba(15, 23, 42, .05);--shadow-sm: 0 2px 8px rgba(15, 23, 42, .08);--shadow-md: 0 6px 24px rgba(131, 32, 251, .22);--shadow-lg: 0 14px 40px rgba(131, 32, 251, .32);--shadow-glow: 0 0 28px rgba(131, 32, 251, .5);--shadow-gold-glow:0 0 20px rgba(245, 158, 11, .38);--transition: all .25s cubic-bezier(.16, 1, .3, 1);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg-primary);color:var(--text-main);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden;padding-left:var(--safe-left);padding-right:var(--safe-right)}h1,h2,h3,h4,h5,h6,.font-heading{font-family:Outfit,Inter,sans-serif;font-weight:700;letter-spacing:-.02em;color:var(--text-main);line-height:1.25}a{color:var(--primary);text-decoration:none;transition:var(--transition)}a:hover{color:var(--primary-hover)}p{color:var(--text-body)}small,.text-sm{color:var(--text-muted)}button{font-family:Inter,sans-serif;cursor:pointer;min-height:44px}input,select,textarea{font-family:Inter,sans-serif;font-size:16px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-subtle);color:var(--text-main);border:1.5px solid var(--border-strong);border-radius:var(--radius-md);width:100%;padding:.8rem 1rem;transition:border-color .2s,box-shadow .2s;box-shadow:var(--shadow-xs)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #8320fb2e;background:#fff}input::placeholder{color:var(--text-placeholder)}select option{background:#fff;color:var(--text-main)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1.4rem;font-size:.95rem;font-weight:600;border-radius:var(--radius-md);border:1px solid transparent;transition:var(--transition);position:relative;overflow:hidden;min-height:44px;white-space:nowrap;touch-action:manipulation}.btn-primary{background:var(--primary-gradient);color:#fff;box-shadow:0 4px 18px #8320fb66}.btn-primary:hover{background:var(--primary-gradient-hover);transform:translateY(-1px);box-shadow:0 8px 28px #8320fb8c}.btn-outline{background:transparent;border:1.5px solid var(--primary);color:var(--primary)}.btn-outline:hover{background:var(--primary-light);border-color:var(--primary-hover);color:var(--primary-hover);box-shadow:0 4px 18px #8320fb40;transform:translateY(-1px)}.btn-outline-white{background:#ffffff26;border:1.5px solid rgba(255,255,255,.45);color:#fff;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.btn-outline-white:hover{background:#ffffff47;border-color:#ffffffb3;color:#fff;box-shadow:0 4px 18px #fff3;transform:translateY(-1px)}.btn-dark{background-color:var(--bg-subtle);color:var(--text-main);border:1px solid var(--border-strong)}.btn-dark:hover{background-color:var(--bg-surface);border-color:var(--primary);color:var(--primary)}.btn-full{width:100%}.btn-white,button[style*="background: #FFFFFF"],button[style*="background:#FFFFFF"],button[style*="background: rgb(255, 255, 255)"],.card button.btn-white{background:#fff!important;color:#8320fb!important}.btn-white span,button[style*="background: #FFFFFF"] span,button[style*="background:#FFFFFF"] span,button[style*="background: rgb(255, 255, 255)"] span,.card button.btn-white span,.card button[style*="background: #FFFFFF"] span{color:#8320fb!important}.card{background:var(--bg-card);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-md);transition:var(--transition);color:#fff}.card h1,.card h2,.card h3,.card h4,.card h5,.card h6{color:#fff!important}.card p,.card span{color:#f3e8ff}.card:hover{background:var(--bg-card-hover);border-color:#ffffff73;box-shadow:var(--shadow-lg);transform:translateY(-2px)}.card-hero-gradient{background:var(--hero-gradient);color:#fff;border:1px solid rgba(255,255,255,.25);box-shadow:0 12px 32px -5px #8320fb80}.card-dark{background-color:var(--bg-dark);color:var(--text-main);border-color:var(--border)}.admin-layout-container .card,.merchant-layout-container .card{background:#fff!important;color:#0f172a!important;border:1px solid #E2E8F0!important;box-shadow:0 4px 20px #0000000d!important}.admin-layout-container .card h1,.admin-layout-container .card h2,.admin-layout-container .card h3,.admin-layout-container .card h4,.admin-layout-container .card h5,.admin-layout-container .card h6,.merchant-layout-container .card h1,.merchant-layout-container .card h2,.merchant-layout-container .card h3,.merchant-layout-container .card h4,.merchant-layout-container .card h5,.merchant-layout-container .card h6{color:#0f172a!important}.admin-layout-container .card p,.merchant-layout-container .card p{color:#475569!important}.admin-layout-container .card span,.merchant-layout-container .card span{color:inherit}.admin-layout-container .card table,.merchant-layout-container .card table{color:#1e293b!important}.admin-layout-container .card table th,.merchant-layout-container .card table th{background:#f8fafc!important;color:#475569!important;border-bottom:1.5px solid #E2E8F0!important}.admin-layout-container .card table td,.merchant-layout-container .card table td{color:#0f172a!important;border-bottom:1px solid #F1F5F9!important}.admin-layout-container .card:hover,.merchant-layout-container .card:hover{background:#fff!important;border-color:#cbd5e1!important;box-shadow:0 8px 25px #00000014!important;transform:translateY(-2px)}.admin-layout-container input,.admin-layout-container textarea,.admin-layout-container select,.merchant-layout-container input,.merchant-layout-container textarea,.merchant-layout-container select{background:#fff!important;color:#0f172a!important;border:1.5px solid #CBD5E1!important;box-shadow:0 1px 3px #0000000d!important}.admin-layout-container input:focus,.admin-layout-container textarea:focus,.admin-layout-container select:focus,.merchant-layout-container input:focus,.merchant-layout-container textarea:focus,.merchant-layout-container select:focus{border-color:#8320fb!important;box-shadow:0 0 0 3px #8320fb26!important}.admin-layout-container label,.merchant-layout-container label{color:#0f172a!important}.badge{display:inline-flex;align-items:center;padding:.3rem .75rem;font-size:.75rem;font-weight:700;border-radius:var(--radius-full);letter-spacing:.03em;white-space:nowrap}.badge-primary{background:#8320fb1f;color:#8320fb;border:1px solid rgba(131,32,251,.28)}.card .badge-primary{background:#fff3;color:#fff;border:1px solid rgba(255,255,255,.35)}.badge-success{background:#10b9811f;color:#047857;border:1px solid rgba(16,185,129,.28)}.badge-warning{background:#f59e0b1f;color:#b45309;border:1px solid rgba(245,158,11,.3)}.card-hero-gradient .badge-success,.card-dark .badge-success{background:#10b98140;color:#a7f3d0;border:1px solid rgba(16,185,129,.4)}.card-hero-gradient .badge-warning,.card-dark .badge-warning{background:#f59e0b40;color:#fde68a;border:1px solid rgba(245,158,11,.4)}.admin-layout-container .badge,.merchant-layout-container .badge{font-weight:700;letter-spacing:.02em}.admin-layout-container .badge-primary,.merchant-layout-container .badge-primary,.admin-layout-container .card .badge-primary,.merchant-layout-container .card .badge-primary{background:#ede9fe!important;color:#6d28d9!important;border:1.5px solid #C4B5FD!important}.admin-layout-container .badge-success,.merchant-layout-container .badge-success,.admin-layout-container .card .badge-success,.merchant-layout-container .card .badge-success{background:#dcfce7!important;color:#15803d!important;border:1.5px solid #86EFAC!important}.admin-layout-container .badge-warning,.merchant-layout-container .badge-warning,.admin-layout-container .card .badge-warning,.merchant-layout-container .card .badge-warning{background:#fef3c7!important;color:#b45309!important;border:1.5px solid #FCD34D!important}.admin-layout-container .badge-danger,.merchant-layout-container .badge-danger,.admin-layout-container .card .badge-danger,.merchant-layout-container .card .badge-danger{background:#fee2e2!important;color:#b91c1c!important;border:1.5px solid #FCA5A5!important}.admin-layout-container .badge-secondary,.merchant-layout-container .badge-secondary,.admin-layout-container .card .badge-secondary,.merchant-layout-container .card .badge-secondary{background:#f1f5f9!important;color:#475569!important;border:1.5px solid #CBD5E1!important}.admin-layout-container h1,.admin-layout-container h2,.admin-layout-container h3,.admin-layout-container h4{color:#0f172a!important}.admin-layout-container p{color:#475569!important}.stamp-dots-grid{display:grid;gap:.5rem;justify-content:center;margin:1.25rem 0}.stamp-dot{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:.88rem;transition:var(--transition);position:relative;flex-shrink:0}.stamp-dot.filled{background:#fff;color:#8320fb;box-shadow:0 0 0 2.5px #ffffffe6,0 4px 18px #ffffff8c,0 0 32px #ffffff40;border:none}.stamp-dot.empty{background:#ffffff14;border:2px dashed rgba(255,255,255,.4);color:#ffffff80}.stamp-dot.reward{background:linear-gradient(135deg,#fbbf24,#f59e0b 60%,#d97706);color:#fff;box-shadow:0 0 0 2.5px #fbbf24b3,0 6px 20px #f59e0b8c;border:none;animation:pulseGold 2.2s infinite ease-in-out}@keyframes pulseGold{0%,to{transform:scale(1);box-shadow:0 0 0 2.5px #fbbf24b3,0 6px 20px #f59e0b8c}50%{transform:scale(1.1);box-shadow:0 0 0 4px #fbbf2480,0 8px 28px #f59e0bb3}}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}@keyframes pulseGlow{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.85}}.animate-pulse-glow{animation:pulseGlow 2.5s infinite ease-in-out}@media (max-width: 359px){.btn{padding:.65rem .9rem;font-size:.85rem}.card{padding:1rem;border-radius:var(--radius-md)}.stamp-dot{width:40px;height:40px;font-size:.78rem}.stamp-dots-grid{gap:.35rem}}@media (max-width: 479px){body{overflow-x:hidden}.card{padding:1.1rem}.btn-group-mobile{flex-direction:column;width:100%}.btn-group-mobile .btn{width:100%}.grid-4,.grid-3{grid-template-columns:1fr 1fr}.stamp-dot{width:44px;height:44px;font-size:.82rem}.stamp-dots-grid{gap:.45rem}}@media (max-width: 767px){.grid-2{grid-template-columns:1fr}.grid-3,.grid-4{grid-template-columns:1fr 1fr}.card:hover{transform:none}}.caisse-nfc-page{min-height:100vh;background:var(--bg-primary);display:flex;flex-direction:column}.caisse-nfc-nav{position:sticky;top:0;z-index:100;background:#1c0620f2;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid var(--border);padding:.75rem 1rem}.caisse-nfc-nav-content{max-width:1000px;margin:0 auto;display:flex;align-items:center;justify-content:space-between}.caisse-logo-icon{width:38px;height:38px;border-radius:50%;background:var(--primary-gradient);display:flex;align-items:center;justify-content:center;box-shadow:0 0 15px #d946ef80}.caisse-nfc-main{flex:1;max-width:1000px;width:100%;margin:0 auto;padding:1.5rem 1rem 4rem}.caisse-nfc-layout{display:grid;grid-template-columns:minmax(320px,420px) 1fr;gap:2rem;align-items:start;justify-content:center}@media (max-width: 850px){.caisse-nfc-layout{grid-template-columns:1fr}}.thermal-receipt-column{display:flex;flex-direction:column;align-items:center;width:100%}.thermal-receipt-wrapper{width:100%;max-width:380px;filter:drop-shadow(0 15px 35px rgba(0,0,0,.7))}.thermal-receipt-paper{background:#fff;color:#111827;font-family:Courier New,Courier,monospace;padding:2rem 1.5rem 1.5rem;border-radius:4px;position:relative;box-shadow:0 4px 20px #00000040;line-height:1.4}.thermal-receipt-paper:before,.thermal-receipt-paper:after{content:"";position:absolute;left:0;right:0;height:8px;background-size:16px 8px}.thermal-receipt-paper:before{top:-8px;background-image:radial-gradient(circle at 8px 8px,transparent 8px,#FFFFFF 9px)}.thermal-receipt-paper:after{bottom:-8px;background-image:radial-gradient(circle at 8px 0px,transparent 8px,#FFFFFF 9px)}.thermal-receipt-header{text-align:center;margin-bottom:1rem}.receipt-logo{max-width:110px;max-height:65px;object-fit:contain;margin:0 auto .5rem;display:block}.receipt-biz-name{font-family:Outfit,sans-serif;font-size:1.3rem;font-weight:900;color:#000;margin-bottom:.2rem;letter-spacing:-.01em}.receipt-biz-cat{font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;font-weight:700;color:#4b5563;display:block;margin-bottom:.35rem}.receipt-biz-info{font-size:.78rem;color:#374151;margin-bottom:.15rem;display:flex;align-items:center;justify-content:center;gap:.3rem}.receipt-divider-dashed{border-top:1.5px dashed #6B7280;margin:.85rem 0}.receipt-divider-double{border-top:2px solid #111827;border-bottom:2px solid #111827;height:4px;margin:.85rem 0}.receipt-meta-grid{display:flex;justify-content:space-between;font-size:.78rem}.receipt-meta-label{display:block;font-size:.7rem;color:#6b7280;text-transform:uppercase}.receipt-meta-val{font-weight:800;color:#000}.receipt-customer-badge{background:#f3f4f6;border:1px dashed #9CA3AF;padding:.35rem .6rem;border-radius:4px;font-size:.75rem;margin-top:.5rem;text-align:center}.receipt-table{width:100%;border-collapse:collapse;font-size:.82rem}.receipt-table th{padding:.4rem 0;border-bottom:1.5px solid #000000;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#111827}.receipt-table td{padding:.45rem 0;border-bottom:1px dotted #D1D5DB;color:#111827}.receipt-totals-box{display:flex;flex-direction:column;gap:.3rem;font-size:.82rem}.receipt-total-row{display:flex;justify-content:space-between;color:#374151}.receipt-total-row.discount{color:#dc2626;font-weight:700}.receipt-total-row.grand-total{font-size:1.25rem;font-weight:900;color:#000;padding:.4rem 0;margin-top:.2rem;font-family:Outfit,sans-serif}.receipt-total-row.payment-method{font-size:.78rem;color:#4b5563;padding-top:.25rem;border-top:1px dotted #9CA3AF}.receipt-loyalty-bonus{background:#fef3c7;color:#92400e;border:1px solid #FCD34D;padding:.5rem;border-radius:4px;font-size:.75rem;font-weight:700;text-align:center;margin-top:.75rem}.receipt-footer{text-align:center;margin-top:.5rem}.receipt-thankyou{font-size:.8rem;font-style:italic;color:#4b5563;margin-bottom:.75rem}.receipt-barcode{display:flex;flex-direction:column;align-items:center;margin:.5rem 0}.barcode-lines{height:32px;width:80%;background:repeating-linear-gradient(90deg,#000,#000 2px,#fff 2px,#fff 4px,#000 4px,#000 7px,#fff 7px,#fff 9px,#000 9px,#000 13px,#fff 13px,#fff 15px)}.barcode-text{font-size:.72rem;letter-spacing:.2em;font-weight:700;margin-top:.2rem}.receipt-stampy-badge{font-size:.68rem;color:#6b7280;margin-top:.6rem}.receipt-actions-toolbar{display:flex;flex-direction:column;gap:.65rem;width:100%;max-width:380px;margin-top:1.25rem}.caisse-nfc-side{display:flex;flex-direction:column;gap:1.25rem}.spin-animation{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media print{body{background:#fff!important;color:#000!important;padding:0!important;margin:0!important}.no-print,nav,header,aside,button,.receipt-actions-toolbar,.caisse-nfc-nav,.caisse-nfc-side{display:none!important}.caisse-nfc-page,.caisse-nfc-main,.caisse-nfc-layout,.thermal-receipt-column,.thermal-receipt-wrapper{max-width:100%!important;width:100%!important;margin:0!important;padding:0!important;box-shadow:none!important;filter:none!important;display:block!important}.thermal-receipt-paper{box-shadow:none!important;border:none!important;padding:.5rem!important;width:100%!important;max-width:300px!important;margin:0 auto!important}.thermal-receipt-paper:before,.thermal-receipt-paper:after{display:none!important}}
