:root{
  --red:#b5121b;
  --red-dark:#8f0d14;
  --text:#111;
  --muted:#5a5a5a;
  --line:#e9e9e9;
  --bg:#ffffff;
  --max:1100px;
  --shadow: 0 10px 26px rgba(0,0,0,.12);
  --radius: 14px;
}

*{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  font-family:"Open Sans", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  color:var(--text);
  background:var(--bg);
  line-height:1.55;
}

a{ color:inherit; }
img{ max-width:100%; height:auto; display:block; }

.container{
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  padding:0 18px;
}

/* Top header (ANFRE only) */
.topbar{
  padding:26px 0 10px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:16px;
  flex-wrap:wrap;
  text-align:center;
}

.brand{
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  justify-content:center;
}

.logo-anfre{
  height:52px;
  width:auto;
}

.anfre-mark{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  line-height:1.05;
  padding-left:6px;
  border-left:3px solid #ededed;
}

.anfre-mark .name{
  font-family:"Montserrat", sans-serif;
  font-weight:900;
  letter-spacing:.06em;
  font-size:26px;
  text-transform:uppercase;
}

.anfre-mark .tagline{
  font-size:12px;
  color:var(--muted);
  margin-top:2px;
  letter-spacing:.02em;
  text-align:left;
  max-width:420px;
}

/* Hero */
.hero{
  text-align:center;
  padding:8px 0 14px;
}

.kicker{
  font-family:"Montserrat", sans-serif;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:#333;
  font-size:18px;
  margin:8px 0 6px;
}

.hero h1{
  margin:0;
  font-family:"Montserrat", sans-serif;
  text-transform:uppercase;
  font-weight:900;
  letter-spacing:.01em;
  line-height:.95;
  font-size: clamp(34px, 4.3vw, 64px);
}

.break{ display:block; }

.place-date{
  margin:12px 0 6px;
  font-family:"Montserrat", sans-serif;
  font-style: normal;
  font-weight: 700;
  color: var(--red);
  font-size: clamp(20px, 2.6vw, 34px);
  line-height:1.1;
  letter-spacing: .04em;
}

.details{
  margin:10px auto 0;
  max-width:860px;
  color:#222;
  font-size:15px;
}

/* 3-photo strip */
.photo-strip{ margin:16px 0 4px; }

.photo-strip .grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:12px;
}

.photo{
  border-radius:12px;
  overflow:hidden;
  background:#f4f4f4;
  border:1px solid var(--line);
  box-shadow: 0 8px 18px rgba(0,0,0,.06);
  min-height:120px;
}

.photo img{
  width:100%;
  height:100%;
  object-fit:cover;
  aspect-ratio: 16 / 10;
}

.cap{
  padding:8px 10px;
  font-size:12px;
  color:var(--muted);
  background:#fff;
  border-top:1px solid var(--line);
  text-align:left;
}

/* Sponsors */
.sponsors{ padding:16px 0 2px; }

.label{
  text-transform:uppercase;
  letter-spacing:.18em;
  font-size:11px;
  color:#7a7a7a;
  margin:16px 0 10px;
  text-align:left;
}

.logo-grid{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:18px;
  align-items:center;
}

.sponsor-card{
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px;
  background:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:78px;
}

.sponsor-card img{
  max-height:44px;
  width:auto;
  opacity:.92;
  filter: grayscale(10%);
}

.sponsor-link{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
}

/* CTA buttons */
.cta-bar{ padding:18px 0 6px; }

.cta-row{
  display:grid;
  grid-template-columns:repeat(4, 1fr);
  gap:14px;
}

.cta-btn{
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  text-decoration:none;
  background:var(--red);
  color:#fff;
  padding:14px 10px;
  border-radius:0;
  font-family:"Montserrat", sans-serif;
  font-weight:800;
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:13px;
  line-height:1.05;
  box-shadow: 0 10px 22px rgba(181,18,27,.22);
  transition: transform .15s ease, background .15s ease;
  min-height:58px;
}

