/* =============================================================
   NPL AUSTRALIA: SHARED CHROME (see DESIGN.md)
   Tokens, type, nav, footer, buttons, shared sub-page blocks.
   Used by index.html and all sub-pages.
   ============================================================= */

:root{
  --bg:#FFFFFF;
  --bg-2:#F4F4F4;
  --bg-3:#E8E8E8;
  --card:#FFFFFF;
  --card-2:#F4F4F4;
  --card-hi:#EDEDED;
  --ink:#161616;
  --ink-2:#393939;
  --ink-3:#525252;
  --ink-4:#8D8D8D;
  --line:#E0E0E0;
  --line-2:#C6C6C6;
  --inverse:#161616;
  --inverse-2:#262626;
  --inverse-ink:#FFFFFF;
  --inverse-ink-2:#C6C6C6;
  --navy:var(--inverse);      /* legacy alias; no navy in this system */
  --navy-2:var(--inverse-2);
  --accent:#B5401A;
  --accent-rgb:181,64,26;
  --hot:#8F3214;
  --ok:#24A148;
  --warn:#B28600;
  --classification:#525252;
  --structure-filter:none;
  --field:#FFFFFF;
  --field-hover:#F4F4F4;
  --field-hi:#FFFFFF;
  --track-fade:200ms;
  --on-accent:#FFFFFF;
  --font:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light dark;
}
body[data-track="defence"]{--accent:#B5401A;--accent-rgb:181,64,26;--hot:#8F3214}
body[data-track="industry"]{--accent:#1F5F8B;--accent-rgb:31,95,139;--hot:#174A6E}

/* ----- Dark theme: OS preference unless overridden; html[data-theme] set by npl-theme.js.
   The `html… body` selectors outrank the body[data-track] light rules above. ----- */
html[data-theme="dark"], html[data-theme="dark"] body{--bg:#161616;--bg-2:#1F1F1F;--bg-3:#262626;--card:#1F1F1F;--card-2:#262626;--card-hi:#2E2E2E;--ink:#F4F4F4;--ink-2:#DCDCDC;--ink-3:#A8A8A8;--ink-4:#6F6F6F;--line:#393939;--line-2:#4C4C4C;--inverse:#000000;--inverse-2:#0F0F0F;--accent:#E0653A;--accent-rgb:224,101,58;--hot:#F0794E;--ok:#42BE65;--warn:#D2A106;--classification:#A8A8A8;--structure-filter:invert(1);--field:#1F1F1F;--field-hover:#262626;--field-hi:#2E2E2E;--on-accent:#161616;}
html[data-theme="dark"] body[data-track="industry"]{--accent:#5BA3D9;--accent-rgb:91,163,217;--hot:#7DB9E6;}
html[data-theme="light"]{color-scheme:light}
html[data-theme="dark"]{color-scheme:dark}
@media (prefers-color-scheme: dark){
  html:not([data-theme="light"]), html:not([data-theme="light"]) body{--bg:#161616;--bg-2:#1F1F1F;--bg-3:#262626;--card:#1F1F1F;--card-2:#262626;--card-hi:#2E2E2E;--ink:#F4F4F4;--ink-2:#DCDCDC;--ink-3:#A8A8A8;--ink-4:#6F6F6F;--line:#393939;--line-2:#4C4C4C;--inverse:#000000;--inverse-2:#0F0F0F;--accent:#E0653A;--accent-rgb:224,101,58;--hot:#F0794E;--ok:#42BE65;--warn:#D2A106;--classification:#A8A8A8;--structure-filter:invert(1);--field:#1F1F1F;--field-hover:#262626;--field-hi:#2E2E2E;--on-accent:#161616;}
  html:not([data-theme="light"]) body[data-track="industry"]{--accent:#5BA3D9;--accent-rgb:91,163,217;--hot:#7DB9E6;}
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{
  background:var(--bg);color:var(--ink);
  font-family:var(--font);font-size:16px;line-height:1.55;letter-spacing:.16px;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
  transition:background-color var(--track-fade) ease, color var(--track-fade) ease;
}
h1,h2,h3,h4,h5,h6{text-wrap:balance;letter-spacing:0}
p{text-wrap:pretty}
[id]{scroll-margin-top:80px}
::selection{background:var(--accent);color:#fff}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
button,a,input,select,textarea,label{touch-action:manipulation}

body[data-track="industry"] .t-defence{display:none !important}
body[data-track="defence"] .t-industry{display:none !important}

/* Skip link: first focusable element on the page */
.skip-link{
  position:absolute;left:16px;top:-100px;z-index:100;
  background:var(--accent);color:var(--on-accent);padding:12px 16px;font-size:14px;text-decoration:none;
}
.skip-link:focus{top:12px}

/* ---------- Nav ---------- */
header.nav{
  position:fixed;top:0;left:0;right:0;z-index:55;
  background:var(--bg);
  border-bottom:1px solid var(--line);
}
.nav-row{
  max-width:1248px;margin:0 auto;height:64px;
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:32px;
  padding:0 24px;
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}
.brand-mark{display:none}
.brand-text{display:flex;flex-direction:column;line-height:1.25}
.brand-text .t1{font-weight:600;font-size:16px;letter-spacing:0}
.brand-text .t2{font-size:12px;font-weight:400;color:var(--ink-3);letter-spacing:.32px}
.nav-links{display:flex;gap:24px;justify-content:flex-end;align-self:stretch}
.nav-links a{
  color:var(--ink-2);text-decoration:none;
  font-size:14px;font-weight:400;
  position:relative;display:flex;align-items:center;transition:color .15s ease;
}
.nav-links a .idx{display:none}
.nav-links a:hover{color:var(--ink)}
.nav-links a.active{color:var(--ink)}
.nav-links a.active::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent);
}
.nav-links a:focus-visible{outline-offset:-2px}

/* ---------- Nav dropdowns (Company / Capabilities / Partners) ---------- */
.nav-item{position:relative;display:flex;align-items:stretch}
.nav-trigger{
  background:transparent;border:0;padding:0;cursor:pointer;position:relative;
  display:flex;align-items:center;gap:6px;color:var(--ink-2);font:400 14px/1 var(--font);transition:color .15s ease;
}
.nav-trigger .chev{transition:transform .15s ease}
.nav-trigger[aria-expanded="true"] .chev{transform:rotate(180deg)}
.nav-trigger:hover, .nav-trigger[aria-expanded="true"], .nav-item:has(a.active, a[aria-current="page"]) > .nav-trigger{color:var(--ink)}
.nav-item:has(a.active, a[aria-current="page"]) > .nav-trigger::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--accent);
}
.nav-trigger:focus-visible{outline-offset:-2px}
.nav-menu{
  display:none;position:absolute;top:100%;left:-16px;min-width:240px;padding:8px 0;
  background:var(--bg);border:1px solid var(--line);
}
.nav-item:hover > .nav-menu, .nav-trigger[aria-expanded="true"] + .nav-menu{display:block}
.nav-links .nav-menu a{display:flex;gap:6px;padding:10px 16px;font-size:14px;font-weight:400;color:var(--ink-2)}
.nav-links .nav-menu a:hover{background:var(--bg-2);color:var(--ink)}
.nav-links .nav-menu a[aria-current="page"], .nav-links .nav-menu a.active{color:var(--ink)}
.nav-links .nav-menu a.active::after{display:none}
.nav-links .nav-menu a:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}

/* ---------- Division switcher (two square buttons) ---------- */
.div-switcher{display:inline-flex;align-items:stretch;border:1px solid var(--line-2)}
.div-switcher button{
  background:transparent;border:none;color:var(--ink-2);cursor:pointer;
  padding:0 14px;height:36px;font:400 14px/1 var(--font);letter-spacing:.16px;
  transition:color .15s ease, background-color .15s ease;
}
.div-switcher button + button, .div-switcher .sep + button{border-left:1px solid var(--line-2)}
.div-switcher button.is-active{color:var(--bg);background:var(--ink)}
.div-switcher button:hover:not(.is-active){color:var(--ink);background:var(--bg-2)}
.div-switcher .sep{display:none}

/* ---------- Mobile menu (index.html adds .nav-toggle; pages without it keep wrapping links) ---------- */
.nav-toggle{
  display:none;background:transparent;border:1px solid var(--line-2);
  width:44px;height:44px;color:var(--ink);cursor:pointer;align-items:center;justify-content:center;
}
.nav-toggle svg{display:block}
@media (max-width:900px){
  .nav-row{grid-template-columns:1fr auto auto;gap:12px}
  .nav-toggle{display:inline-flex}
  header.nav:has(.nav-toggle) .nav-links{display:none}
  header.nav.is-open .nav-links{
    display:flex;flex-direction:column;gap:0;position:absolute;top:64px;left:0;right:0;
    background:var(--bg);border-bottom:1px solid var(--line);padding:8px 24px 16px;
  }
  header.nav.is-open .nav-links a{min-height:44px;border-bottom:1px solid var(--line)}
  header.nav.is-open .nav-links a.active::after{display:none}
  header.nav.is-open .nav-links{overflow-y:auto;max-height:calc(100vh - 64px)}
  header.nav.is-open .nav-item{flex-direction:column;align-items:stretch}
  header.nav.is-open .nav-trigger{pointer-events:none;color:var(--ink-3);padding:16px 0 4px;min-height:0}
  header.nav.is-open .nav-trigger .chev, header.nav.is-open .nav-trigger::after{display:none}
  header.nav.is-open .nav-menu{display:block;position:static;border:0;padding:0;min-width:0}
  header.nav.is-open .nav-links .nav-menu a{padding:0}
  header.nav:not(:has(.nav-toggle)) .nav-row{display:flex;flex-wrap:wrap;height:auto;padding:12px 24px;row-gap:8px}
  header.nav:not(:has(.nav-toggle)) .nav-links{flex-wrap:wrap;gap:14px;justify-content:flex-start;order:3;width:100%}
}
@media (max-width:520px){
  .nav-row{padding:0 16px}
  .brand-text .t2{display:none}
  .div-switcher button{padding:0 10px;height:44px}
}

/* ---------- Buttons (Carbon: square, 48px, arrow pinned right) ---------- */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;
  height:48px;padding:0 64px 0 16px;border:1px solid var(--ink);border-radius:0;
  color:var(--ink);background:transparent;
  font:400 14px/1.29 var(--font);letter-spacing:.16px;
  text-decoration:none;cursor:pointer;white-space:nowrap;
  transition:background-color .15s ease, color .15s ease, border-color .15s ease;
}
.btn::after{content:"→";position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:16px}
.btn:hover{background:var(--ink);color:var(--bg)}
.btn.primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}
.btn.primary:hover{background:var(--hot);border-color:var(--hot);color:var(--on-accent)}
.btn.ghost{border-color:var(--ink);color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:var(--bg)}
.btn:disabled{opacity:.6;cursor:progress}
.btn .arr{display:none}
.btn.sm{height:40px;padding:0 48px 0 12px;font-size:14px}
.btn.sm::after{right:12px}
/* External-link buttons show the icon instead of the arrow */
.btn:has(.ext){padding-right:16px}
.btn:has(.ext)::after{content:none}
.btn .ext{width:12px;height:12px;flex:none;margin-left:8px}

/* ---------- Footer (inverse canvas) ---------- */
footer.foot{
  margin-top:96px;padding:64px 24px 24px;background:var(--inverse);color:var(--inverse-ink-2);
  position:relative;z-index:3;
}
footer.foot .brand{color:var(--inverse-ink)}
footer.foot .brand-text .t2{color:var(--inverse-ink-2)}
.foot-in{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
.foot p, .foot .muted{color:var(--inverse-ink-2) !important;font-family:var(--font) !important;font-size:14px !important;line-height:1.5 !important}
.foot h5{font-size:14px;font-weight:600;letter-spacing:.16px;color:var(--inverse-ink);margin-bottom:12px}
.foot a{display:block;color:var(--inverse-ink-2);text-decoration:none;font-size:14px;padding:6px 0;transition:color .15s ease}
.foot a:hover{color:#fff;text-decoration:underline}
.foot a:focus-visible{outline-color:#fff}
.foot .brand{display:flex}
.foot-legal{
  max-width:1200px;margin:48px auto 0;padding-top:20px;border-top:1px solid #393939;
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px;
  font-size:12px;letter-spacing:.32px;color:var(--inverse-ink-2);
}
.foot-legal a{display:inline;padding:0;font-size:12px}
.foot-legal nav{display:flex;gap:20px;flex-wrap:wrap}
@media (max-width:720px){
  .foot-in{grid-template-columns:1fr}
  footer.foot{margin-top:64px;padding:48px 16px 20px}
}

/* ---------- Utility ---------- */
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:0}
.muted{color:var(--ink-3)}
.hair{height:1px;background:var(--line);width:100%}
.overline{display:block;font-size:14px;font-weight:400;letter-spacing:.16px;color:var(--ink-3)}

/* ---------- Sub-page shared ---------- */
.page{padding-top:64px;min-height:100vh;position:relative}
.page-wrap{max-width:1248px;margin:0 auto;padding:48px 24px 24px}
@media (max-width:720px){.page-wrap{padding:32px 16px}}

/* Crumb / page header */
.crumb{
  font-size:14px;color:var(--ink-3);margin-bottom:18px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
}
.crumb a{color:var(--ink-3);text-decoration:none;transition:color .15s ease}
.crumb a:hover{color:var(--accent);text-decoration:underline}
.crumb .sep{color:var(--ink-4)}

.page-head{
  display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:32px;row-gap:12px;
  border-top:1px solid var(--line);padding:32px 0 48px;align-items:baseline;
}
.page-head > *{grid-column:5 / -1}
.page-head .ph-id{
  grid-column:1 / 5;grid-row:1 / span 3;
  font-size:14px;font-weight:400;letter-spacing:.16px;color:var(--ink-3);
  display:flex;flex-direction:column;gap:6px;
}
.page-head .ph-id .tag{color:var(--accent)}
.page-head .ph-title{
  font-weight:300;letter-spacing:-.4px;font-size:48px;line-height:1.17;
}
.page-head .ph-sub{
  font-size:18px;color:var(--ink-2);line-height:1.5;margin-top:8px;max-width:65ch;
}
@media (max-width:900px){
  .page-head{grid-template-columns:1fr}
  .page-head > *, .page-head .ph-id{grid-column:1;grid-row:auto}
  .page-head .ph-title{font-size:34px}
}

/* Generic prose blocks */
.prose{font-size:16px;line-height:1.55;color:var(--ink-2);max-width:65ch}
.prose h2{
  font-weight:400;font-size:28px;line-height:1.25;color:var(--ink);margin:40px 0 12px;
  padding-top:24px;border-top:1px solid var(--line);
}
.prose h2:first-child{padding-top:0;border-top:none;margin-top:0}
.prose h3{font-weight:400;font-size:22px;line-height:1.35;color:var(--ink);margin:24px 0 8px}
.prose p{margin-bottom:14px}
.prose ul, .prose ol{margin:6px 0 16px 22px}
.prose li{margin-bottom:6px}
.prose a{color:var(--accent);text-decoration:none}
.prose a:hover{text-decoration:underline}
.prose strong{color:var(--ink);font-weight:600}
.prose code{
  font-family:var(--mono);font-size:14px;
  background:var(--bg-2);padding:1px 6px;border:1px solid var(--line);
}

/* Tiles used on sub-pages */
.card{background:var(--card);border:1px solid var(--line);border-radius:0;padding:24px}
.card.alt{background:var(--card-2)}
.card.dark{background:var(--inverse);color:var(--inverse-ink);border-color:var(--inverse)}
.card.dark p{color:var(--inverse-ink-2)}

/* Spec list */
.spec-list{
  display:grid;grid-template-columns:1fr 1fr;gap:0;
  border-top:1px solid var(--line);background:transparent;
}
.spec-list .row{
  display:grid;grid-template-columns:1fr auto;gap:16px;
  padding:12px 0;border-bottom:1px solid var(--line);font-size:14px;
}
.spec-list .row:nth-child(odd){padding-right:24px}
.spec-list .row:nth-child(even){padding-left:24px}
.spec-list .row .k{color:var(--ink-3);font-size:14px;align-self:center}
.spec-list .row .v{color:var(--ink);text-align:right;font-family:var(--mono);font-size:14px;font-variant-numeric:tabular-nums}
@media (max-width:720px){
  .spec-list{grid-template-columns:1fr}
  .spec-list .row{padding-left:0 !important;padding-right:0 !important}
}

/* Document banner (legal pages) */
.doc-banner{
  display:flex;flex-wrap:wrap;justify-content:space-between;gap:14px;
  padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  font-size:14px;color:var(--ink-3);margin-bottom:24px;
}
.doc-banner b{color:var(--ink);font-weight:600}

/* ================================================================
   PRODUCT CARD: shared template for defence + industry catalogues.
   Image lives INSIDE prod-card-body. On hover, the structure SVG
   cross-fades to the product photo if present (probed by JS).
   Defence catalogue hides the Order CTA until auth lands.
   ================================================================ */

.prod-card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media (max-width:900px){.prod-card-grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.prod-card-grid{grid-template-columns:1fr}}

.prod-card{
  position:relative;display:flex;flex-direction:column;
  background:var(--card);border:1px solid var(--line);border-radius:0;
  transition:background-color .15s ease;
}
.prod-card:hover{background:var(--card-2)}
.prod-card-track{display:none}

.prod-card-body{padding:24px 24px 16px;display:flex;flex-direction:column;gap:8px;flex:1}
.prod-card-top{
  display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;
  font-size:12px;letter-spacing:.32px;color:var(--ink-3);
}
.prod-card-top .stat{padding:4px 8px;border:1px solid var(--line-2);color:var(--ink-2)}
.prod-card-top .stat.s-anchor{border-color:var(--accent);color:var(--accent)}
.prod-card-top .stat.s-roadmap{color:var(--ink-3)}
.prod-card-top .stat.s-low{border-color:var(--warn);color:var(--warn)}
.prod-card-top .stat.s-mt{color:var(--ink-4)}

.prod-card-img{
  position:relative;height:160px;
  background:transparent;border:none;
  margin:4px 0 2px;overflow:hidden;
}
.prod-card-img > a{display:block;position:absolute;inset:0}
.prod-card-img img{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;padding:16px;
  transition:opacity .2s ease;
}
.prod-card-img img.photo{opacity:0;object-fit:cover;padding:0}
.prod-card-img img.structure{filter:var(--structure-filter,none)}
.prod-card.has-photo:hover .prod-card-img img.structure{opacity:0}
.prod-card.has-photo:hover .prod-card-img img.photo{opacity:1}

.prod-card-name{font-weight:400;font-size:20px;line-height:1.35;margin-top:2px}
.prod-card-name a{color:inherit;text-decoration:none;transition:color .15s ease}
.prod-card-name a:hover{color:var(--accent)}

.prod-card-formula{font-family:var(--mono);font-size:14px;color:var(--ink-3)}

.prod-card-actions{display:flex;gap:8px;padding:16px 24px 24px;border-top:1px solid var(--line)}
.prod-card-actions .btn{flex:1;height:40px;padding:0 40px 0 12px;font-size:14px}
.prod-card-actions .btn::after{right:12px}

body[data-track="defence"] .prod-card-actions .btn-order{display:none}


/* ================================================================
   PAGE CTA BAR: full-width gray row with action buttons.
   ================================================================ */
.cta-bar{
  margin-top:48px;
  display:grid;grid-template-columns:1fr auto;align-items:center;gap:32px;
  padding:48px 32px;background:var(--bg-2);color:var(--ink);
}
.cta-bar h3{font-weight:400;font-size:28px;line-height:1.25;color:var(--ink)}
.cta-bar p{color:var(--ink-2);margin-top:8px;font-size:16px;max-width:65ch}
.cta-bar .actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:flex-end}
@media (max-width:720px){
  .cta-bar{grid-template-columns:1fr;padding:32px 16px}
  .cta-bar .actions{justify-content:flex-start}
}

/* ================================================================
   TRACK-LINK STRIP: cross-sell pointing at the other catalogue.
   ================================================================ */
.track-link{
  display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:20px 0;margin-top:24px;
  font-size:14px;color:var(--ink-3);
}
.track-link b{color:var(--ink);font-weight:600}
.track-link a{color:var(--accent);text-decoration:none}
.track-link a:hover{text-decoration:underline}

/* Partner portal workspace (index #partners + pages/portal) */
.portal-workspace{border:1px solid var(--line);background:var(--card);padding:32px}
.portal-doc-list{list-style:none;margin:16px 0 0;padding:0}
.portal-doc-list li{
  display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  padding:16px 0;border-bottom:1px solid var(--line);
}
.portal-doc-list a{color:var(--accent);text-decoration:none}
.portal-doc-list a:hover{text-decoration:underline}
.portal-doc-track{font-size:12px;letter-spacing:.32px;color:var(--ink-3)}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{transition-duration:0s !important;animation-duration:0s !important;scroll-behavior:auto !important}
}
