/* --oe-col: this page's content column; the shared top bar row (common/header.php) takes the same width. */
:root{--oe-col:1348px}
/* /discover — video wall + trending / friends sidebar. Self-contained; loads
   after header.css + site.css. Brand: navy #101530, gold #ecaf18. */
:root{--dv-navy:#101530;--dv-gold:#ecaf18;--dv-cream:#f7f2e9;--dv-ink:#1b2333;--dv-line:#e4ddcf;--dv-muted:#6b7280}
html{background:var(--dv-cream)}
body{margin:0;background:var(--dv-cream);color:var(--dv-ink);font-family:'Source Sans 3',system-ui,sans-serif}

.dv{padding:26px 0 64px}
.dv-wrap{max-width:1280px;margin:0 auto;padding:0 clamp(16px,3vw,34px);display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:34px;align-items:start}
.dv-main{min-width:0}
/* Header — site page-title convention (DM Sans ~2rem), compact; title left,
   "as seen on" social links right, same row. */
.dv-head{display:flex;align-items:center;gap:12px 24px;flex-wrap:wrap;margin:0 0 16px}
.dv-head-titles{min-width:0}
.dv-head h1{font-family:'DM Sans',sans-serif;font-weight:700;font-size:30px;line-height:1.2;letter-spacing:-.02em;margin:0 0 2px;color:var(--dv-navy)}
.dv-head p{margin:0;font-size:14px;color:var(--dv-muted)}
.dv-search-wrap{margin-left:auto;position:relative;display:flex;align-items:center;flex:none}
.dv-search-ic{position:absolute;left:12px;width:17px;height:17px;color:var(--dv-muted);pointer-events:none}
.dv-search{width:230px;max-width:100%;height:40px;border:1px solid var(--dv-line);border-radius:10px;background:#fff;padding:0 12px 0 36px;font:14px 'Source Sans 3',sans-serif;color:var(--dv-ink);outline:none;transition:border-color .12s,box-shadow .12s}
.dv-search::placeholder{color:var(--dv-muted)}
.dv-search:focus{border-color:var(--dv-navy);box-shadow:0 0 0 3px rgba(16,21,48,.08)}
.dv-card.dv-nomatch{display:none}
.dv-nores{margin:6px 0 0;font:15px 'Source Sans 3',sans-serif;color:var(--dv-muted);text-align:center;padding:34px 8px}
.dv-nores[hidden]{display:none}
/* Sidebar app-promo — navy CTA card: headline + marketing copy + store badges. */
.dv-promo{background:radial-gradient(120% 90% at 85% 0,#1a2440,var(--dv-navy) 62%);color:#fff;border-radius:14px;padding:20px 18px}
.dv-promo-title{font:800 24px/1.2 'Playfair Display',Georgia,serif;letter-spacing:-.01em;color:#fff;margin-bottom:9px}
.dv-promo-title em{display:block;font-style:normal;color:var(--dv-gold)}
.dv-promo-sub{font:14px/1.55 'Source Sans 3',sans-serif;color:#c2cdda;margin:0 0 16px}
.dv-promo-app{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.dv-promo-app a{display:block}
.dv-promo-app img{display:block;height:42px;width:auto}

/* Video wall — full 9:16 clip at its real scale, smaller; each card centered in
   its column with generous spacing, two per row. */
.dv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 48px;justify-items:center}
.dv-card{min-width:0;width:100%;max-width:344px;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;row-gap:12px}
.dv-card.dv-hidden{display:none}
.dv-sentinel{width:100%;height:1px}
.dv-media{grid-column:1;grid-row:1;min-width:0;position:relative;aspect-ratio:9/16;border-radius:14px;overflow:hidden;background:#000;cursor:pointer;
  box-shadow:0 10px 30px rgba(12,18,32,.16)}
.dv-media img{width:100%;height:100%;min-width:0;object-fit:cover;display:block}
/* In-place player (no external/modal player). Covers poster + overlays while playing. */
.dv-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000;display:block;z-index:5}
.dv-media.is-playing .dv-play,.dv-media.is-playing::after{display:none}
.dv-media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,12,22,.28),transparent 32%,transparent 70%,rgba(8,12,22,.35));pointer-events:none}
.dv-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:72px;height:72px;border-radius:50%;
  display:grid;place-items:center;color:#fff;background:rgba(16,21,48,.42);border:3px solid rgba(255,255,255,.92);
  box-shadow:0 6px 20px rgba(0,0,0,.35);transition:transform .16s ease,background .16s ease;z-index:2}
.dv-play svg{width:30px;height:30px;margin-left:3px}
.dv-media:hover .dv-play{transform:translate(-50%,-50%) scale(1.06);background:rgba(16,21,48,.6)}

/* Action rail — beside the video (not overlaid): square blue buttons, white
   glyphs, count below. Visual only for now. */
.dv-actions{grid-column:2;grid-row:1;display:flex;flex-direction:column;justify-content:center;gap:12px;align-items:center}
.dv-actitem{display:flex;flex-direction:column;align-items:center;gap:4px}
.dv-act{appearance:none;width:38px;height:38px;border:0;border-radius:10px;background:var(--dv-navy);color:#fff;
  display:grid;place-items:center;cursor:pointer;box-shadow:0 3px 10px rgba(8,16,40,.5);transition:transform .12s ease,background .12s ease}
.dv-act svg{width:21px;height:21px}
.dv-act:hover{transform:translateY(-1px);background:#1a2445}
.dv-act-n{font:700 11px 'Source Sans 3',sans-serif;color:#55606a}
/* Active (saved / liked) states — filled glyph + accent fill. */
.dv-act.is-on svg{fill:currentColor}
.dv-act[data-action="bookmark"].is-on{background:var(--dv-gold);color:#101530}
.dv-act[data-action="like"].is-on{background:#e0556b;color:#fff}
.dv-act[disabled]{opacity:.6;cursor:default}
/* Like celebration — tiny hearts firework out of the button. */
.dv-heart-fx{position:fixed;z-index:9999;pointer-events:none;color:#e0556b;transform:translate(-50%,-50%);will-change:transform,opacity;animation:dvHeartFx var(--d,.75s) cubic-bezier(.2,.7,.3,1) forwards}
.dv-heart-fx svg{width:var(--sz,12px);height:var(--sz,12px);display:block;filter:drop-shadow(0 1px 2px rgba(224,85,107,.45))}
@keyframes dvHeartFx{
  0%{transform:translate(-50%,-50%) scale(.2);opacity:0}
  20%{opacity:1;transform:translate(calc(-50% + var(--tx) * .4),calc(-50% + var(--ty) * .4)) scale(1)}
  100%{transform:translate(calc(-50% + var(--tx)),calc(-50% + var(--ty) - 8px)) scale(.55);opacity:0}
}

.dv-meta{grid-column:1/-1;grid-row:2;padding:0 2px}
.dv-meta-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:4px}
.dv-name{font:800 19px/1.2 'DM Sans',sans-serif;letter-spacing:-.01em;color:var(--dv-navy);text-decoration:none;min-width:0}
a.dv-name:hover{color:#b47713}
.dv-more{flex:none;align-self:flex-start;font:700 12px 'Source Sans 3',sans-serif;color:var(--dv-navy);background:#efe9dd;border-radius:20px;padding:5px 11px;text-decoration:none;white-space:nowrap;transition:background .12s ease}
.dv-more:hover{background:#e5dccb}
.dv-more span{color:#b47713}
.dv-desc{margin:0;font:15px/1.5 'Source Sans 3',sans-serif;color:#55606a;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

.dv-empty{border:1px dashed var(--dv-line);border-radius:16px;padding:60px 24px;text-align:center;color:var(--dv-muted)}
.dv-empty-mark{width:52px;height:52px;border:2px solid var(--dv-gold);border-radius:50%;display:inline-grid;place-items:center;color:var(--dv-gold);margin-bottom:14px}
.dv-empty-mark svg{width:28px;height:28px}
.dv-empty p{margin:0;font-size:16px}

/* Sidebar — scrolls with the page (a sticky column taller than the viewport
   traps its own bottom out of reach). */
.dv-side{display:flex;flex-direction:column;gap:20px}
.dv-panel{background:#fff;border:1px solid var(--dv-line);border-radius:14px;padding:16px 16px 8px;box-shadow:0 4px 16px rgba(15,44,64,.05)}
.dv-panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.dv-panel-head h2{font:800 12px 'Source Sans 3',sans-serif;text-transform:uppercase;letter-spacing:.12em;color:var(--dv-navy);margin:0;font-family:'Source Sans 3',sans-serif!important}

.dv-trend{list-style:none;margin:0;padding:0}
.dv-trend-row{display:grid;grid-template-columns:18px 44px 1fr;align-items:center;gap:11px;padding:9px 8px;margin:0 -8px;border-top:1px solid #f0ebe0;border-radius:9px;text-decoration:none;color:inherit;transition:background .12s ease}
a.dv-trend-row:hover{background:#f6f1e8}
.dv-trend li:first-child .dv-trend-row{border-top:0}
.dv-rank{font:800 15px 'DM Sans',sans-serif;color:#c3ccd6;text-align:center}
.dv-trend-row img{width:44px;height:44px;border-radius:9px;object-fit:cover;display:block;background:#eee}
.dv-trend-txt{min-width:0;display:flex;flex-direction:column;line-height:1.2}
.dv-trend-txt strong{font:700 14px 'DM Sans',sans-serif;color:var(--dv-navy);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-trend-txt small{font:13px 'Source Sans 3',sans-serif;color:var(--dv-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Recent check ins — the trending row without the rank, plus a "how long ago"
   stamp on the right. The text column shrinks (minmax) so a long restaurant
   name ellipses instead of pushing the stamp out of the panel. */
.dv-recent .dv-trend-row{grid-template-columns:44px minmax(0,1fr) auto}
.dv-recent-ago{font:600 12px 'Source Sans 3',sans-serif;color:var(--dv-muted);white-space:nowrap;padding-left:4px}

.dv-cta{padding:6px 2px 12px}
.dv-cta-title{font:700 16px 'DM Sans',sans-serif;color:var(--dv-navy);margin:2px 0 6px}
.dv-cta-sub{font:14px/1.5 'Source Sans 3',sans-serif;color:#55606a;margin:0 0 14px}
.dv-cta-btn{width:100%;border:0;border-radius:10px;background:var(--dv-navy);color:#fff;font:700 14px 'Source Sans 3',sans-serif;padding:11px 14px;cursor:pointer;transition:background .15s}
.dv-cta-btn:hover{background:#1a2445}
.dv-friends{padding:4px 2px 12px}
.dv-friends-soon{font:14px/1.5 'Source Sans 3',sans-serif;color:var(--dv-muted);margin:4px 0 8px}
.dv-friend{display:flex;align-items:center;gap:10px;padding:9px 8px;margin:0 -8px;border-top:1px solid #f0ebe0;border-radius:9px;text-decoration:none;color:inherit;transition:background .12s ease}
.dv-friends > .dv-friend:first-child{border-top:0}
a.dv-friend:hover{background:#f6f1e8}
.dv-friend-av{width:36px;height:36px;border-radius:8px;flex:none;overflow:hidden;background:var(--dv-navy);color:#fff;display:grid;place-items:center;font:800 13px 'DM Sans',sans-serif}
.dv-friend-av img{width:100%;height:100%;object-fit:cover;display:block}
.dv-friend-txt{min-width:0;font:14px/1.35 'Source Sans 3',sans-serif;color:#4a545e}
.dv-friend-txt strong{color:var(--dv-navy);font-weight:700}
.dv-friend-txt em{display:block;font-style:normal;color:#b47713;font-weight:700;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
a.dv-friend:hover .dv-friend-txt em{text-decoration:underline}


@media(max-width:900px){
  .dv-wrap{grid-template-columns:minmax(0,1fr)}
  .dv-main{min-width:0}
  .dv-side{position:static;flex-direction:column}
}
@media(max-width:560px){
  .dv-grid{grid-template-columns:minmax(0,1fr)}
  .dv-card{max-width:100%}  /* fill the single column so the rail stays inside the page padding */
}
/* Mobile: stack the header and center the "As seen on" social block. */
@media(max-width:640px){
  .dv-head{flex-direction:column;align-items:stretch;gap:14px}
  .dv-head-titles{width:100%}
  .dv-head h1{overflow-wrap:anywhere}
  .dv-search-wrap{margin-left:0;width:100%}
  .dv-search{width:100%}
}

/* ── Comments modal (shared thread with the app) ─────────────────────────── */
.dv-cmodal{position:fixed;inset:0;z-index:1000;display:none}
.dv-cmodal.is-open{display:block}
.dv-cmodal-backdrop{position:absolute;inset:0;background:rgba(12,17,30,.55);backdrop-filter:blur(2px);animation:dvcFade .18s ease}
.dv-cmodal-panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 28px));
  max-height:min(80vh,720px);display:flex;flex-direction:column;background:#fff;border-radius:16px;overflow:hidden;
  box-shadow:0 24px 60px rgba(12,17,30,.4);animation:dvcPop .2s cubic-bezier(.2,.7,.3,1)}
@keyframes dvcFade{from{opacity:0}to{opacity:1}}
@keyframes dvcPop{from{opacity:0;transform:translate(-50%,-46%) scale(.97)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.dv-cmodal-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:15px 16px 12px;border-bottom:1px solid var(--dv-line);flex:none}
.dv-cmodal-head h2{margin:0;font:800 17px 'DM Sans',sans-serif;letter-spacing:-.01em;color:var(--dv-navy);flex:1 1 auto}
.dv-cmodal-sub{margin:1px 0 0;flex-basis:100%;order:3;font:13px 'Source Sans 3',sans-serif;color:var(--dv-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dv-cmodal-x{flex:none;width:34px;height:34px;border:0;border-radius:9px;background:#f1ece1;color:var(--dv-navy);display:grid;place-items:center;cursor:pointer;transition:background .12s}
.dv-cmodal-x:hover{background:#e6dfd1}
.dv-cmodal-x svg{width:18px;height:18px}
.dv-cmodal-list{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 16px 12px;overscroll-behavior:contain}
.dv-c-empty{font:14px/1.5 'Source Sans 3',sans-serif;color:var(--dv-muted);text-align:center;padding:26px 8px}
.dv-c-row{display:flex;gap:11px;padding:11px 0;border-top:1px solid #f2ede3}
.dv-c-row:first-child{border-top:0}
.dv-c-av{width:36px;height:36px;flex:none;border-radius:8px;overflow:hidden;background:var(--dv-navy);color:#fff;display:grid;place-items:center;font:800 13px 'DM Sans',sans-serif}
.dv-c-av img{width:100%;height:100%;object-fit:cover;display:block}
.dv-c-main{min-width:0;flex:1 1 auto}
.dv-c-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:1px}
.dv-c-name{font:700 14px 'DM Sans',sans-serif;color:var(--dv-navy)}
.dv-c-persona{font:700 10px 'Source Sans 3',sans-serif;text-transform:uppercase;letter-spacing:.05em;color:#b47713;background:#faf3e2;border-radius:20px;padding:2px 8px}
.dv-c-body{margin:0;font:14.5px/1.5 'Source Sans 3',sans-serif;color:var(--dv-ink);overflow-wrap:anywhere}
.dv-c-del{flex:none;width:30px;height:30px;align-self:flex-start;border:0;border-radius:8px;background:transparent;color:#9aa2ad;cursor:pointer;display:grid;place-items:center;transition:background .12s,color .12s}
.dv-c-del:hover{background:#fbe9ec;color:#d0455e}
.dv-c-del svg{width:17px;height:17px}
.dv-c-del[disabled]{opacity:.5;cursor:default}
.dv-cmodal-compose{flex:none;display:flex;gap:9px;align-items:flex-end;padding:11px 12px;border-top:1px solid var(--dv-line);background:#faf8f3;padding-bottom:calc(11px + env(safe-area-inset-bottom))}
.dv-cmodal-compose textarea{flex:1 1 auto;min-width:0;box-sizing:border-box;display:block;resize:none;overflow-y:hidden;
  border:1px solid var(--dv-line);border-radius:12px;background:#fff;font:15px/1.4 'Source Sans 3',sans-serif;color:var(--dv-ink);
  padding:11px 14px;min-height:44px;max-height:140px;transition:border-color .12s,box-shadow .12s}
.dv-cmodal-compose textarea::placeholder{color:var(--dv-muted)}
.dv-cmodal-compose textarea:focus{outline:0;border-color:var(--dv-navy);box-shadow:0 0 0 3px rgba(16,21,48,.08)}
.dv-cmodal-send{flex:none;width:44px;height:44px;border:0;border-radius:12px;background:var(--dv-navy);color:#fff;display:grid;place-items:center;cursor:pointer;transition:background .15s,opacity .15s,transform .1s}
.dv-cmodal-send:not([disabled]):active{transform:scale(.94)}
.dv-cmodal-send:hover{background:#1a2445}
.dv-cmodal-send svg{width:20px;height:20px}
.dv-cmodal-send[disabled]{opacity:.45;cursor:default}
body.dv-cmodal-lock{overflow:hidden}
@media(max-width:560px){
  .dv-cmodal-panel{width:100vw;max-height:88vh;left:0;top:auto;bottom:0;transform:none;border-radius:16px 16px 0 0}
  @keyframes dvcPop{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
}
@media(prefers-reduced-motion:reduce){
  .dv-cmodal-backdrop,.dv-cmodal-panel{animation:none}
}

/* Discover tune: smaller text + tighter header (desktop/tablet), matching the
   home page's font downsize. Scoped to min-width:851px so mobile is untouched. */
@media(min-width:851px){
  .dv-head{margin:0 0 12px}
  .dv-head h1{font-size:24px}
  .dv-head p{font-size:13px}
  .dv-name{font-size:17px}
  .dv-desc{font-size:13.5px}
  .dv-panel-head h2{font-size:11px}
  .dv-trend-txt strong{font-size:13px}
  .dv-trend-txt small{font-size:12px}
  .dv-recent-ago{font-size:11px}
  .dv-cta-title{font-size:15px}
  .dv-cta-sub{font-size:13px}
  .dv-promo-title{font-size:21px}
  .dv-promo-sub{font-size:13px}
  .dv-friend-txt{font-size:13px}
  .dv-friends-soon{font-size:13px}
}

/* Featured ad card in the video wall — no column gap and a 48px rail (38px rail
   + the 10px gap it absorbs) so the gold flag butts flush against the video while
   the clip itself stays the exact same size as the other cards. */
.dv-card.dv-ad{grid-template-columns:minmax(0,1fr) 54px;column-gap:0}
.dv-ad .dv-media{grid-column:1;grid-row:1}
.dv-ad-badge{position:absolute;top:10px;left:10px;z-index:3;font:800 10px 'Source Sans 3',sans-serif;text-transform:uppercase;letter-spacing:.08em;color:#fff;background:rgba(16,21,48,.72);padding:4px 8px;border-radius:6px}
/* Ad "View more" button: same small pill as .dv-more, but blue with a gold star. */
.dv-more.dv-more-ad{display:inline-flex;align-items:center;gap:5px;background:var(--dv-navy);color:#fff}
.dv-more.dv-more-ad:hover{background:#1a2445}
.dv-ad-star{width:12px;height:12px;color:var(--dv-gold);flex:none}
/* Gold "Featured" flag in the rail column, standing in for the action buttons a sponsored clip doesn't show. */
.dv-adrail{grid-column:2;grid-row:1;display:flex;align-items:flex-start;justify-content:stretch}
/* Gold flag anchored to the top of the video, sized to its content (star + label + chevron) so it stays short and always fits the name; butts flush against the video (square left edge) with tight right corners. */
.dv-adflag{margin-top:40px;display:flex;flex-direction:column;align-items:center;gap:14px;padding:16px 0;background:var(--dv-gold);color:#101530;border-radius:0 8px 8px 0;box-shadow:0 2px 6px rgba(236,175,24,.28)}
.dv-adflag-star{width:20px;height:20px;flex:none}
.dv-adflag-txt{writing-mode:vertical-rl;font:800 14px 'Source Sans 3',sans-serif;text-transform:uppercase;letter-spacing:.01em;white-space:nowrap}
.dv-adflag-chev{width:18px;height:18px;flex:none}
