:root{
  --navy:#0b1f3a;
  --navy-2:#122c4f;
  --ink:#1b2a41;
  --muted:#5b6b82;
  --line:#e6ebf2;
  --bg:#f6f8fb;
  --card:#ffffff;
  --sun:#f7a325;
  --sun-deep:#e8890c;
  --sun-soft:#fff3df;
  --accent:#1266d8;
  --accent-soft:#e8f1fd;
  --green:#0f9d58;
  --radius:14px;
  --shadow:0 1px 2px rgba(11,31,58,.06),0 8px 24px -12px rgba(11,31,58,.12);
  --shadow-hover:0 2px 4px rgba(11,31,58,.08),0 16px 32px -12px rgba(11,31,58,.18);
  --font:'Inter','Segoe UI',system-ui,-apple-system,sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--font);background:var(--bg);color:var(--ink);line-height:1.55;-webkit-font-smoothing:antialiased}
.container{max-width:1240px;margin:0 auto;padding:0 20px}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.topbar-inner{display:flex;align-items:center;gap:18px;height:64px}
.brand{display:flex;align-items:center;gap:9px;flex-shrink:0}
.brand-mark{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--sun),var(--sun-deep));color:#fff;display:flex;align-items:center;justify-content:center;font-size:19px;box-shadow:0 4px 10px -2px rgba(232,137,12,.45)}
.brand-text{font-size:21px;font-weight:500;letter-spacing:-.4px;color:var(--navy)}
.brand-text b{font-weight:800;color:var(--sun-deep)}
.searchwrap{flex:1;display:flex;align-items:center;gap:10px;max-width:560px;background:var(--bg);border:1.5px solid var(--line);border-radius:999px;padding:9px 16px;transition:border-color .15s, box-shadow .15s}
.searchwrap:focus-within{border-color:var(--sun);box-shadow:0 0 0 4px rgba(247,163,37,.15);background:#fff}
.search-ico{width:17px;height:17px;color:var(--muted);flex-shrink:0}
.searchwrap input{flex:1;border:0;outline:0;background:transparent;font-size:14.5px;font-family:inherit;color:var(--ink)}
.searchwrap kbd{font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:1px 7px;background:#fff}
.submit-btn{flex-shrink:0;background:var(--navy);color:#fff;font-size:13.5px;font-weight:600;padding:10px 18px;border-radius:999px;transition:background .15s,transform .15s}
.submit-btn:hover{background:var(--navy-2);transform:translateY(-1px)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;background:linear-gradient(160deg,var(--navy) 0%,var(--navy-2) 55%,#1b3f6e 100%);color:#fff;padding:52px 0 58px;text-align:center}
.hero h1{font-size:clamp(28px,4.5vw,44px);font-weight:800;letter-spacing:-1px}
.hero-sub{margin-top:10px;font-size:clamp(14px,2vw,17px);color:#b9c8dd;max-width:640px;margin-left:auto;margin-right:auto}
.hero-sun{position:absolute;right:-120px;top:-140px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(247,163,37,.5),rgba(247,163,37,0) 65%);pointer-events:none}
.hero-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:10px 34px;margin-top:28px}
.hstat{display:flex;flex-direction:column;align-items:center;min-width:86px}
.hstat b{font-size:26px;font-weight:800;color:var(--sun)}
.hstat span{font-size:12px;color:#9fb2cc;text-transform:uppercase;letter-spacing:.8px}

/* ---------- category nav ---------- */
.catnav{position:sticky;top:64px;z-index:40;background:#fff;border-bottom:1px solid var(--line)}
.catnav-inner{display:flex;gap:6px;overflow-x:auto;padding:10px 20px;scrollbar-width:none}
.catnav-inner::-webkit-scrollbar{display:none}
.cat-chip{display:flex;align-items:center;gap:7px;white-space:nowrap;border:1.5px solid var(--line);background:#fff;color:var(--ink);font-size:13.5px;font-weight:600;padding:8px 15px;border-radius:999px;transition:all .15s}
.cat-chip .cnt{font-size:11px;font-weight:700;background:var(--bg);color:var(--muted);border-radius:999px;padding:1px 7px}
.cat-chip:hover{border-color:var(--sun);background:var(--sun-soft)}
.cat-chip.active{background:var(--navy);border-color:var(--navy);color:#fff}
.cat-chip.active .cnt{background:rgba(255,255,255,.18);color:#ffd9a0}

/* ---------- layout ---------- */
.layout{display:grid;grid-template-columns:252px 1fr;gap:26px;padding-top:26px;padding-bottom:60px;align-items:start}

/* ---------- filters ---------- */
.filters{position:sticky;top:132px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;max-height:calc(100vh - 150px);overflow-y:auto}
.filters-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}
.filters-head h3{font-size:15px;font-weight:700}
.clear-btn{border:0;background:none;color:var(--accent);font-size:12.5px;font-weight:600}
.clear-btn:hover{text-decoration:underline}
.filter-group{border-top:1px solid var(--line);padding:14px 0 4px;margin-top:10px}
.filter-group h4{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px}
.filter-options{display:flex;flex-direction:column;gap:2px}
.filter-options.scrolly{max-height:210px;overflow-y:auto}
.fopt{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:8px;font-size:13.5px;color:var(--ink);transition:background .12s;cursor:pointer;user-select:none}
.fopt:hover{background:var(--bg)}
.fopt input{accent-color:var(--sun-deep);width:15px;height:15px;cursor:pointer}
.fopt .n{margin-left:auto;font-size:11.5px;color:var(--muted)}
.fopt .flag{font-size:15px}
.country-search{width:100%;border:1.5px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13px;font-family:inherit;margin-bottom:8px;outline:0}
.country-search:focus{border-color:var(--sun)}

/* ---------- results ---------- */
.results-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
#resultCount{font-size:14px;color:var(--muted)}
#resultCount b{color:var(--ink)}
.results-actions{display:flex;gap:10px;align-items:center}
#sortSelect{border:1.5px solid var(--line);background:#fff;border-radius:9px;padding:8px 12px;font-size:13px;font-family:inherit;color:var(--ink);outline:0;cursor:pointer}
.mobile-filters-btn{display:none;border:1.5px solid var(--line);background:#fff;border-radius:9px;padding:8px 14px;font-size:13px;font-weight:600}
.active-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.achip{display:flex;align-items:center;gap:6px;background:var(--accent-soft);color:var(--accent);font-size:12.5px;font-weight:600;border-radius:999px;padding:5px 11px;border:0}
.achip:hover{background:#d8e8fc}
.achip span{font-size:14px;line-height:1}

/* ---------- cards ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(285px,1fr));gap:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow);transition:transform .16s, box-shadow .16s, border-color .16s;position:relative}
.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-hover);border-color:#d8e0ea}
.card-top{display:flex;align-items:flex-start;gap:12px}
.avatar{width:44px;height:44px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;color:#fff;flex-shrink:0;letter-spacing:-.5px;position:relative;overflow:hidden}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;padding:7px;background:#fff;border-radius:11px}
.avatar.avatar-lg{width:72px;height:72px;border-radius:16px;font-size:26px}
.avatar.avatar-lg img{padding:12px;border-radius:16px}
.card-id h3{font-size:15.5px;font-weight:700;line-height:1.3;letter-spacing:-.2px}
.card-id h3 a:hover{color:var(--accent)}
.card-loc{font-size:12.5px;color:var(--muted);display:flex;align-items:center;gap:5px;margin-top:2px}
.badge{position:absolute;top:14px;right:14px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:3px 9px;border-radius:999px}
.card-desc{font-size:13px;color:var(--muted);line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.card-meta{display:flex;flex-wrap:wrap;gap:6px}
.tag{font-size:11px;font-weight:600;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:2px 8px}
.tag.hl{color:var(--sun-deep);background:var(--sun-soft);border-color:#fce3bb}
.card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:11px}
.card-date{font-size:12.5px;font-weight:600;color:var(--green)}
.visit{font-size:13px;font-weight:700;color:var(--accent);display:flex;align-items:center;gap:5px}
.visit:hover{gap:8px}
.visit svg{width:13px;height:13px;transition:transform .15s}

/* subcategory badge palettes */
.b-amber{background:var(--sun-soft);color:var(--sun-deep)}
.b-blue{background:var(--accent-soft);color:var(--accent)}
.b-green{background:#e7f6ee;color:var(--green)}
.b-purple{background:#f1eafd;color:#7c3aed}
.b-rose{background:#fdeaef;color:#d6336c}
.b-teal{background:#e0f5f5;color:#0d9488}
.b-slate{background:#eef1f5;color:#52627a}

/* ---------- empty & load more ---------- */
.empty{text-align:center;padding:70px 0;color:var(--muted)}
.empty-sun{font-size:44px;margin-bottom:10px}
.empty p{margin-bottom:14px;font-size:15px}
.load-more-wrap{text-align:center;margin-top:26px}
.load-more{background:#fff;border:1.5px solid var(--line);border-radius:999px;padding:11px 32px;font-size:14px;font-weight:700;color:var(--navy);transition:all .15s}
.load-more:hover{border-color:var(--sun);background:var(--sun-soft)}

/* ---------- footer ---------- */
.footer{background:var(--navy);color:#b9c8dd;margin-top:20px}
.footer-inner{display:flex;justify-content:space-between;gap:30px;padding:38px 20px 20px;flex-wrap:wrap}
.footer .brand-text{color:#fff}
.footer p{font-size:13px;max-width:380px;margin-top:8px}
.footer-links{display:flex;flex-direction:column;gap:8px;font-size:13.5px}
.footer-links a:hover{color:var(--sun)}
.disclaimer{border-top:1px solid rgba(255,255,255,.12);padding:14px 20px 22px;font-size:12px;color:#7e92af}

/* ---------- detail pages ---------- */
.detail{display:block;max-width:860px;padding-top:26px;padding-bottom:60px}
.crumbs{font-size:13px;color:var(--muted);margin-bottom:14px}
.crumbs a{color:var(--accent)}
.crumbs a:hover{text-decoration:underline}
.detail-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:28px;position:relative}
.detail-head{display:flex;align-items:center;gap:18px;margin-bottom:18px;padding-right:120px}
.detail-head h1{font-size:clamp(20px,3.4vw,30px);font-weight:800;letter-spacing:-.6px;line-height:1.2}
.detail-card .badge{top:24px;right:24px}
.detail-desc{font-size:15.5px;line-height:1.7;color:var(--ink);margin-bottom:20px}
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin-bottom:16px}
.fact dt{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.7px}
.fact dd{font-size:14px;font-weight:600;margin-top:2px}
.fact dd a{color:var(--accent)}
.fact dd a:hover{text-decoration:underline}
.detail-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.btn-visit{background:var(--navy);color:#fff;font-size:14px;font-weight:700;padding:11px 22px;border-radius:999px;transition:background .15s,transform .15s}
.btn-visit:hover{background:var(--navy-2);transform:translateY(-1px)}
.btn-edit{border:1.5px solid var(--line);color:var(--muted);font-size:13.5px;font-weight:600;padding:11px 18px;border-radius:999px}
.btn-edit:hover{border-color:var(--sun);color:var(--sun-deep)}
.related{margin-top:28px}
.related h2{font-size:16px;font-weight:700;margin-bottom:12px}
.rel-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.rel{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:2px;transition:border-color .15s,transform .15s}
.rel:hover{border-color:var(--sun);transform:translateY(-2px)}
.rel b{font-size:13.5px;font-weight:700}
.rel span{font-size:12px;color:var(--muted)}
.footer .disclaimer a{color:var(--sun)}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .layout{grid-template-columns:1fr}
  .filters{position:fixed;inset:auto 0 0 0;top:auto;z-index:100;border-radius:18px 18px 0 0;max-height:72vh;transform:translateY(105%);transition:transform .25s ease;box-shadow:0 -10px 40px rgba(11,31,58,.25)}
  .filters.open{transform:translateY(0)}
  .mobile-filters-btn{display:block}
  .searchwrap kbd{display:none}
  .topbar-inner{gap:10px}
  .submit-btn{padding:9px 13px;font-size:12.5px}
  .hero{padding:38px 0 42px}
  .catnav{top:64px}
}
@media (max-width:560px){
  .brand-text{display:none}
  .grid{grid-template-columns:1fr}
  .hero-stats{gap:8px 20px}
  .hstat b{font-size:21px}
}

/* ---------- v1.0.0: hubs, prose pages, browse, past events ---------- */
.prose{max-width:860px;padding-top:28px;padding-bottom:40px;line-height:1.65}
.prose h1{font-size:30px;margin:6px 0 14px}
.prose h1 small,.prose h2 small{font-weight:500;color:#7e92af;font-size:.6em}
.prose h2{font-size:20px;margin:26px 0 8px}
.prose ul{padding-left:20px}
.prose li{margin:6px 0}
.prose a{color:#1266d8}
.prose code{background:#eef2f8;padding:1px 5px;border-radius:4px}
.hub.prose{max-width:1100px}
.hub-list{list-style:none;padding:0;columns:3 260px;column-gap:24px}
.hub-list li{break-inside:avoid;margin:4px 0}
.hub-list span{color:#7e92af;font-size:12.5px;margin-left:4px}
.browse{padding:26px 20px 6px}
.browse h2{font-size:20px;margin-bottom:12px}
.browse-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.browse-grid a{display:flex;flex-direction:column;border:1px solid #e2e8f0;border-radius:10px;padding:12px 14px;background:#fff}
.browse-grid a:hover{border-color:#f7a325}
.browse-grid span{font-size:12.5px;color:#7e92af}
.footer-cats a,.footer .disclaimer a{color:var(--sun,#f7a325)}
.tag.past{background:#fde8e8;color:#a61e4d}
.newsletter{padding:20px}
/* v1.0.0 fixes: card badge no longer covers the name; mobile header fits */
.card-top{padding-right:0}
.card .badge{position:static;display:inline-block;align-self:flex-start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media (max-width:560px){
  .topbar-inner{gap:8px}
  .searchwrap kbd{display:none}
  .submit-btn{padding:8px 11px;font-size:0}
  .submit-btn::before{content:"+ Submit";font-size:12px}
}
.searchwrap,.searchwrap input{min-width:0}
@media (max-width:560px){.searchwrap{padding:8px 12px}.searchwrap input{font-size:14px}}
