/* =========================================================
   Core, themes, header controls, bootstrap bridge
   ========================================================= */
@font-face {
  font-family: Hack;
  src: url('../fonts/Hack-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

:root {
  --fn-header-height: 151px;
  --fn-toolbar-height: 56px;
  --fn-header-spacer-height: 75px;
  --fn-header-flow-height: calc(var(--fn-header-spacer-height) + var(--fn-toolbar-height));
  --fn-content-gap: 24px;
  --fn-bg: #181a1b;
  --fn-text: beige;
  --fn-text-main: #e8eef5;
  --fn-muted: #9aa8b6;
  --fn-panel-alpha: .62;
  --fn-panel-strong-alpha: .76;
  --fn-panel-blur: 16px;
  --fn-panel-border-alpha: .26;
  --fn-card-bg: #101821;
  --fn-card-before: linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, .012) 22%, rgba(255, 255, 255, 0) 40%);
  --fn-themed-bg: #101821;
  --fn-themed-border: rgba(110, 132, 156, .24);
  --fn-themed-shadow: 0 18px 58px rgba(0, 0, 0, .40);
  --fn-themed-backdrop-filter: none;
  --fn-theme-control-bg: #101821;
  --fn-nav-bg: #101316;
  --fn-nav-bg-expanded: #0b0f13;
  --fn-nav-backdrop-filter: none;
  --fn-home-tile-bg: #151b22;
  --fn-home-tile-bg-bottom: #090d12;
  --fn-home-tile-border: rgba(255, 144, 0, .72);
  --fn-home-tile-shadow:
    0 18px 58px rgba(0, 0, 0, .38),
    0 0 0 1px rgba(255, 190, 70, .18),
    0 0 28px rgba(255, 144, 0, .36),
    inset 0 1px 0 rgba(255, 255, 255, .08),
    inset 0 -38px 70px rgba(0, 0, 0, .28);
  --fn-home-tile-backdrop-filter: none;
  --fn-home-tile-overlay:
    linear-gradient(180deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .025) 28%, rgba(0, 0, 0, .18) 100%),
    radial-gradient(circle at 50% 22%, rgba(255, 255, 255, .18), transparent 38%),
    linear-gradient(180deg, var(--fn-home-tile-bg), var(--fn-home-tile-bg-bottom));
  --fn-home-tile-inner-bg: rgba(0, 0, 0, .08);
  --fn-home-tile-inner-border: rgba(255, 255, 255, .085);
  --fn-home-empty-bg:
    radial-gradient(circle at 50% 25%, rgba(255, 194, 71, .22), transparent 34%),
    linear-gradient(180deg, #151b22, #090d12);
  --fn-badge: url('../img/badge-full.png');
  --fn-badge-size: 760px;
  --fn-badge-x: calc(50% + (var(--fn-nav-width-collapsed, 66px) / 2));
  --fn-logo-small: url('../img/logo_rgb3.gif');
  --fn-logo-strip: url('../img/logo_rgb_tausta17.gif');
}

html { scroll-behavior: smooth; scroll-padding-top: 190px; }
body { min-height: 100vh; }

body[data-fn-theme='glass'] {
  --fn-panel-alpha: .62;
  --fn-panel-strong-alpha: .76;
  --fn-panel-blur: 16px;
  --fn-card-bg: linear-gradient(180deg, rgba(18, 25, 34, .60), rgba(8, 12, 17, .48));
  --fn-card-before: linear-gradient(180deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .02) 22%, rgba(255, 255, 255, 0) 40%);
  --fn-themed-bg: linear-gradient(180deg, rgba(18, 25, 34, .60), rgba(8, 12, 17, .48));
  --fn-themed-border: rgba(110, 132, 156, .26);
  --fn-themed-shadow: 0 16px 48px rgba(0, 0, 0, .34);
  --fn-themed-backdrop-filter: blur(16px) saturate(1.15);
  --fn-theme-control-bg: rgba(10, 14, 18, .72);
  --fn-nav-bg: rgba(16, 19, 18, .92);
  --fn-nav-bg-expanded: rgba(12, 15, 18, .96);
  --fn-nav-backdrop-filter: blur(14px);
  --fn-home-tile-bg: rgba(33, 38, 45, .26);
  --fn-home-tile-bg-bottom: rgba(13, 17, 23, .18);
  --fn-home-tile-border: rgba(255, 144, 0, .72);
  --fn-home-tile-backdrop-filter: blur(16px) saturate(1.18);
  --fn-home-tile-shadow:
    0 16px 48px rgba(0, 0, 0, .30),
    0 0 0 1px rgba(255, 190, 70, .16),
    0 0 24px rgba(255, 144, 0, .28),
    inset 0 1px 0 rgba(255, 255, 255, .10),
    inset 0 -34px 64px rgba(0, 0, 0, .18);
  --fn-home-tile-overlay:
    linear-gradient(180deg, rgba(255, 255, 255, .09), rgba(255, 255, 255, .02) 28%, rgba(0, 0, 0, .10) 100%),
    radial-gradient(circle at 50% 22%, rgba(255, 255, 255, .14), transparent 38%),
    linear-gradient(180deg, var(--fn-home-tile-bg), var(--fn-home-tile-bg-bottom));
  --fn-home-tile-inner-bg: rgba(0, 0, 0, .035);
  --fn-home-empty-bg:
    radial-gradient(circle at 50% 25%, rgba(255, 194, 71, .12), transparent 34%),
    linear-gradient(180deg, rgba(33, 38, 45, .24), rgba(13, 17, 23, .18));
}

body[data-fn-theme='transparent'] {
  --fn-panel-alpha: .26;
  --fn-panel-strong-alpha: .38;
  --fn-panel-blur: 0px;
  --fn-card-bg: rgba(8, 12, 17, .24);
  --fn-card-before: linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, 0) 34%);
  --fn-themed-bg: rgba(8, 12, 17, .24);
  --fn-themed-border: rgba(110, 132, 156, .18);
  --fn-themed-shadow: 0 12px 34px rgba(0, 0, 0, .20);
  --fn-themed-backdrop-filter: none;
  --fn-theme-control-bg: rgba(8, 12, 17, .34);
  --fn-nav-bg: rgba(12, 15, 18, .38);
  --fn-nav-bg-expanded: rgba(12, 15, 18, .50);
  --fn-nav-backdrop-filter: none;
  --fn-home-tile-bg: rgba(33, 38, 45, .18);
  --fn-home-tile-bg-bottom: rgba(13, 17, 23, .14);
  --fn-home-tile-border: rgba(255, 144, 0, .46);
  --fn-home-tile-backdrop-filter: none;
  --fn-home-tile-shadow:
    0 10px 28px rgba(0, 0, 0, .20),
    0 0 0 1px rgba(255, 190, 70, .12),
    0 0 16px rgba(255, 144, 0, .18),
    inset 0 1px 0 rgba(255, 255, 255, .04);
  --fn-home-tile-overlay:
    linear-gradient(180deg, rgba(255, 255, 255, .055), rgba(255, 255, 255, .012) 28%, rgba(0, 0, 0, .08) 100%),
    linear-gradient(180deg, var(--fn-home-tile-bg), var(--fn-home-tile-bg-bottom));
  --fn-home-tile-inner-bg: rgba(0, 0, 0, .025);
  --fn-home-tile-inner-border: rgba(255, 255, 255, .05);
  --fn-home-empty-bg:
    radial-gradient(circle at 50% 25%, rgba(255, 194, 71, .09), transparent 34%),
    linear-gradient(180deg, rgba(33, 38, 45, .16), rgba(13, 17, 23, .12));
}

body[data-fn-theme='solid'] {
  --fn-panel-alpha: 1;
  --fn-panel-strong-alpha: 1;
  --fn-panel-blur: 0px;
  --fn-card-bg: #101821;
  --fn-card-before: linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, .012) 22%, rgba(255, 255, 255, 0) 40%);
  --fn-themed-bg: #101821;
  --fn-themed-border: rgba(110, 132, 156, .24);
  --fn-themed-shadow: 0 18px 58px rgba(0, 0, 0, .40);
  --fn-themed-backdrop-filter: none;
  --fn-theme-control-bg: #101821;
  --fn-nav-bg: #101316;
  --fn-nav-bg-expanded: #0b0f13;
  --fn-nav-backdrop-filter: none;
  --fn-home-tile-bg: #151b22;
  --fn-home-tile-bg-bottom: #090d12;
  --fn-home-tile-border: rgba(255, 144, 0, .72);
  --fn-home-tile-backdrop-filter: none;
  --fn-home-tile-shadow:
    0 18px 58px rgba(0, 0, 0, .38),
    0 0 0 1px rgba(255, 190, 70, .18),
    0 0 28px rgba(255, 144, 0, .36),
    inset 0 1px 0 rgba(255, 255, 255, .08),
    inset 0 -38px 70px rgba(0, 0, 0, .28);
  --fn-home-tile-overlay:
    linear-gradient(180deg, rgba(255, 255, 255, .12), rgba(255, 255, 255, .025) 28%, rgba(0, 0, 0, .18) 100%),
    radial-gradient(circle at 50% 22%, rgba(255, 255, 255, .18), transparent 38%),
    linear-gradient(180deg, var(--fn-home-tile-bg), var(--fn-home-tile-bg-bottom));
  --fn-home-tile-inner-bg: rgba(0, 0, 0, .08);
  --fn-home-tile-inner-border: rgba(255, 255, 255, .085);
  --fn-home-empty-bg:
    radial-gradient(circle at 50% 25%, rgba(255, 194, 71, .22), transparent 34%),
    linear-gradient(180deg, #151b22, #090d12);
}

body[data-fn-theme='glass'] .fn-card,
body[data-fn-theme='glass'] .fn-panel,
body[data-fn-theme='glass'] .fn-hero-copy,
body[data-fn-theme='glass'] .fn-terminal,
body[data-fn-theme='glass'] .fn-logo-card,
body[data-fn-theme='glass'] .panel.panel-default,
body[data-fn-theme='glass'] .fg-glass,
body[data-fn-theme='glass'] .mini-card,
body[data-fn-theme='glass'] .feature-card,
body[data-fn-theme='glass'] .module-card,
body[data-fn-theme='glass'] .micro-card,
body[data-fn-theme='transparent'] .fn-card,
body[data-fn-theme='transparent'] .fn-panel,
body[data-fn-theme='transparent'] .fn-hero-copy,
body[data-fn-theme='transparent'] .fn-terminal,
body[data-fn-theme='transparent'] .fn-logo-card,
body[data-fn-theme='transparent'] .panel.panel-default,
body[data-fn-theme='transparent'] .fg-glass,
body[data-fn-theme='transparent'] .mini-card,
body[data-fn-theme='transparent'] .feature-card,
body[data-fn-theme='transparent'] .module-card,
body[data-fn-theme='transparent'] .micro-card,
body[data-fn-theme='solid'] .fn-card,
body[data-fn-theme='solid'] .fn-panel,
body[data-fn-theme='solid'] .fn-hero-copy,
body[data-fn-theme='solid'] .fn-terminal,
body[data-fn-theme='solid'] .fn-logo-card,
body[data-fn-theme='solid'] .panel.panel-default,
body[data-fn-theme='solid'] .fg-glass,
body[data-fn-theme='solid'] .mini-card,
body[data-fn-theme='solid'] .feature-card,
body[data-fn-theme='solid'] .module-card,
body[data-fn-theme='solid'] .micro-card {
  border-color: var(--fn-themed-border) !important;
  background: var(--fn-themed-bg) !important;
  box-shadow: var(--fn-themed-shadow), var(--fn-glass-inner) !important;
  backdrop-filter: var(--fn-themed-backdrop-filter) !important;
  -webkit-backdrop-filter: var(--fn-themed-backdrop-filter) !important;
}

