@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');

:root{
  --red:#c90000;
  --red-dark:#9d0000;
  --ink:#111114;
  --muted:#6d7178;
  --line:#e7e8eb;
  --bg:#f4f4f6;
  --card:#fff;
  --green:#168354;
  --gold:#c58a00;
  --purple:#6841c6;
  --safe-bottom:env(safe-area-inset-bottom,0px);
  --safe-top:env(safe-area-inset-top,0px);
}

*{box-sizing:border-box}
html{background:#0d0d0f}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
img{max-width:100%;display:block}
svg{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

.app-shell{min-height:100vh;padding-bottom:calc(78px + var(--safe-bottom))}
.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.98);padding-top:var(--safe-top);box-shadow:0 1px 0 rgba(0,0,0,.08),0 4px 18px rgba(0,0,0,.05)}
.topbar-inner{height:66px;display:grid;grid-template-columns:46px minmax(0,1fr) 46px;align-items:center;gap:6px;padding:0 12px}
.brand{display:flex;justify-content:center;min-width:0}
.brand img{width:min(100%,430px);height:42px;object-fit:contain}
.icon-btn{width:42px;height:42px;border:0;border-radius:13px;background:#1c1c20;color:#fff;display:grid;place-items:center;padding:10px;cursor:pointer}
.icon-btn svg{width:22px;height:22px}
.icon-spacer{width:42px;height:42px}

.app-main{width:min(100%,1100px);margin:0 auto;padding:18px 14px 28px}
.hero{position:relative;overflow:hidden;border-radius:23px;padding:24px 20px;background:
radial-gradient(circle at 95% 5%,rgba(201,0,0,.55),transparent 32%),
linear-gradient(145deg,#121214 0%,#1a1a1f 58%,#270000 100%);color:#fff;box-shadow:0 12px 30px rgba(0,0,0,.17)}
.hero:after{content:"";position:absolute;right:-38px;bottom:-55px;width:170px;height:170px;border:18px solid rgba(255,255,255,.055);border-radius:50%;box-shadow:inset 0 0 0 10px rgba(201,0,0,.08)}
.eyebrow{text-transform:uppercase;font-size:.72rem;letter-spacing:.13em;font-weight:800;color:#ee8888;margin-bottom:7px}
.hero h1{position:relative;z-index:1;font-size:clamp(1.7rem,7vw,2.45rem);line-height:1.04;margin:0 0 10px;max-width:630px}
.hero p{position:relative;z-index:1;margin:0;color:#d6d6da;line-height:1.5;max-width:650px}
.hero-actions{position:relative;z-index:1;display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border-radius:13px;min-height:44px;padding:10px 15px;font-weight:750;border:1px solid transparent;cursor:pointer}
.btn-primary{background:var(--red);color:#fff}
.btn-primary:hover{background:var(--red-dark)}
.btn-dark{background:#17171a;color:#fff}
.btn-light{background:#fff;color:#18181b}
.btn-outline{background:transparent;border-color:#d7d8dd;color:#2b2d31}
.btn-small{min-height:36px;padding:7px 12px;border-radius:10px;font-size:.88rem}
.btn-block{width:100%}

.section{margin-top:25px}
.section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:0 2px 12px}
.section-head h2{font-size:1.18rem;margin:0;letter-spacing:-.02em}
.section-head p{font-size:.84rem;color:var(--muted);margin:3px 0 0}
.text-link{font-size:.86rem;color:var(--red);font-weight:750;white-space:nowrap}

.grid{display:grid;grid-template-columns:1fr;gap:12px}
.grid.two{grid-template-columns:1fr}
.grid.three{grid-template-columns:1fr}

.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 2px 10px rgba(20,20,25,.035);overflow:hidden}
.card-body{padding:16px}
.card-title{font-weight:800;font-size:1.03rem;margin:0}
.card-sub{margin:5px 0 0;color:var(--muted);font-size:.84rem;line-height:1.4}

.tournament-card{display:block;padding:0}
.tournament-top{display:grid;grid-template-columns:55px minmax(0,1fr);gap:12px;padding:15px}
.date-tile{background:#151518;border-radius:14px;color:#fff;text-align:center;padding:8px 4px;align-self:start}
.date-tile .dow{display:block;font-size:.66rem;text-transform:uppercase;font-weight:800;color:#d6d6da;letter-spacing:.08em}
.date-tile .day{display:block;font-size:1.55rem;line-height:1.1;font-weight:850}
.date-tile .month{display:block;font-size:.68rem;font-weight:700;color:#f09292}
.tournament-title{font-size:1rem;font-weight:800;line-height:1.22;margin:0 0 5px}
.tournament-venue{font-size:.82rem;color:var(--muted);margin:0}
.tournament-venue.one-line{display:flex;align-items:baseline;gap:5px;min-width:0;white-space:nowrap;overflow:hidden}
.tournament-venue.one-line .tournament-venue-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tournament-venue.one-line .tournament-postcode{flex:0 0 auto;white-space:nowrap}
.tournament-time{font-weight:800;color:var(--red)}
.tournament-title.one-line{display:flex;align-items:baseline;gap:5px;min-width:0;white-space:nowrap}
.tournament-title.one-line .tournament-title-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tournament-title.one-line .tournament-time{flex:0 0 auto;white-space:nowrap}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.chips.single-line{flex-wrap:nowrap;overflow:hidden;min-width:0}
.chips.single-line .chip{flex:0 0 auto;white-space:nowrap}
.chips.single-line .chip[hidden]{display:none!important}
.chip{display:inline-flex;align-items:center;min-height:25px;padding:4px 8px;border-radius:999px;font-size:.71rem;font-weight:700;background:#f1f2f4;color:#4c5057}
.chip.red{background:#fff0f0;color:#a40000}
.chip.green{background:#eaf7f1;color:#11613f}
.chip.purple{background:#f0ecff;color:#5035a0}
.tournament-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}
.stat{padding:10px 9px;text-align:center;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat b{display:block;font-size:.84rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.stat span{display:block;font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:2px}

.quick-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.quick-card{min-height:112px;padding:16px;border-radius:18px;color:#fff;background:#17171b;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;position:relative}
.quick-card.red{background:linear-gradient(145deg,#a70000,#d10000)}
.quick-card.light{background:#fff;color:#17171b;border:1px solid var(--line)}
.quick-card strong{font-size:1rem;line-height:1.15;position:relative;z-index:2}
.quick-card small{opacity:.72;position:relative;z-index:2}
.quick-icon{font-size:1.65rem;line-height:1}

.venue-card{display:grid;grid-template-columns:105px minmax(0,1fr);min-height:126px}
.venue-card .photo{background:#ddd;width:100%;height:100%;object-fit:cover}
.venue-info{padding:14px}
.venue-info h3{font-size:1rem;margin:0 0 5px;line-height:1.2}
.venue-info p{margin:0;color:var(--muted);font-size:.8rem;line-height:1.4}
.rating-line{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:.76rem}
.rating-badge{background:#111114;color:#fff;padding:4px 7px;border-radius:8px;font-weight:800}

.page-head{margin:4px 2px 17px}
.page-head h1{font-size:1.55rem;margin:0;letter-spacing:-.035em}
.page-head p{margin:6px 0 0;color:var(--muted);line-height:1.45;font-size:.9rem}

.filter-card{padding:14px;margin-bottom:16px}
.filter-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group.full{grid-column:1/-1}
label{font-size:.77rem;font-weight:750;color:#474a50}
input,select,textarea{width:100%;min-height:44px;border:1px solid #d9dbe0;border-radius:12px;background:#fff;color:#1d1f23;padding:10px 11px;outline:none}
input:focus,select:focus,textarea:focus{border-color:#ac0000;box-shadow:0 0 0 3px rgba(201,0,0,.09)}
.filter-actions{display:flex;gap:8px;grid-column:1/-1;margin-top:2px}

.date-heading{display:flex;align-items:center;gap:12px;margin:23px 2px 10px}
.date-heading:before,.date-heading:after{content:"";height:1px;background:#dadce0;flex:1}
.date-heading span{text-align:center;font-size:.84rem;font-weight:800;color:#46494e}
.date-heading.today span{color:var(--green)}

.empty{padding:30px 20px;text-align:center;color:var(--muted)}
.notice{padding:12px 14px;border-radius:13px;background:#fff5d8;color:#755400;border:1px solid #f0dea3;font-size:.84rem;line-height:1.45}
.error{padding:12px 14px;border-radius:13px;background:#ffeaea;color:#880000;border:1px solid #f0b8b8;font-size:.84rem}

.detail-hero{margin:-18px -14px 0;background:#121215;color:#fff;padding:22px 17px 25px}
.detail-hero .backline{font-size:.78rem;color:#babac0;margin-bottom:9px}
.detail-hero h1{font-size:1.62rem;line-height:1.08;margin:0 0 7px}
.detail-hero p{color:#c7c7cc;margin:0;font-size:.88rem}
.detail-hero .chips{margin-top:13px}

.info-list{display:grid;grid-template-columns:1fr 1fr}
.info-item{padding:13px 14px;border-bottom:1px solid var(--line)}
.info-item:nth-child(odd){border-right:1px solid var(--line)}
.info-item small{display:block;color:var(--muted);font-size:.67rem;text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.info-item strong{font-size:.88rem;line-height:1.25;display:block}
.copy{font-size:.9rem;line-height:1.58;color:#40434a}
.copy p:first-child{margin-top:0}
.copy p:last-child{margin-bottom:0}

.rating-grid{display:grid;gap:10px}
.rating-row{display:grid;grid-template-columns:110px 1fr 35px;align-items:center;gap:8px;font-size:.76rem}
.rating-track{height:7px;border-radius:99px;background:#ececef;overflow:hidden}
.rating-fill{height:100%;background:var(--red);border-radius:99px}
.reviews{display:grid;gap:9px}
.review{padding:12px;border:1px solid var(--line);border-radius:13px;background:#fafafa}
.review-head{display:flex;justify-content:space-between;gap:10px;font-size:.75rem;font-weight:700}
.review p{margin:7px 0 0;font-size:.8rem;line-height:1.45;color:#4e5157}

.photo-hero{width:100%;aspect-ratio:16/10;object-fit:cover;background:#ddd}
.facilities{display:flex;flex-wrap:wrap;gap:7px}
.facility{padding:7px 9px;border-radius:10px;background:#f3f3f5;font-size:.75rem;font-weight:650}
.social-links{display:flex;flex-wrap:wrap;gap:8px}
.social-links a{padding:9px 11px;border-radius:10px;border:1px solid var(--line);font-size:.78rem;font-weight:700}

.tool-card{padding:17px;display:flex;align-items:center;gap:14px}
.tool-badge{width:48px;height:48px;border-radius:15px;background:#151518;color:#fff;display:grid;place-items:center;font-size:1.3rem;flex:0 0 auto}
.tool-card h3{margin:0 0 4px;font-size:1rem}
.tool-card p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.4}

.results-table{width:100%;border-collapse:collapse;font-size:.8rem}
.results-table th,.results-table td{padding:9px 7px;border-bottom:1px solid var(--line);text-align:left}
.results-table th{text-transform:uppercase;font-size:.65rem;letter-spacing:.04em;color:var(--muted)}
.results-table td:last-child,.results-table th:last-child{text-align:right}
.calc-grid{display:grid;gap:10px}
.inline-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dynamic-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}

.legal h2{font-size:1.03rem;margin:22px 0 7px}
.legal p,.legal li{font-size:.86rem;line-height:1.6;color:#42454b}
.legal ul{padding-left:19px}

.drawer{position:fixed;inset:0;z-index:80;pointer-events:none}
.drawer.open{pointer-events:auto}
.drawer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);opacity:0;transition:.22s}
.drawer-panel{position:absolute;left:0;top:0;bottom:0;width:min(86vw,360px);background:#111114;color:#fff;padding:calc(18px + var(--safe-top)) 16px 20px;transform:translateX(-102%);transition:.24s;display:flex;flex-direction:column}
.drawer.open .drawer-backdrop{opacity:1}
.drawer.open .drawer-panel{transform:translateX(0)}
.drawer-brand{padding:10px 8px 20px;background:#fff;border-radius:14px;margin-bottom:12px}
.drawer-brand img{width:100%;height:44px;object-fit:contain}
.drawer-nav{display:grid;gap:5px}
.drawer-nav a{padding:13px 12px;border-radius:11px;color:#d1d1d5;font-size:.9rem;font-weight:650}
.drawer-nav a.active,.drawer-nav a:hover{background:#252529;color:#fff}
.drawer-nav a.active{box-shadow:inset 3px 0 0 var(--red)}
.drawer-meta{margin-top:auto;display:flex;flex-wrap:wrap;gap:13px;color:#8f9096;font-size:.72rem;padding:12px}
.drawer-meta span{width:100%}

.bottom-nav{position:fixed;left:0;right:0;bottom:0;z-index:45;height:calc(66px + var(--safe-bottom));padding-bottom:var(--safe-bottom);display:grid;grid-template-columns:repeat(4,1fr);background:rgba(13,13,15,.98);border-top:1px solid #29292d}
.bottom-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#85868c;font-size:.64rem;font-weight:650}
.bottom-nav svg{width:22px;height:22px}
.bottom-nav a.active{color:#fff}
.bottom-nav a.active svg{color:#e00000}

hr{border:0;border-top:1px solid var(--line);margin:16px 0}
.mt-0{margin-top:0}.mt-10{margin-top:10px}.mt-14{margin-top:14px}.mt-18{margin-top:18px}.mb-0{margin-bottom:0}
.small{font-size:.78rem}.muted{color:var(--muted)}
.hide-mobile{display:none}

@media(min-width:700px){
  .app-main{padding-left:22px;padding-right:22px}
  .grid.two{grid-template-columns:repeat(2,1fr)}
  .grid.three{grid-template-columns:repeat(3,1fr)}
  .quick-grid{grid-template-columns:repeat(4,1fr)}
  .filter-grid{grid-template-columns:repeat(4,1fr)}
  .form-group.full{grid-column:auto}
  .filter-actions{grid-column:auto;align-items:end}
  .venue-card{grid-template-columns:135px minmax(0,1fr)}
  .hide-mobile{display:initial}
}

@media(min-width:1050px){
  .bottom-nav{left:50%;right:auto;transform:translateX(-50%);width:520px;border-radius:19px 19px 0 0}
  .app-main{padding-bottom:45px}
}

/* v1.0.1 refinements */
.hero-actions{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  width:min(100%,360px);
}
.hero-actions .btn{width:100%;min-width:0}

/* Keep featured venue cards visually consistent. */
.venue-card{height:194px}
.venue-info{min-width:0;display:flex;flex-direction:column;height:100%;overflow:hidden}
.venue-title-clamp,
.venue-location-clamp{
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.venue-description-clamp{
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:4;
  line-clamp:4;
  overflow:hidden;
}
.venue-card .rating-line{
  margin-top:auto;
  white-space:nowrap;
  overflow:hidden;
  min-height:25px;
}
.venue-card .rating-line span:last-child{
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Inactive bottom navigation should remain clearly visible. */
.bottom-nav a{color:rgba(255,255,255,.82)}
.bottom-nav a svg{color:rgba(255,255,255,.82)}
.bottom-nav a.active{color:#fff}
.bottom-nav a.active svg{color:#e00000}

/* Drawer branding sits directly on the dark panel; the alternate logo has white title lettering. */
.drawer-brand{padding:8px 4px 17px;background:transparent;border-radius:0;margin-bottom:8px}
.drawer-brand img{height:48px}

/* Installed PWA: keep the header controls comfortably centred below the device status area. */
@media (display-mode: standalone){
  .topbar{padding-top:max(var(--safe-top),8px)}
  .topbar-inner{height:68px;align-items:center}
}

/* v1.0.2 refinements */
.hero-actions .btn{
  text-align:center;
  line-height:1.08;
}

/* Keep the three top-bar items on one true horizontal centre line. */
.topbar-inner{
  grid-template-columns:46px minmax(0,1fr) 46px;
  grid-template-rows:1fr;
  justify-items:center;
}
.topbar-inner > .icon-btn:first-child{
  grid-column:1;
  grid-row:1;
  justify-self:center;
  align-self:center;
}
.topbar-inner .brand{
  grid-column:2;
  grid-row:1;
  width:100%;
  justify-self:center;
  align-self:center;
}
.topbar-inner .install-trigger,
.topbar-inner .install-placeholder{
  grid-column:3;
  grid-row:1;
  justify-self:center;
  align-self:center;
}


/* v1.0.3 refinements */
/* Header: brand/title on the left, menu on the right. */
.topbar-inner{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  padding:0 12px;
}
.topbar-left{
  min-width:0;
  flex:1 1 auto;
  display:flex;
  align-items:center;
  gap:7px;
}
.topbar-left .brand{
  min-width:0;
  flex:1 1 auto;
  justify-content:flex-start;
}
.topbar-left .brand img{
  width:min(100%,430px);
  max-width:100%;
  height:42px;
  object-position:left center;
}
.topbar-back{
  flex:0 0 38px;
  width:38px;
  height:38px;
  padding:8px;
}
.topbar-menu{
  flex:0 0 42px;
}

/* Drawer now enters from the right-hand side. */
.drawer-panel{
  left:auto;
  right:0;
  transform:translateX(102%);
}
.drawer.open .drawer-panel{transform:translateX(0)}
.drawer-nav a.active{box-shadow:inset -3px 0 0 var(--red)}




/* v1.0.4 — installation lives in the slide-out menu */
.drawer-install[hidden],
.install-modal[hidden]{display:none !important}

.drawer-install{
  margin:15px 0 3px;
  padding-top:14px;
  border-top:1px solid #2b2b30;
}
.drawer-install-btn{
  width:100%;
  border:1px solid #35353b;
  border-radius:12px;
  background:#202024;
  color:#fff;
  display:flex;
  align-items:center;
  gap:11px;
  padding:12px;
  text-align:left;
  cursor:pointer;
  font:inherit;
}
.drawer-install-btn:hover,
.drawer-install-btn:focus{
  background:#29292e;
  border-color:#45454b;
}
.drawer-install-icon{
  flex:0 0 38px;
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-radius:10px;
  background:var(--red);
}
.drawer-install-icon svg{
  width:21px;
  height:21px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.9;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.drawer-install-copy{min-width:0;display:grid;gap:2px}
.drawer-install-copy strong{font-size:.88rem;line-height:1.15}
.drawer-install-copy small{font-size:.7rem;line-height:1.25;color:#aaaab0}
html.is-standalone .drawer-install{display:none !important}
@media(display-mode:standalone){.drawer-install{display:none !important}}

.install-modal{
  position:fixed;
  inset:0;
  z-index:1200;
  display:grid;
  place-items:center;
  padding:20px;
}
.install-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.72);
  backdrop-filter:blur(3px);
}
.install-modal-panel{
  position:relative;
  z-index:1;
  width:min(100%,390px);
  border:1px solid #303036;
  border-radius:18px;
  background:#171719;
  color:#fff;
  padding:22px;
  box-shadow:0 24px 70px rgba(0,0,0,.48);
}
.install-modal-close{
  position:absolute;
  top:10px;
  right:12px;
  width:34px;
  height:34px;
  border:0;
  border-radius:50%;
  background:#28282d;
  color:#fff;
  font-size:1.45rem;
  line-height:1;
  cursor:pointer;
}
.install-modal-app-icon{
  width:62px;
  height:62px;
  border-radius:15px;
  overflow:hidden;
  background:#fff;
  margin-bottom:14px;
}
.install-modal-app-icon img{width:100%;height:100%;object-fit:cover}
.install-modal-panel h2{font-size:1.12rem;line-height:1.3;margin:0 38px 12px 0}
.install-modal-text{display:grid;gap:7px;color:#d1d1d6;font-size:.83rem;line-height:1.48}
.install-modal-text p{margin:0}
.install-modal-done{width:100%;margin-top:18px}

/* v1.0.5 — venue browser */
.venue-location-notice{margin-bottom:14px}
.venue-pagination{
  display:grid;
  grid-template-columns:1fr auto 1fr;
  align-items:center;
  gap:10px;
  margin:18px 0 4px;
}
.venue-pagination > :first-child{justify-self:start}
.venue-pagination > :last-child{justify-self:end}
.venue-page-status{text-align:center;font-size:.78rem;font-weight:800;color:#3d4045;white-space:nowrap}
.venue-page-status small{display:block;margin-top:2px;color:var(--muted);font-size:.67rem;font-weight:600}
@media(min-width:700px){
  .venue-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
  .venue-filter-grid .filter-actions{grid-column:1/-1}
}

/* v1.0.6 — venue distance and card separation */
.venue-location-clamp{
  color:#3e4147!important;
  font-weight:750;
  padding-bottom:7px;
  margin-bottom:1px!important;
  border-bottom:1px solid var(--line);
}
.venue-description-clamp{margin-top:7px!important}
.venue-card-footer{
  width:100%;
  justify-content:space-between;
  gap:8px;
}
.rating-summary{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:0;
  overflow:hidden;
  white-space:nowrap;
}
.rating-summary > span:last-child{
  overflow:hidden;
  text-overflow:ellipsis;
}
.distance-badge{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  min-height:25px;
  padding:4px 8px;
  border-radius:8px;
  background:#f1f2f4;
  color:#373a40;
  border:1px solid #dfe1e5;
  font-size:.72rem;
  font-weight:800;
  white-space:nowrap;
}
.distance-badge[hidden]{display:none!important}
.venue-locating{
  min-height:96px;
  padding:18px;
  display:flex;
  align-items:center;
  gap:13px;
  color:#33363b;
}
.venue-locating strong{display:block;font-size:.9rem}
.venue-locating small{display:block;margin-top:4px;color:var(--muted);font-size:.76rem}
.venue-locating-spinner{
  width:25px;
  height:25px;
  flex:0 0 25px;
  border:3px solid #e0e1e5;
  border-top-color:var(--red);
  border-radius:50%;
  animation:nep-spin .75s linear infinite;
}
@keyframes nep-spin{to{transform:rotate(360deg)}}

/* v1.0.7 — in-app venue and tournament ratings */
.rating-form-wrap{
  margin-top:16px;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.rating-form-wrap h3{
  margin:0 0 4px;
  font-size:1rem;
}
.rating-form-grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
  margin-top:13px;
}
.rating-form-grid .full{grid-column:1/-1}
.rating-form-grid textarea{min-height:88px;resize:vertical}
.rating-message{
  margin-bottom:14px;
  padding:11px 12px;
  border-radius:12px;
  font-size:.82rem;
  font-weight:700;
  line-height:1.4;
}
.rating-message.success{
  background:#eaf7ef;
  color:#166534;
  border:1px solid #b9dfc5;
}
.rating-message.error-msg{
  background:#fff0f0;
  color:#8a1111;
  border:1px solid #efc0c0;
}
.already-rated{
  margin-top:15px;
  padding:11px 12px;
  border-radius:12px;
  background:#f3f3f5;
  color:#45484f;
  font-size:.8rem;
  font-weight:750;
}
@media (max-width:390px){
  .rating-form-grid{grid-template-columns:1fr}
  .rating-form-grid .full{grid-column:auto}
}

/* v1.0.8 — compact 1–5 rating sliders */
.rating-slider-group{gap:7px}
.rating-slider-control{display:grid;grid-template-columns:minmax(0,1fr) 48px;align-items:center;gap:10px}
.rating-slider{
  min-height:26px;
  height:26px;
  padding:0;
  border:0;
  box-shadow:none;
  background:transparent;
  accent-color:var(--red);
  cursor:pointer;
}
.rating-slider:focus{border:0;box-shadow:none}
.rating-slider-value{
  display:grid;
  place-items:center;
  min-height:34px;
  padding:4px 7px;
  border-radius:10px;
  background:#111114;
  color:#fff;
  font-size:.8rem;
  font-weight:850;
}
.rating-slider-scale{display:flex;justify-content:space-between;padding-right:58px;margin-top:-5px;color:var(--muted);font-size:.66rem;font-weight:700}

/* v1.0.9 — review pagination + calendar date filter */
.review-pagination{margin-top:14px}
.review-pagination .btn-sm{padding:8px 11px;font-size:.76rem}


/* v1.0.10 — calendar filter layout */
.calendar-date-field{grid-column:1/-1}
@media(min-width:700px){
  .calendar-date-field{grid-column:span 2!important}
}


/* v1.0.11 — keep tournament metadata compact */
.tournament-card .tournament-venue.one-line{max-width:100%}


/* v1.0.12 — consistent top-left navigation control */
.topbar-home{
  flex:0 0 38px;
  width:38px;
  height:38px;
  padding:8px;
  background:#e9eaed;
  color:#686b71;
  cursor:default;
  pointer-events:none;
}
.topbar-home svg{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}


/* v1.0.13 — highlight today's calendar games + menu disclaimer */
.today-tournament-card{
  background:#eef8f1;
  border-color:#cfe5d5;
}
.today-tournament-card .tournament-stats{border-top-color:#cfe5d5}
.today-tournament-card .stat{border-right-color:#cfe5d5}
.drawer-disclaimer{
  margin:12px 4px 0;
  padding:11px 12px;
  border-radius:11px;
  background:#1b1b1f;
  border:1px solid #2d2d32;
  color:#a8a8ae;
  font-size:.7rem;
  line-height:1.45;
}


/* v1.0.17 — sharp branded splash held briefly before app reveal */
.app-splash{
  position:fixed;
  inset:0;
  z-index:9999;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:#111114;
  opacity:1;
  visibility:visible;
  transition:opacity .22s ease,visibility .22s ease;
  animation:nep-splash-failsafe .25s ease 4.8s forwards;
}
.app-splash-art{
  width:min(96vw,1000px);
  max-width:1000px;
  margin:0 auto;
  transform:none;
  filter:none;
  opacity:1;
  animation:none;
}
.app-splash-art img{
  width:100%;
  height:auto;
  display:block;
  filter:none;
  transform:none;
  opacity:1;
}
.app-splash.is-hidden{
  animation:none;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
}
.skip-splash .app-splash{display:none!important}
@keyframes nep-splash-failsafe{
  to{opacity:0;visibility:hidden;pointer-events:none}
}
@media (prefers-reduced-motion:reduce){
  .app-splash{transition:none}
}

/* v1.0.21 — simple venue gallery */
.venue-gallery-card{
  padding:12px;
}
.venue-gallery-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.venue-gallery-item{
  position:relative;
  display:block;
  width:100%;
  min-width:0;
  aspect-ratio:4 / 3;
  padding:0;
  border:0;
  border-radius:10px;
  overflow:hidden;
  background:#ececef;
  cursor:pointer;
}
.venue-gallery-item img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  object-position:center;
  border:0;
  transform:none;
}
@media(min-width:700px){
  .venue-gallery-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:10px;
  }
}

.venue-lightbox[hidden]{display:none!important}
.venue-lightbox{
  position:fixed;
  inset:0;
  z-index:160;
  display:grid;
  place-items:center;
  padding:max(18px,var(--safe-top)) 14px max(18px,var(--safe-bottom));
}
.venue-lightbox-backdrop{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  margin:0;
  padding:0;
  border:0;
  border-radius:0;
  background:rgba(0,0,0,.88);
}
.venue-lightbox-panel{
  position:relative;
  z-index:1;
  display:flex;
  align-items:center;
  justify-content:center;
  max-width:94vw;
  max-height:88vh;
}
.venue-lightbox-panel > img{
  display:block;
  width:auto;
  height:auto;
  max-width:94vw;
  max-height:86vh;
  object-fit:contain;
  border-radius:10px;
  box-shadow:0 14px 44px rgba(0,0,0,.45);
  background:#111;
}
.venue-lightbox-close{
  position:absolute;
  z-index:2;
  top:-14px;
  right:-14px;
  width:38px;
  height:38px;
  display:grid;
  place-items:center;
  padding:0;
  border:1px solid rgba(255,255,255,.3);
  border-radius:50%;
  background:#19191d;
  color:#fff;
  font-size:1.55rem;
  line-height:1;
  cursor:pointer;
}
body.venue-lightbox-open{overflow:hidden}
