  
        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

        :root {
            --ink:        #0f0d1a;
            --ink-soft:   #3b3650;
            --surface:    #faf9f6;
            --card:       #ffffff;
            --accent:     #e8460a;
            --accent-2:   #f5a623;
            --gold:       #d4a017;
            --muted:      #7c7591;
            --border:     #e4e1f0;
            --input-bg:   #f6f4ff;
            --success:    #1a9e5c;
            --error:      #d0392b;
            --radius:     14px;
            --shadow:     0 4px 32px rgba(15,13,26,.08);
            --shadow-lg:  0 12px 56px rgba(15,13,26,.14);
        }

        html { scroll-behavior: smooth; }

        body {
            font-family: 'DM Sans', sans-serif;
            background: var(--surface);
            color: var(--ink);
            min-height: 100vh;
            overflow-x: hidden;
        }

        /* ── Hero banner ── */
        .hero {
            background: var(--ink);
            position: relative;
            overflow: hidden;
            padding: 10px clamp(16px, 4vw, 60px);
            text-align: center;
        }

        .hero::before {
            content: '';
            position: absolute; inset: 0;
            background:
                radial-gradient(ellipse 80% 60% at 20% -10%, rgba(232,70,10,.35) 0%, transparent 60%),
                radial-gradient(ellipse 60% 50% at 85% 110%, rgba(212,160,23,.28) 0%, transparent 55%);
            pointer-events: none;
        }

        .hero-noise {
            position: absolute; inset: 0;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.04'/%3E%3C/svg%3E");
            opacity: .6;
            pointer-events: none;
        }

        /* Logo */
        .hero-logo {
            margin-bottom: 5px;
            position: relative;
        }
        .hero-logo img {
            height: 54px;
            width: auto;
            object-fit: contain;
            border-radius: 7px;
            filter: drop-shadow(0 2px 8px rgba(0,0,0,.4));
        }

        /* Title = university name */
        .hero-title {
            font-family: 'Playfair Display', Georgia, serif;
            font-size: clamp(11px, 1.4vw, 14px);
            font-weight: 700;
            line-height: 1.2;
            color: rgba(255,255,255,.75);
            letter-spacing: .01em;
            position: relative;
            margin-bottom: 3px;
        }

        /* Subtitle = event name */
        .hero-event {
            font-family: 'Playfair Display', Georgia, serif;
            font-size: clamp(18px, 3vw, 28px);
            font-weight: 800;
            line-height: 1.05;
            letter-spacing: -.02em;
            position: relative;
            margin-bottom: 0;
            background: linear-gradient(90deg, var(--accent-2), var(--accent));
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
        }

        .hero-divider {
            width: 24px; height: 2px;
            background: linear-gradient(90deg, var(--accent), var(--accent-2));
            border-radius: 2px;
            margin: 7px auto 0;
            position: relative;
        }

        /* ── Layout ── */
        .page-wrap {
            max-width: 680px;
            margin: 0 auto;
            padding: clamp(14px, 2.5vw, 28px) clamp(12px, 3vw, 24px) 40px;
        }

        /* ── Messages ── */
        .messages-wrap { margin-bottom: 14px; }
        .msg {
            display: flex;
            align-items: flex-start;
            gap: 8px;
            padding: 9px 13px;
            border-radius: 8px;
            font-size: 12px;
            font-weight: 500;
            margin-bottom: 7px;
            animation: slideDown .3s ease;
        }
        @keyframes slideDown {
            from { opacity:0; transform:translateY(-6px); }
            to   { opacity:1; transform:translateY(0); }
        }
        .msg-success {
            background: #e8f8f1;
            border: 1px solid #a3e0c1;
            color: var(--success);
        }
        .msg-error {
            background: #fdf0ee;
            border: 1px solid #f0b8b0;
            color: var(--error);
        }
        .msg-icon { font-size: 13px; line-height: 1; flex-shrink: 0; margin-top: 1px; }

        /* ── Card ── */
        .form-card {
            background: var(--card);
            border-radius: 14px;
            box-shadow: var(--shadow-lg);
            padding: clamp(16px, 3vw, 28px);
            border: 1px solid var(--border);
            position: relative;
            overflow: hidden;
        }
        .form-card::before {
            content: '';
            position: absolute; top: 0; left: 0; right: 0;
            height: 3px;
            background: linear-gradient(90deg, var(--accent), var(--accent-2), var(--gold));
        }

        .section-label {
            font-size: 9.5px;
            font-weight: 700;
            letter-spacing: .14em;
            text-transform: uppercase;
            color: var(--muted);
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .section-label::after {
            content: '';
            flex: 1;
            height: 1px;
            background: var(--border);
        }

        /* ── Grid ── */
        .form-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px 12px;
        }
        .col-full { grid-column: 1 / -1; }

        /* ── Field ── */
        .field {
            display: flex;
            flex-direction: column;
            gap: 3px;
        }
        .field label {
            font-size: 11px;
            font-weight: 600;
            color: var(--ink-soft);
            letter-spacing: .01em;
        }
        .field label .req { color: var(--accent); margin-left: 2px; }

        .field input,
        .field select,
        .field textarea {
            width: 100%;
            padding: 7px 11px;
            background: var(--input-bg);
            border: 1.5px solid var(--border);
            border-radius: 8px;
            font-family: 'DM Sans', sans-serif;
            font-size: 12.5px;
            color: var(--ink);
            transition: border-color .2s, box-shadow .2s, background .2s;
            outline: none;
            -webkit-appearance: none;
            appearance: none;
        }
        .field input::placeholder,
        .field textarea::placeholder { color: #b5afd0; }
        .field input:focus,
        .field select:focus,
        .field textarea:focus {
            border-color: var(--accent);
            background: #fff;
            box-shadow: 0 0 0 3px rgba(232,70,10,.09);
        }

        /* select arrow */
        .select-wrap { position: relative; }
        .select-wrap::after {
            content: '';
            position: absolute; right: 11px; top: 50%; transform: translateY(-50%);
            width: 0; height: 0;
            border-left: 4px solid transparent;
            border-right: 4px solid transparent;
            border-top: 5px solid var(--muted);
            pointer-events: none;
        }
        .select-wrap select { padding-right: 30px; cursor: pointer; }

        /* amount field */
        .amount-display {
            display: flex;
            align-items: center;
            background: linear-gradient(135deg, #fff8ee, #fff3e0);
            border: 1.5px solid var(--accent-2);
            border-radius: 8px;
            overflow: hidden;
        }
        .amount-display .currency {
            padding: 8px 10px;
            background: var(--accent-2);
            color: #fff;
            font-weight: 700;
            font-size: 12px;
            flex-shrink: 0;
        }
        .amount-display input {
            border: none;
            background: transparent;
            font-size: 15px;
            font-weight: 700;
            color: var(--ink);
            padding: 7px 11px;
            flex: 1;
            letter-spacing: .02em;
        }
        .amount-display input:focus { box-shadow: none; }
        .amount-hint {
            font-size: 10px;
            color: var(--muted);
            margin-top: 4px;
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .amount-hint::before { content: 'ℹ'; font-size: 10px; color: var(--accent-2); }

        /* field error */
        .field-errors { list-style: none; margin-top: 3px; }
        .field-errors li {
            font-size: 10.5px;
            color: var(--error);
            display: flex;
            align-items: center;
            gap: 4px;
        }
        .field-errors li::before { content: '✕'; font-size: 9px; }

        .has-error input,
        .has-error select,
        .has-error textarea {
            border-color: var(--error);
            background: #fff8f7;
        }

        /* ── Divider ── */
        .form-divider { height: 1px; background: var(--border); margin: 13px 0; }

        /* ── Submit ── */
        .submit-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            flex-wrap: wrap;
            gap: 10px;
            margin-top: 20px;
        }
        .submit-note {
            font-size: 10.5px;
            color: var(--muted);
            display: flex;
            align-items: center;
            gap: 5px;
        }
        .submit-note svg { flex-shrink: 0; }

        .btn-submit {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            background: linear-gradient(135deg, var(--accent), #c73a08);
            color: #fff;
            font-family: 'DM Sans', sans-serif;
            font-size: 13px;
            font-weight: 600;
            padding: 10px 24px;
            border: none;
            border-radius: 9px;
            cursor: pointer;
            box-shadow: 0 4px 16px rgba(232,70,10,.32);
            transition: transform .15s, box-shadow .15s, filter .15s;
            letter-spacing: .01em;
        }
        .btn-submit:hover {
            transform: translateY(-2px);
            box-shadow: 0 8px 22px rgba(232,70,10,.42);
            filter: brightness(1.06);
        }
        .btn-submit:active { transform: translateY(0); }
        .btn-arrow { transition: transform .2s; }
        .btn-submit:hover .btn-arrow { transform: translateX(3px); }

        /* ── Responsive ── */
        @media (max-width: 520px) {
            .form-grid { grid-template-columns: 1fr; }
            .col-full { grid-column: 1; }
            .submit-row { flex-direction: column; align-items: stretch; }
            .btn-submit { justify-content: center; width: 100%; }
            .amount-display input { font-size: 14px; }
            .hero-logo img { height: 44px; }
        }

        /* Footer */
        .page-footer {
            text-align: center;
            padding: 0 16px 20px;
            font-size: 10.5px;
            color: var(--muted);
        }
