/* ============================================================
   Responsive — must load last
   ============================================================ */

@media (max-width:1080px){
  .lead-grid{grid-template-columns:1fr}
  .lead-grid>*{grid-column:auto!important;grid-row:auto!important}
  /* Drop the desktop placement: with one column, a child still pinned to
     grid-column:2 lands in a zero-width implicit column and disappears. */
  /* Single column, stacked: image on top, then title + description below. */
  .super-story{display:flex;flex-direction:column;grid-template-columns:1fr;min-height:0}
  /* Reset every desktop grid placement (incl. .ss-media, the image wrapper) so
     nothing stays pinned to the phantom second column. */
  .super-story .ss-body,
  .super-story .ss-media,
  .super-story .ph{grid-column:auto;grid-row:auto;max-height:none}
  .super-story .ss-media{order:-1}
  .super-story .ss-media .ph,
  .super-story .ph{min-height:0;height:auto;aspect-ratio:15/10}
  .super-story .ss-body{padding:16px 18px}
  .lead-aside{flex-direction:row;align-items:stretch;flex-wrap:wrap}
  .lead-aside>*{flex:1 1 500px}
  /* The square ad requests a 1x1 unit — keep its 1:1 footprint instead of
     being stretched flat to the row height by the flex layout. */
  .lead-aside .gam-inline-500x500{align-self:flex-start;aspect-ratio:1/1;height:auto}
  .fc-body{grid-template-columns:1fr 1fr}
  .fc-lead{grid-column:span 2;border-inline-end:none;border-bottom:1px solid var(--line)}
  .sport-grid{grid-template-columns:1fr 1fr}
  .sport-news{grid-column:span 2}
  .layout,.cat-grid{grid-template-columns:1fr}
  .picks-grid{grid-template-columns:1fr 1fr}
  .elex-body{grid-template-columns:1fr 1fr}
  .elex-body .elex-card:last-child{grid-column:span 2}
  .elex-hero-txt{text-align:start}
  .elex-flash{grid-template-columns:210px minmax(0,1fr)}
  .subwrap{grid-template-columns:1fr 1fr}
  .subwrap .sub-rows{grid-column:span 2;grid-row:auto}
  .subwrap>*{grid-row:auto}
  .subwrap .sub-side,
  .subwrap .sub-side--poll,
  .subwrap .sub-side--writers{grid-column:auto}
  .wa-banner{grid-template-columns:minmax(0,1fr) auto;padding:0 24px}
  .wa-phone{display:none}
  .horo-box{grid-template-columns:1fr}
  .horo-signs{border-inline-end:none;border-bottom:1px solid var(--line)}
  .pick-col{grid-column:span 2;grid-template-columns:repeat(3,1fr)}
  .pick-col .pick{grid-template-columns:1fr;min-height:200px}
  .pick-col .pick .ph{min-height:90px}
  .pick-big{min-height:320px}
  .sidebar{position:static;display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:start}
  .newsletter{grid-template-columns:1fr;text-align:center}
  .foot-grid{grid-template-columns:1fr 1fr}
  .masthead .head-socials{display:none}
}