.fn-theme-control {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.fn-theme-control label {
  display: none;
}

.fn-theme-control select {
  min-width: 120px;
  min-height: 36px;
  border: 1px solid #2b3644;
  border-radius: 8px;
  background: #1e262f;
  color: #cfe8ff;
  font: inherit;
  font-weight: 800;
  padding: 7px 10px;
}

.fn-theme-control--toolbar {
  margin-left: 0;
}

[data-fn-main-nav]:empty { display: none; }

.row { display: flex; flex-wrap: wrap; gap: 16px; }
.col-sm-12 { flex: 0 0 100%; max-width: 100%; }
.col-sm-4 { flex: 1 1 300px; max-width: 100%; }
.col-sm-3 { flex: 1 1 230px; max-width: 100%; }
.col-sm-2 { flex: 1 1 180px; max-width: 100%; }
.container, .container-fluid { width: min(1200px, calc(100% - 32px)); margin-inline: auto; }

@media (max-width: 700px) {
  .fn-theme-control select { min-width: 104px; }
}

/* =========================================================
   styles\fn-header.css
   ========================================================= */
/*
  FailureHeaderâ„¢ shared header and toolbar strip
  Root-level shared file.
  Header images are loaded from the common /img path so browser cache is reused across pages.
*/

:root {
  --fn-bg: #181a1b;
  --fn-text: beige;
  --fn-shadow: #000;
  --fn-badge: url('../img/badge-full.png');
  --fn-badge-size: 760px;
  --fn-badge-opacity: .98;
  --fn-logo-small: url('../img/logo_rgb3.gif');
  --fn-logo-strip: url('../img/logo_rgb_tausta17.gif');
  --fn-header-height: 151px;
}

html,
body {
  margin: 0;
  padding: 0;
  min-height: 100%;
  overflow-x: hidden;
}

html {
  scroll-behavior: smooth;
  scroll-padding-top: 190px;
}

body {
  min-height: 100vh;
  padding-top: var(--fn-header-flow-height);
  background: var(--fn-bg);
  color: var(--fn-text);
  font-family: Hack, 'Cascadia Code', 'Cascadia Mono', 'Courier New', monospace;
}

/* Preferred class is fn-hero-bg. hero is kept as a compatibility alias. */
body.fn-hero-bg::before,
body.hero::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -2;
  pointer-events: none;
  background-image: var(--fn-badge);
  background-repeat: no-repeat;
  background-position: var(--fn-badge-x) center;
  background-size: var(--fn-badge-size);
  opacity: var(--fn-badge-opacity);
  filter:
    drop-shadow(0 0 8px rgba(255, 196, 64, .30))
    drop-shadow(0 0 18px rgba(213, 138, 17, .30))
    drop-shadow(0 0 36px rgba(213, 138, 17, .22))
    drop-shadow(0 0 60px rgba(255, 196, 64, .12));
}

.fn-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  min-height: var(--fn-header-flow-height);
  background: transparent;
  border-bottom: 0;
}

.fn-logo-wrap {
  position: absolute;
  left: 0;
  top: 0;
  z-index: 0;
  width: 100%;
  height: var(--fn-header-height);
  margin: 0;
  padding: 15px;
  color: beige;
  font-family: Hack, 'Courier New', Impact;
  font-size: 20pt;
  text-shadow: 2px 2px 3px black;
  pointer-events: none;
}

.logo,
#logo {
  position: absolute;
  left: 0;
  top: 0;
  box-sizing: border-box;
  margin: 0;
}

.logo {
  z-index: 28;
  width: 300px;
  height: 150px;
  padding: 18px 15px 15px 7px;
  pointer-events: none;
  background-image: var(--fn-logo-small);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100% 100%;
  color: #fff;
  font-family: 'Courier New', monospace;
  font-size: 16pt;
  text-shadow: 2px 2px 3px var(--fn-shadow);
}

.logo .version {
  margin-top: 70px;
}

.logo b {
  color: red;
  font-size: 8pt;
  vertical-align: text-top;
  list-style-type: none;
  font-family: Hack, 'Courier New', Impact;
  text-shadow: 2px 2px 3px black;
}

#logo {
  z-index: 29;
  display: block;
  width: 100%;
  height: var(--fn-header-height);
  padding: 18px 0 0 15px;
  pointer-events: auto;
  background-image: var(--fn-logo-strip);
  background-repeat: no-repeat;
  background-position: center;
  background-size: 100% 100%;
  color: var(--fn-text);
  font-family: Hack, 'Courier New', Impact;
  font-size: 20pt;
  line-height: 1.2;
  text-decoration: none;
  text-shadow: 2px 2px 3px var(--fn-shadow);
}

#logo:hover {
  color: #fff;
  text-decoration: none;
}

#logo b {
  animation: blinker 1.5s step-end infinite;
}

.fn-header-spacer {
  position: relative;
  z-index: 1;
  height: var(--fn-header-spacer-height);
  pointer-events: none;
}

.fn-header .toolbar,
.fn-header-toolbar {
  position: relative;
  z-index: 31;
  display: flex;
  min-height: var(--fn-toolbar-height);
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  flex-wrap: wrap;
  padding: 10px 20px;
  background: none;
}

.fn-header .toolbar button,
.fn-header .toolbar select,
.fn-header .filelabel span {
  min-height: 36px;
  border: 1px solid #2b3644;
  border-radius: 8px;
  background: #1e262f;
  color: #cfe8ff;
  cursor: pointer;
  font: inherit;
  font-weight: 700;
  padding: 8px 12px;
}

.fn-header .toolbar button:hover,
.fn-header .toolbar select:hover,
.fn-header .filelabel span:hover {
  filter: brightness(1.08);
  text-decoration: none;
}

@keyframes blinker {
  50% { opacity: 0; }
}

@media (max-width: 850px) {
  :root { --fn-badge-size: 760px; }
}

/* =========================================================
   styles\fn-nav.css
   ========================================================= */
/*
  FailureNetworks shared vertical side navigation.
  Nav items are injected by fn-main-nav.js into <div data-fn-main-nav></div>.
*/

:root {
  --fn-nav-top: var(--fn-header-flow-height);
  --fn-nav-width-collapsed: 66px;
  --fn-nav-width-expanded: 252px;
  --fn-nav-bg: rgba(16, 19, 18, .92);
  --fn-nav-bg-expanded: rgba(12, 15, 18, .96);
  --fn-nav-border: rgba(110, 132, 156, .20);
  --fn-nav-text: #9aa8b6;
  --fn-nav-text-active: #e8eef5;
  --fn-nav-blue: #46d9ff;
  --fn-nav-green: #35d36e;
  --fn-nav-orange: #ffc247;
  --fn-nav-red: #ff4b6e;
  --fn-nav-purple: #b95cff;
}

.fn-nav-toggle {
  position: fixed;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.fn-side-nav {
  position: fixed;
  left: 0;
  top: var(--fn-nav-top);
  bottom: 0;
  z-index: 35;
  width: var(--fn-nav-width-collapsed);
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 2px 8px 12px;
  overflow-x: hidden;
  overflow-y: auto;
  border-right: 1px solid var(--fn-nav-border);
  background: var(--fn-nav-bg);
  backdrop-filter: var(--fn-nav-backdrop-filter);
  -webkit-backdrop-filter: var(--fn-nav-backdrop-filter);
  box-shadow: 12px 0 40px rgba(0,0,0,.30);
  transition: width .20s ease, background .20s ease, box-shadow .20s ease;
}

.fn-side-nav:hover,
.fn-nav-toggle:checked + .fn-side-nav {
  width: var(--fn-nav-width-expanded);
  background: var(--fn-nav-bg-expanded);
  box-shadow: 18px 0 56px rgba(0,0,0,.42);
}

.fn-side-nav a,
.fn-nav-hamburger {
  min-height: 48px;
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 0 12px;
  border: 1px solid transparent;
  border-radius: 13px;
  color: var(--fn-nav-text);
  cursor: pointer;
  white-space: nowrap;
  text-decoration: none;
}

.fn-nav-hamburger {
  flex: 0 0 auto;
  margin-bottom: 8px;
  border-color: rgba(255, 194, 71, .18);
  color: var(--fn-nav-orange);
  background: rgba(255, 194, 71, .055);
  user-select: none;
}

.fn-side-nav a:hover,
.fn-side-nav a.fn-nav-current,
.fn-nav-hamburger:hover {
  color: var(--fn-nav-text-active);
  background: rgba(70, 217, 255, .075);
  border-color: rgba(70, 217, 255, .20);
  text-decoration: none;
}

.fn-nav-icon {
  flex: 0 0 24px;
  width: 24px;
  text-align: center;
  color: var(--fn-nav-orange);
  font-size: 20px;
  line-height: 1;
  text-shadow: 0 0 12px rgba(255, 194, 71, .22);
}

.fn-side-nav a:nth-of-type(5n+1) .fn-nav-icon { color: var(--fn-nav-blue); }
.fn-side-nav a:nth-of-type(5n+2) .fn-nav-icon { color: var(--fn-nav-green); }
.fn-side-nav a:nth-of-type(5n+3) .fn-nav-icon { color: var(--fn-nav-orange); }
.fn-side-nav a:nth-of-type(5n+4) .fn-nav-icon { color: var(--fn-nav-purple); }
.fn-side-nav a:nth-of-type(5n+5) .fn-nav-icon { color: var(--fn-nav-red); }

.fn-nav-label {
  display: inline-block;
  max-width: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateX(-6px);
  color: inherit;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: .025em;
  transition: max-width .18s ease, opacity .18s ease, transform .18s ease;
}

.fn-side-nav:hover .fn-nav-label,
.fn-nav-toggle:checked + .fn-side-nav .fn-nav-label {
  max-width: 180px;
  opacity: 1;
  transform: translateX(0);
}

.fn-nav-toggle:checked + .fn-side-nav .fn-nav-hamburger {
  border-color: rgba(53, 211, 110, .32);
  background: rgba(53, 211, 110, .075);
}

@media (max-width: 700px) {
  :root {
    --fn-nav-width-collapsed: 58px;
    --fn-nav-width-expanded: min(236px, calc(100vw - 14px));
  }

  .fn-side-nav { padding: 2px 6px 12px; }
}

/* ================================
   FailureNetworks nav scrollbar cleanup
   Keeps nav scrollable, hides nasty internal scrollbar
   ================================ */

.fn-side-nav {
  overflow-x: hidden;
  overflow-y: auto;

  /* Firefox */
  scrollbar-width: none;

  /* Old Edge / IE */
  -ms-overflow-style: none;
}

/* Chrome / Edge / Safari */
.fn-side-nav::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}

/* =========================================================
   styles\fn-content.css
   ========================================================= */
/*
  FailureNetworks shared content system.
  Glass cards, shared widths and legacy panel bridge for older PHP pages.
*/

