*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);-webkit-font-smoothing:antialiased;line-height:1.6}.shop-main{min-height:100vh;max-width:var(--container-xl);padding:0 var(--space-6);margin:0 auto}.shop-hero{padding:var(--space-16) 0 var(--space-12);position:relative}.hero-inner{max-width:640px}.hero-eyebrow{align-items:center;gap:var(--space-2);font-family:var(--font-sans);font-size:var(--text-sm);letter-spacing:.08em;text-transform:uppercase;color:var(--color-primary);background:color-mix(in srgb, var(--color-primary) 10%, transparent);padding:var(--space-2) var(--space-4);border-radius:var(--radius-full);margin-bottom:var(--space-6);font-weight:500;display:inline-flex}.live-dot{background:var(--color-primary);border-radius:50%;width:7px;height:7px;animation:2.4s ease-in-out infinite pulse-dot}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.75)}}.hero-title{font-family:var(--font-heading);color:var(--color-text);margin-bottom:var(--space-5);font-size:clamp(40px,6vw,72px);font-weight:600;line-height:1.08}.hero-title em{color:var(--color-accent);font-style:italic}.hero-sub{font-size:var(--text-lg);color:var(--color-text-muted);max-width:480px;font-weight:300;line-height:1.65}.hero-rule{background:linear-gradient(to right, var(--color-border), transparent);height:1px;margin-top:var(--space-12)}.shop-section{padding:var(--space-2) 0 var(--space-16)}.shop-layout{gap:var(--space-10);grid-template-columns:220px 1fr;align-items:start;display:grid}.shop-main-content{min-width:0}.products-grid{gap:var(--space-5);grid-template-columns:repeat(auto-fill,minmax(280px,1fr));display:grid}@keyframes card-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.product-card{background:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6);gap:var(--space-3);cursor:default;border:1px solid var(--color-border);transition:box-shadow var(--transition), transform var(--transition);opacity:0;animation:.45s forwards card-in;animation-delay:var(--delay,0s);flex-direction:column;display:flex;position:relative}.product-card:hover{box-shadow:var(--shadow-md);transform:translateY(-3px)}.card-image{width:calc(100% + var(--space-12));border-radius:calc(var(--radius-lg) - 2px) calc(var(--radius-lg) - 2px) 0 0;height:160px;margin:calc(-1 * var(--space-6)) calc(-1 * var(--space-6)) var(--space-4) calc(-1 * var(--space-6));background:var(--color-bg-subtle);position:relative;overflow:hidden}.card-image img{object-fit:cover;width:100%;height:100%;transition:transform .3s;display:block}.product-card:hover .card-image img{transform:scale(1.04)}.badge-promo,.badge-dlc{top:var(--space-4);right:var(--space-4);font-family:var(--font-sans);letter-spacing:.06em;text-transform:uppercase;padding:3px var(--space-3);border-radius:var(--radius-full);font-size:11px;font-weight:500;position:absolute}.badge-promo{color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 12%, transparent)}.badge-dlc{color:var(--color-warning);background:color-mix(in srgb, var(--color-warning) 12%, transparent)}:is(.product-card:has(.card-image) .badge-promo,.product-card:has(.card-image) .badge-dlc){top:168px}.card-body{gap:var(--space-2);flex-direction:column;flex:1;display:flex}.product-name{font-family:var(--font-heading);font-size:var(--text-xl);color:var(--color-text);padding-right:var(--space-12);font-weight:600;line-height:1.25}.product-desc{font-size:var(--text-sm);color:var(--color-text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.55;display:-webkit-box;overflow:hidden}.product-meta{gap:var(--space-2);margin-top:var(--space-1);flex-wrap:wrap;display:flex}.product-vat,.product-alcohol{color:var(--color-text-muted);background:var(--color-bg-subtle);padding:2px var(--space-2);border-radius:var(--radius-full);font-size:12px}.card-footer{justify-content:space-between;align-items:center;gap:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);display:flex}.availability{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.dot{background:var(--color-success);border-radius:50%;flex-shrink:0;width:8px;height:8px}.dot[data-low]{background:var(--color-warning);animation:1.8s ease-in-out infinite pulse-dot}.avail-text{color:var(--color-text-muted);white-space:nowrap;font-size:13px}.dot[data-low]~.avail-text{color:var(--color-warning)}.price-block{align-items:baseline;gap:var(--space-1);flex-wrap:wrap;justify-content:flex-end;display:flex}.price-from{color:var(--color-text-muted);font-size:11px}.price{font-family:var(--font-heading);font-size:var(--text-2xl);color:var(--color-text);font-weight:600}.price-qty{color:var(--color-text-muted);font-size:12px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton{opacity:1!important;animation:none!important}.sk-line{border-radius:var(--radius-sm);background:linear-gradient(90deg, var(--color-border) 25%, var(--color-bg-subtle) 50%, var(--color-border) 75%);height:14px;margin-bottom:var(--space-3);background-size:800px 100%;animation:1.4s linear infinite shimmer}.sk-name{width:75%;height:22px}.sk-desc{width:100%}.sk-desc.short{width:55%}.sk-footer{padding-top:var(--space-3);border-top:1px solid var(--color-border);justify-content:space-between;display:flex}.sk-pill{border-radius:var(--radius-full);background:var(--color-border);width:100px;height:14px}.sk-price{border-radius:var(--radius-sm);background:var(--color-border);width:64px;height:22px}.empty-state{text-align:center;padding:var(--space-20) var(--space-6);align-items:center;gap:var(--space-4);flex-direction:column;display:flex}.empty-icon{color:var(--color-border);width:48px;height:48px}.empty-title{font-family:var(--font-heading);font-size:var(--text-xl);color:var(--color-text);font-weight:600}.empty-sub{font-size:var(--text-base);color:var(--color-text-muted);max-width:360px;line-height:1.6}.error-banner{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:color-mix(in srgb, var(--color-error) 8%, transparent);border:1px solid color-mix(in srgb, var(--color-error) 30%, transparent);border-radius:var(--radius-lg);color:var(--color-error);font-size:var(--text-sm);display:flex}.shop-footer{border-top:1px solid var(--color-border);padding:var(--space-6) 0 var(--space-12);text-align:center}.shop-footer p{font-size:var(--text-sm);color:var(--color-text-muted)}.shop-sidebar{background:var(--color-bg-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border:1px solid var(--color-border);padding:var(--space-5);gap:var(--space-1);flex-direction:column;display:flex;position:sticky;top:204px}.sidebar-header{padding-bottom:var(--space-3);margin-bottom:var(--space-1);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.sidebar-title{font-family:var(--font-heading);font-size:var(--text-base);color:var(--color-text);font-weight:600}.sidebar-reset{font-size:var(--text-sm);color:var(--color-primary);cursor:pointer;font-family:var(--font-sans);transition:opacity var(--transition);background:0 0;border:none;padding:0}.sidebar-reset:hover{opacity:.7}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.sidebar-item{justify-content:space-between;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);cursor:pointer;text-align:left;font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-muted);transition:background var(--transition), color var(--transition);background:0 0;border:none;width:100%;display:flex}.sidebar-item:hover{background:var(--color-bg-subtle);color:var(--color-text)}.sidebar-item.is-active{background:color-mix(in srgb, var(--color-primary) 10%, transparent);color:var(--color-primary);font-weight:500}.sidebar-item-label{white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.sidebar-item-count{color:inherit;opacity:.6;flex-shrink:0;font-size:12px}.filter-fab{bottom:var(--space-6);right:var(--space-6);z-index:100;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);background:var(--color-text);color:var(--color-bg);border-radius:var(--radius-full);font-family:var(--font-sans);font-size:var(--text-sm);cursor:pointer;box-shadow:var(--shadow-md);transition:transform var(--transition), box-shadow var(--transition);border:none;font-weight:500;display:none;position:fixed}.filter-fab:hover{transform:translateY(-2px)}.filter-fab-dot{background:var(--color-accent);width:7px;height:7px;margin-left:calc(-1 * var(--space-1));border-radius:50%}.filter-backdrop{z-index:199;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;display:none;position:fixed;inset:0}.shop-sidebar-skeleton{gap:var(--space-2);flex-direction:column;width:220px;display:flex}@media (max-width:768px){.shop-layout{grid-template-columns:1fr}.filter-fab{display:flex}.filter-backdrop{display:block}.shop-sidebar{border-radius:0 var(--radius-xl) var(--radius-xl) 0;z-index:200;width:280px;max-width:85vw;transition:transform .3s cubic-bezier(.4,0,.2,1);position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-100%);box-shadow:4px 0 24px #0000001f}.shop-sidebar.is-open{z-index:1001;transform:translate(0)}.shop-sidebar-skeleton{display:none}}@media (max-width:640px){.shop-main{padding:0 var(--space-4)}.shop-hero{padding:var(--space-10) 0 var(--space-8)}.hero-title{font-size:36px}.products-grid{grid-template-columns:1fr}}.card-actions{align-items:center;gap:var(--space-2);display:flex}.add-to-cart-btn{border-radius:var(--radius-md);border:1.5px solid var(--color-border);background:var(--color-bg);width:34px;height:34px;color:var(--color-text);cursor:pointer;transition:background var(--transition), border-color var(--transition), color var(--transition), transform var(--transition);flex-shrink:0;justify-content:center;align-items:center;display:flex}.add-to-cart-btn:hover:not(:disabled){background:var(--color-primary);border-color:var(--color-primary);color:#fff;transform:scale(1.06)}.add-to-cart-btn.is-added{background:var(--color-success);border-color:var(--color-success);color:#fff}.add-to-cart-btn:disabled{opacity:.35;cursor:not-allowed}.product-card-link{text-decoration:none;display:block}.product-card-title-link{color:inherit;text-decoration:none}.product-card-title-link:hover .product-name{color:var(--color-primary);transition:color var(--transition)}.product-reviews{margin-top:var(--space-12);padding-top:var(--space-8);border-top:1px solid var(--color-border);gap:var(--space-6);flex-direction:column;display:flex}.reviews-title{font-family:var(--font-heading);color:var(--color-text);font-size:clamp(20px,2.5vw,26px);font-weight:600}.reviews-summary{align-items:center;gap:var(--space-8);padding:var(--space-6);background:var(--color-bg-subtle);border-radius:var(--radius-xl);display:flex}.reviews-summary-score{align-items:center;gap:var(--space-2);flex-direction:column;min-width:100px;display:flex}.reviews-average{font-family:var(--font-heading);color:var(--color-text);font-size:3rem;font-weight:700;line-height:1}.reviews-count{font-size:var(--text-sm);color:var(--color-text-muted)}.reviews-distribution{gap:var(--space-2);flex-direction:column;flex:1;display:flex}.rating-bar{align-items:center;gap:var(--space-2);color:var(--color-text-muted);font-size:12px;display:flex}.rating-bar-label{text-align:right;width:10px}.rating-bar-star{color:#f59e0b;flex-shrink:0}.rating-bar-track{background:var(--color-border);border-radius:999px;flex:1;height:6px;overflow:hidden}.rating-bar-fill{background:#f59e0b;border-radius:999px;height:100%;transition:width .4s}.rating-bar-count{width:20px}.stars{align-items:center;gap:2px;display:flex}.star{cursor:default;color:#d1d5db;background:0 0;border:none;padding:0;line-height:1;transition:color .1s,transform .1s}.star.is-active{color:#f59e0b}.star.is-interactive{cursor:pointer}.star.is-interactive:hover,.star.is-interactive:focus-visible{color:#f59e0b;outline:none;transform:scale(1.2)}.reviews-cta{align-items:center;display:flex}.reviews-my-review{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-bg-subtle);border-radius:var(--radius-lg);font-size:var(--text-sm);color:var(--color-text-muted);font-weight:500;display:flex}.reviews-edit-btn,.reviews-delete-btn{cursor:pointer;border-radius:var(--radius-md);transition:background var(--transition), color var(--transition);background:0 0;border:none;align-items:center;gap:4px;padding:4px 8px;font-size:12px;font-weight:600;display:flex}.reviews-edit-btn{color:var(--color-primary)}.reviews-edit-btn:hover{background:color-mix(in srgb, var(--color-primary) 10%, transparent)}.reviews-delete-btn{color:var(--color-error)}.reviews-delete-btn:hover{background:color-mix(in srgb, var(--color-error) 10%, transparent)}.reviews-login-hint{font-size:var(--text-sm);color:var(--color-text-muted)}.reviews-login-hint a{color:var(--color-primary);font-weight:500;text-decoration:none}.reviews-form{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.reviews-form-title{font-family:var(--font-heading);font-size:var(--text-lg);color:var(--color-text);font-weight:600}.reviews-form-rating{gap:var(--space-2);flex-direction:column;display:flex}.reviews-form-rating label,.reviews-form-field label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:600}.reviews-form-field{gap:var(--space-1);flex-direction:column;display:flex;position:relative}.reviews-form-field textarea{padding:var(--space-3) var(--space-4);border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-base);color:var(--color-text);background:var(--color-bg);resize:vertical;transition:border-color var(--transition), box-shadow var(--transition);outline:none}.reviews-form-field textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--color-primary) 12%, transparent)}.reviews-form-chars{color:var(--color-text-muted);text-align:right;font-size:11px}.reviews-form-error{font-size:var(--text-sm);color:var(--color-error);padding:var(--space-2) var(--space-3);background:color-mix(in srgb, var(--color-error) 8%, transparent);border-radius:var(--radius-md)}.reviews-form-actions{gap:var(--space-3);justify-content:flex-end;display:flex}.reviews-empty{align-items:center;gap:var(--space-3);padding:var(--space-10);color:var(--color-text-muted);text-align:center;flex-direction:column;display:flex}.reviews-list{gap:var(--space-4);flex-direction:column;list-style:none;display:flex}.review-item{padding:var(--space-5);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-lg);gap:var(--space-3);transition:box-shadow var(--transition);flex-direction:column;display:flex}.review-item.is-mine{border-color:color-mix(in srgb, var(--color-primary) 30%, transparent);background:color-mix(in srgb, var(--color-primary) 3%, var(--color-bg))}.review-header{align-items:center;gap:var(--space-3);display:flex}.review-avatar{color:var(--color-primary);flex-shrink:0}.review-meta{flex-direction:column;flex:1;gap:2px;display:flex}.review-author{font-size:var(--text-sm);color:var(--color-text);align-items:center;gap:var(--space-2);font-weight:600;display:flex}.review-mine-badge{background:color-mix(in srgb, var(--color-primary) 12%, transparent);color:var(--color-primary);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600}.review-date{color:var(--color-text-muted);font-size:12px}.review-comment{font-size:var(--text-sm);color:var(--color-text-muted);padding-left:calc(32px + var(--space-3));line-height:1.7}.reviews-skeleton{border-radius:var(--radius-xl);background:linear-gradient(90deg, var(--color-border) 25%, var(--color-bg-subtle) 50%, var(--color-border) 75%);background-size:800px 100%;height:200px;animation:1.4s linear infinite shimmer}@media (max-width:600px){.reviews-summary{align-items:flex-start;gap:var(--space-4);flex-direction:column}.reviews-my-review{flex-wrap:wrap}}
