/*
 * FestivalTools shared visual system
 * Loaded after page-level styles so the public, ticketing and account areas
 * keep one consistent shell without changing any application behaviour.
 */

:root {
  --ft-ink: #101828;
  --ft-ink-soft: #344054;
  --ft-muted: #667085;
  --ft-subtle: #98a2b3;
  --ft-line: #e4e7ec;
  --ft-line-strong: #d0d5dd;
  --ft-canvas: #f7f9fc;
  --ft-surface: #ffffff;
  --ft-surface-soft: #f2f4f7;
  --ft-brand: #2563eb;
  --ft-brand-dark: #1746b3;
  --ft-brand-soft: #eff6ff;
  --ft-navy: #0b1220;
  --ft-success: #087443;
  --ft-success-soft: #ecfdf3;
  --ft-danger: #b42318;
  --ft-danger-soft: #fef3f2;
  --ft-warning: #b54708;
  --ft-radius-sm: 10px;
  --ft-radius: 16px;
  --ft-radius-lg: 24px;
  --ft-shadow-sm: 0 1px 2px rgba(16, 24, 40, .04), 0 4px 14px rgba(16, 24, 40, .045);
  --ft-shadow: 0 18px 44px rgba(16, 24, 40, .09), 0 2px 8px rgba(16, 24, 40, .04);
  --ft-focus: 0 0 0 4px rgba(37, 99, 235, .14);
  --max-width: 1200px;
  --gutter: clamp(1rem, 3vw, 2rem);
  color-scheme: light;
}

html {
  background: var(--ft-canvas);
  font-size: 16px;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

body.ft-shell {
  min-width: 320px;
  min-height: 100vh;
  overflow-x: hidden;
  color: var(--ft-ink);
  background: var(--ft-surface);
  line-height: 1.55;
}

.ft-shell main {
  flex: 1 0 auto;
}

.ft-shell .container {
  width: min(var(--max-width), calc(100% - (var(--gutter) * 2)));
  max-width: none;
  padding-inline: 0;
}

.ft-shell h1,
.ft-shell h2,
.ft-shell h3,
.ft-shell h4,
.ft-shell h5,
.ft-shell h6 {
  color: var(--ft-ink);
  line-height: 1.18;
  letter-spacing: -.025em;
}

.ft-shell p {
  color: var(--ft-ink-soft);
}

.ft-shell a {
  color: var(--ft-brand) !important;
  text-underline-offset: 3px;
}

.ft-shell a:hover {
  color: var(--ft-brand-dark) !important;
}

.ft-shell :focus-visible {
  outline: 2px solid var(--ft-brand);
  outline-offset: 3px;
}

.ft-shell .btn,
.ft-shell button,
.ft-shell input,
.ft-shell select,
.ft-shell textarea {
  font: inherit;
}

.ft-shell .btn {
  min-height: 42px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  border: 1px solid transparent;
  border-radius: var(--ft-radius-sm);
  padding: .62rem .9rem;
  line-height: 1.1;
  font-size: .92rem;
  font-weight: 650;
  cursor: pointer;
  box-shadow: none;
  transition: background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease;
}

.ft-shell .btn:hover {
  transform: translateY(-1px);
}

.ft-shell .btn-primary {
  color: #fff !important;
  border-color: var(--ft-brand);
  background: var(--ft-brand);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .08);
}

.ft-shell .btn-primary:hover {
  color: #fff !important;
  border-color: var(--ft-brand-dark);
  background: var(--ft-brand-dark);
  box-shadow: 0 8px 20px rgba(37, 99, 235, .2);
}

.ft-shell .btn-secondary,
.ft-shell .btn-outline-secondary,
.ft-shell .btn-outline-primary {
  color: var(--ft-ink-soft) !important;
  border-color: var(--ft-line-strong);
  background: var(--ft-surface);
}

.ft-shell .btn-secondary:hover,
.ft-shell .btn-outline-secondary:hover,
.ft-shell .btn-outline-primary:hover {
  color: var(--ft-ink) !important;
  border-color: #aeb7c5;
  background: var(--ft-surface-soft);
}

.ft-shell .btn-red,
.ft-shell .btn-outline-danger {
  color: var(--ft-danger) !important;
  border-color: #fecdca;
  background: var(--ft-danger-soft);
}

.ft-shell .btn-lg {
  min-height: 48px;
  padding: .78rem 1.15rem;
}

.ft-shell .btn-sm {
  min-height: 36px;
  padding: .48rem .72rem;
  font-size: .84rem;
}

/*
 * The legacy applications use a small set of Bootstrap-style utility names
 * without loading Bootstrap itself. Provide the shared, predictable subset
 * they rely on so layouts do not change from page to page.
 */
.ft-shell .d-flex { display: flex !important; }
.ft-shell .d-inline-flex { display: inline-flex !important; }
.ft-shell .d-grid { display: grid !important; }
.ft-shell .d-block { display: block !important; }
.ft-shell .d-none { display: none !important; }
.ft-shell .align-items-start { align-items: flex-start !important; }
.ft-shell .align-items-center { align-items: center !important; }
.ft-shell .align-items-end { align-items: flex-end !important; }
.ft-shell .justify-content-start { justify-content: flex-start !important; }
.ft-shell .justify-content-center { justify-content: center !important; }
.ft-shell .justify-content-between { justify-content: space-between !important; }
.ft-shell .justify-content-end { justify-content: flex-end !important; }
.ft-shell .flex-wrap { flex-wrap: wrap !important; }
.ft-shell .flex-nowrap { flex-wrap: nowrap !important; }
.ft-shell .flex-column { flex-direction: column !important; }
.ft-shell .flex-grow-1 { flex-grow: 1 !important; }
.ft-shell .w-100 { width: 100% !important; }
.ft-shell .h-100 { height: 100% !important; }
.ft-shell .gap-1 { gap: .25rem !important; }
.ft-shell .gap-2 { gap: .5rem !important; }
.ft-shell .gap-3 { gap: 1rem !important; }
.ft-shell .gap-4 { gap: 1.5rem !important; }
.ft-shell .m-0 { margin: 0 !important; }
.ft-shell .mt-1 { margin-top: .25rem !important; }
.ft-shell .mt-2 { margin-top: .5rem !important; }
.ft-shell .mt-3 { margin-top: 1rem !important; }
.ft-shell .mt-4 { margin-top: 1.5rem !important; }
.ft-shell .mt-5 { margin-top: 3rem !important; }
.ft-shell .mb-0 { margin-bottom: 0 !important; }
.ft-shell .mb-1 { margin-bottom: .25rem !important; }
.ft-shell .mb-2 { margin-bottom: .5rem !important; }
.ft-shell .mb-3 { margin-bottom: 1rem !important; }
.ft-shell .mb-4 { margin-bottom: 1.5rem !important; }
.ft-shell .mb-5 { margin-bottom: 3rem !important; }
.ft-shell .ms-1 { margin-left: .25rem !important; }
.ft-shell .ms-2 { margin-left: .5rem !important; }
.ft-shell .ms-auto { margin-left: auto !important; }
.ft-shell .me-1 { margin-right: .25rem !important; }
.ft-shell .me-2 { margin-right: .5rem !important; }
.ft-shell .me-auto { margin-right: auto !important; }
.ft-shell .p-2 { padding: .5rem !important; }
.ft-shell .p-3 { padding: 1rem !important; }
.ft-shell .p-4 { padding: 1.5rem !important; }
.ft-shell .text-start { text-align: left !important; }
.ft-shell .text-center { text-align: center !important; }
.ft-shell .text-end { text-align: right !important; }
.ft-shell .text-primary { color: var(--ft-brand) !important; }
.ft-shell .text-danger { color: var(--ft-danger) !important; }
.ft-shell .small { font-size: .875em !important; }
.ft-shell .fw-bold { font-weight: 700 !important; }
.ft-shell .fw-semibold { font-weight: 600 !important; }
.ft-shell .position-relative { position: relative !important; }
.ft-shell .position-fixed { position: fixed !important; }
.ft-shell .rounded { border-radius: var(--ft-radius-sm) !important; }
.ft-shell .border { border: 1px solid var(--ft-line) !important; }
.ft-shell .shadow-sm { box-shadow: var(--ft-shadow-sm) !important; }