:root {
  --fn-panel: rgba(13, 18, 24, .62);
  --fn-panel-strong: rgba(13, 18, 24, .76);
  --fn-panel-soft: rgba(16, 22, 30, .48);
  --fn-border: rgba(110, 132, 156, .26);
  --fn-border-hot: rgba(255, 190, 70, .30);
  --fn-text-main: #e8eef5;
  --fn-muted: #9aa8b6;
  --fn-dim: #6f7b88;
  --fn-green: #35d36e;
  --fn-blue: #46d9ff;
  --fn-orange: #ffc247;
  --fn-red: #ff4b6e;
  --fn-purple: #b95cff;
  --fn-shadow: 0 18px 60px rgba(0, 0, 0, .44);
  --fn-glass-inner: inset 0 1px 0 rgba(255, 255, 255, .045);
  --fn-radius: 16px;
}

* { box-sizing: border-box; }

a {
  color: var(--fn-blue);
  text-decoration: none;
}

a:hover { text-decoration: underline; }

.fn-page {
  position: relative;
  z-index: 4;
  max-width: 1480px;
  margin: 0 auto;
  padding: var(--fn-content-gap) 28px 80px 96px;
  color: var(--fn-text-main);
}

.fn-page.narrow {
  max-width: 1180px;
}

.fn-card,
.fn-panel,
.fn-hero-copy,
.fn-terminal,
.fn-logo-card,
.panel.panel-default {
  position: relative;
  border: 1px solid var(--fn-border);
  border-radius: var(--fn-radius);
  background: var(--fn-themed-bg);
  box-shadow:
    var(--fn-themed-shadow),
    var(--fn-glass-inner);
  backdrop-filter: var(--fn-themed-backdrop-filter);
  -webkit-backdrop-filter: var(--fn-themed-backdrop-filter);
  color: var(--fn-text-main);
  overflow: hidden;
}

.fn-card::before,
.fn-panel::before,
.fn-hero-copy::before,
.fn-terminal::before,
.fn-logo-card::before,
.panel.panel-default::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: var(--fn-card-before);
}

.fn-card > *,
.fn-panel > *,
.fn-hero-copy > *,
.fn-terminal > *,
.fn-logo-card > *,
.panel.panel-default > * {
  position: relative;
  z-index: 1;
}

.fn-card,
.fn-section,
.panel.panel-default {
  margin: 20px 0;
  padding: 24px;
}

.fn-hero-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(420px, .95fr);
  gap: 22px;
  align-items: stretch;
}

.fn-hero-copy {
  min-height: 520px;
  padding: 38px 42px;
}

.fn-logo-card {
  min-height: 520px;
  padding: 38px 42px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.fn-logo-card img {
  max-width: 100%;
  max-height: 420px;
  object-fit: contain;
  filter: drop-shadow(0 0 30px rgba(213, 138, 17, .40));
}

.fn-section-header,
.panel-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  margin: -24px -24px 18px;
  padding: 18px 24px;
  border-bottom: 1px solid rgba(110, 132, 156, .22);
  background: rgba(0, 0, 0, .16);
  color: var(--fn-text-main);
}

.fn-section-header h1,
.fn-section-header h2,
.fn-section-header h3 {
  margin: 0;
}

.fn-section-header p {
  max-width: 620px;
  margin: 0;
  color: var(--fn-muted);
  font-size: 14px;
  line-height: 1.6;
}

h1,
.fn-h1 {
  max-width: 920px;
  margin: 0;
  color: var(--fn-text-main);
  font-size: clamp(42px, 6.2vw, 82px);
  line-height: 1.04;
  letter-spacing: -.06em;
  text-wrap: balance;
}

h2,
.fn-h2 {
  color: var(--fn-text-main);
  font-size: clamp(24px, 2.4vw, 36px);
  line-height: 1.04;
  letter-spacing: -.045em;
}

h3,
.fn-h3 {
  color: #f3f7fb;
}

p,
.fn-page li,
.panel-body {
  color: #cbd5df;
  font-size: 16px;
  line-height: 1.68;
}

.fn-lead {
  max-width: 860px;
  margin: 22px 0 24px;
  font-size: 21px;
}

.fn-path {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 20px;
  color: var(--fn-dim);
  font-size: 14px;
}

.fn-path strong { color: var(--fn-blue); }
.fn-path .slash { color: rgba(110, 132, 156, .50); }

.fn-badges,
.fn-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 20px 0 26px;
}

.fn-badge,
.badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 12px;
  border: 1px solid var(--fn-border);
  border-radius: 999px;
  background: rgba(255,255,255,.045);
  color: #dce5ee;
  font-size: 12px;
  font-weight: 700;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .035);
}

.fn-badge.green,
.badge.green { color: #89f5ad; border-color: rgba(53,211,110,.36); background: rgba(53,211,110,.12); }
.fn-badge.orange,
.badge.orange { color: #ffd27a; border-color: rgba(255,194,71,.36); background: rgba(255,194,71,.11); }
.fn-badge.blue,
.badge.blue { color: #8de9ff; border-color: rgba(70,217,255,.36); background: rgba(70,217,255,.10); }
.fn-badge.red,
.badge.red { color: #ff91a6; border-color: rgba(255,75,110,.36); background: rgba(255,75,110,.11); }

.fn-btn,
.btn,
button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 10px 18px;
  border: 1px solid rgba(110, 132, 156, .30);
  border-radius: 999px;
  background:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, .075),
      rgba(255, 255, 255, .035)
    );
  color: var(--fn-blue);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
  box-shadow:
    0 10px 30px rgba(0, 0, 0, .22),
    inset 0 1px 0 rgba(255, 255, 255, .045);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.fn-btn:hover,
.btn:hover,
button:hover {
  border-color: rgba(70, 217, 255, .52);
  background:
    linear-gradient(
      180deg,
      rgba(70, 217, 255, .12),
      rgba(70, 217, 255, .045)
    );
  text-decoration: none;
  transform: translateY(-1px);
}

.fn-btn.primary,
.btn.primary,
.btn-success {
  color: #fff;
  border-color: rgba(53,211,110,.45);
  background: linear-gradient(180deg, rgba(45, 190, 85, .86), rgba(20, 130, 55, .78));
}

pre,
.fn-code,
.code-window pre {
  margin: 0 0 16px;
  padding: 18px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  border: 1px solid rgba(110, 132, 156, .22);
  border-radius: 12px;
  background:
    linear-gradient(
      180deg,
      rgba(0, 0, 0, .30),
      rgba(0, 0, 0, .18)
    );
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .04),
    0 10px 32px rgba(0, 0, 0, .20);
  color: #e8eef5;
  font-family: Hack, "Cascadia Code", "Cascadia Mono", "Courier New", monospace;
  font-size: 13px;
  line-height: 1.55;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

code {
  font-family: Hack, "Cascadia Code", "Cascadia Mono", "Courier New", monospace;
}

/* Legacy grid bridge for old Bootstrap-ish pages without loading Bootstrap. */
.flex-center {
  display: block;
  margin: 0 0 22px;
}

.row {
  width: 100% !important;
  max-width: none;
  margin: 0 !important;
}

.col-sm-12,
.col-sm-4,
.col-sm-3,
.col-sm-2 {
  min-width: 0;
}

.panel.panel-default {
  margin: 0 0 20px;
}

.panel-heading {
  min-height: 54px;
  font-weight: 900;
  color: var(--fn-orange);
}

.panel-heading b {
  color: var(--fn-orange);
}

.panel-heading a {
  color: var(--fn-blue);
}

.panel-body {
  padding: 0;
  min-height: unset !important;
}

@media (max-width: 1120px) {
  .fn-hero-grid {
    grid-template-columns: 1fr;
  }

  .fn-logo-card {
    min-height: 360px;
  }
}

@media (max-width: 700px) {
  :root {
    --fn-content-gap: 16px;
  }

  .fn-page {
    padding: var(--fn-content-gap) 14px 60px 76px;
  }

  .fn-card,
  .fn-section,
  .fn-hero-copy,
  .fn-logo-card,
  .panel.panel-default {
    padding: 22px;
  }

  .fn-section-header,
  .panel-heading {
    display: block;
    margin: -22px -22px 18px;
    padding: 16px 22px;
  }

  h1,
  .fn-h1 {
    font-size: clamp(34px, 11vw, 52px);
  }
}

/* =========================================================
   styles\failurenetworks.css
   ========================================================= */
/*
  FailureNetworks.net front page-specific styles only.
  Shared system lives in fn-header.css, fn-nav.css and fn-content.css.
*/

.failurenetworks {
  --fn-home-orange: #ff9000;
  --fn-home-orange-soft: rgba(255, 144, 0, .72);
  --fn-home-orange-glow: rgba(255, 144, 0, .36);
  --fn-home-blue-glow: rgba(70, 217, 255, .32);
  --fn-home-green: #36ff00;
  --fn-home-green-soft: #8cff78;
}

.failurenetworks .fn-page {
  max-width: 1480px;
  padding-top: 226px;
}

.failurenetworks .fn-home-page {
  min-height: 85vh;
  display: flex;
  align-items: center;
  padding-top: 0px;
}

.failurenetworks .fn-home-grid {
  width: min(1280px, 100%);
  margin: 0 auto;
  display: grid;
  grid-template-columns: repeat(4, minmax(220px, 1fr));
  gap: 14px;
  align-items: stretch;
}

.failurenetworks .fn-home-tile {
  position: relative;
  isolation: isolate;
  display: flex;
  min-height: 150px;
  align-items: center;
  justify-content: center;
  padding: 18px;
  overflow: hidden;

  /* Keep the old button silhouette. */
  border-radius: 15px 50px;
  border: 10px solid var(--fn-home-tile-border);

  background-color: var(--fn-home-tile-bg);
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;

  color: var(--fn-home-green);
  text-align: center;
  text-decoration: none;
  font-size: clamp(18px, 1.65vw, 26px);
  font-weight: 900;
  line-height: 1.16;
  letter-spacing: -.035em;

  box-shadow: var(--fn-home-tile-shadow);

  text-shadow:
    0 0 12px rgba(54, 255, 0, .52),
    -1px 0 #000,
    0 1px #000,
    1px 0 #000,
    0 -1px #000;

  backdrop-filter: var(--fn-home-tile-backdrop-filter);
  -webkit-backdrop-filter: var(--fn-home-tile-backdrop-filter);

  transition:
    transform .16s ease,
    border-color .16s ease,
    color .16s ease,
    box-shadow .16s ease,
    filter .16s ease;
}

.failurenetworks .fn-home-tile::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -2;
  border-radius: inherit;
  background: var(--fn-home-tile-overlay);
}

.failurenetworks .fn-home-tile::after {
  content: '';
  position: absolute;
  inset: 10px;
  z-index: -1;
  border-radius: 9px 38px;
  border: 1px solid var(--fn-home-tile-inner-border);
  background: var(--fn-home-tile-inner-bg);
  pointer-events: none;
}

.failurenetworks .fn-home-tile span {
  position: relative;
  z-index: 2;
}

.failurenetworks .fn-home-tile:hover,
.failurenetworks .fn-home-tile:focus-visible {
  color: var(--fn-home-green-soft);
  text-decoration: none;
  transform: translateY(-3px) scale(1.018);
  border-color: rgba(173, 235, 255, .88);
  box-shadow:
    0 24px 70px rgba(0, 0, 0, .48),
    0 0 0 1px rgba(70, 217, 255, .28),
    0 0 26px var(--fn-home-blue-glow),
    0 0 44px rgba(255, 190, 70, .20),
    inset 0 1px 0 rgba(255, 255, 255, .11),
    inset 0 -38px 70px rgba(0, 0, 0, .24);
  filter: brightness(1.08) saturate(1.12);
}

.failurenetworks .fn-home-tile:active {
  transform: translateY(-1px) scale(1.006);
}

.failurenetworks .fn-home-tile--failurecontrol {
  background-image: url('../img/failurecontrol_logo.png'), url('../img/failurestream_logo.png');
  background-size: 76% auto, cover;
}

.failurenetworks .fn-home-tile--ismo {
  background-image: url('../img/ismonlaatu_logo.png');
  background-size: 80% auto;
}

.failurenetworks .fn-home-tile--failurelab {
  background-image: url('../img/failurelab_logo.png');
  background-size: cover;
}

.failurenetworks .fn-home-tile--fw3d {
  background-image: url('../img/fw3d_logo.png');
  background-size: cover;
}

.failurenetworks .fn-home-tile--ravintola {
  background-image: url('../img/ravintola_logo.png');
  background-size: cover;
}

.failurenetworks .fn-home-tile--kkp {
  background-image: url('../img/kkp_logo.png');
  background-size: cover;
}

.failurenetworks .fn-home-tile--empty {
  background-image: var(--fn-home-empty-bg);
}

@media (max-width: 1280px) {
  .failurenetworks .fn-home-grid {
    grid-template-columns: repeat(3, minmax(220px, 1fr));
  }
}

@media (max-width: 900px) {
  .failurenetworks .fn-home-page {
    align-items: start;
  }

  .failurenetworks .fn-home-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .failurenetworks .fn-page {
    padding-top: 194px;
  }

  .failurenetworks .fn-home-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .failurenetworks .fn-home-tile {
    min-height: 122px;
    border-width: 8px;
    font-size: 22px;
  }
}


/* =========================================================
   failuregrid\failuregrid.css
   ========================================================= */
:root {
  --fg-bg: #05090c;
  --fg-panel: rgba(8, 15, 20, .76);
  --fg-panel-2: rgba(13, 21, 28, .88);
  --fg-panel-soft: rgba(16, 27, 34, .58);
  --fg-line: rgba(129, 255, 28, .22);
  --fg-line-blue: rgba(70, 217, 255, .24);
  --fg-line-pink: rgba(255, 0, 120, .18);
  --fg-text: #e8eef5;
  --fg-muted: #9aa8b6;
  --fg-dim: #6d7886;
  --fg-lime: #b6ff2a;
  --fg-green: #35d36e;
  --fg-cyan: #46d9ff;
  --fg-orange: #ffc247;
  --fg-red: #ff4b6e;
  --fg-radius: 22px;
  --fg-shadow: 0 24px 80px rgba(0, 0, 0, .48);
}

* { box-sizing: border-box; }

body.failuregrid-page {
  background:
    radial-gradient(circle at 12% 15%, rgba(70, 217, 255, .14), transparent 28%),
    radial-gradient(circle at 88% 8%, rgba(255, 0, 120, .10), transparent 26%),
    radial-gradient(circle at 60% 52%, rgba(182, 255, 42, .09), transparent 38%),
    linear-gradient(180deg, #071015 0%, #05090c 42%, #070b0d 100%);
  color: var(--fg-text);
}

body.failuregrid-page::after {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: -1;
  background-image:
    linear-gradient(rgba(255,255,255,.018) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.014) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,.9), rgba(0,0,0,.25));
}

