        :root {
            --navy-900: #0a1124;
            --navy-800: #111a36;
            --navy-700: #16213e;
            --navy-600: #1f3163;
            --orange:   #f27a1a;
            --ember:    #ff4d3a;
            --crimson:  #d61c1c;
            --gold:     #ffcd2e;
            --ink:      #0f172a;
            --paper:    #f6f4ee;
            --paper-2:  #efece4;
            --line:     #e7e2d6;
            --muted:    #6b6757;
            --success:  #16a34a;
        }
        * { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
        body {
            background: var(--paper);
            background-image:
                radial-gradient(1200px 600px at 90% -200px, rgba(242,122,26,0.05), transparent 60%),
                radial-gradient(900px 600px at -10% 200px, rgba(15,52,96,0.04), transparent 70%);
            padding-top: 72px;
            font-family: 'Manrope', system-ui, -apple-system, Segoe UI, sans-serif;
            color: var(--ink);
        }

        @keyframes pulseDot {
            0%,100% { box-shadow: 0 0 0 0 rgba(214, 28, 28, 0.45); }
            50%     { box-shadow: 0 0 0 8px rgba(214, 28, 28, 0);    }
        }

        /* ============== PAGE HEAD (compact, hero-less) ============== */
        .page-head {
            padding: 32px 0 6px;
            display: flex;
            align-items: flex-end;
            justify-content: space-between;
            gap: 24px;
            flex-wrap: wrap;
            border-bottom: 1px solid var(--line);
            margin-bottom: 22px;
        }
        .page-head .title-wrap { flex: 1 1 auto; min-width: 240px; }
        .page-head .crumb {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            font-size: 0.72rem;
            font-weight: 700;
            letter-spacing: 1.6px;
            text-transform: uppercase;
            color: var(--crimson);
            margin-bottom: 8px;
        }
        .page-head .crumb .dot {
            width: 7px; height: 7px; border-radius: 50%;
            background: var(--crimson);
            animation: pulseDot 1.4s ease-out infinite;
        }
        .page-head h1 {
            font-family: 'Bricolage Grotesque', serif;
            font-weight: 800;
            font-size: clamp(1.6rem, 3.2vw, 2.2rem);
            letter-spacing: -0.025em;
            color: var(--ink);
            margin: 0 0 4px;
            line-height: 1.05;
        }
        .page-head p.lead {
            font-size: 0.95rem;
            color: var(--muted);
            margin: 0;
            max-width: 540px;
            line-height: 1.45;
        }
        .head-stats {
            display: flex;
            gap: 18px;
            align-items: stretch;
        }
        .head-stat {
            text-align: right;
            padding-left: 18px;
            border-left: 1px solid var(--line);
            min-width: 110px;
        }
        .head-stat .num {
            font-family: 'Bricolage Grotesque', serif;
            font-weight: 800;
            font-size: 1.6rem;
            line-height: 1;
            color: var(--ink);
            letter-spacing: -0.02em;
            display: inline-flex; align-items: baseline; gap: 3px;
        }
        .head-stat .num small { font-size: 0.85rem; color: var(--crimson); font-weight: 700; }
        .head-stat .lbl {
            font-size: 0.7rem;
            color: var(--muted);
            text-transform: uppercase;
            letter-spacing: 1.3px;
            font-weight: 600;
            margin-top: 4px;
        }

        /* ============== LOGIN BANNER ============== */
        .login-banner {
            position: relative;
            z-index: 3;
            margin: 0 auto 28px;
            max-width: 920px;
            background: linear-gradient(135deg, #1b2547 0%, #0f1a3a 100%);
            color: #fff;
            border: 1px solid rgba(255, 205, 46, 0.25);
            border-radius: 18px;
            padding: 16px 20px;
            display: flex;
            align-items: center;
            gap: 14px;
            box-shadow: 0 18px 40px -22px rgba(10,17,36,0.4);
        }
        .login-banner .icon-wrap {
            width: 42px; height: 42px;
            border-radius: 12px;
            background: rgba(255, 205, 46, 0.12);
            display: flex; align-items: center; justify-content: center;
            color: var(--gold);
            font-size: 1.2rem;
            flex-shrink: 0;
            border: 1px solid rgba(255, 205, 46, 0.25);
        }
        .login-banner .text { flex: 1; font-size: 0.95rem; line-height: 1.4; }
        .login-banner strong { color: var(--gold); font-weight: 700; }
        .login-banner a {
            color: var(--gold);
            font-weight: 700;
            text-decoration: none;
            border-bottom: 1px dashed rgba(255, 205, 46, 0.5);
            padding-bottom: 1px;
        }
        .login-banner a:hover { color: #fff; border-bottom-color: #fff; }

        /* ============== SECTION HEADER ============== */
        .section-bar {
            display: flex;
            align-items: flex-end;
            justify-content: space-between;
            gap: 20px;
            margin: 8px 0 22px;
            padding: 0 4px;
        }
        .section-bar h2 {
            font-family: 'Bricolage Grotesque', serif;
            font-weight: 800;
            font-size: 1.4rem;
            color: var(--ink);
            margin: 0;
            letter-spacing: -0.02em;
        }
        .section-bar .meta {
            font-size: 0.85rem;
            color: var(--muted);
            display: flex; align-items: center; gap: 8px;
        }
        .section-bar .meta .live {
            display: inline-flex; align-items: center; gap: 6px;
            font-weight: 700; color: var(--crimson);
            text-transform: uppercase; font-size: 0.72rem; letter-spacing: 1.2px;
        }
        .section-bar .meta .live::before {
            content:''; width: 7px; height: 7px; border-radius: 50%;
            background: var(--crimson);
            animation: pulseDot 1.4s ease-out infinite;
        }

        /* ============== KART — REDESIGN ============== */
        .camp-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
            gap: 12px;
        }
        @media (max-width: 576px) {
            .camp-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
        }

        .camp-card {
            position: relative;
            background: #fff;
            border: 1px solid var(--line);
            border-radius: 14px;
            overflow: hidden;
            transition: transform .35s cubic-bezier(.2,.8,.2,1), box-shadow .35s ease, border-color .25s ease;
            display: flex;
            flex-direction: column;
            isolation: isolate;
        }
        .camp-card::before {
            content:'';
            position: absolute; inset: 0;
            border-radius: inherit;
            background: linear-gradient(180deg, rgba(255,77,58,0) 60%, rgba(255,77,58,0.04) 100%);
            opacity: 0;
            transition: opacity .35s ease;
            pointer-events: none;
            z-index: 0;
        }
        .camp-card:hover {
            transform: translateY(-6px);
            box-shadow:
                0 26px 50px -22px rgba(15, 23, 42, 0.25),
                0 12px 22px -16px rgba(214, 28, 28, 0.18);
            border-color: #f4d6d6;
        }
        .camp-card:hover::before { opacity: 1; }

        .camp-link-overlay { position: absolute; inset: 0; z-index: 4; }

        /* TICKET STUB — image area with notches */
        .camp-top {
            position: relative;
            aspect-ratio: 1 / 0.6;
            background:
                radial-gradient(120% 90% at 50% 0%, #fff7f4 0%, #ffffff 60%),
                #fff;
            border-bottom: 1px dashed #f3d7d3;
            display: flex;
            align-items: center;
            justify-content: center;
            overflow: hidden;
        }
        /* coupon notches */
        .camp-top::before,
        .camp-top::after {
            content: '';
            position: absolute;
            bottom: -6px;
            width: 12px; height: 12px;
            background: var(--paper);
            border-radius: 50%;
            z-index: 3;
        }
        .camp-top::before { left: -6px; }
        .camp-top::after  { right: -6px; }

        .camp-top img {
            max-height: 80%;
            max-width: 80%;
            object-fit: contain;
            transition: transform .5s cubic-bezier(.2,.8,.2,1), filter .35s ease;
            filter: drop-shadow(0 10px 16px rgba(15, 23, 42, .12));
            position: relative;
            z-index: 1;
        }
        .camp-card:hover .camp-top img { transform: scale(1.07) rotate(-1deg); }

        /* FLASH BADGE - top left */
        .camp-flash {
            position: absolute;
            top: 8px; left: 8px;
            z-index: 2;
            display: inline-flex;
            align-items: center;
            gap: 4px;
            background: linear-gradient(135deg, #ff4d3a 0%, #d61c1c 100%);
            color: #fff;
            font-family: 'Bricolage Grotesque', serif;
            font-size: 0.55rem;
            font-weight: 800;
            letter-spacing: 0.8px;
            padding: 3px 7px;
            border-radius: 999px;
            text-transform: uppercase;
            box-shadow: 0 4px 10px -3px rgba(214, 28, 28, .55);
        }
        .camp-flash i { font-size: 0.6rem; }

        /* DISCOUNT STAMP — top right, rotated, looks like ink stamp */
        .camp-stamp {
            position: absolute;
            top: 8px; right: 8px;
            z-index: 2;
            width: 42px; height: 42px;
            background:
                radial-gradient(circle at 30% 25%, rgba(255,255,255,0.18) 0%, transparent 55%),
                linear-gradient(140deg, #111827 0%, #1f2937 100%);
            color: var(--gold);
            border-radius: 50%;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            transform: rotate(-9deg);
            box-shadow:
                0 6px 14px -6px rgba(0,0,0,0.45),
                inset 0 0 0 1.5px rgba(255, 205, 46, 0.5),
                inset 0 0 0 3px rgba(0,0,0,0.95);
            font-family: 'Bricolage Grotesque', serif;
            line-height: 1;
            transition: transform .3s cubic-bezier(.2,.8,.2,1);
        }
        .camp-stamp .pct {
            font-weight: 800;
            font-size: 0.85rem;
            letter-spacing: -0.04em;
            margin-top: 2px;
        }
        .camp-stamp .lbl {
            font-size: 0.4rem;
            font-weight: 700;
            letter-spacing: 1.1px;
            color: rgba(255, 205, 46, 0.82);
            margin-bottom: 1px;
            text-transform: uppercase;
        }
        .camp-card:hover .camp-stamp { transform: rotate(-3deg) scale(1.08); }

        .camp-body {
            padding: 9px 11px 11px;
            display: flex;
            flex-direction: column;
            gap: 5px;
            flex: 1 1 auto;
            min-height: 0;
            position: relative;
            z-index: 1;
        }

        .camp-brand {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            align-self: flex-start;
            font-size: 0.52rem;
            font-weight: 700;
            color: var(--navy-800);
            background: #f1eee5;
            border: 1px solid #e3ddca;
            text-transform: uppercase;
            letter-spacing: 0.9px;
            padding: 2px 6px;
            border-radius: 999px;
            line-height: 1.3;
        }
        .camp-brand::before {
            content:''; width: 4px; height: 4px; border-radius: 50%;
            background: var(--orange);
        }

        .camp-name {
            font-family: 'Bricolage Grotesque', serif;
            font-size: 0.78rem;
            font-weight: 700;
            color: var(--ink);
            line-height: 1.2;
            letter-spacing: -0.01em;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
            word-break: break-word;
            min-height: 2.1em;
        }

        .camp-quota {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            background: linear-gradient(135deg, #fff5e6 0%, #ffe9c7 100%);
            color: #92400e;
            border: 1px solid #f3c97a;
            font-size: 0.6rem;
            font-weight: 700;
            padding: 2px 7px;
            border-radius: 6px;
            align-self: flex-start;
            line-height: 1.3;
        }
        .camp-quota i { font-size: 0.68rem; color: #b45309; }

        .camp-price-block {
            margin-top: auto;
            padding-top: 5px;
            border-top: 1px dashed #ece7da;
        }
        .camp-price-row {
            display: flex;
            align-items: baseline;
            gap: 6px;
            flex-wrap: wrap;
        }
        .camp-price-old {
            color: #9aa0a6;
            text-decoration: line-through;
            text-decoration-thickness: 1.5px;
            font-size: 0.7rem;
            font-weight: 500;
        }
        .camp-price-new {
            font-family: 'Bricolage Grotesque', serif;
            color: var(--crimson);
            font-weight: 800;
            font-size: 1.05rem;
            line-height: 1;
            letter-spacing: -0.025em;
        }
        .camp-saving {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            margin-top: 4px;
            background: rgba(22, 163, 74, 0.1);
            color: var(--success);
            font-size: 0.62rem;
            font-weight: 700;
            padding: 2px 6px;
            border-radius: 5px;
            line-height: 1.3;
        }
        .camp-saving i { font-size: 0.68rem; }

        /* HOVER CTA — slides up from bottom of card */
        .camp-cta {
            position: absolute;
            left: 14px; right: 14px; bottom: 14px;
            z-index: 5;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            padding: 10px 12px;
            background: var(--ink);
            color: #fff !important;
            font-family: 'Manrope', sans-serif;
            font-weight: 700;
            font-size: 0.8rem;
            letter-spacing: 0.3px;
            border-radius: 12px;
            text-decoration: none;
            transform: translateY(calc(100% + 16px));
            opacity: 0;
            transition: transform .35s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
            pointer-events: none;
        }
        .camp-cta i { transition: transform .25s ease; }
        .camp-card:hover .camp-cta {
            transform: translateY(0);
            opacity: 1;
        }
        .camp-card:hover .camp-cta i { transform: translateX(3px); }
        @media (hover: none) {
            .camp-cta { display: none; }
        }

        /* LOGIN CTA inline (when not logged in) */
        .camp-login-cta {
            position: relative;
            z-index: 5;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 5px;
            margin-top: 6px;
            background: linear-gradient(135deg, var(--navy-700) 0%, var(--navy-600) 100%);
            color: #fff !important;
            text-decoration: none;
            padding: 7px 10px;
            border-radius: 8px;
            font-size: 0.7rem;
            font-weight: 700;
            letter-spacing: 0.2px;
            transition: transform .2s ease, box-shadow .2s ease;
            box-shadow: 0 6px 14px -6px rgba(15, 52, 96, .55);
        }
        .camp-login-cta:hover {
            transform: translateY(-1px);
            box-shadow: 0 10px 22px -8px rgba(15, 52, 96, .6);
        }

        /* ============== EMPTY / ERROR / SKELETON ============== */
        .state-box {
            text-align: center;
            padding: 80px 20px;
            color: var(--muted);
            background: #fff;
            border: 1px dashed var(--line);
            border-radius: 22px;
        }
        .state-box .icon-circle {
            width: 72px; height: 72px;
            margin: 0 auto 18px;
            display: flex; align-items: center; justify-content: center;
            background: linear-gradient(135deg, #fff5f5 0%, #ffe6e0 100%);
            color: var(--crimson);
            border-radius: 50%;
            font-size: 2rem;
            border: 1px solid #f4d6d6;
        }
        .state-box h4 {
            font-family: 'Bricolage Grotesque', serif;
            font-weight: 800;
            color: var(--ink);
            font-size: 1.3rem;
            letter-spacing: -0.02em;
        }
        .state-box .btn-primary {
            background: var(--ink);
            border-color: var(--ink);
            font-weight: 700;
            border-radius: 10px;
            padding: 10px 20px;
        }
        .state-box .btn-primary:hover { background: var(--navy-700); border-color: var(--navy-700); }

        .skeleton-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
            gap: 16px;
        }
        @media (max-width: 576px) { .skeleton-grid { grid-template-columns: repeat(2, 1fr); gap: 10px; } }
        .skeleton-card {
            background: #fff;
            border: 1px solid var(--line);
            border-radius: 18px;
            height: 360px;
            position: relative;
            overflow: hidden;
        }
        .skeleton-card::after {
            content: '';
            position: absolute;
            inset: 0;
            background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,0.7) 50%, transparent 70%);
            animation: shimmer 1.6s linear infinite;
        }
        @keyframes shimmer {
            0%   { transform: translateX(-60%); }
            100% { transform: translateX(60%); }
        }

        @media (max-width: 768px) {
            .page-head { padding: 22px 0 4px; gap: 14px; }
            .page-head h1 { font-size: 1.5rem; }
            .page-head p.lead { font-size: 0.88rem; }
            .head-stats { gap: 12px; width: 100%; justify-content: flex-start; }
            .head-stat { padding-left: 12px; min-width: 0; flex: 1; text-align: left; }
            .head-stat:first-child { padding-left: 0; border-left: none; }
            .head-stat .num { font-size: 1.3rem; }
            .login-banner { padding: 14px 16px; gap: 10px; }
            .login-banner .text { font-size: 0.88rem; }
            .section-bar h2 { font-size: 1.15rem; }
            .camp-name { font-size: 0.88rem; min-height: 2.3em; }
            .camp-price-new { font-size: 1.18rem; }
            .camp-stamp { width: 48px; height: 48px; }
            .camp-stamp .pct { font-size: 1rem; }
            .camp-cta { display: none; }
        }