.ft-shell .row {
  display: flex;
  flex-wrap: wrap;
  margin: -.5rem;
}

.ft-shell .row > * {
  min-width: 0;
  padding: .5rem;
}

.ft-shell .col-12 {
  width: 100%;
  flex: 0 0 100%;
}

.ft-shell .card {
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
}

.ft-shell .alert {
  position: relative;
  padding: .8rem 1rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius-sm);
  background: var(--ft-surface-soft);
  color: var(--ft-ink-soft);
}

.ft-shell .alert-success {
  border-color: #abefc6;
  background: var(--ft-success-soft);
  color: var(--ft-success);
}

.ft-shell .alert-danger {
  border-color: #fecdca;
  background: var(--ft-danger-soft);
  color: var(--ft-danger);
}

.ft-shell .alert-light {
  background: #fff;
}

.ft-shell .badge {
  display: inline-flex;
  align-items: center;
  padding: .28rem .52rem;
  border-radius: 999px;
  background: var(--ft-surface-soft);
  color: var(--ft-ink-soft);
  font-size: .72rem;
  font-weight: 700;
}

@media (min-width: 576px) {
  .ft-shell .d-sm-flex { display: flex !important; }
  .ft-shell .justify-content-sm-start { justify-content: flex-start !important; }
}

@media (min-width: 768px) {
  .ft-shell .col-md-4 {
    width: 33.3333%;
    flex: 0 0 33.3333%;
  }

  .ft-shell .col-md-6 {
    width: 50%;
    flex: 0 0 50%;
  }
}

/* Shared navigation */
.ft-navbar.navbar {
  position: sticky;
  top: 0;
  z-index: 20001;
  flex: 0 0 auto;
  min-height: 72px;
  padding: 0;
  border-bottom: 1px solid rgba(228, 231, 236, .9);
  background: rgba(255, 255, 255, .9);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .025);
  -webkit-backdrop-filter: saturate(180%) blur(18px);
  backdrop-filter: saturate(180%) blur(18px);
}

.ft-nav-content {
  width: min(1280px, calc(100% - (var(--gutter) * 2)));
  min-height: 71px;
  margin: 0 auto;
  padding: 0;
  gap: .75rem;
}

.ft-navbar .navbarLogoWrapper {
  flex: 0 0 auto;
  gap: .65rem;
  justify-content: flex-start;
  color: var(--ft-ink) !important;
}

.ft-navbar .navbarLogoIcon {
  width: 38px;
  height: 38px;
  border-radius: 9px;
}

.ft-navbar .navbarLogoTextWrapper {
  gap: 1px;
  margin: 0;
  line-height: 1;
}

.ft-navbar .logo {
  color: var(--ft-ink) !important;
  font-size: 1.3rem;
  line-height: 1.05;
  letter-spacing: -.04em;
}

.ft-navbar .logoColOne {
  color: var(--ft-brand-dark);
}

.ft-navbar .navbarLogoTagline {
  color: var(--ft-muted);
  font-size: .66rem;
  font-weight: 550;
  letter-spacing: .005em;
}

.ft-navbar .nav-links {
  order: 2;
  gap: .2rem;
}

.ft-navbar .nav-links li {
  display: flex;
  align-items: center;
}

.ft-navbar .nav-links a {
  position: relative;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  padding: .55rem .68rem;
  border-radius: 9px;
  color: var(--ft-ink-soft) !important;
  font-size: .88rem;
  font-weight: 580;
  white-space: nowrap;
}

.ft-navbar .nav-links a:hover {
  color: var(--ft-ink) !important;
  background: var(--ft-surface-soft);
}

.ft-navbar .nav-links a.is-active:not(.btn) {
  color: var(--ft-brand-dark) !important;
  background: var(--ft-brand-soft);
  font-weight: 650;
}

.ft-navbar .nav-links a.btn {
  min-height: 40px;
  margin-left: .3rem;
  padding-inline: .9rem;
  color: #fff !important;
}

.ft-navbar .basketIconWrapper,
.ft-navbar .nav-toggle-label {
  position: relative;
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  align-items: center;
  justify-content: center;
  margin: 0;
  border: 1px solid transparent;
  border-radius: 12px;
  color: var(--ft-ink-soft);
  cursor: pointer;
  transition: background-color .18s ease, border-color .18s ease;
}

.ft-navbar .basketIconWrapper {
  order: 3;
  display: flex;
}

.ft-navbar .basketIconWrapper:hover,
.ft-navbar .nav-toggle-label:hover {
  border-color: var(--ft-line);
  background: var(--ft-surface-soft);
}

.ft-icon {
  width: 22px;
  height: 22px;
  display: block;
}

.ft-navbar #basketItemCount {
  right: -2px;
  bottom: -1px;
  left: auto;
  width: 18px;
  height: 18px;
  display: none;
  border: 2px solid #fff;
  background: var(--ft-success);
  font-size: 9px;
  font-weight: 700;
}

.ft-navbar #basketWrapper {
  top: 65px;
  right: max(var(--gutter), calc((100vw - 1280px) / 2));
  left: auto;
  width: min(410px, calc(100vw - (var(--gutter) * 2)));
  max-width: none;
  min-height: 0;
  margin: 0;
  padding: 0;
  align-items: stretch;
  border: 1px solid transparent;
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  color: var(--ft-ink);
  box-shadow: var(--ft-shadow);
}

.ft-navbar #basketWrapper.basketOpen {
  min-height: 190px !important;
  max-height: min(620px, calc(100vh - 88px)) !important;
  padding: 1.25rem !important;
  border-color: var(--ft-line) !important;
}