/* FailureHeaderâ„¢ add-on: compact horizontal product nav */
.fg-main-nav {
  position: fixed;
  top: 24px;
  right: 24px;
  z-index: 44;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 999px;
  background: rgba(2, 6, 9, .54);
  backdrop-filter: blur(18px) saturate(1.16);
  -webkit-backdrop-filter: blur(18px) saturate(1.16);
  box-shadow: 0 16px 48px rgba(0,0,0,.36), inset 0 1px 0 rgba(255,255,255,.05);
}

.fg-main-nav a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  padding: 8px 12px;
  border-radius: 999px;
  color: #cbd5df;
  text-decoration: none;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .01em;
}

.fg-main-nav a span { color: var(--fg-lime); opacity: .9; }
.fg-main-nav a:hover,
.fg-main-nav a.active {
  color: #061006;
  background: linear-gradient(180deg, var(--fg-lime), #72d820);
  box-shadow: 0 0 24px rgba(182,255,42,.24);
}
.fg-main-nav a:hover span,
.fg-main-nav a.active span { color: #061006; }

.fn-side-nav a.active {
  color: #071006;
  background: linear-gradient(180deg, rgba(182,255,42,.95), rgba(81,205,55,.82));
  border-color: rgba(182,255,42,.62);
  box-shadow: 0 0 22px rgba(182,255,42,.25);
}
.fn-side-nav a.active .fn-nav-icon,
.fn-side-nav a.active .fn-nav-label { color: #071006; text-shadow: none; }

.fg-page {
  position: relative;
  z-index: 4;
  width: min(1540px, calc(100vw - 70px));
  margin: 0 auto;
  padding: var(--fn-content-gap) 26px 80px 96px;
}

.fg-section { margin: 28px 0; }

.fg-glass {
  position: relative;
  border: 1px solid rgba(129,255,28,.14);
  border-radius: var(--fg-radius);
  background:
    linear-gradient(180deg, rgba(255,255,255,.045), transparent 34%),
    linear-gradient(180deg, rgba(11, 19, 25, .82), rgba(6, 10, 14, .76));
  box-shadow: var(--fg-shadow), inset 0 1px 0 rgba(255,255,255,.05);
  backdrop-filter: blur(16px) saturate(1.12);
  -webkit-backdrop-filter: blur(16px) saturate(1.12);
  overflow: hidden;
}

.fg-glass::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle at 10% 0%, rgba(182,255,42,.11), transparent 28%),
    radial-gradient(circle at 100% 100%, rgba(70,217,255,.10), transparent 32%);
}

.fg-glass > * { position: relative; z-index: 1; }

.hero {
  display: grid;
  grid-template-columns: minmax(380px, .82fr) minmax(560px, 1.18fr);
  gap: 34px;
  align-items: center;
  min-height: 640px;
  padding: 46px;
}

.kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 18px;
  padding: 7px 12px;
  border: 1px solid rgba(182,255,42,.28);
  border-radius: 999px;
  background: rgba(182,255,42,.08);
  color: var(--fg-lime);
  font-size: 12px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .09em;
}

.hero h1,
.page-hero h1 {
  margin: 0;
  font-size: clamp(54px, 6vw, 105px);
  line-height: .92;
  letter-spacing: -.075em;
  color: var(--fg-lime);
  text-shadow: 0 0 38px rgba(182,255,42,.26);
}

.hero .lead,
.page-hero .lead {
  max-width: 700px;
  margin: 24px 0 0;
  color: #eaf2f8;
  font-size: clamp(23px, 2.1vw, 34px);
  line-height: 1.2;
  letter-spacing: -.035em;
}

.hero p,
.page-hero p,
.copy p {
  color: #b8c6d4;
  font-size: 16px;
  line-height: 1.72;
}

