/* ============================================================
   Phycube — Website stylesheet
   Self-contained: brand tokens (from the official Phycube Design
   System) + base elements + marketing-site components.
   Palette: Black #000000 · Paper #FAF9F7 · Bronze #CE8946.
   Type: Poppins (UI/body + headlines) · Archivo (wordmark only).
   ============================================================ */

/* ---- Fonts (self-hosted, OFL) ---------------------------- */
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-Light.ttf") format("truetype"); font-weight:300; font-style:normal; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-Regular.ttf") format("truetype"); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-Italic.ttf") format("truetype"); font-weight:400; font-style:italic; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-Medium.ttf") format("truetype"); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-SemiBold.ttf") format("truetype"); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-Bold.ttf") format("truetype"); font-weight:700; font-style:normal; font-display:swap; }
@font-face { font-family:"Poppins"; src:url("../assets/fonts/Poppins-ExtraBold.ttf") format("truetype"); font-weight:800; font-style:normal; font-display:swap; }
@font-face { font-family:"Archivo"; src:url("../assets/fonts/Archivo-SemiBold.ttf") format("truetype"); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:"Archivo"; src:url("../assets/fonts/Archivo-Bold.ttf") format("truetype"); font-weight:700; font-style:normal; font-display:swap; }

:root {
  /* Brand core */
  --phy-ink:#000000; --phy-ink-800:#141414; --phy-ink-700:#1f1f1f; --phy-ink-600:#2c2c2c;
  --phy-white:#ffffff; --phy-paper:#faf9f7; --phy-paper-200:#f1efea;
  /* Bronze — the only chromatic accent */
  --phy-bronze-700:#9c5f2c; --phy-bronze-600:#b87436; --phy-bronze:#ce8946;
  --phy-bronze-400:#dca066; --phy-bronze-200:#eccca6; --phy-bronze-100:#f6e7d6;
  /* Warm neutral grayscale */
  --phy-gray-900:#1a1b1b; --phy-gray-800:#2e3030; --phy-gray-700:#494b4b; --phy-gray-600:#6b6d6c;
  --phy-gray-500:#8a8c8a; --phy-gray-400:#adafab; --phy-gray-300:#cfd0cc; --phy-gray-200:#e4e4e0; --phy-gray-100:#efefec;
  /* Functional (muted) */
  --phy-success:#4f8a4a; --phy-warning:#d6a93a; --phy-danger:#c0573f; --phy-info:#4a7d8a;
  /* Semantic surfaces */
  --surface-page:var(--phy-paper); --surface-card:var(--phy-white); --surface-panel:var(--phy-paper-200);
  --surface-inverse:var(--phy-ink); --surface-inverse-2:var(--phy-ink-800);
  --surface-accent:var(--phy-bronze); --surface-accent-soft:var(--phy-bronze-100);
  /* Text */
  --text-strong:var(--phy-gray-900); --text-body:var(--phy-gray-800); --text-muted:var(--phy-gray-600);
  --text-faint:var(--phy-gray-500); --text-on-dark:var(--phy-white); --text-on-dark-muted:#b9bbb8;
  --text-on-accent:var(--phy-ink); --text-accent:var(--phy-bronze);
  /* Borders */
  --border-subtle:var(--phy-gray-200); --border-default:var(--phy-gray-300); --border-strong:var(--phy-gray-400);
  --border-on-dark:var(--phy-ink-600); --border-accent:var(--phy-bronze);
  /* Families */
  --font-display:"Poppins","Helvetica Neue",Arial,sans-serif;
  --font-body:"Poppins","Helvetica Neue",Arial,sans-serif;
  --font-wordmark:"Archivo","Helvetica Neue",Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
  /* Radii / shadows / motion */
  --radius-xs:4px; --radius-sm:6px; --radius-md:10px; --radius-lg:16px; --radius-xl:24px; --radius-pill:999px;
  --shadow-sm:0 2px 6px rgba(14,15,15,.08); --shadow-md:0 8px 20px rgba(14,15,15,.10);
  --shadow-lg:0 18px 40px rgba(14,15,15,.14); --shadow-card:0 12px 32px rgba(14,15,15,.12);
  --ease-standard:cubic-bezier(.22,.61,.36,1); --dur-fast:120ms; --dur-base:200ms;
  --container:1240px;
}

