@font-face {
	font-family: "Dream Avenue";
	src: url("../fonts/Dream-Avenue.ttf") format("truetype");
	font-display: swap;
}

@font-face {
	font-family: "Poppins";
	src: url("../fonts/poppins.regular.ttf") format("truetype");
	font-display: swap;
}

@font-face {
	font-family: "Plus Jakarta Sans SemiBold";
	src: url("../fonts/PlusJakartaSans-SemiBold.ttf") format("truetype");
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}

:root {
	--navy: #16213E;
	--ivory: #F8F5F2;
	--slate: #6C677D;
	--orange: #D97706;
	--gold: #E6C72A;
	--line: rgba(248, 245, 242, .2);
}

body {
	margin: 0;
	min-height: 100vh;
	color: var(--ivory);
	background: var(--navy) url("../images/ipfest-background.jpg") center / cover fixed no-repeat;
	font: 400 1rem/1.5 "Poppins", sans-serif;
}

/* The navbar is position:fixed (navbar-unified.css): reserve its height so the heading and stepper are not hidden under it. */
body { padding-top: 96px; }
@media(max-width:991.98px) { body { padding-top: 84px; } }

.registration-navbar { position:relative; z-index:1; width:100%; min-height:156px; padding:0; border:0; background:#fff; }
.registration-navbar-inner { display:flex; width:calc(100% - 48px); max-width:1600px; min-height:152px; align-items:center; margin-inline:auto; padding-left:80px; }
.registration-navbar .navbar-brand { gap:24px; margin:0; }
.registration-navbar .navbar-brand:focus-visible { outline:3px solid var(--gold); outline-offset:4px; }
.registration-navbar .navbar-brand img:first-child { width:96px; height:96px; margin-right:-39px; object-fit:contain; }
.registration-navbar .navbar-brand img:last-child { width:156px; height:auto; max-height:104px; object-fit:contain; }
.registration-shell { position:relative; z-index:1; width:calc(100% - 48px); max-width:1320px; margin:2rem auto 4rem; }
.registration-heading { margin-bottom:1.5rem; }
.registration-heading h1 { margin:0; color:var(--ivory); font:600 clamp(2rem,5vw,3.25rem)/1.1 "Plus Jakarta Sans SemiBold",sans-serif; }
.registration-heading p { max-width:none; margin:.75rem 0 0; color:rgba(248,245,242,.82); }
.registration-progress { --step-progress:0%; position:relative; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.25rem; margin:1.5rem 0 2rem; padding:0; list-style:none; }
.registration-progress::before { position:absolute; z-index:0; top:32px; right:10%; left:10%; height:5px; border-radius:999px; background:linear-gradient(to right,var(--gold) var(--step-progress),rgba(248,245,242,.28) var(--step-progress)); content:""; }
.registration-progress-step { position:relative; z-index:1; display:flex; min-width:0; flex-direction:column; align-items:center; text-align:center; }
.registration-progress-icon { display:grid; width:68px; height:68px; place-items:center; border:3px solid rgba(248,245,242,.42); border-radius:50%; background:rgba(22,33,62,.96); color:rgba(248,245,242,.66); font-size:1.25rem; transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s; }
.registration-progress-label { margin-top:.65rem; color:rgba(248,245,242,.66); font-size:.9rem; font-weight:600; line-height:1.25; }
.registration-progress-step.is-current .registration-progress-icon,.registration-progress-step.is-complete .registration-progress-icon { border-color:var(--gold); background:var(--gold); color:var(--navy); }
.registration-progress-step.is-current .registration-progress-icon { box-shadow:0 0 0 4px rgba(230,199,42,.14),0 8px 20px rgba(0,0,0,.2); }
.registration-progress-step.is-current .registration-progress-label,.registration-progress-step.is-complete .registration-progress-label { color:var(--ivory); }
.registration-step { padding:clamp(1.25rem,3vw,2rem); border:1px solid rgba(230,199,42,.48); border-radius:28px; background:rgba(22,33,62,.94); }
.registration-step[hidden] { display:none !important; }
.registration-step > h2 { margin:0 0 .4rem; color:var(--ivory); font:600 clamp(1.55rem,3vw,2rem)/1.2 "Plus Jakarta Sans SemiBold",sans-serif; }
.step-copy { margin-bottom:1.5rem; color:rgba(248,245,242,.78); }
.step-actions { display:flex; justify-content:space-between; gap:1rem; margin-top:1.75rem; }
.step-actions .btn, .registration-submit { min-height:48px; padding:.65rem 1.25rem; border-radius:6px; font:600 1rem "Poppins",sans-serif; }
.btn-primary, .registration-submit, #payment .step-actions .btn-outline-light { border-color:var(--gold); background:var(--gold); color:var(--navy); }
.btn-primary:hover, .registration-submit:hover, #payment .step-actions .btn-outline-light:hover { border-color:var(--ivory); background:var(--ivory); color:var(--navy); }
.btn-outline-light { color:var(--ivory); }
.form-label { margin-bottom:.45rem; color:var(--ivory); font-weight:600; }
.form-control, .form-select { min-height:42px; border:1px solid rgba(22,33,62,.24); border-radius:6px; background-color:var(--ivory); color:var(--navy); font:400 .95rem "Poppins",sans-serif; }
.form-control:focus, .form-select:focus { border-color:var(--gold); box-shadow:0 0 0 .22rem rgba(230,199,42,.3); }
.form-control::file-selector-button { min-height:40px; color:var(--navy); }
.compe-container.row { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,480px),1fr)); gap:1rem; margin:0; }
.compe-container.row > * { width:auto; max-width:none; padding:0; }
.card-compe { position:relative; display:grid; width:100%; min-height:210px; grid-template-columns:4rem minmax(0,1fr); grid-template-rows:auto auto; align-content:center; align-items:center; gap:.35rem 1rem; padding:1.25rem; border:1px solid var(--line); border-radius:16px; background:rgba(248,245,242,.08); color:var(--ivory); text-align:left; cursor:pointer; transition:transform .18s ease,background-color .18s ease,border-color .18s ease,box-shadow .18s ease; }
.card-compe:hover { transform:translateY(-3px); border-color:rgba(230,199,42,.7); background:rgba(248,245,242,.13); }
.card-compe:active { transform:scale(.98); }
.card-compe:focus-visible { outline:3px solid var(--gold); outline-offset:3px; }
.card-compe.active { border:2px solid var(--gold); padding:calc(1.25rem - 1px); background:rgba(230,199,42,.12); }
.card-compe img { grid-column:1; grid-row:1 / span 2; width:4rem !important; height:4rem; object-fit:contain; margin:0; }
.card-compe .card-title { grid-column:2; grid-row:1; margin:0; color:var(--ivory); font:500 1.05rem/1.3 "Poppins",sans-serif; }
.card-compe .card-description { grid-column:2; grid-row:2; margin:0; color:rgba(248,245,242,.74); font-size:.9rem; }
.card-compe.disabled { opacity:.45; filter:grayscale(1); cursor:not-allowed; }
.card-compe.disabled:hover { transform:none; }
.twibbon-info, .account-info, .payment-details { margin-top:1.25rem; padding:1rem 1.1rem; border:1px solid rgba(230,199,42,.42); border-radius:12px; background:rgba(248,245,242,.07); }
.twibbon-info h3, .account-info h3 { margin:0 0 .35rem; color:var(--ivory); font-size:1rem; font-weight:600; }
.twibbon-info p, .account-info p, .payment-details p { margin:0; color:rgba(248,245,242,.8); }
.twibbon-info a, .payment-details a { color:var(--gold); }
.payment-method { display:flex; gap:.75rem; flex-wrap:wrap; border:0; }
.payment-method-option { display:flex; min-width:9rem; flex:1 1 9rem; align-items:center; justify-content:center; gap:.7rem; padding:.7rem 1rem; border:1px solid var(--line); border-radius:8px; background:transparent; color:var(--ivory); transition:border-color .18s,background-color .18s,color .18s; }
.payment-method-option img { width:72px; height:32px; object-fit:contain; }
.payment-method-option:hover, .payment-method-option:focus-visible { border-color:var(--gold); color:var(--ivory); }
.payment-method-option:focus-visible { outline:2px solid var(--gold); outline-offset:2px; }
.payment-method-option.active { border-color:var(--gold); background:rgba(230,199,42,.12); color:var(--ivory); }
.payment-panels { margin-top:1rem; }
.payment-panel { padding:1.25rem 1.4rem; border:1px solid rgba(248,245,242,.24); border-radius:10px; background:transparent; color:var(--ivory); }
.payment-panel[hidden] { display:none; }
.payment-total { display:flex; align-items:baseline; justify-content:space-between; gap:1rem; margin-bottom:.75rem; }
.payment-total span { color:rgba(248,245,242,.78); }
.payment-total strong { color:var(--gold); font:600 clamp(1.5rem,3vw,2rem)/1.2 "Plus Jakarta Sans SemiBold",sans-serif; }
.payment-panel p { margin:0; }
.payment-panel p strong { color:var(--ivory); }
.payment-panel a { color:var(--gold); }
.payment-proof { margin:1.5rem 0; padding-top:1.25rem; border-top:1px solid rgba(248,245,242,.24); }
.payment-proof .form-label { display:block; }
.payment-proof-help { margin:-.2rem 0 .75rem; color:rgba(248,245,242,.78); }
.payment-proof .form-control { height:auto; min-height:0; padding:.35rem .5rem; border-color:rgba(248,245,242,.35); background:transparent; color:var(--ivory); line-height:1.5; }
.payment-proof .form-control::file-selector-button { margin:-.35rem .65rem -.35rem -.5rem; padding:.45rem .8rem; border:0; border-radius:6px; background:var(--gold); color:var(--navy); font:600 1rem "Poppins",sans-serif; cursor:pointer; }
.payment-proof .form-control::file-selector-button:hover { background:var(--ivory); }
.form-check { padding:1rem 1rem 1rem 2.5rem; border:1px solid var(--line); border-radius:10px; background:rgba(248,245,242,.06); }
.form-check-label { color:var(--ivory); }
#payment .form-check { display:flex; align-items:center; gap:.5rem .65rem; padding:1rem; }
#payment .form-check-input { float:none; flex:0 0 auto; margin:0; }
#payment .form-check-label { margin:0; }
#payment .form-check .invalid-feedback { flex-basis:100%; margin:0; }
.registration-error { margin-bottom:1rem; }
.member-entry { margin-bottom:1.5rem; }
.registration-subsection-grid { display:grid; grid-template-columns:1fr; gap:1.5rem; }
.registration-subsection { min-width:0; margin:0; padding:.75rem 0 0; border:0; border-top:1px solid rgba(248,245,242,.24); }
.registration-subsection legend { float:none; width:auto; margin:0 0 .35rem; padding:0 .25rem 0 0; color:var(--ivory); font:600 1rem/1.3 "Plus Jakarta Sans SemiBold",sans-serif; }
.registration-subsection .row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:0; }
.registration-subsection .row > [class*="col-"] { width:auto; max-width:none; padding:0; }
.registration-subsection .form-label { display:block; }
.registration-subsection .form-control, .registration-subsection .form-select { width:100%; }
#account > .row { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; margin:0; }
#account > .row > [class*="col-"] { width:auto; max-width:none; padding:0; }
#account .form-label { display:block; }
#account .form-control { width:100%; }
.member-details { align-items:start; }
.member-entry h3 { margin:0 0 1rem; color:var(--gold); font:400 1.3rem "Dream Avenue",Georgia,serif; }
.was-validated .form-control:invalid, .was-validated .form-select:invalid { border-color:#f08080; }
@media(max-width:767.98px) {
	.registration-subsection .row { grid-template-columns:1fr; }
	#account > .row { grid-template-columns:1fr; }
}
@media(max-width:575.98px) {
	.registration-navbar { min-height:104px; }
	.registration-navbar-inner { width:calc(100% - 20px); min-height:100px; padding-left:20px; }
	.registration-navbar .navbar-brand img:first-child { width:76px; height:76px; margin-right:-31px; }
	.registration-navbar .navbar-brand img:last-child { width:124px; max-height:84px; }
	.registration-shell { width:calc(100% - 28px); margin:1.25rem auto 4rem; }
	.registration-progress { gap:0; }
	.registration-progress::before { top:23px; height:4px; }
	.registration-progress-icon { width:50px; height:50px; font-size:1rem; }
	.registration-progress-label { max-width:70px; margin-top:.5rem; font-size:.64rem; overflow-wrap:anywhere; }
	.card-compe { min-height:175px; }
	.step-actions { flex-direction:column-reverse; }
	.step-actions .btn { width:100%; }
}
@media(prefers-reduced-motion:reduce) {
	*,*::before,*::after { scroll-behavior:auto !important; transition-duration:.01ms !important; animation-duration:.01ms !important; }
}
