.sv-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sv-space-2);height:var(--sv-btn-height,52px);padding:0 var(--sv-space-8);font-family:var(--sv-font-family);font-size:var(--sv-font-size-base);font-weight:700;line-height:1;border-radius:var(--sv-radius-lg);transition:all var(--sv-transition);white-space:nowrap;text-decoration:none;border:none;cursor:pointer;text-align:center}.sv-btn:focus-visible{outline:2px solid var(--sv-color-accent);outline-offset:2px}.sv-btn:disabled,.sv-btn.disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.sv-btn svg{width:18px;height:18px;flex-shrink:0}.sv-btn--primary{background:var(--sv-color-primary);color:var(--sv-color-white)}.sv-btn--primary:hover{background:var(--sv-color-primary-hover);transform:translateY(-2px);box-shadow:var(--sv-shadow-lg)}.sv-btn--primary:active{transform:translateY(0);box-shadow:var(--sv-shadow-sm)}.sv-btn--secondary{background:var(--sv-color-white);color:var(--sv-color-primary);border:2px solid var(--sv-color-gray-300)}.sv-btn--secondary:hover{border-color:var(--sv-color-primary);background:var(--sv-color-gray-50)}.sv-btn--outline{background:transparent;border:2px solid var(--sv-color-gray-200);color:var(--sv-color-gray-800)}.sv-btn--outline:hover{border-color:var(--sv-color-primary);background:var(--sv-color-gray-50)}.sv-btn--accent{background:var(--sv-color-accent);color:var(--sv-color-white)}.sv-btn--accent:hover{background:var(--sv-color-accent-hover);transform:translateY(-2px);box-shadow:var(--sv-shadow-lg)}.sv-btn--accent:active{transform:translateY(0)}.sv-btn--ghost{background:transparent;color:var(--sv-color-gray-700)}.sv-btn--ghost:hover{background:var(--sv-color-gray-100);color:var(--sv-color-primary)}.sv-btn--link{background:transparent;color:var(--sv-color-accent);padding:0;height:auto;font-weight:600}.sv-btn--link:hover{color:var(--sv-color-accent-hover);text-decoration:underline}.sv-btn--sm{height:var(--sv-btn-height-sm,40px);padding:0 var(--sv-space-5);font-size:var(--sv-font-size-sm);border-radius:var(--sv-radius-md)}.sv-btn--sm svg{width:16px;height:16px}.sv-btn--lg{height:var(--sv-btn-height-lg,56px);padding:0 var(--sv-space-10);font-size:var(--sv-font-size-lg)}.sv-btn--lg svg{width:20px;height:20px}.sv-btn--full{width:100%}.sv-btn--icon{width:48px;height:48px;padding:0;border-radius:var(--sv-radius-lg)}.sv-btn--icon.sv-btn--sm{width:40px;height:40px}.sv-btn--icon.sv-btn--lg{width:56px;height:56px}.sv-btn-group{display:flex;gap:var(--sv-space-3)}.sv-btn-group--stacked{flex-direction:column}.sv-section-header{text-align:center;margin-bottom:var(--sv-space-10)}.sv-section-header--left{text-align:left}.sv-section-label{display:inline-block;font-size:var(--sv-font-size-sm);font-weight:700;color:var(--sv-color-accent);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--sv-space-3)}.sv-section-title{font-size:var(--sv-font-size-3xl);font-weight:800;color:var(--sv-color-gray-900);margin-bottom:var(--sv-space-4);letter-spacing:-.02em}.sv-section-subtitle{font-size:var(--sv-font-size-lg);color:var(--sv-color-gray-500);max-width:600px;margin:0 auto}.sv-section-header--left .sv-section-subtitle{margin:0}@media (min-width:768px){.sv-section-title{font-size:var(--sv-font-size-4xl)}}.sv-badge{display:inline-flex;align-items:center;gap:var(--sv-space-1);padding:var(--sv-space-1) var(--sv-space-3);font-size:var(--sv-font-size-xs);font-weight:600;border-radius:var(--sv-radius-full);text-transform:uppercase;letter-spacing:.02em}.sv-badge--accent{background:var(--sv-color-accent-light);color:var(--sv-color-accent)}.sv-badge--success{background:var(--sv-color-success-light);color:var(--sv-color-success)}.sv-badge--warning{background:var(--sv-color-warning-light);color:var(--sv-color-warning)}.sv-badge--error{background:var(--sv-color-error-light);color:var(--sv-color-error)}.sv-badge--gold{background:var(--sv-color-gold-light);color:var(--sv-color-gold)}.sv-quantity{display:inline-flex;align-items:center;gap:0}.sv-quantity__btn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:var(--sv-color-gray-100);border:2px solid var(--sv-color-gray-200);border-radius:70px;color:var(--sv-color-gray-600);font-size:1.325rem;padding-bottom:4px;transition:all var(--sv-transition)}.sv-quantity__btn:hover{background:var(--sv-color-gray-200);border-color:var(--sv-color-gray-300);color:var(--sv-color-primary)}.sv-quantity__btn:disabled{opacity:.3;cursor:not-allowed}.sv-quantity__btn svg{width:18px;height:18px}.sv-quantity__input{width:48px;height:36px;text-align:center;font-weight:var(--sv-font-semibold);font-size:.975rem;color:var(--sv-color-gray-900);background:var(--sv-color-gray-100);border:none;border-left:0;border-right:0;padding:0;margin-left:10px;margin-right:10px}.sv-quantity__input:focus{outline:none}.sv-quantity__input::-webkit-outer-spin-button,.sv-quantity__input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.sv-quantity__input[type=number]{-moz-appearance:textfield}.sv-card{background:var(--sv-color-white);border-radius:var(--sv-radius-xl);box-shadow:var(--sv-shadow-sm);overflow:hidden;transition:all var(--sv-transition)}.sv-card:hover{box-shadow:var(--sv-shadow-md)}.sv-card--interactive:hover{transform:translateY(-4px);box-shadow:var(--sv-shadow-lg)}.sv-card__image{aspect-ratio:4/3;overflow:hidden;background:var(--sv-color-gray-100)}.sv-card__image img{width:100%;height:100%;object-fit:cover;transition:transform var(--sv-transition-slow)}.sv-card:hover .sv-card__image img{transform:scale(1.05)}.sv-card__body{padding:var(--sv-space-5)}.sv-card__title{font-size:var(--sv-font-size-lg);font-weight:700;color:var(--sv-color-gray-900);margin-bottom:var(--sv-space-2)}.sv-card__text{font-size:var(--sv-font-size-sm);color:var(--sv-color-gray-500)}.sv-alert{display:flex;gap:var(--sv-space-3);padding:var(--sv-space-4);border-radius:var(--sv-radius-lg);font-size:var(--sv-font-size-sm)}.sv-alert svg{width:20px;height:20px;flex-shrink:0}.sv-alert--success{background:var(--sv-color-success-light);color:var(--sv-color-success)}.sv-alert--warning{background:var(--sv-color-warning-light);color:var(--sv-color-warning)}.sv-alert--error{background:var(--sv-color-error-light);color:var(--sv-color-error)}.sv-alert--info{background:var(--sv-color-info-light);color:var(--sv-color-info)}