.ft-navbar #basketWrapper h3 {
  margin-bottom: .75rem;
  font-size: 1.15rem;
}

.ft-navbar #basketWrapper .event-item {
  margin-inline: 0;
}

.ft-navbar .nav-toggle-label {
  order: 4;
}

.ft-navbar .ft-menu-close {
  display: none;
}

.ft-navbar .nav-toggle:checked + .nav-toggle-label .ft-menu-open {
  display: none;
}

.ft-navbar .nav-toggle:checked + .nav-toggle-label .ft-menu-close {
  display: block;
}

/* Shared form language */
.ft-shell .form-group {
  margin-bottom: 1.05rem;
}

.ft-shell .form-row {
  gap: 1rem;
}

.ft-shell .form-label,
.ft-shell .form-group label,
.ft-shell label.form-label {
  display: block;
  margin-bottom: .42rem;
  color: var(--ft-ink-soft);
  font-size: .88rem;
  font-weight: 650;
}

.ft-shell .form-control,
.ft-shell .form-select,
.ft-shell input[type="text"],
.ft-shell input[type="email"],
.ft-shell input[type="password"],
.ft-shell input[type="number"],
.ft-shell input[type="date"],
.ft-shell input[type="datetime-local"],
.ft-shell input[type="search"],
.ft-shell select,
.ft-shell textarea {
  width: 100%;
  min-height: 46px;
  padding: .68rem .8rem;
  border: 1px solid var(--ft-line-strong);
  border-radius: var(--ft-radius-sm);
  background: var(--ft-surface);
  color: var(--ft-ink);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  transition: border-color .18s ease, box-shadow .18s ease;
}

.ft-shell textarea {
  min-height: 110px;
  resize: vertical;
}

.ft-shell input::placeholder,
.ft-shell textarea::placeholder {
  color: var(--ft-subtle);
}

.ft-shell .form-control:focus,
.ft-shell .form-select:focus,
.ft-shell input:focus,
.ft-shell select:focus,
.ft-shell textarea:focus {
  outline: 0;
  border-color: var(--ft-brand);
  box-shadow: var(--ft-focus);
}

.ft-shell .form-control:disabled,
.ft-shell input:disabled,
.ft-shell select:disabled {
  color: var(--ft-muted);
  background: var(--ft-surface-soft);
  cursor: not-allowed;
}

.ft-shell .form-text,
.ft-shell .text-muted,
.ft-shell small.text-muted {
  color: var(--ft-muted) !important;
}

.ft-shell .show-hide {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  top: 50%;
  right: .2rem;
  color: var(--ft-muted);
}

/* Shared footer */
.ft-footer {
  flex: 0 0 auto;
  margin-top: 0;
  padding: 3.5rem 0 1.5rem;
  border-top: 1px solid #182338;
  background: var(--ft-navy);
  color: #cbd5e1;
  font-size: .88rem;
}

.ft-footer .footer-grid {
  grid-template-columns: minmax(260px, 1.6fr) repeat(3, minmax(130px, .7fr));
  gap: clamp(2rem, 6vw, 5.5rem);
}

.ft-footer .ft-footer-brand {
  max-width: 360px;
}

.ft-footer .footer-logo {
  display: inline-flex;
  margin-bottom: .85rem;
  color: #fff !important;
  font-size: 1.3rem;
  font-weight: 750;
  letter-spacing: -.04em;
}

.ft-footer .footer-logo span {
  color: #7db0ff;
}

.ft-footer p {
  margin: 0;
  color: #98a7ba;
}

