/* ══════════════════════════════════════════════════════════════
   myLokaal Events — Discover design system
   Brand: teal (the events favicon's Africa-map color) / orange
   #f98603 / gold-deep #a85a02 / peach #ffe4ca. Teal is this
   product's own primary — mylokaal.com's navy is kept only as an
   accent value below, not the main color.
   The favicon's #0d9488 is mid-brightness, so it fails AA contrast
   used directly as either body text on light backgrounds or a
   background behind light text — hence three teal tokens instead
   of one: --teal is the true favicon swatch (decorative/large-text
   use only), --teal-text is a darker AA-safe shade for text/icons
   on light backgrounds, --teal-d is a near-black shade for solid
   chrome surfaces (nav, hero, footer, toasts) carrying light text.
   Mobile-first, card-based, no framework.
   ══════════════════════════════════════════════════════════════ */

:root{
  --teal:#0d9488; --teal-text:#0f766e; --teal-d:#042f2e;
  --navy:#0e1733; --navy-l:#182449; --navy-d:#080d1c;
  --orange:#f98603; --gold-d:#a85a02; --peach:#ffe4ca;
  --ink:#0f172a; --muted:#64748b; --muted-d:#475569; --line:#e6e9f2;
  --bg:#f7f8fc; --white:#fff;
  --green:#0f9d58; --red:#dc2626;
  --radius:16px; --radius-sm:10px; --radius-lg:22px;
  --shadow:0 1px 2px rgba(15,23,42,.04), 0 8px 24px rgba(15,23,42,.06);
  --shadow-lg:0 12px 32px rgba(4,47,46,.12);
  --font-display:'Fraunces', Georgia, serif;
  --font-body:'Hanken Grotesk', system-ui, -apple-system, sans-serif;
  --font-mono:'IBM Plex Mono', monospace;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{margin:0; font-family:var(--font-body); color:var(--ink); background:var(--bg); -webkit-font-smoothing:antialiased;}
img{max-width:100%; display:block;}
a{color:inherit; text-decoration:none;}
button{font-family:inherit; cursor:pointer;}
.dv-container{max-width:1180px; margin:0 auto; padding:0 20px;}

h1,h2,h3,h4{font-family:var(--font-display); font-weight:600; margin:0 0 .5em; color:var(--teal-text);}

/* ── Buttons ─────────────────────────────────────────────────── */
.dv-btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:12px 22px; border-radius:999px;
  font-weight:600; font-size:.92rem; border:1.5px solid transparent; transition:.15s; white-space:nowrap;}