/* ---- Base ------------------------------------------------- */
*,*::before,*::after { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0; font-family:var(--font-body); font-size:16px; font-weight:300; line-height:1.5;
  color:var(--text-body); background:var(--surface-page);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
img { max-width:100%; display:block; }
a { color:var(--text-accent); text-decoration:none; }
a:hover { color:var(--phy-bronze-600); }

h1,h2,h3,h4 { font-family:var(--font-display); color:var(--text-strong); font-weight:600;
  letter-spacing:-0.01em; line-height:1.15; margin:0 0 .75rem; }

/* ---- Brand motifs ---------------------------------------- */
.overline { font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--phy-bronze); display:inline-block; }
.mark { background:var(--phy-bronze); color:var(--phy-ink); padding:0 .1em;
  -webkit-box-decoration-break:clone; box-decoration-break:clone; }
.accent { color:var(--phy-bronze); }
.rule { display:block; width:40px; height:3px; background:var(--phy-bronze); border:0; margin:.75rem 0; }
em.organism { font-style:italic; color:var(--phy-bronze-700); }

.dotgrid { display:grid; grid-template-columns:repeat(5,4px); grid-auto-rows:4px; gap:16px; color:var(--phy-bronze); }
.dotgrid span { width:4px; height:4px; border-radius:50%; background:currentColor; display:block; }

/* ---- Layout ---------------------------------------------- */
.container { max-width:var(--container); margin:0 auto; padding:0 32px; }
.section { padding:88px 0; }
.section--ink { background:var(--phy-ink); color:#fff; }
.section--card { background:var(--surface-card); }
.section--panel { background:var(--surface-panel); }
.section--ink h1,.section--ink h2,.section--ink h3 { color:#fff; }
.section-head { max-width:680px; margin-bottom:48px; }
.section-head.center { margin-left:auto; margin-right:auto; text-align:center; }
.section-title { font-weight:600; font-size:38px; letter-spacing:-0.02em; text-transform:uppercase; margin:14px 0 16px; }
.lead { font-size:19px; line-height:1.6; font-weight:300; color:var(--text-muted); }
.section--ink .lead { color:var(--text-on-dark-muted); }
.grid { display:grid; gap:36px; }
.grid-2 { grid-template-columns:1fr 1fr; }
.grid-3 { grid-template-columns:repeat(3,1fr); }
.grid-4 { grid-template-columns:repeat(4,1fr); }
.split { display:grid; grid-template-columns:1fr 1fr; gap:56px; align-items:center; }
.muted { color:var(--text-muted); }
.section--ink .muted { color:var(--text-on-dark-muted); }
p { margin:0 0 1rem; }
.prose p { font-size:17px; line-height:1.7; font-weight:300; }

/* ---- Buttons --------------------------------------------- */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--font-display); font-weight:700; font-size:14px; letter-spacing:.01em; line-height:1;
  padding:13px 22px; border-radius:var(--radius-sm); cursor:pointer; white-space:nowrap;
  border:1px solid transparent; transition:background var(--dur-base) var(--ease-standard),
  border-color var(--dur-base) var(--ease-standard), transform var(--dur-fast) var(--ease-standard); }