.hero-list {
  display: grid;
  gap: 12px;
  margin: 26px 0 30px;
  padding: 0;
  list-style: none;
}
.hero-list li { display: flex; gap: 12px; color: #dce8f4; font-weight: 800; }
.hero-list b { color: var(--fg-lime); }

.cta-row { display: flex; flex-wrap: wrap; gap: 14px; align-items: center; }
.btn-fg {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 22px;
  border: 1px solid rgba(182,255,42,.52);
  border-radius: 14px;
  background: rgba(182,255,42,.08);
  color: #ecffd4;
  font-weight: 900;
  text-decoration: none;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06);
}
.btn-fg.primary {
  color: #091007;
  background: linear-gradient(180deg, #caff35, #8ee322);
  box-shadow: 0 0 34px rgba(182,255,42,.22), inset 0 1px 0 rgba(255,255,255,.28);
}
.btn-fg:hover { transform: translateY(-1px); filter: brightness(1.08); }

.browser-frame {
  border: 1px solid rgba(157, 184, 207, .25);
  border-radius: 24px;
  background: linear-gradient(180deg, rgba(22,30,38,.95), rgba(8,12,16,.94));
  box-shadow: 0 30px 110px rgba(0,0,0,.58), 0 0 55px rgba(70,217,255,.10), inset 0 1px 0 rgba(255,255,255,.07);
  overflow: hidden;
}
.browser-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 13px 16px;
  border-bottom: 1px solid rgba(255,255,255,.07);
  background: rgba(0,0,0,.22);
}
.dot { width: 10px; height: 10px; border-radius: 50%; background: #ff5f56; }
.dot:nth-child(2) { background: #ffbd2e; }
.dot:nth-child(3) { background: #27c93f; }
.url-pill {
  flex: 1;
  margin-left: 12px;
  padding: 7px 14px;
  border-radius: 999px;
  background: rgba(255,255,255,.06);
  color: #8392a1;
  font-size: 12px;
  text-align: center;
}
.browser-frame img { display: block; width: 100%; height: auto; }

.capability-strip {
  display: grid;
  grid-template-columns: repeat(8, minmax(130px, 1fr));
  gap: 14px;
}
.mini-card,
.feature-card,
.module-card,
.micro-card,
.bullet-card {
  border: 1px solid rgba(125, 165, 190, .19);
  border-radius: 18px;
  background: linear-gradient(180deg, rgba(19, 31, 39, .74), rgba(7, 12, 16, .68));
  box-shadow: 0 16px 45px rgba(0,0,0,.32), inset 0 1px 0 rgba(255,255,255,.045);
}
.mini-card {
  min-height: 156px;
  padding: 22px 18px;
  border-color: rgba(182,255,42,.25);
}
.mini-card .icon,
.feature-card .icon,
.micro-card .icon,
.bullet-card .icon { color: var(--fg-lime); font-size: 34px; line-height: 1; text-shadow: 0 0 24px rgba(182,255,42,.30); }
.mini-card h3,
.feature-card h3,
.module-card h3,
.bullet-card h3 { margin: 14px 0 8px; color: #f3f8fd; font-size: 18px; line-height: 1.12; }
.mini-card p,
.feature-card p,
.module-card p,
.micro-card p,
.bullet-card p { margin: 0; color: #9facba; font-size: 13px; line-height: 1.52; }

.section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 24px;
  margin: 0 0 18px;
}
.section-heading h2 { margin: 0; font-size: clamp(30px, 3vw, 52px); line-height: 1.02; letter-spacing: -.055em; }
.section-heading p { max-width: 720px; margin: 0; color: #aab8c6; line-height: 1.7; }

.feature-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 14px; }
.feature-card { padding: 24px; min-height: 220px; }

.module-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 18px; }
.module-card { overflow: hidden; }
.module-card img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; display: block; border-bottom: 1px solid rgba(255,255,255,.08); filter: saturate(1.08); }
.module-card .module-body { padding: 18px; }
.module-card small { display: inline-flex; color: var(--fg-lime); font-weight: 900; margin-top: 12px; }

.failuregrid-mockups .module-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.split-section { display: grid; grid-template-columns: .82fr 1.18fr; gap: 22px; padding: 28px; }
.battery-visual {
  min-height: 330px;
  display: grid;
  align-content: end;
  padding: 30px;
  border-radius: 20px;
  background:
    radial-gradient(circle at 40% 50%, rgba(182,255,42,.28), transparent 33%),
    linear-gradient(145deg, rgba(10, 22, 22, .85), rgba(4, 8, 12, .86));
  border: 1px solid rgba(182,255,42,.20);
}
.fake-battery {
  position: relative;
  width: min(520px, 100%);
  aspect-ratio: 2.8 / 1;
  border: 2px solid rgba(182,255,42,.65);
  border-radius: 28px;
  background: linear-gradient(135deg, rgba(182,255,42,.18), rgba(70,217,255,.10) 50%, rgba(0,0,0,.24));
  box-shadow: 0 0 42px rgba(182,255,42,.30), inset 0 0 38px rgba(182,255,42,.10);
  display: grid;
  place-items: center;
  color: #cfff6b;
  font-size: clamp(30px, 4vw, 58px);
  font-weight: 900;
  letter-spacing: -.05em;
}
.fake-battery::after {
  content: '';
  position: absolute;
  right: -28px;
  top: 32%;
  width: 26px;
  height: 36%;
  border-radius: 0 12px 12px 0;
  background: rgba(182,255,42,.58);
  box-shadow: 0 0 24px rgba(182,255,42,.35);
}
.bullet-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.bullet-card { padding: 18px; min-height: 132px; }

.confidence-grid { display: grid; grid-template-columns: repeat(8, 1fr); gap: 1px; border-radius: 20px; overflow: hidden; border: 1px solid rgba(125,165,190,.17); }
.confidence-cell { padding: 20px 18px; background: rgba(7, 13, 17, .66); border-right: 1px solid rgba(255,255,255,.055); }
.confidence-cell h3 { margin: 0 0 10px; color: var(--fg-lime); font-size: 15px; }
.confidence-cell ul { margin: 0; padding-left: 18px; color: #b7c4d1; font-size: 13px; line-height: 1.72; }

.micro-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 12px; }
.micro-card { padding: 17px; min-height: 128px; }
.micro-card h3 { margin: 10px 0 6px; font-size: 15px; }

.page-hero { display: grid; grid-template-columns: 1fr .78fr; gap: 28px; align-items: center; padding: 42px; }
.summary-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 24px; }
.summary-card { padding: 18px; border-radius: 16px; background: rgba(182,255,42,.055); border: 1px solid rgba(182,255,42,.20); }
.summary-card b { color: var(--fg-lime); display: block; margin-bottom: 6px; }
.summary-card span { color: #adbac8; font-size: 13px; line-height: 1.45; }

.economics-layout { display: grid; grid-template-columns: .58fr 1fr .88fr; gap: 18px; align-items: stretch; }
.economics-layout .copy { padding: 24px; }
.sales-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }

.screenshot-panel { overflow: hidden; border: 1px solid rgba(70,217,255,.18); border-radius: 18px; background: rgba(0,0,0,.22); }
.screenshot-panel img { width: 100%; height: 100%; object-fit: cover; display: block; }

.diagnostic-layout,
.integration-layout { display: grid; grid-template-columns: .62fr 1fr; gap: 18px; }
.integration-logos { display: grid; grid-template-columns: repeat(6, 1fr); gap: 1px; border-radius: 18px; overflow: hidden; border: 1px solid rgba(255,255,255,.08); }
.integration-logos > div { padding: 20px 18px; background: rgba(0,0,0,.25); }
.integration-logos b { display: block; color: #f2f7fd; margin-bottom: 8px; }
.integration-logos span { color: #9facba; font-size: 12px; line-height: 1.5; }

.cta-footer { padding: 42px; text-align: center; }
.cta-footer h2 { margin: 0; font-size: clamp(36px, 4vw, 70px); color: var(--fg-lime); letter-spacing: -.06em; }
.cta-footer p { max-width: 820px; margin: 16px auto 26px; color: #c1cedb; line-height: 1.7; }
.footer-links { margin-top: 30px; display: grid; grid-template-columns: 1fr auto 1fr; gap: 18px; align-items: center; color: #71808f; font-size: 12px; }
.footer-links .brand { justify-self: start; color: #e8eef5; font-size: 18px; }
.footer-links .badgebox { justify-self: end; padding: 14px 18px; border-radius: 16px; border: 1px solid rgba(182,255,42,.25); color: #cbd8e4; }

@media (max-width: 1260px) {
  .fg-main-nav { display: none; }
  .hero, .page-hero, .split-section, .economics-layout, .diagnostic-layout, .integration-layout { grid-template-columns: 1fr; }
  .capability-strip { grid-template-columns: repeat(4, 1fr); }
  .feature-grid { grid-template-columns: repeat(3, 1fr); }
  .module-grid { grid-template-columns: repeat(2, 1fr); }
  .confidence-grid { grid-template-columns: repeat(4, 1fr); }
  .micro-grid { grid-template-columns: repeat(3, 1fr); }
  .summary-row, .bullet-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 760px) {
  .fg-page { width: 100%; padding: var(--fn-content-gap) 14px 60px 72px; }
  .hero, .page-hero, .split-section, .cta-footer { padding: 24px; }
  .capability-strip, .feature-grid, .module-grid, .confidence-grid, .micro-grid, .summary-row, .bullet-grid, .sales-grid, .integration-logos { grid-template-columns: 1fr; }
  .section-heading { display: block; }
  .section-heading p { margin-top: 10px; }
  .footer-links { grid-template-columns: 1fr; text-align: center; }
  .footer-links .brand, .footer-links .badgebox { justify-self: center; }
}


/* BatMON operations page */
.terminal-panel {
  overflow: hidden;
  border: 1px solid rgba(70,217,255,.18);
  border-radius: 22px;
  background: rgba(0,0,0,.33);
  box-shadow: inset 0 0 44px rgba(70,217,255,.055), 0 18px 48px rgba(0,0,0,.24);
}
.terminal-panel pre,
.ops-card pre {
  margin: 0;
  padding: 18px;
  overflow-x: auto;
  white-space: pre;
  color: #d5f3ff;
  background: rgba(1,5,8,.70);
  border-top: 1px solid rgba(255,255,255,.06);
  font-size: 12px;
  line-height: 1.65;
}
.terminal-panel code,
.ops-card code,
.mini-card code,
.feature-card code,
.bullet-card code,
.timeline-list code {
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}
.ops-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}
.ops-grid .section-heading { grid-column: 1 / -1; }
.ops-card {
  padding: 20px;
  border-radius: 22px;
  border: 1px solid rgba(255,255,255,.08);
}
.ops-card.wide { grid-column: 1 / -1; }
.ops-card h3 { margin: 0 0 12px; color: #f3f8ff; font-size: 18px; }
.ops-card p { color: #aebccc; line-height: 1.65; margin: 12px 0 0; }
.ops-card pre { border-radius: 14px; border: 1px solid rgba(70,217,255,.13); }
.inline-link { color: var(--fg-lime); font-weight: 800; text-decoration: none; }
.inline-link:hover { text-decoration: underline; }
.timeline-list { display: grid; gap: 10px; }
.timeline-list > div {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 12px;
  align-items: center;
  padding: 14px;
  border-radius: 16px;
  background: rgba(0,0,0,.26);
  border: 1px solid rgba(255,255,255,.07);
}
.timeline-list b {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  background: rgba(182,255,42,.16);
  color: var(--fg-lime);
}
.timeline-list span { color: #bdc9d6; line-height: 1.5; }

@media (max-width: 900px) {
  .ops-grid { grid-template-columns: 1fr; }
  .ops-card.wide { grid-column: auto; }
}

/* =========================================================
   failuremotd\failuremotd.css
   ========================================================= */
/* FailureMOTD page-specific styles only.
   Shared system lives in fn-header.css, fn-nav.css and fn-content.css.
*/

/* Match FailureWatt page width and vertical placement */
.failuremotd .fn-page {
  max-width: 1480px;
}

/* Match FailureWatt hero column sizing */
.failuremotd .fn-hero-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(420px, .95fr);
  gap: 22px;
}

/* Match FailureWatt left hero card size */
.failuremotd .fn-hero-copy {
  min-height: 520px;
  padding: 38px 42px;
}

/* Match FailureWatt hero title scale */
.failuremotd h1 {
  font-size: clamp(42px, 6.2vw, 82px);
}

/* MOTD right-side visual card, same physical size as FailureWatt terminal card */
.failuremotd .fn-logo-card {
  display: flex;
  align-items: center;
  justify-content: center;

  min-height: 520px;
  padding: 38px 42px;

  background:
    linear-gradient(
      180deg,
      rgba(16, 22, 30, .52),
      rgba(4, 8, 13, .62)
    );
}

/* Keep logo large enough inside the now bigger card */
.failuremotd .fn-logo-card img {
  max-width: 100%;
  max-height: 420px;
  object-fit: contain;
  filter: drop-shadow(0 0 30px rgba(213, 138, 17, .40));
}

.failuremotd .fn-command-card {
  scroll-margin-top: 190px;
}

/* Use same desktop collapse point as FailureWatt */
@media (max-width: 1120px) {
  .failuremotd .fn-hero-grid {
    grid-template-columns: 1fr;
  }

  .failuremotd .fn-logo-card {
    min-height: 360px;
  }

  .failuremotd .fn-logo-card img {
    max-height: 300px;
  }
}

@media (max-width: 700px) {
  .failuremotd .fn-hero-copy,
  .failuremotd .fn-card {
    padding: 22px;
  }

  .failuremotd .fn-logo-card {
    min-height: 280px;
  }

  .failuremotd .fn-logo-card img {
    max-height: 240px;
  }
}

/* =========================================================
   failurents\failurents.css
   ========================================================= */
/* FailureNTSâ„¢ page-specific styles only.
   Shared system lives in fn-header.css, fn-nav.css and fn-content.css.
*/

.failurents .fn-page {
  max-width: 1480px;
}

.failurents .fn-hero-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(420px, .95fr);
  gap: 22px;
}

.failurents .fn-hero-grid > .fn-card {
  margin: 0;
}

.failurents .fn-hero-copy {
  min-height: 520px;
  padding: 38px 42px;
}

.failurents h1 {
  font-size: clamp(42px, 6.2vw, 82px);
}

.failurents .repo-path {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.failurents .repo-path .slash {
  color: var(--fn-dim);
  opacity: .55;
}

.failurents .app-preview {
  min-height: 520px;
  padding: 0;
  overflow: hidden;
  background:
    linear-gradient(
      180deg,
      rgba(4, 8, 13, .66),
      rgba(4, 8, 13, .48)
    );
}

.failurents .preview-titlebar {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 44px;
  padding: 0 16px;
  border-bottom: 1px solid var(--fn-border);
  background: rgba(1, 4, 9, .36);
}

.failurents .dot {
  width: 11px;
  height: 11px;
  border-radius: 999px;
  background: #30363d;
}

.failurents .dot:nth-child(1) { background: #f85149; }
.failurents .dot:nth-child(2) { background: #d29922; }
.failurents .dot:nth-child(3) { background: #3fb950; }

.failurents .preview-title {
  margin-left: 6px;
  color: var(--fn-muted);
  font-size: 12px;
}

.failurents .preview-body {
  display: grid;
  grid-template-columns: 185px minmax(0, 1fr);
  min-height: 476px;
}

.failurents .preview-sidebar {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px;
  border-right: 1px solid var(--fn-border);
  background: rgba(13, 17, 23, .34);
}

.failurents .preview-search,
.failurents .preview-folder,
.failurents .preview-note,
.failurents .composer {
  border: 1px solid var(--fn-border);
  border-radius: 10px;
  background: rgba(16, 22, 30, .46);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.failurents .preview-search,
.failurents .composer {
  padding: 10px 12px;
  color: var(--fn-muted);
  font-size: 12px;
}

.failurents .preview-folder {
  display: flex;
  gap: 7px;
  align-items: center;
  padding: 8px 9px;
  color: #cbd5df;
  font-size: 12px;
}

.failurents .preview-folder b {
  margin-left: auto;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(53, 211, 110, .16);
  color: var(--fn-green);
}

.failurents .preview-folder.active {
  border-color: rgba(53, 211, 110, .36);
}

.failurents .preview-note {
  padding: 9px;
  color: var(--fn-muted);
  font-size: 11px;
  line-height: 1.35;
}

.failurents .preview-feed {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px;
}

.failurents .bubble {
  max-width: 86%;
  padding: 13px 14px;
  border: 1px solid var(--fn-border);
  border-radius: 16px;
  background: rgba(16, 22, 30, .54);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.failurents .bubble.right {
  align-self: flex-end;
  border-color: rgba(53, 211, 110, .25);
}

.failurents .bubble.left {
  align-self: flex-start;
  border-color: rgba(70, 217, 255, .28);
}

.failurents .bubble strong {
  display: block;
  margin-bottom: 8px;
  color: #f0f6fc;
  font-size: 13px;
}

.failurents .bubble p {
  margin: 0;
  color: #cbd5df;
  font-size: 12px;
  line-height: 1.55;
}

.failurents .bubble small {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 12px;
}

.failurents .bubble small span {
  display: inline-flex;
  align-items: center;
  padding: 3px 7px;
  border: 1px solid rgba(53, 211, 110, .30);
  border-radius: 999px;
  background: rgba(53, 211, 110, .10);
  color: #89f5ad;
  font-size: 10px;
}

.failurents .composer {
  margin-top: auto;
}

.failurents .repo-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 22px;
  align-items: start;
  margin-top: 22px;
}

.failurents .readme-card {
  margin: 0;
  padding: 0;
  overflow: hidden;
}

.failurents .readme-header {
  display: flex;
  gap: 10px;
  align-items: center;
  padding: 14px 18px;
  border-bottom: 1px solid var(--fn-border);
  background: rgba(16, 22, 30, .50);
}

.failurents .file-icon {
  display: inline-flex;
  width: 28px;
  height: 28px;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--fn-border);
  border-radius: 8px;
  background: rgba(13, 17, 23, .50);
  color: var(--fn-muted);
}

.failurents .content-block {
  padding: clamp(20px, 3vw, 34px);
  border-bottom: 1px solid var(--fn-border);
}

.failurents .content-block:last-child {
  border-bottom: 0;
}

.failurents .content-block h2 {
  margin: 0 0 16px;
}

.failurents .content-block h3 {
  margin: 0 0 8px;
  font-size: 16px;
}

.failurents .content-block p {
  margin: 0 0 16px;
}

.failurents code {
  padding: 2px 5px;
  border: 1px solid rgba(110, 132, 156, .20);
  border-radius: 6px;
  background: rgba(255, 255, 255, .045);
  color: #ffdfb6;
}

.failurents pre code {
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
}

.failurents .feature-grid,
.failurents .diagram-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 20px;
}

.failurents .feature-card,
.failurents .diagram-card,
.failurents .code-window,
.failurents .release-note,
.failurents .security-list div {
  border: 1px solid var(--fn-border);
  border-radius: 12px;
  background: rgba(13, 17, 23, .44);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.failurents .feature-card {
  min-height: 160px;
  padding: 18px;
}

.failurents .feature-kicker {
  display: inline-flex;
  margin-bottom: 22px;
  color: var(--fn-green);
  font-size: 12px;
  font-weight: 900;
}

.failurents .feature-card p,
.failurents .diagram-card li,
.failurents .security-list span,
.failurents .side-card p,
.failurents .file-list span,
.failurents .roadmap-list li {
  color: var(--fn-muted);
}

.failurents .steps {
  display: grid;
  gap: 10px;
}

.failurents .steps div {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
}

.failurents .steps span {
  display: inline-flex;
  width: 30px;
  height: 30px;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(53, 211, 110, .34);
  border-radius: 999px;
  background: rgba(53, 211, 110, .12);
  color: var(--fn-green);
  font-weight: 900;
}

.failurents .steps p {
  margin: 4px 0 0;
}

.failurents .callout {
  margin-top: 22px;
  border-color: rgba(70, 217, 255, .35);
  border-left-color: var(--fn-blue);
  background: rgba(70, 217, 255, .075);
}

.failurents .diagram-card {
  padding: 18px;
}

.failurents .diagram-card ol {
  margin: 0;
  padding-left: 20px;
}

.failurents .diagram-card li {
  margin: 8px 0;
  line-height: 1.55;
}

.failurents .code-window {
  overflow: hidden;
  margin-top: 14px;
}

.failurents .code-window-title {
  padding: 10px 14px;
  border-bottom: 1px solid var(--fn-border);
  background: rgba(16, 22, 30, .50);
  color: var(--fn-muted);
  font-size: 12px;
}

.failurents .code-window pre {
  margin: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}

.failurents .doc-link {
  margin-top: 16px !important;
}

.failurents .security-list {
  display: grid;
  gap: 10px;
}

.failurents .security-list div {
  display: grid;
  grid-template-columns: 220px minmax(0, 1fr);
  gap: 14px;
  padding: 14px;
}

.failurents .security-list strong {
  color: #f0f6fc;
}

.failurents .release-note {
  display: grid;
  grid-template-columns: 140px minmax(0, 1fr);
  gap: 18px;
  padding: 18px;
}

.failurents .release-version {
  display: inline-flex;
  width: fit-content;
  height: fit-content;
  padding: 7px 10px;
  border: 1px solid rgba(53, 211, 110, .34);
  border-radius: 999px;
  background: rgba(53, 211, 110, .12);
  color: var(--fn-green);
  font-weight: 900;
}

.failurents .repo-sidebar {
  position: sticky;
  top: 170px;
  display: grid;
  gap: 14px;
}

.failurents .repo-sidebar .fn-card {
  margin: 0;
}

.failurents .side-card {
  padding: 18px;
}

.failurents .side-card h2 {
  margin: 0 0 12px;
  font-size: 16px;
}

.failurents .side-card p {
  margin: 0;
  line-height: 1.55;
}

.failurents .topic-row {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-top: 14px;
}

.failurents .topic-row span {
  display: inline-flex;
  align-items: center;
  padding: 5px 8px;
  border: 1px solid var(--fn-border);
  border-radius: 999px;
  background: rgba(255, 255, 255, .045);
  color: var(--fn-blue);
  font-size: 11px;
}

.failurents .stats-card {
  display: grid;
  gap: 10px;
}

.failurents .stat {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--fn-border);
}

.failurents .stat span {
  color: var(--fn-muted);
}

.failurents .stat strong {
  color: #f0f6fc;
  text-align: right;
}

.failurents .file-list,
.failurents .roadmap-list {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.failurents .file-list li {
  display: grid;
  gap: 4px;
}

.failurents .file-list code {
  width: fit-content;
}

.failurents .roadmap-list li {
  position: relative;
  padding-left: 18px;
}

.failurents .roadmap-list li::before {
  content: 'â—‡';
  position: absolute;
  left: 0;
  color: var(--fn-green);
}

.failurents .screenshot-block p {
  color: var(--fn-muted);
  line-height: 1.7;
}

.failurents .screenshot-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-top: 18px;
}

.failurents .screenshot-card {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--fn-border);
  border-radius: 14px;
  background: rgba(13, 17, 23, .52);
  box-shadow: 0 18px 45px rgba(0, 0, 0, .22);
}

.failurents .screenshot-card a {
  display: block;
  background: #010409;
}

.failurents .screenshot-card img {
  display: block;
  width: 100%;
  height: auto;
  border-bottom: 1px solid var(--fn-border);
}

.failurents .screenshot-card figcaption {
  min-height: 54px;
  padding: 12px 14px;
  color: var(--fn-muted);
  font-size: 13px;
  line-height: 1.45;
}

.failurents .screenshot-wide {
  grid-column: 1 / -1;
}

.failurents .install-command {
  margin: 18px 0;
}

.failurents .compact-steps {
  margin-top: 18px;
}

.failurents .download-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 16px;
}

.failurents .download-card {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-height: 126px;
}

.failurents .download-card strong {
  overflow-wrap: anywhere;
  color: var(--fn-blue);
}

.failurents .download-card span {
  color: var(--fn-muted);
  font-size: 13px;
  line-height: 1.45;
}

.failurents .download-card:hover {
  text-decoration: none;
  border-color: rgba(70, 217, 255, .52);
}

@media (max-width: 1120px) {
  .failurents .fn-hero-grid,
  .failurents .repo-layout {
    grid-template-columns: 1fr;
  }

  .failurents .repo-sidebar {
    position: static;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 860px) {
  .failurents .screenshot-grid,
  .failurents .download-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 760px) {
  .failurents .preview-body {
    grid-template-columns: 1fr;
  }

  .failurents .preview-sidebar {
    border-right: 0;
    border-bottom: 1px solid var(--fn-border);
  }

  .failurents .feature-grid,
  .failurents .diagram-grid,
  .failurents .repo-sidebar {
    grid-template-columns: 1fr;
  }

  .failurents .security-list div,
  .failurents .release-note {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   failurewatt\failurewatt.css
   ========================================================= */
/* FailureWattâ„¢ page-specific styles only. Shared system lives in fn-header.css, fn-nav.css and fn-content.css. */

.failurewatt .fn-page {
  max-width: 1480px;
}

.failurewatt .fn-hero-grid {
  grid-template-columns: minmax(0, 1.45fr) minmax(420px, .95fr);
}

.failurewatt .fn-hero-copy {
  min-height: 520px;
  padding: 38px 42px;
}

.failurewatt h1 {
  font-size: clamp(42px, 6.2vw, 82px);
}

.failurewatt .fn-terminal {
  position: relative;
  min-height: 520px;
  padding: 46px 18px 18px;
  background:
    linear-gradient(
      180deg,
      rgba(4, 8, 13, .72),
      rgba(4, 8, 13, .54)
    );
}

.failurewatt .fn-terminal::after {
  content: '';
  position: absolute;
  top: 18px;
  left: 18px;
  z-index: 2;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #ff595e;
  box-shadow: 18px 0 0 #ffca3a, 36px 0 0 #6bdc72;
}

.failurewatt .fn-terminal-path {
  position: absolute;
  top: 14px;
  left: 82px;
  z-index: 2;
  color: var(--fn-dim);
  font-size: 13px;
}

.failurewatt .fn-terminal pre {
  margin: 0;
}

.failurewatt .fn-section {
  margin-top: 22px;
  padding: 30px;
}

.failurewatt .fn-flow {
  display: grid;
  grid-template-columns: repeat(5, minmax(0,1fr));
  gap: 12px;
  margin-top: 18px;
}

.failurewatt .fn-flow-step {
  position: relative;
  min-height: 112px;
  padding: 18px 16px;
  border: 1px solid rgba(70, 217, 255, .25);
  border-radius: 14px;
  background: rgba(7, 16, 24, .54);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

.failurewatt .fn-flow-step::after {
  content: 'â†’';
  position: absolute;
  right: -15px;
  top: 42%;
  color: var(--fn-blue);
  font-size: 24px;
}

.failurewatt .fn-flow-step:last-child::after { content: ''; }
.failurewatt .fn-flow-step span { display: block; color: var(--fn-dim); font-size: 12px; margin-bottom: 8px; }
.failurewatt .fn-flow-step strong { color: var(--fn-content-text); }

.failurewatt .fn-table {
  width: 100%;
  border-collapse: collapse;
  overflow: hidden;
  border-radius: 12px;
}

.failurewatt .fn-table th,
.failurewatt .fn-table td {
  border-bottom: 1px solid rgba(110, 132, 156, .18);
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
}

.failurewatt .fn-table th {
  color: #f2f6fa;
  font-size: 13px;
  background: rgba(255, 255, 255, .05);
}

.failurewatt .fn-table td {
  color: #cbd5df;
  font-size: 14px;
}

.failurewatt .fn-table tr:last-child td { border-bottom: 0; }

.failurewatt .fn-downloads {
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 14px;
}

.failurewatt .fn-download-card {
  display: block;
  min-height: 118px;
  background: rgba(255, 255, 255, .045);
}

.failurewatt .fn-download-card strong {
  display: block;
  color: var(--fn-content-text);
  margin-bottom: 8px;
}

.failurewatt .fn-download-card span {
  color: var(--fn-muted);
  font-size: 13px;
  line-height: 1.5;
}

.failurewatt .fn-download-card:hover {
  text-decoration: none;
  border-color: rgba(70, 217, 255, .52);
}

@media (max-width: 1120px) {
  .failurewatt .fn-hero-grid { grid-template-columns: 1fr; }
  .failurewatt .fn-flow { grid-template-columns: 1fr; }
  .failurewatt .fn-flow-step::after { display: none; }
  .failurewatt .fn-downloads { grid-template-columns: repeat(2, minmax(0,1fr)); }
}

@media (max-width: 700px) {
  .failurewatt .fn-hero-copy,
  .failurewatt .fn-section { padding: 22px; }
  .failurewatt .fn-terminal { min-height: auto; }
  .failurewatt .fn-downloads { grid-template-columns: 1fr; }
}

/* =========================================================
   failureebike\failureebike.css
   ========================================================= */
/* Failure eBike page-specific styles only. Shared glass/header/nav lives in root CSS files. */

.failureebike .fn-page {
  max-width: 1480px;
}

.failureebike-page .flex-center {
  margin-bottom: 22px;
}

.failureebike-page .row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 18px;
  align-items: stretch;
}

.failureebike-page .col-sm-12 {
  grid-column: 1 / -1;
}

.failureebike-page .col-sm-4 {
  grid-column: span 2;
}

.failureebike-page .col-sm-3 {
  grid-column: span 1;
}

.failureebike-page .col-sm-2 {
  grid-column: span 1;
}

.failureebike-page .panel.panel-default {
  height: 100%;
}

.failureebike-page .panel-heading {
  align-items: center;
}

.failureebike-page .panel-heading > div {
  margin-left: auto;
}

.failureebike-page .panel-body {
  min-height: unset !important;
}

.failureebike-page .enterShop {
  min-height: 240px;
  display: grid;
  grid-template-columns: repeat(2, minmax(220px, 1fr));
  gap: 22px;
  align-items: center;
  justify-content: center;
}

.failureebike-page .enterShop a {
  display: block;
}

.failureebike-page .button-ali,
.failureebike-page .button-ama {
  width: 100%;
  min-height: 150px;
  border-radius: 15px 50px;
  border: 10px solid rgba(255, 144, 0, .76);
  background-color: rgba(69, 74, 76, .45);
  background-repeat: no-repeat;
  background-position: center;
  background-size: min(80%, 340px) auto;
  box-shadow:
    0 18px 45px rgba(0,0,0,.32),
    0 0 24px rgba(255,144,0,.22),
    inset 0 1px 0 rgba(255,255,255,.08);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

.failureebike-page .button-ali {
  background-image: url('../failureebike/img/Aliexpress_logo.svg');
}

.failureebike-page .button-ama {
  background-image: url('../failureebike/img/Amazon_logo.svg');
}

.failureebike-page .button-ali:hover,
.failureebike-page .button-ama:hover {
  border-color: rgba(70,217,255,.72);
  box-shadow:
    0 18px 45px rgba(0,0,0,.36),
    0 0 30px rgba(70,217,255,.25),
    inset 0 1px 0 rgba(255,255,255,.10);
}

.failureebike-page .amazon-sell,
.failureebike-page .shopItem {
  margin: 14px 0;
  text-align: center;
}

.failureebike-page .amazon-sell img,
.failureebike-page .shopItem img {
  max-width: 100%;
  height: auto;
}

.failureebike-page .button-pos {
  width: 100%;
  margin-top: 12px;
}

.failureebike-page .checkbox,
.failureebike-page .switch {
  color: var(--fn-muted);
}

.failureebike-download-card {
  max-width: 1200px;
  margin: 0 auto 38px;
}

.failureebike-download-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.failureebike-download {
  display: flex;
  flex-direction: column;
  min-height: 132px;
  padding: 18px;
  border: 1px solid rgba(255, 144, 0, .28);
  border-radius: 8px;
  background: rgba(255, 144, 0, .06);
  color: #e8eef5;
  text-decoration: none;
}

.failureebike-download strong {
  color: var(--fn-orange);
  font-size: 15px;
}

.failureebike-download span {
  margin-top: 10px;
  color: var(--fn-muted);
  font-size: 13px;
  line-height: 1.45;
}

.failureebike-download:hover,
.failureebike-download:focus {
  border-color: rgba(70, 217, 255, .56);
  box-shadow: 0 0 26px rgba(70, 217, 255, .16);
}

@media (max-width: 1120px) {
  .failureebike-page .row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .failureebike-page .col-sm-4,
  .failureebike-page .col-sm-3,
  .failureebike-page .col-sm-2 {
    grid-column: span 1;
  }

  .failureebike-download-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .failureebike-page .row,
  .failureebike-page .enterShop {
    grid-template-columns: 1fr;
  }

  .failureebike-page .col-sm-4,
  .failureebike-page .col-sm-3,
  .failureebike-page .col-sm-2 {
    grid-column: 1 / -1;
  }

  .failureebike-download-grid {
    grid-template-columns: 1fr;
  }
}

/* =========================================================
   failurefolio\failurefolio.css
   ========================================================= */
/* FailureFolio page-specific styles only. */

.failurefolio .fn-page {
  max-width: 1480px;
}

.failurefolio .fn-logo-card img {
  opacity: .92;
}

.failurefolio-gallery-card {
  margin-top: 22px;
}

.failurefolio-archive-card {
  margin-top: 22px;
}

.failurefolio-archive-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.failurefolio-archive-grid a {
  display: grid;
  gap: 10px;
  color: #e8eef5;
  text-decoration: none;
}

.failurefolio-archive-grid img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  border: 1px solid rgba(110, 132, 156, .24);
  border-radius: 8px;
  background: rgba(0, 0, 0, .28);
}

.failurefolio-archive-grid span {
  color: var(--fn-muted);
  font-size: 13px;
  font-weight: 800;
}

.failurefolio-archive-grid a:hover img,
.failurefolio-archive-grid a:focus img {
  border-color: rgba(70, 217, 255, .52);
  box-shadow: 0 0 24px rgba(70, 217, 255, .18);
}

@media (max-width: 1120px) {
  .failurefolio-archive-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .failurefolio-archive-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 700px) {
  .failurefolio .fn-logo-card {
    min-height: 280px;
  }
}

/* =========================================================
   failurefolio\script\box.css
   ========================================================= */
/* FailureFolio gallery/lightbox bridge */

#gallery,
.failurefolio-gallery {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  max-width: none;
  margin: 0;
}

#gallery img {
  box-sizing: border-box;
  width: 100%;
  height: 160px;
  padding: 0;
  object-fit: cover;
  cursor: pointer;
  border: 1px solid rgba(110, 132, 156, .24);
  border-radius: 14px;
  background: rgba(0, 0, 0, .28);
  box-shadow:
    0 14px 34px rgba(0, 0, 0, .28),
    inset 0 1px 0 rgba(255, 255, 255, .04);
  transition: transform .16s ease, border-color .16s ease, box-shadow .16s ease;
}

#gallery img:hover {
  transform: translateY(-2px);
  border-color: rgba(70, 217, 255, .52);
  box-shadow:
    0 18px 44px rgba(0, 0, 0, .34),
    0 0 24px rgba(70, 217, 255, .18);
}

/* Lightbox background */
#lback {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: 999;
  background: rgba(0, 0, 0, .72);
  opacity: 0;
  visibility: hidden;
  transition: all ease .25s;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}

#lback.show {
  opacity: 1;
  visibility: visible;
}

#lfront {
  text-align: center;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

#lfront img {
  max-width: 86vw;
  max-height: 86vh;
  border: 1px solid rgba(110, 132, 156, .34);
  border-radius: 16px;
  box-shadow: 0 28px 90px rgba(0, 0, 0, .62);
}

@media (max-width: 1120px) {
  #gallery,
  .failurefolio-gallery {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  #gallery,
  .failurefolio-gallery {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #gallery img {
    height: 130px;
  }
}

/* =========================================================
   failurelab\failurelab.css
   ========================================================= */
/* Failure Lab page-specific styles only. */

.failurelab .fn-page {
  max-width: 1480px;
}

.failurelab-copy {
  color: #cbd5df;
  font-size: 17px;
  line-height: 1.76;
}

.failurelab-copy b {
  color: var(--fn-orange);
}

.failurelab-copy strong {
  color: var(--fn-text-main);
}

.failurelab .fn-logo-card img {
  opacity: .92;
}

@media (max-width: 700px) {
  .failurelab .fn-logo-card {
    min-height: 280px;
  }
}

/* =========================================================
   failurefrib70 content styles
   ========================================================= */

.failurefrib70 .wrap {
  position: relative;
  z-index: 4;
  width: 100%;
  max-width: 1180px;
  margin: 0 auto;
  padding: var(--fn-content-gap) 28px 80px 96px;
  color: var(--fn-text-main);
}

.failurefrib70 .hero {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr);
  gap: 18px;
  align-items: stretch;
  min-width: 0;
  min-height: 0;
  padding: 0;
}

.failurefrib70 .grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.failurefrib70 .grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 18px;
}

.failurefrib70 .card {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin: 0 0 18px;
  padding: 24px;
  overflow: hidden;
  border: 1px solid var(--fn-themed-border);
  border-radius: var(--fn-radius);
  background: var(--fn-themed-bg);
  box-shadow: var(--fn-themed-shadow), var(--fn-glass-inner);
  backdrop-filter: var(--fn-themed-backdrop-filter);
  -webkit-backdrop-filter: var(--fn-themed-backdrop-filter);
  color: var(--fn-text-main);
}

.failurefrib70 .card::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background: var(--fn-card-before);
}

.failurefrib70 .card > * {
  position: relative;
  z-index: 1;
}

.failurefrib70 .card.hot {
  border-color: var(--fn-border-hot);
  background:
    linear-gradient(180deg, rgba(28, 22, 12, .90), rgba(8, 12, 17, .84));
}

.failurefrib70 .card.blue {
  border-color: rgba(70, 217, 255, .30);
  background:
    linear-gradient(180deg, rgba(10, 22, 30, .90), rgba(7, 11, 16, .84));
}

.failurefrib70 .hero h1 {
  margin: 0 0 18px;
  color: var(--fn-text-main);
  font-size: clamp(36px, 4.6vw, 64px);
  line-height: 1;
  letter-spacing: 0;
  overflow-wrap: anywhere;
  text-shadow: 0 0 28px rgba(70, 217, 255, .16);
}

.failurefrib70 h2 {
  margin: 0 0 16px;
  color: #f0f6fc;
}

.failurefrib70 h3 {
  margin: 22px 0 10px;
  color: var(--fn-blue);
}

.failurefrib70 .card p,
.failurefrib70 .mini-list li {
  color: #cbd5df;
  font-size: 16px;
  line-height: 1.68;
}

.failurefrib70 .pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 14px;
}

.failurefrib70 .pill {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  border: 1px solid rgba(70, 217, 255, .24);
  border-radius: 999px;
  padding: 6px 10px;
  background: rgba(70, 217, 255, .08);
  color: #d8f6ff;
  font-size: 13px;
}

.failurefrib70 .pill.green {
  border-color: rgba(53, 211, 110, .36);
  background: rgba(53, 211, 110, .12);
  color: #b9ffd0;
}

.failurefrib70 .pill.orange {
  border-color: rgba(255, 194, 71, .42);
  background: rgba(255, 194, 71, .12);
  color: #ffe0a0;
}

.failurefrib70 .pill.red {
  border-color: rgba(255, 92, 92, .42);
  background: rgba(255, 92, 92, .12);
  color: #ffc4c4;
}

.failurefrib70 .metric {
  color: var(--fn-green);
  font-size: 28px;
  font-weight: 900;
}

.failurefrib70 .muted {
  color: var(--fn-muted);
}

.failurefrib70 .warn {
  color: var(--fn-orange);
}

.failurefrib70 .small {
  font-size: 14px;
}

.failurefrib70 .status-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
  margin-top: 14px;
}

.failurefrib70 .status-item {
  border: 1px solid rgba(110, 132, 156, .22);
  border-radius: 14px;
  padding: 14px;
  background: rgba(255, 255, 255, .035);
}

.failurefrib70 .status-item b {
  display: block;
  margin-bottom: 6px;
}

.failurefrib70 .status-ok b { color: var(--fn-green); }
.failurefrib70 .status-warn b { color: var(--fn-orange); }
.failurefrib70 .status-risk b { color: var(--fn-red); }

.failurefrib70 .mini-list {
  margin: 10px 0 0 18px;
  padding: 0;
}

.failurefrib70 .mini-list li {
  margin: 6px 0;
}

.failurefrib70 .download-row {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 18px 0 8px;
}

.failurefrib70 .download-btn {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  border: 1px solid rgba(70, 217, 255, .45);
  border-radius: 14px;
  padding: 12px 16px;
  background: rgba(70, 217, 255, .10);
  color: #e9fbff;
  font-weight: 800;
  text-decoration: none;
}

.failurefrib70 .download-btn:hover {
  background: rgba(70, 217, 255, .18);
  text-decoration: none;
}

.failurefrib70 .download-btn.secondary {
  border-color: rgba(255, 255, 255, .22);
  background: rgba(255, 255, 255, .06);
}

.failurefrib70 .download-btn.alpha {
  border-color: rgba(53, 211, 110, .52);
  background: rgba(53, 211, 110, .13);
}

.failurefrib70 pre {
  margin: 0 0 16px;
  padding: 18px;
  overflow: auto;
  white-space: pre-wrap;
  word-break: break-word;
  border: 1px solid rgba(110, 132, 156, .24);
  border-radius: 12px;
  background:
    linear-gradient(180deg, rgba(0, 0, 0, .38), rgba(0, 0, 0, .26));
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, .035),
    0 10px 32px rgba(0, 0, 0, .24);
  color: #e8eef5;
  font-size: 13px;
  line-height: 1.55;
}

.failurefrib70 code {
  word-break: break-word;
}

@media (max-width: 900px) {
  .failurefrib70 .wrap {
    max-width: 100%;
    padding: var(--fn-content-gap) 14px 60px 76px;
  }

  .failurefrib70 .hero,
  .failurefrib70 .grid,
  .failurefrib70 .grid-3,
  .failurefrib70 .status-grid {
    grid-template-columns: 1fr;
  }

  .failurefrib70 .card {
    padding: 22px;
  }

  .failurefrib70 .hero h1 {
    font-size: clamp(28px, 9vw, 36px);
    line-height: 1.05;
  }
}

/* =========================================================
   failurelab\styles.css
   ========================================================= */
.panel-heading {
	background-color: #25292A !important;
	color: orange !important;
	border-color: #2A2725 !important;
}

.panel-default {
	background-color: #363A3D !important;
	color: #737E8A !important;
	border-color: #2A2725 !important;
	opacity: 0.95;
}

.panel b {
	color: orange;
	font-size: 8pt;
}

/* =========================================================
   laadunvaatija\styles.css
   ========================================================= */
body[data-fn-page="laadunvaatija"] .laadunvaatija-page {
  max-width: 1480px;
}

body[data-fn-page="laadunvaatija"] .recipe-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 22px;
  align-items: stretch;
}