.cta-btn:hover{
  transform: translateY(-2px);
  background:var(--red-dark);
}

.cta-sub{
  margin:10px auto 0;
  max-width:860px;
  text-align:center;
  color:#222;
  font-size:13px;
}

.cta-inline{
  width:auto;
  padding:14px 18px;
  border-radius:12px;
}

/* Sections */
section.block{
  padding:28px 0;
  border-top:1px solid var(--line);
}

.lead{
  max-width:920px;
  margin:0 auto;
  text-align:center;
  font-size:14px;
  color:#222;
}
.lead p{ margin:10px 0; }

.topics{
  margin:18px auto 0;
  text-align:center;
  font-family:"Montserrat", sans-serif;
  font-weight:800;
  color:var(--red);
  text-transform:uppercase;
  letter-spacing:.06em;
  font-size:12px;
}
.topics span{ white-space:nowrap; }

.muted{ color:var(--muted); }
.center{ text-align:center; }
.mt-12{ margin-top:12px; }
.mt-14{ margin-top:14px; }
.mt-16{ margin-top:16px; }
.mt-18{ margin-top:18px; }
.mb-0{ margin-bottom:0; }

.link-strong{
  color:var(--red);
  font-weight:800;
  text-decoration:none;
}
.link-strong:hover{ text-decoration:underline; }

/* Split */
.split{
  display:grid;
  grid-template-columns: 1fr 1.2fr;
  gap:18px;
  align-items:start;
  margin-top:18px;
}

.card{
  border:1px solid var(--line);
  border-radius:var(--radius);
  background:#fff;
  box-shadow: 0 10px 24px rgba(0,0,0,.06);
  overflow:hidden;
}

.card-body{ padding:16px; }

.card h2{
  margin:0 0 8px;
  font-family:"Montserrat", sans-serif;
  text-transform:uppercase;
  letter-spacing:.02em;
  font-weight:900;
  font-size:18px;
}

/* Collage */
.collage{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:10px;
  padding:12px;
}

.tile{
  border-radius:12px;
  overflow:hidden;
  border:1px solid var(--line);
  background:#f4f4f4;
}

.collage img{
  width:100%;
  height:100%;
  object-fit:cover;
  aspect-ratio: 4 / 3;
}

.tile.big{ grid-column: span 3; }
.tile.big img{ aspect-ratio: 16 / 8; }

/* Quote */
.quote{
  margin:18px auto 0;
  max-width:920px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  padding:16px 16px 16px 18px;
  position:relative;
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
}

.quote:before{
  content:"";
  position:absolute;
  left:0; top:0; bottom:0;
  width:4px;
  background:var(--red);
  border-radius:12px 0 0 12px;
}