.ft-footer .footer-links h4 {
  margin-bottom: .85rem;
  color: #fff;
  font-size: .78rem;
  font-weight: 650;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.ft-footer .footer-links a {
  width: fit-content;
  margin-bottom: .62rem;
  color: #b8c3d2 !important;
  font-weight: 480;
}

.ft-footer .footer-links a:hover {
  color: #fff !important;
  text-decoration: none;
}

.ft-footer-base {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 2.4rem;
  padding-top: 1.25rem;
  border-top: 1px solid rgba(255, 255, 255, .1);
}

.ft-footer .ft-status {
  display: inline-flex;
  align-items: center;
  gap: .45rem;
  color: #b8c3d2 !important;
  font-size: .82rem;
}

.ft-status span {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #32d583;
  box-shadow: 0 0 0 4px rgba(50, 213, 131, .12);
}

.ft-shell > .spacer,
.ft-shell main .spacer {
  flex-grow: 1;
}

/* Home */
.ft-site-main.ft-page-index .home-hero {
  min-height: clamp(460px, 63vh, 620px);
  padding: clamp(4.2rem, 9vw, 7rem) 0 clamp(2.8rem, 6vw, 4.5rem);
}

.ft-site-main.ft-page-index .home-hero__inner,
.ft-site-main.ft-page-index .tool-grid,
.ft-site-main.ft-page-index .pricing-strip,
.ft-site-main.ft-page-index .event-mini-grid,
.ft-site-main.ft-page-index .support-band__inner {
  width: min(1200px, calc(100% - (var(--gutter) * 2)));
}

.ft-site-main.ft-page-index .home-hero__copy {
  max-width: 720px;
}

.ft-site-main.ft-page-index .home-hero h1 {
  color: #fff;
  font-size: clamp(3rem, 7vw, 5.4rem);
  letter-spacing: -.06em;
}

.ft-site-main.ft-page-index .home-hero p {
  color: rgba(255, 255, 255, .9);
}

.ft-site-main.ft-page-index .home-kicker {
  color: #c6dcff;
}

.ft-site-main.ft-page-index .home-actions .btn {
  min-height: 48px;
  border-radius: 12px;
}

.ft-site-main.ft-page-index .home-band {
  padding: clamp(3.5rem, 7vw, 5.5rem) 0;
}

.ft-site-main.ft-page-index .home-section-head {
  width: min(900px, calc(100% - (var(--gutter) * 2)));
  margin-bottom: 2.25rem;
}

.ft-site-main.ft-page-index .home-section-head h2 {
  font-size: clamp(1.9rem, 4vw, 2.75rem);
}

.ft-site-main.ft-page-index .tool-grid {
  gap: 1rem;
  border: 0;
  overflow: visible;
  background: transparent;
}

.ft-site-main.ft-page-index .tool-panel {
  min-height: 230px;
  padding: 1.5rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-main.ft-page-index .tool-panel i {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  margin-bottom: 1.2rem;
  border-radius: 12px;
  background: var(--ft-brand-soft);
  color: var(--ft-brand);
}

.ft-site-main.ft-page-index .tool-panel h3 {
  font-size: 1.1rem;
}

.ft-site-main.ft-page-index .pricing-strip {
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-main.ft-page-index .event-mini {
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-main.ft-page-index .support-band p {
  color: #dbeafe;
}

.ft-site-main.ft-page-index .support-band h2 {
  color: #fff;
}

/* About */
.ft-site-main.ft-page-about {
  background: var(--ft-canvas);
}

.ft-site-main.ft-page-about main.page-wrapper {
  width: min(1120px, calc(100% - (var(--gutter) * 2)));
  max-width: none;
  padding: 0 0 clamp(4rem, 8vw, 6.5rem);
}

.ft-site-main.ft-page-about .hero {
  position: relative;
  min-height: 390px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  margin: 0 calc(var(--gutter) * -1) clamp(3rem, 7vw, 5rem);
  padding: clamp(4rem, 9vw, 6.5rem) var(--gutter);
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(circle at 84% 18%, rgba(96, 165, 250, .24), transparent 30%),
    radial-gradient(circle at 12% 85%, rgba(37, 99, 235, .18), transparent 36%),
    linear-gradient(135deg, #0b1220, #172b4d 62%, #153a78);
  color: #fff;
}

.ft-site-main.ft-page-about .hero::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: auto -90px -180px auto;
  width: 430px;
  height: 430px;
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 50%;
}

.ft-site-main.ft-page-about .hero::after {
  display: none;
}

.ft-site-main.ft-page-about .hero h1 {
  width: min(100%, 1000px);
  margin-bottom: 1rem;
  color: #fff;
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  letter-spacing: -.055em;
}

.ft-site-main.ft-page-about .hero p {
  width: min(100%, 720px);
  max-width: 720px;
  margin: 0 auto;
  color: #dbeafe;
  font-size: clamp(1.05rem, 2.2vw, 1.25rem);
}

.ft-site-main.ft-page-about main > section > p {
  max-width: 780px;
  margin-inline: auto;
  color: var(--ft-ink-soft);
  font-size: 1.08rem;
  text-align: center;
}

.ft-site-main.ft-page-about .feature-list {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
  margin: 2.5rem 0 0;
  padding: 0;
}

.ft-site-main.ft-page-about .feature-list li {
  position: relative;
  min-width: 0;
  min-height: 190px;
  padding: 1.5rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-main.ft-page-about .feature-list li::before {
  content: "";
  width: 44px;
  height: 44px;
  display: block;
  margin-bottom: 1.15rem;
  border-radius: 12px;
  background:
    linear-gradient(135deg, rgba(37, 99, 235, .1), rgba(37, 99, 235, .22));
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .12);
}

.ft-site-main.ft-page-about .feature-list li::after {
  content: "";
  position: absolute;
  top: 2.15rem;
  left: 2.05rem;
  width: 13px;
  height: 13px;
  border: 2px solid var(--ft-brand);
  border-radius: 4px;
  transform: rotate(45deg);
}

.ft-site-main.ft-page-about .feature-list h3 {
  margin-bottom: .55rem;
  font-size: 1rem;
  line-height: 1.35;
}

.ft-site-main.ft-page-about .feature-list p {
  margin: 0;
  color: var(--ft-muted);
  font-size: .92rem;
}

.ft-site-main.ft-page-about .pricing {
  position: relative;
  overflow: hidden;
  margin: clamp(3rem, 7vw, 5rem) 0;
  padding: clamp(2rem, 5vw, 3.2rem);
  border: 1px solid #253653;
  border-radius: var(--ft-radius-lg);
  background: var(--ft-navy);
  box-shadow: var(--ft-shadow);
}

.ft-site-main.ft-page-about .pricing h2 {
  color: #fff;
  font-size: clamp(1.5rem, 3.5vw, 2.2rem);
}

.ft-site-main.ft-page-about .pricing p {
  color: #cbd5e1;
}

.ft-site-main.ft-page-about .pricing a {
  color: #fff !important;
}

.ft-site-main.ft-page-about .cta {
  margin: 0;
  padding: 0;
  background: transparent;
  color: var(--ft-ink);
}

.ft-site-main.ft-page-about .cta h2 {
  color: var(--ft-ink);
}

.ft-site-main.ft-page-about .cta a.btn {
  color: #fff !important;
  background: var(--ft-brand-dark);
}

/* Tickets landing */
.ft-site-tickets.ft-page-index .hero {
  min-height: 410px;
  padding: clamp(4rem, 9vw, 6.5rem) var(--gutter);
  overflow: hidden;
  isolation: isolate;
  background:
    radial-gradient(circle at 78% 12%, rgba(96, 165, 250, .24), transparent 27%),
    linear-gradient(135deg, #0b1220, #152c52);
}

.ft-site-tickets.ft-page-index .hero::after {
  display: none;
}

.ft-site-tickets.ft-page-index .hero h1 {
  margin-bottom: 1rem;
  color: #fff;
  font-size: clamp(2.8rem, 7vw, 4.8rem);
  letter-spacing: -.06em;
}

.ft-site-tickets.ft-page-index .hero p {
  max-width: 700px;
  margin: 0 auto 1.7rem;
  color: #dbeafe;
  font-size: clamp(1.05rem, 2vw, 1.22rem);
}

.ft-site-tickets.ft-page-index .features {
  padding: clamp(3.5rem, 7vw, 5rem) 0;
  background: var(--ft-canvas);
}

.ft-site-tickets.ft-page-index .feature-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}

.ft-site-tickets.ft-page-index .feature {
  padding: 1.5rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  text-align: left;
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-tickets.ft-page-index .feature svg {
  width: 46px;
  height: 46px;
  display: block;
  margin-bottom: 1.15rem;
  padding: 11px;
  border-radius: 13px;
  background: var(--ft-brand-soft);
  fill: none;
  stroke: var(--ft-brand);
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.ft-site-tickets.ft-page-index .feature h3 {
  margin-bottom: .45rem;
  font-size: 1.08rem;
}

.ft-site-tickets.ft-page-index #events {
  padding: clamp(3.5rem, 7vw, 5.5rem) 0;
}

.ft-site-tickets.ft-page-index .events-grid {
  gap: 1rem;
}

.ft-site-tickets.ft-page-index .event-card {
  width: 100%;
  max-width: none;
  margin: 0;
  border-color: var(--ft-line);
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-tickets.ft-page-index .event-card img {
  height: auto;
  aspect-ratio: 16 / 9;
}

.ft-site-tickets.ft-page-index .event-body {
  padding: 1.25rem;
}

.ft-site-tickets.ft-page-index .cta {
  padding: clamp(3.5rem, 8vw, 5rem) var(--gutter);
  background: var(--ft-brand);
}

.ft-site-tickets.ft-page-index .cta h2,
.ft-site-tickets.ft-page-index .cta p {
  color: #fff;
}

.ft-site-tickets.ft-page-index .cta .altBGButton {
  color: var(--ft-brand-dark) !important;
  border-color: #fff;
  background: #fff;
}

/* Account forms */
.ft-site-account.ft-page-login,
.ft-site-account.ft-page-register,
.ft-site-account.ft-page-forgotpassword,
.ft-site-account.ft-page-resetpassword,
.ft-site-account.ft-page-verify,
.ft-site-account.ft-page-resendverification {
  background:
    radial-gradient(circle at 15% 0%, rgba(37, 99, 235, .08), transparent 30%),
    var(--ft-canvas);
}

.ft-site-account.ft-page-login main.container,
.ft-site-account.ft-page-register main.container,
.ft-site-account.ft-page-forgotpassword main.container,
.ft-site-account.ft-page-resetpassword main.container,
.ft-site-account.ft-page-verify main.container,
.ft-site-account.ft-page-resendverification main.container {
  width: min(560px, calc(100% - (var(--gutter) * 2))) !important;
  max-width: none !important;
  margin-block: clamp(2rem, 7vw, 4.5rem) !important;
  padding: clamp(1.4rem, 4vw, 2.25rem) !important;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius-lg);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow);
}

.ft-site-account.ft-page-register main.container {
  width: min(650px, calc(100% - (var(--gutter) * 2))) !important;
}

.ft-site-account.ft-page-login main h1,
.ft-site-account.ft-page-register main h1,
.ft-site-account.ft-page-forgotpassword main h1,
.ft-site-account.ft-page-resetpassword main h1,
.ft-site-account.ft-page-verify main h1,
.ft-site-account.ft-page-resendverification main h1 {
  margin-bottom: 1.6rem !important;
  font-size: clamp(1.65rem, 5vw, 2.15rem);
  text-align: left !important;
}

.ft-site-account.ft-page-login #loginTabs {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .35rem;
  margin-bottom: 1.5rem;
  padding: .3rem;
  border: 0;
  border-radius: 12px;
  background: var(--ft-surface-soft);
}

.ft-site-account.ft-page-login #loginTabs .tab-link {
  min-height: 40px;
  display: grid;
  place-items: center;
  padding: .55rem;
  border: 0;
  border-radius: 9px;
  color: var(--ft-muted) !important;
  font-size: .86rem;
  font-weight: 650;
}

.ft-site-account.ft-page-login #loginTabs .tab-link.active {
  color: var(--ft-ink) !important;
  background: #fff;
  box-shadow: 0 1px 4px rgba(16, 24, 40, .1);
}

.ft-site-account.ft-page-login .tab-pane {
  color: var(--ft-ink);
}

.ft-site-account.ft-page-login .footerButtonsWrapper,
.ft-site-account.ft-page-register .footerButtonsWrapper {
  margin-bottom: 0;
}

/* Account dashboard and management */
.ft-site-account.ft-page-index {
  background: var(--ft-canvas);
}

.ft-site-account.ft-page-index main.container {
  width: min(1120px, calc(100% - (var(--gutter) * 2))) !important;
  max-width: none !important;
  padding: clamp(2rem, 5vw, 3.5rem) 0 clamp(4rem, 7vw, 6rem) !important;
}

.ft-site-account.ft-page-index #welcomeWrapper {
  margin-bottom: 1.4rem;
}