.dv-btn-primary{background:var(--orange); color:#fff;}
.dv-btn-primary:hover{background:var(--gold-d);}
.dv-btn-outline{background:transparent; border-color:var(--line); color:var(--teal-text);}
.dv-btn-outline:hover{border-color:var(--orange); color:var(--orange);}
.dv-btn-outline-w{background:transparent; border-color:rgba(255,255,255,.5); color:#fff;}
.dv-btn-outline-w:hover{border-color:#fff;}
.dv-btn-white{background:#fff; color:var(--teal-text);}
.dv-btn-white:hover{background:var(--peach);}
.dv-btn-sm{padding:8px 16px; font-size:.82rem;}
.dv-btn-lg{padding:15px 28px; font-size:1rem;}
.dv-btn:disabled{opacity:.6; cursor:not-allowed;}

/* ── Nav ─────────────────────────────────────────────────────── */
.dv-nav{position:sticky; top:0; z-index:100; background:rgba(4,47,46,.96); backdrop-filter:blur(8px);}
.dv-nav-inner{display:flex; align-items:center; gap:24px; height:68px;}
.dv-logo{display:flex; align-items:center; gap:0; flex-shrink:0; background:rgba(255,255,255,.06); border-radius:999px; padding:5px 16px 5px 5px;}
.dv-logo-mark{width:34px; height:34px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; flex-shrink:0; box-shadow:0 2px 6px rgba(0,0,0,.2);}
.dv-logo-mark img{height:24px; width:24px; object-fit:contain;}
.dv-logo-badge{font-family:var(--font-display); font-weight:700; font-size:1.05rem; color:#fff; letter-spacing:.2px; margin-left:10px;}
.dv-nav-links{list-style:none; display:flex; gap:6px; margin:0; padding:0; flex:1;}
.dv-nav-links a{padding:9px 14px; border-radius:999px; color:#c9d0e8; font-weight:600; font-size:.9rem;}
.dv-nav-links a:hover,.dv-nav-links a.act{color:#fff; background:rgba(255,255,255,.08);}
.dv-nav-acts{display:flex; align-items:center; gap:10px;}
.dv-back-link{color:#c9d0e8; font-size:.85rem; font-weight:600; display:flex; align-items:center; gap:6px;}
.dv-back-link:hover{color:#fff;}
.dv-nav-search-btn{background:none; border:0; width:36px; height:36px; border-radius:999px; color:#c9d0e8; font-size:.95rem; display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.dv-nav-search-btn:hover,.dv-nav-search-btn[aria-expanded="true"]{color:#fff; background:rgba(255,255,255,.08);}
.dv-nav-search-panel{background:var(--teal-d); border-top:1px solid rgba(255,255,255,.08); padding:16px 0;}
.dv-nav-search-form{display:flex; align-items:center; gap:10px; background:rgba(255,255,255,.08); border-radius:999px; padding:10px 18px;}
.dv-nav-search-form i{color:#8b93b8;}
.dv-nav-search-form input{flex:1; border:0; outline:0; background:transparent; color:#fff; font-family:inherit; font-size:.92rem; min-width:0;}
.dv-nav-search-form input::placeholder{color:#8b93b8;}
.dv-nav-search-form button{background:var(--orange); color:#fff; border:0; border-radius:999px; padding:8px 18px; font-weight:600; font-size:.85rem; flex-shrink:0;}
.dv-nav-search-results{max-height:60vh; overflow-y:auto; margin-top:8px;}
.dv-nav-search-results .dv-result-row{display:flex; align-items:center; gap:10px; padding:10px 8px; border-radius:10px; color:#e2e6f5;}
.dv-nav-search-results .dv-result-row:hover{background:rgba(255,255,255,.06);}
.dv-nav-search-results .dv-empty,.dv-nav-search-results .dv-loading{padding:24px 8px; color:#8b93b8;}
.dv-nav-search-results .dv-empty strong{color:#fff;}
.dv-nav-search-results .dv-result-type{background:rgba(255,255,255,.12); color:#fff;}
.dv-ham{display:none; background:none; border:0; width:36px; height:36px; flex-direction:column; align-items:center; justify-content:center; gap:4px;}
.dv-ham span{width:20px; height:2px; background:#fff; border-radius:2px;}
.dv-mob-menu{position:fixed; inset:0 0 0 auto; width:min(320px,86vw); background:var(--teal-d); z-index:200; transform:translateX(100%); transition:.25s; overflow-y:auto; padding:20px;}
.dv-mob-menu.open{transform:translateX(0);}
.dv-mob-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:18px;}
.dv-mob-menu a{display:flex; align-items:center; gap:10px; color:#e2e6f5; padding:13px 8px; font-weight:600; border-bottom:1px solid rgba(255,255,255,.08);}
.dv-mob-sect{color:#8b93b8; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.6px; margin:16px 8px 4px;}
.dv-mob-overlay{position:fixed; inset:0; background:rgba(8,13,28,.6); z-index:190; display:none;}
.dv-mob-overlay.open{display:block;}

/* ── Hero ────────────────────────────────────────────────────── */
.dv-hero{background:linear-gradient(160deg, var(--teal-d) 0%, var(--teal) 100%); color:#fff; padding:56px 0 64px; position:relative; overflow:hidden;}
.dv-hero::after{content:''; position:absolute; inset:0; background:radial-gradient(600px 300px at 85% 0%, rgba(249,134,3,.18), transparent 70%); pointer-events:none;}
.dv-hero-in{position:relative; z-index:1;}
.dv-breadcrumb{display:flex; align-items:center; gap:8px; font-size:.82rem; color:#a9b1d4; margin-bottom:18px;}
.dv-breadcrumb a{color:#a9b1d4;} .dv-breadcrumb a:hover{color:#fff;}
.dv-hero h1{color:#fff; font-size:clamp(1.8rem,4vw,2.7rem); line-height:1.15; margin-bottom:14px;}
.dv-em{color:var(--orange); font-style:italic;}
.dv-hero-sub{color:#c9d0e8; font-size:1.02rem; max-width:560px; line-height:1.6; margin-bottom:28px;}

/* ── Search bar ──────────────────────────────────────────────── */
.dv-search-box{background:#fff; border-radius:999px; padding:6px; display:flex; align-items:center; gap:8px; max-width:640px;
  box-shadow:var(--shadow-lg);}
.dv-search-box input{flex:1; border:0; outline:0; padding:12px 16px; font-size:.95rem; font-family:inherit; color:var(--ink); background:transparent; min-width:0;}
.dv-search-box .dv-search-city{flex:0 1 160px; border-left:1px solid var(--line); font-size:.88rem;}
.dv-search-box select{border:0; outline:0; padding:12px 10px; font-family:inherit; font-size:.88rem; color:var(--muted-d); background:transparent; border-left:1px solid var(--line);}
.dv-search-box button{background:var(--orange); color:#fff; border:0; border-radius:999px; padding:12px 22px; font-weight:700; flex-shrink:0;}

/* ── Section ─────────────────────────────────────────────────── */
.dv-section{padding:44px 0;}
.dv-sec-head{display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:22px; flex-wrap:wrap;}
.dv-sec-title{font-size:1.4rem; margin:0;}
.dv-sec-link{font-size:.86rem; font-weight:700; color:var(--orange); white-space:nowrap;}
.dv-sec-link:hover{color:var(--gold-d);}

/* ── Grids & Cards ───────────────────────────────────────────── */
.dv-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:20px;}
.dv-scroll-row{display:flex; gap:16px; overflow-x:auto; padding-bottom:8px; scrollbar-width:thin;}
.dv-scroll-row > *{flex:0 0 260px;}

.dv-card{background:#fff; border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); transition:.18s; display:flex; flex-direction:column;}
.dv-card:hover{transform:translateY(-3px); box-shadow:var(--shadow-lg);}
.dv-card-img{position:relative; aspect-ratio:16/10; background:var(--peach); overflow:hidden;}
.dv-card-img img{width:100%; height:100%; object-fit:cover;}
.dv-card-img-ph{width:100%; height:100%; display:flex; align-items:center; justify-content:center; color:var(--gold-d); font-size:1.8rem; background:linear-gradient(135deg,var(--peach),#fff);}
.dv-date-badge{position:absolute; top:10px; left:10px; background:#fff; border-radius:10px; padding:6px 9px; text-align:center; box-shadow:var(--shadow); line-height:1.1;}
.dv-date-badge .d{display:block; font-family:var(--font-display); font-weight:700; font-size:1.05rem; color:var(--teal-text);}
.dv-date-badge .m{display:block; font-size:.62rem; font-weight:700; text-transform:uppercase; color:var(--orange); letter-spacing:.4px;}
.dv-card-tag{position:absolute; top:10px; right:10px;}
.dv-card-body{padding:16px; display:flex; flex-direction:column; gap:6px; flex:1;}
.dv-card-cat{font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--orange);}
.dv-card-title{font-family:var(--font-display); font-weight:600; font-size:1.05rem; color:var(--teal-text); line-height:1.3;}
.dv-card-desc{font-size:.85rem; color:var(--muted); line-height:1.5; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;}
.dv-card-meta{display:flex; flex-direction:column; gap:3px; font-size:.8rem; color:var(--muted-d); margin-top:2px;}
.dv-meta-row{display:flex; align-items:center; gap:7px;}
.dv-meta-row i{color:var(--orange); width:14px; text-align:center; font-size:.78rem;}
.dv-card-foot{display:flex; align-items:center; justify-content:space-between; margin-top:auto; padding-top:10px;}
.dv-price{font-weight:700; font-size:.88rem; color:var(--teal-text);}
.dv-free-pill{background:#e7f8ef; color:var(--green); font-weight:700; padding:2px 9px; border-radius:999px; font-size:.76rem;}

.dv-lbl{display:inline-flex; align-items:center; gap:6px; font-size:.72rem; font-weight:700; text-transform:uppercase; letter-spacing:.5px; padding:5px 12px; border-radius:999px;}
.dv-lbl-verified{background:#e7f2ff; color:#1d4ed8;}
.dv-lbl-featured{background:var(--peach); color:var(--gold-d);}
.dv-lbl-w{background:rgba(255,255,255,.12); color:#fff;}
.dv-lbl-type{background:#eef1fb; color:var(--teal-text);}

/* ── Coverflow carousel (e.g. "Happening Today") ────────────────── */
/* Full-bleed: a direct child of .dv-section, not nested in .dv-container,
   so neighbouring cards have the whole viewport width to recede into
   (a narrower frame clips the previews before they're visible). */
.dv-coverflow{--cf-card:clamp(130px,16vw,220px); width:100%;}
.dv-cf-frame{position:relative; overflow:hidden; padding:28px 0; cursor:grab; outline:none; touch-action:pan-y;
  perspective:calc(var(--cf-card) * 3);}
.dv-cf-frame:active{cursor:grabbing;}
.dv-cf-frame:focus-visible{outline:2px solid var(--orange); outline-offset:4px;}
.dv-cf-track{position:relative; height:var(--cf-card); transform-style:preserve-3d; user-select:none;}
.dv-cf-card{position:absolute; left:50%; top:0; width:var(--cf-card); aspect-ratio:1/1; border-radius:var(--radius-lg);
  overflow:hidden; background:var(--peach); box-shadow:var(--shadow-lg); will-change:transform; display:block;}
.dv-cf-card img{width:100%; height:100%; object-fit:cover; user-select:none;}
.dv-cf-nav{position:absolute; top:50%; z-index:200; transform:translateY(-50%); width:38px; height:38px; border-radius:50%;
  background:#fff; box-shadow:var(--shadow); color:var(--teal-text); border:0; display:flex; align-items:center; justify-content:center;}
.dv-cf-nav:hover{background:var(--orange); color:#fff;}
.dv-cf-prev{left:4px;} .dv-cf-next{right:4px;}
.dv-cf-caption{margin-top:6px; display:flex; flex-direction:column; align-items:center; text-align:center; padding:0 20px;}
.dv-cf-title{font-family:var(--font-display); font-weight:600; font-size:1.15rem; color:var(--teal-text); margin:0;}
.dv-cf-subtitle{font-size:.78rem; font-weight:700; text-transform:uppercase; letter-spacing:.4px; color:var(--orange); margin:4px 0 0;}
.dv-cf-meta{margin:16px 0 0; width:100%; max-width:230px;}
.dv-cf-meta-row{display:flex; justify-content:space-between; padding:5px 0; font-size:.82rem;}
.dv-cf-meta-row dt{margin:0; color:var(--muted);}
.dv-cf-meta-row dd{margin:0; font-family:var(--font-mono); font-weight:600; color:var(--teal-text);}
.dv-cf-dots{display:flex; align-items:center; justify-content:center; flex-wrap:wrap; gap:8px; margin-top:18px; max-width:520px; margin-left:auto; margin-right:auto;}
.dv-cf-dot{width:8px; height:8px; padding:0; border-radius:50%; border:0; background:var(--line);}
.dv-cf-dot.act{background:var(--teal); width:20px; border-radius:5px;}
@media (max-width:560px){
  .dv-cf-nav{display:none;}
}

/* ── Filter bar ──────────────────────────────────────────────── */
.dv-filterbar{background:#fff; border-bottom:1px solid var(--line); position:sticky; top:68px; z-index:50;}
.dv-filterbar-in{display:flex; align-items:center; gap:10px; padding:14px 0; flex-wrap:wrap;}
.dv-cat-scroll{display:flex; gap:8px; overflow-x:auto; padding-bottom:2px; flex:1; min-width:0;}
.dv-cat-tab{flex-shrink:0; padding:8px 16px; border-radius:999px; border:1.5px solid var(--line); background:#fff; font-weight:600; font-size:.85rem; color:var(--muted-d); white-space:nowrap;}
.dv-cat-tab.act,.dv-cat-tab:hover{border-color:var(--orange); color:var(--orange); background:var(--peach);}
.dv-select{border:1.5px solid var(--line); border-radius:10px; padding:9px 12px; font-family:inherit; font-size:.85rem; color:var(--teal-text); background:#fff;}
.dv-count-badge{font-size:.8rem; color:var(--muted); font-weight:600; white-space:nowrap;}

/* ── Pagination ──────────────────────────────────────────────── */
.dv-pagination{display:flex; gap:6px; justify-content:center; margin-top:32px;}
.dv-page-link{width:38px; height:38px; display:flex; align-items:center; justify-content:center; border-radius:10px; border:1.5px solid var(--line); font-weight:600; color:var(--teal-text); font-size:.88rem;}
.dv-page-link.act{background:var(--teal-d); border-color:var(--teal-d); color:#fff;}
.dv-page-link.dis{opacity:.4; pointer-events:none;}

/* ── Empty / loading states ──────────────────────────────────── */
.dv-empty{grid-column:1/-1; text-align:center; padding:60px 20px; color:var(--muted);}
.dv-empty i{font-size:2.2rem; color:var(--peach); margin-bottom:14px; display:block;}
.dv-empty strong{display:block; color:var(--teal-text); font-size:1.05rem; margin-bottom:6px;}
.dv-empty a{color:var(--orange); font-weight:700;}
.dv-loading{grid-column:1/-1; text-align:center; padding:60px 20px; color:var(--muted);}
.dv-spinner{width:28px; height:28px; border:3px solid var(--line); border-top-color:var(--orange); border-radius:50%; margin:0 auto 14px; animation:dvspin .7s linear infinite;}
@keyframes dvspin{to{transform:rotate(360deg);}}

/* ── Detail layout ───────────────────────────────────────────── */
.dv-detail-hero{position:relative; height:360px; overflow:hidden;}
.dv-detail-hero img{width:100%; height:100%; object-fit:cover;}
.dv-detail-hero-ov{position:absolute; inset:0; background:linear-gradient(0deg, rgba(8,13,28,.75), transparent 60%);}
.dv-detail-hero-in{position:absolute; left:0; right:0; bottom:0; padding-bottom:20px;}
/* No real cover photo → a themed banner (per category_group) instead of
   a stretched logo/og-image. See category_banner_theme() in models.php. */
.dv-detail-hero-themed{display:flex; align-items:center;}
.dv-detail-hero-themed::before{content:''; position:absolute; inset:0; background:radial-gradient(480px 260px at 88% 15%, rgba(255,255,255,.10), transparent 70%);}
.dv-detail-hero-ico{position:absolute; right:-6%; top:50%; transform:translateY(-50%); font-size:min(280px,42vw); color:rgba(255,255,255,.10); line-height:1;}
.dv-detail-hero-themed .dv-detail-hero-ov{background:linear-gradient(0deg, rgba(8,13,28,.55), transparent 70%);}
.dv-detail-layout{display:grid; grid-template-columns:1fr 340px; gap:32px; padding:36px 0;}
.dv-info-card{background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:24px; align-self:start; position:sticky; top:88px;}
.dv-info-price{font-family:var(--font-display); font-size:1.6rem; font-weight:700; color:var(--teal-text);}
.dv-info-price.free{color:var(--green);}
.dv-info-list{margin:18px 0; display:flex; flex-direction:column; gap:14px;}
.dv-info-item{display:flex; gap:12px; align-items:flex-start;}
.dv-info-item .ic{width:34px; height:34px; border-radius:9px; background:var(--peach); color:var(--gold-d); display:flex; align-items:center; justify-content:center; flex-shrink:0;}
.dv-info-item strong{display:block; font-size:.9rem; color:var(--teal-text);}
.dv-info-item span{font-size:.8rem; color:var(--muted);}
.dv-share-row{display:flex; gap:8px; margin-top:18px;}
.dv-share-btn{width:36px; height:36px; border-radius:50%; border:1.5px solid var(--line); display:flex; align-items:center; justify-content:center; color:var(--teal-text);}
.dv-share-btn:hover{border-color:var(--orange); color:var(--orange);}
.dv-gate{max-width:480px; margin:70px auto; text-align:center; padding:0 20px;}
.dv-gate-ic{width:64px; height:64px; border-radius:18px; background:var(--peach); color:var(--gold-d); display:flex; align-items:center; justify-content:center; font-size:1.6rem; margin:0 auto 18px;}
.dv-body-txt{color:var(--muted-d); line-height:1.75; white-space:pre-line;}

/* ── Forms ───────────────────────────────────────────────────── */
.dv-form-layout{display:grid; grid-template-columns:1fr 300px; gap:28px; align-items:start;}
.dv-form-card,.dv-sidebar-card{background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:26px;}
.dv-sidebar-card{margin-bottom:18px;}
.dv-form-grid{display:flex; flex-direction:column; gap:16px;}
.dv-form-row{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.dv-field label{display:block; font-weight:700; font-size:.84rem; color:var(--teal-text); margin-bottom:6px;}
.dv-field .req{color:var(--red);}
.dv-field input,.dv-field select,.dv-field textarea{width:100%; padding:11px 13px; border:1.5px solid var(--line); border-radius:10px; font-family:inherit; font-size:.92rem; color:var(--ink); background:#fff;}
.dv-field input:focus,.dv-field select:focus,.dv-field textarea:focus{outline:0; border-color:var(--orange);}
.dv-hint{font-size:.76rem; color:var(--muted); margin:4px 0 0;}
.dv-check-row{display:flex; gap:10px; align-items:flex-start; font-size:.84rem; color:var(--muted-d);}
.dv-check-row a{color:var(--orange); font-weight:600;}
.dv-error-note{background:#fef2f2; color:var(--red); border-radius:10px; padding:12px 16px; font-size:.86rem; display:flex; gap:8px; align-items:flex-start;}
.dv-success{text-align:center; padding:20px 0;}
.dv-success-ic{width:64px; height:64px; border-radius:50%; background:#e7f8ef; color:var(--green); display:flex; align-items:center; justify-content:center; font-size:1.6rem; margin:0 auto 16px;}

/* ── Search results page ─────────────────────────────────────── */
.dv-search-group{margin-bottom:36px;}
.dv-search-group-title{font-size:1.1rem; margin-bottom:14px;}
.dv-result-row{display:flex; align-items:center; gap:14px; padding:14px; background:#fff; border-radius:12px; box-shadow:var(--shadow); margin-bottom:10px;}
.dv-result-type{flex-shrink:0;}
.dv-result-name{font-weight:700; color:var(--teal-text);}
.dv-result-sub{font-size:.8rem; color:var(--muted);}

/* ── Toast ───────────────────────────────────────────────────── */
.dv-toast-wrap{position:fixed; bottom:20px; left:50%; transform:translateX(-50%); z-index:400; display:flex; flex-direction:column; gap:8px; align-items:center;}
.dv-toast{background:var(--teal-d); color:#fff; padding:12px 20px; border-radius:999px; font-size:.86rem; font-weight:600; box-shadow:var(--shadow-lg); opacity:0; transform:translateY(10px); transition:.25s; display:flex; align-items:center; gap:8px;}
.dv-toast.show{opacity:1; transform:translateY(0);}
.dv-toast.coral{background:var(--red);}
.dv-toast.green{background:var(--green);}

/* ── Footer ──────────────────────────────────────────────────── */
.dv-footer{background:var(--teal-d); color:#c9d0e8; padding:48px 0 24px; margin-top:40px;}
.dv-ft-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:32px; margin-bottom:28px;}
.dv-ft-brand img{height:26px; margin-bottom:12px;}
.dv-ft-brand p{font-size:.84rem; line-height:1.6; color:#8b93b8; max-width:280px;}
.dv-ft-col h4{color:#fff; font-size:.88rem; margin-bottom:12px;}
.dv-ft-links{display:flex; flex-direction:column; gap:9px;}
.dv-ft-links a{font-size:.85rem; color:#a9b1d4;}
.dv-ft-links a:hover{color:#fff;}
.dv-ft-bottom{border-top:1px solid rgba(255,255,255,.08); padding-top:18px; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:8px 20px; font-size:.78rem; color:#748099;}
.dv-ft-bottom a:hover{text-decoration:underline;}
.dv-ft-legal{display:flex; gap:16px; flex-wrap:wrap;}
.dv-ft-legal a{font-size:.76rem; color:#748099;}
.dv-ft-legal a:hover{color:#fff;}

/* ── Category explore grid (homepage) ────────────────────────── */
.dv-cat-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:14px;}
.dv-cat-card{background:#fff; border-radius:14px; padding:20px 14px; text-align:center; box-shadow:var(--shadow); font-weight:700; color:var(--teal-text); font-size:.9rem;}
.dv-cat-card:hover{box-shadow:var(--shadow-lg); transform:translateY(-2px);}
.dv-cat-card .ico{width:44px; height:44px; border-radius:12px; background:var(--peach); color:var(--gold-d); display:flex; align-items:center; justify-content:center; margin:0 auto 10px; font-size:1.1rem;}

/* ── Experiences (photo + writeup on event/organization/place) ──── */
.dv-exp-form{background:#fff; border-radius:var(--radius); box-shadow:var(--shadow); padding:16px; margin-bottom:20px;}
.dv-exp-stars{display:flex; gap:4px; margin-bottom:10px; font-size:1.1rem; color:var(--peach);}
.dv-exp-stars i{cursor:pointer; color:#e2c799;}
.dv-exp-stars i.fa-solid{color:var(--gold-d);}
.dv-exp-form textarea{width:100%; border:1.5px solid var(--line); border-radius:12px; padding:12px 14px; font-family:inherit; font-size:.92rem; color:var(--ink); resize:vertical;}
.dv-exp-form-row{display:flex; align-items:center; justify-content:space-between; margin-top:10px; gap:10px;}
.dv-exp-photo-btn{display:inline-flex; align-items:center; gap:8px; color:var(--muted-d); font-weight:600; font-size:.85rem; cursor:pointer;}
.dv-exp-photo-btn:hover{color:var(--orange);}
.dv-exp-signin{display:flex; align-items:center; gap:10px; background:var(--peach); color:var(--gold-d); border-radius:12px; padding:14px 16px; margin-bottom:20px; font-size:.88rem; font-weight:600;}
.dv-exp-signin a{color:var(--gold-d); text-decoration:underline;}
.dv-exp-list{display:flex; flex-direction:column; gap:18px;}
.dv-exp-empty{color:var(--muted); font-size:.9rem; padding:8px 0;}
.dv-exp-item{display:flex; gap:12px;}
.dv-exp-avatar{flex-shrink:0; width:38px; height:38px; border-radius:50%; background:var(--teal-d); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.9rem;}
.dv-exp-body{flex:1; min-width:0;}
.dv-exp-head{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:4px;}
.dv-exp-head strong{font-size:.92rem; color:var(--teal-text);}
.dv-exp-rating{font-size:.72rem; color:var(--gold-d);}
.dv-exp-rating .dim{color:var(--line);}
.dv-exp-when{color:var(--muted); font-size:.78rem; margin-left:auto;}
.dv-exp-body p{margin:0 0 8px; font-size:.9rem; line-height:1.55; color:var(--muted-d);}
.dv-exp-photo{max-width:280px; width:100%; border-radius:12px; display:block;}

/* ── Responsive ──────────────────────────────────────────────── */
@media (max-width:900px){
  .dv-nav-links,.dv-back-link{display:none;}
  .dv-ham{display:flex;}
  .dv-detail-layout{grid-template-columns:1fr;}
  .dv-info-card{position:static;}
  .dv-form-layout{grid-template-columns:1fr;}
  .dv-ft-grid{grid-template-columns:1fr;}
  .dv-filterbar{top:0;}
}
@media (max-width:560px){
  .dv-form-row{grid-template-columns:1fr;}
  .dv-search-box{flex-wrap:wrap; border-radius:20px;}
  .dv-search-box select{border-left:0; border-top:1px solid var(--line); width:100%;}
  .dv-search-box .dv-search-city{flex-basis:100%; border-left:0; border-top:1px solid var(--line);}
}