.quote p{ margin:0; font-size:13px; color:#222; }
.by{ margin-top:10px; font-size:12px; color:var(--muted); }

/* Two columns */
.two-col{
  display:grid;
  grid-template-columns:1.25fr .9fr;
  gap:18px;
  align-items:start;
  margin-top:18px;
}

.list{
  margin:10px 0 0;
  padding:0;
  list-style:none;
}
.list li{
  padding:10px 0;
  border-top:1px dashed #ededed;
  font-size:13px;
}
.list li:first-child{ border-top:none; }

.topic{
  font-weight:700;
  color:#111;
  display:block;
  margin-bottom:2px;
}
.name{ color:#333; }

.note{
  margin-top:10px;
  font-size:12px;
  color:#777;
  font-style:italic;
}

/* Venue photo */
.city-photo{
  margin-top:18px;
  border-radius:14px;
  overflow:hidden;
  border:1px solid var(--line);
  box-shadow: 0 10px 24px rgba(0,0,0,.06);
}
.city-photo img{
  width:100%;
  height:auto;
  object-fit:cover;
  aspect-ratio: 16 / 7;
}

/* Contact box */
.contact-box{
  margin:16px auto 0;
  max-width:920px;
  background:#fff;
  border:1px solid var(--line);
  border-radius:12px;
  padding:16px 16px 16px 18px;
  position:relative;
}

.contact-box:before{
  content:"";
  position:absolute;
  left:0; top:0; bottom:0;
  width:4px;
  background:var(--red);
  border-radius:12px 0 0 12px;
}

.contact-box h3{
  margin:0 0 8px;
  font-family:"Montserrat", sans-serif;
  text-transform:uppercase;
  font-weight:900;
  letter-spacing:.02em;
  font-size:14px;
}

.contact-box p{ margin:8px 0; font-size:13px; }

.contact-box a{
  color:var(--red);
  text-decoration:none;
  font-weight:700;
}
.contact-box a:hover{ text-decoration:underline; }

/* Companies */
.company-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:12px;
  margin-top:14px;
}

.company{
  border:1px solid var(--line);
  border-radius:12px;
  padding:12px;
  background:#fff;
  font-size:13px;
}
.company strong{ font-weight:800; }

/* Footer */
footer{
  border-top:1px solid var(--line);
  padding:22px 0 28px;
  text-align:center;
  color:#666;
  font-size:12px;
}

/* Responsive */
@media (max-width: 900px){
  .logo-grid{ grid-template-columns:repeat(3, 1fr); }
  .split{ grid-template-columns:1fr; }
  .two-col{ grid-template-columns:1fr; }
  .company-grid{ grid-template-columns:repeat(2, 1fr); }
  .anfre-mark{ align-items:center; border-left:none; padding-left:0; }
  .anfre-mark .tagline{ text-align:center; }
}

@media (max-width: 640px){
  .photo-strip .grid{ grid-template-columns:1fr; }
  .logo-grid{ grid-template-columns:repeat(2, 1fr); }
  .cta-row{ grid-template-columns:1fr 1fr; }
  .company-grid{ grid-template-columns:1fr; }
}

/* Skip link */
.skip{
  position:absolute;
  left:-999px;
  top:auto;
  width:1px; height:1px;
  overflow:hidden;
}
.skip:focus{
  left:18px; top:12px;
  width:auto; height:auto;
  background:#fff;
  padding:10px 12px;
  border:2px solid var(--red);
  border-radius:10px;
  z-index:9999;
}

.hero-compact .details{ display:none; } /* optional compact header on internal pages */

.page-title{
  margin:18px 0 10px;
  font-family:"Open Sans", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  font-size:34px;
  font-weight:400;
  letter-spacing:.01em;
  color:#111;
  padding-bottom:14px;
  border-bottom:1px solid var(--line);
}

.page-subtitle{
  margin:10px 0 18px;
  color:var(--muted);
}

.page-grid{
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  gap:18px;
  align-items:start;
  margin:18px 0 26px;
}

@media (max-width: 900px){
  .page-grid{ grid-template-columns:1fr; }
}

/* Active CTA */
.cta-btn.is-active{
  background:var(--red-dark);
}

/* Registration */
.lead-left{
  margin:0 0 12px;
  color:#222;
  font-size:14px;
}

.important{
  margin:0 0 16px;
  font-size:12px;
  color:#b5121b;
}

.reg-form .form-row{
  margin:10px 0;
}

.reg-form label{
  display:block;
  font-size:12px;
  color:#333;
  margin:0 0 6px;
}

.reg-form input{
  width:100%;
  height:38px;
  border:1px solid #dcdcdc;
  padding:8px 10px;
  border-radius:2px;
  background:#fff;
  outline:none;
}

.reg-form input:focus{
  border-color:#bdbdbd;
}

.captcha-row{
  display:flex;
  gap:10px;
  align-items:center;
}

.captcha-badge{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:86px;
  height:38px;
  border:1px solid #dcdcdc;
  background:#f7f7f7;
  font-weight:800;
  letter-spacing:.06em;
  color:#333;
}

.check-row{
  margin:14px 0 12px;
  display:grid;
  gap:8px;
}

.check-row label{
  display:flex;
  gap:10px;
  align-items:center;
  font-size:12px;
  color:#333;
}

.btn-submit{
  appearance:none;
  border:0;
  background:linear-gradient(#d76a6f, #b5121b);
  color:#fff;
  padding:10px 18px;
  cursor:pointer;
  border-radius:2px;
  font-weight:700;
  margin-top:6px;
}

.side-panel .side-block{
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px 14px 12px;
  background:#fff;
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
  margin-bottom:14px;
}

.side-panel h3{
  margin:0 0 8px;
  font-family:"Open Sans", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  font-size:14px;
  font-weight:700;
  color:#111;
}

.rates{
  font-size:18px;
  margin:8px 0 10px;
}

/* Companies page layout */
.companies-grid{
  grid-template-columns: 1fr 1fr;
}

.company-list{
  list-style:none;
  padding:0;
  margin:0;
  columns: 1;
}

.company-list li{
  padding:6px 0;
  border-bottom:1px solid #f2f2f2;
  font-size:13px;
}

.companies-photos .photo-box{
  border:1px solid var(--line);
  border-radius:12px;
  overflow:hidden;
  background:#fff;
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
  margin-bottom:12px;
}

.photo-pair{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:12px;
}

/* Programme */
.day-title{
  margin:16px 0 8px;
  font-family:"Open Sans", system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
  font-size:14px;
  font-weight:800;
  letter-spacing:.02em;
}

.agenda{
  list-style:none;
  padding:0;
  margin:0;
}

.agenda li{
  padding:6px 0;
  border-bottom:1px solid #f2f2f2;
  font-size:13px;
}

.programme-side{
  border-left:4px solid var(--red);
}

/* Venue */
.venue-grid{
  grid-template-columns: .95fr 1.05fr;
}

.venue-label{
  margin:0 0 12px;
  color:var(--red);
  font-weight:800;
  font-size:12px;
}

.venue-btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:var(--red);
  color:#fff;
  text-decoration:none;
  font-weight:800;
  padding:14px 18px;
  border-radius:2px;
  margin-bottom:12px;
  text-transform:uppercase;
  letter-spacing:.04em;
}

.venue-btn:hover{ background:var(--red-dark); }

.venue-photos img{
  width:100%;
  border-radius:12px;
  border:1px solid var(--line);
  margin-top:12px;
}

.venue-photo-row{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:12px;
}

.venue-right-photos{
  display:grid;
  gap:12px;
  margin-top:12px;
}

.venue-right-photos img{
  width:100%;
  border-radius:12px;
  border:1px solid var(--line);
}

.map-wrap{
  border:1px solid var(--line);
  border-radius:14px;
  overflow:hidden;
  margin:18px 0 26px;
  background:#fff;
  box-shadow: 0 10px 24px rgba(0,0,0,.05);
}

/* Make sponsor cards fully clickable (if not already in your CSS) */
.sponsor-link{
  display:flex;
  align-items:center;
  justify-content:center;
  width:100%;
  height:100%;
}

.form-status{ margin:10px 0 14px; font-size:13px; }
.form-status.ok{ color:#1b7f2a; }
.form-status.err{ color:#b5121b; }

.reg-form select,
.reg-form textarea{
  width:100%;
  border:1px solid #dcdcdc;
  padding:8px 10px;
  border-radius:2px;
  background:#fff;
  outline:none;
}
.reg-form select{ height:38px; }
.reg-form textarea{ resize:vertical; }

.venue-alert{
  margin: 12px 0 10px;
  padding: 12px 14px;
  border-radius: 10px;
  border: 1px solid #ddd;
  font-weight: 600;
}

.venue-alert.is-success{
  border-color: #2e7d32;
  background: #e8f5e9;
  color: #1b5e20;
}

.venue-alert.is-error{
  border-color: #c62828;
  background: #ffebee;
  color: #b71c1c;
}

.details sup{
  font-size: 0.7em;
  vertical-align: super;
}