.ft-site-account.ft-page-index #welcomeWrapper h3 {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 1rem;
  margin: 0 !important;
  font-size: clamp(1.7rem, 4vw, 2.35rem);
}

.ft-site-account.ft-page-index #welcomeWrapper .smlText {
  font-size: .82rem;
  letter-spacing: 0;
}

.ft-site-account.ft-page-index #EventsCRUDPanel,
.ft-site-account.ft-page-index #eventForm,
.ft-site-account.ft-page-index #manageEventWrapper,
.ft-site-account.ft-page-index #stripeWrapper {
  margin-bottom: 1.25rem;
  padding: clamp(1.2rem, 3vw, 1.6rem);
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-account.ft-page-index #EventsCRUDPanel > hr {
  display: none;
}

.ft-site-account.ft-page-index #eventsPanel > .flexRow {
  align-items: center;
  margin: 0 0 1.2rem;
}

.ft-site-account.ft-page-index #eventsPanel h4,
.ft-site-account.ft-page-index #stripeWrapper h4 {
  font-size: 1.15rem;
}

.ft-connected-badge {
  display: inline-flex;
  align-items: center;
  gap: .38rem;
  margin-left: .45rem;
  padding: .28rem .52rem;
  border-radius: 999px;
  background: var(--ft-success-soft);
  color: var(--ft-success);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: 0;
  vertical-align: middle;
}

.ft-connected-badge > span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #12b76a;
}

.ft-site-account.ft-page-index .event-list {
  display: grid;
  gap: .75rem;
}

.ft-site-account.ft-page-index .event-item {
  display: grid;
  grid-template-columns: minmax(160px, 1.3fr) minmax(330px, 1fr);
  gap: .85rem 1.25rem;
  align-items: center;
  margin: 0;
  padding: 1rem;
  border: 1px solid var(--ft-line);
  border-radius: 13px;
  background: #fff;
  text-align: left;
}

.ft-site-account.ft-page-index .event-item__title {
  color: var(--ft-ink);
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.3;
}

.ft-site-account.ft-page-index .event-item-details {
  display: grid;
  grid-template-columns: minmax(100px, 1fr) auto minmax(220px, auto);
  gap: .75rem;
  align-items: center;
}

.ft-site-account.ft-page-index .event-item__starts {
  gap: .1rem;
  color: var(--ft-ink-soft);
  font-size: .8rem;
}

.ft-site-account.ft-page-index .event-item__status .badge {
  display: inline-flex;
  padding: .28rem .5rem;
  border-radius: 999px;
  background: var(--ft-success-soft);
  color: var(--ft-success);
  font-size: .72rem;
  font-weight: 700;
  text-transform: capitalize;
}

.ft-site-account.ft-page-index .event-item__actions {
  display: flex;
  justify-content: flex-end;
  gap: .4rem;
}

.ft-site-account.ft-page-index .event-item__actions .btn {
  margin-left: 0 !important;
}

.ft-site-account.ft-page-index #stripeWrapper {
  padding: clamp(1.4rem, 4vw, 2rem);
  border-color: #cfe0ff;
  background:
    radial-gradient(circle at 95% 10%, rgba(37, 99, 235, .1), transparent 35%),
    #f8fbff;
}

.ft-site-account.ft-page-index #stripeWrapper p {
  margin: .5rem 0 1.1rem;
}

.ft-site-account.ft-page-index #eventForm {
  box-shadow: var(--ft-shadow-sm) !important;
}

.ft-site-account.ft-page-index #eventForm .row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
}

.ft-site-account.ft-page-index #eventForm .col-12,
.ft-site-account.ft-page-index #eventForm .col-md-6 {
  width: auto;
}

.ft-site-account.ft-page-index #eventForm .col-12 {
  grid-column: 1 / -1;
}

.ft-site-account.ft-page-index #mapPreview {
  border-radius: 13px !important;
}

