/* =============================================================
   Native New Hampshire — design system + directory styles
   Extracted from the approved mockups. Tokens first, then pages.
   ============================================================= */

:root{
  --nnh-blue:#29597F;
  --nnh-blue-dark:#174F78;
  --nnh-blue-deep:#22334A;
  --nnh-sky:#1F6FA8;
  --nnh-sky-tint:#E9F2F8;
  --nnh-amber:#B8791E;
  --nnh-gold:#F5A93B;
  --nnh-gold-tint:#FDF3E0;
  --nnh-gold-line:#F0DDB8;
  --nnh-gold-border:#E4B36E;
  --nnh-coral:#E8862E;
  --nnh-coral-tint:#FCEBD6;
  --nnh-green:#3E7A34;
  --nnh-green-tint:#EAF3E6;
  --nnh-ink:#22334A;
  --nnh-ink-soft:#5C6B82;
  --nnh-paper:#FAF6EE;
  --nnh-card:#FFFFFF;
  --nnh-line:#EAE2D3;
  --nnh-radius:14px;
  --nnh-display:"Bricolage Grotesque",sans-serif;
  --nnh-body:"Figtree","Public Sans",sans-serif;
}

/* ---------- Base (scoped to plugin pages) ---------- */
html:has(body.nnh-page){background:var(--nnh-ink)}
body.nnh-page{margin:0;padding:0;font-family:var(--nnh-body);background:var(--nnh-paper);color:var(--nnh-ink);font-size:16px;line-height:1.55}
body.nnh-page *,body.nnh-page *::before,body.nnh-page *::after{box-sizing:border-box}
body.nnh-page a{color:var(--nnh-blue);text-decoration:none}
body.nnh-page a:hover{text-decoration:underline}
body.nnh-page :focus-visible{outline:2px solid var(--nnh-coral);outline-offset:1px}
body.nnh-page h1,body.nnh-page h2,body.nnh-page h3{margin:0}
body.nnh-page p{margin:0 0 12px}
.nnh-page .wrap{max-width:1120px;margin:0 auto;padding:0 32px}
@media (max-width:720px){.nnh-page .wrap{padding:0 20px}}

.nnh-page .squiggle{position:relative;display:inline-block}
.nnh-page .squiggle::after{
  content:"";position:absolute;left:0;right:-4px;bottom:-7px;height:7px;
  background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="8" viewBox="0 0 80 8"><path d="M1 5 Q 10 1, 20 5 T 40 5 T 60 5 T 80 5" fill="none" stroke="%23F5A93B" stroke-width="3" stroke-linecap="round"/></svg>') repeat-x;
  background-size:80px 8px;
}

/* Buttons */
.nnh-btn{display:inline-block;text-align:center;font-size:13.5px;font-weight:700;padding:9px 16px;border-radius:99px;border:1.5px solid transparent;font-family:var(--nnh-body);cursor:pointer}
.nnh-btn:hover{text-decoration:none !important}
.nnh-btn.primary{background:var(--nnh-blue);color:#fff}
.nnh-btn.primary:hover{background:var(--nnh-blue-dark)}
.nnh-btn.ghost{border-color:var(--nnh-line);color:var(--nnh-ink);background:#fff}
.nnh-btn.ghost:hover{border-color:var(--nnh-blue);color:var(--nnh-blue)}
.nnh-btn.gold{background:var(--nnh-gold);color:var(--nnh-ink)}
.nnh-btn.gold:hover{filter:brightness(.96)}
.nnh-btn.sm{font-size:12.5px;padding:6px 13px}

/* ---------- Top bar + header ---------- */
.nnh-topbar{background:var(--nnh-blue-deep);color:#DCEEFB;font-size:13px}
.nnh-topbar .wrap{display:flex;justify-content:space-between;align-items:center;padding-top:6px;padding-bottom:6px}
.nnh-topbar a{color:#DCEEFB !important;text-decoration:none !important}
.nnh-topbar .links a{margin-left:18px}
.nnh-topbar .hello{display:flex;align-items:center;gap:8px}

.nnh-site{background:var(--nnh-card);border-bottom:1px solid var(--nnh-line);position:sticky;top:0;z-index:50}
body.admin-bar .nnh-site{top:32px}
.nnh-site .nav{display:flex;align-items:center;gap:28px;padding:14px 24px;max-width:1180px;margin:0 auto}
.nnh-site .logo{font-family:var(--nnh-display);font-weight:700;font-size:22px;color:var(--nnh-ink) !important;letter-spacing:-0.01em;display:flex;align-items:center;gap:10px;text-decoration:none !important;white-space:nowrap}
.nnh-site .logo:hover{text-decoration:none !important}
.nnh-menu{display:flex;gap:24px;list-style:none;margin:0 0 0 auto;padding:0;align-items:center}
.nnh-menu li{margin:0;padding:0;white-space:nowrap;list-style:none}
.nnh-menu a{color:var(--nnh-ink) !important;font-weight:600;font-size:15px;text-decoration:none !important;border-bottom:none !important;background:none !important}
.nnh-menu a:hover{color:var(--nnh-blue) !important}
.nnh-menu a.active,.nnh-menu .current-menu-item > a{color:var(--nnh-blue) !important;box-shadow:inset 0 -3px 0 var(--nnh-gold)}
.nnh-site .cta{background:var(--nnh-coral);color:#fff !important;font-weight:700;font-size:14px;padding:9px 16px;border-radius:99px;text-decoration:none !important;white-space:nowrap}
.nnh-site .cta:hover{text-decoration:none;filter:brightness(1.06)}

/* ---------- Search band ---------- */
.nnh-searchband{background:linear-gradient(180deg,var(--nnh-blue) 0%,var(--nnh-blue-dark) 100%);color:#fff;padding:40px 0 0;position:relative;overflow:hidden}
.nnh-searchband .sun{position:absolute;top:26px;right:8%;width:74px;height:74px;border-radius:50%;background:var(--nnh-gold);opacity:.9;box-shadow:0 0 0 14px rgba(251,177,60,.15),0 0 0 28px rgba(251,177,60,.07)}
.nnh-searchband .inner{position:relative;z-index:2;padding-bottom:26px}
.nnh-searchband h1{font-family:var(--nnh-display);font-size:clamp(27px,3.5vw,38px);font-weight:800;letter-spacing:-0.015em;margin-bottom:6px}
.nnh-searchband h1 em{font-style:normal;color:var(--nnh-gold)}
.nnh-searchband p.sub{color:#C9E4F8;max-width:640px;margin-bottom:20px;font-size:15.5px}
.nnh-searchband .searchbox{display:grid;grid-template-columns:1.6fr 1fr auto;gap:10px;background:#fff;padding:10px;border-radius:16px;max-width:820px;box-shadow:0 8px 28px rgba(13,42,64,.28)}
.nnh-searchband .field{display:flex;flex-direction:column;gap:2px;padding:4px 10px;border-right:1px solid var(--nnh-line)}
.nnh-searchband .field:nth-child(2){border-right:none}
.nnh-searchband label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--nnh-ink-soft)}
.nnh-searchband input,.nnh-searchband select{border:none;font-family:var(--nnh-body);font-size:16px;color:var(--nnh-ink);background:transparent;padding:2px 0}
.nnh-searchband input::placeholder{color:#9AA7B1}
.nnh-searchband button{background:var(--nnh-coral);border:none;color:#fff;font-family:var(--nnh-body);font-weight:700;font-size:15px;padding:0 26px;border-radius:12px;min-height:52px;cursor:pointer;box-shadow:0 2px 6px rgba(254,104,71,.3)}
.nnh-searchband button:hover{filter:brightness(.94)}
.nnh-searchband .skyline{display:block;width:100%;height:56px;margin-bottom:-1px;position:relative;z-index:1}

/* ---------- Directory page ---------- */
.nnh-dirpage{display:grid;grid-template-columns:240px 1fr;gap:36px;padding-top:48px;padding-bottom:56px}
.nnh-dirpage .filters{align-self:start;position:sticky;top:84px}
.nnh-dirpage .filters h2{font-family:var(--nnh-display);font-size:17px;font-weight:700;margin-bottom:16px}
.nnh-dirpage .fgroup{border-top:1px dashed var(--nnh-line);padding:14px 0}
.nnh-dirpage .fgroup h3{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--nnh-ink-soft);margin-bottom:10px}
.nnh-dirpage .fgroup select{width:100%;font-family:var(--nnh-body);font-size:14px;padding:8px 10px;border:1px solid var(--nnh-line);border-radius:10px;background:#fff;color:var(--nnh-ink)}
.nnh-dirpage .clearall{font-size:13px;font-weight:600;color:var(--nnh-coral)}

.nnh-dirpage .results-head{display:flex;align-items:end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.nnh-dirpage .results-head h2{font-family:var(--nnh-display);font-size:25px;font-weight:700;letter-spacing:-0.01em}
.nnh-dirpage .results-head .meta{font-size:14px;color:var(--nnh-ink-soft);margin-top:12px}

/* Listing cards */
.nnh-page .card{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:20px;margin-bottom:20px;display:grid;grid-template-columns:96px 1fr auto;gap:20px;transition:box-shadow .15s ease,transform .15s ease}
.nnh-page .card:hover{box-shadow:0 6px 20px rgba(34,48,60,.09);transform:translateY(-1px)}
.nnh-page .card.featured{border:1.5px solid var(--nnh-gold);background:#FFFDF7}
.nnh-page .flabel{grid-column:1/-1;display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--nnh-amber);margin:-4px 0 -6px}
.nnh-page .flabel::after{content:"";height:1px;background:#F4E3C2;flex:1}
.nnh-page .thumb{width:96px;height:96px;border-radius:12px;display:grid;place-items:center;overflow:hidden}
.nnh-page .thumb img{width:100%;height:100%;object-fit:cover;border-radius:12px}
.nnh-page .thumb .initials{font-family:var(--nnh-display);font-weight:800;font-size:24px}
.nnh-page .thumb.blue{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold-line);color:var(--nnh-amber)}
.nnh-page .thumb.goldy{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold-line);color:var(--nnh-amber)}
.nnh-page .cbody h3{font-family:var(--nnh-display);font-size:19px;font-weight:700;letter-spacing:-0.01em;margin-bottom:2px}
.nnh-page .cbody h3 a{color:var(--nnh-ink)}
.nnh-page .cbody h3 a:hover{color:var(--nnh-blue);text-decoration:none}
.nnh-page .cmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;color:var(--nnh-ink-soft);margin-bottom:8px}
.nnh-page .stars{color:var(--nnh-gold);letter-spacing:1px;font-size:13px}
.nnh-page .dot::before{content:"·";margin:0 2px;color:#C4BBAC}
.nnh-page .status.open{font-weight:700;color:var(--nnh-green)}
.nnh-page .cbody p{font-size:14.5px;color:var(--nnh-ink);max-width:56ch}
.nnh-page .localnote{display:flex;gap:8px;align-items:flex-start;margin-top:10px;font-size:13.5px;color:var(--nnh-amber);background:var(--nnh-gold-tint);border-radius:10px;padding:8px 12px;max-width:56ch}
.nnh-page .localnote svg{flex:none;margin-top:1px}
.nnh-page .cactions{display:flex;flex-direction:column;gap:8px;justify-content:center;min-width:132px}

/* Pagination */
.nnh-page .pager{display:flex;gap:6px;justify-content:center;margin:28px 0 8px;flex-wrap:wrap}
.nnh-page .pager .page-numbers{min-width:38px;height:38px;display:grid;place-items:center;border-radius:99px;font-weight:600;font-size:14px;border:1px solid var(--nnh-line);background:#fff;color:var(--nnh-ink);padding:0 12px;text-decoration:none}
.nnh-page .pager .page-numbers.current{background:var(--nnh-blue);border-color:var(--nnh-blue);color:#fff}
.nnh-page .pager a.page-numbers:hover{border-color:var(--nnh-blue);color:var(--nnh-blue)}
.nnh-page .correction{text-align:center;font-size:13.5px;color:var(--nnh-ink-soft)}

/* Empty state */
.nnh-empty{background:var(--nnh-card);border:1px dashed var(--nnh-line);border-radius:var(--nnh-radius);padding:34px;text-align:center}
.nnh-empty h3{font-family:var(--nnh-display);font-size:19px;font-weight:700;margin-bottom:8px}
.nnh-empty p{color:var(--nnh-ink-soft);max-width:52ch;margin:0 auto 16px}

/* Towns strip */
.nnh-towns{padding:8px 0 42px}
.nnh-towns h2{font-family:var(--nnh-display);font-size:19px;font-weight:700;margin-bottom:16px}
.nnh-towns .row{display:flex;gap:8px;flex-wrap:wrap}
.nnh-towns .row a{font-size:13.5px;font-weight:600;color:var(--nnh-ink);background:#fff;border:1.5px solid var(--nnh-gold-border);padding:7px 14px;border-radius:99px}
.nnh-towns .row a:hover{border-color:var(--nnh-blue);color:var(--nnh-blue);text-decoration:none}

/* ---------- Profile ---------- */
.nnh-banner{position:relative;height:220px;background:linear-gradient(135deg,var(--nnh-blue) 0%,var(--nnh-blue-dark) 55%,var(--nnh-blue-deep) 100%);overflow:hidden}
.nnh-banner .banner-img{width:100%;height:100%;object-fit:cover;display:block}
.nnh-banner .hills{position:absolute;bottom:-1px;left:0;right:0;height:64px;width:100%}

.nnh-phead{background:transparent;border-bottom:0}
.nnh-phead .wrap{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap;padding-bottom:20px;position:relative}
.nnh-phead .plogo{width:96px;height:96px;border-radius:18px;background:var(--nnh-gold-tint);border:3px solid #fff;box-shadow:0 4px 14px rgba(34,48,60,.12);display:grid;place-items:center;color:var(--nnh-amber);margin-top:-34px;flex:none}
.nnh-phead .plogo .initials{font-family:var(--nnh-display);font-weight:800;font-size:28px}
.nnh-phead .pmain{flex:1;min-width:260px;padding-top:14px}
.nnh-page .crumbs{font-size:13px;color:var(--nnh-ink-soft);padding:10px 0 6px}
.nnh-page .crumbs a{color:var(--nnh-ink-soft)}
.nnh-page .crumbs span{margin:0 6px;color:#C4BBAC}
.nnh-phead h1{font-family:var(--nnh-display);font-size:clamp(24px,3vw,32px);font-weight:800;letter-spacing:-0.015em}
.nnh-phead .pmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;color:var(--nnh-ink-soft);margin-top:6px}
.nnh-page .verify{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;color:var(--nnh-green);background:var(--nnh-green-tint);padding:3px 10px;border-radius:99px}
.nnh-phead .pacts{display:flex;gap:10px;align-items:center;padding-top:18px;flex-wrap:wrap}
.nnh-phead .pacts .nnh-btn{font-size:14px;padding:10px 20px}

.nnh-profile{display:grid;grid-template-columns:1fr 336px;gap:36px;padding-top:36px;padding-bottom:50px}
.nnh-profile .col-main{min-width:0}
.nnh-profile section.block{margin-bottom:44px}
/* Design pattern: bare section heading on cream, content in white card(s) below. */
.nnh-profile .nnh-about{margin-bottom:44px}
.nnh-profile .nnh-about>.ptabs,.nnh-profile .nnh-about>.overview{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:22px 24px;margin-top:16px}
.nnh-profile .nnh-about>.localnote{margin-top:18px}
.nnh-profile section.block h2{font-family:var(--nnh-display);font-size:22px;font-weight:700;letter-spacing:-0.01em;margin-bottom:20px}
.nnh-profile .overview{max-width:68ch}
.nnh-profile .est{display:inline-flex;align-items:center;gap:7px;font-size:13px;font-weight:700;color:var(--nnh-blue-dark);background:var(--nnh-sky-tint);padding:4px 12px;border-radius:99px;margin-bottom:12px}

.nnh-profile .svc{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:16px;align-items:start}
.nnh-profile .svcgroup{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:14px;padding:22px 24px}
.nnh-profile .svcgroup h3{font-family:var(--nnh-body);font-size:12px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--nnh-ink-soft);margin-bottom:14px}
.nnh-profile .svcgroup ul{list-style:none;font-size:14px;color:var(--nnh-ink-soft);margin:0;padding:0}
.nnh-profile .svcgroup li{padding:3px 0;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}
.nnh-profile .svcgroup li em{font-style:normal;color:var(--nnh-ink);font-weight:600;white-space:normal;text-align:right;min-width:0}
.nnh-profile .svcnote{font-size:13px;color:var(--nnh-ink-soft);margin-top:16px;padding-top:14px;border-top:1px solid var(--nnh-gold-line);font-style:italic;line-height:1.55}
.nnh-profile .exp{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:14px;padding:22px 24px;margin-top:16px;font-size:15px;line-height:1.65}
.nnh-profile .trust{border-top:1px dashed var(--nnh-line);padding-top:16px;font-size:13.5px;color:var(--nnh-ink-soft)}

.nnh-profile .sidebar{align-self:start;position:sticky;top:84px;display:flex;flex-direction:column;gap:18px}
.nnh-profile .facts{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:20px}
.nnh-profile .facts h2{font-family:var(--nnh-display);font-size:16px;font-weight:700;margin-bottom:14px}
.nnh-profile details.facts{overflow:hidden}
.nnh-profile .facts > summary{list-style:none;display:flex;align-items:center;gap:8px;font-family:var(--nnh-display);font-size:16px;font-weight:700;cursor:default;margin-bottom:14px}
.nnh-profile .facts > summary::-webkit-details-marker{display:none}
.nnh-profile .facts > summary .facts-chev{display:none}
.nnh-profile .frow{padding:9px 0;border-top:1px dashed var(--nnh-line);font-size:14px}
.nnh-profile .frow:first-of-type{border-top:none;padding-top:0}
.nnh-profile .frow .lab{font-weight:700;display:block;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--nnh-ink-soft);margin-bottom:2px}
.nnh-profile .hours{width:100%;font-size:13.5px;border-collapse:collapse;margin-top:4px}
.nnh-profile .hours td{padding:2px 0;color:var(--nnh-ink-soft)}
.nnh-profile .hours td:last-child{text-align:right;color:var(--nnh-ink)}
.nnh-profile .sidecard{background:var(--nnh-sky-tint);border:1px solid #BEDFF6;border-radius:var(--nnh-radius);padding:16px;font-size:13.5px}
.nnh-profile .sidecard b{display:block;margin-bottom:4px}
.nnh-profile .sidecard h2{font-family:var(--nnh-display);font-size:22px;font-weight:700;letter-spacing:-0.01em;margin-bottom:12px}

.nnh-page .mobilebar{display:none}

/* ---------- Submission form ---------- */
.nnh-form .fcard{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:26px;margin-bottom:18px}
.nnh-form .fcard h3{font-family:var(--nnh-display);font-size:17px;font-weight:700;margin-bottom:4px}
.nnh-form .hint{font-size:13.5px;color:var(--nnh-ink-soft);margin-bottom:16px}
.nnh-form .grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.nnh-form .field{display:flex;flex-direction:column;gap:5px;margin:0 0 14px}
.nnh-form .field label{font-size:13px;font-weight:700}
.nnh-form .field label .opt{font-weight:500;color:var(--nnh-ink-soft)}
.nnh-form input[type=text],.nnh-form input[type=tel],.nnh-form input[type=url],.nnh-form input[type=email],.nnh-form select,.nnh-form textarea{font-family:var(--nnh-body);font-size:15px;padding:11px 13px;border:1px solid var(--nnh-line);border-radius:10px;background:#fff;color:var(--nnh-ink);width:100%}
.nnh-form textarea{min-height:110px;resize:vertical}
.nnh-form .note{font-size:12.5px;color:var(--nnh-ink-soft)}
.nnh-form .charm{font-size:12.5px;color:var(--nnh-amber);font-style:italic}
.nnh-form .checkline label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500}
.nnh-form .formfoot{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap}
.nnh-form .formfoot .small{font-size:13px;color:var(--nnh-ink-soft);max-width:46ch}
.nnh-form .nnh-hp{position:absolute !important;left:-9999px !important;height:0;overflow:hidden}
.nnh-form-thanks{background:var(--nnh-green-tint);border:1px solid var(--nnh-green);border-radius:var(--nnh-radius);padding:26px}
.nnh-form-thanks h3{font-family:var(--nnh-display);font-weight:800;margin-bottom:8px}
.nnh-form-error{background:var(--nnh-coral-tint);border:1px solid var(--nnh-coral);border-radius:10px;padding:12px 16px;margin-bottom:16px;font-size:14px}

/* ---------- Footer ---------- */
.nnh-footer{background:var(--nnh-ink);color:#C6CFD6;font-size:14px}
.nnh-footer .madein{display:flex;align-items:center;gap:10px;padding:22px 0 0;color:#93A1AC;font-size:13.5px;font-style:italic}
.nnh-footer .legal{padding:20px 0;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:13px;color:#93A1AC}
.nnh-footer .legal a{color:#93A1AC;margin-left:16px}

/* ---------- Responsive ---------- */
@media (max-width:920px){
  .nnh-dirpage{grid-template-columns:1fr}
  .nnh-dirpage .filters{position:static}
  /* Profile: unwrap the two columns so every section + sidebar card becomes
     one stacked flow, then pull the quick-facts / map / newsletter down to sit
     right before the "Handy nearby / more like this" tail. (v0.44.88) */
  .nnh-profile{display:flex;flex-direction:column;gap:26px}
  .nnh-profile > .col-main,.nnh-profile > .sidebar{display:contents}
  .nnh-profile section.block{margin-bottom:0}
  /* Mobile stack order: About, then the collapsible Business details, then the
     rest of the content, then contact/map cards, then the "nearby" tail.
     (Letter card + the second embedded map are dropped — the footer already
     carries the newsletter signup.) */
  .nnh-profile .nnh-facts{order:0}
  .nnh-profile section.block{order:1}
  .nnh-profile section.block.nnh-about{order:0}
  .nnh-profile .sidecard{order:2}
  .nnh-profile .sidecard.nnh-mapcard{order:0} /* map sits with About + Business details */
  .nnh-profile section.block.nnh-tail{order:3}
  .nnh-profile .svc,.nnh-form .grid2{grid-template-columns:1fr}
  /* Business details becomes a tap-to-expand button on mobile */
  .nnh-profile .facts > summary{cursor:pointer;margin-bottom:0}
  .nnh-profile .facts[open] > summary{margin-bottom:14px}
  .nnh-profile .facts > summary .facts-chev{display:inline-block;width:9px;height:9px;margin-left:auto;border-right:2px solid var(--nnh-ink-soft);border-bottom:2px solid var(--nnh-ink-soft);transform:rotate(45deg);transition:transform .2s ease}
  .nnh-profile .facts[open] > summary .facts-chev{transform:rotate(-135deg)}
  .nnh-searchband .searchbox{grid-template-columns:1fr}
  .nnh-searchband .field{border-right:none;border-bottom:1px solid var(--nnh-line)}
  .nnh-searchband button{padding:12px}
  .nnh-searchband .sun{display:none}
  .nnh-menu{display:none}
  .nnh-page .card{grid-template-columns:64px 1fr}
  .nnh-page .thumb{width:64px;height:64px}
  .nnh-page .cactions{grid-column:1/-1;flex-direction:row}
  .nnh-page .cactions .nnh-btn{flex:1}
  .nnh-page .mobilebar{display:flex;position:fixed;bottom:0;left:0;right:0;background:#fff;border-top:1px solid var(--nnh-line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));gap:10px;z-index:60}
  .nnh-page .mobilebar .nnh-btn{flex:1;padding:11px 8px}
  body.nnh-page.single-nnh_business{padding-bottom:70px}
}
@media (prefers-reduced-motion:reduce){
  body.nnh-page *{transition:none !important;transform:none !important}
}

/* =============================================================
   v0.2 — Homepage + List Your Business page sections
   ============================================================= */

.nnh-page .wrap.narrow{max-width:820px}

/* Seasonal ribbon */
.nnh-season{background:var(--nnh-gold-tint);border-top:1px solid var(--nnh-gold-line);border-bottom:1px solid var(--nnh-gold-line)}
.nnh-season .wrap{display:flex;align-items:center;gap:12px;padding-top:11px;padding-bottom:11px;font-size:14px;flex-wrap:wrap}
.nnh-season .flake{color:var(--nnh-amber);flex:none;display:flex}
.nnh-season .tag{background:var(--nnh-coral);color:#fff;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:4px 12px;border-radius:99px;white-space:nowrap}
.nnh-season .flake{display:none}

/* Generic home sections */
.nnh-home-sec{padding:48px 0}
.nnh-home-sec.alt{background:#fff;border-top:1px solid var(--nnh-line);border-bottom:1px solid var(--nnh-line)}
.nnh-home-sec h2{font-family:var(--nnh-display);font-size:24px;font-weight:700;letter-spacing:-0.01em;margin-bottom:24px}
.nnh-home-sec .lede{color:var(--nnh-ink-soft);font-size:14.5px;margin:6px 0 22px;max-width:64ch}
.nnh-home-sec .morelink{margin-top:18px;font-weight:600}

/* Category grid */
.catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.catcard{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:16px;display:flex;flex-direction:column;gap:4px;color:var(--nnh-ink);transition:transform .15s ease,border-color .15s ease}
.catcard:hover{transform:translateY(-2px);border-color:var(--nnh-blue);text-decoration:none}
.catcard .cic{width:36px;height:36px;border-radius:10px;background:var(--nnh-sky-tint);color:var(--nnh-blue);display:grid;place-items:center;margin-bottom:6px}
.catcard:nth-child(4n+2) .cic{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.catcard:nth-child(4n+3) .cic{background:var(--nnh-green-tint);color:var(--nnh-green)}
.catcard:nth-child(4n) .cic{background:var(--nnh-coral-tint);color:var(--nnh-coral)}
.catcard b{font-family:var(--nnh-body);font-size:14.5px;font-weight:700;color:var(--nnh-sky);line-height:1.3}
.catcard .cnt{font-size:12.5px;color:var(--nnh-ink-soft)}

/* Spotlights */
.spotgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.spot{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:18px}
.spot.featured{border:1.5px solid var(--nnh-gold);background:#FFFDF7}
.spot h3{font-family:var(--nnh-display);font-size:17px;font-weight:700;margin-bottom:4px}
.spot h3 a{color:var(--nnh-ink)}
.spot h3 a:hover{color:var(--nnh-blue);text-decoration:none}
.spot-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.spot-head h3{margin:0}
.spot-badge{width:40px;height:40px;border-radius:10px;background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold-line);color:var(--nnh-amber);display:grid;place-items:center;font:800 15px/1 var(--nnh-body);flex:none}
.spot p{font-size:14px;color:var(--nnh-ink)}
.spot .flabel{grid-column:auto;margin:0 0 8px}
.spot .localnote{font-size:13px}

/* Town chips on home */
.townrow{display:flex;gap:8px;flex-wrap:wrap}
.townrow a{font-size:13.5px;font-weight:600;color:var(--nnh-ink);background:#fff;border:1.5px solid var(--nnh-gold-border);padding:7px 14px;border-radius:99px}
.townrow a:hover{border-color:var(--nnh-blue);color:var(--nnh-blue);text-decoration:none}

/* CTA band */
.nnh-ctaband{background:linear-gradient(180deg,var(--nnh-blue) 0%,var(--nnh-blue-dark) 100%);color:#fff;padding:40px 0}
.nnh-ctaband .wrap{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}
.nnh-ctaband h2{font-family:var(--nnh-display);font-size:22px;font-weight:800;margin-bottom:6px;color:#fff}
.nnh-ctaband p{color:#C9E4F8;font-size:14.5px;max-width:56ch;margin:0}
.nnh-ctaband .nnh-btn{font-size:15px;padding:12px 22px}

/* List Your Business hero extras */
.nnh-lyb-hero .paths{display:flex;gap:12px;flex-wrap:wrap}
.nnh-btn.big{font-size:15px;padding:13px 24px}
.nnh-btn.outline{border:1.5px solid rgba(255,255,255,.55);color:#fff;background:transparent}
.nnh-btn.outline:hover{border-color:#fff;color:#fff}
.nnh-reassure{background:var(--nnh-gold-tint);border-bottom:1px solid var(--nnh-line)}
.nnh-reassure .wrap{display:flex;gap:26px;flex-wrap:wrap;padding-top:12px;padding-bottom:12px;font-size:14px}
.nnh-reassure .item{color:var(--nnh-amber);font-weight:600}

/* Steps */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.step{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:20px}
.step .num{width:34px;height:34px;border-radius:50%;background:var(--nnh-sky-tint);color:var(--nnh-blue);font-family:var(--nnh-display);font-weight:800;display:grid;place-items:center;margin-bottom:12px}
.step h3{font-family:var(--nnh-display);font-size:16.5px;font-weight:700;margin-bottom:6px}
.step p{font-size:14px;color:var(--nnh-ink-soft)}

/* Tiers */
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:stretch}
.tier{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:24px;display:flex;flex-direction:column}
.tier.popular{border:1.5px solid var(--nnh-gold);background:#FFFDF7;position:relative}
.tier .pop{position:absolute;top:-11px;left:20px;background:var(--nnh-gold);color:var(--nnh-ink);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;padding:3px 12px;border-radius:99px}
.tier h3{font-family:var(--nnh-display);font-size:18px;font-weight:700}
.tier .price{font-family:var(--nnh-display);font-size:30px;font-weight:800;margin:8px 0 2px}
.tier .per{font-size:13px;color:var(--nnh-ink-soft);margin-bottom:14px}
.tier ul{list-style:none;font-size:14px;flex:1;margin:0 0 18px;padding:0}
.tier li{padding:5px 0 5px 22px;position:relative}
.tier li::before{content:"✓";position:absolute;left:0;color:var(--nnh-green);font-weight:700}
.tier .nnh-btn{text-align:center}
.fineprint{font-size:13px;color:var(--nnh-ink-soft);margin-top:16px;max-width:70ch}

/* FAQ details */
.nnh-page details.policy{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:12px;margin-bottom:8px;overflow:hidden}
.nnh-page details.policy summary{list-style:none;cursor:pointer;padding:13px 16px;font-weight:700;font-size:14.5px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.nnh-page details.policy summary::-webkit-details-marker{display:none}
.nnh-page details.policy summary::after{content:"+";font-family:var(--nnh-display);font-size:18px;color:var(--nnh-blue);font-weight:700}
.nnh-page details.policy[open] summary::after{content:"–"}
.nnh-page details.policy .pbody{padding:0 16px 14px;font-size:14px;color:var(--nnh-ink-soft)}

@media (max-width:920px){
  .spotgrid,.steps,.tgrid{grid-template-columns:1fr}
  .nnh-ctaband .wrap{flex-direction:column;align-items:flex-start}
}

/* =============================================================
   v0.3 — Profile gallery, testimonials, related businesses
   ============================================================= */
.nnh-profile .gallery{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:110px;gap:10px}
.nnh-profile .gallery .ph{margin:0;border-radius:12px;overflow:hidden;position:relative}
.nnh-profile .gallery .ph.lead{grid-column:span 2;grid-row:span 2}
.nnh-profile .gallery .ph img{width:100%;height:100%;object-fit:cover;display:block}
.nnh-profile .gallery figcaption{position:absolute;left:0;right:0;bottom:0;padding:18px 10px 8px;font-size:12px;font-weight:600;color:#fff;background:linear-gradient(180deg,transparent,rgba(18,48,70,.65))}
.nnh-profile .testim{background:var(--nnh-card);border:1px dashed var(--nnh-gold);border-radius:var(--nnh-radius);padding:18px}
.nnh-profile .testim .disclose{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--nnh-amber);margin-bottom:10px}
.nnh-profile .testim blockquote{font-size:14.5px;font-style:italic;color:var(--nnh-ink);margin:0 0 10px}
.nnh-profile .testim cite{font-size:13px;color:var(--nnh-ink-soft);font-style:normal;display:block;margin-top:3px}
.nnh-profile .minigrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.nnh-profile .mini{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:14px;transition:transform .15s ease}
.nnh-profile .mini:hover{transform:translateY(-2px)}
.nnh-profile .mini h3{font-family:var(--nnh-display);font-size:15px;font-weight:700;line-height:1.3;margin-bottom:3px}
.nnh-profile .mini h3 a{color:var(--nnh-ink)}
.nnh-profile .mini .mm{font-size:12.5px;color:var(--nnh-ink-soft)}
.nnh-profile .mini .why{font-size:12.5px;color:var(--nnh-amber);margin-top:6px}
@media (max-width:920px){
  .nnh-profile .gallery{grid-template-columns:repeat(2,1fr)}
  .nnh-profile .minigrid{grid-template-columns:1fr}
}


/* =============================================================
   v0.4 — theme-override armor, hub pages, form photo upload
   ============================================================= */
body.nnh-page .nnh-site a,body.nnh-page .nnh-footer a,body.nnh-page .nnh-topbar a{text-decoration:none}
body.nnh-page .nnh-footer a{color:#C6CFD6 !important}
body.nnh-page .nnh-footer .legal a{color:#93A1AC !important}
@media (max-width:1120px){.nnh-menu{gap:16px}.nnh-menu a{font-size:14px}}

/* Hub pages */
.nnh-hubhero{background:linear-gradient(180deg,var(--nnh-blue) 0%,var(--nnh-blue-dark) 100%);color:#fff;padding:52px 0 0;position:relative;overflow:hidden}
.nnh-hubhero .inner{position:relative;z-index:2;padding-bottom:34px;max-width:760px}
.nnh-hubhero h1{font-family:var(--nnh-display);font-size:clamp(26px,3.4vw,36px);font-weight:800;letter-spacing:-0.015em;margin-bottom:8px;color:#fff}
.nnh-hubhero p{color:#C9E4F8;font-size:15.5px;margin:14px 0 0;max-width:62ch}
.nnh-hubhero h1 .accent{color:var(--nnh-gold)}
.nnh-hubhero .nnh-squiggle{display:block;color:var(--nnh-gold);margin:2px 0 0}
.hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
.hubcard{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:20px}
.hubcard h3{font-family:var(--nnh-display);font-size:17px;font-weight:700;margin-bottom:10px;display:flex;align-items:center;gap:9px}
.hubcard h3 .hic{width:36px;height:36px;border-radius:10px;background:var(--nnh-sky-tint);color:var(--nnh-blue);display:grid;place-items:center;flex:none;font:800 13.5px/1 var(--nnh-body);letter-spacing:.02em}
.hubcard:nth-child(3n) h3 .hic{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.hubcard:nth-child(3n+2) h3 .hic{background:var(--nnh-coral-tint);color:var(--nnh-coral)}
.hubcard ul{list-style:none;margin:0;padding:0;font-size:14px}
.hubcard li{padding:3px 0}
.hubcard li a{color:var(--nnh-sky);font-weight:600}
.hubcard li a:hover{color:var(--nnh-blue-dark);text-decoration:underline}
.hubcard .soon{color:#A9A093;font-style:italic;cursor:default}

/* Form photo upload */
.nnh-form .upload{border:2px dashed var(--nnh-line);border-radius:12px;background:#fff;padding:22px;text-align:center;color:var(--nnh-ink-soft);font-size:14px}
.nnh-form .upload input[type=file]{margin-top:8px}
.nnh-form .upload .tip{font-size:12.5px;margin-top:8px;font-style:italic;color:var(--nnh-amber)}

/* =============================================================
   v0.5 — mobile menu, four-column footer, newsletter
   ============================================================= */
.nnh-burger{display:none;background:none;border:1px solid var(--nnh-line);border-radius:10px;width:42px;height:42px;color:var(--nnh-ink);cursor:pointer;align-items:center;justify-content:center;margin-left:auto}
.nnh-mobilemenu{display:none;background:var(--nnh-card);border-top:1px solid var(--nnh-line);padding:14px 20px 22px;flex-direction:column;gap:2px}
.nnh-mobilemenu.open{display:flex}
.nnh-mobilemenu .msearch{display:flex;gap:8px;margin-bottom:10px}
.nnh-mobilemenu .msearch input{flex:1;font-family:var(--nnh-body);font-size:15px;padding:10px 13px;border:1px solid var(--nnh-line);border-radius:99px;background:#fff;min-width:0}
.nnh-mobilemenu .msearch button{background:var(--nnh-coral);border:none;font-family:var(--nnh-body);font-weight:700;font-size:14px;padding:0 18px;border-radius:99px;cursor:pointer;color:#fff}
.nnh-mobilemenu .mlink,.nnh-mobilemenu .grouphead{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;background:none;border:none;border-bottom:1px dashed var(--nnh-line);padding:12px 2px;font-family:var(--nnh-body);font-weight:700;font-size:15px;color:var(--nnh-ink) !important;text-decoration:none !important;cursor:pointer}
.nnh-mobilemenu .grouphead .chev{font-family:var(--nnh-display);color:var(--nnh-blue);font-size:18px;font-weight:700}
.nnh-mobilemenu .mgroup.open .grouphead .chev{transform:rotate(45deg)}
.nnh-mobilemenu .groupbody{display:none;padding:4px 0 8px 14px}
.nnh-mobilemenu .mgroup.open .groupbody{display:flex;flex-direction:column;gap:2px}
.nnh-mobilemenu .groupbody a{padding:7px 0;font-size:14px;font-weight:500;color:var(--nnh-ink) !important;text-decoration:none !important;border-bottom:none}
.nnh-mobilemenu .cta-m{color:var(--nnh-coral) !important}
.nnh-mobilemenu .mutil{display:flex;gap:18px;padding-top:12px}
.nnh-mobilemenu .mutil a{font-size:13.5px;color:var(--nnh-ink-soft) !important;text-decoration:none !important}
@media (max-width:920px){
  .nnh-burger{display:flex}
  .nnh-site .cta{display:none}
}
@media (min-width:921px){
  .nnh-mobilemenu{display:none !important}
}

/* Footer v2 */
.nnh-footer .fgrid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:32px;padding:40px 0 8px}
.nnh-footer h4{color:#fff;font-family:var(--nnh-display);font-size:14px;font-weight:700;margin:0 0 12px}
.nnh-footer ul{list-style:none;margin:0;padding:0}
.nnh-footer li{margin-bottom:8px}
.nnh-footer .news{background:#2C3A47;border-radius:var(--nnh-radius);padding:18px}
.nnh-footer .news h4{margin-bottom:2px}
.nnh-footer .news p{font-size:13.5px;margin:6px 0 12px;color:#C6CFD6}
.nnh-footer .news form{display:flex;gap:8px}
.nnh-footer .news input[type=email]{flex:1;border:none;border-radius:10px;padding:9px 12px;font-family:var(--nnh-body);font-size:14px;min-width:0}
.nnh-footer .news button{background:var(--nnh-coral);border:none;color:#fff;font-weight:700;font-size:14px;padding:9px 16px;border-radius:10px;cursor:pointer;font-family:var(--nnh-body)}
.nnh-footer .newsok{color:#8FD6A4 !important;font-weight:600}
.nnh-footer .newsbad{color:#FFB3A0 !important;font-weight:600}
.nnh-footer .nnh-hp{position:absolute !important;left:-9999px !important;height:0;overflow:hidden}
@media (max-width:920px){
  .nnh-footer .fgrid{grid-template-columns:1fr 1fr}
}
@media (max-width:560px){
  .nnh-footer .fgrid{grid-template-columns:1fr}
}

/* =============================================================
   v0.6 — reader reviews
   ============================================================= */
.nnh-profile .revsum{display:flex;gap:22px;align-items:center;padding:0 0 16px;margin-bottom:16px;border-bottom:1px solid var(--nnh-line);flex-wrap:wrap}
.nnh-profile .revsum .big{font-family:var(--nnh-display);font-size:44px;font-weight:800;line-height:1}
.nnh-profile .revsum .of{font-size:13px;color:var(--nnh-ink-soft)}
.nnh-profile .bars{flex:1;min-width:180px}
.nnh-profile .bar{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--nnh-ink-soft);padding:2px 0}
.nnh-profile .bar .track{flex:1;height:7px;background:var(--nnh-paper);border-radius:99px;overflow:hidden}
.nnh-profile .bar .fill{height:100%;background:var(--nnh-gold);border-radius:99px}
.nnh-profile .review{padding:14px 0;margin-bottom:0;border-top:1px solid var(--nnh-line)}
.nnh-profile .review .rhead{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:6px;font-size:13.5px;color:var(--nnh-ink-soft)}
.nnh-profile .review .rhead b{color:var(--nnh-ink);font-size:14.5px}
.nnh-profile .review p{font-size:14.5px;margin:0}
.nnh-profile .rsp{margin-top:12px;border-left:3px solid var(--nnh-gold);padding:8px 0 8px 14px;background:var(--nnh-gold-tint);border-radius:0 10px 10px 0;font-size:13.5px}
.nnh-profile .rsp b{display:block;color:var(--nnh-amber);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.nnh-profile .revfoot{font-size:13px;color:var(--nnh-ink-soft);margin-top:12px}
.nnh-profile .revform summary{color:var(--nnh-blue)}
.starpick{display:inline-flex;flex-direction:row-reverse;gap:2px}
.starpick input{position:absolute;opacity:0;width:1px;height:1px}
.starpick label{font-size:30px;color:#D8D0C0;cursor:pointer;line-height:1;padding:2px}
.starpick label:hover,.starpick label:hover ~ label,
.starpick input:checked ~ label{color:var(--nnh-gold)}
.starpick input:focus-visible + label{outline:3px solid var(--nnh-sky);outline-offset:2px;border-radius:6px}

/* =============================================================
   v0.7 — claim flow + owner dashboard
   ============================================================= */
.nnh-profile .sidecard .claimform summary{cursor:pointer;font-weight:700;color:var(--nnh-blue);padding:8px 0 2px;list-style:none}
.nnh-profile .sidecard .claimform summary::-webkit-details-marker{display:none}
.nnh-profile .sidecard .nnh-form.claim .field{margin-bottom:10px}
.nnh-profile .sidecard .nnh-form.claim input,.nnh-profile .sidecard .nnh-form.claim select,.nnh-profile .sidecard .nnh-form.claim textarea{font-size:14px;padding:9px 11px}
.nnh-profile .sidecard .note{font-size:12px;color:var(--nnh-ink-soft);font-style:italic}
.nnh-profile .sidecard.claimok{background:var(--nnh-green-tint);border-color:var(--nnh-green)}
.nnh-profile .sidecard .claimerr{color:var(--nnh-coral);font-size:13px;font-weight:600}
.nnh-profile .sidecard.ownerbar{background:var(--nnh-gold-tint);border-color:var(--nnh-gold)}

.nnh-ownerdash{padding-top:34px;padding-bottom:52px;max-width:900px}
.nnh-ownerdash .odcard{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:34px}
.nnh-ownerdash .odcard.center{text-align:center;max-width:560px;margin:30px auto}
.nnh-ownerdash .odcard h1{font-family:var(--nnh-display);font-size:24px;font-weight:800;margin-bottom:20px}
.nnh-ownerdash .odcard .small{font-size:13.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odhead{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.nnh-ownerdash .odhead h1{font-family:var(--nnh-display);font-size:25px;font-weight:800;letter-spacing:-0.015em}
.nnh-ownerdash .odhead .sub{color:var(--nnh-ink-soft);font-size:14px;margin-top:6px}
.nnh-ownerdash .odacts{display:flex;gap:8px;flex-wrap:wrap}
.nnh-ownerdash .fcard.locked{background:var(--nnh-gold-tint);border-color:#F1DFB9}
.nnh-ownerdash .fcard.locked .hint{margin-bottom:0;color:var(--nnh-amber)}

/* =============================================================
   v0.8 — stats, saved businesses, map embed
   ============================================================= */
.nnh-savebtn.saved{border-color:var(--nnh-coral);color:var(--nnh-coral)}
/* The embedded map under Business details duplicates the "Open in Maps" card
   below it — keep only the mapcard (which carries the Open-in-Maps link). */
.nnh-profile .mapbox{display:none}
.nnh-savedpage{padding-top:34px;padding-bottom:52px}
.nnh-savedpage .lede{color:var(--nnh-ink-soft);font-size:14.5px;margin:14px 0 22px}
.nnh-savedpage .minigrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.nnh-savedpage .mini{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:14px}
.nnh-savedpage .mini h3{font-family:var(--nnh-display);font-size:15px;font-weight:700;margin-bottom:8px}
.nnh-savedpage .mini h3 a{color:var(--nnh-ink)}
@media (max-width:920px){.nnh-savedpage .minigrid{grid-template-columns:1fr}}
.nnh-ownerdash .odstats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:6px}
.nnh-ownerdash .odstat{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:15px}
.nnh-ownerdash .odstat .lab{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odstat .big{font-family:var(--nnh-display);font-size:26px;font-weight:800;margin:2px 0}
.nnh-ownerdash .odstat .delta{font-size:12.5px;font-weight:700;color:var(--nnh-green)}
.nnh-ownerdash .odstatnote{font-size:12.5px;color:var(--nnh-ink-soft);margin-bottom:20px;font-style:italic}
@media (max-width:720px){.nnh-ownerdash .odstats{grid-template-columns:1fr 1fr}}

/* =============================================================
   v0.9 — plans & billing
   ============================================================= */
.nnh-ownerdash .plancard{border-color:var(--nnh-gold)}
.nnh-ownerdash .planopts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
.nnh-ownerdash .planopt{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:12px;padding:14px}
.nnh-ownerdash .planopt b{font-family:var(--nnh-display);font-size:16px}
.nnh-ownerdash .planopt .pprice{color:var(--nnh-ink-soft);font-size:13.5px;margin-left:6px}
.nnh-ownerdash .planopt .pbtns{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.nnh-btn.sm{padding:8px 14px;font-size:13.5px}
@media (max-width:640px){.nnh-ownerdash .planopts{grid-template-columns:1fr}}

/* v0.9.1 — claiming-mode banner */
.nnh-dirmain .claimbanner{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold);border-radius:var(--nnh-radius);padding:14px 18px;margin-bottom:18px;font-size:14.5px}
.nnh-dirmain .claimbanner b{display:block;font-family:var(--nnh-display);margin-bottom:2px}
.nnh-dirmain .claimbanner .alt{display:block;margin-top:6px;color:var(--nnh-ink-soft);font-size:13.5px}

/* =============================================================
   v0.10 — updates, health ring, review coaching
   ============================================================= */
.nnh-profile .updates .update{background:var(--nnh-paper);border-left:3px solid var(--nnh-sky);border-radius:0 8px 8px 0;padding:12px 16px;margin-bottom:10px}
.nnh-profile .update time{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--nnh-blue)}
.nnh-profile .update p{margin:4px 0 0;font-size:14.5px}
.nnh-profile .updnote{font-size:12.5px;color:var(--nnh-ink-soft);font-style:italic}
.nnh-ownerdash .odgrid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media (max-width:760px){.nnh-ownerdash .odgrid{grid-template-columns:1fr}}
.nnh-ownerdash .healthrow{display:flex;gap:18px;align-items:center}
.nnh-ownerdash .ring{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;flex:none}
.nnh-ownerdash .ring span{background:var(--nnh-card);width:64px;height:64px;border-radius:50%;display:grid;place-items:center;font-family:var(--nnh-display);font-weight:800;font-size:17px}
.nnh-ownerdash .hlist b{font-size:13.5px}
.nnh-ownerdash .hlist ul{margin:6px 0 0;padding-left:18px;font-size:13.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .hlist li{margin-bottom:3px}
.nnh-ownerdash .replybox{border:1px dashed var(--nnh-line);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.nnh-ownerdash .replybox summary{cursor:pointer;font-size:13.5px;font-weight:600}
.nnh-ownerdash .replybox blockquote{margin:10px 0;padding:8px 12px;background:var(--nnh-paper);border-radius:8px;font-size:13.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .replybox textarea{width:100%;margin-bottom:8px}
.nnh-ownerdash .copyrow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.nnh-ownerdash .copyrow code{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:8px;padding:7px 10px;font-size:12.5px;overflow:auto;max-width:100%}
.nnh-ownerdash .okline{color:var(--nnh-green);font-weight:700;font-size:13.5px}
.nnh-ownerdash .errline{color:var(--nnh-coral);font-weight:700;font-size:13.5px}
.nnh-ownerdash .updform textarea{width:100%;margin-bottom:8px}
.nnh-ownerdash .updlist{list-style:none;margin:14px 0 0;padding:0}
.nnh-ownerdash .updlist li{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;border-top:1px dashed var(--nnh-line);padding:9px 0;font-size:13.5px}
.nnh-ownerdash .updlist time{font-weight:700;color:var(--nnh-blue);margin-right:6px}
.nnh-ownerdash .dellink{background:none;border:none;color:var(--nnh-coral);font-size:12.5px;cursor:pointer;font-family:var(--nnh-body);padding:0}

/* v0.10.1 — plan-promise alignment */
.nnh-ownerdash .odstat.locked{opacity:.75;background:var(--nnh-paper)}
.nnh-ownerdash .odstat.locked .delta{color:var(--nnh-amber)}

/* v0.12 — membership model */
.nnh-form .planpick .pp{display:block;background:#fff;border:1px solid var(--nnh-line);border-radius:10px;padding:11px 14px;margin-top:8px;cursor:pointer;font-size:14.5px}
.nnh-form .planpick .pp:has(input:checked){border-color:var(--nnh-gold);background:var(--nnh-gold-tint)}
.nnh-form .planpick input{margin-right:6px}

/* v0.12.2 — two-tier grid (Basic removed) */
.nnh-listpage .tgrid.two{grid-template-columns:repeat(2,minmax(0,1fr));max-width:760px;margin-inline:auto}
@media (max-width:720px){.nnh-listpage .tgrid.two{grid-template-columns:1fr}}

/* v0.12.3 — in-form plan picker */
.nnh-form .planpickcard .pp{display:block;background:#fff;border:1px solid var(--nnh-line);border-radius:12px;padding:13px 16px;margin-top:10px;cursor:pointer;font-size:15px}
.nnh-form .planpickcard .pp:has(input:checked){border-color:var(--nnh-gold);background:var(--nnh-gold-tint);box-shadow:0 0 0 1px var(--nnh-gold)}
.nnh-form .planpickcard .pp input{margin-right:8px}
.nnh-form .planpickcard .pp b{font-family:var(--nnh-display)}
.nnh-form .planpickcard .pp .ppd{display:block;margin-left:24px;font-size:13px;color:var(--nnh-ink-soft)}

/* =============================================================
   v0.14 — dormant listings + similar businesses
   ============================================================= */
.nnh-profile .nnh-dormant-banner{display:flex;align-items:center;gap:10px;background:#F4F1EA;border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:12px 16px;margin-bottom:16px;font-size:14px;color:var(--nnh-ink-soft)}
.nnh-profile .nnh-dormant-banner .dot{width:9px;height:9px;border-radius:50%;background:#C9B98F;flex:none}
.nnh-profile .nnh-dormant-banner a{color:var(--nnh-blue);font-weight:600;white-space:nowrap}
.nnh-profile .nnh-similar .simgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
@media (max-width:640px){.nnh-profile .nnh-similar .simgrid{grid-template-columns:1fr}}
.nnh-profile .simcard{display:block;background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:14px 16px;text-decoration:none;transition:border-color .15s}
.nnh-profile .simcard:hover{border-color:var(--nnh-blue)}
.nnh-profile .simcard b{display:block;font-family:var(--nnh-display);font-size:15px;color:var(--nnh-ink);margin-bottom:3px}
.nnh-profile .simcard .simrate{display:block;font-size:12.5px;color:var(--nnh-amber);margin-bottom:2px}
.nnh-profile .simcard .simmeta{font-size:12.5px;color:var(--nnh-ink-soft)}

/* v0.16 — honest reports */
.nnh-profile .nnh-report-toggle{color:var(--nnh-blue);text-decoration:underline;font-weight:600}
.nnh-report-form .nnh-hp,.nnh-report-panel .nnh-hp{position:absolute !important;left:-9999px !important;width:1px;height:0;overflow:hidden}
.nnh-report-panel{max-width:64ch;margin:16px 0 0;background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:18px 20px}
.nnh-report-panel h3{font-family:var(--nnh-display);margin:0 0 6px}
.nnh-report-panel .nnh-report-intro{font-size:14px;color:var(--nnh-ink-soft);margin:0 0 14px}
.nnh-report-form label{display:block;font-size:13.5px;font-weight:600;margin-bottom:10px}
.nnh-report-form textarea,.nnh-report-form input[type=text],.nnh-report-form input[type=email]{width:100%;margin-top:4px;padding:9px 11px;border:1px solid var(--nnh-line);border-radius:9px;font:inherit;font-weight:400}
.nnh-report-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.nnh-report-row{grid-template-columns:1fr}}
.nnh-report-check{font-weight:400 !important;display:flex;align-items:center;gap:7px;margin:4px 0 8px}
.nnh-report-check input{width:auto}
.nnh-report-safe{font-size:12.5px;color:var(--nnh-ink-soft);margin:0 0 14px;font-style:italic}
.nnh-report-err{color:#b3261e;font-size:13.5px;margin:0 0 10px}
.nnh-report-thanks b{font-family:var(--nnh-display);font-size:16px}
.nnh-report-thanks p{font-size:14px;color:var(--nnh-ink-soft);margin:6px 0 0}

/* v0.17 — held listing notice */
.nnh-held-wrap{max-width:640px;margin:60px auto;padding:0 20px;text-align:center}
.nnh-held{background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:var(--nnh-radius);padding:40px 32px}
.nnh-held h1{font-family:var(--nnh-display);font-size:26px;margin:0 0 12px;color:var(--nnh-ink)}
.nnh-held p{color:var(--nnh-ink-soft);font-size:15px;margin:0 0 10px}
.nnh-held .nnh-held-owner{margin-top:18px;font-size:13.5px}

/* v0.18 — flag form reason + human check */
.nnh-report-form select{width:100%;margin-top:4px;padding:9px 11px;border:1px solid var(--nnh-line);border-radius:9px;font:inherit;font-weight:400;background:#fff}
.nnh-report-form .nnh-req-note{font-weight:400;color:var(--nnh-ink-soft);font-size:12px}
.nnh-report-human{border-top:1px solid var(--nnh-line);padding-top:12px;margin-top:4px}

/* Action-button dropdowns (Book now / Buy now grouping) */
.nnh-dd { position: relative; display: inline-block; }
.nnh-dd > summary { list-style: none; cursor: pointer; }
.nnh-dd > summary::-webkit-details-marker { display: none; }
.nnh-dd[open] > summary { box-shadow: 0 0 0 2px rgba(33,118,174,.25); }
.nnh-dd-menu {
	position: absolute; top: calc(100% + 8px); left: 0; z-index: 60;
	min-width: 260px; max-width: 92vw; background: #fff;
	border: 1px solid #EADFCE; border-radius: 12px;
	box-shadow: 0 12px 32px rgba(34,48,60,.16); padding: 6px;
}
.nnh-dd-menu a {
	display: flex; justify-content: space-between; align-items: baseline; gap: 16px;
	padding: 9px 12px; border-radius: 8px; text-decoration: none; color: inherit;
}
.nnh-dd-menu a:hover { background: var(--nnh-gold-tint); }
.nnh-dd-menu a b { white-space: nowrap; }
.nnh-dd-menu p { margin: 4px 8px 6px; font-size: .78em; opacity: .65; }
@media (max-width: 640px) { .nnh-dd-menu { left: auto; right: 0; } }

/* Velvet rope: locked dashboard sections render greyed with an upgrade tag */
.nnh-velvet { position: relative; }
.nnh-velvet .nnh-vfs { border: 0; padding: 0; margin: 0; }
.nnh-velvet fieldset[disabled] { opacity: .5; }
.nnh-vtag {
	position: absolute; top: 10px; right: 12px; z-index: 5;
	background: var(--nnh-gold-tint); border: 1px solid var(--nnh-gold); border-radius: 999px;
	padding: 3px 12px; font-size: .8em; font-weight: 700;
}
.nnh-vtag a { text-decoration: underline; }
div.nnh-velvet > .nnh-vtag { top: 4px; right: 0; }
/* Owner edit pencils on the public profile */
.nnh-pencil{display:inline-grid;place-items:center;width:26px;height:26px;margin-left:8px;border:1px solid #EADFCE;border-radius:999px;background:#fff;font-size:13px;text-decoration:none;vertical-align:middle;color:var(--nnh-blue-dark)}
.nnh-pencil:hover{background:var(--nnh-gold-tint);border-color:var(--nnh-gold)}

/* Breathing room: the content band was flush against the hero */
main.wrap.nnh-profile { padding-top: 56px !important; }
.nnh-profile .block:first-child .squiggle { margin-top: 0; }
/* Pencils: align cleanly with squiggle headings */
.squiggle .nnh-pencil { margin-left: 10px; margin-top: -4px; }
@media (max-width: 640px) { main.wrap.nnh-profile { padding-top: 30px !important; } }

/* Logo aligns with the company name (was riding up to breadcrumb level) */
.nnh-phead .plogo { margin-top: 24px !important; align-self: flex-start; }

/* Owner dashboard: breathing room + labeled sections */
main.wrap.nnh-ownerdash { padding-top: 44px !important; padding-bottom: 60px; }
.nnh-ownerdash .odhead { align-items: flex-start; margin-bottom: 26px; }
.nnh-ownerdash .odsec {
	display: flex; align-items: center; gap: 14px;
	margin: 40px 0 14px; font-size: 12px; font-weight: 800;
	letter-spacing: .12em; text-transform: uppercase; color: var(--nnh-ink-soft, #54636F);
}
.nnh-ownerdash .odsec::after { content: ""; flex: 1; height: 1px; background: var(--nnh-line, #EADFCE); }
.nnh-ownerdash .odsec:first-of-type { margin-top: 8px; }
.nnh-ownerdash .fcard { margin-bottom: 18px; }

/* ============ Owner dashboard app shell (v0.32) ============ */
.odshell { display: grid; grid-template-columns: 232px 1fr; gap: 34px; align-items: start; }
.odnav {
	position: sticky; top: 84px; background: #fff; border: 1px solid var(--nnh-line, #EADFCE);
	border-radius: 14px; padding: 14px;
}
.odnav .odbiz { display: flex; gap: 10px; align-items: center; margin: 2px 2px 12px; }
.odnav .odbiz-logo {
	width: 40px; height: 40px; flex: none; border-radius: 10px; display: grid; place-items: center;
	background: var(--nnh-ink, #22303C); color: #fff; font-weight: 800; font-family: var(--nnh-display);
}
.odnav .odbiz small { opacity: .65; }
.odnav .odswitch { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.odnav .odswitch a { font-size: .78em; border: 1px solid var(--nnh-line, #EADFCE); border-radius: 999px; padding: 2px 10px; text-decoration: none; color: inherit; }
.odnav .odswitch a.on { border-color: var(--nnh-blue); background: var(--nnh-sky-tint); font-weight: 700; }
.odnav nav { display: flex; flex-direction: column; gap: 2px; }
.odnav-item {
	display: flex; align-items: center; gap: 10px; padding: 9px 12px; border-radius: 9px;
	text-decoration: none; color: inherit; font-weight: 600; font-size: .95em;
}
.odnav-item .ic { width: 18px; text-align: center; opacity: .7; }
.odnav-item:hover { background: var(--nnh-gold-tint); }
.odnav-item.on { background: var(--nnh-ink, #22303C); color: #fff; }
.odnav-item.on .ic { opacity: 1; }
.odbadge {
	margin-left: auto; background: var(--nnh-coral); color: #fff; border-radius: 999px;
	min-width: 20px; height: 20px; display: grid; place-items: center; font-size: .72em; font-weight: 800; padding: 0 6px;
}
.odnav .odhealth {
	display: flex; gap: 10px; align-items: center; margin: 14px 2px 10px;
	border: 1px solid var(--nnh-line, #EADFCE); border-radius: 12px; padding: 10px; background: var(--nnh-card, #FFFDF7);
	font-size: .85em;
}
.odnav .odhealth .ring {
	width: 44px; height: 44px; flex: none; border-radius: 50%; display: grid; place-items: center;
	background: conic-gradient(#2E7D46 calc(var(--pct) * 1%), #EADFCE 0);
}
.odnav .odhealth .ring b { background: #fff; width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-size: .78em; }
.odnav .odview { display: block; margin: 6px 2px 0; font-weight: 700; }
.odmain { min-width: 0; }
.odmain > .fcard, .odmain .odstats, .odmain .odgrid, .odmain .updcard { margin-top: 0; }
.odsavebar {
	position: sticky; bottom: 0; z-index: 40; display: flex; justify-content: space-between; align-items: center; gap: 16px;
	background: rgba(255, 253, 247, .96); backdrop-filter: blur(4px);
	border-top: 1px solid var(--nnh-line, #EADFCE); margin-top: 18px; padding: 12px 4px;
}
/* v0.47.0 — AI "Write/Rewrite with AI" buttons are amber text (matches every
   Listing Editor mockup; amber is the AI/charm color, blue is for links). */
.nnh-ai { background: none !important; border: 0 !important; color: #B8791E !important; font-weight: 700; font-size: 12.5px; cursor: pointer; padding: 4px 0 !important; }
.nnh-ai:hover { color: #8F5D14 !important; text-decoration: none; }
@media (max-width: 900px) {
	.odshell { grid-template-columns: 1fr; }
	.odnav { position: static; }
	.odnav nav { flex-direction: row; flex-wrap: wrap; }
	.odnav-item { padding: 7px 11px; }
}

/* ============ Owner dashboard layout refresh (v0.32.3) ============
 * Layout follows the approved dashboard reference while preserving the
 * Native New Hampshire theme palette, global header/navigation, and data UI.
 */
main.wrap.nnh-ownerdash {
	max-width: 1280px !important;
	width: calc(100% - 40px);
	padding-top: 28px !important;
	padding-bottom: 96px;
}
.nnh-ownerdash .odshell {
	display: grid;
	grid-template-columns: 248px minmax(0, 1fr);
	gap: 0;
	align-items: start;
}
.nnh-ownerdash .odnav {
	position: sticky;
	top: 90px;
	width: auto;
	box-sizing: border-box;
	background: transparent;
	border: 0;
	border-radius: 0;
	padding: 0 18px 28px 8px;
}
.nnh-ownerdash .odnav .odbiz {
	gap: 12px;
	margin: 0 0 22px;
}
.nnh-ownerdash .odnav .odbiz-logo {
	width: 46px;
	height: 46px;
	border-radius: 12px;
	font-size: 16px;
}
.nnh-ownerdash .odnav .odbiz b {
	display: inline-block;
	font-size: 15.5px;
	line-height: 1.2;
}
.nnh-ownerdash .odnav .odbiz small {
	display: inline-block;
	margin-top: 3px;
	font-size: 12px;
	line-height: 1.3;
}
.nnh-ownerdash .odnav .odswitch {
	margin: -10px 0 16px;
}
.nnh-ownerdash .odnav nav {
	gap: 3px;
}
.nnh-ownerdash .odnav-item {
	min-height: 40px;
	box-sizing: border-box;
	padding: 10px 12px;
	border-radius: 9px;
	font-size: 14px;
	font-weight: 500;
	line-height: 1.25;
}
.nnh-ownerdash .odnav-item.on {
	font-weight: 700;
	background: var(--nnh-ink, #22303C);
}
.nnh-ownerdash .odnav-item .ic {
	width: 20px;
	flex: 0 0 20px;
}
.nnh-ownerdash .odbadge {
	min-width: 20px;
	height: 20px;
	font-size: 11px;
}
.nnh-ownerdash .odnav .odhealth {
	margin: 22px 0 12px;
	padding: 14px;
	gap: 12px;
	border-radius: 12px;
	background: var(--nnh-card, #FFFDF7);
	font-size: 12px;
	line-height: 1.35;
}
.nnh-ownerdash .odnav .odhealth .ring {
	width: 44px;
	height: 44px;
}
.nnh-ownerdash .odnav .odhealth .ring b {
	width: 34px;
	height: 34px;
	font-size: 11px;
}
.nnh-ownerdash .odnav .odview {
	margin: 0;
	font-size: 13px;
}
.nnh-ownerdash .odmain {
	min-width: 0;
	padding: 0 8px 24px 18px;
}
/* v0.46.8 — Overview greeting becomes the navy→blue gradient hero (matches
   My Business mockup): mountain motif, amber squiggle, light-on-dark actions.
   Overview-tab only; other tabs use their own .odsec headers. */
.nnh-ownerdash .odhead {
	position: relative;
	overflow: hidden;
	background: linear-gradient(135deg, #22334A 0%, #29597F 100%);
	border-radius: 16px;
	padding: 28px 30px;
	margin: 0 0 20px;
	gap: 18px;
}
.nnh-ownerdash .odhead::after {
	content: "";
	position: absolute;
	right: -20px;
	bottom: -12px;
	width: 220px;
	height: 120px;
	opacity: .16;
	pointer-events: none;
	background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="220" height="120" viewBox="0 0 220 120"><path d="M0 120 L70 30 L110 85 L140 48 L220 120 Z" fill="%23F5A93B"/><path d="M70 30 L86 58 L70 70 L54 58 Z" fill="%23FFFFFF"/></svg>') no-repeat;
}
.nnh-ownerdash .odhead > div { position: relative; z-index: 1; min-width: 0; }
.nnh-ownerdash .odhead h1 {
	font-size: clamp(24px, 2.2vw, 30px);
	line-height: 1.15;
	margin: 0;
	color: #fff;
}
.nnh-ownerdash .odhead h1::after {
	content: "";
	display: block;
	width: 56px;
	height: 6px;
	margin-top: 10px;
	background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="56" height="6" viewBox="0 0 56 6"><path d="M1 4 Q8 1 15 4 T29 4 T43 4 T55 4" fill="none" stroke="%23F5A93B" stroke-width="2" stroke-linecap="round"/></svg>') no-repeat;
}
.nnh-ownerdash .odhead .sub {
	margin-top: 14px;
	font-size: 14px;
	color: #C8D3E0;
}
.nnh-ownerdash .odhead .sub .stars { color: var(--nnh-gold); }
.nnh-ownerdash .odhead .odacts .nnh-btn.ghost {
	background: rgba(255,255,255,.10);
	border-color: rgba(255,255,255,.32);
	color: #fff;
}
.nnh-ownerdash .odhead .odacts .nnh-btn.ghost:hover {
	background: rgba(255,255,255,.20);
	border-color: #fff;
}
.nnh-ownerdash .odstats {
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: 14px;
	margin: 0 0 8px;
}
.nnh-ownerdash .odstat {
	min-width: 0;
	padding: 16px 18px;
	border-radius: 14px;
}
.nnh-ownerdash .odstat .lab {
	font-size: 11px;
	letter-spacing: .08em;
}
.nnh-ownerdash .odstat .big {
	font-size: 30px;
	line-height: 1.05;
	margin-top: 5px;
}
.nnh-ownerdash .odstatnote {
	margin: 0 0 20px;
	font-size: 12px;
}
.nnh-ownerdash .odgrid {
	grid-template-columns: minmax(0, 1.4fr) minmax(260px, 1fr);
	gap: 14px;
	margin-bottom: 14px;
}
.nnh-ownerdash .fcard {
	box-sizing: border-box;
	border-radius: 14px;
	padding: 20px 22px;
	margin-bottom: 14px;
}
.nnh-ownerdash .fcard h2,
.nnh-ownerdash .fcard h3 {
	line-height: 1.25;
}
.nnh-ownerdash .odsec {
	margin: 28px 0 12px;
}
.nnh-ownerdash input:not([type="checkbox"]):not([type="radio"]):not([type="submit"]):not([type="button"]),
.nnh-ownerdash select,
.nnh-ownerdash textarea {
	box-sizing: border-box;
	max-width: 100%;
	border-radius: 10px;
}
.nnh-ownerdash textarea {
	line-height: 1.5;
}
.nnh-ownerdash .odsavebar {
	position: sticky;
	bottom: 0;
	z-index: 40;
	margin: 18px -8px -24px -18px;
	padding: 12px 18px;
	border-top: 1px solid var(--nnh-line, #EADFCE);
	box-shadow: 0 -4px 16px rgba(34,48,60,.06);
	background: color-mix(in srgb, var(--nnh-card, #FFFDF7) 96%, transparent);
}

@media (max-width: 1100px) {
	main.wrap.nnh-ownerdash { width: calc(100% - 28px); }
	.nnh-ownerdash .odshell { grid-template-columns: 220px minmax(0, 1fr); }
	.nnh-ownerdash .odnav { padding-right: 14px; }
	.nnh-ownerdash .odmain { padding-left: 14px; }
}
@media (max-width: 900px) {
	main.wrap.nnh-ownerdash { width: calc(100% - 24px); padding-top: 20px !important; }
	.nnh-ownerdash .odshell { grid-template-columns: 1fr; }
	.nnh-ownerdash .odnav {
		position: static;
		padding: 0 0 18px;
		border-bottom: 1px solid var(--nnh-line, #EADFCE);
		margin-bottom: 22px;
	}
	.nnh-ownerdash .odnav .odbiz { margin-bottom: 14px; }
	.nnh-ownerdash .odnav nav {
		display: flex;
		flex-direction: row;
		flex-wrap: nowrap;
		gap: 6px;
		overflow-x: auto;
		padding-bottom: 5px;
		-webkit-overflow-scrolling: touch;
	}
	.nnh-ownerdash .odnav-item { flex: 0 0 auto; min-height: 36px; padding: 8px 11px; }
	.nnh-ownerdash .odnav .odhealth,
	.nnh-ownerdash .odnav .odview { display: none; }
	.nnh-ownerdash .odmain { padding: 0 0 22px; }
	.nnh-ownerdash .odsavebar { margin-left: 0; margin-right: 0; }
}
@media (max-width: 760px) {
	.nnh-ownerdash .odstats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.nnh-ownerdash .odgrid { grid-template-columns: 1fr; }
	.nnh-ownerdash .fcard { padding: 18px; }
	.nnh-ownerdash .odacts { display: none; }
}
@media (max-width: 520px) {
	main.wrap.nnh-ownerdash { width: calc(100% - 18px); }
	.nnh-ownerdash .odstats { gap: 10px; }
	.nnh-ownerdash .odstat { padding: 14px; }
	.nnh-ownerdash .odstat .big { font-size: 26px; }
	.nnh-ownerdash .fcard { padding: 16px; }
	.nnh-ownerdash .odsavebar { flex-direction: column; align-items: stretch; }
}

/* ============ Owner dashboard overview polish (v0.32.4) ============
 * Match the approved dashboard composition: metrics, then Updates + Reviews.
 * This intentionally styles overview cards outside .nnh-form as real cards.
 */
.nnh-ownerdash .fcard {
	background: var(--nnh-card, #FFFDF7);
	border: 1px solid var(--nnh-line, #EADFCE);
}
.nnh-ownerdash .odhead .odacts { display: none; }
.nnh-ownerdash .odoverview-grid {
	grid-template-columns: minmax(0, 1.4fr) minmax(300px, 1fr);
	align-items: stretch;
	margin-top: 18px;
}
.nnh-ownerdash .odoverview-grid > .fcard {
	margin-bottom: 0;
	min-width: 0;
}
.nnh-ownerdash .odoverview-grid .fcard h3 {
	font-family: var(--nnh-display);
	font-size: 17px;
	font-weight: 700;
	margin: 0 0 10px;
}
.nnh-ownerdash .odoverview-grid .hint {
	font-size: 13px;
	line-height: 1.5;
	margin: 0 0 10px;
	color: var(--nnh-ink-soft);
}
.nnh-ownerdash .odoverview-grid .updform {
	margin-top: 10px;
}
.nnh-ownerdash .odoverview-grid .updform textarea {
	min-height: 64px;
	margin-bottom: 10px;
	background: #fff;
}
.nnh-ownerdash .odform-actions {
	display: flex;
	justify-content: flex-end;
}
.nnh-ownerdash .odoverview-grid .updlist {
	margin-top: 10px;
}
.nnh-ownerdash .odreview-copy {
	display: block;
}
.nnh-ownerdash .odreview-copy code {
	display: block;
	width: 100%;
	box-sizing: border-box;
	white-space: normal;
	word-break: break-word;
	margin-bottom: 10px;
	background: var(--nnh-paper, #F6F0E5);
}
.nnh-ownerdash .odstat {
	background: var(--nnh-card, #FFFDF7);
	border: 1px solid var(--nnh-line, #EADFCE);
}
@media (max-width: 760px) {
	.nnh-ownerdash .odoverview-grid { grid-template-columns: 1fr; }
}

/* ============ Owner dashboard listing polish (v0.32.5) ============
 * Match the approved listing mockup: page heading, compact cards, inline AI
 * actions, balanced field grids, and no browser-default fieldset boxes.
 */
.nnh-ownerdash .odpagehead {
	margin: 0 0 18px;
}
.nnh-ownerdash .odpagehead h1 {
	margin: 0;
	font-family: var(--nnh-display);
	font-size: clamp(24px, 2.1vw, 28px);
	line-height: 1.15;
	font-weight: 800;
}
.nnh-ownerdash .odpagehead p {
	margin: 4px 0 0;
	color: var(--nnh-ink-soft);
	font-size: 14px;
	line-height: 1.4;
}
.nnh-ownerdash .odlisting-card {
	padding: 22px;
	margin-bottom: 16px;
}
.nnh-ownerdash .odlisting-card > h3 {
	margin: 0 0 14px;
	font-size: 17px;
	font-weight: 800;
}
.nnh-ownerdash .odlisting-card .field {
	position: relative;
	margin-bottom: 14px;
}
.nnh-ownerdash .odlisting-card .field:last-child {
	margin-bottom: 0;
}
.nnh-ownerdash .odlisting-card .field label {
	line-height: 1.25;
}
.nnh-ownerdash .odlisting-card .field.has-ai > label {
	padding-right: 145px;
}
.nnh-ownerdash .odlisting-card .field.has-ai > .nnh-ai {
	position: absolute;
	top: -4px;
	right: 0;
	z-index: 2;
	font-size: 12.5px;
	line-height: 1.3;
	padding: 4px 0 !important;
}
.nnh-ownerdash .odabout-bottom {
	display: grid;
	grid-template-columns: minmax(0, 1.6fr) minmax(220px, 1fr);
	gap: 14px;
	align-items: start;
}
.nnh-ownerdash .odabout-bottom .field {
	margin-bottom: 0;
}
.nnh-ownerdash .odlisting-card .grid2 {
	gap: 0 14px;
}
.nnh-ownerdash .odlisting-card input:not([type="checkbox"]):not([type="radio"]),
.nnh-ownerdash .odlisting-card textarea,
.nnh-ownerdash .odlisting-card select {
	border: 1px solid var(--nnh-line, #EADFCE);
	background: #fff;
}
.nnh-ownerdash .odlisting-card textarea {
	resize: vertical;
}
.nnh-ownerdash .odlisting-card .charm {
	display: block;
	margin-top: 3px;
	font-size: 12px;
	line-height: 1.35;
}
.nnh-ownerdash .odlisting-card fieldset.nnh-vfs {
	border: 0;
	padding: 0;
	margin: 0;
	min-width: 0;
}
.nnh-ownerdash .odlisting-card > div:not(.grid2):not(.odabout-bottom).nnh-velvet,
.nnh-ownerdash .odlisting-card .grid2 > div {
	min-width: 0;
}
.nnh-ownerdash .odlisting-card .nnh-vfs .field {
	margin-bottom: 14px;
}
.nnh-ownerdash .odlisting-card .grid2:last-child .nnh-vfs .field {
	margin-bottom: 0;
}
.nnh-ownerdash .odsavebar {
	left: 0;
	right: 0;
}
@media (max-width: 760px) {
	.nnh-ownerdash .odabout-bottom { grid-template-columns: 1fr; }
	.nnh-ownerdash .odlisting-card .field.has-ai > label { padding-right: 0; }
	.nnh-ownerdash .odlisting-card .field.has-ai > .nnh-ai {
		position: static;
		align-self: flex-end;
		order: 3;
	}
}

/* 0.32.6 — reserve the final Social media block in the Listing layout.
 * Inputs are intentionally disabled until persistence/public rendering are wired. */
.nnh-ownerdash .odsocial-placeholder {
	border-top: 1px dashed var(--nnh-line, #EADFCE);
	padding-top: 14px;
	margin-top: 2px;
}
.nnh-ownerdash .odsocial-head {
	display: flex;
	align-items: baseline;
	gap: 8px;
	margin-bottom: 10px;
}
.nnh-ownerdash .odsocial-head strong {
	font-size: 13px;
	font-weight: 700;
}
.nnh-ownerdash .odsocial-head span {
	font-size: 12px;
	color: var(--nnh-ink-soft);
}
.nnh-ownerdash .odsocial-grid {
	row-gap: 10px !important;
}
.nnh-ownerdash .odsocial-row {
	display: grid;
	grid-template-columns: 96px minmax(0, 1fr);
	align-items: stretch;
	margin: 0;
}
.nnh-ownerdash .odsocial-row > span {
	display: flex;
	align-items: center;
	padding: 0 12px;
	border: 1px solid var(--nnh-line, #EADFCE);
	border-right: 0;
	border-radius: 9px 0 0 9px;
	background: var(--nnh-paper, #F7F2E9);
	font-size: 12.5px;
	font-weight: 700;
	white-space: nowrap;
}
.nnh-ownerdash .odlisting-card .odsocial-row input {
	margin: 0;
	border-radius: 0 9px 9px 0;
	opacity: 1;
	background: #fff;
	color: var(--nnh-ink);
}
@media (max-width: 760px) {
	.nnh-ownerdash .odsocial-head { align-items: flex-start; flex-direction: column; gap: 2px; }
	.nnh-ownerdash .odsocial-row { grid-template-columns: 90px minmax(0, 1fr); }
}

/* ============ Owner dashboard Photos polish (v0.32.7) ============ */
.nnh-ownerdash .odphotos-head { margin-bottom:18px; }
.nnh-ownerdash .odphotos-top {
	display:grid;
	grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr);
	gap:14px;
	align-items:start;
	margin-bottom:14px;
}
.nnh-ownerdash .odphoto-card { padding:22px; margin-bottom:0; }
.nnh-ownerdash .odphoto-card fieldset.nnh-vfs { border:0; padding:0; margin:0; min-width:0; }
.nnh-ownerdash .odphoto-title { display:flex; align-items:baseline; gap:8px; margin-bottom:12px; }
.nnh-ownerdash .odphoto-title strong { font-family:var(--nnh-display); font-size:16px; font-weight:800; }
.nnh-ownerdash .odphoto-title span { font-size:12.5px; color:var(--nnh-ink-soft); }
.nnh-ownerdash .odbanner-preview {
	position:relative; aspect-ratio:3/1; overflow:hidden; border-radius:10px;
	background:repeating-linear-gradient(45deg,#eee8db,#eee8db 10px,#f5f0e5 10px,#f5f0e5 20px);
	display:grid; place-items:center;
}
.nnh-ownerdash .odbanner-image { width:100%; height:100%; object-fit:cover; display:block; }
.nnh-ownerdash .odphoto-empty { font-size:12px; color:var(--nnh-ink-soft); background:rgba(255,255,255,.8); padding:5px 10px; border-radius:7px; }
.nnh-ownerdash .odbanner-actions { position:absolute; top:10px; right:10px; display:flex; gap:8px; z-index:2; }
.nnh-ownerdash .odbanner-actions .nnh-btn { cursor:pointer; margin:0; }
.nnh-ownerdash .odphoto-replace { background:var(--nnh-blue-deep,#173B5C); color:#fff !important; border:0; }
.nnh-ownerdash .odphoto-remove { background:#C95E44; color:#fff !important; border:0; }
.nnh-ownerdash .odphoto-remove input,
.nnh-ownerdash .odgallery-remove input { position:absolute; opacity:0; pointer-events:none; }
.nnh-ownerdash .odphoto-remove:has(input:checked),
.nnh-ownerdash .odgallery-remove:has(input:checked) { outline:3px solid rgba(201,94,68,.22); }
.nnh-ownerdash .odfile-input { position:absolute !important; width:1px !important; height:1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; }
.nnh-ownerdash .odphoto-drop {
	display:block; box-sizing:border-box; margin-top:12px; padding:16px; text-align:center; cursor:pointer;
	border:2px dashed rgba(31,111,178,.35); border-radius:10px; background:rgba(31,111,178,.035);
	font-size:13px; color:var(--nnh-blue); line-height:1.4;
}
.nnh-ownerdash .odphoto-drop:hover { background:rgba(31,111,178,.07); }
.nnh-ownerdash .odlogo-row { display:flex; gap:14px; align-items:center; }
.nnh-ownerdash .odlogo-preview {
	width:72px; height:72px; flex:none; border-radius:16px; background:var(--nnh-blue-deep,#173B5C); color:#fff;
	display:grid; place-items:center; font-family:var(--nnh-display); font-size:22px; font-weight:800; overflow:hidden;
}
.nnh-ownerdash .odlogo-image { width:100%; height:100%; object-fit:cover; display:block; }
.nnh-ownerdash .odlogo-drop { flex:1; margin-top:0; padding:15px 10px; }
.nnh-ownerdash .odlogo-remove { display:inline-flex; align-items:center; gap:6px; margin-top:10px; font-size:12px; color:#B34D38; cursor:pointer; }
.nnh-ownerdash .odlogo-hint { margin:12px 0 0; font-size:12px; line-height:1.4; }
.nnh-ownerdash .odgallery-card { margin-top:14px; }
.nnh-ownerdash .odgallery-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:12px; }
.nnh-ownerdash .odgallery-item {
	position:relative; aspect-ratio:1; overflow:hidden; border-radius:10px;
	background:repeating-linear-gradient(45deg,#eee8db,#eee8db 8px,#f5f0e5 8px,#f5f0e5 16px);
}
.nnh-ownerdash .odgallery-image { width:100%; height:100%; object-fit:cover; display:block; }
.nnh-ownerdash .odgallery-remove {
	position:absolute; top:6px; right:6px; width:25px; height:25px; border-radius:50%; cursor:pointer;
	background:rgba(23,59,92,.82); color:#fff; display:grid; place-items:center; font-size:16px; line-height:1;
}
.nnh-ownerdash .odgallery-remove:hover { background:#C95E44; }
.nnh-ownerdash .odgallery-add {
	aspect-ratio:1; border:2px dashed rgba(31,111,178,.35); border-radius:10px; background:rgba(31,111,178,.025);
	display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; cursor:pointer;
	color:var(--nnh-blue); font-size:12.5px; font-weight:600;
}
.nnh-ownerdash .odgallery-add:hover { background:rgba(31,111,178,.07); }
.nnh-ownerdash .odgallery-add .plus { font-size:22px; line-height:1; }
@media (max-width:900px) {
	.nnh-ownerdash .odphotos-top { grid-template-columns:1fr; }
	.nnh-ownerdash .odgallery-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media (max-width:560px) {
	.nnh-ownerdash .odphoto-card { padding:16px; }
	.nnh-ownerdash .odphoto-title { align-items:flex-start; flex-direction:column; gap:2px; }
	.nnh-ownerdash .odgallery-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
	.nnh-ownerdash .odlogo-row { align-items:stretch; }
}

/* ============ Owner dashboard Bookings & payments polish (v0.32.8) ============ */
.nnh-ownerdash .odbooking-head{margin-bottom:18px}
.nnh-ownerdash .odbooking-head h1{margin:0 0 3px;font-family:var(--nnh-display);font-size:24px;line-height:1.2}
.nnh-ownerdash .odbooking-head p{margin:0;max-width:76ch;color:var(--nnh-ink-soft);font-size:14px;line-height:1.45}
.nnh-ownerdash .odbooking-notice{margin:-6px 0 12px}
.nnh-ownerdash .odbooking-form{padding-bottom:74px}
.nnh-ownerdash .odbooking-card{padding:22px;margin-bottom:14px}
.nnh-ownerdash .odcard-headline{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:12px}
.nnh-ownerdash .odcard-headline h2,.nnh-ownerdash .odrestaurant-card h2{margin:0;font-family:var(--nnh-display);font-size:16px;line-height:1.2}
.nnh-ownerdash .odcard-headline>span{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odaction-row{display:grid;grid-template-columns:24px minmax(130px,.72fr) minmax(180px,1.1fr) 90px minmax(250px,1.55fr) 22px;gap:10px;align-items:center;background:#fff;border:1px solid var(--nnh-line);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.nnh-ownerdash .odaction-row select,.nnh-ownerdash .odaction-row input{box-sizing:border-box;width:100%;min-width:0;height:38px;margin:0;padding:8px 10px;border:1px solid #ccd6df;border-radius:8px;background:#fff;color:var(--nnh-ink);font:500 13px var(--nnh-body);outline:none}
.nnh-ownerdash .odaction-row select:focus,.nnh-ownerdash .odaction-row input:focus{border-color:var(--nnh-blue);box-shadow:0 0 0 3px rgba(31,111,178,.10)}
.nnh-ownerdash .odaction-grip{color:#b7a98e;text-align:center;cursor:grab;font-size:16px}
.nnh-ownerdash .odaction-price{text-align:right}
.nnh-ownerdash .odaction-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace!important;font-size:12px!important}
.nnh-ownerdash .odaction-clear{border:0;background:transparent;color:#c95e44;font-size:19px;line-height:1;cursor:pointer;padding:0}
.nnh-ownerdash .odbooking-charm{margin:2px 0 0;font-size:12px}
.nnh-ownerdash .odpayments-card{margin-bottom:0}
.nnh-ownerdash .odpayments-head{justify-content:flex-start;gap:8px;margin-bottom:12px}
.nnh-ownerdash .odpayment-pills{display:flex;flex-wrap:wrap;gap:8px}
.nnh-ownerdash .odpayment-pill{position:relative;display:inline-flex;margin:0;cursor:pointer}
.nnh-ownerdash .odpayment-pill input{position:absolute;opacity:0;pointer-events:none}
.nnh-ownerdash .odpayment-pill span{display:inline-flex;align-items:center;min-height:34px;padding:7px 14px;border:1.5px solid var(--nnh-line);border-radius:999px;background:#fff;color:var(--nnh-ink-soft);font-size:12.5px;font-weight:700;line-height:1}
.nnh-ownerdash .odpayment-pill.is-on span,.nnh-ownerdash .odpayment-pill:has(input:checked) span{border-color:var(--nnh-green);background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-ownerdash .odpayment-note{margin:12px 0 0;line-height:1.45;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odbooking-savebar{left:0;right:0}
.nnh-ownerdash .odrestaurant-top{display:flex;align-items:flex-start;gap:14px;margin-bottom:14px}
.nnh-ownerdash .odrestaurant-top p{margin:3px 0 0;font-size:12.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odrestaurant-on{margin-left:auto;display:inline-flex;align-items:center;gap:7px;color:var(--nnh-green);font-size:12px;font-weight:700;white-space:nowrap}
.nnh-ownerdash .odrestaurant-on>span{width:34px;height:19px;border-radius:999px;background:var(--nnh-green);position:relative}
.nnh-ownerdash .odrestaurant-on>span:after{content:"";position:absolute;width:15px;height:15px;top:2px;right:2px;border-radius:50%;background:#fff}
.nnh-ownerdash .odrestaurant-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.nnh-ownerdash .odrestaurant-grid label{display:block;margin-bottom:7px;font-size:13px;font-weight:700}
.nnh-ownerdash .odrestaurant-grid textarea,.nnh-ownerdash .odrestaurant-grid input{width:100%;box-sizing:border-box;border:1px solid #ccd6df;border-radius:9px;padding:10px 12px;background:#fff;color:var(--nnh-ink);font-size:13px}
.nnh-ownerdash .odrestaurant-tabs{display:flex;gap:8px;margin-bottom:8px}
.nnh-ownerdash .odrestaurant-tabs button{border:1px solid #ccd6df;border-radius:999px;background:#fff;color:var(--nnh-ink);font:700 12px var(--nnh-body);padding:7px 14px}
.nnh-ownerdash .odrestaurant-tabs .active{background:var(--nnh-blue-deep);border-color:var(--nnh-blue-deep);color:#fff}
.nnh-ownerdash .odrestaurant-tabs button[disabled]{opacity:.65}
.nnh-ownerdash .odrestaurant-preview{margin-top:10px;padding:11px 12px;border-radius:9px;background:var(--nnh-paper,var(--nnh-paper))}
.nnh-ownerdash .odrestaurant-preview>span{display:block;margin-bottom:8px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#8a8272}
.nnh-ownerdash .odrestaurant-preview div{display:flex;gap:8px}
.nnh-ownerdash .odrestaurant-preview b,.nnh-ownerdash .odrestaurant-preview em{font-style:normal;border-radius:999px;padding:8px 15px;font-size:12px}
.nnh-ownerdash .odrestaurant-preview b{background:var(--nnh-gold,var(--nnh-gold));color:#3d2c05}
.nnh-ownerdash .odrestaurant-preview em{background:#fff;border:1px solid #ccd6df;color:var(--nnh-ink)}
@media(max-width:1050px){.nnh-ownerdash .odaction-row{grid-template-columns:24px minmax(120px,.8fr) minmax(160px,1fr) 82px minmax(190px,1.25fr) 22px}}
@media(max-width:850px){.nnh-ownerdash .odaction-row{grid-template-columns:24px 1fr 1fr 80px 22px}.nnh-ownerdash .odaction-url{grid-column:2/5}.nnh-ownerdash .odrestaurant-grid{grid-template-columns:1fr}}
@media(max-width:600px){.nnh-ownerdash .odbooking-card{padding:16px}.nnh-ownerdash .odcard-headline{align-items:flex-start;flex-direction:column;gap:2px}.nnh-ownerdash .odaction-row{grid-template-columns:20px 1fr 22px}.nnh-ownerdash .odaction-row select,.nnh-ownerdash .odaction-row input{grid-column:2/3}.nnh-ownerdash .odaction-grip{grid-row:1/5}.nnh-ownerdash .odaction-clear{grid-column:3;grid-row:1/5}.nnh-ownerdash .odrestaurant-top{flex-wrap:wrap}.nnh-ownerdash .odrestaurant-on{margin-left:0}}

/* ============ Owner dashboard action add/remove polish (v0.32.9) ============ */
.odaction-row[hidden]{display:none!important}
.odaction-add-wrap{display:flex;justify-content:flex-start;margin-top:10px}
.odaction-add{appearance:none;border:1.5px dashed rgba(26,103,168,.45);background:rgba(26,103,168,.035);color:var(--nnh-blue);border-radius:999px;padding:8px 16px;font:700 13px var(--nnh-body);cursor:pointer}
.odaction-add:hover{background:rgba(26,103,168,.08);border-color:var(--nnh-blue)}
.odaction-add span{font-size:16px;line-height:0;vertical-align:-1px;margin-right:3px}
.odaction-clear{cursor:pointer}

/* ============ Owner dashboard Forms polish (v0.33.0) ============ */
.nnh-ownerdash .nnh-forms-pagehead{margin-bottom:18px}
.nnh-ownerdash .nnh-forms-pagehead h1{margin:0 0 3px;font-family:var(--nnh-display);font-size:24px;line-height:1.2}
.nnh-ownerdash .nnh-forms-pagehead p{margin:0;max-width:72ch;color:var(--nnh-ink-soft);font-size:14px;line-height:1.45}
.nnh-ownerdash .nnh-forms-list-card,.nnh-ownerdash .nnh-form-editor-card{padding:22px;margin-bottom:14px}
.nnh-ownerdash .nnh-cardhead-row{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}
.nnh-ownerdash .nnh-cardhead-row h3,.nnh-ownerdash .nnh-editor-title-row h3{margin:0;font-family:var(--nnh-display);font-size:16px;line-height:1.2}
.nnh-ownerdash .nnh-form-list{display:flex;flex-direction:column;gap:10px}
.nnh-ownerdash .nnh-form-list-row{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid #d7dee5;border-radius:10px;padding:11px 14px}
.nnh-ownerdash .nnh-form-list-copy{min-width:0;display:flex;flex-direction:column;gap:1px}
.nnh-ownerdash .nnh-form-list-copy strong{font-size:14px}
.nnh-ownerdash .nnh-form-list-copy span{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-form-list-actions{margin-left:auto;display:flex;align-items:center;gap:14px;font-size:12.5px;font-weight:700;white-space:nowrap}
.nnh-ownerdash .nnh-form-status{border-radius:999px;padding:3px 11px;font-size:11.5px;font-weight:800}
.nnh-ownerdash .nnh-form-status.is-on{background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-ownerdash .nnh-form-status.is-off{background:var(--nnh-paper);color:#7c7468}
.nnh-ownerdash .nnh-empty-row{border:1px dashed #cdd7df;border-radius:10px;padding:18px;display:flex;flex-direction:column;gap:3px;color:var(--nnh-ink-soft);font-size:13px}
.nnh-ownerdash .nnh-empty-row strong{color:var(--nnh-ink)}
.nnh-ownerdash .nnh-editor-title-row{display:flex;align-items:baseline;gap:9px;margin-bottom:14px}
.nnh-ownerdash .nnh-editor-title-row>span{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-form-meta-grid{gap:14px}
.nnh-ownerdash .nnh-form-meta-grid .field{margin-bottom:12px}
.nnh-ownerdash .nnh-form-editor-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:3px 0 8px}
.nnh-ownerdash .nnh-inline-switch,.nnh-ownerdash .nnh-req-switch{display:inline-flex;align-items:center;gap:7px;cursor:pointer;font-size:12px;font-weight:700;white-space:nowrap}
.nnh-ownerdash .nnh-inline-switch input,.nnh-ownerdash .nnh-req-switch input{position:absolute;opacity:0;pointer-events:none}
.nnh-ownerdash .nnh-inline-switch>span,.nnh-ownerdash .nnh-req-switch>span{width:31px;height:18px;border-radius:999px;background:#cfd7df;position:relative;transition:.15s ease}
.nnh-ownerdash .nnh-inline-switch>span:after,.nnh-ownerdash .nnh-req-switch>span:after{content:"";position:absolute;top:2px;left:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.15s ease}
.nnh-ownerdash .nnh-inline-switch input:checked+span,.nnh-ownerdash .nnh-req-switch input:checked+span,.nnh-ownerdash .nnh-req-switch.demo.is-on>span{background:var(--nnh-green)}
.nnh-ownerdash .nnh-inline-switch input:checked+span:after,.nnh-ownerdash .nnh-req-switch input:checked+span:after,.nnh-ownerdash .nnh-req-switch.demo.is-on>span:after{left:15px}
.nnh-ownerdash .nnh-inline-switch em,.nnh-ownerdash .nnh-req-switch em{font-style:normal;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-form-field-list{display:flex;flex-direction:column;gap:9px}
.nnh-ownerdash .nnh-form-field-row{display:grid;grid-template-columns:24px minmax(220px,1.7fr) 150px minmax(145px,.75fr) 76px 20px;gap:10px;align-items:center;background:#fff;border:1px solid #d7dee5;border-radius:10px;padding:9px 11px}
.nnh-ownerdash .nnh-form-field-row.is-empty{display:none}
.nnh-ownerdash .nnh-form-field-row input[type=text],.nnh-ownerdash .nnh-form-field-row select{box-sizing:border-box;width:100%;min-width:0;height:38px;margin:0;padding:8px 10px;border:1px solid #ccd6df;border-radius:8px;background:#fff;color:var(--nnh-ink);font:500 13px var(--nnh-body);outline:none}
.nnh-ownerdash .nnh-form-field-row input:focus,.nnh-ownerdash .nnh-form-field-row select:focus{border-color:var(--nnh-blue);box-shadow:0 0 0 3px rgba(31,111,178,.10)}
.nnh-ownerdash .nnh-drag-handle{color:#b7a98e;text-align:center;cursor:grab;font-size:16px}
.nnh-ownerdash .nnh-field-remove{border:0;background:transparent;color:#c95e44;font-size:18px;line-height:1;cursor:pointer;padding:0}
.nnh-ownerdash .nnh-add-field{width:100%;margin-top:9px;border:1.5px dashed rgba(31,111,178,.42);border-radius:9px;background:rgba(31,111,178,.025);color:var(--nnh-blue);padding:9px 14px;font:700 12.5px var(--nnh-body);text-align:center;cursor:pointer;box-sizing:border-box}
.nnh-ownerdash .nnh-add-field:hover{background:rgba(31,111,178,.06)}
.nnh-ownerdash .nnh-add-field[hidden]{display:none!important}
.nnh-ownerdash .nnh-forms-charm{margin:10px 0 0}
.nnh-ownerdash .nnh-form-editor-actions{display:flex;gap:9px;margin-top:14px}
.nnh-ownerdash .nnh-forms-locked-card .nnh-vtag{position:static;margin-left:auto}
.nnh-ownerdash .nnh-forms-locked-card fieldset,.nnh-ownerdash .nnh-forms-locked-editor fieldset{border:0;margin:0;padding:0;opacity:.55}
.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:24px minmax(220px,1.8fr) 150px 76px 20px}
@media(max-width:1000px){.nnh-ownerdash .nnh-form-field-row{grid-template-columns:20px minmax(180px,1.5fr) 140px 72px 20px}.nnh-ownerdash .nnh-field-options{grid-column:2/4}.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:20px minmax(180px,1.5fr) 140px 72px 20px}}
@media(max-width:720px){.nnh-ownerdash .nnh-cardhead-row,.nnh-ownerdash .nnh-editor-title-row{align-items:flex-start;flex-direction:column}.nnh-ownerdash .nnh-form-list-row{align-items:flex-start}.nnh-ownerdash .nnh-form-list-actions{margin-left:0}.nnh-ownerdash .nnh-form-field-row,.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:20px 1fr 20px}.nnh-ownerdash .nnh-form-field-row input[type=text],.nnh-ownerdash .nnh-form-field-row select,.nnh-ownerdash .nnh-field-options,.nnh-ownerdash .nnh-req-switch{grid-column:2/3}.nnh-ownerdash .nnh-drag-handle{grid-row:1/5}.nnh-ownerdash .nnh-field-remove{grid-column:3;grid-row:1/5}.nnh-ownerdash .nnh-form-meta-grid{grid-template-columns:1fr}}
/* Forms field rows: choices only open for Multiple choice. */
.nnh-ownerdash .nnh-form-field-row{grid-template-columns:24px minmax(240px,1.8fr) 160px 76px 20px}
.nnh-ownerdash .nnh-form-field-row>[data-nnh-field-label]{grid-column:2}
.nnh-ownerdash .nnh-form-field-row>[data-nnh-field-type]{grid-column:3}
.nnh-ownerdash .nnh-form-field-row>.nnh-req-switch{grid-column:4}
.nnh-ownerdash .nnh-form-field-row>.nnh-field-remove{grid-column:5}
.nnh-ownerdash .nnh-form-field-row>.nnh-field-options{grid-column:2/4;grid-row:2;display:none}
.nnh-ownerdash .nnh-form-field-row.is-choice>.nnh-field-options{display:block}
.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:24px minmax(240px,1.8fr) 160px 76px 20px}
@media(max-width:1000px){.nnh-ownerdash .nnh-form-field-row,.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:20px minmax(180px,1.5fr) 140px 72px 20px}.nnh-ownerdash .nnh-form-field-row>.nnh-field-options{grid-column:2/4}}
@media(max-width:720px){.nnh-ownerdash .nnh-form-field-row,.nnh-ownerdash .nnh-forms-locked-editor .nnh-form-field-row{grid-template-columns:20px 1fr 20px}.nnh-ownerdash .nnh-form-field-row>[data-nnh-field-label],.nnh-ownerdash .nnh-form-field-row>[data-nnh-field-type],.nnh-ownerdash .nnh-form-field-row>.nnh-field-options,.nnh-ownerdash .nnh-form-field-row>.nnh-req-switch{grid-column:2}.nnh-ownerdash .nnh-form-field-row>.nnh-field-remove{grid-column:3;grid-row:1/5}}

/* 0.33.2 — Contacts dashboard polish */
.nnh-ownerdash .nnh-contacts-heading{display:flex;align-items:flex-end;gap:18px;justify-content:space-between;margin-bottom:16px}
.nnh-ownerdash .nnh-contacts-heading h1{margin:0 0 3px;font-family:var(--nnh-display);font-size:24px;line-height:1.15;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-contacts-heading p{margin:0;color:var(--nnh-ink-soft);font-size:14px;max-width:68ch}
.nnh-ownerdash .nnh-contacts-top-actions{display:flex;align-items:center;gap:10px;flex:none}
.nnh-ownerdash .nnh-contacts-top-actions form{margin:0}
.nnh-ownerdash .nnh-contact-notice{margin:-5px 0 12px;color:#2E7D46;font-weight:700;font-size:13px}
.nnh-ownerdash .nnh-contact-add-card{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:14px;padding:14px 16px;margin-bottom:14px}
.nnh-ownerdash .nnh-contact-add-form{display:grid;grid-template-columns:1fr 1.3fr auto;gap:12px;align-items:end}
.nnh-ownerdash .nnh-contact-add-form label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700}
.nnh-ownerdash .nnh-contact-add-form input{width:100%;box-sizing:border-box}
.nnh-ownerdash .nnh-contact-tools{display:flex;align-items:center;gap:9px;margin:0 0 14px}
.nnh-ownerdash .nnh-contact-search{box-sizing:border-box;min-width:0;width:320px;max-width:38%;padding:9px 14px;border:1.5px solid var(--nnh-line);border-radius:999px;background:#fff;font-size:13px;color:var(--nnh-ink);outline:none}
.nnh-ownerdash .nnh-contact-search:focus{border-color:var(--nnh-blue);box-shadow:0 0 0 3px rgba(0,114,188,.10)}
.nnh-ownerdash .nnh-contact-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nnh-ownerdash .nnh-contact-filters button{border:1.5px solid var(--nnh-line);background:#fff;color:var(--nnh-ink);border-radius:999px;padding:7px 14px;font:700 12px var(--nnh-body);cursor:pointer}
.nnh-ownerdash .nnh-contact-filters button.on{background:var(--nnh-ink);border-color:var(--nnh-ink);color:#fff}
.nnh-ownerdash .nnh-contacts-card{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:14px;overflow:hidden}
.nnh-ownerdash .nnh-contact-table-head,.nnh-ownerdash .nnh-contact-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
/* Real columns (flex so hidden ones collapse cleanly) */
.nnh-ownerdash .nnh-cell-person{flex:2 1 190px;min-width:0;display:flex;align-items:center;gap:11px}
.nnh-ownerdash .nnh-cell-source{flex:1 1 110px;min-width:0}
.nnh-ownerdash .nnh-cell-town{flex:1 1 100px;min-width:0}
.nnh-ownerdash .nnh-cell-service{flex:1.5 1 140px;min-width:0;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.nnh-ownerdash .nnh-cell-phone{flex:1 1 110px;min-width:0}
.nnh-ownerdash .nnh-cell-optin{flex:0 0 96px;min-width:0}
.nnh-ownerdash .nnh-cell-created{flex:0 0 96px;min-width:0}
.nnh-ownerdash .nnh-cell-ret{flex:1 1 110px;min-width:0}
.nnh-ownerdash .nnh-cell-activity{flex:0 0 96px;min-width:0}
.nnh-ownerdash .nnh-cell-status{flex:0 0 128px}
.nnh-ownerdash .nnh-cell-actions{flex:0 0 118px;justify-content:flex-end}
.nnh-ownerdash .nnh-contact-cell{font-size:12px;color:var(--nnh-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-cell-source,.nnh-ownerdash .nnh-cell-town,.nnh-ownerdash .nnh-cell-activity{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-svc-chip{font-size:11px;line-height:1.5;padding:1px 9px;border-radius:999px;background:var(--nnh-coral-tint);color:var(--nnh-amber);font-weight:600;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-cell-add{border:1px dashed var(--nnh-gold-border);background:transparent;color:var(--nnh-amber);border-radius:999px;width:22px;height:22px;line-height:1;cursor:pointer;font-weight:700;padding:0}
.nnh-ownerdash .nnh-cell-add:hover{border-color:var(--nnh-coral);color:var(--nnh-coral)}
.nnh-ownerdash .nnh-sub-badge{color:var(--nnh-sky);font-weight:400}
/* Column show/hide (scoped to the card so headers hide too) */
.nnh-ownerdash [data-nnh-contact-cols].hide-src .cell-src,
.nnh-ownerdash [data-nnh-contact-cols].hide-town .cell-town,
.nnh-ownerdash [data-nnh-contact-cols].hide-int .cell-int,
.nnh-ownerdash [data-nnh-contact-cols].hide-phone .cell-phone,
.nnh-ownerdash [data-nnh-contact-cols].hide-optin .cell-optin,
.nnh-ownerdash [data-nnh-contact-cols].hide-created .cell-created,
.nnh-ownerdash [data-nnh-contact-cols].hide-ret .cell-ret,
.nnh-ownerdash [data-nnh-contact-cols].hide-activity .cell-activity{display:none}
.nnh-ownerdash .nnh-cell-phone a{color:var(--nnh-blue);font-weight:600}
.nnh-ownerdash .nnh-contact-table-head{padding:10px 18px;border-bottom:1px solid #e8edf1;color:var(--nnh-ink-soft);font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.nnh-ownerdash .nnh-contact-row{position:relative;padding:12px 18px;border-bottom:1px solid #edf0f2;margin:0}
.nnh-ownerdash .nnh-contact-row:last-child{border-bottom:0}
.nnh-ownerdash .nnh-contact-row:hover{background:rgba(255,255,255,.5)}
.nnh-ownerdash .nnh-contact-person{display:flex;align-items:center;gap:11px;min-width:0}
.nnh-ownerdash .nnh-contact-avatar{width:36px;height:36px;border-radius:50%;background:var(--nnh-ink);color:#fff;display:grid;place-items:center;flex:none;font-size:12px;font-weight:800}
.nnh-ownerdash .nnh-contact-person>span:last-child{min-width:0;display:flex;flex-direction:column}
.nnh-ownerdash .nnh-contact-person b{font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-contact-person small,.nnh-ownerdash .nnh-contact-source,.nnh-ownerdash .nnh-contact-last{font-size:12px;color:var(--nnh-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-contact-status{width:100%;box-sizing:border-box;border:1px solid #d4dce4;border-radius:999px;padding:6px 26px 6px 11px;font:700 11.5px var(--nnh-body);outline:none}
.nnh-ownerdash .nnh-contact-status.status-new{background:#fff1eb;color:#bd533a;border-color:#efd5cc}
.nnh-ownerdash .nnh-contact-status.status-contacted{background:#eef6fc;color:#126ca8;border-color:#c9ddea}
.nnh-ownerdash .nnh-contact-status.status-customer{background:#eef7f1;color:#21663d;border-color:#c9dfd0}
.nnh-ownerdash .nnh-contact-actions{display:flex;gap:12px;align-items:center;justify-content:flex-end;font-size:12px;font-weight:700}
.nnh-ownerdash .nnh-contact-actions button{border:0;background:transparent;padding:0;color:var(--nnh-blue);font:700 12px var(--nnh-body);cursor:pointer}
.nnh-ownerdash .nnh-contact-note{flex:0 0 100%;width:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 0 2px 47px}
.nnh-ownerdash .nnh-contact-note[hidden]{display:none}
.nnh-ownerdash .nnh-contact-note input{flex:1;min-width:0;box-sizing:border-box;padding:8px 10px;border:1.5px solid #d4dce4;border-radius:8px}
.nnh-ownerdash .nnh-contacts-empty{padding:34px 24px;text-align:center}
.nnh-ownerdash .nnh-contacts-empty strong{display:block;font-family:var(--nnh-display);font-size:17px;margin-bottom:5px}
.nnh-ownerdash .nnh-contacts-empty p{max-width:58ch;margin:0 auto 14px;color:var(--nnh-ink-soft);font-size:13px;line-height:1.5}
.nnh-ownerdash .nnh-contact-charm{margin:9px 0 0;font-size:12px;color:var(--nnh-ink-soft)}
@media(max-width:900px){.nnh-ownerdash .nnh-contact-table-head{display:none}.nnh-ownerdash .nnh-cell-person{flex:1 1 100%}.nnh-ownerdash .nnh-contact-note{padding-left:0}.nnh-ownerdash .nnh-contact-tools{align-items:flex-start;flex-direction:column}.nnh-ownerdash .nnh-contact-search{max-width:none;width:100%}}
@media(max-width:620px){.nnh-ownerdash .nnh-contacts-heading{align-items:flex-start;flex-direction:column}.nnh-ownerdash .nnh-contacts-top-actions{width:100%}.nnh-ownerdash .nnh-contact-add-form{grid-template-columns:1fr}.nnh-ownerdash .nnh-contact-row{grid-template-columns:1fr;padding:14px}.nnh-ownerdash .nnh-contact-status,.nnh-ownerdash .nnh-contact-actions,.nnh-ownerdash .nnh-contact-source,.nnh-ownerdash .nnh-contact-last{grid-column:1;grid-row:auto}.nnh-ownerdash .nnh-contact-actions{justify-content:flex-start}.nnh-ownerdash .nnh-contact-note{flex-wrap:wrap}.nnh-ownerdash .nnh-contact-note input{flex-basis:100%}}

/* v0.33.3 Contacts polish */
.nnh-ownerdash .nnh-contacts-heading{margin-bottom:12px;align-items:center}
.nnh-ownerdash .nnh-contacts-heading>div:first-child{min-width:0}
.nnh-ownerdash .nnh-contacts-top-actions .nnh-btn{min-height:36px}
.nnh-ownerdash .nnh-contact-tools{margin:0 0 12px;gap:10px}
.nnh-ownerdash .nnh-contact-search{height:38px;width:320px;max-width:34%;background:#fff;opacity:1}
.nnh-ownerdash .nnh-contact-filters button{min-height:34px;padding:7px 14px;opacity:1}
.nnh-ownerdash .nnh-contact-filters button.on{background:var(--nnh-ink);border-color:var(--nnh-ink);color:#fff;opacity:1}
.nnh-ownerdash .nnh-contact-add-card{padding:12px 14px;margin:0 0 12px;background:rgba(255,255,255,.55)}
.nnh-ownerdash .nnh-contact-add-form{grid-template-columns:minmax(180px,.8fr) minmax(260px,1.35fr) auto;gap:10px}
.nnh-ownerdash .nnh-contact-add-form input{height:38px;border:1.5px solid var(--nnh-line);border-radius:9px;background:#fff;padding:8px 11px;font:500 13px var(--nnh-body);outline:none}
.nnh-ownerdash .nnh-contact-add-form input:focus{border-color:var(--nnh-blue);box-shadow:0 0 0 3px rgba(0,114,188,.08)}
.nnh-ownerdash .nnh-contact-add-form .nnh-btn{height:38px;white-space:nowrap}
.nnh-ownerdash .nnh-contacts-card{background:rgba(255,255,255,.58)}
.nnh-ownerdash .nnh-contact-table-head{background:rgba(255,255,255,.35)}
.nnh-ownerdash .nnh-contacts-empty{min-height:112px;padding:22px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.nnh-ownerdash .nnh-contacts-empty strong{font-size:16px;margin-bottom:4px}
.nnh-ownerdash .nnh-contacts-empty p{margin-bottom:10px;max-width:54ch}
.nnh-ownerdash .nnh-contact-charm{margin-top:8px;font-style:italic;color:#8c8579}
@media(max-width:900px){.nnh-ownerdash .nnh-contact-search{max-width:none;width:100%}}

/* v0.33.4 Messages polish */
.nnh-ownerdash .nnh-messages-pagehead{margin-bottom:14px}
.nnh-ownerdash .nnh-messages-pagehead h1{display:flex;align-items:center;gap:8px;margin:0 0 3px;font-family:var(--nnh-display);font-size:24px;line-height:1.15;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-messages-pagehead p{margin:0;color:var(--nnh-ink-soft);font-size:14px;line-height:1.45}
.nnh-ownerdash .nnh-message-count{display:inline-grid;place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--nnh-coral);color:#fff;font:700 11px/1 var(--nnh-body)}
.nnh-ownerdash .nnh-messages-card{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:14px;overflow:hidden;margin-bottom:18px}
.nnh-ownerdash .nnh-message-notice{margin:0;padding:10px 18px;background:var(--nnh-green-tint);color:var(--nnh-green);font-size:12.5px;font-weight:700;border-bottom:1px solid #d9e9dc}
.nnh-ownerdash .nnh-messages-empty{min-height:130px;padding:28px;text-align:center;display:flex;flex-direction:column;justify-content:center;align-items:center}
.nnh-ownerdash .nnh-messages-empty strong{font-family:var(--nnh-display);font-size:17px;margin-bottom:5px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-messages-empty p{margin:0;max-width:60ch;color:var(--nnh-ink-soft);font-size:13px;line-height:1.5}
.nnh-ownerdash .nnh-message-thread{margin:0;border:0;border-bottom:1px solid var(--nnh-line);background:#fff}
.nnh-ownerdash .nnh-message-thread:last-child{border-bottom:0}
.nnh-ownerdash .nnh-message-thread.is-new{background:#f3f8fd;border-left:3px solid #2479bd}
.nnh-ownerdash .nnh-message-thread summary{list-style:none;display:flex;align-items:center;gap:12px;padding:14px 18px;cursor:pointer;min-height:62px}
.nnh-ownerdash .nnh-message-thread summary::-webkit-details-marker{display:none}
.nnh-ownerdash .nnh-message-avatar{width:38px;height:38px;border-radius:50%;background:var(--nnh-blue-deep,#173B5C);color:#fff;display:grid;place-items:center;flex:none;font:800 12px var(--nnh-display)}
.nnh-ownerdash .nnh-message-thread:not(.is-new) .nnh-message-avatar{background:#c6b995}
.nnh-ownerdash .nnh-message-summary-copy{display:flex;align-items:baseline;gap:9px;min-width:0;flex:1;flex-wrap:wrap}
.nnh-ownerdash .nnh-message-name{font-family:var(--nnh-display);font-weight:800;color:var(--nnh-ink);font-size:14px}
.nnh-ownerdash .nnh-message-date{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-message-preview{flex-basis:100%;font-size:12.5px;color:var(--nnh-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-message-new-pill{margin-left:auto;border-radius:999px;background:var(--nnh-coral);color:#fff;padding:3px 9px;font:700 11px var(--nnh-body)}
.nnh-ownerdash .nnh-message-open-label{margin-left:auto;color:var(--nnh-blue);font-size:12.5px;font-weight:700}
.nnh-ownerdash .nnh-message-body{padding:0 18px 16px 68px}
.nnh-ownerdash .nnh-message-text{margin:0 0 5px;color:var(--nnh-ink);font-size:13.5px;line-height:1.55;white-space:pre-wrap}
.nnh-ownerdash .nnh-message-meta{margin:0 0 12px;color:var(--nnh-ink-soft);font-size:11.5px}
.nnh-ownerdash .nnh-message-sent{margin:0 0 9px;padding:9px 12px;border-radius:9px;background:var(--nnh-sky-tint);color:var(--nnh-ink);font-size:12.5px;line-height:1.45}
.nnh-ownerdash .nnh-message-sent span{margin-left:6px;color:var(--nnh-ink-soft);font-size:11px}
.nnh-ownerdash .nnh-saved-replies{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 8px}
.nnh-ownerdash .nnh-saved-replies>span{font-size:11.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-saved-replies button{border:0;border-radius:999px;background:var(--nnh-paper);color:var(--nnh-ink);padding:6px 11px;font:700 11.5px var(--nnh-body);cursor:pointer}
.nnh-ownerdash .nnh-saved-replies button:hover{background:#e8e0d2}
.nnh-ownerdash .nnh-message-reply-form textarea,
.nnh-ownerdash .nnh-message-settings-card textarea{width:100%;box-sizing:border-box;border:1px solid #cfdbe6;border-radius:10px;background:#fff;color:var(--nnh-ink);padding:10px 12px;font:inherit;resize:vertical}
.nnh-ownerdash .nnh-message-reply-form textarea{min-height:58px}
.nnh-ownerdash .nnh-message-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:9px}
.nnh-ownerdash .nnh-message-settings-card{padding:20px 22px;margin-bottom:18px}
.nnh-ownerdash .nnh-message-settings-card h3{margin:0 0 10px;font-family:var(--nnh-display);font-size:16px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-autoreply-head{display:flex;align-items:center;gap:12px;margin-bottom:4px}
.nnh-ownerdash .nnh-autoreply-head h3{margin:0}
.nnh-ownerdash .nnh-switch-label{display:flex;align-items:center;gap:7px;cursor:pointer;font-size:12px;color:var(--nnh-green)}
.nnh-ownerdash .nnh-switch-label input{position:absolute;opacity:0;pointer-events:none}
.nnh-ownerdash .nnh-switch-ui{width:34px;height:19px;border-radius:999px;background:#cbd4dc;position:relative;transition:.15s ease}
.nnh-ownerdash .nnh-switch-ui:after{content:"";position:absolute;top:2px;left:2px;width:15px;height:15px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.15);transition:.15s ease}
.nnh-ownerdash .nnh-switch-label input:checked + .nnh-switch-ui{background:var(--nnh-green)}
.nnh-ownerdash .nnh-switch-label input:checked + .nnh-switch-ui:after{left:17px}
.nnh-ownerdash .nnh-message-settings-card .hint{margin:0 0 9px;color:var(--nnh-ink-soft);font-size:12.5px}
.nnh-ownerdash .nnh-card-save{display:flex;justify-content:flex-end;margin-top:10px}
.nnh-ownerdash .nnh-card-save.left{justify-content:flex-start}
.nnh-ownerdash .nnh-message-settings-card .field{margin:0 0 12px}
.nnh-ownerdash .nnh-message-settings-card .field label{display:block;margin-bottom:6px;font-size:12.5px;font-weight:700;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-message-settings-card .field label span{font-weight:400;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-message-help{margin:5px 0 0;color:var(--nnh-ink-soft);font-size:11.5px;line-height:1.45}
.nnh-ownerdash .nnh-saved-reply-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.nnh-ownerdash .nnh-saved-reply-grid .field{margin:0}
.nnh-ownerdash .nnh-message-locked-card{position:relative}
@media(max-width:760px){
  .nnh-ownerdash .nnh-message-body{padding:0 14px 14px}
  .nnh-ownerdash .nnh-message-thread summary{padding:12px 14px}
  .nnh-ownerdash .nnh-saved-reply-grid{grid-template-columns:1fr}
  .nnh-ownerdash .nnh-message-settings-card{padding:16px}
  .nnh-ownerdash .nnh-message-preview{white-space:normal}
}

/* v0.33.5 Messages visual alignment */
.nnh-ownerdash .nnh-messages-pagehead{margin-bottom:12px}
.nnh-ownerdash .nnh-messages-card{margin-bottom:16px}
.nnh-ownerdash .nnh-message-notice{display:inline-flex;width:auto;margin:10px 14px 0;padding:6px 10px;border:1px solid #cfe3d4;border-radius:999px;background:var(--nnh-green-tint);color:var(--nnh-green);font-size:11.5px;line-height:1;border-bottom:1px solid #cfe3d4}
.nnh-ownerdash .nnh-message-thread summary{min-height:52px;padding:10px 16px;gap:10px}
.nnh-ownerdash .nnh-message-avatar{width:34px;height:34px;font-size:11px}
.nnh-ownerdash .nnh-message-name{font-size:13.5px}
.nnh-ownerdash .nnh-message-preview{font-size:12px}
.nnh-ownerdash .nnh-message-body{padding:0 16px 14px 60px}
.nnh-ownerdash .nnh-message-text{font-size:13px;margin-bottom:4px}
.nnh-ownerdash .nnh-message-meta{margin-bottom:9px}
.nnh-ownerdash .nnh-message-reply-form textarea{min-height:56px}
.nnh-ownerdash .nnh-message-settings-card{padding:18px 20px;margin-bottom:16px}
.nnh-ownerdash .nnh-autoreply-card{padding:18px 20px}
.nnh-ownerdash .nnh-autoreply-head{gap:10px;margin-bottom:5px}
.nnh-ownerdash .nnh-autoreply-head .nnh-switch-label{margin-left:2px}
.nnh-ownerdash .nnh-autoreply-save{margin-left:auto;min-height:30px;padding:5px 13px;font-size:11.5px}
.nnh-ownerdash .nnh-message-inline-notice{display:inline-block;margin:0 0 7px;padding:4px 9px;border-radius:999px;background:var(--nnh-green-tint);color:var(--nnh-green);font-size:11px;font-weight:700}
.nnh-ownerdash .nnh-autoreply-card textarea{min-height:54px;max-height:90px}
.nnh-ownerdash .nnh-message-settings-card>h3{margin-bottom:12px}
.nnh-ownerdash .nnh-message-settings-card .field{margin-bottom:10px}
.nnh-ownerdash .nnh-message-settings-card .field textarea{min-height:62px}
.nnh-ownerdash .nnh-saved-reply-grid .field textarea{min-height:68px}
.nnh-ownerdash .nnh-message-help{margin-top:4px}
.nnh-ownerdash .nnh-card-save.left{margin-top:8px}
@media(max-width:760px){
 .nnh-ownerdash .nnh-message-body{padding:0 14px 14px}
 .nnh-ownerdash .nnh-autoreply-save{margin-left:auto}
}

/* v0.33.6 Reviews dashboard polish */
.nnh-ownerdash .nnh-reviews-pagehead{margin:0 0 16px}
.nnh-ownerdash .nnh-reviews-pagehead h1{margin:0 0 3px;font-family:var(--nnh-display);font-size:24px;line-height:1.15;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-reviews-pagehead p{margin:0;max-width:78ch;color:var(--nnh-ink-soft);font-size:14px;line-height:1.45}
.nnh-ownerdash .nnh-review-notice{display:inline-block;margin:0 0 12px;padding:5px 10px;border:1px solid #cfe3d4;border-radius:999px;background:var(--nnh-green-tint);color:var(--nnh-green);font-size:11.5px;font-weight:700}
.nnh-ownerdash .nnh-owner-review-list{display:flex;flex-direction:column;gap:14px}
.nnh-ownerdash .nnh-owner-review-card{background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:14px;padding:20px 22px}
.nnh-ownerdash .nnh-owner-review-card.is-unanswered{border-left:3px solid var(--nnh-green)}
.nnh-ownerdash .nnh-owner-review-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:11px}
.nnh-ownerdash .nnh-owner-review-person{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;min-width:0}
.nnh-ownerdash .nnh-owner-review-stars{color:#e9a11a;font-size:16px;letter-spacing:1px;white-space:nowrap}
.nnh-ownerdash .nnh-owner-review-person strong{font-family:var(--nnh-display);font-size:14px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-owner-review-person time{font-size:11.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-owner-review-status{flex:none;border-radius:999px;padding:4px 11px;font-size:11px;font-weight:800;line-height:1.2}
.nnh-ownerdash .nnh-owner-review-status.approved{background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-ownerdash .nnh-owner-review-status.responded{background:var(--nnh-paper);color:#7c7468}
.nnh-ownerdash .nnh-owner-review-text{margin:0;color:var(--nnh-ink);font-size:13.5px;line-height:1.55;white-space:pre-wrap}
.nnh-ownerdash .nnh-owner-review-form{margin-top:11px}
.nnh-ownerdash .nnh-owner-review-form textarea{width:100%;box-sizing:border-box;min-height:58px;padding:10px 12px;border:1px solid #cfdbe6;border-radius:10px;background:#fff;color:var(--nnh-ink);font:inherit;resize:vertical;outline:none}
.nnh-ownerdash .nnh-owner-review-form textarea:focus{border-color:var(--nnh-blue);box-shadow:0 0 0 3px rgba(0,114,188,.08)}
.nnh-ownerdash .nnh-owner-review-formfoot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:9px}
.nnh-ownerdash .nnh-owner-review-formfoot span{color:var(--nnh-ink-soft);font-size:11.5px;line-height:1.4}
.nnh-ownerdash .nnh-owner-review-response{margin-top:11px;border-left:3px solid #d8dee3;padding:6px 0 6px 12px;color:var(--nnh-ink-soft);font-size:12.5px;line-height:1.5}
.nnh-ownerdash .nnh-owner-review-response strong{color:var(--nnh-ink)}
.nnh-ownerdash .nnh-review-pending{display:flex;align-items:flex-start;gap:12px;margin-top:16px;padding:14px 18px;border:1px solid #f0d39a;border-radius:14px;background:#fff5e5;color:#8a5b14}
.nnh-ownerdash .nnh-review-pending>span{font-size:16px;line-height:1.4}
.nnh-ownerdash .nnh-review-pending p{margin:0;font-size:12.5px;line-height:1.5}
.nnh-ownerdash .nnh-reviews-empty{min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;background:var(--nnh-paper);border:1px solid var(--nnh-line);border-radius:14px;padding:24px;margin-bottom:14px}
.nnh-ownerdash .nnh-reviews-empty-stars{color:#c9c2b5;font-size:21px;letter-spacing:3px;margin-bottom:4px}
.nnh-ownerdash .nnh-reviews-empty strong{font-family:var(--nnh-display);font-size:17px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-reviews-empty p{max-width:58ch;margin:5px 0 12px;color:var(--nnh-ink-soft);font-size:13px;line-height:1.5}
.nnh-ownerdash .nnh-review-empty-link{display:flex;align-items:center;gap:8px;max-width:100%}
.nnh-ownerdash .nnh-review-empty-link code{display:block;max-width:470px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:8px;background:var(--nnh-paper);padding:7px 10px;color:var(--nnh-ink);font-size:11.5px}
@media(max-width:680px){
 .nnh-ownerdash .nnh-owner-review-card{padding:16px}
 .nnh-ownerdash .nnh-owner-review-head,.nnh-ownerdash .nnh-owner-review-formfoot{align-items:flex-start;flex-direction:column}
 .nnh-ownerdash .nnh-review-empty-link{flex-direction:column;width:100%}
 .nnh-ownerdash .nnh-review-empty-link code{max-width:100%;width:100%;box-sizing:border-box}
}

/* v0.33.7 Membership dashboard polish */
.nnh-ownerdash .nnh-membership-pagehead{margin:0 0 16px}
.nnh-ownerdash .nnh-membership-pagehead h1{margin:0;font-family:var(--nnh-display);font-size:24px;line-height:1.15;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-current-plan{display:flex;align-items:center;justify-content:space-between;gap:18px;background:var(--nnh-green-tint,#eef7ef);border:1px solid rgba(46,125,79,.28);border-radius:14px;padding:18px 22px;margin-bottom:16px}
.nnh-ownerdash .nnh-current-plan-title{display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}
.nnh-ownerdash .nnh-current-plan-title strong{font-family:var(--nnh-display);font-size:16px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-current-plan-title span{font-size:13px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-current-plan p{margin:3px 0 0;font-size:13px;color:var(--nnh-green,var(--nnh-green))}
.nnh-ownerdash .nnh-plan-active{flex:none;background:#d8ecdc;color:var(--nnh-green);border-radius:999px;padding:4px 13px;font-size:12px;font-weight:800}
.nnh-ownerdash .nnh-membership-billing{margin:0 0 18px;font-size:13px;line-height:1.5;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-membership-billing a{font-weight:700}
.nnh-ownerdash .nnh-plan-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;align-items:stretch;margin-bottom:10px}
.nnh-ownerdash .nnh-plan-grid.nnh-plan-grid-1{grid-template-columns:minmax(0,360px)}
.nnh-ownerdash .nnh-plan-grid.nnh-plan-grid-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:760px}
.nnh-ownerdash .nnh-plan-tile{position:relative;display:flex;flex-direction:column;min-width:0;background:var(--nnh-card);border:1px solid var(--nnh-line);border-radius:14px;padding:20px}
.nnh-ownerdash .nnh-plan-tile.is-popular{border:2px solid var(--nnh-blue,#29597F);padding:19px}
.nnh-ownerdash .nnh-popular-tag{position:absolute;top:-11px;left:18px;background:var(--nnh-blue,#29597F);color:#fff;border-radius:999px;padding:3px 12px;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.nnh-ownerdash .nnh-plan-tile h2{margin:0 0 7px;font-family:var(--nnh-display);font-size:16px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-plan-price{font-family:var(--nnh-display);font-size:22px;font-weight:800;color:var(--nnh-ink);margin-bottom:9px}
.nnh-ownerdash .nnh-plan-tile ul{margin:0 0 16px;padding-left:18px;font-size:13px;line-height:1.65;color:var(--nnh-ink);flex:1}
.nnh-ownerdash .nnh-plan-cta{margin-top:auto}
.nnh-ownerdash .nnh-plan-current-btn,.nnh-ownerdash .nnh-plan-choose-btn{display:block;width:100%;box-sizing:border-box;border-radius:999px;padding:9px 16px;text-align:center;font-size:13px;font-weight:800;text-decoration:none}
.nnh-ownerdash .nnh-plan-current-btn{background:#f0ede5;color:#8a8272}
.nnh-ownerdash .nnh-plan-current-btn.muted{background:#f4f1ea;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-plan-choose-btn{background:#fff;border:1px solid #bfcbd7;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-plan-choose-btn.primary{background:var(--nnh-blue,#29597F);border-color:var(--nnh-blue,#29597F);color:#fff}
.nnh-ownerdash .nnh-plan-footnote{margin:0 0 20px;font-size:12px;color:#9b927f;font-style:italic}
.nnh-ownerdash .nnh-addons-card{padding:20px 22px;margin-bottom:18px}
.nnh-ownerdash .nnh-addons-head{display:flex;align-items:baseline;gap:8px;margin-bottom:12px}
.nnh-ownerdash .nnh-addons-head h2{margin:0;font-family:var(--nnh-display);font-size:17px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-addons-head span{font-size:12.5px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-addons-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nnh-ownerdash .nnh-addon-item{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;background:#fff;border:1px solid var(--nnh-line);border-radius:10px;padding:13px 14px}
.nnh-ownerdash .nnh-addon-item strong{display:block;font-family:var(--nnh-display);font-size:14px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-addon-item p{margin:3px 0 0;font-size:12.5px;line-height:1.45;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-addon-buy{flex:none;text-align:right}
.nnh-ownerdash .nnh-addon-buy b{display:block;font-family:var(--nnh-display);font-size:14px;margin-bottom:6px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-addons-empty{border:1px dashed var(--nnh-line);border-radius:10px;padding:15px;font-size:13px;color:var(--nnh-ink-soft);background:rgba(255,255,255,.45)}
.nnh-ownerdash .nnh-addon-note{margin:10px 0 0;font-size:12px;color:var(--nnh-amber);font-style:italic}
.nnh-ownerdash .nnh-membership-locked{background:var(--nnh-gold-tint);border:1px solid #efd4a6;border-radius:14px;padding:18px 22px}
.nnh-ownerdash .nnh-membership-locked h2{margin:0 0 5px;font-family:var(--nnh-display);font-size:15px;color:var(--nnh-ink)}
.nnh-ownerdash .nnh-membership-locked p{margin:0;font-size:13px;line-height:1.55;color:var(--nnh-amber)}
@media(max-width:950px){.nnh-ownerdash .nnh-plan-grid,.nnh-ownerdash .nnh-plan-grid.nnh-plan-grid-2{grid-template-columns:1fr}.nnh-ownerdash .nnh-addons-grid{grid-template-columns:1fr}}
@media(max-width:620px){.nnh-ownerdash .nnh-current-plan{align-items:flex-start;flex-direction:column}.nnh-ownerdash .nnh-plan-grid.nnh-plan-grid-1{grid-template-columns:1fr}.nnh-ownerdash .nnh-addon-item{flex-direction:column}.nnh-ownerdash .nnh-addon-buy{text-align:left;display:flex;align-items:center;gap:10px}}

/* =============================================================
   v0.33.9 — social links wired + one-a-day notice
   ============================================================= */
.nnh-profile .socialrow a{font-weight:600}
.nnh-profile .socialrow .dot{color:var(--nnh-ink-soft)}
.nnh-ownerdash .updnotice{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold);border-radius:8px;padding:8px 12px;font-size:12.5px;color:var(--nnh-amber);margin:0 0 10px}

/* =============================================================
   v0.34.0 — contacts imports, suppression, double opt-in
   ============================================================= */
.nnh-ownerdash .nnh-contact-import-card summary{cursor:pointer;font-family:var(--nnh-display);font-weight:700;font-size:15px}
.nnh-ownerdash .nnh-contact-import-card textarea{margin:10px 0 0;font-family:ui-monospace,monospace;font-size:13px}
.nnh-ownerdash .nnh-attestline{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold);border-radius:10px;padding:10px 14px;margin:10px 0;font-size:13px;line-height:1.5}
.nnh-ownerdash .nnh-attestline input{margin-right:6px}

/* =============================================================
   v0.39.0 — Campaigns tab (newsletter + drip program)
   ============================================================= */
.nnh-ownerdash .nnh-campaigns-pagehead h1{font-family:var(--nnh-display);font-size:26px;margin:0 0 4px}
.nnh-ownerdash .dripstep{display:grid;grid-template-columns:110px 1fr;gap:0 14px;border:1px solid var(--nnh-line);border-radius:12px;background:var(--nnh-card);padding:12px 16px 4px;margin:0 0 12px}
.nnh-ownerdash .dripstep .field:nth-child(n+3){grid-column:1 / -1}
.nnh-ownerdash .dripstep .dripday input{width:80px}
@media (max-width:700px){.nnh-ownerdash .dripstep{grid-template-columns:1fr}}

/* =============================================================
   v0.40.0 — campaigns subnav, templates, schedule
   ============================================================= */
.nnh-ownerdash .odsubnav{display:flex;flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:34px}
.nnh-ownerdash .odsubnav-group{font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--nnh-ink-soft);margin:4px 0 2px}
.nnh-ownerdash .odsubnav-item{display:block;padding:6px 10px;border-radius:8px;font-size:13px;font-weight:600;color:var(--nnh-ink-soft);text-decoration:none}
.nnh-ownerdash .odsubnav-item:hover{background:var(--nnh-paper)}
.nnh-ownerdash .odsubnav-item.on{background:var(--nnh-sky-tint);color:var(--nnh-blue-deep)}
.nnh-ownerdash .camp-templates{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 14px}
.nnh-ownerdash .camp-templates .hint{margin:0}
.nnh-ownerdash .campsched input[type="date"]{max-width:200px}

/* =============================================================
   v0.41.0 — profile tabs (Business/Owners), misc
   ============================================================= */
.nnh-profile .ptabs input[type="radio"]{position:absolute;opacity:0;pointer-events:none}
.nnh-profile .ptab-labels{display:flex;gap:6px;margin:0 0 14px;border-bottom:2px solid var(--nnh-line)}
.nnh-profile .ptab-labels label{padding:8px 16px;font-family:var(--nnh-display);font-weight:700;font-size:15px;color:var(--nnh-ink-soft);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px}
.nnh-profile .ptabs .ptab-panel{display:none}
.nnh-profile .ptabs #nnh_ptab_biz:checked ~ .ptab-labels label[for="nnh_ptab_biz"],
.nnh-profile .ptabs #nnh_ptab_own:checked ~ .ptab-labels label[for="nnh_ptab_own"]{color:var(--nnh-blue-deep);border-bottom-color:var(--nnh-blue)}
.nnh-profile .ptabs #nnh_ptab_biz:checked ~ .ptab-biz{display:block}
.nnh-profile .ptabs #nnh_ptab_own:checked ~ .ptab-own{display:block}

/* v0.41.1 — banner framing (focal point + zoom) */
.nnh-ownerdash .odbanner-preview.has-image{cursor:crosshair}
.nnh-ownerdash .odbanner-preview .odbanner-image{transition:transform .15s ease,object-position .15s ease}
.nnh-ownerdash .odbanner-dot{position:absolute;width:18px;height:18px;border:3px solid #fff;border-radius:50%;background:var(--nnh-coral);box-shadow:0 1px 6px rgba(34,48,60,.45);transform:translate(-50%,-50%);pointer-events:none}
.nnh-ownerdash .odbanner-adjust input[type="range"]{width:min(320px,100%)}

/* v0.41.2 — banner preview matches the public banner's geometry */
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:auto;height:220px}

/* v0.41.3 — zoom-out with blurred backdrop + device preview toggle */
.nnh-banner .banner-blur,.nnh-ownerdash .odbanner-preview .odbanner-blur{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(16px) saturate(1.05);transform:scale(1.12);display:none}
.nnh-banner:has(.banner-blur) .banner-blur{display:block}
.nnh-banner .banner-img{position:relative;z-index:1}
.nnh-ownerdash .odbanner-preview.zoomout .odbanner-blur{display:block}
.nnh-ownerdash .odbanner-preview .odbanner-image{position:relative;z-index:1}
.nnh-ownerdash .odbanner-devices{display:flex;gap:6px;margin:0 0 8px}
.nnh-ownerdash .odbanner-devices button{border:1.5px solid var(--nnh-line);background:var(--nnh-card);border-radius:999px;padding:4px 14px;font-size:12.5px;font-weight:700;color:var(--nnh-ink-soft);cursor:pointer}
.nnh-ownerdash .odbanner-devices button.on{border-color:var(--nnh-blue);background:var(--nnh-sky-tint);color:var(--nnh-blue-deep)}
.nnh-ownerdash .odbanner-preview.is-phone{width:390px;max-width:100%;margin:0 auto}

/* v0.41.4 — drag-to-pan banner framing */
.nnh-ownerdash .odbanner-preview.has-image{cursor:grab;touch-action:none}
.nnh-ownerdash .odbanner-preview.has-image:active{cursor:grabbing}
.nnh-ownerdash .odbanner-preview.has-image:focus-visible{outline:3px solid var(--nnh-sky);outline-offset:2px}

/* v0.41.5 — framing sliders */
.nnh-ownerdash .odbanner-sliders{display:grid;grid-template-columns:110px 1fr;gap:8px 14px;align-items:center;max-width:460px;margin-top:6px}
.nnh-ownerdash .odbanner-sliders label{font-size:12.5px;font-weight:700;color:var(--nnh-ink-soft);margin:0}
.nnh-ownerdash .odbanner-sliders input[type="range"]{width:100%;accent-color:var(--nnh-blue)}

/* v0.41.6 — restore the wave: the 0.41.3 z-index on .banner-img was
   painting the photo over the hills SVG. The wave rides on top again. */
.nnh-banner .hills{z-index:2}

/* v0.41.8 — preview matches the public banner's SHAPE, not just height.
   Desktop banner ≈ full viewport (~1400px) x 220px = 6.4:1; the preview
   is that ratio scaled to the card, so the crop is truthful. */
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:1400/220;height:auto}
.nnh-ownerdash .odbanner-preview.has-image.is-phone{aspect-ratio:390/220;width:min(390px,100%)}

/* =============================================================
   v0.41.9 — boxed banner: the banner joins the content column
   (1180px like .wrap) instead of bleeding full-width. Known shape
   = photos frame predictably and the preview matches exactly.
   ============================================================= */
.nnh-banner{max-width:1132px;margin:14px auto 0;border-radius:18px;height:280px}
@media (max-width:1180px){.nnh-banner{margin-left:24px;margin-right:24px}}
@media (max-width:700px){.nnh-banner{height:220px;margin:10px 12px 0;border-radius:14px}}
/* Preview ratios follow the boxed shape */
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:1132/280;height:auto}
.nnh-ownerdash .odbanner-preview.has-image.is-phone{aspect-ratio:366/220;width:min(366px,100%)}

/* v0.41.10 — banner: flat, flush with the nav, thin border, no radius */
.nnh-banner{margin:0 auto;border-radius:0;border:1px solid var(--nnh-line);border-top:0}
@media (max-width:1180px){.nnh-banner{margin:0 24px}}
@media (max-width:700px){.nnh-banner{margin:0 12px;border-radius:0}}

/* v0.41.11 — banner border: sides only; the wave is the bottom edge,
   the nav rule is the top edge */
.nnh-banner{border-bottom:0}

/* =============================================================
   v0.41.12 — boxed site layout: every band's BACKGROUND stops at
   the 1180px column (contents were already aligned), continuous
   side hairlines make the whole page read as one sheet, paper
   showing on both flanks — the classic boxed layout.
   ============================================================= */
.nnh-topbar,
.wp-site-blocks > header,
.nnh-phead,
.nnh-footer{max-width:1180px;margin-left:auto;margin-right:auto;border-left:1px solid var(--nnh-line);border-right:1px solid var(--nnh-line)}
/* Banner fills the box edge-to-edge; its own side borders now come from
   the column, not itself */
.nnh-banner{max-width:1180px;border-left:1px solid var(--nnh-line);border-right:1px solid var(--nnh-line)}
@media (max-width:1180px){.nnh-banner{margin:0 auto}}
@media (max-width:700px){.nnh-banner{margin:0 auto}}
/* The content area continues the sheet's side lines down to the footer */
body .wp-site-blocks{max-width:1180px;margin:0 auto;border-left:1px solid var(--nnh-line);border-right:1px solid var(--nnh-line);background:inherit}
.wp-site-blocks .nnh-topbar,.wp-site-blocks > header,.wp-site-blocks .nnh-phead,.wp-site-blocks .nnh-footer,.wp-site-blocks .nnh-banner{border-left:0;border-right:0;max-width:none}
/* Preview ratios follow the box */
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:1180/280}
.nnh-ownerdash .odbanner-preview.has-image.is-phone{aspect-ratio:390/220;width:min(390px,100%)}

/* =============================================================
   v0.41.13 — finish the boxed sheet
   ============================================================= */
/* 1) The nav band was escaping the sheet. Cover both escape routes:
   a header rendered OUTSIDE .wp-site-blocks... */
body > header,
body > .wp-block-template-part:first-child{max-width:1180px;margin-left:auto;margin-right:auto;border-left:1px solid var(--nnh-line);border-right:1px solid var(--nnh-line)}
/* ...and full-bleed (100vw / negative-margin) tricks INSIDE the sheet: */
.wp-site-blocks header,
.wp-site-blocks header .alignfull,
.wp-site-blocks header .alignwide,
.wp-site-blocks > .alignfull{width:auto !important;max-width:100% !important;margin-left:0 !important;margin-right:0 !important}
/* 2) One white page inside the frame (the coworker look): the sheet
   itself is white; the topbar and footer paint their own colors over
   it, so from nav to footer it reads as a single surface — no more
   white bands "floating" on paper. */
.wp-site-blocks{background:var(--nnh-card)}
/* Cards designed for the paper background keep their edges on white */
.nnh-profile .pcard,.nnh-profile .fcard{border:1px solid var(--nnh-line)}

/* v0.41.14 — the content region gets its own bordered white box,
   matching the header box above: stacked bordered containers on the
   paper, nothing floating. */
/* v0.46.7 — flat-cream match (latest Kibbler mockup): the profile grid sits
   directly on the paper; no page-box. Sections are bare, content is carded. */
.nnh-profile{background:transparent;border:0;margin-top:0;margin-bottom:30px;padding:36px 0 50px}
main.nnh-profile{border:0 !important;border-radius:0;box-shadow:none;background:transparent}

/* =============================================================
   v0.42.0 — profile adoption (Claude Design pass 1)
   ============================================================= */
.nnh-profile .nnh-mapcard{padding:0;overflow:hidden}
.nnh-profile .nnh-mapcard iframe{display:block;width:100%;height:200px;border:0}
.nnh-profile .nnh-mapcard .nnh-maplink{display:block;padding:10px 16px;font-weight:700;font-size:13.5px;border-top:1px solid var(--nnh-line)}
.nnh-profile .nnh-lettercard p{margin:6px 0 10px;font-size:13.5px;color:var(--nnh-ink-soft)}

/* =============================================================
   v0.42.1 — VISUAL ADOPTION of the Claude Design profile mockup.
   The mockup's language: open, airy, on the paper — a floating
   rounded hero, no boxed bands, whitespace instead of borders.
   This layer supersedes the boxed-sheet experiments (0.41.12–15).
   All colors are live NNH tokens; type is Bricolage/Public Sans.
   ============================================================= */

/* -- Un-box: retire the sheet, the bands, the content box -- */
body .wp-site-blocks{max-width:none;border:0;background:transparent}
.nnh-topbar,.wp-site-blocks > header,body > header,body > .wp-block-template-part:first-child,.nnh-phead,.nnh-footer{max-width:none;border-left:0;border-right:0}
main.nnh-profile{background:transparent !important;border:0 !important;padding:30px 24px 24px;margin-top:0;margin-bottom:0}
/* Deterministic gap before the footer — a margin here gets collapsed by the
   block-theme wrapper around <main>, so use a real spacer box instead. */
.nnh-footspace{height:56px}
@media (max-width:640px){.nnh-footspace{height:36px}}
.nnh-phead{background:transparent;border-bottom:0}

/* -- Column: 1120, airy grid -- */
.nnh-page .wrap{max-width:1120px}
.nnh-profile{max-width:1120px;grid-template-columns:1fr 336px;gap:36px}

/* -- Hero: floating rounded photo card -- */
.nnh-banner{max-width:1120px;height:300px;margin:24px auto 0;border:0;border-radius:16px;width:calc(100% - 48px)}
@media (max-width:1180px){.nnh-banner{margin-left:auto;margin-right:auto}}
@media (max-width:720px){.nnh-banner{height:200px;margin:16px auto 0;border-radius:12px}}

/* -- Title block on paper -- */
.nnh-phead .wrap{padding-top:26px}
.nnh-phead h1{font-size:32px;font-weight:800;letter-spacing:-0.5px}
.nnh-profile .plogo,.nnh-phead .plogo{width:72px;height:72px;border-radius:16px}

/* -- Sections: open, whitespace rhythm, readable measure -- */
.nnh-profile .col-main > .block,.nnh-profile .col-main > section{margin-bottom:44px}
.nnh-profile .col-main h2{font-size:22px;font-weight:800}
.nnh-profile .overview,.nnh-profile .col-main p{max-width:640px}

/* -- Buttons: pills; primary goes deep-navy with soft shadow -- */
.nnh-btn{border-radius:999px}
.nnh-btn.primary{background:var(--nnh-blue-deep);box-shadow:0 2px 6px rgba(18,75,112,.25)}
.nnh-btn.primary:hover{filter:brightness(.92)}
.nnh-btn.ghost{border-width:1.5px}

/* -- Sidebar: 336px, cards keep their borders, gently rounded -- */
.nnh-profile .sidecard{border-radius:14px}
@media (min-width:961px){.nnh-profile aside{position:sticky;top:24px}}

/* -- Dashboard framing previews follow the new hero geometry -- */
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:1120/300;border-radius:12px;overflow:hidden}
.nnh-ownerdash .odbanner-preview.has-image.is-phone{aspect-ratio:390/200}

/* =============================================================
   v0.43.0 — DESIGN SYSTEM (Claude Design styleguide adoption).
   Component library ported from handoff/styleguide.html + styles.css,
   every color mapped to live --nnh-* tokens; derived tints use
   color-mix from those tokens, so the palette stays pure.
   ============================================================= */
:root{
  --nnh-r-sm:8px;--nnh-r-md:10px;--nnh-r-lg:14px;
  --nnh-mix-warm:color-mix(in srgb,var(--nnh-line) 45%,var(--nnh-paper));
  --nnh-mix-rowline:color-mix(in srgb,var(--nnh-line) 55%,var(--nnh-card));
  --nnh-mix-rowhover:color-mix(in srgb,var(--nnh-paper) 55%,var(--nnh-card));
  --nnh-shadow-card:0 4px 12px rgba(34,48,60,.06);
  --nnh-shadow-btn:0 2px 6px rgba(34,51,74,.25);
  --nnh-shadow-cta:0 2px 6px rgba(232,134,46,.3);
  --nnh-danger:color-mix(in srgb,var(--nnh-coral) 60%,var(--nnh-ink));
  --nnh-danger-tint:color-mix(in srgb,var(--nnh-coral) 12%,var(--nnh-card));
}

/* -- Buttons: full state model on the existing family -- */
.nnh-btn{gap:8px;border:1.5px solid transparent}
.nnh-btn:focus-visible{outline:2px solid var(--nnh-coral);outline-offset:2px}
.nnh-btn:active{transform:translateY(1px)}
.nnh-btn[disabled],.nnh-btn.is-disabled{opacity:.45;pointer-events:none}
.nnh-btn.primary{box-shadow:var(--nnh-shadow-btn)}
.nnh-btn.cta{background:var(--nnh-coral);color:#fff;box-shadow:var(--nnh-shadow-cta)}
.nnh-btn.cta:hover{filter:brightness(.94)}
.nnh-btn.gold{background:var(--nnh-gold);color:var(--nnh-ink)}
.nnh-btn.gold:hover{filter:brightness(.96)}
.nnh-btn.ghost{border-color:var(--nnh-line);font-weight:600}
.nnh-btn.ghost:hover{border-color:var(--nnh-ink);color:var(--nnh-ink)}
.nnh-btn.danger-quiet{background:var(--nnh-card);color:var(--nnh-danger);border-color:color-mix(in srgb,var(--nnh-danger) 30%,var(--nnh-card))}
.nnh-btn.danger-quiet:hover{background:var(--nnh-danger-tint)}

/* -- Forms: shared field treatment, focus ring, error state -- */
.nnh-form .field label,.nnh-ownerdash .field label{font-size:13px;font-weight:700;color:var(--nnh-ink)}
.nnh-form .field .hint,.nnh-ownerdash .hint{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-form input[type="text"],.nnh-form input[type="email"],.nnh-form input[type="url"],.nnh-form input[type="tel"],.nnh-form input[type="date"],.nnh-form select,.nnh-form textarea,
.nnh-ownerdash input[type="text"],.nnh-ownerdash input[type="email"],.nnh-ownerdash input[type="url"],.nnh-ownerdash input[type="tel"],.nnh-ownerdash input[type="date"],.nnh-ownerdash select,.nnh-ownerdash textarea{
  border:1px solid var(--nnh-line);border-radius:var(--nnh-r-md);padding:11px 14px;background:#FFFDF8;color:var(--nnh-ink);font:400 14px/1.5 var(--nnh-body,"Public Sans"),sans-serif}
.nnh-form select,.nnh-ownerdash select{font-weight:600;background:var(--nnh-card)}
.nnh-form textarea,.nnh-ownerdash textarea{min-height:96px;resize:vertical;line-height:1.6}
.nnh-form input:focus,.nnh-form select:focus,.nnh-form textarea:focus,
.nnh-ownerdash input:focus,.nnh-ownerdash select:focus,.nnh-ownerdash textarea:focus{outline:2px solid var(--nnh-coral);outline-offset:1px}
.nnh-form .is-error,.nnh-ownerdash .is-error{border-color:var(--nnh-danger) !important;background:var(--nnh-danger-tint) !important}
.error-text{font-size:12px;color:var(--nnh-danger);font-weight:600;margin-top:5px}
.nnh-form input:disabled,.nnh-ownerdash input:disabled,.nnh-ownerdash textarea:disabled{opacity:.5;background:var(--nnh-line)}

/* -- Cards -- */
.nnh-profile .sidecard,.nnh-profile .fcard,.nnh-ownerdash .odcard,.nnh-ownerdash .fcard{border:1px solid var(--nnh-line);border-radius:var(--nnh-r-lg)}
.nnh-cardlink:hover{border-color:var(--nnh-coral);box-shadow:var(--nnh-shadow-card)}
.nnh-ownerdash .odphoto-drop{border:1.5px dashed var(--nnh-line);border-radius:var(--nnh-r-lg)}

/* -- Badges -- */
.nnh-badge{display:inline-block;font:800 11px/1.4 var(--nnh-body);letter-spacing:.5px;text-transform:uppercase;padding:4px 12px;border-radius:999px}
.nnh-badge.green{background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-badge.blue{background:var(--nnh-sky-tint);color:var(--nnh-blue)}
.nnh-badge.gold{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.nnh-badge.gray{background:var(--nnh-mix-warm);color:var(--nnh-ink-soft)}
.nnh-badge.coral{background:var(--nnh-coral);color:#fff}

/* -- Notices (and the existing ok/err lines join the system) -- */
.nnh-notice{border-radius:var(--nnh-r-md);padding:14px 18px;font-size:13.5px;line-height:1.6;border:1px solid}
.nnh-notice.info{background:var(--nnh-sky-tint);border-color:color-mix(in srgb,var(--nnh-blue) 25%,var(--nnh-card));color:var(--nnh-ink)}
.nnh-notice.success{background:var(--nnh-green-tint);border-color:color-mix(in srgb,var(--nnh-green) 30%,var(--nnh-card));color:var(--nnh-green)}
.nnh-notice.charm{background:var(--nnh-gold-tint);border-color:color-mix(in srgb,var(--nnh-gold) 35%,var(--nnh-card));color:var(--nnh-amber)}
.nnh-notice.error{background:var(--nnh-danger-tint);border-color:color-mix(in srgb,var(--nnh-danger) 30%,var(--nnh-card));color:var(--nnh-danger)}

/* -- Tables (real tables + the contact list rows) -- */
.nnh-table{width:100%;border-collapse:collapse;font-size:13.5px}
.nnh-table th{text-align:left;font:800 10.5px/1.4 var(--nnh-body);letter-spacing:1px;text-transform:uppercase;color:var(--nnh-ink-soft);padding:10px 12px;border-bottom:1px solid var(--nnh-mix-rowline)}
.nnh-table td{padding:13px 12px;border-bottom:1px solid var(--nnh-mix-rowline);color:var(--nnh-ink);vertical-align:middle}
.nnh-table tr:hover td{background:var(--nnh-mix-rowhover)}
.nnh-ownerdash .nnh-contact-row:hover{background:var(--nnh-mix-rowhover)}

/* -- Dashboard shell: sidenav + subnav + stat typography -- */
.nnh-ownerdash .odnav-item{border-radius:var(--nnh-r-md);font-weight:600;padding:10px 14px}
.nnh-ownerdash .odnav-item:hover{background:var(--nnh-mix-warm)}
.nnh-ownerdash .odnav-item.on{background:var(--nnh-blue-deep);color:#fff;font-weight:700}
.nnh-ownerdash .odsubnav-item{padding:8px 14px 8px 28px;font-size:13px;border-radius:var(--nnh-r-md)}
.nnh-ownerdash .odsubnav-item.on{background:var(--nnh-mix-warm);color:var(--nnh-ink)}
.nnh-stat .label{font:800 10.5px/1.4 var(--nnh-body);letter-spacing:1px;text-transform:uppercase;color:var(--nnh-ink-soft)}
.nnh-stat .value{font-family:var(--nnh-display,"Bricolage Grotesque"),sans-serif;font-size:28px;font-weight:800;color:var(--nnh-ink);margin-top:6px}

/* =============================================================
   v0.43.1 — PROFILE CONVERGENCE with the v4 handoff spec.
   The decisive difference: v4 puts every section in a CARD.
   Supersedes 0.42.1's open-section experiment. Geometry per the
   handoff tokens: 1180 column, banner 280, section stack 24.
   ============================================================= */
/* Geometry back to spec */
.nnh-page .wrap{max-width:1120px}
.nnh-profile{max-width:1120px}
.nnh-banner{max-width:1132px;height:280px}
@media (max-width:720px){.nnh-banner{height:220px}}
.nnh-ownerdash .odbanner-preview.has-image{aspect-ratio:1132/280}
.nnh-ownerdash .odbanner-preview.has-image.is-phone{aspect-ratio:390/220}

/* v0.46.7 — sections are bare on cream (matches latest Kibbler mockup); only
   content is carded (About tabs/prose, Services columns, "What it's like",
   accordions, testimonials). Reviews + About prose read as plain text. */
.nnh-profile .col-main > .block,.nnh-profile > div > .block,.nnh-profile section.block{background:transparent;border:0;border-radius:0;padding:0;margin-bottom:44px}
.nnh-profile .col-main > .block:last-child{margin-bottom:0}
.nnh-profile .col-main h2,.nnh-profile section.block > h2{font-size:22px;font-weight:800;margin-bottom:0}

/* Squiggle under every section heading, same brush as the original */
.nnh-profile section.block > h2{position:relative;display:inline-block}
.nnh-profile section.block > h2::after{
  content:"";position:absolute;left:0;right:-4px;bottom:-7px;height:7px;
  background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="8" viewBox="0 0 80 8"><path d="M1 5 Q 10 1, 20 5 T 40 5 T 60 5 T 80 5" fill="none" stroke="%23F5A93B" stroke-width="3" stroke-linecap="round"/></svg>') repeat-x;
  background-size:80px 8px}

/* Prose fills the card (retire the 640px cap from the canvas pass) */
.nnh-profile .overview,.nnh-profile .col-main p{max-width:none}

/* Services: dotted price leaders, spec width */
.nnh-profile .svcgroup ul{max-width:480px}
.nnh-profile .svcgroup li{align-items:baseline;gap:12px}
.nnh-profile .svcgroup li .dots{flex:1;border-bottom:1px dotted var(--nnh-line);transform:translateY(-3px)}
.nnh-profile .svcgroup li em{font-weight:700}

/* Locals-know reads as the charm card */
.nnh-profile .localnote{background:var(--nnh-gold-tint);border:1px solid color-mix(in srgb,var(--nnh-gold) 35%,var(--nnh-card));border-radius:var(--nnh-r-md);padding:12px 16px;font-size:13.5px;line-height:1.6;color:var(--nnh-amber)}

/* Claimed pill gets its hairline, status reads strong green */
.nnh-phead .claimed,.nnh-phead .pclaimed{border:1px solid color-mix(in srgb,var(--nnh-green) 30%,var(--nnh-card))}
.nnh-phead .openline strong,.nnh-phead .popen{color:var(--nnh-green);font-weight:700}

/* =============================================================
   v0.43.4 — hero band converges to find-local.html exactly:
   flat blue, 36px title, search card. The gradient, sun ornament,
   subtitle, and caption are not in the spec; hidden (reversible).
   ============================================================= */
.nnh-searchband{background:var(--nnh-blue);padding:56px 0 0}
.nnh-searchband .sun{display:none}
.nnh-searchband p.sub{display:none}
.nnh-searchband .caption,.nnh-searchband .tip,.nnh-searchband .searchnote{display:none}
.nnh-searchband h1{font-size:36px;margin-bottom:24px}
.nnh-searchband h1 em{color:var(--nnh-gold)}
.nnh-searchband .inner{padding-bottom:56px}
.nnh-searchband .searchbox{max-width:720px;grid-template-columns:1.4fr 1fr auto;box-shadow:0 8px 28px rgba(34,48,60,.25)}
.nnh-searchband .field label{font:800 10.5px/1.4 var(--nnh-body);letter-spacing:1px;text-transform:uppercase;color:var(--nnh-ink-soft)}

/* =============================================================
   v0.43.6 — hero + mobile fixes from the 5:20 screenshot pair
   ============================================================= */
/* Hero title is white on the blue band, per the spec (the system
   stylesheet's generic heading ink was overriding it) */
.nnh-searchband h1{color:#fff !important}
.nnh-searchband h1 em{color:var(--nnh-gold) !important}
/* Phone: search card stacks again (the 0.43.4 grid rule was
   unconditional and beat the earlier stacking rule — my bug) */
@media (max-width:720px){
  .nnh-searchband .searchbox{grid-template-columns:1fr}
  .nnh-searchband button{width:100%;min-height:48px}
  .nnh-searchband .field{border-right:0;border-bottom:1px solid var(--nnh-line);padding:8px 10px}
  .nnh-searchband .field:last-of-type{border-bottom:0}
  .nnh-topbar .wrap > span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:70vw;font-size:12px}
}

/* =============================================================
   v0.43.7 — home converges to the REAL target mockups (the owner
   clarified direction: the mockups have the subtitle, the caption,
   a flat band edge, and two-letter category chips)
   ============================================================= */
.nnh-searchband p.sub{display:block}
.nnh-searchband .skyline{display:none}
.nnh-searchband .inner{padding-bottom:64px}
.nnh-searchband .searchtip{margin:12px 2px 0;font-size:13px;font-style:italic;color:color-mix(in srgb,#fff 75%,var(--nnh-blue))}
.catcard .cic-init{display:grid;place-items:center;font:800 12.5px/1 var(--nnh-body);letter-spacing:.5px}

/* ---------- Jobs & payments pipeline (Aug 2026) ---------- */
.nnh-ownerdash .odjobs-notice{margin:0 0 14px}
.nnh-ownerdash .odjobs-list{display:flex;flex-direction:column;gap:12px}
.nnh-ownerdash .odjob{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;flex-wrap:wrap}
.nnh-ownerdash .odjob-main b{font-family:var(--nnh-display);font-size:15px}
.nnh-ownerdash .odjob-svc{color:var(--nnh-ink-soft);font-size:13.5px;margin-left:6px}
.nnh-ownerdash .odjob-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:4px;font-size:13px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odjob-notes{margin:8px 0 0;font-size:13.5px;color:var(--nnh-ink)}
.nnh-ownerdash .odjob-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:0}
.nnh-ownerdash .odjob-new{margin-bottom:18px}
.nnh-ownerdash .odjob-new summary{font-weight:700;cursor:pointer;font-size:14px}
.nnh-ownerdash .odjob-new form{margin-top:14px}
.nnh-ownerdash .odjob-formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px}
.nnh-ownerdash .odjobs-table td.odjob-rowactions{white-space:nowrap;text-align:right}
.nnh-ownerdash .odjob-rowactions form{display:inline-flex;gap:6px}
.nnh-ownerdash .odjob-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 10px;border-radius:999px;background:var(--nnh-sky-tint);color:var(--nnh-blue)}
.nnh-ownerdash .odjob-pill.is-request{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.nnh-ownerdash .odjob-pill.is-quote{background:var(--nnh-sky-tint);color:var(--nnh-blue)}
.nnh-ownerdash .odjob-pill.is-booked{background:var(--nnh-sky-tint);color:var(--nnh-blue-dark)}
.nnh-ownerdash .odjob-pill.is-invoiced{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.nnh-ownerdash .odjob-pill.is-paid{background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-ownerdash .odjob-pill.is-declined{background:#EFEAE0;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odjob-qresp{display:inline-block;font-size:11px;font-weight:700;margin-top:3px}
.nnh-ownerdash .odjob-qresp.is-accept{color:var(--nnh-green)}
.nnh-ownerdash .odjob-qresp.is-decline{color:var(--nnh-ink-soft)}
.nnh-ownerdash .odjob-invlink{font-size:12px}
.nnh-ownerdash .odjob-pill.is-unpaid{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.nnh-ownerdash .odjob-pill.is-free{background:#EFEAE0;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odjob-booked{display:inline-block;font-size:11.5px;font-weight:600;color:var(--nnh-blue-dark);white-space:nowrap}
.nnh-ownerdash .odjob-dateedit{font-size:12px;padding:3px 6px;border:1px solid var(--nnh-line,#dcd6c8);border-radius:6px;max-width:150px}
.nnh-ownerdash .odaction-row input[readonly]{background:#f3efe6;color:var(--nnh-ink-soft);cursor:not-allowed}
.nnh-ownerdash .nnh-empty-soft{text-align:center;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-empty-soft strong{display:block;font-family:var(--nnh-display);font-size:15px;color:var(--nnh-ink);margin-bottom:4px}
/* Bookings calendar */
.nnh-ownerdash .odbookings-grid{display:grid;grid-template-columns:1fr 300px;gap:18px;margin-bottom:18px;align-items:start}
.nnh-ownerdash .odcal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.nnh-ownerdash .odcal-head b{font-family:var(--nnh-display);font-size:16px}
.nnh-ownerdash .odcal-nav{width:30px;height:30px;display:inline-grid;place-items:center;border:1px solid var(--nnh-line);border-radius:8px;color:var(--nnh-ink);font-size:18px;line-height:1}
.nnh-ownerdash .odcal-nav:hover{border-color:var(--nnh-blue);color:var(--nnh-blue);text-decoration:none}
.nnh-ownerdash .odcal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.nnh-ownerdash .odcal-dow{text-align:center;font-size:11px;font-weight:700;color:var(--nnh-ink-soft);text-transform:uppercase;letter-spacing:.04em;padding-bottom:4px}
.nnh-ownerdash .odcal-cell{position:relative;aspect-ratio:1;border:1px solid var(--nnh-line);border-radius:8px;padding:5px;display:flex;flex-direction:column;justify-content:space-between}
.nnh-ownerdash .odcal-cell.is-empty{border:0}
.nnh-ownerdash .odcal-cell.is-today{border-color:var(--nnh-blue);box-shadow:inset 0 0 0 1px var(--nnh-blue)}
.nnh-ownerdash .odcal-cell.has-job{background:var(--nnh-sky-tint);border-color:var(--nnh-blue)}
.nnh-ownerdash .odcal-num{font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .odcal-dot{align-self:flex-end;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:var(--nnh-blue);color:#fff;font-size:11px;font-weight:700;display:inline-grid;place-items:center}
@media (max-width:900px){.nnh-ownerdash .odbookings-grid{grid-template-columns:1fr}.nnh-ownerdash .odjob-formgrid{grid-template-columns:1fr}}
/* Message source chip (chat vs form reply) */
.nnh-ownerdash .nnh-message-src{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 7px;border-radius:999px;vertical-align:middle;margin-left:4px}
.nnh-ownerdash .nnh-message-src.is-chat{background:var(--nnh-sky-tint);color:var(--nnh-blue)}
.nnh-ownerdash .nnh-message-src.is-form{background:var(--nnh-gold-tint);color:var(--nnh-amber)}
.nnh-ownerdash .nnh-msg-filters{margin:0 0 16px}
.nnh-ownerdash .nnh-message-src.is-campaign{background:var(--nnh-green-tint);color:var(--nnh-green)}
.nnh-ownerdash .nnh-message-src.is-auto{background:color-mix(in srgb,var(--nnh-line) 45%,#fff);color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-message-sent.is-customer{background:var(--nnh-gold-tint)}
/* Threaded conversation: latest on top, earlier collapsed */
.nnh-ownerdash .nnh-thread-latest{font-size:13.5px}
.nnh-ownerdash .nnh-thread-history{margin:2px 0 10px}
.nnh-ownerdash .nnh-thread-history summary{cursor:pointer;font-size:12px;font-weight:700;color:var(--nnh-blue);list-style:none;padding:2px 0}
.nnh-ownerdash .nnh-thread-history summary::-webkit-details-marker{display:none}
.nnh-ownerdash .nnh-thread-history summary::before{content:"▸ "}
.nnh-ownerdash .nnh-thread-history[open] summary::before{content:"▾ "}
.nnh-ownerdash .nnh-thread-history[open] summary{margin-bottom:8px}
/* Campaign label + message search */
.nnh-ownerdash .nnh-message-campaign{color:var(--nnh-amber);font-weight:600}
.nnh-ownerdash .nnh-msg-search{width:100%;max-width:340px;margin:10px 0 4px;border:1px solid var(--nnh-line);border-radius:10px;padding:8px 12px;font:400 13.5px var(--nnh-body);color:var(--nnh-ink);background:#fff}

/* Audience segmentation — compose "Who gets this" + contact tags + opt-in extras */
.nnh-seg{border:1px solid var(--nnh-gold-border);border-radius:10px;padding:12px 14px;margin:0 0 14px;background:var(--nnh-coral-tint)}
.nnh-seg > legend{font-weight:700;color:var(--nnh-blue-deep);padding:0 6px}
.nnh-seg .opt{font-weight:400;color:var(--nnh-amber);font-size:.85em}
.nnh-seg-group{margin:8px 0}
.nnh-seg-label{display:block;font-weight:600;font-size:.9em;color:var(--nnh-blue-deep);margin-bottom:4px}
.nnh-seg-chips{display:flex;flex-wrap:wrap;gap:6px}
.nnh-seg-chip{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid var(--nnh-gold-border);border-radius:999px;padding:4px 11px;font-size:.9em;cursor:pointer;user-select:none}
.nnh-seg-chip:hover{border-color:var(--nnh-coral)}
.nnh-seg-chip input{margin:0}
.nnh-seg-count{margin:10px 0 0;font-weight:600;color:var(--nnh-blue)}
.nnh-seg-count.is-zero{color:#b02a2a}
.nnh-seg-empty{margin:4px 0 0}
/* Contact row: town + interest tags inside the expandable panel */
.nnh-contact-tags{display:flex;flex-wrap:wrap;gap:10px 18px;align-items:flex-start;margin:0 0 8px}
.nnh-contact-townfield{display:flex;flex-direction:column;gap:3px;font-size:.85em;font-weight:600;color:var(--nnh-blue-deep)}
.nnh-contact-townfield input{font-weight:400}
.nnh-contact-intfield{display:flex;flex-direction:column;gap:4px;font-size:.85em;font-weight:600;color:var(--nnh-blue-deep)}
/* Public opt-in extra fields */
.nnh-sub-extra{margin:6px 0 0;padding:8px 10px;border-left:3px solid var(--nnh-gold-border);background:var(--nnh-coral-tint);border-radius:0 8px 8px 0}
.nnh-sub-ints{display:flex;flex-wrap:wrap;gap:6px}

/* Contacts: Contacts | Lists view toggle */
.nnh-ct-views{display:inline-flex;gap:4px;background:#EFE7DA;border-radius:999px;padding:4px;margin:0 0 14px}
.nnh-ct-viewbtn{border:0;background:transparent;padding:6px 18px;border-radius:999px;font-weight:600;color:var(--nnh-blue-deep);cursor:pointer}
.nnh-ct-viewbtn.on{background:#fff;color:var(--nnh-blue);box-shadow:0 1px 3px rgba(0,0,0,.12)}
/* Lists view */
.nnh-list-section{margin:18px 0 8px;color:var(--nnh-blue-deep);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}
.nnh-list-cards{display:flex;flex-direction:column;gap:8px}
.nnh-list-row{position:relative;background:#fff;border:1px solid var(--nnh-gold-border);border-radius:10px;padding:10px 14px}
.nnh-list-detail{width:100%;min-width:0}
.nnh-list-detail > summary{cursor:pointer;display:flex;align-items:center;gap:10px;font-weight:600;color:var(--nnh-blue-deep);list-style:none;padding-right:340px}
.nnh-list-detail > summary::-webkit-details-marker{display:none}
.nnh-list-detail > summary::before{content:"▸";color:var(--nnh-amber);font-size:.85em;transition:transform .15s}
.nnh-list-detail[open] > summary::before{transform:rotate(90deg)}
.nnh-list-name{font-size:1.02em}
.nnh-list-count{background:var(--nnh-coral-tint);color:var(--nnh-amber);font-weight:700;border-radius:999px;padding:1px 10px;font-size:.85em}
.nnh-list-actions{position:absolute;top:10px;right:14px;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:760px){.nnh-list-detail > summary{padding-right:0}.nnh-list-actions{position:static;margin-top:10px;justify-content:flex-start}}

/* Contacts: visible meta line (source/town/interests/activity) + column toggle */
.nnh-ownerdash .nnh-contact-idcol{min-width:0;display:flex;flex-direction:column;gap:2px}
.nnh-ownerdash .nnh-cmeta{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}
.nnh-ownerdash .nnh-cmeta-item{font-size:11px;line-height:1.5;padding:1px 8px;border-radius:999px;background:#eef1f4;color:var(--nnh-ink-soft);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.nnh-ownerdash .nnh-cmeta-item.cmeta-int{background:var(--nnh-coral-tint);color:var(--nnh-amber);font-weight:600}
.nnh-ownerdash .nnh-cmeta-item.cmeta-town{background:#e7f0f7;color:var(--nnh-sky)}
.nnh-ownerdash .nnh-cmeta-item.cmeta-activity{background:transparent;color:#9aa4ae;padding-left:2px}
.nnh-ownerdash .nnh-cmeta-item.cmeta-untagged,.nnh-ownerdash .nnh-cmeta-item.cmeta-empty{border:1px dashed var(--nnh-gold-border);background:transparent;color:var(--nnh-amber);cursor:pointer;font-weight:600}
.nnh-ownerdash .nnh-cmeta-item.cmeta-empty:hover{border-color:var(--nnh-coral);color:var(--nnh-coral)}
.nnh-ownerdash [data-nnh-contact-table].hide-src .cmeta-src,
.nnh-ownerdash [data-nnh-contact-table].hide-town .cmeta-town,
.nnh-ownerdash [data-nnh-contact-table].hide-int .cmeta-int,
.nnh-ownerdash [data-nnh-contact-table].hide-activity .cmeta-activity{display:none}
/* Columns popover */
.nnh-ownerdash .nnh-ct-colmenu{position:relative}
.nnh-ownerdash .nnh-ct-colbtn{border:1px solid #d4dce4;background:#fff;border-radius:999px;padding:6px 14px;font:700 12px var(--nnh-body);color:var(--nnh-blue-deep);cursor:pointer}
.nnh-ownerdash .nnh-ct-colpop{position:absolute;right:0;top:calc(100% + 6px);z-index:20;background:#fff;border:1px solid var(--nnh-gold-border);border-radius:10px;box-shadow:0 8px 28px rgba(13,42,64,.16);padding:10px 12px;display:flex;flex-direction:column;gap:7px;min-width:170px}
.nnh-ownerdash .nnh-ct-colpop[hidden]{display:none}
.nnh-ownerdash .nnh-ct-colpop label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--nnh-blue-deep);cursor:pointer}
/* Lists: mailable indicator */
.nnh-ownerdash .nnh-list-count.is-split{background:#e7f0f7;color:var(--nnh-sky)}
.nnh-ownerdash .nnh-list-mailable{font-size:11px;color:var(--nnh-ink-soft);font-weight:500;margin-left:2px}
.nnh-ownerdash .nnh-list-members li.not-sub{opacity:.7}
.nnh-ownerdash .nnh-list-nosub{font-size:10.5px;color:#9aa4ae;border:1px solid #e0e5ea;border-radius:999px;padding:0 7px;margin-left:6px}
.nnh-ownerdash .nnh-list-mmeta{font-size:11px;color:var(--nnh-ink-soft);margin-left:6px}

@media(max-width:620px){
  .nnh-ownerdash .nnh-cell-source,.nnh-ownerdash .nnh-cell-town,.nnh-ownerdash .nnh-cell-service,.nnh-ownerdash .nnh-cell-activity{flex:1 1 45%}
  .nnh-ownerdash .nnh-cell-status,.nnh-ownerdash .nnh-cell-actions{flex:1 1 100%;justify-content:flex-start}
}

/* Top prospects list */
.nnh-ownerdash .nnh-prospect-cards{display:flex;flex-direction:column;gap:8px;margin:6px 0 4px}
.nnh-ownerdash .nnh-prospect-row{display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;background:#fff;border:1px solid var(--nnh-gold-border);border-radius:10px;padding:10px 14px}
.nnh-ownerdash .nnh-prospect-rank{width:28px;height:28px;border-radius:50%;background:#e7edf2;color:var(--nnh-blue-deep);font-weight:800;display:flex;align-items:center;justify-content:center;font-size:13px}
.nnh-ownerdash .nnh-prospect-rank.is-top{background:var(--nnh-coral);color:#fff}
.nnh-ownerdash .nnh-prospect-main{min-width:0}
.nnh-ownerdash .nnh-prospect-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.nnh-ownerdash .nnh-prospect-top b{font-size:13.5px}
.nnh-ownerdash .nnh-prospect-top small{color:var(--nnh-ink-soft);font-size:12px}
.nnh-ownerdash .nnh-prospect-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:4px}
.nnh-ownerdash .nnh-prospect-value{display:flex;align-items:center;gap:12px;flex-shrink:0}
.nnh-ownerdash .nnh-prospect-est{font-weight:800;color:#21663d;font-size:1.06em;white-space:nowrap}
@media(max-width:640px){.nnh-ownerdash .nnh-prospect-row{grid-template-columns:28px 1fr}.nnh-ownerdash .nnh-prospect-value{grid-column:2;justify-content:flex-start;margin-top:2px}}

/* Lists: CRM-style member table (name/phone/email/service/opt-in/created/lifecycle/retention) */
.nnh-ownerdash .nnh-lmembers-wrap{overflow-x:auto;margin:8px 0 2px;border:1px solid #eef1f4;border-radius:8px}
.nnh-ownerdash .nnh-lmembers{width:100%;border-collapse:collapse;font-size:12px;min-width:760px}
.nnh-ownerdash .nnh-lmembers th{text-align:left;padding:7px 10px;color:var(--nnh-ink-soft);font-size:10px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;border-bottom:1px solid #e8edf1;white-space:nowrap;background:rgba(255,255,255,.5)}
.nnh-ownerdash .nnh-lmembers td{padding:7px 10px;border-bottom:1px solid #f0f3f5;vertical-align:middle;white-space:nowrap}
.nnh-ownerdash .nnh-lmembers tr:last-child td{border-bottom:0}
.nnh-ownerdash .nnh-lmembers td b{font-size:12.5px;color:var(--nnh-blue-deep)}
.nnh-ownerdash .nnh-lmembers .nnh-svc-chip{margin:1px 0}
.nnh-ownerdash .nnh-mut{color:#b6bec6}
.nnh-ownerdash .nnh-lmembers a{color:var(--nnh-blue);font-weight:700}
.nnh-ownerdash .nnh-optin,.nnh-ownerdash .nnh-life,.nnh-ownerdash .nnh-ret{font-size:11px;font-weight:600;padding:1px 9px;border-radius:999px;white-space:nowrap}
.nnh-ownerdash .nnh-optin-in{background:#eef7f1;color:#21663d}
.nnh-ownerdash .nnh-optin-no{background:#eef1f4;color:#6b7683}
.nnh-ownerdash .nnh-optin-out{background:#fdecea;color:#b02a2a}
.nnh-ownerdash .nnh-life-new{background:#fff1eb;color:#bd533a}
.nnh-ownerdash .nnh-life-contacted{background:#eef6fc;color:#126ca8}
.nnh-ownerdash .nnh-life-customer{background:#eef7f1;color:#21663d}
.nnh-ownerdash .nnh-ret-good{background:#eef7f1;color:#21663d}
.nnh-ownerdash .nnh-ret-warn{background:#fdf2e2;color:#a8620d}
.nnh-ownerdash .nnh-ret-info{background:#eef1f4;color:#4a5560}

/* Activity trail (contact Edit panel) + Email series labels */
.nnh-ownerdash .nnh-trail{flex:0 0 100%;width:100%;margin-top:8px;border-top:1px dashed #e0e5ea;padding-top:8px}
.nnh-ownerdash .nnh-trail-head{display:block;font-size:10.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--nnh-ink-soft);margin-bottom:5px}
.nnh-ownerdash .nnh-trail ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.nnh-ownerdash .nnh-trail li{display:flex;justify-content:space-between;gap:12px;font-size:12px;color:var(--nnh-blue-deep)}
.nnh-ownerdash .nnh-trail time{color:var(--nnh-ink-soft);white-space:nowrap;font-size:11px}
.nnh-ownerdash .nnh-trigger-label{margin:0 0 10px;color:var(--nnh-blue-deep)}
.nnh-ownerdash .nnh-enroll{margin:0 0 14px}
.nnh-ownerdash .nnh-enroll-locked{opacity:.55}
.nnh-ownerdash .nnh-series-dormant{opacity:.72}
.nnh-ownerdash .nnh-soon{font-size:11px;font-weight:700;color:var(--nnh-amber);background:var(--nnh-coral-tint);border-radius:999px;padding:1px 9px;vertical-align:middle;text-transform:none;letter-spacing:0}

/* Owner: setup checklist, away block, job email opt-in */
.nnh-ownerdash .nnh-nextstep{margin:0 0 18px;border:1.5px solid var(--nnh-gold-line)}
.nnh-ownerdash .nnh-nextstep h3{display:flex;align-items:center;gap:10px}
.nnh-ownerdash .nnh-next-count{font-size:11.5px;font-weight:600;color:var(--nnh-amber);background:var(--nnh-coral-tint);border-radius:999px;padding:2px 10px}
.nnh-ownerdash .nnh-checklist{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;counter-reset:none}
.nnh-ownerdash .nnh-checklist li{display:flex;align-items:center;gap:10px;font-size:14px;padding:5px 0}
.nnh-ownerdash .nnh-checklist .nnh-check{width:20px;text-align:center;color:var(--nnh-blue)}
.nnh-ownerdash .nnh-checklist li.is-done{opacity:.5}
.nnh-ownerdash .nnh-checklist li.is-done .nnh-check{color:var(--nnh-good,#2e7a52)}
.nnh-ownerdash .nnh-checklist a{font-weight:600}
.nnh-ownerdash .nnh-nextdone{margin:0 0 16px;font-weight:600;color:#2e7a52}
.nnh-ownerdash .nnh-away-block{margin-top:14px;border-top:1px dashed #e0e5ea;padding-top:12px;display:flex;flex-direction:column;gap:8px}
.nnh-ownerdash .odjob-emailopt{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--nnh-ink-soft);margin-right:8px}

/* Earned "Quick to reply" badge (public) — positive-only, badge-green */
.nnh-replybadge{display:inline-flex;align-items:center;gap:5px;background:#e7f1ea;color:#216b41;border:1px solid #bfe0cd;border-radius:999px;padding:2px 11px;font-size:12.5px;font-weight:600;line-height:1.5;white-space:nowrap}
.nnh-replybadge::before{content:"⚡";font-size:11px}
/* Owner private line + badges panel + milestones */
.nnh-ownerdash .nnh-reply-private{margin:0 0 14px;font-size:13.5px;color:var(--nnh-ink-soft);background:var(--nnh-surface-2,#fbf8f1);border-left:3px solid var(--nnh-gold-border);border-radius:0 8px 8px 0;padding:9px 14px;max-width:72ch}
.nnh-ownerdash .nnh-badges-card{margin:0 0 18px}
.nnh-ownerdash .nnh-badgelist{display:flex;flex-direction:column;gap:12px;margin-top:10px}
.nnh-ownerdash .nnh-badgerow{border:1px solid var(--nnh-line,#e6e0d3);border-radius:10px;padding:12px 14px}
.nnh-ownerdash .nnh-badgerow.is-earned{background:#f2f8f4;border-color:#cfe6d8}
.nnh-ownerdash .nnh-badgerow-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.nnh-ownerdash .nnh-badgechip{font-weight:700;color:var(--nnh-blue-deep);font-size:14px}
.nnh-ownerdash .nnh-badgerow.is-earned .nnh-badgechip{color:#216b41}
.nnh-ownerdash .nnh-badge-onpage{font-size:11.5px;font-weight:600;color:#216b41}
.nnh-ownerdash .nnh-badge-criteria{margin:6px 0 0;font-size:13px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-badge-progress{height:5px;border-radius:999px;background:#ece6da;margin:9px 0 0;overflow:hidden}
.nnh-ownerdash .nnh-badge-progress span{display:block;height:100%;background:var(--nnh-gold,#c99a3a);border-radius:999px}
.nnh-ownerdash .nnh-badge-note{margin:6px 0 0;font-size:12px;color:var(--nnh-ink-soft)}
.nnh-ownerdash .nnh-milestone{display:flex;align-items:center;gap:12px;justify-content:space-between;background:#f2f8f4;border:1px solid #cfe6d8;border-radius:10px;padding:11px 14px;margin:0 0 16px;font-size:14px;color:#1f5a38;font-weight:600}
.nnh-ownerdash .nnh-milestone-x{border:0;background:transparent;color:#5a8a6e;font-size:20px;line-height:1;cursor:pointer;padding:0 4px}
.nnh-ownerdash .nnh-milestone form{margin:0}

/* Stripe Connect wizard (Payment settings) */
.nnh-ownerdash .nnh-connect-card{margin:0 0 18px;border:1px solid var(--nnh-gold-border);background:var(--nnh-coral-tint)}
.nnh-ownerdash .nnh-connect-card h2{color:var(--nnh-blue-deep)}
.nnh-ownerdash .nnh-connect-ready{font-weight:600;color:#216b41;background:#f2f8f4;border:1px solid #cfe6d8;border-radius:10px;padding:11px 14px;margin:6px 0 12px}
.nnh-ownerdash .nnh-connect-prep{margin:12px 0 4px;font-weight:600;color:var(--nnh-blue-deep);font-size:13.5px}
.nnh-ownerdash .nnh-connect-checklist{margin:0 0 14px;padding:0 0 0 4px;list-style:none;display:flex;flex-direction:column;gap:5px}
.nnh-ownerdash .nnh-connect-checklist li{padding-left:22px;position:relative;color:var(--nnh-ink-soft);font-size:14px}
.nnh-ownerdash .nnh-connect-checklist li::before{content:"";position:absolute;left:3px;top:.55em;width:7px;height:7px;border-radius:2px;background:var(--nnh-coral);transform:rotate(45deg)}
.nnh-ownerdash .nnh-connect-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:8px}

/* Voice listing wizard (v0.44.51) */
/* v0.47.0 — "Write it with AI" invite: gold banner matching the Listing
   Editor mockup (was a green card with a phone screenshot). */
.odvoice-card{background:var(--nnh-gold-tint);border:1px solid var(--nnh-gold-line)}
.odvoice-card h3{margin-top:0;font-size:15px;font-weight:800;color:var(--nnh-ink-strong,#1C2B40)}
.odvoice-card .description{max-width:62ch;color:#7A5A1E;font-size:13px;line-height:1.6}
.odvoice-controls{display:flex;flex-direction:column;gap:8px;flex:0 0 auto;align-items:flex-start}
.odvoice-mic-hint{font-size:12px;line-height:1.5;color:#7A5A1E;max-width:230px}
.odvoice-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:6px}
.odvoice-rec{background:#0b6b53;border-color:#0b6b53;color:#fff}
.odvoice-rec:hover{background:#095843;border-color:#095843}
.odvoice-rec.is-recording{background:#b3261e;border-color:#b3261e;animation:odvoice-pulse 1.3s ease-in-out infinite}
@keyframes odvoice-pulse{0%,100%{box-shadow:0 0 0 0 rgba(179,38,30,.45)}50%{box-shadow:0 0 0 8px rgba(179,38,30,0)}}
.odvoice-status{font-size:.92em;color:#4a5a4d}
.odvoice-transcript{margin-top:14px;padding:12px 14px;background:#fff;border:1px solid #e2e2e2;border-radius:8px}
.odvoice-transcript label{display:block;font-size:.78em;text-transform:uppercase;letter-spacing:.05em;color:#6b7c6e;margin-bottom:4px}
.odvoice-transcript-text{white-space:pre-wrap;line-height:1.5}
.odvoice-filled{animation:odvoice-flash 2.2s ease-out;border-color:#0b6b53 !important;box-shadow:0 0 0 2px rgba(11,107,83,.18)}
@keyframes odvoice-flash{0%{background:#e7f4ea}100%{background:#fff}}
@media (prefers-reduced-motion:reduce){.odvoice-rec.is-recording{animation:none}.odvoice-filled{animation:none}}

/* Per-field voice mics (v0.44.52) */
/* v0.46.9 — voice "Say it" buttons match the Listing Editor mockup: an amber
   text button, not a green pill (green is reserved for success/live/consent). */
.nnh-vmic-wrap{display:inline-flex;align-items:center;gap:10px;margin-top:6px;flex-wrap:wrap}
.nnh-vmic{background:transparent;border:0;padding:0;border-radius:0;box-shadow:none;min-height:0;color:var(--nnh-gold-ink,#B8791E);font-weight:700;font-size:12.5px}
.nnh-vmic:hover{background:transparent;color:#8F5D14;text-decoration:none}
.nnh-vmic.is-recording{background:transparent;border:0;color:var(--nnh-coral);animation:odvoice-pulse 1.3s ease-in-out infinite}
.nnh-vmic-status{font-size:.85em;color:var(--nnh-ink-soft)}
@media (prefers-reduced-motion:reduce){.nnh-vmic.is-recording{animation:none}}

/* Guided voice wizard modal (v0.44.53) */
.odvwiz-overlay{position:fixed;inset:0;z-index:9999;background:rgba(16,32,24,.55);align-items:center;justify-content:center;padding:20px}
.odvwiz-overlay[hidden]{display:none!important}
.odvwiz-overlay:not([hidden]){display:flex}
.odvwiz-modal{position:relative;background:#fff;border-radius:14px;max-width:560px;width:100%;padding:28px 26px 22px;box-shadow:0 20px 60px rgba(0,0,0,.3);max-height:90vh;overflow:auto}
.odvwiz-close{position:absolute;top:10px;right:14px;border:0;background:none;font-size:28px;line-height:1;color:#8a978c;cursor:pointer;padding:4px 8px}
.odvwiz-close:hover{color:#333}
.odvwiz-progress{font-size:.82em;letter-spacing:.04em;text-transform:uppercase;color:#6b7c6e}
.odvwiz-bar{height:5px;background:#e7ede8;border-radius:3px;margin:8px 0 18px;overflow:hidden}
.odvwiz-bar-fill{height:100%;background:#0b6b53;width:0;transition:width .3s ease}
.odvwiz-q{margin:0 0 6px;font-size:1.35em;line-height:1.25}
.odvwiz-hint{margin:0 0 18px;color:#5a6a5d;line-height:1.5}
.odvwiz-rec-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.odvwiz-rec{background:#0b6b53;border-color:#0b6b53;color:#fff}
.odvwiz-rec:hover{background:#095843;border-color:#095843}
.odvwiz-rec.is-recording{background:#b3261e;border-color:#b3261e;animation:odvoice-pulse 1.3s ease-in-out infinite}
.odvwiz-status{font-size:.9em;color:#4a5a4d}
.odvwiz-answer{margin-top:16px;padding:12px 14px;background:#f3f8f4;border:1px solid #d5e5d8;border-radius:8px}
.odvwiz-answer label{display:block;font-size:.76em;text-transform:uppercase;letter-spacing:.05em;color:#6b7c6e;margin-bottom:4px}
.odvwiz-answer-text{white-space:pre-wrap;line-height:1.5}
.odvwiz-nav{display:flex;gap:10px;justify-content:flex-end;margin-top:22px;flex-wrap:wrap}
.odvwiz-nav #odvwiz-back{margin-right:auto}
@media (prefers-reduced-motion:reduce){.odvwiz-rec.is-recording{animation:none}.odvwiz-bar-fill{transition:none}}
@media (max-width:520px){.odvwiz-modal{padding:22px 16px 16px}.odvwiz-q{font-size:1.18em}}
.odvwiz-fills{margin:0 0 8px;font-size:.85em;color:#0b6b53}
.odvwiz-fills b{font-weight:700}
.odvwiz-utility{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid #eef0ee;flex-wrap:wrap}
.odvwiz-utility-right{display:flex;gap:8px;flex-wrap:wrap}
.odvwiz-link{background:none;border:0;color:#6b7c6e;cursor:pointer;text-decoration:underline;font-size:.88em;padding:4px}
.odvwiz-link:hover{color:#b3261e}

/* Signup "more than a listing" add-on preview (v0.44.63) */
.nnh-more-card{border-left:3px solid var(--nnh-accent,#C0602C)}
.nnh-more-list{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.nnh-more-item{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;background:#fff;border:1px solid #e5decd;border-radius:10px}
.nnh-more-item strong{display:block;font-size:1.02em}
.nnh-more-item span{color:#6c7a73;font-size:.9em}
.nnh-more-item b{white-space:nowrap;color:#0b6b53;font-size:1em}
.nnh-more-empty{color:#6c7a73;margin:6px 0}
.nnh-addon-cycle,.nnh-more-cycle{font-weight:500;font-size:.8em;color:#6c7a73}
.nnh-more-item{cursor:pointer}
.nnh-more-item input[type=checkbox]{flex:0 0 auto;margin:2px 0 0}
.nnh-more-body{display:flex;flex-direction:column;flex:1}

/* New-owner welcome banner after paid signup (v0.44.72) */
.odwelcome{background:linear-gradient(180deg,#eef7f0,#fff);border:1px solid #cfe6d5;border-left:4px solid #0b6b53;border-radius:12px;padding:18px 22px;margin:0 0 20px}
.odwelcome h2{margin:0 0 6px;font-size:1.2em}
.odwelcome p{margin:0;color:#3d4c47;max-width:66ch;line-height:1.5}
/* Plan-card switch buttons open the billing portal (v0.44.75) */
.nnh-plan-cta form{width:100%;margin:0}
button.nnh-plan-choose-btn{width:100%;cursor:pointer;font:inherit;display:block}
/* Make [hidden] win over the flex/inline display on wizard rows (v0.44.81) */
.odvwiz-rec-row[hidden],.odvwiz-utility[hidden],.odvwiz-nav button[hidden]{display:none!important}

/* Fill-it-in-by-talking: text left, mic-permission thumbnail right (v0.44.82) */
.odvoice-card{display:flex;gap:24px;align-items:center;padding:18px 22px}
.odvoice-main{flex:1;min-width:0}
.odvoice-shot{flex:0 0 190px;margin:0;text-align:center}
.odvoice-shot img{width:100%;height:auto;border:1px solid #d5e5d8;border-radius:10px;box-shadow:0 4px 14px rgba(23,42,40,.10);display:block}
.odvoice-shot figcaption{margin-top:8px;font-size:.8em;color:#6c7a73;line-height:1.35}
@media (max-width:640px){.odvoice-card{flex-direction:column}.odvoice-shot{flex-basis:auto;max-width:200px}}

/* Mobile fixes: public profile columns stack; top bar tidies (v0.44.85) */
@media (max-width:820px){
  .nnh-profile{grid-template-columns:1fr;gap:28px}
}
@media (max-width:560px){
  .nnh-profile .svc{grid-template-columns:1fr}
}
@media (max-width:640px){
  .nnh-topbar .wrap{flex-wrap:wrap;justify-content:center;gap:2px 14px;text-align:center}
  .nnh-topbar .hello{display:none} /* decorative tagline — hide on phones so the links breathe */
  .nnh-topbar .links{display:flex;flex-wrap:wrap;justify-content:center;gap:2px 14px}
  .nnh-topbar .links a{margin-left:0}
}

/* Profile mobile: drop the header action buttons (the sticky .mobilebar covers
   Call/Directions/Website/Save) and the duplicate embedded map (v0.44.86) */
@media (max-width:640px){
  .nnh-phead .pacts{display:none}
  .nnh-profile .mapbox{display:none}
}

/* =============================================================
   v0.47.1 — Listing Editor match (Listing Editor.dc.html, export 7)
   Additive only: nothing existing is removed or overridden away.
   ============================================================= */

/* Save bar: the mockup fixes it to the viewport with the row aligned
   to the 1120 content column (mockup L461-469). */
.nnh-ownerdash .odsavebar {
  position: fixed; left: 0; right: 0; bottom: 0; top: auto;
  margin: 0; padding: 0; z-index: 50;
  background: #FFFFFF;
  border-top: 1px solid #EAE2D3;
  box-shadow: 0 -6px 16px rgba(34,51,74,.08);
  backdrop-filter: none;
}
.nnh-ownerdash .odsavebar-inner {
  max-width: 1120px; margin: 0 auto; padding: 14px 32px;
  display: flex; justify-content: space-between; align-items: center; gap: 16px;
}
.nnh-ownerdash .odsavebar .small { font-size: 13px; color: #5C6B82; }
/* Clear the fixed bar so the last card is never hidden behind it (mockup L66). */
.nnh-ownerdash form.nnh-form { padding-bottom: 96px; }

/* Plain helper line under a field — grey, not the amber-italic .charm
   treatment, which the mockup reserves for coaching notes (L275, L291,
   L340, L446, L453). */
.nnh-ownerdash .nnh-help {
  display: block; margin-top: 5px;
  font-size: 12px; font-style: normal; line-height: 1.5; color: #5C6B82;
}

/* "Also known as" now sits full-width in Contact & hours (mockup L342-351). */
.nnh-ownerdash .odaka-field { grid-column: 1 / -1; }

@media (max-width: 720px) {
  .nnh-ownerdash .odsavebar-inner { padding: 12px 20px; flex-direction: column; align-items: stretch; gap: 10px; }
}

/* -------------------------------------------------------------
   v0.47.2 — Listing Editor: the amber tab attached under a field.
   From the 2026-09-07 15:05 mockup revision: the voice + AI controls
   left the label row and became a joined amber tab welded to the
   bottom-right of the textarea, which squares off that one corner.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-tabfield > label { padding-right: 0; }
.nnh-ownerdash .nnh-tabfield textarea {
  display: block;
  border-radius: 10px 10px 0 10px;   /* bottom-right squared to meet the tab */
  margin-bottom: 0;
}
.nnh-ownerdash .nnh-fieldfoot {
  position: relative;
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  margin-top: 0;
}
.nnh-ownerdash .nnh-fieldfoot .nnh-help { margin-top: 5px; }
.nnh-ownerdash .nnh-aitabs {
  display: flex; gap: 0; flex-shrink: 0; align-items: stretch;
  border: 1px solid #F0DDB8; border-top: none; border-radius: 0 0 10px 10px;
  background: #FDF3E0; overflow: hidden;
}
/* Mockup order is [🎤 Say it | ✍ Rewrite with AI]; the mic is injected
   after the AI button, so flip it visually rather than rewire the JS. */
.nnh-ownerdash .nnh-aitabs .nnh-vmic-wrap { order: -1; display: flex; align-items: center; }
.nnh-ownerdash .nnh-aitabs .nnh-ai,
.nnh-ownerdash .nnh-aitabs .nnh-vmic {
  background: none !important; border: 0 !important; border-radius: 0 !important;
  box-shadow: none !important; margin: 0 !important;
  padding: 8px 16px !important;
  font-size: 12.5px; font-weight: 700; color: #B8791E !important; cursor: pointer;
}
.nnh-ownerdash .nnh-aitabs .nnh-ai:hover,
.nnh-ownerdash .nnh-aitabs .nnh-vmic:hover { background: #F8E8C8 !important; color: #B8791E !important; }
.nnh-ownerdash .nnh-aitabs .nnh-vmic.is-recording { color: #A65D4E !important; background: #FBEAE6 !important; }
/* divider between the two tabs */
.nnh-ownerdash .nnh-aitabs .nnh-ai { border-left: 1px solid #F0DDB8 !important; }
.nnh-ownerdash .nnh-aitabs .nnh-vmic-wrap:only-child + .nnh-ai,
.nnh-ownerdash .nnh-aitabs .nnh-ai:only-child { border-left: 0 !important; }
/* recording status sits under the tab, not inside it */
.nnh-ownerdash .nnh-aitabs .nnh-vmic-status {
  position: absolute; right: 0; top: 100%; margin-top: 4px;
  font-size: 11.5px; color: #A65D4E; white-space: nowrap;
}
@media (max-width: 720px) {
  .nnh-ownerdash .nnh-fieldfoot { flex-direction: column; align-items: stretch; }
  .nnh-ownerdash .nnh-aitabs { align-self: flex-end; }
}

/* -------------------------------------------------------------
   v0.47.3 — Overview: "Your next step" + "Your badges" to match
   My Business.dc.html (values lifted from the mockup markup).
   ------------------------------------------------------------- */

/* --- Your next step (mockup L226-244) --- */
.nnh-ownerdash .nnh-nextstep {
  background: #FFFFFF; border: 1.5px solid #F0DDB8; border-radius: 14px; padding: 20px 24px;
}
.nnh-ownerdash .nnh-nextstep h3 { font-size: 16px; font-weight: 800; color: #1C2B40; margin: 0; }
.nnh-ownerdash .nnh-nextstep .nnh-next-count {
  background: none; border: 0; padding: 0; margin-left: 4px;
  font-size: 12.5px; font-weight: 600; color: #5C6B82;
}
.nnh-ownerdash .nnh-nextstep .nnh-next-count::before { content: "— "; }
.nnh-ownerdash .nnh-checklist {
  list-style: none; margin: 14px 0 0; padding: 0;
  display: flex; flex-direction: column; gap: 9px;
}
.nnh-ownerdash .nnh-checklist li {
  display: flex; align-items: center; gap: 10px; margin: 0; padding: 0;
}
.nnh-ownerdash .nnh-checklist li::marker { content: none; }
.nnh-ownerdash .nnh-checklist .nnh-check {
  width: 20px; height: 20px; border-radius: 50%; flex-shrink: 0;
  display: grid; place-items: center;
  font-size: 11px; font-weight: 800;
  background: #FDF1DC; color: #B8791E;          /* pending: numbered amber */
}
.nnh-ownerdash .nnh-checklist li.is-done .nnh-check {
  background: #EAF3E6; color: #3E7A34;          /* done: green tick */
}
.nnh-ownerdash .nnh-checklist li a { font-size: 13.5px; font-weight: 700; color: #1C2B40; text-decoration: none; }
.nnh-ownerdash .nnh-checklist li a:hover { color: #1F6FA8; text-decoration: underline; }
.nnh-ownerdash .nnh-checklist li.is-done > span:not(.nnh-check) { font-size: 13.5px; font-weight: 500; color: #8C97A8; }
.nnh-ownerdash .nnh-checklist .nnh-donext {
  font-size: 11px; font-weight: 800; letter-spacing: .5px; color: #E8862E; white-space: nowrap;
}

/* --- Your badges (mockup L246-266): hairline rows, not boxes --- */
.nnh-ownerdash .nnh-badges-card {
  background: #FFFFFF; border: 0; border-radius: 14px; padding: 20px 24px;
  box-shadow: 0 1px 3px rgba(34,51,74,.07);
  display: flex; flex-direction: column; gap: 12px;
}
.nnh-ownerdash .nnh-badges-card h3 { font-size: 16px; font-weight: 800; color: #1C2B40; margin: 0; }
.nnh-ownerdash .nnh-badges-card > .hint { font-size: 12px; color: #5C6B82; margin: 0; }
.nnh-ownerdash .nnh-badgelist { display: flex; flex-direction: column; gap: 12px; }
.nnh-ownerdash .nnh-badgerow {
  background: none !important; border: 0 !important; border-radius: 0 !important; padding: 12px 0 0 !important;
  border-top: 1px solid #F7F2E7 !important;
  display: flex; flex-direction: column; gap: 8px;
}
.nnh-ownerdash .nnh-badgerow-top { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.nnh-ownerdash .nnh-badgechip {
  background: #EAF3E6; color: #3E7A34; border: 1px solid #CBE2C2;
  font-size: 12px; font-weight: 700; padding: 3px 10px; border-radius: 999px;
}
.nnh-ownerdash .nnh-badge-onpage { font-size: 12.5px; font-weight: 700; color: #3E7A34; }
.nnh-ownerdash .nnh-badge-criteria { font-size: 13px; line-height: 1.55; color: #3B4C64; margin: 0; }
.nnh-ownerdash .nnh-badge-progress {
  height: 5px; border-radius: 999px; background: #F2ECDF; overflow: hidden; max-width: 260px;
}
.nnh-ownerdash .nnh-badge-progress > span { display: block; height: 100%; background: #F5A93B; border-radius: 999px; }
.nnh-ownerdash .nnh-badge-note { font-size: 12px; color: #5C6B82; margin: 0; }

/* -------------------------------------------------------------
   v0.47.4 — Overview hero: two-line greeting + the live
   "Needs you" queue (My Business.dc.html L173-186).
   Rows are real records; the block is absent when nothing waits.
   ------------------------------------------------------------- */
.nnh-ownerdash .odhead h1 { line-height: 1.15; }
.nnh-ownerdash .odneeds {
  margin-top: 16px; position: relative; max-width: 460px;
  display: flex; flex-direction: column; gap: 6px;
}
.nnh-ownerdash .odneeds-cap {
  font-size: 10.5px; font-weight: 800; letter-spacing: 1.2px;
  text-transform: uppercase; color: #9FC0DA;
}
.nnh-ownerdash .odneeds-row {
  display: flex; gap: 10px; align-items: center;
  background: rgba(255,255,255,.08); border-radius: 10px;
  padding: 9px 14px; font-size: 13px; color: #FFFFFF; text-decoration: none;
}
.nnh-ownerdash .odneeds-row:hover { background: rgba(255,255,255,.15); color: #FFFFFF; text-decoration: none; }
.nnh-ownerdash .odneeds-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: #F5A93B; }
.nnh-ownerdash .odneeds-row.is-cool .odneeds-dot { background: #C9DAEA; }
.nnh-ownerdash .odneeds-txt { flex: 1; min-width: 0; }
.nnh-ownerdash .odneeds-txt strong { font-weight: 700; }
.nnh-ownerdash .odneeds-arrow { color: #9FC0DA; flex-shrink: 0; }

/* -------------------------------------------------------------
   v0.47.5 — Overview: "Your week, plainly", the Hide toggle on
   Your next step, and mockup card order (My Business.dc.html
   L228-245). Numbers come from real records; views are month-to-
   date because `_nnh_stats` buckets by month, and the copy says so.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-nextstep-head {
  display: flex; justify-content: space-between; align-items: center; gap: 12px;
}
.nnh-ownerdash .nnh-nextstep-hide {
  background: none; border: 0; padding: 0; cursor: pointer;
  font-family: inherit; font-size: 12.5px; font-weight: 700; color: #1F6FA8;
}
.nnh-ownerdash .nnh-nextstep-hide:hover { color: #174F78; text-decoration: underline; }
.nnh-ownerdash .nnh-nextstep.is-collapsed .nnh-checklist,
.nnh-ownerdash .nnh-nextstep.is-collapsed .nnh-nextstep-note { display: none; }

.nnh-ownerdash .nnh-weekcard {
  background: #FFFFFF; border: 0; border-radius: 14px; padding: 20px 24px;
  box-shadow: 0 1px 3px rgba(34,51,74,.07);
}
.nnh-ownerdash .nnh-weekcard h3 { font-size: 16px; font-weight: 800; color: #1C2B40; margin: 0; }
.nnh-ownerdash .nnh-weekline {
  margin: 8px 0 0; max-width: 560px;
  font-size: 13.5px; line-height: 1.7; color: #3B4C64;
}
.nnh-ownerdash .nnh-weekline strong { font-weight: 700; color: #1C2B40; }
.nnh-ownerdash .nnh-weeknote { margin: 8px 0 0; font-size: 11.5px; color: #9FAEC4; }

/* -------------------------------------------------------------
   v0.47.6 — Overview sidebar: switch-business select, the amber
   orientation note, and the "Ask us anything" card
   (My Business.dc.html L70-78, L120-122, L131-140).
   ------------------------------------------------------------- */
.nnh-ownerdash .odswitch-sel {
  margin-top: 6px; max-width: 100%; width: 100%; box-sizing: border-box;
  border: 1px solid #EAE2D3; border-radius: 8px; padding: 4px 8px;
  font-family: inherit; font-size: 11.5px; font-weight: 600; color: #5C6B82;
  background: #FFFFFF; cursor: pointer;
}
.nnh-ownerdash .odsidenote {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 12px;
  padding: 12px 14px; font-size: 12px; line-height: 1.55; color: #7A5A1E;
}
.nnh-ownerdash .odsidenote strong { font-weight: 700; }
.nnh-ownerdash .odaskcard {
  background: #FFFFFF; border: 1.5px solid #EAE2D3; border-radius: 12px;
  padding: 14px 16px; display: flex; flex-direction: column; gap: 10px;
}
.nnh-ownerdash .odaskcard-t { font-size: 13px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odaskcard-in {
  width: 100%; box-sizing: border-box;
  border: 1px solid #D8CFBC; border-radius: 999px; padding: 8px 14px;
  font-family: inherit; font-size: 12.5px; color: #22334A; background: #FFFDF8;
}
.nnh-ownerdash .odaskcard-chip {
  display: block; width: 100%; text-align: left; cursor: pointer;
  border: 0; border-radius: 999px; background: #F2ECDF;
  padding: 6px 12px; font-family: inherit; font-size: 11.5px; font-weight: 600; color: #5C6B82;
}
.nnh-ownerdash .odaskcard-chip:hover { background: #EAE2D3; }

/* -------------------------------------------------------------
   v0.47.7 — Analytics & reports (Analytics.dc.html).
   Sends panel reports reach + replies only: no open or click
   tracking exists, so none is displayed.
   ------------------------------------------------------------- */
.nnh-ownerdash .ansends, .nnh-ownerdash .anvisits {
  background: #FFFFFF; border: 0; border-radius: 14px; padding: 20px 24px;
  box-shadow: 0 1px 3px rgba(34,51,74,.07); margin-top: 20px;
}
.nnh-ownerdash .ansends h3, .nnh-ownerdash .anvisits h3 {
  font-size: 16px; font-weight: 800; color: #1C2B40; margin: 0 0 4px;
}
.nnh-ownerdash .anvisits h3 span { font-size: 12.5px; font-weight: 600; color: #5C6B82; }
.nnh-ownerdash .anvisits p { font-size: 13.5px; line-height: 1.65; color: #3B4C64; margin: 8px 0 0; max-width: 640px; }
.nnh-ownerdash .anvisits-note { font-size: 12px !important; color: #9FAEC4 !important; }

.nnh-ownerdash .ansend { border-left: 3px solid #3E7A34; padding: 2px 0 2px 14px; margin-top: 16px; }
.nnh-ownerdash .ansend-t strong { font-size: 14.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .ansend-t span { font-size: 12.5px; color: #5C6B82; margin-left: 6px; }
.nnh-ownerdash .ansend-n { font-size: 13px; color: #3B4C64; margin-top: 4px; }
.nnh-ownerdash .ansends-foot { font-size: 11.5px; color: #9FAEC4; margin: 16px 0 0; }
.nnh-ownerdash .ansends-empty { font-size: 13.5px; color: #5C6B82; margin: 10px 0 0; }

.nnh-ownerdash .anworth {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 14px;
  padding: 20px 24px; margin-top: 20px;
}
.nnh-ownerdash .anworth h3 { font-size: 16px; font-weight: 800; color: #1C2B40; margin: 0; }
.nnh-ownerdash .anworth h3 span { font-size: 12.5px; font-weight: 600; color: #7A5A1E; }
.nnh-ownerdash .anworth-row {
  display: flex; gap: 12px; align-items: flex-start;
  background: #FFFFFF; border-radius: 10px; padding: 13px 16px; margin-top: 12px;
}
.nnh-ownerdash .anworth-n {
  width: 22px; height: 22px; border-radius: 6px; flex-shrink: 0;
  display: grid; place-items: center;
  background: #22334A; color: #FFFFFF; font-size: 11.5px; font-weight: 800;
}
.nnh-ownerdash .anworth-x { font-size: 13.5px; line-height: 1.6; color: #3B4C64; }
.nnh-ownerdash .anworth-x a { font-weight: 700; }

/* v0.47.8 — Overview: hours honesty nudge (My Business.dc.html L214-222). */
.nnh-ownerdash .nnh-holnudge {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 10px;
  padding: 10px 16px; margin: 16px 0 0;
}
.nnh-ownerdash .nnh-holtxt { flex: 1; min-width: 220px; font-size: 13px; line-height: 1.6; color: #3B4C64; }
.nnh-ownerdash .nnh-holnudge .nnh-btn.primary.sm { font-size: 12.5px; padding: 7px 16px; }
.nnh-ownerdash .nnh-hollink { font-size: 12.5px; font-weight: 700; }
.nnh-ownerdash .nnh-holx {
  background: none; border: 0; cursor: pointer; color: #9FAEC4;
  font-size: 16px; line-height: 1; padding: 0 2px;
}
.nnh-ownerdash .nnh-holx:hover { color: #A65D4E; }
.nnh-ownerdash .nnh-holdone {
  background: #EAF3E6; border: 1px solid #CBE2C2; border-radius: 10px;
  padding: 10px 16px; margin: 16px 0 0; font-size: 13px; color: #3E7A34;
}

/* v0.47.8 — Overview: season agent, collapsed ribbon and expanded set
   (My Business.dc.html L224-252 + Ash's 3.25.42 expanded state). */
.nnh-ownerdash .nnh-searibbon {
  display: flex; gap: 12px; align-items: center; flex-wrap: wrap;
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 10px;
  padding: 10px 16px; margin: 16px 0 0; font-size: 13px; line-height: 1.6; color: #7A5A1E;
}
.nnh-ownerdash .nnh-searibbon > span { flex: 1; min-width: 220px; }
.nnh-ownerdash .nnh-searibbon a { font-size: 12.5px; font-weight: 700; }
.nnh-ownerdash .nnh-seacard {
  background: #FDF3E0; border: 1.5px solid #F0DDB8; border-radius: 14px;
  padding: 20px 24px; margin: 16px 0 0;
  display: flex; flex-direction: column; gap: 12px;
}
.nnh-ownerdash .nnh-seat { font-size: 16px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-seahead p { margin: 3px 0 0; font-size: 12.5px; line-height: 1.6; color: #7A5A1E; }
.nnh-ownerdash .nnh-seaitem {
  display: flex; gap: 10px; align-items: flex-start; cursor: pointer;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 10px; padding: 11px 14px;
}
.nnh-ownerdash .nnh-seaitem input { accent-color: #E8862E; margin-top: 2px; }
.nnh-ownerdash .nnh-seaitem b { display: block; font-size: 13.5px; font-weight: 700; color: #1C2B40; }
.nnh-ownerdash .nnh-seaitem small { display: block; font-size: 12.5px; line-height: 1.55; color: #5C6B82; }
.nnh-ownerdash .nnh-seafoot { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.nnh-ownerdash .nnh-btn.cta {
  background: #E8862E; color: #FFFFFF; border: 0; border-radius: 999px;
  font-weight: 700; font-size: 13.5px; padding: 10px 22px; cursor: pointer;
  box-shadow: 0 2px 6px rgba(232,134,46,.3);
}
.nnh-ownerdash .nnh-btn.cta:hover { background: #D1751F; color: #FFFFFF; }
.nnh-ownerdash .nnh-sealink {
  background: none; border: 0; cursor: pointer; padding: 8px;
  font-family: inherit; font-size: 12.5px; font-weight: 700; color: #7A5A1E;
}
.nnh-ownerdash .nnh-sealink:hover { color: #22334A; }
.nnh-ownerdash .nnh-seadone {
  background: #EAF3E6; border: 1px solid #CBE2C2; border-radius: 10px;
  padding: 10px 16px; margin: 16px 0 0; font-size: 13px; color: #3E7A34;
}
.nnh-ownerdash .nnh-seadone a { color: #3E7A34; text-decoration: underline; font-weight: 700; }

/* v0.47.9 — sidebar global search results inside the Ask card
   (My Business.dc.html L143-150). */
.nnh-ownerdash .odaskcard-res {
  display: flex; flex-direction: column; gap: 2px;
  border: 1px solid #EAE2D3; border-radius: 10px; overflow: hidden;
}
.nnh-ownerdash .odaskcard-res a {
  display: flex; gap: 8px; align-items: center;
  padding: 8px 12px; font-size: 12px; color: #22334A; text-decoration: none;
}
.nnh-ownerdash .odaskcard-res a:hover { background: #FBF8F1; text-decoration: none; }
.nnh-ownerdash .odaskcard-res .ic { flex-shrink: 0; }
.nnh-ownerdash .odaskcard-res .tx { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* -------------------------------------------------------------
   v0.48.0 — Listing Editor structured editors (Listing Editor.dc.html
   L335-363, L407-422). Chips for towns and nicknames, rows for hours
   and services. The underlying field is hidden, never removed — it is
   still what posts, so no-JS still saves.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-uphidden {
  position: absolute !important; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.nnh-ownerdash .nnh-chips { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.nnh-ownerdash .nnh-chip {
  display: inline-flex; gap: 4px; align-items: center;
  font-size: 12.5px; font-weight: 700; padding: 6px 8px 6px 12px; border-radius: 999px;
}
.nnh-ownerdash .nnh-chips.is-blue  .nnh-chip { background: #E9F2F8; color: #1F6FA8; }
.nnh-ownerdash .nnh-chips.is-amber .nnh-chip { background: #FDF1DC; color: #B8791E; }
.nnh-ownerdash .nnh-chip-x {
  border: 0; background: none; cursor: pointer; color: inherit;
  width: 16px; height: 16px; border-radius: 50%; display: grid; place-items: center;
  font-size: 11px; line-height: 1; padding: 0;
}
.nnh-ownerdash .nnh-chips.is-blue  .nnh-chip-x:hover { background: rgba(31,111,168,.15); }
.nnh-ownerdash .nnh-chips.is-amber .nnh-chip-x:hover { background: rgba(184,121,30,.15); }
.nnh-ownerdash .nnh-chips-add {
  box-sizing: border-box; width: 170px;
  border: 1.5px dashed #D8CFBC; border-radius: 999px; padding: 7px 12px;
  font-family: inherit; font-size: 12.5px; color: #22334A; background: #FFFFFF;
}

.nnh-ownerdash .nnh-hrows, .nnh-ownerdash .nnh-srows {
  display: flex; flex-direction: column; gap: 8px; margin-top: 4px;
}
.nnh-ownerdash .nnh-hrow {
  display: grid; grid-template-columns: 180px 1fr 1fr auto auto; gap: 10px; align-items: center;
}
.nnh-ownerdash .nnh-hrow input, .nnh-ownerdash .nnh-srow input {
  box-sizing: border-box; min-width: 0;
  border: 1px solid #D8CFBC; border-radius: 10px; padding: 10px 12px;
  font-family: inherit; font-size: 14px; color: #22334A; background: #FFFDF8;
}
.nnh-ownerdash .nnh-hrow input:disabled { background: #F7F3EA; color: #9FAEC4; }
.nnh-ownerdash .nnh-hlab { font-weight: 600; }
.nnh-ownerdash .nnh-hclosed {
  box-sizing: border-box; white-space: nowrap; cursor: pointer;
  border: 1.5px solid #D8CFBC; background: #FFFFFF; color: #42546E;
  border-radius: 999px; padding: 8px 14px; font-family: inherit; font-size: 12.5px; font-weight: 700;
}
.nnh-ownerdash .nnh-hclosed:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-hclosed.on { border-color: #A65D4E; color: #A65D4E; background: #FBEAE6; }
.nnh-ownerdash .nnh-hx {
  border: 0; background: none; cursor: pointer; color: #A65D4E;
  width: 30px; height: 30px; border-radius: 50%; font-size: 15px; line-height: 1;
}
.nnh-ownerdash .nnh-hx:hover { background: #FBEAE6; }
.nnh-ownerdash .nnh-srow { display: flex; gap: 8px; align-items: center; }
.nnh-ownerdash .nnh-sname { flex: 1.6; }
.nnh-ownerdash .nnh-sprice { flex: 1; }
.nnh-ownerdash .nnh-sbook {
  flex-shrink: 0; white-space: nowrap; text-decoration: none;
  border: 1.5px solid #D8CFBC; background: #FFFFFF; color: #9FAEC4;
  border-radius: 999px; padding: 6px 10px; font-size: 12px; font-weight: 800;
}
.nnh-ownerdash .nnh-sbook.on { background: #22334A; border-color: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-sbook:hover { border-color: #22334A; text-decoration: none; }
.nnh-ownerdash .nnh-rowadd {
  align-self: flex-start; cursor: pointer;
  border: 1.5px dashed #D8CFBC; background: none; border-radius: 999px;
  padding: 8px 16px; font-family: inherit; font-size: 13.5px; font-weight: 700; color: #1F6FA8;
}
.nnh-ownerdash .nnh-rowadd:hover { border-color: #1F6FA8; }
@media (max-width: 720px) {
  .nnh-ownerdash .nnh-hrow { grid-template-columns: 1fr; }
}

/* v0.48.1 — bookable services: the toggle's footnote, and the public
   Book button + request form. A request, never an instant booking. */
.nnh-ownerdash .nnh-snote { font-size: 12px; line-height: 1.55; color: #5C6B82; margin: 4px 0 0; }
.nnh-ownerdash .nnh-sbook { cursor: pointer; font-family: inherit; }

.nnh-profile .nnh-bookbtn {
  margin-left: 10px; cursor: pointer; font-family: inherit;
  border: 1.5px solid #22334A; background: #22334A; color: #FFFFFF;
  border-radius: 999px; padding: 4px 14px; font-size: 12px; font-weight: 800;
}
.nnh-profile .nnh-bookbtn:hover { background: #182739; border-color: #182739; }
.nnh-profile .nnh-bookform {
  margin-top: 18px; background: #FFFFFF; border: 1px solid #EAE2D3;
  border-radius: 14px; padding: 20px 22px;
}
.nnh-profile .nnh-bookform h3 { margin: 0; font-size: 16px; font-weight: 800; color: #1C2B40; }
.nnh-profile .nnh-booknote { margin: 4px 0 0; font-size: 12.5px; color: #5C6B82; }
.nnh-profile .nnh-bookerr { margin: 8px 0 0; font-size: 13px; color: #A65D4E; }
.nnh-profile .nnh-bookgrid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 14px;
}
.nnh-profile .nnh-bookform label,
.nnh-profile .nnh-bookfull {
  display: block; font-size: 13px; font-weight: 700; color: #22334A;
}
.nnh-profile .nnh-bookfull { margin-top: 12px; }
.nnh-profile .nnh-bookform .opt { font-weight: 500; color: #5C6B82; }
.nnh-profile .nnh-bookform input,
.nnh-profile .nnh-bookform textarea {
  width: 100%; box-sizing: border-box; margin-top: 5px;
  border: 1px solid #D8CFBC; border-radius: 10px; padding: 10px 12px;
  font-family: inherit; font-size: 14px; color: #22334A; background: #FFFDF8;
}
.nnh-profile .nnh-bookform .nnh-btn.primary { margin-top: 14px; }
.nnh-profile .nnh-bookdone {
  margin-top: 18px; background: #EAF3E6; border: 1px solid #CBE2C2;
  border-radius: 12px; padding: 14px 18px; font-size: 13.5px; line-height: 1.6; color: #3E7A34;
}
.nnh-profile .nnh-hp { position: absolute; left: -9999px; }
@media (max-width: 720px) { .nnh-profile .nnh-bookgrid { grid-template-columns: 1fr; } }

/* -------------------------------------------------------------
   v0.48.2 — "Answer by tapping": the inline six-question wizard
   (Listing Editor.dc.html L127-238), plus the per-field
   "✓ just rewritten · undo" pill it leaves behind (L271 etc).
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-tapwiz {
  background: #FFFFFF; border: 1.5px solid #F0DDB8; border-radius: 14px;
  padding: 24px 28px; margin-bottom: 24px;
  display: flex; flex-direction: column; gap: 14px;
}
/* display:flex above beats the browser default [hidden]{display:none}, which
   left the panel on screen and empty before it had been opened. */
.nnh-ownerdash .nnh-tapwiz[hidden] { display: none !important; }
.nnh-ownerdash .nnh-tw-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.nnh-ownerdash .nnh-tw-head h3 { margin: 0; font-size: 17px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-tw-x {
  border: 0; background: none; cursor: pointer; color: #5C6B82;
  width: 26px; height: 26px; border-radius: 50%; font-size: 14px; line-height: 1;
}
.nnh-ownerdash .nnh-tw-x:hover { background: #F2ECDF; }
.nnh-ownerdash .nnh-tw-dots { display: flex; gap: 6px; align-items: center; }
.nnh-ownerdash .nnh-tw-dot { height: 6px; width: 18px; border-radius: 999px; background: #EAE2D3; }
.nnh-ownerdash .nnh-tw-dot.on { background: #E8862E; }
.nnh-ownerdash .nnh-tw-clip { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; }
.nnh-ownerdash .nnh-tw-cliplab { font-size: 11.5px; font-weight: 700; color: #5C6B82; }
.nnh-ownerdash .nnh-tw-cliptail { font-size: 11.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-tw-chipfact {
  background: #F5A93B; color: #22334A; font-size: 11.5px; font-weight: 800;
  padding: 4px 12px; border-radius: 999px;
}
.nnh-ownerdash .nnh-tw-title { font-size: 24px; font-weight: 800; letter-spacing: -0.3px; line-height: 1.2; color: #1C2B40; }
.nnh-ownerdash .nnh-tw-why { font-size: 13px; line-height: 1.55; color: #5C6B82; margin-top: 4px; }
.nnh-ownerdash .nnh-tw-why strong { color: #B8791E; }
.nnh-ownerdash .nnh-tw-starters { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; margin-top: 12px; }
.nnh-ownerdash .nnh-tw-slab { font-size: 12px; font-weight: 700; color: #5C6B82; }
.nnh-ownerdash .nnh-tw-shint { font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-tw-chip {
  cursor: pointer; font-family: inherit; font-size: 12.5px; font-weight: 700;
  padding: 8px 16px; border-radius: 999px;
  border: 1.5px solid #D8CFBC; background: #FFFFFF; color: #42546E;
}
.nnh-ownerdash .nnh-tw-chip:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-tw-chip.on { border-color: #22334A; background: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-tw-example {
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 10px;
  padding: 10px 14px; font-size: 12.5px; line-height: 1.6; color: #5C6B82; margin-top: 10px;
}
.nnh-ownerdash .nnh-tw-uselink {
  display: block; margin-top: 6px; padding: 0; border: 0; background: none; cursor: pointer;
  font-family: inherit; font-size: 12px; font-weight: 700; color: #1F6FA8; text-align: left;
}
.nnh-ownerdash .nnh-tw-ta, .nnh-ownerdash .nnh-tw-extra {
  width: 100%; box-sizing: border-box; margin-top: 10px;
  border: 1px solid #D8CFBC; border-radius: 10px; padding: 12px 14px;
  font-family: inherit; font-size: 14px; line-height: 1.6; color: #22334A; background: #FFFDF8;
}
.nnh-ownerdash .nnh-tw-extra { max-width: 420px; font-size: 13.5px; }
.nnh-ownerdash .nnh-tw-adlib {
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 12px;
  padding: 16px 18px; margin-top: 12px; font-size: 15px; line-height: 2.6; color: #3B4C64;
}
.nnh-ownerdash .nnh-tw-blank {
  border: 0; border-bottom: 2px dashed #E8862E; background: transparent;
  padding: 2px 6px; margin: 0 4px; font-family: inherit;
  font-size: 14.5px; font-weight: 700; color: #1C2B40;
}
.nnh-ownerdash .nnh-tw-choices { display: inline-flex; gap: 6px; flex-wrap: wrap; vertical-align: middle; margin: 0 6px; }
.nnh-ownerdash .nnh-tw-choices .nnh-tw-chip { padding: 6px 14px; line-height: 1.2; }
.nnh-ownerdash .nnh-tw-foot { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.nnh-ownerdash .nnh-tw-skip {
  border: 0; background: none; cursor: pointer; padding: 10px;
  font-family: inherit; font-size: 13px; font-weight: 700; color: #5C6B82;
}
.nnh-ownerdash .nnh-tw-skip:hover { color: #22334A; }
.nnh-ownerdash .nnh-tw-count { margin-left: auto; font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-tw-note { margin: 0; font-size: 12px; font-style: italic; color: #B8791E; }

/* the pill a rewrite leaves on the field's label */
.nnh-ownerdash .nnh-rw {
  background: #EAF3E6; color: #3E7A34; font-size: 11px; font-weight: 800;
  padding: 3px 10px; border-radius: 999px; margin-left: 6px; white-space: nowrap;
}
.nnh-ownerdash .nnh-rw-undo {
  border: 0; background: none; cursor: pointer; padding: 0;
  font-family: inherit; font-size: 11px; font-weight: 800;
  color: #3E7A34; text-decoration: underline;
}
.nnh-ownerdash .nnh-tw-vrow { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 12px; }
.nnh-ownerdash .nnh-tw-say {
  cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 700;
  padding: 9px 18px; border-radius: 999px;
  border: 1.5px solid #D8CFBC; background: #FFFFFF; color: #42546E;
}
.nnh-ownerdash .nnh-tw-say:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-tw-say.rec { border-color: #A65D4E; background: #FBEAE6; color: #A65D4E; }

/* -------------------------------------------------------------
   v0.48.4 — "Write it with AI" invite card, exact values from
   Listing Editor.dc.html L112-121. Set literally on these elements
   so the shared .nnh-btn styles can't drift them.
   ------------------------------------------------------------- */
.nnh-ownerdash .odvoice-card {
  background: #FDF3E0;
  border: 1px solid #F0DDB8;
  border-radius: 14px;
  padding: 18px 22px;
  display: flex; gap: 16px; align-items: center; flex-wrap: wrap;
}
.nnh-ownerdash .odvoice-card h3 {
  margin: 0; font-size: 15px; font-weight: 800; color: #1C2B40;
}
.nnh-ownerdash .odvoice-card .description {
  margin: 4px 0 0; max-width: 62ch;
  font-size: 13px; line-height: 1.6; color: #7A5A1E;
}
.nnh-ownerdash .odvoice-main { flex: 1; min-width: 240px; }
.nnh-ownerdash .odvoice-controls {
  display: flex; flex-direction: column; align-items: stretch;
  gap: 8px; flex: 0 0 auto; margin-top: 0;
}
/* Primary: talk it in. */
.nnh-ownerdash #odvwiz-open {
  background: #22334A; border: 0; color: #FFFFFF;
  font-family: inherit; font-weight: 700; font-size: 13.5px;
  padding: 11px 22px; border-radius: 999px; cursor: pointer;
  box-shadow: 0 2px 6px rgba(34,51,74,.25);
  white-space: nowrap; text-align: center;
}
.nnh-ownerdash #odvwiz-open:hover { background: #182739; color: #FFFFFF; }
/* Secondary: tap it in. */
.nnh-ownerdash #odtapwiz-open {
  background: #FFFFFF; border: 1.5px solid #D8CFBC; color: #22334A;
  font-family: inherit; font-weight: 700; font-size: 13px;
  padding: 10px 22px; border-radius: 999px; cursor: pointer;
  white-space: nowrap; text-align: center; box-shadow: none;
}
.nnh-ownerdash #odtapwiz-open:hover { border-color: #22334A; background: #FFFFFF; color: #22334A; }
.nnh-ownerdash .odvoice-mic-hint {
  max-width: 230px; margin-top: 2px;
  font-size: 12px; line-height: 1.5; color: #7A5A1E;
}
@media (max-width: 640px) {
  .nnh-ownerdash .odvoice-controls { align-items: stretch; width: 100%; }
  .nnh-ownerdash .odvoice-mic-hint { max-width: none; }
}

/* -------------------------------------------------------------
   v0.48.5 — Listing Editor: card and control values audited
   line-by-line against Listing Editor.dc.html and corrected.
     section  background:#FFFFFF; border:1px solid #EAE2D3;
              border-radius:14px; padding:24px 28px;
              display:flex; flex-direction:column; gap:20px
     h2       margin:0; font-size:17px; font-weight:800; color:#1C2B40
     label    display:block; font-size:13px; font-weight:700;
              color:#22334A; margin-bottom:6px
     field    border:1px solid #D8CFBC; border-radius:10px;
              padding:12px 14px; font-size:14px; background:#FFFDF8
   ------------------------------------------------------------- */
.nnh-ownerdash .odlisting-card,
.nnh-ownerdash .odabout-card {
  background: #FFFFFF;
  border: 1px solid #EAE2D3;
  border-radius: 14px;
  padding: 24px 28px;
  margin-bottom: 24px;
  display: flex; flex-direction: column; gap: 20px;
}
.nnh-ownerdash .odlisting-card > h3,
.nnh-ownerdash .odabout-card > h3 {
  margin: 0; font-size: 17px; font-weight: 800; color: #1C2B40;
}
/* gap replaces the per-field margin so spacing stays even as fields come and go */
.nnh-ownerdash .odlisting-card .field,
.nnh-ownerdash .odabout-card .field { margin-bottom: 0; }
.nnh-ownerdash .odlisting-card .field > label,
.nnh-ownerdash .odabout-card .field > label {
  display: block; font-size: 13px; font-weight: 700; color: #22334A;
  margin-bottom: 6px; line-height: 1.35; padding-right: 0;
}
.nnh-ownerdash .odlisting-card .field .opt,
.nnh-ownerdash .odabout-card .field .opt { font-weight: 500; color: #5C6B82; }
.nnh-ownerdash .odlisting-card input[type="text"],
.nnh-ownerdash .odlisting-card input[type="url"],
.nnh-ownerdash .odlisting-card input[type="tel"],
.nnh-ownerdash .odlisting-card textarea,
.nnh-ownerdash .odabout-card input[type="text"],
.nnh-ownerdash .odabout-card textarea {
  border: 1px solid #D8CFBC; border-radius: 10px;
  padding: 12px 14px; font-size: 14px; line-height: 1.55;
  color: #22334A; background: #FFFDF8;
}
.nnh-ownerdash .odlisting-card input[type="text"],
.nnh-ownerdash .odlisting-card input[type="url"],
.nnh-ownerdash .odabout-card input[type="text"] { padding: 11px 14px; }
/* the two-column pairs the mockup uses inside a card */
.nnh-ownerdash .odlisting-card .grid2,
.nnh-ownerdash .odabout-card .odabout-bottom { gap: 20px; }

/* -------------------------------------------------------------
   v0.48.6 — corrections found by looking at the rendered page.
   1. v0.48.5 re-rounded the textarea's bottom-right corner, undoing
      the weld. Restored with enough specificity to stick.
   2. A 5px line-box gap sat between the field and its tab; the field
      is a <p>, so making it a flex column removes it.
   3. In the two-column pair the helper text was being squeezed beside
      the tab. The mockup puts the tab on its own line, helper below.
   ------------------------------------------------------------- */
.nnh-ownerdash .odabout-card .nnh-tabfield,
.nnh-ownerdash .odlisting-card .nnh-tabfield {
  display: flex; flex-direction: column; gap: 0;
}
.nnh-ownerdash .odabout-card .nnh-tabfield textarea,
.nnh-ownerdash .odabout-card .nnh-tabfield input[type="text"],
.nnh-ownerdash .odlisting-card .nnh-tabfield textarea,
.nnh-ownerdash .odlisting-card .nnh-tabfield input[type="text"] {
  border-radius: 10px 10px 0 10px;   /* bottom-right squared to meet the tab */
  margin-bottom: 0;
  display: block;
}
.nnh-ownerdash .nnh-tabfield .nnh-fieldfoot { margin-top: 0; }
.nnh-ownerdash .nnh-tabfield .nnh-aitabs { margin-top: -1px; }

/* two-column pair: tab right on its own line, helper full width beneath */
.nnh-ownerdash .odabout-bottom .nnh-fieldfoot {
  flex-wrap: wrap; justify-content: flex-end;
}
.nnh-ownerdash .odabout-bottom .nnh-fieldfoot .nnh-help {
  order: 2; width: 100%; margin-top: 8px;
}
/* Established has a mic but no AI draft, so its tab is a single button */
.nnh-ownerdash .nnh-aitabs:empty { display: none; }
.nnh-ownerdash .nnh-fieldfoot .nnh-help:empty { display: none; }

/* -------------------------------------------------------------
   v0.48.8 — two fixes found in the browser.
   1. `.nnh-ownerdash input[type="text"]` is (0,2,1) because an
      attribute selector carries class-level weight, so it beat the
      chip input's (0,2,0). Raised, rather than reaching for !important.
   2. Per-field mics on fields with no AI tab were rendering as bare
      text links. Given the same amber pill so they read deliberate.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-chips input.nnh-chips-add {
  box-sizing: border-box; width: 170px; flex: 0 0 auto;
  border: 1.5px dashed #D8CFBC; border-radius: 999px;
  padding: 7px 12px; font-size: 12.5px; background: #FFFFFF; color: #22334A;
}
.nnh-ownerdash .nnh-chips input.nnh-chips-add:focus { border-style: solid; }
.nnh-ownerdash .odabout-card .nnh-tabfield input[type="text"],
.nnh-ownerdash .odlisting-card .nnh-tabfield input[type="text"] {
  border-radius: 10px 10px 0 10px;
}
/* a mic with no AI sibling still gets the tab treatment */
.nnh-ownerdash .field > .nnh-vmic-wrap {
  display: inline-flex; align-items: center; margin-top: -1px;
  border: 1px solid #F0DDB8; border-top: none; border-radius: 0 0 10px 10px;
  background: #FDF3E0; overflow: hidden; float: right;
}
.nnh-ownerdash .field > .nnh-vmic-wrap .nnh-vmic {
  background: none !important; border: 0 !important; border-radius: 0 !important;
  box-shadow: none !important; margin: 0 !important; padding: 8px 16px !important;
  font-size: 12.5px; font-weight: 700; color: #B8791E !important;
}
.nnh-ownerdash .field > .nnh-vmic-wrap .nnh-vmic:hover { background: #F8E8C8 !important; }
.nnh-ownerdash .field > .nnh-vmic-wrap .nnh-vmic.is-recording { background: #FBEAE6 !important; color: #A65D4E !important; }
.nnh-ownerdash .field > .nnh-vmic-wrap .nnh-vmic-status {
  font-size: 11.5px; color: #A65D4E; padding-right: 10px;
}
.nnh-ownerdash .field > .nnh-vmic-wrap:after { content: ""; display: block; clear: both; }

/* v0.48.9 — the loose mic tab was stretching full width: `float` is ignored
   on a flex item, and these fields are flex columns. Align it instead. */
.nnh-ownerdash .field:has(> .nnh-vmic-wrap) { display: flex; flex-direction: column; }
.nnh-ownerdash .field > .nnh-vmic-wrap {
  float: none;
  align-self: flex-end;
  width: auto; max-width: max-content;
}

/* v0.49.0 — the mockup puts a mic ONLY on Overview, The Owners and Locals
   know (inside the amber tab). Everywhere else the injected per-field mic is
   noise the design doesn't have, so hide the loose ones.
   NOTE: this hides a duplicate entry point, not the capability — every one of
   these fields is still fillable by voice through "Fill it in by talking" and
   the guided interview, which is where the design puts that job. Delete this
   block to bring the per-field mics back. */
.nnh-ownerdash .field > .nnh-vmic-wrap { display: none; }
.nnh-ownerdash .nnh-aitabs .nnh-vmic-wrap { display: flex; }

/* v0.49.2 — the inline "Just tell us about the business" panel that
   "Fill it in by talking" opens (Listing Editor.dc.html L158-168).
   Its mic is what opens the 13-step modal. */
.nnh-ownerdash .nnh-voicepanel[hidden] { display: none !important; }
.nnh-ownerdash .nnh-vp-body {
  display: flex; flex-direction: column; align-items: center;
  text-align: center; gap: 14px; padding: 16px 0 8px;
}
.nnh-ownerdash .nnh-vp-h {
  font-size: 24px; font-weight: 800; letter-spacing: -0.3px; color: #1C2B40;
}
.nnh-ownerdash .nnh-vp-sub {
  margin: 0; max-width: 480px;
  font-size: 13.5px; line-height: 1.6; color: #5C6B82;
}
.nnh-ownerdash .nnh-vp-mic {
  width: 88px; height: 88px; border-radius: 50%; border: 0; cursor: pointer;
  background: #A65D4E; color: #FFFFFF;
  display: grid; place-items: center;
  box-shadow: 0 4px 14px rgba(166,93,78,.4);
}
.nnh-ownerdash .nnh-vp-mic:hover { background: #8F4C3F; }
.nnh-ownerdash .nnh-vp-tap { font-size: 12.5px; font-weight: 700; color: #A65D4E; }
.nnh-ownerdash .nnh-vp-hint { font-size: 12px; font-style: italic; color: #B8791E; }
.nnh-ownerdash .nnh-vp-swap {
  border: 0; background: none; padding: 0; cursor: pointer;
  font-family: inherit; font-size: 12px; font-style: italic; font-weight: 800;
  color: #B8791E; text-decoration: underline;
}

/* -------------------------------------------------------------
   v0.49.4 — voice wizard modal: palette correction.
   Measured in the browser, three were off-system:
     Start recording  #0B6B53  → #3E7A34 (the system green)
     Next             unstyled browser default (#EFEFEF / black)
     Save & exit      unstyled browser default
     Start over       #6B7C6E  → #1F6FA8 (link blue)
     recording state  #B3261E  → #A65D4E (the system red)
   ------------------------------------------------------------- */
.nnh-ownerdash #odvwiz-rec,
.odvwiz-modal #odvwiz-rec {
  background: #3E7A34; border: 1.5px solid #3E7A34; color: #FFFFFF;
  font-weight: 700; border-radius: 999px; padding: 10px 20px; cursor: pointer;
}
.nnh-ownerdash #odvwiz-rec:hover,
.odvwiz-modal #odvwiz-rec:hover { background: #34682B; border-color: #34682B; }
.odvwiz-modal #odvwiz-rec.is-recording,
.nnh-ownerdash #odvwiz-rec.is-recording {
  background: #A65D4E; border-color: #A65D4E; animation: none;
}
/* Next — the step's forward action: white with the coral edge, as in the mockup */
.odvwiz-modal #odvwiz-next {
  background: #FFFFFF; border: 1.5px solid #E8862E; color: #22334A;
  font-family: inherit; font-weight: 700; font-size: 13.5px;
  padding: 10px 22px; border-radius: 999px; cursor: pointer;
}
.odvwiz-modal #odvwiz-next:hover { background: #FDF3E0; border-color: #D1751F; }
/* Save & exit — quiet muted fill, not a browser default */
.odvwiz-modal #odvwiz-saveexit {
  background: #F2ECDF; border: 1px solid #EAE2D3; color: #42546E;
  font-family: inherit; font-weight: 700; font-size: 12.5px;
  padding: 8px 18px; border-radius: 999px; cursor: pointer;
}
.odvwiz-modal #odvwiz-saveexit:hover { background: #EAE2D3; color: #22334A; }
/* Start over — a link, in link blue */
.odvwiz-modal #odvwiz-restart {
  background: none; border: 0; padding: 0; cursor: pointer;
  font-family: inherit; font-size: 13px; font-weight: 700;
  color: #1F6FA8; text-decoration: underline;
}
.odvwiz-modal #odvwiz-restart:hover { color: #174F78; }
/* "Fills your … box below" reads as the system link blue */
.odvwiz-modal .odvwiz-fills { color: #1F6FA8; font-size: 13px; font-weight: 700; }
.odvwiz-modal .odvwiz-fills b { color: #1F6FA8; }

/* v0.49.5 — the primary invite button was renamed to #odvoice-open when the
   inline panel was added, but its navy styling stayed on #odvwiz-open, which
   is now the hidden modal trigger. Point it at the visible button. */
.nnh-ownerdash #odvoice-open {
  background: #22334A; border: 0; color: #FFFFFF;
  font-family: inherit; font-weight: 700; font-size: 13.5px;
  padding: 11px 22px; border-radius: 999px; cursor: pointer;
  box-shadow: 0 2px 6px rgba(34,51,74,.25);
  white-space: nowrap; text-align: center;
}
.nnh-ownerdash #odvoice-open:hover { background: #182739; color: #FFFFFF; }

/* -------------------------------------------------------------
   v0.49.6 — Photos: shot-idea chips, the ☆ card-photo picker,
   and the split showcase header (Photos.dc.html).
   ------------------------------------------------------------- */
.nnh-ownerdash .odshowcase-title {
  display: flex; justify-content: space-between; align-items: baseline; gap: 12px; flex-wrap: wrap;
}
.nnh-ownerdash .odshowcase-title strong { font-size: 17px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odshowcase-title em { font-style: normal; font-size: 12.5px; font-weight: 600; color: #5C6B82; }
.nnh-ownerdash .odshowcase-count { font-size: 12.5px; font-weight: 700; color: #3E7A34; }
.nnh-ownerdash .odshots {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 14px 0 4px;
}
.nnh-ownerdash .odshots-lab { font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .odshot {
  background: #FDF3E0; border: 1px solid #F0DDB8; color: #7A5A1E;
  font-size: 12.5px; font-weight: 700; padding: 6px 14px; border-radius: 999px;
}
/* ☆ card picker sits on the tile; the chosen one wears the navy badge */
.nnh-ownerdash .odgallery-item { position: relative; }
.nnh-ownerdash .odcard-pick {
  position: absolute; top: 8px; left: 8px; z-index: 2; cursor: pointer;
  background: #FFFFFF; border: 1px solid #F0DDB8; color: #B8791E;
  font-size: 10.5px; font-weight: 800; letter-spacing: .4px;
  padding: 4px 10px; border-radius: 999px; line-height: 1.3;
}
.nnh-ownerdash .odcard-pick input { position: absolute; opacity: 0; width: 0; height: 0; }
.nnh-ownerdash .odcard-pick:hover { border-color: #B8791E; }
.nnh-ownerdash .odcard-pick.on {
  background: #22334A; border-color: #22334A; color: #FFFFFF;
}
.nnh-ownerdash .odgallery-item.is-card { outline: 2px solid #22334A; outline-offset: 2px; border-radius: 12px; }
.nnh-ownerdash .odshowcase-note {
  margin: 12px 0 0; font-size: 12px; line-height: 1.55; color: #5C6B82;
}

/* -------------------------------------------------------------
   v0.49.7 — Photos: banner + logo cards to Photos.dc.html.
   The drag-to-frame machinery is untouched; the sliders are kept
   but folded into "Fine tune", because the mockup's "no sliders
   to fiddle with" would be untrue of this build.
   ------------------------------------------------------------- */
.nnh-ownerdash .odbanner-titlerow {
  display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap;
}
.nnh-ownerdash .odphoto-title strong { font-size: 17px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odphoto-title em { font-style: normal; font-size: 12.5px; font-weight: 600; color: #5C6B82; }
.nnh-ownerdash .odbanner-devices {
  display: inline-flex; background: #F2ECDF; border-radius: 999px; padding: 3px; gap: 2px;
}
.nnh-ownerdash .odbanner-devices button {
  border: 0; background: none; cursor: pointer; font-family: inherit;
  font-size: 12.5px; font-weight: 700; color: #5C6B82;
  padding: 6px 16px; border-radius: 999px;
}
.nnh-ownerdash .odbanner-devices button.on { background: #22334A; color: #FFFFFF; }

.nnh-ownerdash .odbanner-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px; width: 100%; height: 100%; min-height: 150px; cursor: pointer; text-align: center; padding: 20px;
}
.nnh-ownerdash .odbanner-emptyt { font-size: 13.5px; color: #3B4C64; }
.nnh-ownerdash .odbanner-emptyb { font-size: 12.5px; color: #1F6FA8; text-decoration: underline; }
.nnh-ownerdash .odbanner-preview:not(.has-image) {
  background: #FBF8F1; border: 1.5px dashed #D8CFBC; border-radius: 12px;
}
.nnh-ownerdash .odbanner-preview.is-phone { max-width: 390px; margin-left: auto; margin-right: auto; }

.nnh-ownerdash .odbanner-note {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 10px;
  padding: 12px 16px; margin-top: 14px; font-size: 13px; line-height: 1.6; color: #3B4C64;
}
.nnh-ownerdash .odbanner-note strong { color: #1C2B40; }
.nnh-ownerdash details.odbanner-adjust { margin-top: 12px; }
.nnh-ownerdash details.odbanner-adjust > summary {
  cursor: pointer; list-style: none; font-size: 12.5px; font-weight: 700; color: #1F6FA8; padding: 4px 0;
}
.nnh-ownerdash details.odbanner-adjust > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash details.odbanner-adjust > summary:before { content: "▸ "; }
.nnh-ownerdash details.odbanner-adjust[open] > summary:before { content: "▾ "; }
.nnh-ownerdash .odbanner-sharp { margin: 12px 0 0; font-size: 12px; color: #5C6B82; }

.nnh-ownerdash .odlogo-row { display: flex; gap: 16px; align-items: flex-start; margin-top: 14px; }
.nnh-ownerdash .odlogo-preview {
  width: 88px; height: 88px; flex-shrink: 0; cursor: pointer;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  background: #FBF8F1; border: 1.5px dashed #D8CFBC; border-radius: 12px;
  font-size: 17px; font-weight: 800; color: #5C6B82; text-align: center; padding: 6px;
}
.nnh-ownerdash .odlogo-preview.has-image { border-style: solid; background: #FFFFFF; padding: 0; }
.nnh-ownerdash .odlogo-initials { font-size: 17px; font-weight: 800; color: #42546E; }
.nnh-ownerdash .odlogo-or { font-size: 10.5px; font-weight: 600; color: #1F6FA8; text-decoration: underline; line-height: 1.3; }
.nnh-ownerdash .odlogo-copy { margin: 0; font-size: 13px; line-height: 1.6; color: #3B4C64; }
.nnh-ownerdash .odlogo-copy strong { color: #1C2B40; }
.nnh-ownerdash .odlogo-hint { margin-top: 12px; font-size: 12.5px; line-height: 1.55; color: #5C6B82; }

/* -------------------------------------------------------------
   v0.49.8 — Reviews to Reviews.dc.html: "Start me off" in the
   response foot, the grey "Being checked" pill on reviews still
   with the admins, and the review-policy footer note.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-owner-review-formfoot {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 10px;
}
.nnh-ownerdash .nnh-owner-review-formfoot > span {
  flex: 1; min-width: 180px; font-size: 12.5px; color: #5C6B82;
}
.nnh-ownerdash .nnh-review-startme {
  border: 0; background: none; padding: 0; cursor: pointer;
  font-family: inherit; font-size: 12.5px; font-weight: 700; color: #B8791E;
}
.nnh-ownerdash .nnh-review-startme:hover { color: #8F5D14; }
.nnh-ownerdash .nnh-owner-review-status.held {
  background: #F2ECDF; color: #5C6B82; border: 0;
  font-size: 11.5px; font-weight: 700; padding: 4px 12px; border-radius: 999px;
}
.nnh-ownerdash .nnh-owner-review-card.is-held { opacity: .92; }
.nnh-ownerdash .nnh-owner-review-card.is-held .nnh-owner-review-text { color: #5C6B82; }
.nnh-ownerdash .nnh-review-foot {
  margin: 16px 0 0; font-size: 12.5px; line-height: 1.65; color: #5C6B82;
}
.nnh-ownerdash .nnh-review-foot a { font-weight: 600; }

/* -------------------------------------------------------------
   v0.49.9 — review cards were cream on a cream page.
   Reviews.dc.html has them white with a hairline, no accent bar.
     background  var(--nnh-paper) #FAF6EE → #FFFFFF
     is-unanswered 3px green left border → removed (not in the design)
     stars       #e9a11a → #F5A93B (the system amber)
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-owner-review-card {
  background: #FFFFFF;
  border: 1px solid #EAE2D3;
  border-radius: 14px;
  padding: 20px 24px;
}
.nnh-ownerdash .nnh-owner-review-card.is-unanswered { border-left: 1px solid #EAE2D3; }
.nnh-ownerdash .nnh-owner-review-list { display: flex; flex-direction: column; gap: 16px; }
.nnh-ownerdash .nnh-owner-review-stars { color: #F5A93B; }
.nnh-ownerdash .nnh-owner-review-person strong { font-size: 14px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-owner-review-person time { font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-owner-review-text { font-size: 14px; line-height: 1.65; color: #3B4C64; }
.nnh-ownerdash .nnh-owner-review-form textarea {
  width: 100%; box-sizing: border-box;
  border: 1px solid #D8CFBC; border-radius: 10px; padding: 12px 14px;
  font-family: inherit; font-size: 14px; line-height: 1.55;
  color: #22334A; background: #FFFDF8; min-height: 76px; resize: vertical;
}
/* the empty state belongs to the same card family */
.nnh-ownerdash .nnh-reviews-empty {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
}
.nnh-ownerdash .nnh-reviews-empty-stars { color: #E6DCCB; }
/* a held review still reads as a card, just quieter */
.nnh-ownerdash .nnh-owner-review-card.is-held { background: #FFFFFF; opacity: 1; }
.nnh-ownerdash .nnh-owner-review-card.is-held .nnh-owner-review-stars { color: #E0C48C; }

/* -------------------------------------------------------------
   v0.50.0 — Brand profile (Brand Profile.dc.html). One colour and
   a voice. The colour never touches the directory listing; the
   voice tunes AI flavour only, never the honesty rules.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-brandcard, .nnh-ownerdash .nnh-brandhear {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
  padding: 24px 28px; margin-bottom: 20px;
}
.nnh-ownerdash .nnh-brandhear { background: #FDF3E0; border-color: #F0DDB8; }
.nnh-ownerdash .nnh-brandcard h3, .nnh-ownerdash .nnh-brandhear h3 {
  margin: 0 0 16px; font-size: 17px; font-weight: 800; color: #1C2B40;
}
.nnh-ownerdash .nnh-brandcard h3 em, .nnh-ownerdash .nnh-brandhear h3 em {
  font-style: normal; font-size: 12.5px; font-weight: 600; color: #5C6B82;
}
.nnh-ownerdash .nnh-brandhear h3 em { color: #7A5A1E; }
.nnh-ownerdash .nnh-brandcard-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 28px; align-items: start; }
.nnh-ownerdash .nnh-brand-swatches { display: flex; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-brand-sw {
  width: 34px; height: 34px; border-radius: 8px; cursor: pointer;
  border: 2px solid transparent; box-shadow: 0 1px 3px rgba(34,51,74,.15);
}
.nnh-ownerdash .nnh-brand-sw.on { border-color: #22334A; outline: 2px solid #FFFFFF; outline-offset: -4px; }
.nnh-ownerdash .nnh-brand-hexrow { display: flex; gap: 10px; align-items: center; margin-top: 14px; }
.nnh-ownerdash .nnh-brand-hexrow label { font-size: 13px; font-weight: 700; color: #22334A; }
.nnh-ownerdash .nnh-brand-hexrow input {
  width: 110px; box-sizing: border-box; border: 1px solid #D8CFBC; border-radius: 8px;
  padding: 8px 12px; font-family: monospace; font-size: 13px; background: #FFFDF8; color: #22334A;
}
.nnh-ownerdash .nnh-brand-chip { width: 30px; height: 30px; border-radius: 7px; box-shadow: 0 1px 3px rgba(34,51,74,.15); }
.nnh-ownerdash .nnh-brand-contrast { margin: 12px 0 0; font-size: 12.5px; font-weight: 600; }
.nnh-ownerdash .nnh-brand-contrast.ok { color: #3E7A34; }
.nnh-ownerdash .nnh-brand-contrast.warn { color: #B8791E; }
.nnh-ownerdash .nnh-brand-where { margin: 14px 0 0; font-size: 13px; line-height: 1.65; color: #3B4C64; }
.nnh-ownerdash .nnh-brand-where strong { color: #1C2B40; }
.nnh-ownerdash .nnh-brand-caps {
  font-size: 10.5px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: #5C6B82; margin-bottom: 8px;
}
.nnh-ownerdash .nnh-brand-prev { border: 1px solid #EAE2D3; border-radius: 12px; overflow: hidden; background: #FFFFFF; }
.nnh-ownerdash .nnh-brand-prevhead {
  display: flex; align-items: center; gap: 10px; padding: 12px 16px;
  color: #FFFFFF; font-weight: 700; font-size: 14px;
}
.nnh-ownerdash .nnh-brand-prevmark {
  width: 22px; height: 22px; border-radius: 6px; background: rgba(255,255,255,.9);
  color: #22334A; display: grid; place-items: center; font-size: 10px; font-weight: 800;
}
.nnh-ownerdash .nnh-brand-prevbody { padding: 16px; }
.nnh-ownerdash .nnh-brand-prevbody p { margin: 0 0 12px; font-size: 13.5px; color: #3B4C64; }
.nnh-ownerdash .nnh-brand-prevbtn {
  display: inline-block; color: #FFFFFF; font-weight: 700; font-size: 13px;
  padding: 9px 18px; border-radius: 999px;
}
.nnh-ownerdash .nnh-brand-note { margin: 12px 0 0; font-size: 12px; line-height: 1.55; color: #9FAEC4; }
.nnh-ownerdash .nnh-brand-lab { font-size: 13px; font-weight: 700; color: #22334A; margin: 16px 0 8px; }
.nnh-ownerdash .nnh-brand-lab:first-child { margin-top: 0; }
.nnh-ownerdash .nnh-brand-lab em { font-style: normal; font-weight: 500; color: #5C6B82; }
.nnh-ownerdash .nnh-brand-pills { display: flex; gap: 8px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-brand-pill {
  cursor: pointer; border: 1.5px solid #D8CFBC; background: #FFFFFF; color: #42546E;
  border-radius: 999px; padding: 9px 18px; font-size: 13px; font-weight: 700;
}
.nnh-ownerdash .nnh-brand-pill input { position: absolute; opacity: 0; width: 0; height: 0; }
.nnh-ownerdash .nnh-brand-pill:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-brand-pill.on { background: #22334A; border-color: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-brandform input[type="text"] {
  width: 100%; box-sizing: border-box; border: 1px solid #D8CFBC; border-radius: 10px;
  padding: 11px 14px; font-size: 14px; background: #FFFDF8; color: #22334A;
}
.nnh-ownerdash .nnh-chips.is-strike .nnh-chip {
  background: #F2ECDF; color: #5C6B82; text-decoration: line-through;
}
.nnh-ownerdash .nnh-chips.is-strike .nnh-chip-x:hover { background: rgba(92,107,130,.15); }
.nnh-ownerdash .nnh-brand-sample {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 12px; padding: 16px 18px;
}
.nnh-ownerdash .nnh-brand-sample p { margin: 0; font-size: 13.5px; line-height: 1.65; color: #3B4C64; }
.nnh-ownerdash .nnh-brand-sample.is-yours { border-color: #F0DDB8; }
.nnh-ownerdash .nnh-brand-hearnote { margin: 14px 0 0; font-size: 12.5px; font-style: italic; color: #7A5A1E; }
@media (max-width: 900px) { .nnh-ownerdash .nnh-brandcard-grid { grid-template-columns: 1fr; } }

/* v0.50.2 — the owner's brand colour, applied only where Brand profile says
   it applies: the forms on their page. Falls back to the system navy when
   no colour is set, so an unbranded form looks exactly as it always has.
   The listing's own chrome is never touched. */
.nnh-branded { --nnh-brand: #22334A; }
.nnh-branded .nnh-btn.primary {
  background: var(--nnh-brand);
  border-color: var(--nnh-brand);
}
.nnh-branded .nnh-btn.primary:hover { filter: brightness(.92); }
.nnh-branded h2 { border-bottom: 2px solid var(--nnh-brand); padding-bottom: 6px; }
.nnh-branded input:focus, .nnh-branded textarea:focus, .nnh-branded select:focus {
  outline: 2px solid var(--nnh-brand); outline-offset: 1px;
}

/* -------------------------------------------------------------
   v0.50.3 — the public promo page at /promo/{slug}.
   Uses the owner's brand colour (Brand profile) for the header
   band and the button; falls back to the system blue.
   ------------------------------------------------------------- */
.nnh-promo { --nnh-brand: #29597F; max-width: 720px; margin: 48px auto; padding: 0 20px; }
.nnh-promo-draft {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 12px;
  padding: 12px 16px; margin-bottom: 20px; font-size: 13px; line-height: 1.6; color: #7A5A1E;
}
.nnh-promo-draft strong { color: #1C2B40; }
.nnh-promo-card {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 16px;
  overflow: hidden; box-shadow: 0 4px 16px rgba(34,51,74,.07);
}
.nnh-promo-banner img { display: block; width: 100%; height: 180px; object-fit: cover; }
.nnh-promo-head { background: var(--nnh-brand); color: #FFFFFF; padding: 22px 26px 20px; }
.nnh-promo-who { display: flex; align-items: center; gap: 10px; font-size: 13.5px; font-weight: 600; opacity: .95; }
.nnh-promo-logo, .nnh-promo-mark {
  width: 26px; height: 26px; border-radius: 7px; display: grid; place-items: center;
  background: rgba(255,255,255,.9); color: #22334A; font-size: 11px; font-weight: 800; object-fit: cover;
}
.nnh-promo-head h1 {
  margin: 12px 0 0; font-size: 27px; font-weight: 800; line-height: 1.2;
  letter-spacing: -0.4px; color: #FFFFFF;
}
.nnh-promo-squig { display: block; margin-top: 8px; }
.nnh-promo-body { padding: 22px 26px 20px; }
.nnh-promo-text { margin: 0 0 18px; font-size: 15px; line-height: 1.7; color: #3B4C64; }
/* Brand colour paints the header band; the action stays coral, matching the
   preview in the editor and the CTA colour used everywhere else on the site. */
.nnh-promo-cta {
  display: inline-block; background: #E8862E; color: #FFFFFF;
  font-weight: 700; font-size: 14.5px; padding: 12px 26px; border-radius: 999px; text-decoration: none;
  box-shadow: 0 2px 6px rgba(232,134,46,.3);
}
.nnh-promo-cta:hover { background: #D1751F; color: #FFFFFF; text-decoration: none; }
.nnh-promo-foot {
  display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
  border-top: 1px solid #F7F2E7; margin-top: 20px; padding-top: 14px;
  font-size: 12.5px; color: #5C6B82;
}
.nnh-promo-rating { color: #B8791E; font-weight: 600; }
@media (max-width: 600px) {
  .nnh-promo { margin: 28px auto; }
  .nnh-promo-head h1 { font-size: 23px; }
}

/* -------------------------------------------------------------
   v0.50.4 — Promo page editor (Promo page mockups, 5.18.x):
   purpose chips, three layout tiles, and the live preview panel.
   ------------------------------------------------------------- */
.nnh-ownerdash .nnh-promoed { background:#FFFFFF; border:1px solid #EAE2D3; border-radius:14px; padding:24px 28px; }
.nnh-ownerdash .nnh-promoed h3 { margin:0; font-size:17px; font-weight:800; color:#1C2B40; }
.nnh-ownerdash .nnh-promoed-lede { margin:8px 0 0; font-size:13.5px; line-height:1.65; color:#3B4C64; max-width:640px; }
.nnh-ownerdash .nnh-promoed-chip {
  display:inline-block; margin:14px 0 0; background:#FDF3E0; border:1px solid #F0DDB8;
  border-radius:999px; padding:6px 16px; font-size:12.5px; font-weight:700; color:#7A5A1E;
}
.nnh-ownerdash .nnh-promoed-chip.is-live { background:#EAF3E6; border-color:#CBE2C2; color:#3E7A34; }
.nnh-ownerdash .nnh-promoed-lab { margin:20px 0 8px; font-size:13px; font-weight:700; color:#22334A; }
.nnh-ownerdash .nnh-promoed-lab em { font-style:normal; font-weight:500; color:#5C6B82; }
.nnh-ownerdash .nnh-promoed-chips { display:flex; gap:8px; flex-wrap:wrap; }
.nnh-ownerdash .nnh-promoed-pill {
  cursor:pointer; border:1.5px solid #D8CFBC; background:#FFFFFF; color:#42546E;
  border-radius:999px; padding:9px 18px; font-size:13px; font-weight:700;
}
.nnh-ownerdash .nnh-promoed-pill input { position:absolute; opacity:0; width:0; height:0; }
.nnh-ownerdash .nnh-promoed-pill:hover { border-color:#22334A; }
.nnh-ownerdash .nnh-promoed-pill.on { background:#22334A; border-color:#22334A; color:#FFFFFF; }

.nnh-ownerdash .nnh-promoed-lays { display:flex; gap:14px; flex-wrap:wrap; }
.nnh-ownerdash .nnh-promoed-lay {
  cursor:pointer; width:132px; border:1.5px solid #EAE2D3; border-radius:12px;
  padding:10px; background:#FFFFFF; text-align:center;
}
.nnh-ownerdash .nnh-promoed-lay input { position:absolute; opacity:0; width:0; height:0; }
.nnh-ownerdash .nnh-promoed-lay.on { border-color:#E8862E; background:#FDF3E0; }
.nnh-ownerdash .nnh-promoed-thumb {
  display:flex; flex-direction:column; gap:4px; background:#FBF8F1;
  border-radius:8px; padding:8px; min-height:62px;
}
.nnh-ownerdash .nnh-promoed-thumb i { display:block; border-radius:2px; }
.nnh-ownerdash .nnh-promoed-thumb .ph { height:14px; background:repeating-linear-gradient(45deg,#E6DCCB,#E6DCCB 4px,#F2ECDF 4px,#F2ECDF 8px); }
.nnh-ownerdash .nnh-promoed-thumb .hd { height:12px; background:#2A5D7C; }
.nnh-ownerdash .nnh-promoed-thumb .ln { height:4px; background:#E0D8C8; }
.nnh-ownerdash .nnh-promoed-thumb .ln.short { width:60%; }
.nnh-ownerdash .nnh-promoed-thumb .fd { height:9px; background:#FFFFFF; border:1px solid #E0D8C8; }
.nnh-ownerdash .nnh-promoed-thumb .bt { height:7px; width:46%; background:#E8862E; border-radius:999px; }
.nnh-ownerdash .nnh-promoed-layname { display:block; margin-top:8px; font-size:12px; font-weight:700; color:#42546E; }

.nnh-ownerdash .nnh-promoed-grid { display:grid; grid-template-columns:1fr 1fr; gap:28px; margin-top:22px; align-items:start; }
.nnh-ownerdash .nnh-promoed-aibtns { margin:0 0 14px; }
.nnh-ownerdash .nnh-promoed-prevhead { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:8px; }
.nnh-ownerdash .nnh-promoprev {
  --nnh-brand:#29597F; border:1px solid #EAE2D3; border-radius:12px; overflow:hidden; background:#FFFFFF;
}
.nnh-ownerdash .nnh-promoprev.is-phone { max-width:300px; }
.nnh-ownerdash .nnh-promoprev-banner { display:none; }
.nnh-ownerdash .nnh-promoprev.is-banner .nnh-promoprev-banner { display:block; }
.nnh-ownerdash .nnh-promoprev-banner img { display:block; width:100%; height:74px; object-fit:cover; }
.nnh-ownerdash .nnh-promoprev-banner[data-empty] {
  height:74px; display:none; place-items:center;
  background:repeating-linear-gradient(45deg,#E6DCCB,#E6DCCB 6px,#F2ECDF 6px,#F2ECDF 12px);
  font-size:11.5px; color:#7A6A52;
}
.nnh-ownerdash .nnh-promoprev.is-banner .nnh-promoprev-banner[data-empty] { display:grid; }
.nnh-ownerdash .nnh-promoprev-head { background:var(--nnh-brand); color:#FFFFFF; padding:14px 16px; }
.nnh-ownerdash .nnh-promoprev-who { display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; }
.nnh-ownerdash .nnh-promoprev-mark {
  width:20px; height:20px; border-radius:5px; background:rgba(255,255,255,.9);
  color:#22334A; display:grid; place-items:center; font-size:9px; font-weight:800;
}
.nnh-ownerdash .nnh-promoprev-h1 { margin-top:8px; font-size:17px; font-weight:800; line-height:1.25; }
.nnh-ownerdash .nnh-promoprev-body { padding:14px 16px; }
.nnh-ownerdash .nnh-promoprev-body p { margin:0 0 12px; font-size:12.5px; line-height:1.6; color:#3B4C64; }
.nnh-ownerdash .nnh-promoprev-form { display:none; flex-direction:column; gap:6px; margin-bottom:12px; }
.nnh-ownerdash .nnh-promoprev.is-form .nnh-promoprev-form { display:flex; }
.nnh-ownerdash .nnh-promoprev-form span { height:26px; border:1px solid #E0D8C8; border-radius:7px; background:#FFFDF8; }
/* The band above carries the brand colour (identity); the button stays coral —
   it is the site's action colour, and the mockup shows the two side by side. */
.nnh-ownerdash .nnh-promoprev-cta {
  display:inline-block; background:#E8862E; color:#FFFFFF;
  font-size:12.5px; font-weight:700; padding:9px 18px; border-radius:999px;
}
.nnh-ownerdash .nnh-promoprev-foot {
  border-top:1px solid #F7F2E7; margin-top:14px; padding-top:10px;
  font-size:11.5px; color:#5C6B82;
}
.nnh-ownerdash .nnh-promoed-prevnote { margin:10px 0 0; font-size:11.5px; color:#9FAEC4; }
.nnh-ownerdash .nnh-promoed-foot {
  display:flex; gap:14px; align-items:center; flex-wrap:wrap;
  border-top:1px solid #F7F2E7; margin-top:22px; padding-top:18px;
}
.nnh-ownerdash .nnh-promoed-foot span { flex:1; min-width:220px; font-size:12.5px; color:#5C6B82; }
@media (max-width:900px){ .nnh-ownerdash .nnh-promoed-grid { grid-template-columns:1fr; } }
.nnh-ownerdash .nnh-promoed-chip.is-back { background:#FBEAE6; border-color:#E7C9C2; color:#A65D4E; }
.nnh-ownerdash .nnh-promoed-aibtns { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.nnh-ownerdash .nnh-promo-say.rec { border-color:#A65D4E; background:#FBEAE6; color:#A65D4E; }
.nnh-ownerdash .nnh-promo-saystatus { font-size:12px; color:#A65D4E; }

/* -------------------------------------------------------------
   v0.50.7 — sidebar spacing. It was display:block with per-block
   margins, giving gaps of 28 / 0 / 0 / 22 / 12 / 0 / 0 — the
   switcher welded to the Overview pill, and "View public page",
   the tour button and the Ask card all touching.
   The design system is explicit: space siblings with the parent's
   gap, never with margins, so rows stay even as blocks come and go.
   ------------------------------------------------------------- */
.nnh-ownerdash .odnav {
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.nnh-ownerdash .odnav > * { margin-top: 0; margin-bottom: 0; }
/* the identity block owns its own internal rhythm */
.nnh-ownerdash .odbiz { display: flex; gap: 12px; align-items: flex-start; margin: 0; }
.nnh-ownerdash .odbiz > span:last-child { display: block; min-width: 0; }
.nnh-ownerdash .odswitch-sel { margin-top: 6px; }
/* the two link-ish rows sit together as one group, not 20px apart */
.nnh-ownerdash .odnav > .odview { margin: 0; }
.nnh-ownerdash .odnav > a.odview + button.odview { margin-top: -12px; }
/* v0.50.8 — the residual margins live on (0,3,0) selectors
   (`.nnh-ownerdash .odnav .odbiz`, `… .odhealth`), so `> *` at (0,2,0)
   never reached them. Matched, not escalated to !important. */
.nnh-ownerdash .odnav > .odbiz,
.nnh-ownerdash .odnav > .odhealth,
.nnh-ownerdash .odnav > .odsidenote,
.nnh-ownerdash .odnav > .odaskcard,
.nnh-ownerdash .odnav > nav { margin-top: 0; margin-bottom: 0; }
/* v0.50.9 — identity block: avatar left, name/town/switcher stacked right,
   top-aligned as the mockup has it (was centre-aligned, which pushed the
   switcher onto the same row as the name). */
.nnh-ownerdash .odnav > .odbiz { align-items: flex-start; gap: 12px; }
.nnh-ownerdash .odnav > .odbiz > span:last-child { display: block; min-width: 0; flex: 1; }
.nnh-ownerdash .odnav > .odbiz b { display: block; font-size: 14px; font-weight: 800; color: #1C2B40; line-height: 1.3; }
.nnh-ownerdash .odnav > .odbiz small { display: block; font-size: 12px; color: #5C6B82; margin-top: 2px; }
.nnh-ownerdash .odswitch-sel { display: block; width: 100%; margin-top: 6px; }
/* v0.51.0 — identity block sized to the mockup: 38px tile, 10px radius,
   14px initials, and the town line 2px under the name. */
.nnh-ownerdash .odnav > .odbiz > .odbiz-logo {
  width: 38px; height: 38px; flex: 0 0 38px;
  border-radius: 10px; font-size: 14px; font-weight: 800;
}
.nnh-ownerdash .odnav > .odbiz b { line-height: 1.3; margin: 0; }
.nnh-ownerdash .odnav > .odbiz small { margin-top: 2px; line-height: 1.35; }

/* --------------------------------------------------------------------------
   v0.51.1 — Promo slots. Three permanent links per business, so the picker is
   a short list of addresses with a state line under each, not a set of cards.
   The ⋯ menu is a <details> so it works with no JS at all.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-slots { display: flex; flex-direction: column; gap: 8px; }
.nnh-ownerdash .nnh-slot {
  display: flex; align-items: stretch; gap: 0;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 12px;
}
.nnh-ownerdash .nnh-slot.on { background: #F1E9DA; border: 2px solid #22334A; }
.nnh-ownerdash .nnh-slot-main {
  display: flex; align-items: center; gap: 12px; flex: 1 1 auto; min-width: 0;
  padding: 11px 14px; text-decoration: none; color: inherit;
}
.nnh-ownerdash .nnh-slot-main:hover { text-decoration: none; }
.nnh-ownerdash .nnh-slot-n {
  display: grid; place-items: center; flex: 0 0 26px; width: 26px; height: 26px;
  border-radius: 999px; background: #F2ECDF; color: #5C6B82;
  font-size: 12px; font-weight: 800;
}
.nnh-ownerdash .nnh-slot.on .nnh-slot-n { background: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-slot-txt { min-width: 0; }
.nnh-ownerdash .nnh-slot-txt code {
  display: block; font-size: 12.5px; font-weight: 600; color: #22334A;
  background: none; padding: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.nnh-ownerdash .nnh-slot-txt em {
  display: block; margin-top: 2px; font-style: normal; font-size: 12px; color: #5C6B82;
}
.nnh-ownerdash .nnh-slot-txt em.is-live,
.nnh-ownerdash .nnh-slot-txt em.is-ok { color: #3E7A34; }
.nnh-ownerdash .nnh-slot-txt em.is-warn { color: #B8791E; }
.nnh-ownerdash .nnh-slot-menu { position: relative; flex: 0 0 auto; }
.nnh-ownerdash .nnh-slot-menu > summary {
  list-style: none; cursor: pointer; user-select: none;
  display: grid; place-items: center; width: 42px; height: 100%;
  color: #9FAEC4; font-size: 15px; letter-spacing: 1px; border-radius: 0 10px 10px 0;
}
.nnh-ownerdash .nnh-slot-menu > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .nnh-slot-menu > summary:hover { color: #22334A; }
.nnh-ownerdash .nnh-slot-menubox {
  position: absolute; right: 0; top: calc(100% + 4px); z-index: 20; min-width: 214px;
  display: flex; flex-direction: column; padding: 6px;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 12px;
  box-shadow: 0 6px 18px rgba(34,51,74,.14);
}
.nnh-ownerdash .nnh-slot-menubox a,
.nnh-ownerdash .nnh-slot-menubox button {
  display: block; width: 100%; text-align: left;
  padding: 7px 10px; border: 0; border-radius: 8px; background: none;
  font: inherit; font-size: 13px; color: #3B4C64; text-decoration: none; cursor: pointer;
}
.nnh-ownerdash .nnh-slot-menubox a:hover,
.nnh-ownerdash .nnh-slot-menubox button:hover { background: #FBF8F1; color: #22334A; text-decoration: none; }
.nnh-ownerdash .nnh-slots-note { margin: 8px 0 0; font-size: 12px; line-height: 1.55; color: #5C6B82; }
.nnh-ownerdash .nnh-promoed-chip.is-back { background: #FBEAE6; border-color: #EBCFC8; color: #A65D4E; }
.nnh-ownerdash .nnh-promoed .field { margin: 0 0 14px; }
.nnh-ownerdash .nnh-promoed .field label { display: block; margin-bottom: 6px; }
/* The shared field rule sets padding/border but not width — inside the promo
   editor's two-column grid the inputs must fill their column, or they collapse
   to the browser's default 20-character size. */
.nnh-ownerdash .nnh-promoed .field input[type="text"],
.nnh-ownerdash .nnh-promoed .field select,
.nnh-ownerdash .nnh-promoed .field textarea { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-promoed .field .opt { font-weight: 500; color: #9FAEC4; }
.nnh-ownerdash .nnh-promoed .nnh-help {
  display: block; margin-top: 5px; font-size: 12px; line-height: 1.55; color: #5C6B82;
}
.nnh-ownerdash .nnh-promoed input[type="date"] { box-sizing: border-box; }
.nnh-ownerdash .nnh-promoed-foot {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-top: 22px; padding-top: 18px; border-top: 1px solid #F7F2E7;
}
.nnh-ownerdash .nnh-promoed-foot span { font-size: 12.5px; color: #5C6B82; }
@media (max-width: 720px) {
  .nnh-ownerdash .nnh-slot-txt code { white-space: normal; word-break: break-all; }
}

.nnh-ownerdash .odpagehead-lede {
  margin: 12px 0 0; max-width: 720px;
  font-size: 14px; line-height: 1.65; color: #3B4C64;
}

/* Promo page sits on its own — give it the same 48px rhythm below the nav as
   every other content wrapper. (No flex sticky-footer here: `display:flex` on
   body makes the full-bleed topbar and footer shrink to the content width.) */
/* `.nnh-page .wrap{padding:0 32px}` is (0,2,0) and beats a bare class, so the
   promo wrapper is matched the same way `.nnh-profile` is. */
main.wrap.nnh-promo { padding-top: 48px; padding-bottom: 64px; }
@media (max-width: 720px) { main.wrap.nnh-promo { padding-top: 32px; padding-bottom: 40px; } }

/* --------------------------------------------------------------------------
   v0.52.0 — Auto-replies. One card per channel; the row collapses to its
   header + toggle, and opens to the writing pane beside a live sample of what
   the customer actually receives. <details> so it works with JS off.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-arlist { display: flex; flex-direction: column; gap: 16px; }
.nnh-ownerdash .nnh-arrow {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
  padding: 18px 20px 4px;
}
.nnh-ownerdash .nnh-arrow > summary {
  list-style: none; cursor: pointer;
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.nnh-ownerdash .nnh-artop { display: flex; align-items: center; gap: 12px; min-width: 0; }
.nnh-ownerdash .nnh-arrow > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .nnh-artile {
  display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px;
  border-radius: 10px; background: #22334A;
}
.nnh-ownerdash .nnh-artitle { display: block; min-width: 0; }
.nnh-ownerdash .nnh-artitle b { display: block; font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-artitle em { display: block; margin-top: 1px; font-style: normal; font-size: 12.5px; color: #5C6B82; }
/* The caret sits with the toggle, pointing the way the row will move. */
.nnh-ownerdash .nnh-arswitch { display: flex; align-items: center; gap: 6px; }
.nnh-ownerdash .nnh-arcaret::after { content: "\25BE"; color: #B8791E; font-size: 11px; }
.nnh-ownerdash .nnh-arrow[open] .nnh-arcaret::after { content: "\25B4"; }
.nnh-ownerdash .nnh-arrow[open] > summary { padding-bottom: 14px; border-bottom: 1px solid #F7F2E7; }
.nnh-ownerdash .nnh-arbody {
  display: grid; grid-template-columns: 1fr 1fr; gap: 24px;
  padding: 16px 0 18px; align-items: start;
}
.nnh-ownerdash .nnh-arwrite textarea { width: 100%; box-sizing: border-box; min-height: 96px; }
.nnh-ownerdash .nnh-arbtns { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 10px 0 0; }
.nnh-ownerdash .nnh-artokens { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 12px 0 0; }
.nnh-ownerdash .nnh-artokens > span { font-size: 12px; color: #5C6B82; }
.nnh-ownerdash .nnh-artokens button {
  border: 1px solid #C9DAEA; background: #E9F2F8; color: #1F6FA8;
  font: inherit; font-size: 12px; font-weight: 600;
  padding: 3px 10px; border-radius: 999px; cursor: pointer;
}
.nnh-ownerdash .nnh-artokens button:hover { border-color: #1F6FA8; }
.nnh-ownerdash .nnh-arsample .nnh-brand-caps { display: block; margin-bottom: 8px; }
.nnh-ownerdash .nnh-arsample-box {
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 12px;
  padding: 14px 16px; font-size: 13.5px; line-height: 1.65; color: #3B4C64;
  min-height: 96px; box-sizing: border-box;
}
.nnh-ownerdash .nnh-arsample-note { margin: 8px 0 0; font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-arguard { margin: 4px 0 16px; font-size: 12.5px; line-height: 1.6; color: #5C6B82; font-style: italic; }
@media (max-width: 860px) {
  .nnh-ownerdash .nnh-arbody { grid-template-columns: 1fr; gap: 16px; }
  .nnh-ownerdash .nnh-arsample-box { min-height: 0; }
}

/* --------------------------------------------------------------------------
   v0.52.2 — Messages. The earned reply badge as a pill, the settings stack
   behind a gear link, replies drafted overnight, and a conversation header
   that reads like an inbox row (who · when · what it's about).
   -------------------------------------------------------------------------- */
/* The badge line is a pill plus a sentence now, not a tinted note box — the
   older bordered treatment above is overridden rather than deleted. */
.nnh-ownerdash .nnh-reply-private {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 14px 0 18px; font-size: 12.5px; color: #5C6B82;
  background: none; border-left: 0; border-radius: 0; padding: 0; max-width: none;
}
.nnh-ownerdash .nnh-replybadge {
  display: inline-flex; align-items: center; gap: 5px;
  background: #EAF3E6; border: 1px solid #CBE2C2; color: #3E7A34;
  font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 999px;
}
.nnh-ownerdash .nnh-replybadge.is-soft { background: #FDF3E0; border-color: #F0DDB8; color: #7A5A1E; }
.nnh-ownerdash .nnh-replybadge.is-todo { background: #F2ECDF; border-color: #EAE2D3; color: #5C6B82; }

.nnh-ownerdash .nnh-msg-filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-msgsettings-toggle {
  margin-left: auto; border: 0; background: none; cursor: pointer;
  font: inherit; font-size: 12.5px; font-weight: 600; color: #1F6FA8; padding: 4px 2px;
}
.nnh-ownerdash .nnh-msgsettings-toggle:hover { color: #174F78; text-decoration: underline; }
.nnh-ownerdash .nnh-msgsettings { display: block; }
.nnh-ownerdash .nnh-msgsettings[hidden] { display: none; }

/* Replies drafted overnight — amber, because it is coaching, not an alert. */
.nnh-ownerdash .nnh-ready {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 14px;
  padding: 20px 22px; margin-bottom: 20px;
}
.nnh-ownerdash .nnh-ready h2 { margin: 0; font-size: 16px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-ready-sub { margin: 6px 0 16px; font-size: 13px; color: #7A5A1E; }
.nnh-ownerdash .nnh-ready-item {
  background: #FFFFFF; border-radius: 12px; padding: 16px 18px; margin-bottom: 12px;
}
.nnh-ownerdash .nnh-ready-item:last-child { margin-bottom: 0; }
.nnh-ownerdash .nnh-ready-asked { margin: 0; font-size: 13.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-ready-asked b { color: #1C2B40; font-weight: 800; }
.nnh-ownerdash .nnh-ready-draft {
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 10px;
  padding: 13px 15px; margin: 10px 0 14px;
  font-size: 13.5px; line-height: 1.65; color: #3B4C64; white-space: pre-wrap;
}
.nnh-ownerdash .nnh-ready-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-ready-skip {
  border: 0; background: none; cursor: pointer;
  font: inherit; font-size: 13px; font-weight: 600; color: #5C6B82;
}
.nnh-ownerdash .nnh-ready-skip:hover { color: #22334A; text-decoration: underline; }
.nnh-ownerdash .nnh-ready-sent { margin: 8px 0 0; font-size: 13px; font-weight: 700; color: #3E7A34; }

/* Conversation summary row. */
.nnh-ownerdash .nnh-message-re {
  display: block; margin-top: 2px; font-size: 13px; color: #3B4C64;
}
.nnh-ownerdash .nnh-message-email { display: block; margin-top: 2px; font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-message-sumacts { display: flex; align-items: center; gap: 14px; flex: 0 0 auto; }
.nnh-ownerdash .nnh-message-closelink { font-size: 12.5px; color: #5C6B82; cursor: pointer; }
.nnh-ownerdash .nnh-message-closelink:hover { color: #22334A; text-decoration: underline; }
.nnh-ownerdash .nnh-message-open-label { font-size: 12.5px; font-weight: 700; color: #1F6FA8; }
.nnh-ownerdash .nnh-message-open-label .is-shown,
.nnh-ownerdash .nnh-message-thread[open] .nnh-message-open-label .is-shut { display: none; }
.nnh-ownerdash .nnh-message-thread[open] .nnh-message-open-label .is-shown { display: inline; }

/* "This reads like a job" — a route, not an action. */
.nnh-ownerdash .nnh-msg-jobhint {
  background: #E9F2F8; border: 1px solid #C9DAEA; border-radius: 10px;
  padding: 10px 14px; margin: 0 0 12px; font-size: 13px; color: #3B4C64;
}
.nnh-ownerdash .nnh-msg-jobhint a { font-weight: 700; }
.nnh-ownerdash .nnh-vreply-caption { font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-message-actions { display: flex; align-items: center; gap: 10px; }
.nnh-ownerdash .nnh-message-reply-form .nnh-message-actions .nnh-btn.primary { margin-left: auto; }

/* Signature. */
.nnh-ownerdash .nnh-h3-sub { font-style: normal; font-size: 13px; font-weight: 600; color: #5C6B82; }
.nnh-ownerdash .nnh-sigblock { margin-top: 18px; padding-top: 16px; border-top: 1px solid #F7F2E7; }
.nnh-ownerdash .nnh-siglab { margin: 0 0 10px; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-siglab b { color: #22334A; font-weight: 700; }
.nnh-ownerdash .nnh-siglab em { font-style: normal; }
.nnh-ownerdash .nnh-siggrid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; align-items: start; }
.nnh-ownerdash .nnh-siggrid .field input[type="text"] { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-siglogo { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-sigcard {
  display: flex; align-items: center; gap: 10px;
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 12px; padding: 12px 14px;
}
.nnh-ownerdash .nnh-sigmark {
  display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px;
  border-radius: 9px; overflow: hidden; background: #22334A;
  color: #F5A93B; font-size: 12px; font-weight: 800;
}
.nnh-ownerdash .nnh-sigmark img { width: 100%; height: 100%; object-fit: cover; display: block; }
.nnh-ownerdash .nnh-sigtext { min-width: 0; }
.nnh-ownerdash .nnh-sigtext b { display: block; font-size: 13.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-sigtext em { display: block; font-style: normal; font-size: 12.5px; color: #5C6B82; line-height: 1.4; }
@media (max-width: 860px) { .nnh-ownerdash .nnh-siggrid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   v0.52.4 — Conversation bubbles read like a conversation: the customer on
   the left in sky tint, the owner on the right in cream. (The two tints were
   the other way round; only the colours and alignment move.)
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-message-sent {
  max-width: 74%; width: fit-content;
  background: #E9F2F8; color: #22334A;
}
.nnh-ownerdash .nnh-message-sent.is-customer { background: #E9F2F8; }
.nnh-ownerdash .nnh-message-sent:not(.is-customer) {
  margin-left: auto; background: #FDF3E0;
}
.nnh-ownerdash .nnh-message-sent b { font-weight: 800; }
.nnh-ownerdash .nnh-thread-history { margin: 0 0 12px; }
.nnh-ownerdash .nnh-thread-history > summary {
  cursor: pointer; font-size: 13px; font-weight: 600; color: #1F6FA8;
  list-style: none; padding: 4px 0;
}
.nnh-ownerdash .nnh-thread-history > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .nnh-thread-history > summary::before { content: "\25B8 "; }
.nnh-ownerdash .nnh-thread-history[open] > summary::before { content: "\25BE "; }
.nnh-ownerdash .nnh-message-summary-copy { min-width: 0; }
.nnh-ownerdash .nnh-message-summary-copy .nnh-message-date { margin-left: 8px; }

/* --------------------------------------------------------------------------
   v0.52.5 — Away mode reads as its own card, matching the mockup, while
   staying inside the auto-reply <form> so the two still save together.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-autoreply-card { padding-bottom: 0; }
.nnh-ownerdash .nnh-away-block {
  margin: 20px -28px -1px; border: 1px solid #EAE2D3; border-radius: 14px;
  border-top-width: 1px; border-style: solid; background: #FFFFFF;
  padding: 20px 28px 22px; gap: 8px;
}
.nnh-ownerdash .nnh-away-block .nnh-autoreply-head { margin-bottom: 0; }
.nnh-ownerdash .nnh-away-block input[type="date"],
.nnh-ownerdash .nnh-away-block textarea { width: 100%; box-sizing: border-box; }
@media (max-width: 720px) {
  .nnh-ownerdash .nnh-away-block { margin-left: -18px; margin-right: -18px; padding-left: 18px; padding-right: 18px; }
}

/* Replies carry the owner's signature on its own lines; the bubble has to keep
   those breaks or the sign-off runs into the sentence before it. */
.nnh-ownerdash .nnh-message-sent { white-space: pre-wrap; }
.nnh-ownerdash .nnh-message-sent b,
.nnh-ownerdash .nnh-message-sent span { white-space: normal; }

/* --------------------------------------------------------------------------
   v0.52.7 — Booking requests. A calendar chip carries the date, chips carry
   the state, and "Suggest another time" opens inline under the row.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odjob { display: block; }
.nnh-ownerdash .odjob.is-confirmed { border-color: #CBE2C2; }
.nnh-ownerdash .odjob-top { display: flex; align-items: flex-start; gap: 16px; }
.nnh-ownerdash .odjob-datechip {
  display: grid; place-items: center; flex: 0 0 52px; width: 52px; padding: 7px 0;
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 10px; line-height: 1.1;
}
.nnh-ownerdash .odjob-datechip em {
  font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: .06em; color: #A65D4E;
}
.nnh-ownerdash .odjob-datechip b { font-size: 20px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odjob-datechip.is-open em { color: #9FAEC4; }
.nnh-ownerdash .odjob-main { min-width: 0; flex: 1 1 auto; }
.nnh-ownerdash .odjob-who { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0; }
.nnh-ownerdash .odjob-who b { font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odjob-chip {
  font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 999px; border: 1px solid transparent;
}
.nnh-ownerdash .odjob-chip.is-new { background: #FDF3E0; border-color: #F0DDB8; color: #7A5A1E; }
.nnh-ownerdash .odjob-chip.is-waiting { background: #E9F2F8; border-color: #C9DAEA; color: #1F6FA8; }
.nnh-ownerdash .odjob-chip.is-confirmed { background: #EAF3E6; border-color: #CBE2C2; color: #3E7A34; }
.nnh-ownerdash .odjob-what { margin: 4px 0 0; font-size: 13.5px; color: #3B4C64; }
.nnh-ownerdash .odjob-what b { font-weight: 700; color: #22334A; }
.nnh-ownerdash .odjob-meta { margin: 3px 0 0; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .odjob-meta a { color: #9FAEC4; }
.nnh-ownerdash .odjob-meta a:hover { color: #1F6FA8; }
.nnh-ownerdash .odjob-quote {
  margin: 10px 0 0; padding: 11px 14px; border-radius: 10px;
  background: #E9F2F8; font-size: 13.5px; line-height: 1.6; color: #3B4C64;
}
.nnh-ownerdash .odjob-suggested { margin: 8px 0 0; font-size: 12.5px; font-weight: 600; color: #1F6FA8; }
.nnh-ownerdash .odjob-actions {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-top: 14px; padding-left: 68px;
}
.nnh-ownerdash .nnh-btn.quiet {
  background: none; border-color: transparent; color: #5C6B82; font-weight: 600; box-shadow: none;
}
.nnh-ownerdash .nnh-btn.quiet:hover { color: #A65D4E; background: none; }
.nnh-ownerdash .odjob-msgfirst { margin-left: auto; font-size: 13px; font-weight: 700; }
.nnh-ownerdash .odjob-suggest {
  display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap;
  margin: 14px 0 0 68px; padding-top: 14px; border-top: 1px solid #F7F2E7;
}
.nnh-ownerdash .odjob-suggest[hidden] { display: none; }
.nnh-ownerdash .odjob-suggest .field { margin: 0; }
.nnh-ownerdash .odjob-suggest .field label { display: block; margin-bottom: 6px; }
.nnh-ownerdash .odjob-suggest-word { flex: 1 1 280px; }
.nnh-ownerdash .odjob-suggest-word input[type="text"] { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .odjob-done { margin: 12px 0 0 68px; font-size: 13.5px; font-weight: 700; color: #3E7A34; }
.nnh-ownerdash .odjob-done a { margin-left: 6px; font-weight: 700; }
.nnh-ownerdash .odjobs-foot { margin: 16px 0 0; font-size: 12.5px; line-height: 1.6; color: #5C6B82; font-style: italic; }
@media (max-width: 720px) {
  .nnh-ownerdash .odjob-actions,
  .nnh-ownerdash .odjob-suggest,
  .nnh-ownerdash .odjob-done { padding-left: 0; margin-left: 0; }
  .nnh-ownerdash .odjob-msgfirst { margin-left: 0; }
}

/* --------------------------------------------------------------------------
   v0.52.14 — Booking requests, corrected against the mockups: the action row,
   the suggest form and the confirmed line all sit FLUSH with the card's left
   padding, not indented under the text column. The date chip is 46px, and the
   suggest form carries no rule above it — just air.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odjob-datechip { flex: 0 0 46px; width: 46px; }
.nnh-ownerdash .odjob-actions,
.nnh-ownerdash .odjob-done { padding-left: 0; margin-left: 0; }
.nnh-ownerdash .odjob-actions[hidden] { display: none; }
.nnh-ownerdash .odjob-suggest {
  margin: 16px 0 0; padding-top: 0; border-top: 0;
}
.nnh-ownerdash .odjob-suggest input[type="date"] { width: 135px; }
.nnh-ownerdash .odjob-suggest .nnh-btn.primary { margin-left: auto; }

/* --------------------------------------------------------------------------
   v0.52.15 — Messages, re-checked against the mockups:
   · the drafted-replies card sits UNDER the filter tabs and ABOVE the search
     field (3.39.18 puts it below the tabs; 3.41.28 shows search beneath it).
   · "Close conversation" belongs in the thread header only — the duplicate at
     the foot of the reply form is the no-JS fallback and hides when JS runs.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-messages-card > .nnh-ready { margin: 16px 0; }
html.nnh-js .nnh-ownerdash .nnh-msg-closebtn { display: none; }

/* --------------------------------------------------------------------------
   v0.54.0 — Jobs & payments: the shared section head, the two-tracks
   explainer, the one-row quote form, and the ledger table where a row carries
   both tracks and taps open to the next step.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odtracks {
  background: #E9F2F8; border: 1px solid #C9DAEA; border-radius: 14px;
  padding: 18px 20px; margin-bottom: 20px;
}
.nnh-ownerdash .odtracks-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.nnh-ownerdash .odtracks-head h2 { margin: 0; font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odtracks-head button {
  border: 0; background: none; cursor: pointer;
  font: inherit; font-size: 12.5px; font-weight: 700; color: #1F6FA8;
}
.nnh-ownerdash .odtracks-head button:hover { color: #174F78; text-decoration: underline; }
.nnh-ownerdash .odtracks-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.nnh-ownerdash .odtracks-card { background: #FFFFFF; border-radius: 10px; padding: 14px 16px; }
.nnh-ownerdash .odtracks-lab {
  display: block; font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
}
.nnh-ownerdash .odtracks-lab.is-money { color: #B8791E; }
.nnh-ownerdash .odtracks-lab.is-cal { color: #A65D4E; }
.nnh-ownerdash .odtracks-card p { margin: 7px 0 0; font-size: 13.5px; line-height: 1.6; color: #3B4C64; }
.nnh-ownerdash .odtracks-foot { margin: 12px 0 0; font-size: 12.5px; color: #5C6B82; }
@media (max-width: 720px) { .nnh-ownerdash .odtracks-grid { grid-template-columns: 1fr; } }

/* New quote — one row, as the mockup draws it. */
.nnh-ownerdash .odquote-row {
  display: grid; grid-template-columns: minmax(0,1.2fr) minmax(0,1.3fr) 110px 130px auto;
  gap: 14px; align-items: end;
}
.nnh-ownerdash .odquote-row .field { margin: 0; min-width: 0; }
.nnh-ownerdash .odquote-row .field label { display: block; margin-bottom: 6px; }
.nnh-ownerdash .odquote-row .field select,
.nnh-ownerdash .odquote-row .field input { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .odquote-new-who { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 14px; }
.nnh-ownerdash .odquote-new-who[hidden] { display: none; }
.nnh-ownerdash .odquote-new-who .field { margin: 0; }
.nnh-ownerdash .odquote-new-who input { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .odquote-say { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 16px 0 0; }
.nnh-ownerdash .odquote-say > span { font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .odquote-help { margin: 12px 0 0; font-size: 12.5px; line-height: 1.6; color: #5C6B82; }
@media (max-width: 960px) {
  .nnh-ownerdash .odquote-row { grid-template-columns: 1fr 1fr; }
  .nnh-ownerdash .odquote-row > .nnh-btn { grid-column: 1 / -1; justify-self: start; }
}

/* The ledger. */
.nnh-ownerdash .odjobs-tablewrap { overflow-x: auto; }
.nnh-ownerdash .odledger { width: 100%; }
.nnh-ownerdash .odledger th {
  font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #5C6B82;
  text-align: left; white-space: nowrap;
}
.nnh-ownerdash .odledger-row { cursor: pointer; }
.nnh-ownerdash .odledger-row:hover { background: #FBF8F1; }
.nnh-ownerdash .odledger-row.is-open { background: #FBF8F1; }
.nnh-ownerdash .odledger-row:focus-visible { outline: 2px solid #E8862E; outline-offset: -2px; }
.nnh-ownerdash .odledger-who { position: relative; white-space: nowrap; }
.nnh-ownerdash .odledger-who b { font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odledger-dot {
  display: inline-block; width: 7px; height: 7px; border-radius: 50%;
  background: #E8862E; margin-right: 7px; vertical-align: middle;
}
.nnh-ownerdash .odledger-amt { font-weight: 800; color: #1C2B40; white-space: nowrap; }
.nnh-ownerdash .odledger-amt.is-free { font-weight: 600; color: #5C6B82; }
.nnh-ownerdash .odledger-dep,
.nnh-ownerdash .odledger-booked,
.nnh-ownerdash .odledger-upd { color: #5C6B82; white-space: nowrap; }
.nnh-ownerdash .odledger-stage {
  font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; white-space: nowrap;
}
.nnh-ownerdash .odledger-stage.is-unpaid { color: #5C6B82; }
.nnh-ownerdash .odledger-stage.is-quote { color: #1F6FA8; }
.nnh-ownerdash .odledger-stage.is-invoiced { color: #B8791E; }
.nnh-ownerdash .odledger-stage.is-paid { color: #3E7A34; }
.nnh-ownerdash .odledger-stage.is-declined { color: #A65D4E; }
.nnh-ownerdash .odledger-stage.is-free { color: #5C6B82; }
.nnh-ownerdash .odledger-drawer > td { background: #FBF8F1; padding: 14px 16px; }
.nnh-ownerdash .odledger-drawer[hidden] { display: none; }
.nnh-ownerdash .odledger-trail { margin: 0 0 10px; font-size: 12.5px; display: flex; gap: 14px; flex-wrap: wrap; }
/* The drawer reads as the mockup draws it: a facts line, then a Schedule row
   with the no-charge checkbox opposite it, then the payment actions — which
   are absent entirely on a no-charge job, since there is nothing to bill. */
.nnh-ownerdash .odledger-facts { display: flex; gap: 22px; flex-wrap: wrap; margin: 0 0 12px; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .odledger-facts b { font-weight: 700; color: #22334A; }
.nnh-ownerdash .odledger-acts { display: flex; gap: 20px; flex-wrap: wrap; align-items: center; }
.nnh-ownerdash .odledger-acts.is-money { margin-top: 12px; padding-top: 12px; border-top: 1px solid #F0E9DA; }
.nnh-ownerdash .odledger-acts.is-money > b,
.nnh-ownerdash .odledger-sched > b {
  font-size: 10.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: #9FAEC4;
}
.nnh-ownerdash .odledger-sched { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .odledger-on { font-size: 13px; font-weight: 700; color: #22334A; }
.nnh-ownerdash .odledger-quiet {
  border: 0; background: none; cursor: pointer; font: inherit; font-size: 13px; color: #5C6B82;
}
.nnh-ownerdash .odledger-quiet:hover { color: #A65D4E; text-decoration: underline; }
.nnh-ownerdash .odledger-free {
  margin-left: auto; display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: #3B4C64; cursor: pointer;
}
.nnh-ownerdash .odledger-free input { accent-color: #E8862E; }
@media (max-width: 720px) { .nnh-ownerdash .odledger-free { margin-left: 0; } }

/* Review ask. */
.nnh-ownerdash .odreviewask { margin-top: 20px; }
.nnh-ownerdash .odreviewask-head { display: flex; align-items: center; gap: 12px; }
.nnh-ownerdash .odreviewask-head h3 { margin: 0; font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odreviewask-head .nnh-switch-state { font-style: normal; font-size: 13px; color: #3E7A34; margin-left: 4px; }
.nnh-ownerdash .odreviewask p { margin: 10px 0 0; font-size: 13px; line-height: 1.65; color: #3B4C64; }

/* The ledger is a card in the mockup, not a bare table on the page ground. */
.nnh-ownerdash .odjobs-tablewrap {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
  padding: 4px 8px 8px;
}
.nnh-ownerdash .odledger th { padding: 14px 12px 10px; border-bottom: 1px solid #EAE2D3; }
.nnh-ownerdash .odledger td { padding: 13px 12px; border-bottom: 1px solid #F7F2E7; font-size: 13.5px; }
.nnh-ownerdash .odledger tbody tr:last-child td { border-bottom: 0; }
.nnh-ownerdash .odledger-drawer > td { border-bottom: 1px solid #F7F2E7; border-radius: 0; }

/* --------------------------------------------------------------------------
   v0.54.3 — Bookings & calendar: one card, List / Month, and a month grid
   whose days are links so the chosen day survives a refresh.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odbook { padding: 22px 24px; }
.nnh-ownerdash .odbook-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 16px; }
.nnh-ownerdash .odbook-head h2 { margin: 0; font-size: 17px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odbook-views {
  display: inline-flex; background: #F2ECDF; border-radius: 999px; padding: 3px;
}
.nnh-ownerdash .odbook-views a {
  padding: 5px 16px; border-radius: 999px; font-size: 12.5px; font-weight: 700;
  color: #5C6B82; text-decoration: none;
}
.nnh-ownerdash .odbook-views a:hover { color: #22334A; text-decoration: none; }
.nnh-ownerdash .odbook-views a.on { background: #22334A; color: #FFFFFF; }
.nnh-ownerdash .odbook-row {
  display: flex; align-items: center; gap: 16px;
  background: #FBF8F1; border-radius: 12px; padding: 14px 16px; margin-bottom: 12px;
}
.nnh-ownerdash .odbook-row.is-empty { color: #5C6B82; font-size: 13.5px; }
.nnh-ownerdash .odbook-what { min-width: 0; flex: 1 1 auto; }
.nnh-ownerdash .odbook-what b { display: block; font-size: 14.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odbook-what em { display: block; margin-top: 2px; font-style: normal; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .odbook-msg { flex: 0 0 auto; font-size: 13px; font-weight: 700; }
.nnh-ownerdash .odbook-dayhead {
  margin: 18px 0 8px; font-size: 10.5px; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; color: #5C6B82;
}
.nnh-ownerdash .odbook-dayrow {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 10px; padding: 12px 14px; margin-bottom: 10px;
}
.nnh-ownerdash .odbook-dayrow b { font-size: 13.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odbook-dayrow span { font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .odbook-add {
  border: 1px dashed #D8CFBC; border-radius: 12px; padding: 14px 16px; margin-top: 4px;
}
.nnh-ownerdash .odbook-add > summary {
  list-style: none; cursor: pointer; font-size: 13.5px; font-weight: 700; color: #22334A;
}
.nnh-ownerdash .odbook-add > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .odbook-add > summary::before { content: "\25B8 "; color: #9FAEC4; }
.nnh-ownerdash .odbook-add[open] > summary::before { content: "\25BE "; }
.nnh-ownerdash .odbook-addrow {
  display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1.2fr) 150px 120px auto;
  gap: 14px; align-items: end; margin-top: 14px;
}
.nnh-ownerdash .odbook-addrow .field { margin: 0; min-width: 0; }
.nnh-ownerdash .odbook-addrow .field label { display: block; margin-bottom: 6px; }
.nnh-ownerdash .odbook-addrow select,
.nnh-ownerdash .odbook-addrow input { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .odbook-foot { margin: 16px 0 0; font-size: 12.5px; line-height: 1.6; color: #5C6B82; }
@media (max-width: 960px) {
  .nnh-ownerdash .odbook-addrow { grid-template-columns: 1fr 1fr; }
  .nnh-ownerdash .odbook-addrow > .nnh-btn { grid-column: 1 / -1; justify-self: start; }
}

/* Month grid — days are links; a dot means work, navy means chosen. */
.nnh-ownerdash .odcal-head { display: flex; align-items: center; gap: 14px; margin-bottom: 12px; }
.nnh-ownerdash .odcal-head b { font-size: 14px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odcal-nav { color: #5C6B82; font-size: 18px; line-height: 1; text-decoration: none; padding: 0 4px; }
.nnh-ownerdash .odcal-nav:hover { color: #22334A; text-decoration: none; }
.nnh-ownerdash .odcal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
/* The earlier calendar drew each day as a bordered square tile (aspect-ratio:1,
   sky fill on days with work). The mockup's month is a plain number grid, so
   those are unset here rather than edited in place. */
.nnh-ownerdash .odcal-cell {
  position: relative; display: grid; place-items: center;
  aspect-ratio: auto; min-height: 40px; padding: 0; border: 0; box-shadow: none;
  border-radius: 9px; text-decoration: none; color: #3B4C64; font-size: 13.5px;
}
.nnh-ownerdash .odcal-cell.has-job { background: none; border: 0; }
.nnh-ownerdash .odcal-cell.is-today { border: 0; box-shadow: inset 0 0 0 1.5px #C9DAEA; }
.nnh-ownerdash .odcal-num { font-size: 13.5px; color: inherit; }
.nnh-ownerdash a.odcal-cell:hover { background: #F2ECDF; color: #22334A; text-decoration: none; }
.nnh-ownerdash .odcal-cell.is-empty { visibility: hidden; }
.nnh-ownerdash .odcal-cell.is-today .odcal-num { font-weight: 800; color: #22334A; }
.nnh-ownerdash .odcal-cell.is-on { background: #22334A; }
.nnh-ownerdash .odcal-cell.is-on .odcal-num { color: #FFFFFF; font-weight: 800; }
.nnh-ownerdash .odcal-dot {
  position: absolute; bottom: 5px; left: 50%; transform: translateX(-50%);
  width: 5px; height: 5px; min-width: 0; padding: 0; border-radius: 50%;
  background: #E8862E; align-self: auto;
}
.nnh-ownerdash .odcal-head { justify-content: center; }
.nnh-ownerdash .odcal-nav {
  width: auto; height: auto; border: 0; border-radius: 0; display: inline-block;
}

/* The number and its dot must share a centre — the earlier flex rule left the
   number at the start of the cell while the dot centred itself. */
.nnh-ownerdash .odcal-cell { justify-content: center; text-align: center; }

/* Payment settings keeps the shared section head, so its own intro drops to a
   plain lede above the first card. */
.nnh-ownerdash .odpayment-intro { margin: 0 0 18px; max-width: 760px; font-size: 13.5px; line-height: 1.65; color: #3B4C64; }

/* The Stripe card's heading is a card title in the mockup, not a page title. */
.nnh-ownerdash .nnh-connect-card h2 { font-size: 17px; font-weight: 800; }

/* --------------------------------------------------------------------------
   v0.55.0 — Payment settings, matched to the mockups. The Stripe-backed cards
   render whether or not Stripe is connected: hiding them means the screen can
   never be checked. When the account is not ready the controls are disabled
   and the card says why — never a working-looking form that cannot work.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odstripe-state-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.nnh-ownerdash .odstripe-state-head h2 { margin: 0; font-size: 16px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odstripe-chip {
  font-size: 10.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase;
  padding: 3px 10px; border-radius: 999px; border: 1px solid transparent;
}
.nnh-ownerdash .odstripe-chip.is-live { background: #EAF3E6; border-color: #CBE2C2; color: #3E7A34; }
.nnh-ownerdash .odstripe-chip.is-wait { background: #FDF3E0; border-color: #F0DDB8; color: #7A5A1E; }
.nnh-ownerdash .odstripe-chip.is-off { background: #F2ECDF; border-color: #EAE2D3; color: #5C6B82; }
.nnh-ownerdash .odstripe-state p { margin: 10px 0 0; font-size: 13.5px; line-height: 1.65; color: #3B4C64; }

.nnh-ownerdash .odpay-row {
  display: grid; grid-template-columns: minmax(0,1.6fr) 150px auto;
  gap: 14px; align-items: end; border: 0; padding: 0; margin: 14px 0 0; min-width: 0;
}
.nnh-ownerdash .odpay-row.is-sub { grid-template-columns: minmax(0,1.3fr) 120px 170px auto; }
.nnh-ownerdash .odpay-row.is-fixed { grid-template-columns: minmax(0,1.3fr) 130px 150px auto; }
.nnh-ownerdash .odpay-row .field { margin: 0; min-width: 0; }
.nnh-ownerdash .odpay-row .field label { display: block; margin-bottom: 6px; }
.nnh-ownerdash .odpay-row input,
.nnh-ownerdash .odpay-row select { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .odpay-row:disabled { opacity: .55; }
.nnh-ownerdash .odpay-or {
  margin: 20px 0 0; padding-top: 16px; border-top: 1px solid #F7F2E7;
  font-size: 13px; font-weight: 700; color: #22334A;
}
.nnh-ownerdash .odpay-made { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.nnh-ownerdash .odpay-pill {
  display: inline-flex; align-items: center; gap: 8px;
  background: #F5A93B; color: #22334A; font-size: 13.5px; font-weight: 700;
  padding: 9px 18px; border-radius: 999px;
}
.nnh-ownerdash .odpay-pill em { font-style: normal; font-weight: 600; }
.nnh-ownerdash .odwaiting-note {
  margin: 12px 0 0; padding: 10px 14px; border-radius: 10px;
  background: #FBF8F1; border: 1px solid #EAE2D3;
  font-size: 12.5px; line-height: 1.6; color: #5C6B82;
}
.nnh-ownerdash .fcard.is-waiting .odcard-headline h2 { color: #5C6B82; }

.nnh-ownerdash .odinvset-row { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 18px; }
.nnh-ownerdash .odinvset-row b { display: block; font-size: 14px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odinvset-row span { display: block; margin-top: 3px; font-size: 13px; line-height: 1.6; color: #5C6B82; }
.nnh-ownerdash .odinvset-lab { margin: 20px 0 10px; padding-top: 16px; border-top: 1px solid #F7F2E7; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .odinvset-lab b { font-weight: 700; color: #22334A; }
.nnh-ownerdash .odinvset-links { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.nnh-ownerdash .odinvset-links input { width: 100%; box-sizing: border-box; }

.nnh-ownerdash .odbtn-preview { margin-top: 18px; padding-top: 16px; border-top: 1px solid #F7F2E7; }
.nnh-ownerdash .odbtn-preview .nnh-brand-caps { display: block; margin-bottom: 10px; }
.nnh-ownerdash .odbtn-pill {
  display: inline-block; background: #F5A93B; color: #22334A;
  font-size: 14px; font-weight: 700; padding: 11px 22px; border-radius: 999px;
}
.nnh-ownerdash .odbtn-pill.is-unset { background: #EFE7D9; color: #9C917F; }
@media (max-width: 960px) {
  .nnh-ownerdash .odpay-row,
  .nnh-ownerdash .odpay-row.is-sub,
  .nnh-ownerdash .odpay-row.is-fixed { grid-template-columns: 1fr 1fr; }
  .nnh-ownerdash .odpay-row > .nnh-btn { grid-column: 1 / -1; justify-self: start; }
  .nnh-ownerdash .odinvset-links { grid-template-columns: 1fr; }
}

/* --------------------------------------------------------------------------
   v0.56.0 — Contacts, matched to the mockups: the head with its actions under
   the lede, the "Worth a reply" nudge, a Lists menu beside the filters, the
   accepted-quote suggestion strip, and list chips in the row drawer.
   -------------------------------------------------------------------------- */
/* The head is a stacked page head now (title, squiggle, lede, then actions),
   not the old title-left / buttons-right row — so the earlier flex rules on
   .nnh-contacts-heading are unset here rather than edited in place. */
.nnh-ownerdash .nnh-contacts-heading { display: block; margin-bottom: 18px; }
.nnh-ownerdash .nnh-contacts-heading h1 { margin: 0; }
.nnh-ownerdash .nnh-contacts-heading .odpagehead-lede { margin: 12px 0 0; max-width: 720px; }
.nnh-ownerdash .nnh-contacts-heading .nnh-contacts-top-actions { display: flex; gap: 10px; margin-top: 16px; }

.nnh-ownerdash .nnh-ctnudge {
  display: flex; align-items: flex-start; gap: 12px;
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 12px;
  padding: 13px 16px; margin: 18px 0 0;
}
.nnh-ownerdash .nnh-ctnudge[hidden] { display: none; }
.nnh-ownerdash .nnh-ctnudge p { margin: 0; flex: 1 1 auto; font-size: 13.5px; line-height: 1.6; color: #7A5A1E; }
.nnh-ownerdash .nnh-ctnudge b { color: #7A5A1E; font-weight: 800; }
.nnh-ownerdash .nnh-ctnudge a { font-weight: 700; }
.nnh-ownerdash .nnh-ctnudge > button {
  border: 0; background: none; cursor: pointer; color: #B8791E; font-size: 16px; line-height: 1; padding: 0 2px;
}

.nnh-ownerdash .nnh-contact-tools { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-contact-tools .nnh-contact-search { flex: 1 1 220px; min-width: 180px; }

.nnh-ownerdash .nnh-ctl-menu { position: relative; }
.nnh-ownerdash .nnh-ctl-menu > summary {
  list-style: none; cursor: pointer; user-select: none;
  border: 1px solid #D8CFBC; border-radius: 999px; padding: 7px 15px;
  font-size: 12.5px; font-weight: 700; color: #22334A; background: #FFFFFF;
}
.nnh-ownerdash .nnh-ctl-menu > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .nnh-ctl-menu > summary:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-ctl-pop {
  position: absolute; left: 0; top: calc(100% + 6px); z-index: 30; min-width: 250px;
  display: flex; flex-direction: column; padding: 12px;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 12px;
  box-shadow: 0 8px 24px rgba(34,51,74,.16);
}
.nnh-ownerdash .nnh-ctl-head {
  font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase;
  color: #9FAEC4; margin: 6px 0 4px;
}
.nnh-ownerdash .nnh-ctl-item {
  border: 0; background: none; text-align: left; cursor: pointer;
  font: inherit; font-size: 13.5px; font-weight: 600; color: #22334A;
  padding: 6px 8px; border-radius: 8px;
}
.nnh-ownerdash .nnh-ctl-item:hover { background: #FBF8F1; }
.nnh-ownerdash .nnh-ctl-item.is-empty { color: #C3BCAF; cursor: default; }
.nnh-ownerdash .nnh-ctl-item.is-empty:hover { background: none; }
.nnh-ownerdash .nnh-ctl-none { font-size: 12.5px; color: #9FAEC4; padding: 4px 8px; }
.nnh-ownerdash .nnh-ctl-new { display: flex; gap: 8px; margin-top: 10px; padding-top: 10px; border-top: 1px solid #F7F2E7; }
.nnh-ownerdash .nnh-ctl-new input { flex: 1 1 auto; min-width: 0; }

.nnh-ownerdash .nnh-ctsugg {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap; justify-content: space-between;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 12px;
  padding: 14px 18px; margin: 14px 0;
}
.nnh-ownerdash .nnh-ctsugg p { margin: 0; font-size: 13.5px; color: #3B4C64; }
.nnh-ownerdash .nnh-ctsugg b { color: #1C2B40; font-weight: 800; }
.nnh-ownerdash .nnh-ctsugg > span { display: flex; gap: 10px; align-items: center; }

.nnh-ownerdash .nnh-ctrow-top { display: flex; gap: 14px; flex-wrap: wrap; align-items: baseline; margin: 0 0 12px; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .nnh-ctrow-top a { font-weight: 700; }
.nnh-ownerdash .nnh-ctrow-lists { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.nnh-ownerdash .nnh-ctrow-lab {
  font-size: 10px; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; color: #9FAEC4;
}
.nnh-ownerdash .nnh-ctl-chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: #F2ECDF; border-radius: 999px; padding: 4px 10px;
  font-size: 12.5px; font-weight: 600; color: #22334A;
}
.nnh-ownerdash .nnh-ctl-chip.is-sup { background: #FBEAE6; color: #A65D4E; font-weight: 700; }
.nnh-ownerdash .nnh-ctl-chip > button {
  border: 0; background: none; cursor: pointer; color: #9FAEC4; font-size: 13px; line-height: 1; padding: 0;
}
.nnh-ownerdash .nnh-ctl-chip > button:hover { color: #A65D4E; }
.nnh-ownerdash .nnh-ctl-addsel {
  border: 1px dashed #D8CFBC; border-radius: 999px; padding: 4px 10px;
  font-size: 12.5px; font-weight: 600; color: #5C6B82; background: #FFFFFF;
}
.nnh-ownerdash .nnh-ct-supcount { color: #A65D4E; font-weight: 700; }
.nnh-ownerdash .nnh-attestline {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 10px; padding: 12px 14px; margin: 12px 0;
}
.nnh-ownerdash .nnh-attestline label { font-size: 13px; line-height: 1.6; color: #7A5A1E; }

/* The drawer is a wrapping flex row, so the mockup's stacked blocks have to
   claim a full line of their own. */
.nnh-ownerdash .nnh-ctrow-top,
.nnh-ownerdash .nnh-ctrow-lists,
.nnh-ownerdash .nnh-ctrow-foot { flex: 0 0 100%; width: 100%; }
.nnh-ownerdash .nnh-ctrow-foot {
  display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  margin: 14px 0 0; padding-top: 12px; border-top: 1px solid #F7F2E7;
}
.nnh-ownerdash .nnh-ctrow-foot em { font-style: italic; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .nnh-ctrow-del {
  border: 0; background: none; cursor: pointer; font: inherit; font-size: 13px; color: #5C6B82;
}
.nnh-ownerdash .nnh-ctrow-del:hover { color: #A65D4E; text-decoration: underline; }

/* --------------------------------------------------------------------------
   v0.57.0 — Marketing dashboard: four tallies, ideas drawn from real numbers,
   and everything currently running.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .odmkt-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-top: 22px; }
.nnh-ownerdash .odmkt-stat {
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px; padding: 16px 18px;
}
.nnh-ownerdash .odmkt-stat-lab {
  display: block; font-size: 10px; font-weight: 800; letter-spacing: .07em;
  text-transform: uppercase; color: #5C6B82;
}
.nnh-ownerdash .odmkt-stat b {
  display: block; margin: 8px 0 4px;
  font-family: var(--nnh-display); font-size: 26px; font-weight: 800; color: #1C2B40; line-height: 1;
}
.nnh-ownerdash .odmkt-stat em { font-style: normal; font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .odmkt-stat em.is-good { color: #3E7A34; }
.nnh-ownerdash .odmkt-stat em.is-warn { color: #B8791E; }
.nnh-ownerdash .odmkt-statsnote { margin: 10px 0 0; font-size: 12px; color: #9FAEC4; }

.nnh-ownerdash .odmkt-h2 { margin: 34px 0 14px; font-size: 17px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odmkt-h2 em { font-style: normal; font-size: 13px; font-weight: 500; color: #5C6B82; }
.nnh-ownerdash .odmkt-idea {
  display: flex; align-items: flex-start; gap: 16px;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
  padding: 18px 20px; margin-bottom: 12px;
}
.nnh-ownerdash .odmkt-tag {
  flex: 0 0 auto; font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  padding: 4px 10px; border-radius: 999px;
}
.nnh-ownerdash .odmkt-tag.is-blue { background: #E9F2F8; color: #1F6FA8; }
.nnh-ownerdash .odmkt-tag.is-amber { background: #FDF3E0; color: #B8791E; }
.nnh-ownerdash .odmkt-idea-copy { flex: 1 1 auto; min-width: 0; }
.nnh-ownerdash .odmkt-idea-copy b { display: block; font-size: 14.5px; font-weight: 800; color: #1C2B40; line-height: 1.45; }
.nnh-ownerdash .odmkt-idea-copy p { margin: 6px 0 0; font-size: 13.5px; line-height: 1.6; color: #5C6B82; }
.nnh-ownerdash .odmkt-idea-go { flex: 0 0 auto; }
.nnh-ownerdash .odmkt-idea-x button {
  border: 0; background: none; cursor: pointer; color: #C3BCAF; font-size: 16px; line-height: 1; padding: 2px;
}
.nnh-ownerdash .odmkt-idea-x button:hover { color: #5C6B82; }
.nnh-ownerdash .odmkt-ideanote { margin: 6px 0 0; font-size: 12px; line-height: 1.6; color: #9FAEC4; }

.nnh-ownerdash .odmkt-runhead { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.nnh-ownerdash .odmkt-runfilters { display: flex; gap: 8px; flex-wrap: wrap; }
.nnh-ownerdash .odmkt-runfilters button {
  border: 1px solid #D8CFBC; background: #FFFFFF; border-radius: 999px; cursor: pointer;
  padding: 7px 15px; font: inherit; font-size: 12.5px; font-weight: 700; color: #5C6B82;
}
.nnh-ownerdash .odmkt-runfilters button:hover { border-color: #22334A; color: #22334A; }
.nnh-ownerdash .odmkt-runfilters button.on { background: #22334A; border-color: #22334A; color: #FFFFFF; }
.nnh-ownerdash .odmkt-new { display: flex; gap: 10px; flex-wrap: wrap; margin: 14px 0 16px; }
.nnh-ownerdash .odmkt-run {
  display: flex; align-items: center; gap: 16px;
  background: #FFFFFF; border: 1px solid #EAE2D3; border-radius: 14px;
  padding: 16px 20px; margin-bottom: 12px;
}
.nnh-ownerdash .odmkt-run[hidden] { display: none; }
.nnh-ownerdash .odmkt-run-copy { flex: 1 1 auto; min-width: 0; }
.nnh-ownerdash .odmkt-run-copy b { font-size: 14.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .odmkt-run-copy p { margin: 5px 0 0; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .odmkt-chip {
  display: inline-block; margin-left: 8px; vertical-align: middle;
  font-size: 10px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
  padding: 3px 9px; border-radius: 999px;
}
.nnh-ownerdash .odmkt-chip.is-kind { background: #E9F2F8; color: #1F6FA8; }
.nnh-ownerdash .odmkt-chip.is-review { background: #FDF3E0; color: #B8791E; }
.nnh-ownerdash .odmkt-chip.is-active { background: #EAF3E6; color: #3E7A34; }
.nnh-ownerdash .odmkt-chip.is-scheduled { background: #E9F2F8; color: #1F6FA8; }
.nnh-ownerdash .odmkt-chip.is-sent { background: #F2ECDF; color: #5C6B82; }
.nnh-ownerdash .odmkt-chip.is-draft { background: #F2ECDF; color: #5C6B82; }
.nnh-ownerdash .odmkt-run-open { flex: 0 0 auto; font-size: 13px; font-weight: 700; }
.nnh-ownerdash .odmkt-inactive > summary {
  list-style: none; cursor: pointer;
  background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 12px;
  padding: 11px 18px; font-size: 12.5px; font-weight: 600; color: #5C6B82;
}
.nnh-ownerdash .odmkt-inactive > summary::-webkit-details-marker { display: none; }
.nnh-ownerdash .odmkt-inactive > summary::after { content: " \25BE"; }
.nnh-ownerdash .odmkt-inactive[open] > summary::after { content: " \25B4"; }
.nnh-ownerdash .odmkt-runnote { margin: 14px 0 0; font-size: 12.5px; font-style: italic; color: #9FAEC4; }
@media (max-width: 960px) { .nnh-ownerdash .odmkt-stats { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 620px) {
  .nnh-ownerdash .odmkt-stats { grid-template-columns: 1fr; }
  .nnh-ownerdash .odmkt-idea { flex-wrap: wrap; }
}
.nnh-ownerdash .odmkt-chip.is-paused { background: #FDF3E0; color: #B8791E; }
.nnh-ownerdash .odmkt-run-pause { flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   v0.58.0 — Forms: every saved form gets a share link of its own, the row
   carries its real submission count, and the editor previews exactly what a
   neighbor sees.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-form-list-row { align-items: flex-start; gap: 18px; }
.nnh-ownerdash .nnh-form-list-copy { min-width: 0; flex: 1 1 auto; }
.nnh-ownerdash .nnh-form-list-copy strong { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 15px; }
.nnh-ownerdash .nnh-form-list-copy strong a { color: #1C2B40; text-decoration: none; }
.nnh-ownerdash .nnh-form-list-copy strong a:hover { text-decoration: underline; }
.nnh-ownerdash .nnh-form-meta { display: block; margin-top: 4px; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-form-meta b { color: #1F6FA8; font-weight: 700; }
.nnh-ownerdash .nnh-form-share { display: block; margin-top: 10px; }
.nnh-ownerdash .nnh-form-share input {
  width: 100%; max-width: 460px; box-sizing: border-box;
  border: 1px solid #D8CFBC; border-radius: 10px; padding: 9px 12px;
  background: #FFFDF8; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12.5px; color: #3B4C64;
}
.nnh-ownerdash .nnh-form-copyrow { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 10px; }
.nnh-ownerdash .nnh-form-copyrow em { font-style: normal; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .nnh-form-list-actions { display: flex; gap: 8px; flex-wrap: wrap; flex: 0 0 auto; }
.nnh-ownerdash .nnh-btn.nnh-form-del {
  background: #FFFFFF; border-color: #EBCFC8; color: #A65D4E;
}
.nnh-ownerdash .nnh-btn.nnh-form-del:hover { background: #FBEAE6; border-color: #A65D4E; }
.nnh-ownerdash .nnh-form-status.is-off { background: #F2ECDF; color: #5C6B82; }

.nnh-ownerdash .nnh-form-editor-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.nnh-ownerdash .nnh-form-editor-heading strong em { font-style: normal; font-weight: 500; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-field-count { font-size: 12.5px; font-weight: 700; color: #9FAEC4; }
.nnh-ownerdash .nnh-forms-charm { color: #B8791E; font-style: italic; }
.nnh-ownerdash .nnh-form-editor-actions {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  margin-top: 18px; padding-top: 16px; border-top: 1px solid #F7F2E7;
}
.nnh-ownerdash .nnh-form-editor-go { display: flex; gap: 10px; align-items: center; }

.nnh-ownerdash .nnh-formprev-wrap { margin-top: 22px; }
.nnh-ownerdash .nnh-formprev-wrap .nnh-brand-caps { display: block; margin-bottom: 10px; }
.nnh-ownerdash .nnh-formprev {
  max-width: 420px; background: #FBF8F1; border: 1px solid #EAE2D3; border-radius: 12px; padding: 18px 20px;
}
.nnh-ownerdash .nnh-formprev > b { display: block; font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-formprev > em { display: block; margin-top: 2px; font-style: normal; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .nnh-formprev label {
  display: block; margin-top: 14px; font-size: 12.5px; font-weight: 700; color: #22334A;
}
.nnh-ownerdash .nnh-formprev input,
.nnh-ownerdash .nnh-formprev select,
.nnh-ownerdash .nnh-formprev textarea {
  width: 100%; box-sizing: border-box; margin-top: 5px; min-height: 34px;
  border: 1px solid #E0D8C8; border-radius: 8px; background: #FFFFFF;
  font: inherit; font-size: 13px; color: #9FAEC4; padding: 6px 10px;
}
.nnh-ownerdash .nnh-formprev textarea { min-height: 56px; }
.nnh-ownerdash .nnh-formprev-cta {
  display: inline-block; margin-top: 18px; background: #E8862E; color: #FFFFFF;
  font-size: 13.5px; font-weight: 700; padding: 10px 22px; border-radius: 999px;
}
.nnh-ownerdash .nnh-formprev-wrap .nnh-help { display: block; margin-top: 10px; max-width: 620px; }

main.wrap.nnh-formpage { padding-top: 48px; padding-bottom: 64px; max-width: 640px; }
.nnh-formpage-foot { margin-top: 20px; font-size: 13px; color: #5C6B82; }

/* Form name and its button sit side by side, as the mockup draws them; the
   helper lines under each were breaking the earlier two-column grid. */
.nnh-ownerdash .nnh-form-meta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.nnh-ownerdash .nnh-form-meta-grid .field { margin: 0; }
.nnh-ownerdash .nnh-form-meta-grid .field input { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-form-meta-grid .nnh-help { display: block; margin-top: 5px; font-size: 12px; color: #5C6B82; }
@media (max-width: 720px) { .nnh-ownerdash .nnh-form-meta-grid { grid-template-columns: 1fr; } }

/* --------------------------------------------------------------------------
   v0.59.0 — Newsletter: a list of letters and a three-step wizard. The three
   panes live on one form, so stepping back and forth loses nothing and there
   is a single submit at the end.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-campaigns-pagehead { display: block; margin-bottom: 20px; }
.nnh-ownerdash .nnh-nl-listcard .nnh-cardhead-row { align-items: flex-start; gap: 18px; }
.nnh-ownerdash .nnh-nl-listcard .nnh-cardhead-row h3 { margin: 0; }
.nnh-ownerdash .nnh-nl-listcard .nnh-cardhead-row .hint { margin: 6px 0 0; max-width: 52ch; }
.nnh-ownerdash .nnh-nl-list { margin-top: 16px; }
.nnh-ownerdash .nnh-nl-row {
  display: flex; align-items: center; gap: 16px;
  background: #FBF8F1; border-radius: 12px; padding: 14px 18px; margin-bottom: 10px;
}
.nnh-ownerdash .nnh-nl-copy { flex: 1 1 auto; min-width: 0; }
.nnh-ownerdash .nnh-nl-copy strong { display: block; font-size: 14.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-copy span { display: block; margin-top: 3px; font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-foot { margin: 12px 0 0; }

.nnh-ownerdash .nnh-nl-back { display: inline-block; font-size: 12.5px; font-weight: 700; margin-bottom: 8px; }
.nnh-ownerdash .nnh-nl-wizard > h3 { margin: 0 0 6px; }
.nnh-ownerdash .nnh-nl-newword { background: #DCE9F4; padding: 0 4px; border-radius: 3px; }
.nnh-ownerdash .nnh-nl-steps {
  display: flex; align-items: center; gap: 0; list-style: none; margin: 20px 0 24px; padding: 0;
}
.nnh-ownerdash .nnh-nl-steps li {
  display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #9FAEC4;
}
.nnh-ownerdash .nnh-nl-steps li + li::before {
  content: ""; width: 46px; height: 1px; background: #EAE2D3; margin: 0 14px;
}
.nnh-ownerdash .nnh-nl-steps li b {
  display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%;
  border: 1.5px solid #D8CFBC; font-size: 12px; font-weight: 800; color: #9FAEC4;
}
.nnh-ownerdash .nnh-nl-steps li.on { color: #1C2B40; }
.nnh-ownerdash .nnh-nl-steps li.on b { background: #22334A; border-color: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-nl-steps li.done b { border-color: #3E7A34; color: #3E7A34; }
.nnh-ownerdash .nnh-nl-steps li.done { color: #3E7A34; }

.nnh-ownerdash .nnh-nl-step[hidden] { display: none; }
.nnh-ownerdash .nnh-nl-lab { margin: 22px 0 10px; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-lab b { color: #22334A; font-weight: 700; }
.nnh-ownerdash .nnh-nl-lab em { font-style: normal; }
.nnh-ownerdash .nnh-nl-tpls { display: flex; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-nl-tpl {
  border: 1px solid #D8CFBC; background: #FFFFFF; border-radius: 999px; cursor: pointer;
  padding: 8px 16px; font: inherit; font-size: 13px; font-weight: 600; color: #22334A;
}
.nnh-ownerdash .nnh-nl-tpl:hover { border-color: #22334A; }
.nnh-ownerdash .nnh-nl-tpl.on { background: #22334A; border-color: #22334A; color: #FFFFFF; }
.nnh-ownerdash .nnh-nl-tplok { margin: 10px 0 0; font-size: 13px; font-weight: 600; color: #3E7A34; }
.nnh-ownerdash .nnh-nl-wizard .field { margin-top: 16px; }
.nnh-ownerdash .nnh-nl-wizard .field input[type="text"],
.nnh-ownerdash .nnh-nl-wizard .field input[type="date"],
.nnh-ownerdash .nnh-nl-wizard .field textarea { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-nl-vars { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin: 12px 0 0; }
.nnh-ownerdash .nnh-nl-vars > span { font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-vars button {
  border: 1px solid #C9DAEA; background: #E9F2F8; color: #1F6FA8; cursor: pointer;
  font: inherit; font-size: 12px; font-weight: 600; padding: 4px 11px; border-radius: 999px;
}
.nnh-ownerdash .nnh-nl-vars button:hover { border-color: #1F6FA8; }
.nnh-ownerdash .nnh-nl-varnote { margin: 6px 0 0; font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-nl-aibtns { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 14px 0 0; }
.nnh-ownerdash .nnh-nl-lint { margin: 10px 0 0; font-size: 12.5px; font-style: italic; color: #B8791E; }

.nnh-ownerdash .nnh-nl-looks { display: flex; gap: 14px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-nl-look {
  position: relative; width: 150px; cursor: pointer; text-align: center;
  border: 2px solid #EAE2D3; border-radius: 12px; padding: 12px 10px 10px; background: #FFFFFF;
}
.nnh-ownerdash .nnh-nl-look input { position: absolute; opacity: 0; width: 0; height: 0; }
.nnh-ownerdash .nnh-nl-look.on { border-color: #E8862E; background: #FDF3E0; }
.nnh-ownerdash .nnh-nl-look.is-soon { opacity: .55; cursor: not-allowed; }
.nnh-ownerdash .nnh-nl-look b { display: block; margin-top: 10px; font-size: 12.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-look em { display: block; font-style: normal; font-size: 11.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-thumb {
  display: flex; flex-direction: column; gap: 5px; justify-content: center;
  height: 56px; padding: 8px 10px; border-radius: 8px; background: #FBF8F1;
}
.nnh-ownerdash .nnh-nl-thumb i { display: block; height: 5px; border-radius: 2px; background: #E0D8C8; }
.nnh-ownerdash .nnh-nl-thumb i:first-child { width: 70%; }
.nnh-ownerdash .nnh-nl-thumb.is-letter { background: #22334A; }
.nnh-ownerdash .nnh-nl-thumb.is-letter i { background: #46596F; }
.nnh-ownerdash .nnh-nl-thumb.is-letter i:first-child { background: #F5A93B; width: 34%; }
.nnh-ownerdash .nnh-nl-thumb.is-photo i:first-child {
  height: 20px; width: 100%;
  background: repeating-linear-gradient(45deg,#E6DCCB,#E6DCCB 4px,#F2ECDF 4px,#F2ECDF 8px);
}
.nnh-ownerdash .nnh-nl-looknote { margin: 10px 0 0; font-size: 12px; line-height: 1.6; color: #9FAEC4; }

.nnh-ownerdash .nnh-nl-landhead { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }
.nnh-ownerdash .nnh-nl-landhead button {
  border: 0; background: none; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 700; color: #1F6FA8;
}
.nnh-ownerdash .nnh-nl-land { border: 1px solid #EAE2D3; border-radius: 12px; overflow: hidden; }
.nnh-ownerdash .nnh-nl-land[hidden] { display: none; }
.nnh-ownerdash .nnh-nl-inboxrow { display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; background: #FFFFFF; }
.nnh-ownerdash .nnh-nl-mark {
  display: grid; place-items: center; flex: 0 0 34px; width: 34px; height: 34px;
  border-radius: 50%; background: #22334A; color: #F5A93B; font-size: 12px; font-weight: 800;
}
.nnh-ownerdash .nnh-nl-inboxcopy { flex: 1 1 auto; min-width: 0; }
.nnh-ownerdash .nnh-nl-inboxcopy b { display: block; font-size: 13.5px; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-inboxcopy b + b { font-weight: 800; }
.nnh-ownerdash .nnh-nl-inboxcopy em { display: block; margin-top: 2px; font-style: normal; font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-time { font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-nl-letter { background: #F2ECDF; padding: 22px 26px; }
.nnh-ownerdash .nnh-nl-letter > p { margin: 0; font-size: 13.5px; line-height: 1.7; color: #3B4C64; white-space: pre-wrap; }
.nnh-ownerdash .nnh-nl-sig { display: flex; align-items: center; gap: 10px; margin-top: 18px; padding-top: 14px; border-top: 1px solid #E0D8C8; }
.nnh-ownerdash .nnh-nl-sig b { display: block; font-size: 13px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-sig em { display: block; font-style: normal; font-size: 12px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-unsub { margin: 14px 0 0; font-size: 11.5px; line-height: 1.5; color: #9FAEC4; }

.nnh-ownerdash .nnh-nl-auds { display: flex; flex-direction: column; gap: 10px; }
.nnh-ownerdash .nnh-nl-aud {
  display: flex; align-items: flex-start; gap: 12px; cursor: pointer;
  border: 2px solid #EAE2D3; border-radius: 12px; padding: 14px 16px; background: #FFFFFF;
}
.nnh-ownerdash .nnh-nl-aud.on { border-color: #22334A; background: #FBF8F1; }
.nnh-ownerdash .nnh-nl-aud b { display: block; font-size: 13.5px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-aud b i { font-style: normal; font-weight: 600; color: #1F6FA8; }
.nnh-ownerdash .nnh-nl-aud em { display: block; margin-top: 2px; font-style: normal; font-size: 12.5px; color: #5C6B82; }
.nnh-ownerdash .nnh-nl-audnote { margin: 12px 0 0; font-size: 12px; line-height: 1.6; color: #9FAEC4; }

.nnh-ownerdash .nnh-nl-review { border: 1px solid #EAE2D3; border-radius: 12px; overflow: hidden; }
.nnh-ownerdash .nnh-nl-reviewhead {
  display: block; background: #F2ECDF; padding: 10px 16px;
  font-size: 12.5px; font-weight: 700; color: #5C6B82;
}
.nnh-ownerdash .nnh-nl-reviewbody { padding: 18px 20px; background: #FFFFFF; }
.nnh-ownerdash .nnh-nl-reviewbody b { display: block; font-size: 15px; font-weight: 800; color: #1C2B40; }
.nnh-ownerdash .nnh-nl-reviewbody em { display: block; margin-top: 2px; font-style: normal; font-size: 12.5px; color: #9FAEC4; }
.nnh-ownerdash .nnh-nl-reviewbody p { margin: 14px 0 0; font-size: 13.5px; line-height: 1.7; color: #3B4C64; white-space: pre-wrap; }
.nnh-ownerdash .nnh-nl-nav { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 22px; }
.nnh-ownerdash .nnh-nl-reviewnote { font-size: 12.5px; color: #5C6B82; }

/* The state chip sits beside the subject, not on a line of its own — an
   earlier rule was giving spans inside these rows block display. */
.nnh-ownerdash .nnh-nl-copy strong { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.nnh-ownerdash .nnh-nl-copy strong .odmkt-chip { display: inline-block; margin-left: 0; flex: 0 0 auto; }

/* --------------------------------------------------------------------------
   v0.60.0 — Email series: many named programs, each with its own trigger.
   -------------------------------------------------------------------------- */
.nnh-ownerdash .nnh-ds-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 22px; margin-top: 20px; }
.nnh-ownerdash .nnh-ds-grid .field { margin: 0; }
.nnh-ownerdash .nnh-ds-grid .field input[type="text"],
.nnh-ownerdash .nnh-ds-grid .field select,
.nnh-ownerdash .nnh-ds-grid .field textarea { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-ds-ok { display: block; margin-top: 8px; font-size: 12.5px; line-height: 1.6; color: #3E7A34; }
.nnh-ownerdash .nnh-ds-silent {
  background: #E9F2F8; border-radius: 10px; padding: 12px 14px; margin-top: 10px;
}
.nnh-ownerdash .nnh-ds-silent[hidden] { display: none; }
.nnh-ownerdash .nnh-ds-silent p { margin: 0; font-size: 13px; color: #3B4C64; }
.nnh-ownerdash .nnh-ds-silent select { width: auto; margin-left: 4px; }
.nnh-ownerdash .nnh-ds-insight { margin-top: 10px !important; font-size: 12.5px; line-height: 1.6; }
.nnh-ownerdash .nnh-ds-insight b { color: #1F6FA8; }
.nnh-ownerdash .nnh-ds-insight.is-none { color: #9FAEC4; }

.nnh-ownerdash .nnh-ds-emailshead { margin: 28px 0 12px; padding-top: 20px; border-top: 1px solid #F7F2E7; font-size: 13px; color: #5C6B82; }
.nnh-ownerdash .nnh-ds-emailshead b { color: #22334A; font-weight: 700; }
.nnh-ownerdash .nnh-ds-emailshead em { font-style: normal; }
.nnh-ownerdash .nnh-ds-step { display: flex; align-items: flex-start; gap: 14px; margin-bottom: 14px; }
.nnh-ownerdash .nnh-ds-step[hidden] { display: none; }
.nnh-ownerdash .nnh-ds-day {
  flex: 0 0 74px; display: flex; flex-direction: column; align-items: center; gap: 4px;
  background: #FDF3E0; border-radius: 10px; padding: 8px 6px;
}
.nnh-ownerdash .nnh-ds-day em {
  font-style: normal; font-size: 10px; font-weight: 800; letter-spacing: .06em;
  text-transform: uppercase; color: #B8791E;
}
.nnh-ownerdash .nnh-ds-day input {
  width: 46px; text-align: center; border: 1px solid #F0DDB8; border-radius: 8px;
  background: #FFFFFF; font: inherit; font-size: 14px; font-weight: 800; color: #1C2B40; padding: 3px 0;
}
.nnh-ownerdash .nnh-ds-body {
  flex: 1 1 auto; min-width: 0; background: #FBF8F1; border-radius: 12px; padding: 14px 16px;
}
.nnh-ownerdash .nnh-ds-body input[type="text"],
.nnh-ownerdash .nnh-ds-body textarea { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-ds-body textarea { margin-top: 10px; }
.nnh-ownerdash .nnh-ds-ai { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 10px 0 0; }
.nnh-ownerdash .nnh-ds-ai span { font-size: 12px; color: #9FAEC4; }
.nnh-ownerdash .nnh-ds-x {
  flex: 0 0 auto; border: 0; background: none; cursor: pointer;
  color: #C3BCAF; font-size: 16px; line-height: 1; padding: 6px 2px;
}
.nnh-ownerdash .nnh-ds-x:hover { color: #A65D4E; }
.nnh-ownerdash .nnh-ds-grid2 { margin-top: 26px; padding-top: 22px; border-top: 1px solid #F7F2E7; }
.nnh-ownerdash .nnh-ds-grid2 .nnh-sigcard { margin-top: 10px; }
.nnh-ownerdash .nnh-ds-grid2 .nnh-sigtext { white-space: pre-wrap; font-size: 12.5px; color: #3B4C64; }
.nnh-ownerdash .nnh-ds-sched { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 18px; margin-top: 14px; }
.nnh-ownerdash .nnh-ds-sched .field { margin: 0; }
.nnh-ownerdash .nnh-ds-sched input,
.nnh-ownerdash .nnh-ds-sched select { width: 100%; box-sizing: border-box; }
.nnh-ownerdash .nnh-ds-plan {
  background: #FDF3E0; border: 1px solid #F0DDB8; border-radius: 10px;
  padding: 14px 16px; margin: 20px 0 0; font-size: 13.5px; line-height: 1.65; color: #7A5A1E;
}
.nnh-ownerdash .nnh-ds-plan b { color: #7A5A1E; font-weight: 800; }
@media (max-width: 860px) {
  .nnh-ownerdash .nnh-ds-grid { grid-template-columns: 1fr; }
  .nnh-ownerdash .nnh-ds-sched { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------------
   Newsletter — which photo (v0.61.0)
   The photo header look picks from pictures already on the business's page,
   so this is a small strip of what they have, not a media library.
   --------------------------------------------------------------------------- */
.nnh-nl-photos{margin:12px 0 0}
.nnh-nl-photorow{display:flex;flex-wrap:wrap;gap:10px;margin:6px 0 0}
.nnh-nl-photo{position:relative;display:block;cursor:pointer;border-radius:10px;overflow:hidden;border:2px solid var(--nnh-line,#EAE2D3);line-height:0}
.nnh-nl-photo img{display:block;width:120px;height:80px;object-fit:cover}
.nnh-nl-photo input{position:absolute;opacity:0;pointer-events:none}
.nnh-nl-photo:hover{border-color:var(--nnh-field-border,#D8CFBC)}
.nnh-nl-photo:has(input:checked){border-color:var(--nnh-ink,#22334A)}
.nnh-nl-photo:has(input:focus-visible){outline:2px solid var(--nnh-accent,#E8862E);outline-offset:1px}
/* A look that can't arrive yet reads as unavailable, and says why in its own line. */
.nnh-nl-look.is-soon{opacity:.55;cursor:not-allowed}
.nnh-nl-look.is-soon em{color:var(--nnh-soft,#5C6B82)}

/* ---------------------------------------------------------------------------
   "Send me a test" (v0.62.0)
   Sits under the composer on the newsletter wizard and the email series.
   --------------------------------------------------------------------------- */
.nnh-nl-testrow{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0 0}
.nnh-nl-testrow .nnh-help{margin:0;flex:1 1 260px;min-width:0}
.nnh-test-status{flex:1 1 100%;min-width:0;font-size:12.5px;line-height:1.55}
.nnh-test-status.is-ok{color:var(--nnh-green,#3E7A34)}
.nnh-test-status.is-bad{color:var(--nnh-red,#A65D4E)}

/* ---------------------------------------------------------------------------
   Newsletter — a photo for this send, framed (v0.65.0)
   The band and its two sliders sit inside "How it lands", because the crop the
   owner chooses here is the crop that gets emailed.
   --------------------------------------------------------------------------- */
.nnh-nl-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
	padding:22px 16px;border:2px dashed var(--nnh-field-border,#D8CFBC);border-radius:12px;
	background:var(--nnh-field-bg,#FFFDF8);cursor:pointer;text-align:center}
.nnh-nl-drop:hover,.nnh-nl-drop.over{border-color:var(--nnh-accent,#E8862E);background:#FDF3E0}
.nnh-nl-drop:focus-visible{outline:2px solid var(--nnh-accent,#E8862E);outline-offset:1px}
.nnh-nl-drop b{font-size:13.5px;font-weight:700;color:var(--nnh-ink,#22334A)}
.nnh-nl-drop em{font-size:12px;font-style:normal;color:var(--nnh-soft,#5C6B82)}
.nnh-nl-photos .nnh-brand-caps{display:block;margin:14px 0 0}

/* The framed band. The view is the email's 2.5:1 window; JS sizes the image. */
.nnh-nl-band{margin:0 0 14px}
.nnh-nl-bandview{position:relative;overflow:hidden;border-radius:10px;background:var(--nnh-muted,#F2ECDF)}
.nnh-nl-bandview img{position:absolute;max-width:none;display:block}
.nnh-nl-framerow{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:10px 0 0}
.nnh-nl-framerow label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;
	color:var(--nnh-soft,#5C6B82);white-space:nowrap}
.nnh-nl-framerow input[type=range]{width:130px;accent-color:var(--nnh-accent,#E8862E)}
.nnh-nl-framenote{margin:6px 0 0;font-size:12px;color:var(--nnh-faint,#9FAEC4)}
@media (max-width:720px){.nnh-nl-framerow input[type=range]{width:100%}
	.nnh-nl-framerow label{flex:1 1 100%}}
