/* Base */
html { scroll-behavior: smooth; }
body { font-family: 'Work Sans', system-ui, -apple-system, sans-serif; }

.material-symbols-outlined {
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
    vertical-align: middle;
}

/* Hide horizontal scrollbars for carousels */
.no-scrollbar::-webkit-scrollbar { display: none; }
.no-scrollbar { -ms-overflow-style: none; scrollbar-width: none; }

/* Catalog hero pattern */
.hero-pattern {
    background-color: #004e24;
    background-image:
        radial-gradient(rgba(255, 199, 44, 0.08) 1px, transparent 1px),
        linear-gradient(135deg, rgba(0,0,0,0.25) 25%, transparent 25%, transparent 50%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0.25) 75%, transparent 75%, transparent);
    background-size: 26px 26px, 90px 90px;
}

/* Promo ticket hero */
.promo-hero {
    background-color: #06301d;
}
.promo-grid {
    background-image:
        linear-gradient(rgba(255, 255, 255, 0.055) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.055) 1px, transparent 1px);
    background-size: 54px 54px;
}
.promo-svg {
    filter:
        drop-shadow(0 0 12px rgba(200, 255, 61, 0.3))
        drop-shadow(0 8px 0 rgba(3, 17, 10, 0.95));
}
.promo-stroke-lime {
    fill: #c8ff3d;
    stroke: #c8ff3d;
    stroke-width: 30;
    stroke-linejoin: round;
}
.promo-stroke-dark {
    fill: #061b10;
    stroke: #061b10;
    stroke-width: 24;
    stroke-linejoin: round;
}
.promo-fill {
    fill: #ffffff;
}
.promo-ticket {
    box-shadow: 0 28px 60px -18px rgba(0, 0, 0, 0.6);
}
.ticket-barcode {
    background-image: repeating-linear-gradient(
        90deg,
        #15231c 0 2px,
        transparent 2px 4px,
        #15231c 4px 5px,
        transparent 5px 8px
    );
}

/* Description rich text */
.prose-store { color: #3f4940; font-size: 14px; line-height: 1.75; }
.prose-store p { margin-bottom: 0.85rem; }
.prose-store strong { color: #111111; font-weight: 600; }
.prose-store ul { list-style: disc; padding-left: 1.25rem; margin: 0.6rem 0 1rem; }
.prose-store li { margin-bottom: 0.35rem; }
.prose-store h3 { font-family: 'Barlow Condensed', sans-serif; text-transform: uppercase; font-weight: 700; font-size: 18px; letter-spacing: .02em; color: #111; margin: 1rem 0 .4rem; }
.prose-store em { color: #6f7a6f; }

/* Scroll reveal */
.reveal { opacity: 0; transform: translateY(14px); transition: opacity .5s ease, transform .5s ease; }
.reveal.is-visible { opacity: 1; transform: translateY(0); }

/* Admin form defaults */
.form-label { display:block; font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:700; color:#3f4940; margin-bottom:6px; }
.form-input {
    width:100%; border:1px solid #d4d4d8; background:#fff; border-radius:10px;
    padding:10px 12px; font-size:13px; color:#111; outline:none; transition:border-color .15s, box-shadow .15s;
}
.form-input:focus { border-color:#036933; box-shadow:0 0 0 3px rgba(3,105,51,.12); }
.form-input.is-invalid { border-color:#dc2626; box-shadow:0 0 0 3px rgba(220,38,38,.1); }
.form-error { color:#dc2626; font-size:11px; margin-top:4px; }
.form-help { color:#71717a; font-size:11px; margin-top:4px; }
select.form-input { appearance:auto; }

/* Tables */
.admin-table { width:100%; border-collapse:collapse; }
.admin-table th { text-align:left; font-size:10px; text-transform:uppercase; letter-spacing:.08em; color:#71717a; font-weight:700; padding:12px 14px; border-bottom:1px solid #e4e4e7; white-space:nowrap; }
.admin-table td { padding:12px 14px; border-bottom:1px solid #f1f1f3; font-size:12px; color:#27272a; vertical-align:middle; }
.admin-table tbody tr:hover { background:#fafafa; }

/* Product image gallery thumbs */
.gallery-thumb { border:2px solid transparent; }
.gallery-thumb.active { border-color:#036933; }

/* Size chips */
.size-chip { transition: all .15s ease; }
.size-chip.selected { background:#036933 !important; color:#fff !important; border-color:#036933 !important; box-shadow:0 0 0 2px rgba(3,105,51,.16); }
.size-chip:disabled { opacity:.4; cursor:not-allowed; text-decoration:line-through; }

/* Payment method cards */
.payment-option { border:1.5px solid #E5E7EB; }
.payment-option.selected { border-color:#036933; background:#F2FBF4; box-shadow:0 0 0 2px rgba(3,105,51,.08); }

/* Loading spinner */
.spinner { border:2px solid rgba(255,255,255,.35); border-top-color:#fff; border-radius:50%; width:14px; height:14px; animation:spin .7s linear infinite; display:inline-block; }
@keyframes spin { to { transform: rotate(360deg); } }

/* Print */
@media print {
    header, footer, .no-print { display: none !important; }
}