.ft-site-account.ft-page-managetickets,
.ft-site-account.ft-page-manageaccesspoints,
.ft-site-account.ft-page-eventsales {
  background: var(--ft-canvas);
}

.ft-site-account.ft-page-managetickets main.container,
.ft-site-account.ft-page-manageaccesspoints main.container,
.ft-site-account.ft-page-eventsales main.container {
  width: min(1120px, calc(100% - (var(--gutter) * 2))) !important;
  max-width: none !important;
  padding: clamp(2rem, 5vw, 3.5rem) 0 clamp(4rem, 7vw, 6rem) !important;
}

.ft-site-account.ft-page-managetickets main > section,
.ft-site-account.ft-page-manageaccesspoints main > section {
  margin-bottom: 1.25rem;
  padding: clamp(1.2rem, 3vw, 1.7rem);
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-account.ft-page-managetickets #manageTicketsSection,
.ft-site-account.ft-page-manageaccesspoints #manageAPSection,
.ft-site-account.ft-page-managetickets #eventSelectSection,
.ft-site-account.ft-page-manageaccesspoints #eventSelectSection {
  width: min(920px, 100%);
  margin-inline: auto;
}

.ft-site-account.ft-page-managetickets #manageTicketsSection > .mb-4,
.ft-site-account.ft-page-manageaccesspoints #manageAPSection > .mb-4 {
  margin-bottom: 1.1rem !important;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--ft-line);
}

.ft-site-account.ft-page-managetickets #manageTicketsSection > .mb-4 h5,
.ft-site-account.ft-page-manageaccesspoints #manageAPSection > .mb-4 h5 {
  margin-bottom: .25rem !important;
  color: var(--ft-muted);
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.ft-site-account.ft-page-managetickets #manageTicketsSection > .mb-4 h3,
.ft-site-account.ft-page-manageaccesspoints #manageAPSection > .mb-4 h3 {
  font-size: clamp(1.35rem, 3vw, 1.75rem);
}

.ft-site-account.ft-page-managetickets #catsPanel,
.ft-site-account.ft-page-manageaccesspoints #apListPanel {
  margin-bottom: 1rem;
  padding: 1.1rem;
  border: 1px solid var(--ft-line);
  border-radius: 13px;
  background: var(--ft-canvas);
}

.ft-site-account.ft-page-managetickets #catsPanel > .d-flex,
.ft-site-account.ft-page-manageaccesspoints #apListPanel > .d-flex {
  margin: 0 0 .85rem !important;
}

.ft-site-account.ft-page-managetickets #catsWrapper,
.ft-site-account.ft-page-manageaccesspoints #apTableWrapper {
  margin-bottom: 0 !important;
}

.ft-site-account.ft-page-managetickets #catsWrapper > p,
.ft-site-account.ft-page-manageaccesspoints #apTableWrapper > p {
  min-height: 96px;
  display: grid;
  place-items: center;
  margin: 0;
  padding: 1rem;
  border: 1px dashed var(--ft-line-strong);
  border-radius: 11px;
  background: #fff;
  color: var(--ft-muted) !important;
  text-align: center;
}

.ft-site-account.ft-page-managetickets .cat-card,
.ft-site-account.ft-page-manageaccesspoints .flex-table {
  border-color: var(--ft-line);
  border-radius: 12px;
  background: #fff;
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-account.ft-page-eventsales main > .d-flex:first-child {
  margin-bottom: 1.15rem !important;
}

.ft-site-account.ft-page-eventsales main h3 {
  font-size: clamp(1.55rem, 3vw, 2rem);
}

.ft-site-account.ft-page-eventsales .toolbar {
  display: grid !important;
  grid-template-columns: minmax(240px, 1.8fr) minmax(170px, 1fr) 145px 165px 44px 1px auto auto;
  align-items: center;
  gap: .55rem;
  padding: 1rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-account.ft-page-eventsales .toolbar .form-control,
.ft-site-account.ft-page-eventsales .toolbar .form-select {
  width: auto !important;
  min-width: 0 !important;
  min-height: 42px;
  height: 42px;
  padding: .55rem .7rem;
}

.ft-site-account.ft-page-eventsales .toolbar .btn {
  min-width: 44px;
  height: 42px;
}

.ft-site-account.ft-page-eventsales #resultCount {
  min-width: 70px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: .34rem .58rem;
  background: var(--ft-brand-soft);
  color: var(--ft-brand-dark);
}

.ft-site-account.ft-page-eventsales #resultCount::after {
  content: "results";
  margin-left: .2rem;
}

.ft-site-account.ft-page-eventsales .table-responsive {
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: #fff;
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-account.ft-page-eventsales #salesTbl thead th {
  background: var(--ft-surface-soft);
  color: var(--ft-ink-soft);
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .035em;
}

.ft-site-account.ft-page-eventsales #salesTbl td {
  color: var(--ft-ink-soft);
}

/* Checkout */
.ft-site-tickets.ft-page-checkout {
  background: var(--ft-canvas);
}

.ft-site-tickets.ft-page-checkout #checkoutWrap {
  width: min(660px, calc(100% - (var(--gutter) * 2)));
  max-width: none;
  margin: clamp(2rem, 7vw, 4.5rem) auto;
  padding: clamp(1.35rem, 4vw, 2.25rem);
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius-lg);
  background: var(--ft-surface);
  box-shadow: var(--ft-shadow);
}

.ft-site-tickets.ft-page-checkout #checkoutWrap > h2 {
  margin-bottom: 1.5rem !important;
  font-size: clamp(1.8rem, 4vw, 2.25rem);
}

.ft-site-tickets.ft-page-checkout #basketReview {
  padding: 1.1rem 1.2rem;
  border-color: var(--ft-line);
  border-radius: 13px;
  background: var(--ft-canvas);
}

.ft-site-tickets.ft-page-checkout .stripe-group .StripeElement {
  min-height: 46px;
  padding: .78rem .8rem;
  border-color: var(--ft-line-strong);
  border-radius: var(--ft-radius-sm);
}

.ft-site-tickets.ft-page-checkout .payBtn {
  width: 100%;
  min-height: 50px;
}

.ft-site-tickets.ft-page-checkout #payForm {
  margin-top: 1.5rem;
  padding-top: 1.4rem;
  border-top: 1px solid var(--ft-line);
}

.ft-site-tickets.ft-page-checkout #payForm > .stongMTop {
  margin: 0 0 .9rem;
  padding: 0;
  border: 0;
  color: var(--ft-ink);
  font-size: 1.08rem;
}

/* Ticket purchase and confirmation */
.ft-site-tickets.ft-page-get {
  background: var(--ft-canvas);
}

.ft-site-tickets.ft-page-get #ticketApp {
  width: min(980px, calc(100% - (var(--gutter) * 2)));
  max-width: none;
  margin: 0 auto;
  padding: clamp(2rem, 6vw, 4rem) 0 clamp(4rem, 8vw, 6rem);
}