@media (max-width:720px){
  body{font-size:16px}
  .container{padding:0 8px}
  .nav-list,.masthead .search{display:none}
  .burger{display:inline-flex}
  .super .hide-s{display:none}
  /* Blue bar: date · weather · $ · € with full-height vertical separators.
     Date first (numeric only), clock + gold dropped. */
  .super{font-size:11px}
  .super .container{overflow-x:auto;scrollbar-width:none}
  .super .container::-webkit-scrollbar{display:none}
  .super #live-clock,.super .dot,.super .fx-gold{display:none}
  .super #live-date{display:inline-flex;align-items:center;padding-inline-end:10px;color:#cfcfcf;white-space:nowrap}
  .super #live-date .dw{display:none}
  .super-left{gap:8px}
  .super-right{height:100%;gap:0;flex-shrink:0}
  .super .wx-chip{height:100%;padding-inline:10px;border-inline-start:1px solid rgba(255,255,255,.22);white-space:nowrap}
  .super .wx-chip .wx-city{display:none}
  .fx-chip{height:100%;gap:0;padding-inline-start:10px;border-inline-start:1px solid rgba(255,255,255,.22)}
  .fx-chip .fx-lbl{display:none}
  .fx-chip .fx-sym{display:inline}
  .fx-chip .fx-1{height:100%;white-space:nowrap}
  .fx-chip .fx-1+.fx-1{margin-inline-start:10px;padding-inline-start:10px;border-inline-start:1px solid rgba(255,255,255,.22)}
  .fx-chip .fx-1+.fx-1::before{content:none}
  .masthead .container{gap:12px}

  /* Ticker (breaking-news) popup: full-screen on mobile. */
  .modal-bg{padding:0}
  .news-modal{max-width:none;width:100%;height:100%;max-height:100%;border-radius:0;
              display:flex;flex-direction:column}
  .news-modal .nm-body{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .news-modal .nm-head{padding-top:22px}
  .logo .brand-mark{width:78px}
  .logo .brand-txt{display:none}
  .lead-aside{flex-direction:column}
  .fc-body,.sport-grid,.latest,.sidebar{grid-template-columns:1fr}
  .fc-lead,.sport-news{grid-column:span 1}
  .picks-grid{grid-template-columns:1fr}
  .elex-body{grid-template-columns:1fr}
  .elex-body .elex-card:last-child{grid-column:span 1}
  .elex-hero{padding:20px 18px}
  .elex-hero-txt h2 a{font-size:20px}
  .elex-hero-txt h2 .icon{width:20px;height:20px}
  .elex-count{margin-inline-start:0;width:100%;text-align:start}
  .elex-count .boxes{justify-content:flex-start}
  .elex-flash{grid-template-columns:1fr;gap:14px}
  .elex-flash h3{font-size:16.5px}
  .elex-flash .fl-btn{width:100%;justify-content:center}
  /* Elections stats: one row of 3 columns, number/label on top, icon below. */
  .elex-stats{grid-template-columns:repeat(3,1fr);padding:12px 4px}
  .elex-stat{flex-direction:column;gap:9px;padding:8px 3px}
  .elex-stat .txt{text-align:center}
  .elex-stat b{font-size:19px;white-space:nowrap}
  .elex-stat .lbl{font-size:11.5px}
  .elex-stat .ic{width:48px;height:48px}
  .elex-stat .ic .icon{width:24px;height:24px}
  .subwrap{grid-template-columns:1fr}
  .subwrap .sub-rows{grid-column:span 1;grid-row:auto}
  .subwrap>*{grid-row:auto}
  .subwrap .sub-side,
  .subwrap .sub-side--poll,
  .subwrap .sub-side--writers{grid-column:auto}
  .srow{grid-template-columns:118px 1fr}
  .srow h3{font-size:13px}
  .wa-banner{grid-template-columns:1fr;gap:0;padding:24px 20px;text-align:center}
  .wa-txt{padding:0 0 16px}
  .wa-btn{justify-content:center}
  .horo-signs{grid-template-columns:repeat(3,1fr)}
  .horo-sign:nth-child(4n){border-inline-end:1px solid var(--line)}
  .horo-sign:nth-child(3n){border-inline-end:none}
  .horo-sign:nth-child(n+9){border-bottom:1px solid var(--line)}
  .horo-sign:nth-child(n+10){border-bottom:none}
  .mj-scroll{grid-auto-columns:160px}
  .mj-all{margin-inline-start:0}
  .pick-col{grid-column:span 1;grid-template-columns:1fr}
  .pick-col .pick{grid-template-columns:1fr 1fr;min-height:150px}
  .pick-col .pick .ph{min-height:150px}
  .pick-big{min-height:300px}
  .super-story h1{font-size:21px}
  .super-story .ph{min-height:210px}

  /* --- Mobile cards: stop clipping content ---
     Text-flow cards (photo + text stacked/beside) drop the 2-line title clamp
     so the box grows to fit the whole headline. */
  .story-body h3,.srow h3,.cat-block .row p,.sport-news .rowi p,
  .latest a span,.top-list p,.writers p,.deaths p,.fc-item p,.elex-mini p{
    -webkit-line-clamp:unset;line-clamp:unset;display:block;overflow:visible
  }
  .srow{min-height:0}
  .srow .ph{min-height:96px}
  /* Overlay cards (headline sits ON the image) can't grow — give the title more
     room and raise the box so nothing is cut. */
  .super-story h1,.pick-txt h3,.hero-lead h1,.hero-sec h3{-webkit-line-clamp:3}
  .pick-col .pick{min-height:180px}
  .pick-col .pick .ph{min-height:180px}

  /* Header actions: keep both labels, push the pair to the left, soften them. */
  .mast-actions{margin-inline-start:auto;gap:8px}
  .app-btn div{display:block}
  .btn-send span{display:inline}
  .btn-send{height:38px;padding:0 14px;border-radius:10px;font-size:12.5px;
            background:var(--red-soft);color:var(--red-deep);border-color:transparent;box-shadow:none;transform:none}
  .btn-send .icon{color:var(--red-deep)}
  .app-btn{height:38px;padding:0 12px;border-radius:10px;
           background:var(--surface);color:var(--ink);border-color:var(--line);box-shadow:none;transform:none}
  .app-btn .icon{width:18px;height:18px;color:var(--red-deep)}
  .app-btn small{font-size:9px;color:var(--muted)}
  .app-btn b{font-size:12px}

  /* Sticky, shrinking masthead on scroll-down: logo + buttons compress and the
     button labels animate away to icon-only. Toggled by body.hdr-shrink (app.js). */
  .masthead{position:sticky;top:0;z-index:60;transition:box-shadow .25s ease}
  .masthead .container{transition:padding .25s ease}
  .logo .brand-mark{transition:width .22s ease}
  .btn-send span,.app-btn div{overflow:hidden;white-space:nowrap;max-width:140px;opacity:1;
    transition:max-width .25s ease,opacity .2s ease,margin .25s ease}
  body.hdr-shrink .masthead{box-shadow:0 2px 10px rgba(0,0,0,.10)}
  body.hdr-shrink .masthead .container{padding-top:8px;padding-bottom:8px}
  body.hdr-shrink .logo .brand-mark{width:58px}
  body.hdr-shrink .btn-send span,body.hdr-shrink .app-btn div{max-width:0;opacity:0;margin:0}
  body.hdr-shrink .btn-send{padding:0 11px;gap:0}
  body.hdr-shrink .app-btn{padding:0 10px;gap:0}

  .nl-form{flex-direction:column}
  .nl-form button{padding:12px}
  .newsletter{padding:24px 20px}
  .ticker-badge{padding:6px 12px;font-size:12px}
  /* Ticker: single line of text on mobile. */
  .ticker .container{min-height:52px}
  .tk-item{width:78vw;padding:10px 16px;flex-direction:row;align-items:center;gap:10px}
  .tk-title{-webkit-line-clamp:1;line-clamp:1;flex:1;min-width:0}
  .tk-time{flex-shrink:0}
  .sec-head h2{font-size:18px}
  .foot-grid{grid-template-columns:1fr 1fr;gap:22px 20px}
  .foot-news{grid-column:span 2}
  .foot-bottom{grid-template-columns:1fr;justify-items:center;text-align:center;gap:12px}
  .foot-app,.foot-dev{justify-self:center}
  /* Mobile menu as a right-side drawer, floating over all content. */
  .mp-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.42);z-index:999;
               opacity:0;visibility:hidden;transition:opacity .28s ease,visibility .28s ease}
  .mp-backdrop.open{opacity:1;visibility:visible}
  .mobile-panel{
    display:flex;flex-direction:column;
    position:fixed;top:0;right:0;bottom:0;width:min(86vw,340px);
    background:var(--surface);z-index:1000;
    transform:translateX(100%);transition:transform .28s ease;
    overflow-y:auto;overscroll-behavior:contain;
    box-shadow:-8px 0 30px rgba(0,0,0,.18);
    scrollbar-width:none;-ms-overflow-style:none
  }
  .mobile-panel::-webkit-scrollbar{display:none}
  .mobile-panel.open{transform:translateX(0)}
  .mp-head{display:flex;align-items:center;justify-content:space-between;
           padding:16px 18px;border-bottom:1px solid var(--line);
           position:sticky;top:0;background:var(--surface);z-index:1}
  .mp-title{font-family:var(--font-head);font-weight:800;font-size:16px;color:var(--ink)}
  .mp-close{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
            border-radius:10px;background:var(--surface-2);color:var(--ink)}
  .mp-close .icon{width:16px;height:16px}
  .mobile-panel .search{display:block;max-width:none;margin:14px 18px 4px}
  .mp-links{display:flex;flex-direction:column;padding:4px 18px}
  .mp-links a{display:block;padding:13px 4px;font-family:var(--font-head);font-weight:700;
              color:var(--ink);border-bottom:1px solid var(--line)}
  .mp-links a:last-child{border-bottom:none}
  .mp-actions{margin-top:auto;display:flex;flex-direction:column;gap:10px;
              padding:16px 18px;border-top:1px solid var(--line)}
  .mp-actions .btn-send,.mp-actions .app-btn{width:100%;height:46px;justify-content:center;border-radius:10px}
}

@media (max-width:720px){
  .reels-nav{position:fixed;bottom:14px;right:14px;flex-direction:row}
  .reels-hint{display:none}
}

/* Very narrow phones: keep both button labels but drop the app subtitle so the
   header row never overflows at 320px. */
@media (max-width:400px){
  .mast-actions{gap:6px}
  .app-btn small{display:none}
  .app-btn b{font-size:11.5px}
  .btn-send{padding:0 12px;font-size:11.5px}
}
