/* =====================================================================
   rs-nav.css — global "All solutions" dual-column dropdown (2026-08-08)
   Owner directive: "I NEED ALL MENUS ACROSS EVERYWHERE TO BE ORGANIZED
   WITH DUAL-VERTICAL-DROPDOWNS (ALPHABETICALLY LISTED)". One shared menu,
   injected by rs-nav.js on every public terminal. Items flow A→Z down the
   FIRST column, then continue down the second (CSS columns, not grid, so
   the alphabetical run is vertical — the natural reading order).
   ===================================================================== */
.rsn-drop{position:relative;display:inline-flex;align-self:center;margin-left:auto}
.rsn-btn{font:700 12px/1 Inter,system-ui;letter-spacing:.02em;color:#0b3268;background:#eef3fa;
  border:1px solid #c9d7ea;border-radius:8px;padding:7px 12px;cursor:pointer;display:inline-flex;
  align-items:center;gap:7px;white-space:nowrap}
.rsn-btn:hover{background:#e1ebf8}
.rsn-btn .caret{font-size:11px;transition:transform .15s ease}
.rsn-btn[aria-expanded="true"] .caret{transform:rotate(180deg)}
.rsn-panel{position:fixed;z-index:990;width:min(660px,92vw);
  background:#fff;border:1px solid #d5dde8;border-radius:14px;padding:14px 16px;
  box-shadow:0 18px 50px rgba(16,24,40,.18),0 4px 12px rgba(16,24,40,.08);
  column-count:2;column-gap:22px}
.rsn-panel[hidden]{display:none}
.rsn-item{display:flex;gap:10px;align-items:flex-start;padding:9px 10px;border-radius:9px;
  text-decoration:none;break-inside:avoid;-webkit-column-break-inside:avoid}
.rsn-item:hover{background:#f1f5fb}
.rsn-ico{flex:0 0 auto;width:30px;height:30px;border-radius:8px;background:#eef3fa;border:1px solid #dde6f2;
  display:flex;align-items:center;justify-content:center;font-size:15px}
.rsn-item .t{font:700 13px/1.3 Inter,system-ui;color:#101828;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rsn-item .d{font:500 11.5px/1.45 Inter,system-ui;color:#5f7086;margin-top:2px}
.rsn-bd{font:800 11px/1 ui-monospace,monospace;letter-spacing:.08em;padding:3px 6px;border-radius:4px}
/* Wave 2b: one status vocabulary — Available / Pilot / Planned / Not configured */
.rsn-bd-avail{color:#fff;background:#0f7b45}
.rsn-bd-pilot{color:#82500a;background:#f3e4c8;border:1px solid #e8d5ae}
.rsn-bd-plan{color:#5b5f6b;background:#e9ebf0;border:1px solid #d4d8e0}
.rsn-bd-notconf{color:#5b5f6b;background:transparent;border:1px dashed #c4c9d2}
/* 2026-08-16: "More ▾" strip dropdown — the overflow home for secondary
   sections (Source Status, Compliance Register, Disclaimers). Same
   body-portalled fixed panel as .rsn-panel so the strip can't clip it. */
.rsn-more{display:inline-flex;align-items:center;align-self:stretch}
.rsn-more-btn{font:600 12px/1 Inter,system-ui;color:var(--ft-text-muted,#5b6b7d);background:transparent;
  border:0;padding:0 9px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;height:100%}
.rsn-more-btn:hover{color:var(--ft-text,#17222e)}
.rsn-more-btn.active{color:var(--ft-text,#17222e);font-weight:700}
.rsn-more-btn .caret{font-size:11px;transition:transform .15s ease}
.rsn-more-btn[aria-expanded="true"] .caret{transform:rotate(180deg)}
.rsn-more-panel{position:fixed;z-index:990;min-width:200px;background:#fff;border:1px solid #d5dde8;
  border-radius:10px;padding:6px;box-shadow:0 14px 40px rgba(16,24,40,.16),0 3px 10px rgba(16,24,40,.07);
  display:flex;flex-direction:column}
.rsn-more-panel[hidden]{display:none}
.rsn-more-panel a{font:600 12.5px/1 Inter,system-ui;color:#17222e;text-decoration:none;padding:9px 11px;border-radius:7px;white-space:nowrap}
.rsn-more-panel a:hover{background:#f1f5fb}
.rsn-more-panel a.active{color:#10407f;font-weight:700}
/* Floating variant for pages without a .dp-nav strip (the demo terminals) */
.rsn-floating{position:fixed;top:12px;right:14px;z-index:950}
/* gv14 D8 round-3: with a bounded max-height, a multicol box spills extra
   columns sideways off-viewport. On phones the panel must be a plain block
   that scrolls vertically. */
@media (max-width:720px){.rsn-panel{column-count:auto;column-width:auto}}
/* v13 (2026-08-09, owner directive — UX audit problem #1): quick-links row at
   the top of the panel — one click to the core site from any page. Spans both
   columns of the dropdown. */
.rsn-quick{column-span:all;display:flex;flex-wrap:wrap;gap:6px;padding:2px 4px 10px;margin-bottom:8px;border-bottom:1px solid #e4e9f1}
.rsn-q{font:600 12px/1 Inter,system-ui;color:#10407f;text-decoration:none;border:1px solid #d7dfeb;border-radius:999px;padding:6px 10px;white-space:nowrap}
.rsn-q:hover{background:#f1f5fb}

/* =====================================================================
   v15 (2026-08-10, owner directive / U1): the shared shell strip.
   One generated <nav class="rsn-shell"> on every public page replaces the
   per-page hardcoded .dp-nav variants. Self-contained: uses --ft-* vars
   when the page defines them, with hard fallbacks so demo terminals and
   standalone pages render identically. pha-shared.css is untouched.
   ===================================================================== */
/* D-04 (2026-09-12 defect audit): the utility strip visually competes with the
   branded navy banner beneath it and reads to first-time visitors as a broken
   fallback header. Stronger surface tone + a hairline shadow separate the two
   nav layers cleanly; the RR chip becomes a smaller monospace tag ('utility
   marker' visual weight) so it stops competing with the real brand lockup. */
:root{--rsn-h:32px}
@media (max-width:720px){:root{--rsn-h:44px}}
/* --rsn-h is the one place the shell height is stated. Anything that must sit
   beneath the shell when stuck (e.g. a page's own sticky header) offsets by it,
   so the two can never overlap or drift apart. */
.rsn-shell{position:sticky;top:0;z-index:39;display:flex;align-items:stretch;gap:2px;height:var(--rsn-h);padding:0 12px;
  background:linear-gradient(180deg, #eef2f8 0%, #e7ecf3 100%);border-bottom:1px solid var(--ft-hairline,#c9d1de);
  box-shadow:0 1px 0 rgba(23,34,46,.04);overflow-x:auto;overflow-y:hidden;
  font-family:Inter,system-ui,sans-serif;scrollbar-width:none}
.rsn-shell::-webkit-scrollbar{display:none}
/* D-05 (2026-09-11 defect audit): brand link now inlines the RentSpire SVG mark
   + text so every internal page carries the brand, not just the naked 'RR' chip. */
.rsn-brand{display:inline-flex;align-items:center;gap:5px;align-self:center;margin-right:10px;padding:2px 6px;
  border-radius:4px;
  font-family:var(--font-body,Inter,system-ui);font-size:12px;letter-spacing:.01em;font-weight:700;
  color:var(--ft-blue,#10407f);background:transparent;
  text-decoration:none;white-space:nowrap}
.rsn-brand:hover{background:rgba(16, 64, 127,.06)}
.rsn-brand-mark{width:16px;height:16px;flex:0 0 16px;color:var(--ft-blue,#10407f)}
.rsn-brand-txt{color:var(--ft-text,#17222e);letter-spacing:.005em}
/* .rsn-demo-tag removed 2026-09-06 (gap G-20) — the "Public Demo" chip is gone
   from module/compliance/estimate/data; see rs-nav.js v18 note. */
.rsn-shell>a:not(.rsn-brand){display:inline-flex;align-items:center;gap:6px;padding:0 9px;white-space:nowrap;
  font-size:13px;font-weight:500;color:var(--ft-text-muted,#5b6b7d);text-decoration:none;position:relative}
.rsn-shell>a:not(.rsn-brand):hover{color:var(--ft-text,#17222e)}
.rsn-shell>a.active{color:var(--ft-text,#17222e);font-weight:700}
.rsn-shell>a.active::after{content:"";position:absolute;left:7px;right:7px;bottom:0;height:2px;background:var(--ft-blue,#10407f)}
.rsn-spacer{flex:1 0 8px}
.rsn-shell .rsn-slot{display:inline-flex;align-items:center}
.rsn-shell .rsn-drop{align-self:center}
.rsn-shell .rsn-sales{font-weight:600;color:var(--ft-text-muted,#5b6b7d)}
.rsn-shell .rsn-signin{font-weight:700;color:var(--ft-blue,#10407f)}
.rsn-shell .rsn-signin:hover{text-decoration:underline}
/* Workspace navigation is never public: JS hides the shell when #workspace is
   visible; this CSS rule is the no-JS/fast-path double lock. */
body:has(#workspace:not(.hidden)) .rsn-shell{display:none}
/* v16 mobile (2026-08-15, manager defect 8): on phones the shell collapses to
   brand + All-solutions menu + Sign in. Every hidden page link remains one
   tap away inside the dropdown's quick-links row — a deliberate
   collapse-to-menu pattern instead of clipped horizontal links. */
@media (max-width:720px){
  .rsn-shell>a:not(.rsn-brand):not(.rsn-sales):not(.rsn-signin){display:none}
  .rsn-shell{gap:0;padding:0 8px}
  /* G-112 (2026-09-19 pre-launch audit): the 32px strip left every control at
     21-32px, under the 44px touch-target guideline. On phones the strip grows
     to 44px and its three surviving controls (brand, All Solutions / More,
     Sign In) stretch to fill it. Nothing else keys off the strip height --
     verified: no sticky offset or scroll-padding references 32px. */
  .rsn-shell{height:var(--rsn-h)}
  .rsn-brand{align-self:stretch;padding:0 6px}
  .rsn-shell .rsn-drop,.rsn-shell .rsn-slot{align-self:stretch;display:inline-flex;align-items:center}
  .rsn-shell .rsn-drop>button{min-height:44px}
}
@media (max-width:480px){
  .rsn-shell>a.rsn-sales:not(.rsn-brand){display:none}
}
/* gv14 D8: the portalled panel scrolls internally when taller than the viewport */
.rsn-panel-fixed{overflow-y:auto;overscroll-behavior:contain}

/* v16 (2026-08-15, owner directive): dropdown icons now mirror the gate
   cards (rs-icons.js). Size the inline SVG inside the 30px chip. */
.rsn-ico svg{width:17px;height:17px;color:#10407f}

/* v17 (2026-08-16, owner-approved gate audit rec 1): the shell NO LONGER
   mounts on the gate (rs-nav.js early-returns there — the navy header owns
   all gate navigation). The v16 rules that stacked the shell above the
   gate header and pushed the sticky bar down 32px are retired: with no
   shell present, that offset painted a 32px ghost strip above the header
   and slid the header over the top of the v17 proof band (caught in live
   verify). Sub-pages never matched these selectors and are unaffected. */

/* v16 (2026-08-15): shared sitemap footer (.gvft) — used inline on the
   gate and injected by rs-nav.js on every allowlisted public page, so the
   whole site closes on the same blue-graph band and no page is orphaned. */
.gvft{position:relative;margin-top:34px;background:linear-gradient(180deg,#0d2340,#081729);color:#c8d6ea;overflow:hidden}
.gvft::before{content:"";position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(rgba(122,162,214,.08) 1px,transparent 1px),
    linear-gradient(90deg,rgba(122,162,214,.08) 1px,transparent 1px);
  background-size:48px 48px}
.gvft-inner{position:relative;width:min(100% - 48px,1240px);margin:0 auto;padding:46px 0 26px}
/* v16.2 alignment contract: every column (brand included) starts on the same
   22px header row, so the brand name and the four column headers share one
   baseline; link lists start on a second shared baseline 34px below it. */
.gvft-cols{display:grid;grid-template-columns:1.7fr 1fr 1fr 1fr 1fr;column-gap:40px;row-gap:30px;align-items:start}
.gvft-brand .gvft-logo{display:flex;align-items:center;gap:9px;height:22px;color:#fff;font:700 14px/1.2 var(--pha-font-body,Inter,system-ui);letter-spacing:.02em;margin:0 0 12px}
.gvft-logo svg{width:20px;height:20px;color:#7fb2ff;flex:0 0 auto}
.gvft-brand p{font:500 13px/1.65 var(--pha-font-body,Inter,system-ui);color:#9fb4d2;margin:0 0 12px;max-width:34ch}
.gvft-cta{display:inline-block;font:700 13px/1.4 var(--pha-font-body,Inter,system-ui);color:#dcebff;
  text-decoration:underline;text-underline-offset:3px;padding:0}
.gvft-cta:hover{color:#fff}
/* G-11: secondary "or email us" fallback under the primary /contact CTA --
   deliberately smaller/quieter than .gvft-cta so the form reads as the
   first choice, not a tie. */
.gvft-cta-alt{display:block;margin-top:6px;font:500 12px/1.4 var(--pha-font-body,Inter,system-ui);color:#8fa2b8;
  text-decoration:underline;text-underline-offset:3px;padding:0}
.gvft-cta-alt:hover{color:#c8d6ea}
.gvft-col h4{display:flex;align-items:center;height:22px;font:700 12px/1.2 var(--pha-font-body,Inter,system-ui);letter-spacing:.03em;text-transform:none;color:#8fb3e0;margin:0 0 12px}
.gvft-col a{display:block;font:600 13px/1.5 var(--pha-font-body,Inter,system-ui);color:#c8d6ea;text-decoration:none;padding:4px 0}
.gvft-col a:hover,.gvft-col a:focus-visible{color:#fff;text-decoration:underline}
.gvft-base{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-top:34px;padding-top:16px;
  border-top:1px solid rgba(127,163,212,.22);font:500 11.5px/1.6 var(--pha-font-body,Inter,system-ui);color:#8ba2c4}
.gvft-base a{color:#aecbf2}
@media (max-width:1000px){.gvft-cols{grid-template-columns:1fr 1fr}.gvft-brand{grid-column:1/-1}}
@media (max-width:560px){.gvft-cols{grid-template-columns:1fr}.gvft-inner{width:min(100% - 32px,1240px)}}


/* v16.3: the fixed live-signal ticker (35px) must never clip the footer's
   last line — give the sitemap footer bottom clearance wherever a ticker
   is present on the page. */
body:has(.ps-ticker) .gvft{padding-bottom:56px}

/* v16.3: demo stations — pin the sitemap footer to the bottom of short
   pages so there is never a blank void between content and footer. */
html.rsn-fillfoot, html.rsn-fillfoot body{min-height:100%}
html.rsn-fillfoot body{min-height:100vh;display:flex;flex-direction:column}
html.rsn-fillfoot body>footer.gvft{margin-top:auto}