.ft-site-tickets.ft-page-get .event-card {
  width: 100%;
  max-width: none;
  margin-bottom: 1.25rem;
  margin-inline: 0;
  padding: clamp(1.25rem, 4vw, 2rem);
  border-color: var(--ft-line);
  border-radius: var(--ft-radius-lg);
  box-shadow: var(--ft-shadow);
}

.ft-site-tickets.ft-page-get .event-title {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
}

.ft-site-tickets.ft-page-get .event-hero {
  max-height: 440px;
  margin-top: 1.25rem;
  border-radius: var(--ft-radius);
  object-fit: cover !important;
}

.ft-site-tickets.ft-page-get #ticketApp > p:not(#loadingMsg) {
  min-height: 150px;
  display: grid;
  place-items: center;
  margin: 0;
  padding: 1.5rem;
  border: 1px dashed var(--ft-line-strong);
  border-radius: var(--ft-radius);
  background: #fff;
  color: var(--ft-muted);
  text-align: center;
}

.ft-site-tickets.ft-page-get .ticket-category {
  margin: 1.5rem 0;
  padding: 1.25rem;
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  background: #fff;
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-tickets.ft-page-get .ticket-card {
  border-color: var(--ft-line);
  border-radius: 13px;
  box-shadow: none;
}

/* Public event detail */
.ft-site-main.ft-page-event {
  background: var(--ft-canvas);
}

.ft-site-main.ft-page-event .hero-plain {
  min-height: 260px;
  display: grid;
  place-items: center;
  padding: clamp(3.5rem, 9vw, 6rem) var(--gutter);
  background:
    radial-gradient(circle at 80% 10%, rgba(96, 165, 250, .2), transparent 28%),
    linear-gradient(135deg, #0b1220, #16315a);
}

.ft-site-main.ft-page-event .hero-plain h1 {
  color: #fff;
  font-size: clamp(2.4rem, 6vw, 4.25rem);
  letter-spacing: -.055em;
}

.ft-site-main.ft-page-event .event-body {
  position: relative;
  z-index: 2;
  width: min(900px, calc(100% - (var(--gutter) * 2)));
  max-width: none;
  margin: -44px auto clamp(4rem, 8vw, 6rem);
  padding: clamp(1.35rem, 4vw, 2.25rem);
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius-lg);
  background: #fff;
  box-shadow: var(--ft-shadow);
}

.ft-site-main.ft-page-event .event-cover {
  width: 100%;
  max-height: 500px;
  border-radius: var(--ft-radius);
  object-fit: cover;
}

.ft-site-main.ft-page-event #eventMap {
  height: 360px;
  border-color: var(--ft-line);
  border-radius: var(--ft-radius) !important;
  overflow: hidden;
}

.ft-site-main.ft-page-event .direction-tile {
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-main.ft-page-event .direction-tile header {
  background: var(--ft-brand);
}

.ft-site-main.ft-page-event .mode-select button.active,
.ft-site-main.ft-page-event .buttons button {
  border-color: var(--ft-brand);
  background: var(--ft-brand);
  color: #fff;
}

.ft-site-main.ft-page-event .buttons button:hover {
  background: var(--ft-brand-dark);
}

.ft-site-main.ft-page-event #maximizeMap,
.ft-site-main.ft-page-event #toggleLayer {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  padding: 0;
  border-radius: 10px;
}

.ft-site-main.ft-page-event .leaflet-control-zoom a {
  width: 40px;
  height: 40px;
  line-height: 40px;
}

/* NameMyCamper remains playful, but now uses the shared application shell. */
.ft-site-camper {
  padding: 0;
  background:
    radial-gradient(circle at 50% 0%, rgba(37, 99, 235, .08), transparent 32%),
    var(--ft-canvas);
  color: var(--ft-ink);
}

.ft-site-camper .camper-tool-shell {
  width: min(1040px, calc(100% - (var(--gutter) * 2)));
  margin: 0 auto;
  padding: clamp(2.5rem, 7vw, 5rem) 0 clamp(4rem, 8vw, 6rem);
}

.ft-site-camper #pageTop {
  margin-bottom: .65rem;
  color: var(--ft-ink);
  font-size: clamp(2.1rem, 6vw, 3.5rem);
  letter-spacing: -.055em;
}

.ft-site-camper p#instructions {
  max-width: 650px;
  margin: 0 auto 2rem;
  color: var(--ft-muted);
  font-size: 1rem;
}

.ft-site-camper .generator-container {
  max-width: none;
  gap: 1.5rem;
  padding: clamp(1.1rem, 4vw, 1.75rem);
  border: 1px solid var(--ft-line);
  border-radius: var(--ft-radius-lg);
  background: #fff;
  box-shadow: var(--ft-shadow);
}

.ft-site-camper .form-panel label {
  margin: .9rem 0 .4rem;
  color: var(--ft-ink-soft);
  font-size: .88rem;
  font-weight: 650;
}

.ft-site-camper .form-panel select,
.ft-site-camper .form-panel input[type="file"] {
  min-height: 46px;
  padding: .68rem .8rem;
  border: 1px solid var(--ft-line-strong);
  border-radius: var(--ft-radius-sm);
  background: #fff;
  color: var(--ft-ink);
  box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
  appearance: auto;
}

.ft-site-camper .form-panel select:focus,
.ft-site-camper .form-panel input[type="file"]:focus {
  border-color: var(--ft-brand);
  box-shadow: var(--ft-focus);
}

.ft-site-camper #generateBtn,
.ft-site-camper #regenerateBtn,
.ft-site-camper #copyNameBtn,
.ft-site-camper #downloadBtn {
  min-height: 46px;
  border-radius: var(--ft-radius-sm);
}

.ft-site-camper #generateBtn,
.ft-site-camper #regenerateBtn {
  background: var(--ft-brand);
}

.ft-site-camper #visitor-counter {
  margin-top: 1rem;
  color: var(--ft-muted) !important;
}

.ft-site-camper #imagePreview,
.ft-site-camper #imageElement {
  border-color: var(--ft-line);
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

/* Admin */
.ft-site-admin {
  background: var(--ft-canvas) !important;
}

.ft-site-admin .admin-shell {
  width: min(1200px, calc(100% - (var(--gutter) * 2)));
  max-width: none;
  padding: clamp(2rem, 5vw, 3.5rem) 0 clamp(4rem, 7vw, 6rem);
}

.ft-site-admin .admin-title h1 {
  font-size: clamp(1.8rem, 4vw, 2.4rem);
}

