.error-boundary{height:100vh;width:100vw;display:flex;align-items:center;justify-content:center;background-color:var(--color-bg-primary, #eaf6ff);color:var(--color-text-primary, #1e293b);padding:1rem}.error-content{background-color:var(--color-bg-card, #ffffff);padding:2rem;border-radius:24px;box-shadow:var(--shadow-xl, 0 20px 60px rgba(0, 0, 0, .15));text-align:center;max-width:500px;width:100%}.error-icon{font-size:3rem;margin-bottom:1rem}.error-title{font-size:1.5rem;font-weight:700;margin-bottom:.5rem;color:var(--color-text-primary, #1e293b)}.error-message{color:var(--color-text-secondary, #64748b);margin-bottom:1.5rem;line-height:1.5}.error-details{background-color:#0000000d;padding:1rem;border-radius:12px;font-family:monospace;font-size:.85rem;text-align:left;margin-bottom:1.5rem;overflow-x:auto;color:var(--color-error, #ef4444)}.error-actions{display:flex;gap:1rem;justify-content:center}.error-actions button{padding:.75rem 1.5rem;border-radius:9999px;font-weight:600;cursor:pointer;transition:all .2s ease;border:none}.error-actions button:hover{transform:translateY(-2px);box-shadow:var(--shadow-md, 0 4px 12px rgba(0, 0, 0, .1))}.btn-reload{background:var(--color-primary, #2e2ff5);color:#fff}.btn-home{background:transparent;border:1px solid var(--color-border-medium, #e5e7eb)!important;color:var(--color-text-primary, #1e293b)}.btn-home:hover{background:var(--color-bg-secondary, #f8fafc)}.popup-overlay{position:fixed;display:flex;align-items:center;justify-content:center;width:100%;height:100%;background-color:#0009;z-index:10;inset:0}.popup-container{background-color:#fff;border-radius:1rem;padding:.5rem;width:90%;max-width:600px;max-height:calc(100vh - 100px);overflow:hidden;display:flex;flex-direction:column}.popup-header{display:flex;justify-content:space-between;align-items:center;height:70px;padding:1rem;font-size:1.25rem}.popup-body{width:100%;overflow-y:auto;max-height:calc(100vh - 300px)}.popup-footer{display:flex;justify-content:space-between;align-items:center;height:70px;padding:1rem;font-size:1.25rem}@media(prefers-color-scheme:dark){.popup-overlay{background-color:#000c}.popup-container{background-color:#1e293b;color:#f1f5f9}.popup-header{color:#f1f5f9;border-bottom:1px solid #475569}.popup-footer{color:#f1f5f9;border-top:1px solid #475569}}.theme-toggle{background:none;border:none;cursor:pointer;padding:.5rem;display:flex;align-items:center;justify-content:center;transition:transform .2s ease}.theme-toggle:hover{transform:scale(1.1)}.theme-toggle:active{transform:scale(.95)}.theme-toggle-icon{font-size:1.5rem;line-height:1;display:block}@keyframes skeleton-loading{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.skeleton-base,.skeleton-table .skeleton-table-row .skeleton-table-cell,.skeleton-table .skeleton-table-header .skeleton-table-header-cell,.skeleton-list .skeleton-list-item .skeleton-list-content .skeleton-text,.skeleton-list .skeleton-list-item .skeleton-list-content .skeleton-title,.skeleton-list .skeleton-list-item .skeleton-avatar,.skeleton-card .skeleton-content .skeleton-button,.skeleton-card .skeleton-content .skeleton-text,.skeleton-card .skeleton-content .skeleton-title,.skeleton-card .skeleton-image{background:linear-gradient(90deg,var(--bg-secondary, #f0f0f0) 0%,var(--bg-tertiary, #e0e0e0) 50%,var(--bg-secondary, #f0f0f0) 100%);background-size:200px 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:4px}.skeleton-card{background:var(--bg-primary, #fff);border:1px solid var(--border-light, #e5e7eb);border-radius:12px;padding:1rem;margin-bottom:1rem;box-shadow:0 2px 4px #0000000d}.skeleton-card .skeleton-image{width:100%;height:200px;margin-bottom:1rem;border-radius:8px}.skeleton-card .skeleton-content .skeleton-title{height:24px;width:70%;margin-bottom:.75rem}.skeleton-card .skeleton-content .skeleton-text{height:16px;width:100%;margin-bottom:.5rem}.skeleton-card .skeleton-content .skeleton-text.skeleton-text-short{width:60%}.skeleton-card .skeleton-content .skeleton-button{height:40px;width:120px;margin-top:1rem;border-radius:8px}.skeleton-list .skeleton-list-item{display:flex;align-items:center;gap:1rem;padding:1rem;border-bottom:1px solid var(--border-light, #e5e7eb)}.skeleton-list .skeleton-list-item .skeleton-avatar{width:48px;height:48px;border-radius:50%;flex-shrink:0}.skeleton-list .skeleton-list-item .skeleton-list-content{flex:1}.skeleton-list .skeleton-list-item .skeleton-list-content .skeleton-title{height:20px;width:40%;margin-bottom:.5rem}.skeleton-list .skeleton-list-item .skeleton-list-content .skeleton-text{height:16px;width:80%}.skeleton-list .skeleton-list-item .skeleton-list-content .skeleton-text.skeleton-text-short{width:50%}.skeleton-table{width:100%;border:1px solid var(--border-light, #e5e7eb);border-radius:8px;overflow:hidden}.skeleton-table .skeleton-table-header{display:flex;background:var(--bg-secondary, #f9fafb);padding:.75rem;gap:1rem}.skeleton-table .skeleton-table-header .skeleton-table-header-cell{height:20px;flex:1}.skeleton-table .skeleton-table-row{display:flex;padding:.75rem;gap:1rem;border-top:1px solid var(--border-light, #e5e7eb)}.skeleton-table .skeleton-table-row .skeleton-table-cell{height:16px;flex:1}.spinner-container{display:flex;align-items:center;justify-content:center;gap:.75rem}.spinner-container.spinner-small .spinner{width:20px;height:20px;border-width:2px}.spinner-container.spinner-medium .spinner{width:40px;height:40px;border-width:3px}.spinner-container.spinner-large .spinner{width:60px;height:60px;border-width:4px}.spinner{border-radius:50%;border-style:solid;border-top-color:transparent;animation:spinner-rotate .8s linear infinite}.spinner.spinner-primary{border-color:var(--primary, #4f46e5);border-top-color:transparent}.spinner.spinner-white{border-color:#fff;border-top-color:transparent}.spinner.spinner-secondary{border-color:var(--text-secondary, #6b7280);border-top-color:transparent}@keyframes spinner-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.spinner-text{color:var(--text-secondary, #6b7280);font-size:.9rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media(max-width:768px){.skeleton-card .skeleton-image{height:150px}.skeleton-table .skeleton-table-header,.skeleton-table .skeleton-table-row{flex-direction:column}}.skeleton{background-color:var(--color-border-light, #e2e8f0);border-radius:8px;display:inline-block;position:relative;overflow:hidden}.skeleton-text{border-radius:8px;transform:scaleY(.6)}.skeleton-circular{border-radius:50%}.skeleton-rectangular{border-radius:8px}.skeleton-pulse{animation:skeleton-pulse 2s cubic-bezier(.4,0,.6,1) infinite}.skeleton-wave:after{content:"";position:absolute;inset:0;transform:translate(-100%);background:linear-gradient(90deg,#fff0 0,#fff3 20%,#ffffff80 60%,#fff0);animation:shimmer 2s infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{to{transform:translate(100%)}}[data-theme=dark] .skeleton{background-color:#334155}[data-theme=dark] .skeleton-wave:after{background:linear-gradient(90deg,#fff0 0,#ffffff0d 20%,#ffffff1a 60%,#fff0)}.products-page{padding:20px;background-color:#f8f9fa;min-height:100vh}.products-page .header{margin-bottom:20px;text-align:center}.products-page .header h2{color:#2c3e50;font-weight:700}.products-page .products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px}.products-page .product-card{background:#fff;border-radius:12px;box-shadow:0 4px 6px #0000000d;overflow:hidden;display:flex;flex-direction:column}.products-page .product-card:hover{transform:translateY(-8px) scale(1.02);box-shadow:0 12px 20px #0000001a}.products-page .product-card .product-image{width:100%;aspect-ratio:1/1;object-fit:contain;background-color:#fff;padding:10px}.products-page .product-card .product-info{padding:15px;flex-grow:1;display:flex;flex-direction:column}.products-page .product-card .product-info h3{font-size:1.2rem;margin-bottom:5px;color:#333}.products-page .product-card .product-info .description{font-size:.9rem;color:#666;margin-bottom:10px;flex-grow:1}.products-page .product-card .product-info .price-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.products-page .product-card .product-info .price-row .price{font-size:1.3rem;font-weight:700;color:#27ae60}.products-page .product-card .product-info .price-row .discount{font-size:.9rem;color:#e74c3c;text-decoration:line-through}.products-page .product-card .product-info .non-returnable{font-size:.8rem;color:#e67e22;margin-bottom:10px;font-weight:600}.products-page .product-card .product-info .actions{display:flex;gap:10px}.products-page .product-card .product-info .actions button{flex:1;padding:12px 8px;border:none;border-radius:8px;font-weight:600;cursor:pointer;transition:background .2s}.products-page .product-card .product-info .actions button.btn-buy{background-color:var(--primary);color:#fff;animation:pulse-subtle 3s ease-in-out infinite}.products-page .product-card .product-info .actions button.btn-buy:hover{background-color:var(--primary-dark)}.products-page .product-card .product-info .actions button.btn-buy:disabled{background-color:#95a5a6;cursor:not-allowed}.products-page .product-card .product-info .actions button.btn-buy:disabled:hover{background-color:#95a5a6}.products-page .product-card .product-info .actions button.btn-cart{background-color:#ecf0f1;color:#2c3e50}.products-page .product-card .product-info .actions button.btn-cart:hover{background-color:#bdc3c7}.buy-product-modal{border:none;border-radius:16px;box-shadow:0 10px 30px #0003;overflow:hidden}.buy-product-modal .modal-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-bottom:none;padding:20px 24px;display:flex;justify-content:space-between;align-items:center}.buy-product-modal .modal-header .modal-title{font-weight:700;font-size:1.25rem;margin:0}.buy-product-modal .modal-header .close{padding:0;margin:0;background:transparent;border:none;color:#fffc;font-size:2rem;line-height:.8;font-weight:300;text-shadow:none;opacity:1;outline:none;transition:transform .2s}.buy-product-modal .modal-header .close:hover{color:#fff;transform:scale(1.1);opacity:1;text-decoration:none}.buy-product-modal .modal-header .close:focus{outline:none}.buy-product-modal .modal-body{padding:24px;background-color:#f8f9fa}.buy-product-modal .modal-body label{font-weight:600;color:#4a5568;margin-bottom:8px;font-size:.9rem;display:flex;align-items:center;gap:6px}.buy-product-modal .modal-body .form-control{border-radius:8px;border:1px solid #e2e8f0;padding:10px 12px;height:auto;font-size:1rem;box-shadow:none}.buy-product-modal .modal-body .form-control:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.buy-product-modal .modal-body .total-amount{background-color:#fff;padding:15px;border-radius:10px;margin-top:20px;text-align:center;border:1px dashed #cbd5e0}.buy-product-modal .modal-body .total-amount h5{margin:0;color:#2d3748;font-size:1.2rem;font-weight:700}.buy-product-modal .modal-body .total-amount h5 span{color:#667eea;font-size:1.5rem}.buy-product-modal .modal-footer{background-color:#fff;border-top:none;padding:20px 24px;display:flex;gap:12px}.buy-product-modal .modal-footer .btn{border-radius:8px;padding:10px 20px;font-weight:600;flex:1;border:none;transition:all .2s}.buy-product-modal .modal-footer .btn-secondary{background-color:#e2e8f0;color:#4a5568}.buy-product-modal .modal-footer .btn-secondary:hover{background-color:#cbd5e0}.buy-product-modal .modal-footer .btn-outline-primary{border:2px solid #667eea;color:#667eea;background:transparent}.buy-product-modal .modal-footer .btn-outline-primary:hover{background-color:#f0f4ff}.buy-product-modal .modal-footer .btn-primary{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;box-shadow:0 4px 6px #764ba24d}.buy-product-modal .modal-footer .btn-primary:hover{box-shadow:0 6px 8px #764ba266;transform:translateY(-1px)}@media(prefers-color-scheme:dark){.products-page{background-color:#0f172a}.products-page .header h2{color:#f1f5f9}.products-page .header p{color:#fffc}.products-page .product-card{background:#334155}.products-page .product-card .product-image{background-color:#1e293b}.products-page .product-card .product-info h3{color:#f1f5f9}.products-page .product-card .product-info .text-muted{color:#94a3b8!important}.products-page .product-card .product-info .description{color:#cbd5e1}.products-page .product-card .product-info .price-row .price{color:#34d399}.products-page .product-card .product-info .price-row .discount{color:#f87171}.products-page .product-card .product-info .non-returnable{color:#fb923c}.products-page .product-card .product-info .actions button.btn-buy{background-color:#1e40af}.products-page .product-card .product-info .actions button.btn-buy:hover{background-color:#1e3a8a}.products-page .product-card .product-info .actions button.btn-buy:disabled{background-color:#475569}.products-page .product-card .product-info .actions button.btn-cart{background-color:#475569;color:#f1f5f9}.products-page .product-card .product-info .actions button.btn-cart:hover{background-color:#64748b}.buy-product-modal .modal-header{background:linear-gradient(135deg,#1e40af,#7c3aed)}.buy-product-modal .modal-body{background-color:#1e293b}.buy-product-modal .modal-body label{color:#cbd5e1}.buy-product-modal .modal-body .form-control{background-color:#334155;border-color:#475569;color:#f1f5f9}.buy-product-modal .modal-body .form-control:focus{border-color:#60a5fa;background-color:#334155;box-shadow:0 0 0 3px #60a5fa1a}.buy-product-modal .modal-body .form-control::placeholder{color:#94a3b8}.buy-product-modal .modal-body .total-amount{background-color:#334155;border-color:#475569}.buy-product-modal .modal-body .total-amount h5{color:#f1f5f9}.buy-product-modal .modal-body .total-amount h5 span{color:#60a5fa}.buy-product-modal .modal-footer{background-color:#1e293b}.buy-product-modal .modal-footer .btn-secondary{background-color:#475569;color:#f1f5f9}.buy-product-modal .modal-footer .btn-secondary:hover{background-color:#64748b}.buy-product-modal .modal-footer .btn-outline-primary{border-color:#60a5fa;color:#60a5fa}.buy-product-modal .modal-footer .btn-outline-primary:hover{background-color:#1e3a8a}.buy-product-modal .modal-footer .btn-primary{background:linear-gradient(135deg,#1e40af,#7c3aed)}}@media(max-width:768px){.products-page .modal{display:block!important;padding:0!important;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:9999;background-color:var(--bg-primary)}.products-page .modal .modal-dialog{margin:0;width:100%;max-width:100%;height:100%;min-height:100vh}.products-page .modal .modal-dialog .buy-product-modal{border-radius:0;border:none;height:100vh;max-height:100vh;display:flex;flex-direction:column;box-shadow:none}.products-page .modal .modal-dialog .buy-product-modal .modal-header{border-radius:0;padding:15px 20px;background:var(--primary-dark)}.products-page .modal .modal-dialog .buy-product-modal .modal-body{flex-grow:1;overflow-y:auto;background-color:var(--bg-card)}.products-page .modal .modal-dialog .buy-product-modal .modal-footer{padding-bottom:calc(15px + env(safe-area-inset-bottom));background:var(--bg-card);border-top:1px solid var(--border-light)}}.modal-backdrop-custom{background-color:#0009!important}.modal-blur{backdrop-filter:blur(5px)!important;-webkit-backdrop-filter:blur(5px)!important}