.btn:active { transform:translateY(1px); }
.btn--lg { font-size:16px; padding:15px 26px; }
.btn--sm { font-size:13px; padding:9px 15px; }
.btn--primary { background:var(--phy-bronze); color:var(--phy-ink); border-color:var(--phy-bronze); }
.btn--primary:hover { background:var(--phy-bronze-600); border-color:var(--phy-bronze-600); color:var(--phy-ink); }
.btn--secondary { background:transparent; color:var(--text-strong); border-color:var(--border-strong); }
.btn--secondary:hover { background:var(--phy-paper-200); border-color:var(--phy-gray-700); }
.btn--inverse { background:var(--phy-white); color:var(--phy-ink); border-color:var(--phy-white); }
.btn--inverse:hover { background:var(--phy-paper-200); border-color:var(--phy-paper-200); color:var(--phy-ink); }
.btn--ghost-dark { background:transparent; color:#fff; border-color:var(--border-on-dark); }
.btn--ghost-dark:hover { background:var(--phy-ink-700); color:#fff; }
.btn svg { width:1em; height:1em; }

/* ---- Badges ---------------------------------------------- */
.badge { display:inline-flex; align-items:center; gap:6px; font-family:var(--font-display); font-weight:700;
  font-size:11px; letter-spacing:.06em; text-transform:uppercase; line-height:1; padding:6px 10px;
  border-radius:var(--radius-xs); }
.badge--bronze { background:var(--phy-bronze-100); color:var(--phy-bronze-700); }
.badge--solid { background:var(--phy-bronze); color:var(--phy-ink); }
.badge--outline { background:transparent; color:var(--phy-gray-700); border:1px solid var(--phy-gray-400); }
.badge--ink-outline { background:transparent; color:var(--text-on-dark-muted); border:1px solid var(--border-on-dark); }

/* ---- Header ---------------------------------------------- */
.site-header { position:sticky; top:0; z-index:100; background:rgba(14,15,15,.92);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border-bottom:1px solid var(--border-on-dark); }
.site-header .bar { max-width:var(--container); margin:0 auto; padding:0 32px; height:72px;
  display:flex; align-items:center; justify-content:space-between; gap:20px; }
.site-header .logo img { height:32px; }
.site-nav { display:flex; gap:28px; align-items:center; }
.site-nav a { font-family:var(--font-body); font-size:14px; font-weight:400; color:var(--text-on-dark-muted); }
.site-nav a:hover, .site-nav a.active { color:#fff; }
.site-nav .has-sub { position:relative; }
.site-nav .submenu { position:absolute; top:calc(100% + 14px); left:50%; transform:translateX(-50%);
  background:var(--phy-ink-800); border:1px solid var(--border-on-dark); border-radius:var(--radius-md);
  padding:8px; min-width:240px; display:none; box-shadow:var(--shadow-lg); }
.site-nav .has-sub:hover .submenu { display:block; }
.site-nav .submenu a { display:block; padding:9px 12px; border-radius:var(--radius-sm); color:var(--text-on-dark-muted);
  font-size:14px; }
.site-nav .submenu a:hover { background:var(--phy-ink-700); color:#fff; }
.site-nav .submenu .sub-label { display:block; font-family:var(--font-display); font-weight:700; font-size:10px;
  letter-spacing:.08em; text-transform:uppercase; color:var(--phy-bronze); padding:8px 12px 4px; }
.nav-toggle { display:none; background:none; border:0; color:#fff; cursor:pointer; padding:6px; }
.nav-toggle svg { width:26px; height:26px; }

/* ---- Hero ------------------------------------------------ */
.hero { background:var(--phy-ink); color:#fff; position:relative; overflow:hidden; }
.hero__bg { position:absolute; inset:0; }
.hero__bg img { width:100%; height:100%; object-fit:cover; opacity:.45; }
.hero__scrim { position:absolute; inset:0;
  background:linear-gradient(90deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.7) 45%, rgba(0,0,0,.3) 100%); }
.hero__inner { position:relative; z-index:2; max-width:var(--container); margin:0 auto; padding:100px 32px 80px;
  display:grid; grid-template-columns:1.15fr .85fr; gap:40px; align-items:center; }
.hero h1 { font-weight:600; font-size:58px; line-height:1.25; letter-spacing:-0.02em;
  text-transform:uppercase; margin:0; color:#fff; }
.hero p.lead { color:var(--text-on-dark-muted); max-width:480px; margin:28px 0 36px; }
.hero__aside { display:flex; justify-content:flex-end; align-items:center; }
.hero__cta { display:flex; gap:14px; flex-wrap:wrap; }
.tagline-strip { position:relative; z-index:2; border-top:1px solid var(--border-on-dark); }
.tagline-strip .container { padding-top:20px; padding-bottom:20px; font-family:var(--font-display);
  font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--phy-bronze);
  font-size:15px; text-align:center; }

/* ---- Feature item (circle icon + label) ------------------ */
.feature { display:flex; gap:16px; align-items:flex-start; }
.feature.stacked { flex-direction:column; gap:12px; }
.feature__circle { flex-shrink:0; width:48px; height:48px; border-radius:var(--radius-pill);
  display:flex; align-items:center; justify-content:center;
  background:var(--phy-bronze); color:#fff; border:1.5px solid var(--phy-bronze); }
.feature__circle svg { width:22px; height:22px; }
.section--ink .feature__circle, .feature--ink .feature__circle {
  background:transparent; color:var(--phy-bronze); border:1.5px solid var(--phy-bronze); }
.feature__title { font-family:var(--font-display); font-weight:700; font-size:16px; line-height:1.25;
  color:var(--text-strong); }
.section--ink .feature__title, .feature--ink .feature__title { color:#fff; }
.feature__body { font-size:14px; line-height:1.55; margin-top:4px; color:var(--text-muted); }
.section--ink .feature__body, .feature--ink .feature__body { color:var(--text-on-dark-muted); }

/* ---- Cards ----------------------------------------------- */
.card { background:var(--surface-card); border:1px solid var(--border-subtle); border-radius:var(--radius-lg);
  padding:32px 28px; box-shadow:var(--shadow-sm); }
.card--ink { background:var(--phy-ink); color:#fff; border-color:var(--border-on-dark); }
.card--accent { border-color:var(--phy-bronze); }
.card--interactive { transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard); }
.card--interactive:hover { transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.card__eyebrow { font-family:var(--font-display); font-weight:700; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--phy-bronze); display:block; margin-bottom:10px; }
.card__title { font-family:var(--font-display); font-weight:600; font-size:20px; line-height:1.2;
  color:var(--text-strong); margin:0 0 8px; }
.card--ink .card__title { color:#fff; }
.card__body { font-size:14px; line-height:1.6; color:var(--text-muted); }
.card--ink .card__body { color:var(--text-on-dark-muted); }
.card__price { font-family:var(--font-mono); font-size:13px; color:var(--text-accent); margin-bottom:14px; }

/* ---- Media frame ----------------------------------------- */
.media { border-radius:var(--radius-lg); overflow:hidden; }
.media--shadow { box-shadow:var(--shadow-card); }
.media--ink-border { border:1px solid var(--border-on-dark); }
.media img { width:100%; height:100%; object-fit:cover; }
.media--tall img { height:460px; }
.media--mid img { height:420px; }

/* ---- Stat band ------------------------------------------- */
.statband { background:var(--phy-bronze); color:var(--phy-ink); padding:56px 0; }
.statband .grid-3 { gap:32px; }
.stat__n { font-family:var(--font-display); font-weight:600; font-size:52px; line-height:1; letter-spacing:-0.02em; }
.stat__l { font-weight:300; font-size:15px; margin-top:10px; max-width:30ch; line-height:1.4; }
.statband .stat + .stat, .stat--divided { border-left:1px solid rgba(14,15,15,.25); padding-left:32px; }

/* ---- Chip list / tag row --------------------------------- */
.tagrow { display:flex; gap:10px; flex-wrap:wrap; }

/* ---- Steps / numbered list ------------------------------- */
.steps { display:grid; gap:28px; }
.step { display:flex; gap:18px; align-items:flex-start; }
.step__num { flex-shrink:0; width:44px; height:44px; border-radius:var(--radius-pill); display:flex;
  align-items:center; justify-content:center; font-family:var(--font-display); font-weight:700; font-size:17px;
  background:var(--phy-bronze-100); color:var(--phy-bronze-700); }
.section--ink .step__num { background:transparent; border:1.5px solid var(--phy-bronze); color:var(--phy-bronze); }
.step__title { font-family:var(--font-display); font-weight:600; font-size:18px; color:var(--text-strong); margin-bottom:4px; }
.section--ink .step__title { color:#fff; }

/* ---- Contact / form -------------------------------------- */
.form { display:flex; flex-direction:column; gap:16px; }
.field { display:flex; flex-direction:column; gap:6px; }
.field label { font-family:var(--font-body); font-weight:600; font-size:13px; color:#fff; }
.field input, .field select, .field textarea { font-family:var(--font-body); font-size:15px; color:var(--text-strong);
  background:var(--surface-card); border:1px solid var(--border-default); border-radius:var(--radius-sm);
  padding:11px 12px; outline:none; transition:border-color var(--dur-base), box-shadow var(--dur-base); }
.field textarea { resize:vertical; min-height:96px; }
.field input:focus, .field select:focus, .field textarea:focus {
  border-color:var(--phy-bronze); box-shadow:0 0 0 3px var(--phy-bronze-100); }
.contact-panel { background:var(--phy-ink-800); border:1px solid var(--border-on-dark);
  border-radius:var(--radius-lg); padding:28px; }
.contact-meta { display:flex; flex-direction:column; gap:14px; margin-top:28px; }
.contact-meta span { display:flex; align-items:center; gap:12px; color:var(--text-on-dark-muted); font-size:14px; }
.contact-meta svg { width:18px; height:18px; color:var(--phy-bronze); }

/* ---- CTA strip ------------------------------------------- */
.cta-strip { background:var(--phy-ink); color:#fff; padding:64px 0; }
.cta-strip .inner { display:flex; align-items:center; justify-content:space-between; gap:32px; flex-wrap:wrap; }
.cta-strip h2 { margin:0; font-weight:600; font-size:32px; letter-spacing:-0.02em; text-transform:uppercase; color:#fff; }

/* ---- Audience cards (home) ------------------------------- */
.audience { display:grid; gap:1px; background:var(--border-subtle); border:1px solid var(--border-subtle);
  border-radius:var(--radius-lg); overflow:hidden; grid-template-columns:repeat(3,1fr); }
.audience a { background:var(--surface-card); padding:30px 26px; display:flex; flex-direction:column; gap:8px;
  transition:background var(--dur-base); }
.audience a:hover { background:var(--phy-paper-200); }
.audience .a-eyebrow { font-family:var(--font-display); font-weight:700; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--phy-bronze); }
.audience .a-title { font-family:var(--font-display); font-weight:600; font-size:19px; color:var(--text-strong); }
.audience .a-desc { font-size:14px; line-height:1.55; color:var(--text-muted); }
.audience .a-more { font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--phy-bronze); margin-top:auto; display:inline-flex; gap:6px; align-items:center; }
.audience .a-more svg { width:14px; height:14px; }

/* ---- Footer ---------------------------------------------- */
.site-footer { background:var(--phy-ink-800); color:var(--text-on-dark-muted); padding:56px 0 32px; }
.site-footer .cols { display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:32px; }
.site-footer p { font-size:13px; line-height:1.6; max-width:32ch; }
.site-footer .logo img { height:30px; margin-bottom:16px; }
.site-footer .col-h { font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.08em;
  text-transform:uppercase; color:#fff; margin-bottom:14px; }
.site-footer .col a { display:block; font-size:13px; color:var(--text-on-dark-muted); margin-bottom:10px; }
.site-footer .col a:hover { color:#fff; }
.site-footer .legal { max-width:var(--container); margin:32px auto 0; padding:20px 32px 0;
  border-top:1px solid var(--border-on-dark); display:flex; justify-content:space-between; gap:16px;
  font-size:12px; flex-wrap:wrap; }
.site-footer .legal .tag { font-family:var(--font-display); letter-spacing:.12em; text-transform:uppercase; color:var(--phy-bronze); }

/* ---- Breadcrumb / page intro ----------------------------- */
.kicker { font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--phy-bronze); }

/* ---- Grouped submenu (Lösungen) -------------------------- */
.site-nav .submenu { min-width:260px; }
.site-nav .submenu a.sub-group { font-family:var(--font-display); font-weight:700; font-size:10px;
  letter-spacing:.08em; text-transform:uppercase; color:var(--phy-bronze); padding:12px 12px 4px; }
.site-nav .submenu a.sub-group:hover { background:transparent; color:var(--phy-bronze-400); }
.site-nav .submenu a:not(.sub-group) { padding-left:20px; }
.site-nav .submenu a.sub-group:first-child { padding-top:4px; }

/* ---- Solution hub grid ----------------------------------- */
.solgrid { display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.solgrid a { display:flex; flex-direction:column; gap:10px; background:var(--surface-card);
  border:1px solid var(--border-subtle); border-radius:var(--radius-lg); padding:28px 26px;
  transition:transform var(--dur-base) var(--ease-standard), box-shadow var(--dur-base) var(--ease-standard); }
.solgrid a:hover { transform:translateY(-3px); box-shadow:var(--shadow-lg); }
.solgrid .s-eyebrow { font-family:var(--font-display); font-weight:700; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--phy-bronze); }
.solgrid .s-title { font-family:var(--font-display); font-weight:600; font-size:20px; color:var(--text-strong); line-height:1.2; }
.solgrid .s-desc { font-size:14px; line-height:1.55; color:var(--text-muted); }
.solgrid .s-more { font-family:var(--font-display); font-weight:700; font-size:12px; letter-spacing:.04em;
  text-transform:uppercase; color:var(--phy-bronze); margin-top:auto; display:inline-flex; gap:6px; align-items:center; }
.solgrid .s-more svg { width:14px; height:14px; }

/* ---- Consent banner -------------------------------------- */
#phy-consent { position:fixed; left:0; right:0; bottom:0; z-index:1200; background:rgba(14,15,15,.97);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px); border-top:1px solid var(--border-on-dark);
  color:var(--text-on-dark-muted); display:flex; align-items:center; justify-content:center; gap:24px;
  flex-wrap:wrap; padding:18px 32px; }
#phy-consent .phy-consent__text { font-size:13px; line-height:1.5; max-width:760px; }
#phy-consent a { color:var(--phy-bronze); }
#phy-consent .phy-consent__btns { display:flex; gap:12px; flex-shrink:0; }
#phy-consent .btn--secondary { color:#fff; border-color:var(--border-on-dark); background:transparent; }
#phy-consent .btn--secondary:hover { background:var(--phy-ink-700); }

/* ---- Scroll reveal --------------------------------------- */
[data-animate] {
  opacity:0;
  transform:translateY(28px);
  transition:opacity .65s var(--ease-standard), transform .65s var(--ease-standard);
}
[data-animate].is-visible { opacity:1; transform:none; }

/* ---- Back-to-top button ---------------------------------- */
.back-top {
  position:fixed; right:24px; bottom:28px; z-index:500;
  width:44px; height:44px; border-radius:var(--radius-pill);
  background:var(--phy-bronze); border:none; cursor:pointer;
  display:flex; align-items:center; justify-content:center;
  color:var(--phy-ink);
  box-shadow:0 4px 14px rgba(0,0,0,.35);
  opacity:0; pointer-events:none;
  transform:translateY(8px);
  transition:opacity var(--dur-base) var(--ease-standard),
             transform var(--dur-base) var(--ease-standard),
             background var(--dur-fast);
}
.back-top.is-visible { opacity:1; pointer-events:auto; transform:none; }
.back-top:hover { background:var(--phy-bronze-600); }
.back-top svg { width:20px; height:20px; }

/* ---- Stat band counter pulse ----------------------------- */
.statband .stat__n {
  transition:transform .4s var(--ease-standard), color .4s;
}
.statband.is-visible .stat__n {
  animation:stat-pop .55s var(--ease-standard) both;
}
.statband.is-visible .stat--divided .stat__n { animation-delay:.12s; }
.statband.is-visible .stat--divided + .stat--divided .stat__n { animation-delay:.24s; }
@keyframes stat-pop {
  0%   { opacity:0; transform:translateY(16px) scale(.92); }
  100% { opacity:1; transform:none; }
}

/* ---- Dotgrid pulse --------------------------------------- */
@keyframes dot-pulse {
  0%, 100% { opacity:.55; }
  50%       { opacity:1; }
}
.dotgrid span { animation:dot-pulse 2.8s ease-in-out infinite; }
.dotgrid span:nth-child(2n)   { animation-delay:.4s; }
.dotgrid span:nth-child(3n+1) { animation-delay:.8s; }
.dotgrid span:nth-child(4n)   { animation-delay:1.2s; }

/* ---- Team card hover ------------------------------------- */
#team .grid-3 > div {
  transition:transform var(--dur-base) var(--ease-standard),
             box-shadow var(--dur-base) var(--ease-standard);
  border-radius:var(--radius-lg);
  padding:16px;
}
#team .grid-3 > div:hover {
  transform:translateY(-4px);
  box-shadow:var(--shadow-card);
}

/* ---- Solgrid accent bar ---------------------------------- */
.solgrid a::before {
  content:"";
  display:block;
  width:32px; height:3px;
  background:var(--phy-bronze);
  border-radius:2px;
  margin-bottom:4px;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform .3s var(--ease-standard);
}
.solgrid a:hover::before { transform:scaleX(1); }

/* ---- Responsive ------------------------------------------ */
@media (max-width:900px){
  .grid-2,.grid-3,.grid-4,.split,.hero__inner,.cta-strip .inner,.site-footer .cols,.audience,.solgrid { grid-template-columns:1fr; }
  .hero h1 { font-size:44px; }
  .section-title { font-size:30px; }
  .hero__aside { display:none; }
  .statband .stat + .stat, .stat--divided { border-left:0; padding-left:0; }
  .split { gap:36px; }
  .site-nav { display:none; position:absolute; top:72px; left:0; right:0; flex-direction:column; gap:0;
    background:var(--phy-ink-800); border-bottom:1px solid var(--border-on-dark); padding:12px 20px; }
  .site-nav.open { display:flex; }
  .site-nav a { padding:12px 0; width:100%; }
  .site-nav .submenu { position:static; transform:none; display:block; background:transparent; border:0;
    box-shadow:none; padding:0 0 8px 12px; min-width:0; }
  .site-nav .has-sub:hover .submenu { display:block; }
  .nav-toggle { display:block; }
  .section { padding:64px 0; }
  .hero__inner { padding:72px 32px 56px; }
}
@media (max-width:560px){
  .container,.site-header .bar,.hero__inner { padding-left:20px; padding-right:20px; }
  .stat__n { font-size:42px; }
}
