/* Newswire Pro — landing + section styling. Scoped to .np-landing so it never
   fights the block theme (Twenty Twenty-Five) on other pages. Global tokens
   (colour, fonts, layout) come from theme.json. */

::selection{background:#0066FF;color:#fff;}
@keyframes dwpulse{0%{box-shadow:0 0 0 0 rgba(0,170,68,.55);}70%{box-shadow:0 0 0 7px rgba(0,170,68,0);}100%{box-shadow:0 0 0 0 rgba(0,170,68,0);}}
@keyframes dwmarquee{0%{transform:translateX(0);}100%{transform:translateX(-50%);}}

/* Landing scope: the design markup relies on border-box + zeroed inherited spacing. */
.np-landing,.np-landing *{box-sizing:border-box;}
.np-landing{font-family:'Hanken Grotesk',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#1A1A1A;line-height:1.5;-webkit-font-smoothing:antialiased;}
.np-landing a{text-decoration:none;color:inherit;}
.np-landing img{max-width:100%;height:auto;}
.np-landing h1,.np-landing h2,.np-landing h3,.np-landing h4,.np-landing p,.np-landing figure{margin:0;}
/* Full-bleed: never let the block layout cap the landing's sections. */
.np-landing,.np-landing .wp-block-post-content,.np-landing .entry-content{max-width:none!important;margin:0;padding:0;}
.np-landing > .wp-block-post-content > section,.np-landing section{width:100%;}

/* ── Header / footer template parts ──────────────────────────────────────── */
/* display:contents drops the block wrapper so the sticky header sticks against
   the page, not its own short wrapper. */
.wp-block-template-part{display:contents;}
.np-header,.np-header *,.np-footer,.np-footer *{box-sizing:border-box;}
.np-header a,.np-footer a{text-decoration:none;}

/* Header bar */
.np-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,0.86);backdrop-filter:saturate(180%) blur(12px);-webkit-backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid #E5E5E5;transition:box-shadow .3s ease;}
.np-header.np-scrolled{box-shadow:0 1px 0 rgba(0,0,0,.04),0 10px 30px -12px rgba(16,32,64,.18);}
/* backdrop-filter makes .np-header the containing block for fixed descendants,
   which would trap the nav block's full-screen mobile overlay inside the 68px
   bar — drop it while the menu modal is open. */
.np-header:has(.wp-block-navigation__responsive-container.is-menu-open){backdrop-filter:none;-webkit-backdrop-filter:none;}
.np-header-inner{max-width:1240px;margin:0 auto;padding:15px 40px;gap:24px;}
.np-brand{gap:10px;}
.np-mark{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:9px;background:var(--wp--preset--color--primary,#0066FF);flex-shrink:0;}
.np-mark--sm{width:32px;height:32px;border-radius:8px;}
.np-brand .wp-block-site-title,.np-foot-brand .wp-block-site-title{margin:0;}
.np-brand .wp-block-site-title a{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:20px;letter-spacing:-.5px;color:var(--wp--preset--color--ink,#0B0B0B);text-decoration:none;}
/* Primary nav (wp:navigation block). Anchor rules cover both the inline bar and
   the mobile overlay, since the overlay container lives inside the same <nav>. */
.np-nav-links{white-space:nowrap;}
.np-nav-links .wp-block-navigation__container{display:flex;align-items:center;gap:28px;}
.np-nav-links a{font-size:15px;font-weight:500;color:#444;transition:color .2s;}
.np-nav-links a:hover{color:var(--wp--preset--color--primary,#0066FF);}
.np-nav-links .wp-block-navigation__responsive-container-open,
.np-nav-links .wp-block-navigation__responsive-container-close{color:var(--wp--preset--color--ink,#0B0B0B);}
.np-nav-links .wp-block-navigation__responsive-container.is-menu-open{background:#fff;padding:24px;}
.np-nav-links .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container{display:flex;flex-direction:column;align-items:flex-start;gap:20px;}
.np-nav-links .wp-block-navigation__responsive-container.is-menu-open a{font-size:18px;}
/* "Log in" / "Distribute a release" nav items only exist for the overlay menu —
   the inline bar already shows them as .np-actions buttons. */
.np-nav-links .wp-block-navigation__container .np-menu-only{display:none;}
.np-nav-links .is-menu-open .np-menu-only{display:block;}
.np-nav-links .is-menu-open .np-menu-only a{font-weight:600;color:var(--wp--preset--color--primary,#0066FF);}
.np-actions{display:flex;align-items:center;gap:14px;white-space:nowrap;flex-shrink:0;}
.np-login{font-size:15px;font-weight:600;color:var(--wp--preset--color--ink,#0B0B0B);}
.np-cta{display:inline-flex;align-items:center;gap:7px;background:var(--wp--preset--color--ink,#0B0B0B);color:#fff;font-weight:600;font-size:15px;padding:11px 20px;border-radius:10px;box-shadow:0 1px 2px rgba(0,0,0,.18);transition:transform .18s,background .2s,box-shadow .2s;}
.np-cta:hover{background:var(--wp--preset--color--primary,#0066FF);transform:translateY(-1px);box-shadow:0 8px 20px rgba(0,102,255,.28);}

/* Footer */
.np-footer{background:#070A11;}
.np-footer-inner{max-width:1240px;margin:0 auto;padding:72px 40px 36px;}
.np-foot-grid{display:grid;grid-template-columns:1.7fr 2.5fr;gap:48px;padding-bottom:48px;border-bottom:1px solid #1A1F2B;}
.np-foot-lockup{gap:10px;margin-bottom:16px;}
.np-foot-brand .wp-block-site-title a{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:19px;letter-spacing:-.5px;color:#fff;text-decoration:none;}
.np-foot-tag{font-size:14.5px;line-height:1.6;color:#6B7384;max-width:320px;margin:0;}
.np-foot-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;}
.np-foot-col h4{font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;color:#fff;margin:0 0 16px;}
.np-foot-col a{display:block;font-size:14.5px;color:#8A93A4;margin-bottom:11px;transition:color .2s;}
.np-foot-col a:hover{color:#fff;}
.np-foot-bottom{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:28px;flex-wrap:wrap;font-size:13.5px;color:#5A6173;}
.np-foot-legal{display:flex;align-items:center;gap:18px;}
.np-foot-legal a{color:#5A6173;transition:color .2s;}
.np-foot-legal a:hover{color:#fff;}

/* Inner pages (About, Contact, plugin portal/marketplace, etc.) container. */
.np-page-wrap{max-width:1240px;margin:0 auto;padding:48px 40px 80px;font-size:16.5px;line-height:1.7;color:#384152;}
.np-page-wrap > .wp-block-post-title,.np-page-wrap .entry-title{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(30px,4vw,42px);line-height:1.1;letter-spacing:-1px;color:var(--wp--preset--color--ink,#0B0B0B);margin:0 0 28px;}
/* Readable typography for migrated content pages (legal text, About, etc.). */
.np-page-wrap p{margin:0 0 1.1em;}
.np-page-wrap h2,.np-page-wrap h3,.np-page-wrap h4{font-family:'Space Grotesk',sans-serif;color:var(--wp--preset--color--ink,#0B0B0B);line-height:1.25;letter-spacing:-.4px;margin:1.7em 0 .5em;}
.np-page-wrap h2{font-size:26px;}
.np-page-wrap h3{font-size:20px;}
.np-page-wrap h4{font-size:17px;}
.np-page-wrap ul,.np-page-wrap ol{margin:0 0 1.1em 1.3em;}
.np-page-wrap li{margin:.35em 0;}
.np-page-wrap a{color:var(--wp--preset--color--primary,#0066FF);}
.np-page-wrap a:hover{text-decoration:underline;}

/* Contact form (theme [np_contact_form] shortcode). */
.np-form{display:flex;flex-direction:column;gap:14px;max-width:640px;margin-top:8px;}
.np-form .np-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.np-form label{display:flex;flex-direction:column;gap:7px;font-size:14px;font-weight:600;color:var(--wp--preset--color--ink,#0B0B0B);}
.np-form input,.np-form textarea{font-family:inherit;font-size:15px;font-weight:400;color:#1A1A1A;padding:12px 14px;border:1px solid #E0E4EA;border-radius:10px;background:#fff;transition:border-color .15s,box-shadow .15s;}
.np-form input:focus,.np-form textarea:focus{outline:none;border-color:var(--wp--preset--color--primary,#0066FF);box-shadow:0 0 0 3px rgba(0,102,255,.12);}
.np-form textarea{resize:vertical;}
.np-form .np-hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;}
.np-form button{align-self:flex-start;background:var(--wp--preset--color--primary,#0066FF);color:#fff;font-weight:600;font-size:15.5px;padding:13px 26px;border:none;border-radius:11px;cursor:pointer;transition:transform .15s,box-shadow .2s;box-shadow:0 6px 18px rgba(0,102,255,.28);}
.np-form button:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(0,102,255,.36);}
.np-form-note{padding:14px 16px;border-radius:10px;font-size:14.5px;font-weight:500;margin-bottom:18px;max-width:640px;}
.np-form-ok{background:#E8F7EE;color:#067a3b;border:1px solid #bdebcf;}
.np-form-err{background:#FDECEC;color:#b3261e;border:1px solid #f6c9c6;}
@media (max-width:560px){ .np-form .np-form-row{grid-template-columns:1fr;} }

/* Landing section patterns inserted into content pages keep the design box model. */
.np-page-wrap .wp-block-html section,.np-page-wrap .wp-block-html section *{box-sizing:border-box;}
.np-page-wrap .wp-block-html section{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);}
/* Compact on-brand stat band used on inner pages. */
.np-statband{display:flex;flex-wrap:wrap;gap:28px;align-items:center;padding:22px 0 6px;}
.np-statband .n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:26px;letter-spacing:-.5px;color:var(--wp--preset--color--ink,#0B0B0B);}
.np-statband .l{font-size:13px;color:#8A93A0;font-weight:500;}
.np-statband .sep{width:1px;height:30px;background:#E2E6EC;}

/* Chrome responsive. Core's navigation block swaps to its hamburger overlay at
   600px; the header needs it at 1000px, so between the two widths we re-hide the
   inline links and re-show the toggle (mirrors core's own overlay rules). */
@media (min-width:600px) and (max-width:1000px){
  .np-nav-links .wp-block-navigation__responsive-container-open:not(.always-shown){display:flex!important;}
  .np-nav-links .wp-block-navigation__responsive-container:not(.hidden-by-default):not(.is-menu-open){display:none!important;}
}
@media (max-width:860px){ .np-foot-grid{grid-template-columns:1fr;gap:32px;} }
@media (max-width:640px){
  .np-page-wrap{padding:32px 20px 64px;}
  .np-header-inner{padding:15px 20px;}
  .np-footer-inner{padding:56px 20px 32px;}
  .np-foot-cols{grid-template-columns:1fr 1fr;}
}
/* Small phones: brand + hamburger only — Log in / Distribute live in the
   overlay menu (.np-menu-only items) so nothing clips. */
@media (max-width:560px){
  .np-actions{display:none;}
  .np-brand .wp-block-site-title a{white-space:nowrap;}
}
@media (max-width:420px){ .np-foot-cols{grid-template-columns:1fr;} }

/* Reveal-on-scroll (driven by main.js; scoped to .np-js so content is visible without JS). */
.np-js .np-landing [data-reveal]{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.16,.84,.44,1),transform .7s cubic-bezier(.16,.84,.44,1);will-change:opacity,transform;}
.np-js .np-landing [data-reveal].np-in{opacity:1;transform:none;}

/* Responsive — the landing's inline grids are matched by their style substrings. */
@media (max-width:1000px){
  .np-landing [style*="repeat(6,1fr)"]{grid-template-columns:repeat(3,1fr)!important;}
  .np-landing [style*="repeat(4,1fr)"]{grid-template-columns:repeat(2,1fr)!important;}
  .np-landing [style*="repeat(3,1fr)"]{grid-template-columns:1fr!important;}
}
@media (max-width:640px){
  .np-landing [style*="px 40px"]{padding-left:20px!important;padding-right:20px!important;}
  .np-landing [style*="repeat(6,1fr)"]{grid-template-columns:repeat(2,1fr)!important;}
  .np-landing [style*="repeat(4,1fr)"]{grid-template-columns:1fr!important;}
  .np-landing [style*="font-size:58px"]{font-size:36px!important;letter-spacing:-1px!important;}
  .np-landing [style*="font-size:46px"]{font-size:32px!important;}
  .np-landing [style*="font-size:40px"]{font-size:30px!important;}
}

/* ── Custom block styles (register_block_style) ───────────────────────────── */
.wp-block-button.is-style-np-pill .wp-block-button__link{border-radius:999px;}
.wp-block-group.is-style-np-card{background:#fff;border:1px solid var(--wp--preset--color--line,#EBEDF0);border-radius:16px;padding:26px;box-shadow:0 1px 2px rgba(16,32,64,.04);}
.wp-block-image.is-style-np-elevated img{border-radius:14px;box-shadow:0 24px 60px -24px rgba(16,32,64,.35);}
.wp-block-quote.is-style-np-accent{border:none;border-left:3px solid var(--wp--preset--color--primary,#0066FF);padding-left:20px;font-style:normal;color:#5A6472;}