body[data-fn-page="laadunvaatija"] img {
  border: none;
  background-color: lightgrey;
  border-image: 0;
}

body[data-fn-page="laadunvaatija"] .recipeBox {
  min-width: 0;
}

body[data-fn-page="laadunvaatija"] .recipePanel {
  width: 100%;
  height: 320px;
  margin: 0;
  overflow: hidden;
  display: flex;
  flex-direction: column;
}

body[data-fn-page="laadunvaatija"] .empty-recipe-panel {
  grid-column: 1 / -1;
  margin: 0;
}

body[data-fn-page="laadunvaatija"] .recipePanel > .panel-heading {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 58px;
}

body[data-fn-page="laadunvaatija"] .recipeTitle {
  min-width: 0;
  overflow: hidden;
  text-align: right;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12pt;
}

body[data-fn-page="laadunvaatija"] .recipeBody {
  flex: 1 1 auto;
  min-height: 0;
  padding: 15px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

body[data-fn-page="laadunvaatija"] .recipePreview {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

body[data-fn-page="laadunvaatija"] .recipeButtonWrap {
  flex: 0 0 auto;
  text-align: right;
  padding-top: 8px;
  position: relative;
  z-index: 5;
}

body[data-fn-page="laadunvaatija"] .recipeButton {
  display: inline-block;
  color: orange;
  background-color: #485158;
  border: 0;
}

body[data-fn-page="laadunvaatija"] .recipeImage {
  float: right;
  width: 75px;
  height: 75px;
  object-fit: cover;
  border: 3px solid orange;
  margin: 0 0 5px 10px;
  cursor: zoom-in;
}

body[data-fn-page="laadunvaatija"] .recipeButton:hover,
body[data-fn-page="laadunvaatija"] .recipeButton:focus {
  color: #ffcf66;
  background-color: #5a646c;
}

body[data-fn-page="laadunvaatija"] .lockedPreview {
  filter: blur(0);
  -webkit-filter: blur(0);
}

body[data-fn-page="laadunvaatija"] .orphan-recipe-pages {
  margin-top: 34px;
}

body[data-fn-page="laadunvaatija"] .orphan-page-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 16px;
}

body[data-fn-page="laadunvaatija"] .orphan-page-card {
  display: grid;
  gap: 10px;
  padding: 12px;
  border: 1px solid rgba(255, 165, 0, .32);
  border-radius: 8px;
  background: rgba(20, 25, 28, .82);
  color: orange;
  text-align: center;
  text-decoration: none;
}

body[data-fn-page="laadunvaatija"] .orphan-page-card img {
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border-radius: 6px;
}

body[data-fn-page="laadunvaatija"] .orphan-page-card span {
  font-weight: 800;
}

body[data-fn-page="laadunvaatija"] .orphan-page-card:hover,
body[data-fn-page="laadunvaatija"] .orphan-page-card:focus {
  border-color: rgba(70, 217, 255, .58);
  color: #ffcf66;
  box-shadow: 0 0 24px rgba(70, 217, 255, .14);
}
body[data-fn-page="laadunvaatija"] .fn-modal {
      display: none;
      position: fixed;
      inset: 0;
      z-index: 99999;
    }
body[data-fn-page="laadunvaatija"] .fn-modal.is-open {
      display: block;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-backdrop {
      position: absolute;
      inset: 0;
      background: rgba(0, 0, 0, 0.75);
      backdrop-filter: blur(4px);
      -webkit-backdrop-filter: blur(4px);
    }
body[data-fn-page="laadunvaatija"] .fn-modal-dialog {
      position: relative;
      width: min(760px, calc(100vw - 32px));
      max-height: calc(100vh - 64px);
      margin: 32px auto;
      background: rgba(20, 25, 28, 0.98);
      border: 2px solid orange;
      border-radius: 8px;
      box-shadow:
        0 0 18px rgba(255, 165, 0, 0.35),
        0 0 60px rgba(255, 165, 0, 0.18);
      color: #d9e1e8;
      overflow: hidden;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: 14px 18px;
      background: #22282c;
      border-bottom: 1px solid rgba(255, 165, 0, 0.45);
    }
body[data-fn-page="laadunvaatija"] .fn-modal-title {
      margin: 0;
      color: orange;
      font-size: 20px;
      font-weight: 700;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-close {
      width: 34px;
      height: 34px;
      border: 0;
      border-radius: 6px;
      background: #485158;
      color: orange;
      font-size: 24px;
      line-height: 1;
      cursor: pointer;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-close:hover {
      background: #5a646c;
      color: #ffcf66;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-body {
      padding: 18px;
      max-height: calc(100vh - 170px);
      overflow: auto;
      font-size: 15px;
      line-height: 1.55;
    }
body[data-fn-page="laadunvaatija"] .fn-modal-body iframe {
      max-width: 100%;
    }
body[data-fn-page="laadunvaatija"].fn-modal-open {
      overflow: hidden;
    }

/* Fixed header owns the vertical offset; content starts just below it. */
body[data-fn-page] .fn-page,
body[data-fn-page] .fg-page,
body[data-fn-page="failurefrib70"] .wrap {
  padding-top: var(--fn-content-gap);
}

body[data-fn-page="home"] .fn-page {
  padding: 0 28px 80px;
}

.failurenetworks .fn-home-page {
  display: block;
  min-height: auto;
  align-items: initial;
}

@media (max-width: 760px) {
  body[data-fn-page="home"] .fn-page {
    padding: 0 14px 60px;
  }
}