.ft-site-admin .admin-tabs {
  gap: .45rem;
  padding: .35rem;
  border: 1px solid var(--ft-line);
  border-radius: 13px;
  background: #fff;
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-admin .admin-tab {
  min-height: 40px;
  border: 0;
  border-radius: 9px;
  color: var(--ft-muted);
  font-weight: 650;
}

.ft-site-admin .admin-tab.active {
  color: #fff;
  background: var(--ft-ink);
}

.ft-site-admin .admin-panel {
  padding: clamp(1.2rem, 3vw, 1.7rem);
  border-color: var(--ft-line);
  border-radius: var(--ft-radius);
  box-shadow: var(--ft-shadow-sm);
}

.ft-site-admin .admin-btn {
  min-height: 42px;
  border-radius: var(--ft-radius-sm);
  padding: .62rem .9rem;
  font-weight: 650;
}

.ft-site-admin a.admin-btn.secondary {
  color: var(--ft-ink) !important;
}

@media (max-width: 1080px) {
  .ft-navbar .nav-toggle-label {
    display: flex;
  }

  .ft-navbar .nav-links {
    position: absolute;
    top: calc(100% + 8px);
    right: var(--gutter);
    left: var(--gutter);
    z-index: 5;
    display: flex;
    align-items: stretch;
    gap: .25rem;
    max-height: 0;
    padding: 0;
    overflow: hidden;
    border: 0 solid transparent;
    border-radius: var(--ft-radius);
    background: rgba(255, 255, 255, .98);
    box-shadow: var(--ft-shadow);
    opacity: 0;
    transform: translateY(-8px);
    pointer-events: none;
    transition: max-height .24s ease, padding .24s ease, opacity .18s ease, transform .18s ease;
  }

  .ft-navbar .nav-toggle:checked ~ .nav-links {
    max-height: calc(100vh - 96px);
    padding: .7rem;
    overflow-y: auto;
    border-width: 1px;
    border-color: var(--ft-line);
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }

  .ft-navbar .nav-links li,
  .ft-navbar .nav-links a {
    width: 100%;
  }

  .ft-navbar .nav-links a {
    min-height: 46px;
    padding-inline: .85rem;
  }

  .ft-navbar .nav-links a.btn {
    margin: .2rem 0 0;
  }

  .ft-site-main.ft-page-index .tool-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ft-site-main.ft-page-about .feature-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ft-site-account.ft-page-index .event-item {
    grid-template-columns: 1fr;
  }

  .ft-site-account.ft-page-eventsales .toolbar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .ft-site-account.ft-page-eventsales .toolbar #searchInput,
  .ft-site-account.ft-page-eventsales .toolbar #ticketFilter {
    grid-column: 1 / -1;
  }

  .ft-site-account.ft-page-eventsales .toolbar .vr {
    display: none !important;
  }
}

@media (max-width: 760px) {
  :root {
    --gutter: 1rem;
  }

  .ft-navbar.navbar {
    min-height: 64px;
  }

  .ft-nav-content {
    min-height: 63px;
  }

  .ft-navbar .navbarLogoIcon {
    width: 34px;
    height: 34px;
  }

  .ft-navbar .logo {
    font-size: 1.15rem;
  }

  .ft-navbar .navbarLogoTagline {
    display: none;
  }

  .ft-navbar #basketWrapper {
    top: 58px;
  }

  .ft-footer {
    padding-top: 2.75rem;
  }

  .ft-footer .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 2rem 1.5rem;
  }

  .ft-footer .ft-footer-brand {
    grid-column: 1 / -1;
  }

  .ft-footer-base {
    align-items: flex-start;
    flex-direction: column;
  }

  .ft-site-main.ft-page-index .home-hero {
    min-height: 470px;
    padding-block: 4rem 2.75rem;
  }

  .ft-site-main.ft-page-index .tool-grid,
  .ft-site-main.ft-page-index .pricing-strip,
  .ft-site-main.ft-page-index .event-mini-grid,
  .ft-site-tickets.ft-page-index .feature-grid {
    grid-template-columns: 1fr;
  }

  .ft-site-main.ft-page-index .tool-panel {
    min-height: 0;
  }

  .ft-site-main.ft-page-about .hero,
  .ft-site-tickets.ft-page-index .hero {
    min-height: 350px;
  }

  .ft-site-main.ft-page-about .feature-list {
    grid-template-columns: 1fr;
  }

  .ft-site-main.ft-page-about .feature-list li {
    min-height: 0;
  }

  .ft-site-account.ft-page-index #welcomeWrapper h3 {
    align-items: flex-start;
    flex-direction: column;
    gap: .35rem;
  }

  .ft-site-account.ft-page-index .event-item-details {
    grid-template-columns: 1fr auto;
  }

  .ft-site-account.ft-page-index .event-item__actions {
    grid-column: 1 / -1;
    justify-content: stretch;
  }

  .ft-site-account.ft-page-index .event-item__actions .btn {
    flex: 1;
  }

  .ft-site-account.ft-page-index #eventForm .row {
    grid-template-columns: 1fr;
  }

  .ft-site-account.ft-page-index #eventForm .col-12 {
    grid-column: auto;
  }

  .ft-site-account.ft-page-eventsales .toolbar {
    grid-template-columns: 1fr;
  }

  .ft-site-account.ft-page-eventsales .toolbar #searchInput,
  .ft-site-account.ft-page-eventsales .toolbar #ticketFilter {
    grid-column: auto;
  }
}

@media (max-width: 480px) {
  .ft-navbar .navbarLogoTextWrapper {
    display: none;
  }

  .ft-navbar .navbarLogoWrapper {
    margin-right: auto;
  }

  .ft-navbar .ft-nav-spacer {
    display: none;
  }

  .ft-navbar .basketIconWrapper,
  .ft-navbar .nav-toggle-label {
    width: 40px;
    height: 40px;
    flex-basis: 40px;
  }

  .ft-shell .form-row {
    flex-direction: column;
  }

  .ft-footer .footer-grid {
    grid-template-columns: 1fr;
  }

  .ft-footer .ft-footer-brand {
    grid-column: auto;
  }

  .ft-site-main.ft-page-index .home-hero {
    min-height: 430px;
  }

  .ft-site-main.ft-page-index .home-hero h1 {
    font-size: clamp(2.7rem, 15vw, 4rem);
  }

  .ft-site-main.ft-page-index .home-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .ft-site-main.ft-page-about .hero,
  .ft-site-tickets.ft-page-index .hero {
    min-height: 330px;
  }

  .ft-site-account.ft-page-login main.container,
  .ft-site-account.ft-page-register main.container,
  .ft-site-account.ft-page-forgotpassword main.container,
  .ft-site-account.ft-page-resetpassword main.container,
  .ft-site-account.ft-page-verify main.container,
  .ft-site-account.ft-page-resendverification main.container,
  .ft-site-tickets.ft-page-checkout #checkoutWrap {
    width: 100% !important;
    margin-block: 0 !important;
    border-inline: 0;
    border-radius: 0;
    box-shadow: none;
  }

  .ft-site-account.ft-page-index .event-item-details {
    grid-template-columns: 1fr;
  }

  .ft-site-account.ft-page-index .event-item__actions {
    grid-column: auto;
    flex-wrap: wrap;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ft-shell *,
  .ft-shell *::before,
  .ft-shell *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
