/* ── VARIABLES ── */
:root{
  --n-red:    #c0392b;
  --n-dark:   #0d0d0d;
  --n-gray:   #1a1a1a;
  --n-mid:    #2e2e2e;
  --n-line:   #2a2a2a;
  --n-muted:  #888;
  --n-text:   #e8e8e8;
  --n-sub:    #aaa;
  --n-font-h: 'Playfair Display', Georgia, serif;
  --n-font-b: 'Source Sans 3', sans-serif;
}

/* ── NEWS APP SHELL ── */
#newsApp{
  height:100dvh;width:100%;max-width:100vw;
  overflow-y:auto;overflow-x:hidden;
  background:var(--n-dark);
  color:var(--n-text);
  font-family:var(--n-font-b);
  display:block;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}

/* ── TOP BAR ── */
.n-topbar{background:#111;border-bottom:1px solid var(--n-line);padding:0 16px;display:flex;align-items:center;justify-content:space-between;height:36px;font-size:11.5px;color:var(--n-muted)}
.n-topbar-date{letter-spacing:.3px}
.n-topbar-right{display:flex;gap:14px}
.n-topbar-right span{cursor:pointer;transition:color .2s}
.n-topbar-right span:hover{color:var(--n-text)}

/* ── MASTHEAD ── */
.n-masthead{background:var(--n-dark);padding:14px 16px 0;border-bottom:3px solid var(--n-red)}
.n-logo{font-family:var(--n-font-h);font-size:32px;font-weight:800;letter-spacing:-1px;color:#fff;display:flex;align-items:center;gap:2px;margin-bottom:10px}
.n-logo span{color:var(--n-red)}

/* ── SEARCH BAR (hidden login) ── */
.n-search-wrap{display:flex;align-items:center;background:var(--n-gray);border:1px solid var(--n-mid);border-radius:6px;overflow:hidden;margin-bottom:14px}
.n-search-input{flex:1;padding:10px 14px;background:transparent;border:none;outline:none;color:var(--n-text);font-family:var(--n-font-b);font-size:14px}
.n-search-input::placeholder{color:var(--n-muted)}
.n-search-btn{padding:10px 16px;background:var(--n-red);border:none;cursor:pointer;color:#fff;font-size:13px;font-weight:600;font-family:var(--n-font-b);letter-spacing:.3px;transition:background .15s;white-space:nowrap}
.n-search-btn:hover{background:#a93226}
#searchError{font-size:12px;color:#e74c3c;padding:0 2px 10px;min-height:20px;display:none}

/* ── NAV ── */
.n-nav{display:flex;overflow-x:auto;border-bottom:1px solid var(--n-line);background:var(--n-dark);scrollbar-width:none}
.n-nav::-webkit-scrollbar{display:none}
.n-nav a{padding:10px 14px;font-size:12.5px;font-weight:600;color:var(--n-muted);white-space:nowrap;border-bottom:2px solid transparent;transition:color .2s,border-color .2s;cursor:pointer;letter-spacing:.3px;text-transform:uppercase}
.n-nav a.active,.n-nav a:hover{color:var(--n-text);border-bottom-color:var(--n-red)}

/* ── BREAKING TICKER ── */
.n-ticker{background:var(--n-red);padding:7px 16px;display:flex;align-items:center;gap:10px;font-size:12px;overflow:hidden}
.n-ticker-label{font-weight:700;letter-spacing:.5px;white-space:nowrap;color:#fff;text-transform:uppercase;background:rgba(0,0,0,.2);padding:2px 8px;border-radius:3px}
.n-ticker-text{color:#ffe;font-size:12.5px;white-space:nowrap;animation:ticker 28s linear infinite}
@keyframes ticker{from{transform:translateX(100vw)}to{transform:translateX(-200%)}}

/* ── HERO ── */
.n-hero{padding:16px;border-bottom:1px solid var(--n-line)}
.n-hero-tag{font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--n-red);margin-bottom:7px}
.n-hero-title{font-family:var(--n-font-h);font-size:24px;line-height:1.25;color:#fff;margin-bottom:8px}
.n-hero-desc{font-size:14px;color:var(--n-sub);line-height:1.5;margin-bottom:10px}
.n-hero-meta{font-size:11.5px;color:var(--n-muted);display:flex;align-items:center;gap:8px}
.n-hero-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--n-muted);display:inline-block}
.n-hero-img{width:100%;height:180px;border-radius:6px;margin-bottom:12px;overflow:hidden;position:relative}
.n-hero-img img{width:100%;height:100%;object-fit:cover;display:block}
.n-hero-img::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,transparent 40%,rgba(0,0,0,.6))}

/* ── SECTION LABEL ── */
.n-section{padding:16px 16px 8px;display:flex;align-items:center;gap:10px}
.n-section-title{font-family:var(--n-font-h);font-size:17px;font-weight:700;color:#fff}
.n-section-line{flex:1;height:1px;background:var(--n-line)}

/* ── ARTICLE CARD ── */
.n-card{padding:12px 16px;border-bottom:1px solid var(--n-line);display:flex;gap:12px;align-items:flex-start;cursor:pointer;transition:background .15s}
.n-card:hover{background:rgba(255,255,255,.03)}
.n-card-thumb{width:76px;height:60px;min-width:76px;border-radius:5px;overflow:hidden;flex-shrink:0;background:#111}
.n-card-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.n-card-body{flex:1;min-width:0}
.n-card-tag{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--n-red);margin-bottom:4px}
.n-card-title{font-family:var(--n-font-h);font-size:15px;line-height:1.3;color:#fff;margin-bottom:5px}
.n-card-meta{font-size:11px;color:var(--n-muted)}

/* ── OPINION ── */
.n-opinion{padding:12px 16px;border-bottom:1px solid var(--n-line);background:rgba(192,57,43,.06)}
.n-opinion-label{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--n-red);margin-bottom:8px}
.n-opinion-text{font-family:var(--n-font-h);font-size:16px;line-height:1.35;color:#ddd;font-style:italic}
.n-opinion-author{font-size:12px;color:var(--n-muted);margin-top:6px}

/* ── MARKETS ── */
.n-markets{padding:12px 16px;border-bottom:1px solid var(--n-line);background:#111}
.n-markets-label{font-size:10.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--n-muted);margin-bottom:8px}
.n-markets-row{display:flex;gap:16px;overflow-x:auto;scrollbar-width:none}
.n-markets-row::-webkit-scrollbar{display:none}
.n-market-item{flex-shrink:0;text-align:center}
.n-market-name{font-size:11px;color:var(--n-muted);margin-bottom:2px}
.n-market-val{font-size:14px;font-weight:600;color:#fff}
.n-market-chg{font-size:11px}
.up{color:#2ecc71}.down{color:#e74c3c}

/* ── FOOTER ── */
.n-footer{background:#111;padding:20px 16px;border-top:3px solid var(--n-red);margin-top:8px}
.n-footer-logo{font-family:var(--n-font-h);font-size:20px;font-weight:800;color:#fff;margin-bottom:8px}
.n-footer-logo span{color:var(--n-red)}
.n-footer-links{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}
.n-footer-links a{font-size:12px;color:var(--n-muted);cursor:pointer;transition:color .2s}
.n-footer-links a:hover{color:var(--n-text)}
.n-footer-copy{font-size:11px;color:#555}
