/* ==========================================================================
   Gremlin Neon
   Every value comes from a --gn-* variable set in the Customizer (printed
   by inc/dynamic-css.php). The defaults below match the Customizer's.
   ========================================================================== */

:root {
    --gn-bg: #000000;
    --gn-surface: #07070d;
    --gn-surface-2: #0d0d18;
    --gn-border: #12303a;
    --gn-primary: #00f0ff;
    --gn-secondary: #ff2bd6;
    --gn-on-primary: #000000;
    --gn-text: #e6fbff;
    --gn-heading: #f4feff;
    --gn-muted: #8fa9bf;
    --gn-link: #00f0ff;
    --gn-link-hover: #ff2bd6;
    --gn-success: #39ff88;
    --gn-warning: #ffd23f;
    --gn-danger: #ff3b6b;

    --gn-font-body: Barlow, system-ui, sans-serif;
    --gn-font-heading: "Chakra Petch", system-ui, sans-serif;
    --gn-body-size: 17px;
    --gn-body-lh: 1.65;
    --gn-body-weight: 400;
    --gn-heading-weight: 600;
    --gn-heading-lh: 1.15;
    --gn-heading-ls: 0.01em;
    --gn-heading-transform: none;
    --gn-scale: 1.25;

    --gn-btn-radius: 3px;
    --gn-btn-py: 12px;
    --gn-btn-px: 22px;
    --gn-btn-weight: 600;
    --gn-btn-transform: none;

    --gn-radius: 2px;
    --gn-line: 1px;
    --gn-bracket: 14px;
    --gn-glow: 14px;
    --gn-pad: 22px;

    --gn-container: 1240px;
    --gn-measure: 760px;
    --gn-gutter: 32px;
    --gn-section-space: 56px;
    --gn-edge: 18px;
    --gn-left-w: 260px;
    --gn-right-w: 300px;

    --gn-header-h: 76px;
    --gn-header-bg: #000000;
    --gn-header-opacity: 88%;
    --gn-topbar-bg: #07070d;
    --gn-logo-w: 160px;
    --gn-menu-size: 15px;
    --gn-menu-weight: 500;
    --gn-menu-transform: none;
    --gn-menu-gap: 24px;
    --gn-dropdown-w: 230px;

    --gn-blog-cols: 3;
    --gn-blog-ratio: 16/9;
    --gn-footer-bg: #05050a;
    --gn-footer-text: #8fa9bf;
    --gn-bg-overlay: 60%;

    /* Type scale: each level is --gn-scale times the one below. */
    --gn-h6: 1rem;
    --gn-h5: calc(1rem * var(--gn-scale));
    --gn-h4: calc(var(--gn-h5) * var(--gn-scale));
    --gn-h3: calc(var(--gn-h4) * var(--gn-scale));
    --gn-h2: calc(var(--gn-h3) * var(--gn-scale));
    --gn-h1: calc(var(--gn-h2) * var(--gn-scale));

    --gn-glow-soft: color-mix(in srgb, var(--gn-primary) 22%, transparent);
    --gn-glow-soft-2: color-mix(in srgb, var(--gn-secondary) 22%, transparent);
    --gn-sticky-top: calc(var(--gn-header-h) + 16px);
}

/* --------------------------------------------------------------------------
   Base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
    margin: 0;
    background-color: var(--gn-bg);
    color: var(--gn-text);
    font-family: var(--gn-font-body);
    font-size: var(--gn-body-size);
    line-height: var(--gn-body-lh);
    font-weight: var(--gn-body-weight);
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility;
}
body.gn-has-bg::before {
    content: "";
    position: fixed;
    inset: 0;
    background: color-mix(in srgb, var(--gn-bg) var(--gn-bg-overlay), transparent);
    pointer-events: none;
    z-index: 0;
}
body.gn-grid-bg {
    background-image:
        linear-gradient(color-mix(in srgb, var(--gn-primary) 6%, transparent) 1px, transparent 1px),
        linear-gradient(90deg, color-mix(in srgb, var(--gn-primary) 6%, transparent) 1px, transparent 1px);
    background-size: 48px 48px;
}
.gn-site { position: relative; z-index: 1; min-height: 100vh; display: flex; flex-direction: column; }
.gn-content { flex: 1 0 auto; }

img, video, iframe { max-width: 100%; height: auto; }
img { display: block; }
.gn-entry img { display: inline-block; }
figure { margin: 0 0 1.5em; }
hr { border: 0; border-top: var(--gn-line) solid var(--gn-border); margin: 2em 0; }

a { color: var(--gn-link); text-underline-offset: 0.18em; text-decoration-thickness: 1px; transition: color .15s; }
a:hover { color: var(--gn-link-hover); }

:focus-visible { outline: 2px solid var(--gn-primary); outline-offset: 3px; }

h1, h2, h3, h4, h5, h6 {
    font-family: var(--gn-font-heading);
    font-weight: var(--gn-heading-weight);
    line-height: var(--gn-heading-lh);
    letter-spacing: var(--gn-heading-ls);
    text-transform: var(--gn-heading-transform);
    color: var(--gn-heading);
    margin: 1.6em 0 0.5em;
    text-wrap: balance;
}
h1 { font-size: var(--gn-h1); }
h2 { font-size: var(--gn-h2); }
h3 { font-size: var(--gn-h3); }
h4 { font-size: var(--gn-h4); }
h5 { font-size: var(--gn-h5); }
h6 { font-size: var(--gn-h6); }
p { margin: 0 0 1.1em; }
small, .gn-small { font-size: 0.85em; }
.gn-muted { color: var(--gn-muted); }
code, kbd, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9em; }
pre { background: var(--gn-surface); border: var(--gn-line) solid var(--gn-border); padding: 1em; overflow: auto; border-radius: var(--gn-radius); }
blockquote { margin: 1.5em 0; padding: 0.2em 0 0.2em 1.2em; border-left: 3px solid var(--gn-secondary); color: var(--gn-heading); }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 0.6em 0.8em; border-bottom: var(--gn-line) solid var(--gn-border); text-align: left; }
th { color: var(--gn-heading); font-weight: 600; }

.screen-reader-text {
    border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
    height: 1px; width: 1px; margin: -1px; overflow: hidden; padding: 0;
    position: absolute !important; word-wrap: normal !important;
}
.gn-skip-link:focus {
    clip: auto; clip-path: none; height: auto; width: auto; margin: 0;
    left: 12px; top: 12px; z-index: 100000; padding: 10px 16px;
    background: var(--gn-primary); color: var(--gn-on-primary); font-weight: 600;
}
.gn-hint { color: var(--gn-muted); font-size: 0.9em; border: 1px dashed var(--gn-border); padding: 0.6em 0.8em; }

/* --------------------------------------------------------------------------
   Forms
   -------------------------------------------------------------------------- */
input[type="text"], input[type="email"], input[type="url"], input[type="password"], input[type="search"],
input[type="number"], input[type="tel"], input[type="date"], select, textarea {
    width: 100%;
    background: var(--gn-surface-2);
    color: var(--gn-text);
    border: var(--gn-line) solid var(--gn-border);
    border-radius: var(--gn-radius);
    padding: 0.65em 0.8em;
    font: inherit;
    transition: border-color .15s, box-shadow .15s;
}
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--gn-primary);
    box-shadow: 0 0 0 3px var(--gn-glow-soft);
}
label { display: inline-block; margin-bottom: 0.3em; }
.gn-search-form { display: flex; gap: 8px; }
.gn-search-form input { flex: 1; }

/* --------------------------------------------------------------------------
   Buttons — style picked in Customize → Global look → Buttons
   -------------------------------------------------------------------------- */
.gn-button, .wp-block-button__link, button.gn-button, input[type="submit"], .comment-form .submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5em;
    padding: var(--gn-btn-py) var(--gn-btn-px);
    border-radius: var(--gn-btn-radius);
    border: var(--gn-line) solid var(--gn-primary);
    background: var(--gn-primary);
    color: var(--gn-on-primary);
    font-family: var(--gn-font-heading);
    font-weight: var(--gn-btn-weight);
    text-transform: var(--gn-btn-transform);
    font-size: 0.95em;
    line-height: 1.2;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .15s, color .15s, box-shadow .15s, border-color .15s;
}
.gn-button:hover, .wp-block-button__link:hover, input[type="submit"]:hover, .comment-form .submit:hover {
    background: var(--gn-secondary);
    border-color: var(--gn-secondary);
    color: var(--gn-on-primary);
}
.gn-btn-glow .gn-button--primary, .gn-btn-glow .wp-block-button__link, .gn-btn-glow input[type="submit"] {
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
}
.gn-btn-glow .gn-button--primary:hover { box-shadow: 0 0 calc(var(--gn-glow) * 1.4) var(--gn-glow-soft-2); }
.gn-btn-outline .gn-button--primary, .gn-btn-outline .wp-block-button__link, .gn-btn-outline input[type="submit"] {
    background: transparent; color: var(--gn-primary);
}
.gn-btn-gradient .gn-button--primary, .gn-btn-gradient .wp-block-button__link, .gn-btn-gradient input[type="submit"] {
    background: linear-gradient(100deg, var(--gn-primary), var(--gn-secondary));
    border-color: transparent;
}
.gn-button--secondary { background: var(--gn-secondary); border-color: var(--gn-secondary); }
.gn-button--secondary:hover { background: var(--gn-primary); border-color: var(--gn-primary); }
.gn-button--outline, .wp-block-button.is-style-outline .wp-block-button__link {
    background: transparent; color: var(--gn-primary); border-color: currentColor;
}
.gn-button--outline:hover { background: var(--gn-primary); color: var(--gn-on-primary); border-color: var(--gn-primary); }
.gn-button--ghost { background: transparent; border-color: transparent; color: var(--gn-link); padding-left: 0; padding-right: 0; }
.gn-button--ghost:hover { background: transparent; border-color: transparent; color: var(--gn-link-hover); }
.gn-button--dark { background: var(--gn-bg); border-color: var(--gn-bg); color: var(--gn-heading); }
.gn-button--dark:hover { background: var(--gn-surface-2); border-color: var(--gn-surface-2); color: var(--gn-primary); }
.gn-button--small { padding: calc(var(--gn-btn-py) * .6) calc(var(--gn-btn-px) * .65); font-size: 0.85em; }
.gn-button--large { padding: calc(var(--gn-btn-py) * 1.3) calc(var(--gn-btn-px) * 1.3); font-size: 1.05em; }
.gn-button--nolink { cursor: default; opacity: .8; }

/* --------------------------------------------------------------------------
   Panels — the signature frame, picked in Customize → Containers & shapes
   -------------------------------------------------------------------------- */
.gn-frame {
    position: relative;
    background-color: var(--gn-surface);
    border-radius: var(--gn-radius);
    padding: var(--gn-pad);
}
/* HUD brackets: cyan top-left & bottom-right, magenta top-right & bottom-left */
.gn-shape-brackets .gn-frame:not([class*="gn-frame--"]), .gn-frame--brackets {
    border: var(--gn-line) solid color-mix(in srgb, var(--gn-border) 70%, transparent);
    background-image:
        linear-gradient(var(--gn-primary), var(--gn-primary)), linear-gradient(var(--gn-primary), var(--gn-primary)),
        linear-gradient(var(--gn-secondary), var(--gn-secondary)), linear-gradient(var(--gn-secondary), var(--gn-secondary)),
        linear-gradient(var(--gn-secondary), var(--gn-secondary)), linear-gradient(var(--gn-secondary), var(--gn-secondary)),
        linear-gradient(var(--gn-primary), var(--gn-primary)), linear-gradient(var(--gn-primary), var(--gn-primary));
    background-size:
        var(--gn-bracket) calc(var(--gn-line) + 1px), calc(var(--gn-line) + 1px) var(--gn-bracket),
        var(--gn-bracket) calc(var(--gn-line) + 1px), calc(var(--gn-line) + 1px) var(--gn-bracket),
        var(--gn-bracket) calc(var(--gn-line) + 1px), calc(var(--gn-line) + 1px) var(--gn-bracket),
        var(--gn-bracket) calc(var(--gn-line) + 1px), calc(var(--gn-line) + 1px) var(--gn-bracket);
    background-position: top left, top left, top right, top right, bottom left, bottom left, bottom right, bottom right;
    background-repeat: no-repeat;
    background-origin: border-box;
}
.gn-shape-outline .gn-frame:not([class*="gn-frame--"]), .gn-frame--outline {
    border: var(--gn-line) solid var(--gn-border);
}
.gn-shape-glow .gn-frame:not([class*="gn-frame--"]), .gn-frame--glow {
    border: var(--gn-line) solid color-mix(in srgb, var(--gn-primary) 60%, transparent);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft), inset 0 0 calc(var(--gn-glow) / 2) color-mix(in srgb, var(--gn-primary) 8%, transparent);
}
.gn-shape-rounded .gn-frame:not([class*="gn-frame--"]), .gn-frame--rounded {
    border: var(--gn-line) solid var(--gn-border);
    border-radius: max(12px, var(--gn-radius));
    box-shadow: 0 8px 30px rgba(0, 0, 0, .45);
}
.gn-shape-plain .gn-frame:not([class*="gn-frame--"]), .gn-frame--plain {
    background-color: transparent; padding: 0; border: 0; box-shadow: none;
}

/* --------------------------------------------------------------------------
   Site frame — Customize → Layout & sidebars → Site layout
   -------------------------------------------------------------------------- */
.gn-container {
    width: 100%;
    max-width: calc(var(--gn-container) + 2 * var(--gn-edge));
    margin-left: auto;
    margin-right: auto;
    padding-left: var(--gn-edge);
    padding-right: var(--gn-edge);
}
.gn-site-boxed .gn-site {
    max-width: calc(var(--gn-container) + 2 * var(--gn-gutter));
    margin: 0 auto;
    background: var(--gn-bg);
    border-left: var(--gn-line) solid var(--gn-border);
    border-right: var(--gn-line) solid var(--gn-border);
}
.gn-site-framed .gn-site { outline: var(--gn-line) solid var(--gn-primary); outline-offset: -10px; box-shadow: inset 0 0 var(--gn-glow) var(--gn-glow-soft); }
.gn-site-padded { padding: 14px; }
.gn-site-padded .gn-site { border: var(--gn-line) solid var(--gn-border); border-radius: max(6px, var(--gn-radius)); overflow: clip; }

/* --------------------------------------------------------------------------
   Columns: 1, 2 or 3 — Customize → Layout & sidebars → Columns & sidebars
   The main content comes first in the page, so phones see it first.
   -------------------------------------------------------------------------- */
.gn-layout {
    display: grid;
    gap: var(--gn-gutter);
    padding-top: var(--gn-section-space);
    padding-bottom: var(--gn-section-space);
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas: "main";
}
.gn-layout--right { grid-template-columns: minmax(0, 1fr) var(--gn-right-w); grid-template-areas: "main right"; }
.gn-layout--left  { grid-template-columns: var(--gn-left-w) minmax(0, 1fr); grid-template-areas: "left main"; }
.gn-layout--both  { grid-template-columns: var(--gn-left-w) minmax(0, 1fr) var(--gn-right-w); grid-template-areas: "left main right"; }
.gn-main { grid-area: main; min-width: 0; }
.gn-main:focus { outline: none; }
.gn-sidebar--left { grid-area: left; }
.gn-sidebar--right { grid-area: right; }
.gn-layout--edge { padding-top: 0; padding-bottom: 0; }
.gn-layout--none .gn-page:not(.gn-page--full) .gn-entry,
.gn-layout--none .gn-single--measure { max-width: var(--gn-measure); margin-left: auto; margin-right: auto; }
.gn-container-full .gn-layout--none .gn-page .gn-entry { max-width: none; }
.gn-single--measure .gn-entry { max-width: var(--gn-measure); }

.gn-sticky-sidebars .gn-sidebar-inner { position: sticky; top: var(--gn-sticky-top); }
.gn-widget { margin-bottom: var(--gn-gutter); }
.gn-widgets-panel .gn-widget {
    background: var(--gn-surface);
    border: var(--gn-line) solid var(--gn-border);
    border-radius: var(--gn-radius);
    padding: calc(var(--gn-pad) * .85);
}
.gn-shape-brackets.gn-widgets-panel .gn-widget { border-top: calc(var(--gn-line) + 1px) solid var(--gn-primary); }
.gn-shape-glow.gn-widgets-panel .gn-widget { box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft); }
.gn-widget-title { font-size: var(--gn-h5); margin: 0 0 0.7em; }
.gn-widget ul { list-style: none; margin: 0; padding: 0; }
.gn-widget li { padding: 0.35em 0; border-bottom: var(--gn-line) solid color-mix(in srgb, var(--gn-border) 60%, transparent); }
.gn-widget li:last-child { border-bottom: 0; }
.gn-widget a { text-decoration: none; }
.gn-widget a:hover { text-decoration: underline; }

@media (max-width: 860px) {
    .gn-layout--right, .gn-layout--left, .gn-layout--both {
        grid-template-columns: minmax(0, 1fr) !important;
        grid-template-areas: "main" "left" "right" !important;
    }
    .gn-sidebar-mobile-hide .gn-sidebar { display: none; }
    .gn-sticky-sidebars .gn-sidebar-inner { position: static; }
}

/* --------------------------------------------------------------------------
   Top bar & header
   -------------------------------------------------------------------------- */
.gn-topbar { background: var(--gn-topbar-bg); border-bottom: var(--gn-line) solid var(--gn-border); font-size: 0.85em; color: var(--gn-muted); }
.gn-topbar-inner { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 36px; }
.gn-topbar-text { margin: 0; }
.gn-topbar-menu, .gn-footer-menu { list-style: none; display: flex; flex-wrap: wrap; gap: 16px; margin: 0; padding: 0; }
.gn-topbar a, .gn-footer-bar a { color: inherit; text-decoration: none; }
.gn-topbar a:hover, .gn-footer-bar a:hover { color: var(--gn-primary); }

.gn-header {
    position: relative;
    z-index: 50;
    background: color-mix(in srgb, var(--gn-header-bg) var(--gn-header-opacity), transparent);
    transition: min-height .2s, background-color .2s, box-shadow .2s;
}
.gn-header-blur .gn-header { -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.gn-header-sticky .gn-header { position: sticky; top: 0; }
.admin-bar.gn-header-sticky .gn-header { top: 32px; }
@media (max-width: 782px) { .admin-bar.gn-header-sticky .gn-header { top: 0; } }
.gn-header-edge-line .gn-header { border-bottom: var(--gn-line) solid var(--gn-border); }
.gn-header-edge-glow .gn-header::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: calc(var(--gn-line) + 1px);
    background: linear-gradient(90deg, transparent, var(--gn-primary) 20%, var(--gn-secondary) 80%, transparent);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
}
.gn-header-transparent .gn-header { position: absolute; left: 0; right: 0; top: 0; background: transparent; }
.gn-header-transparent.gn-header-sticky .gn-header { position: fixed; }
.gn-header-transparent .gn-header.is-scrolled { background: color-mix(in srgb, var(--gn-header-bg) var(--gn-header-opacity), transparent); }
.gn-header-inner {
    display: flex;
    align-items: center;
    gap: 20px;
    min-height: var(--gn-header-h);
    transition: min-height .2s;
}
.gn-header.is-scrolled .gn-header-inner { min-height: calc(var(--gn-header-h) * .78); }
.gn-header-wide { padding-left: calc(var(--gn-edge) + 8px); padding-right: calc(var(--gn-edge) + 8px); }
.gn-zone { display: flex; align-items: center; gap: 16px; min-width: 0; }
.gn-zone-left { flex: 0 1 auto; }
.gn-zone-center { flex: 1 1 auto; justify-content: center; }
.gn-zone-right { flex: 0 1 auto; margin-left: auto; }
.gn-zone-center:empty { display: none; }
/* The zone holding the menu gets the room */
.gn-zone-has-menu { flex: 1 1 auto; }
.gn-zone-left.gn-zone-has-menu, .gn-zone-right.gn-zone-has-menu { justify-content: flex-start; }
.gn-zone-right.gn-zone-has-menu { justify-content: flex-end; }

.gn-item-logo { display: flex; align-items: center; gap: 12px; }
.gn-item-logo .custom-logo { width: var(--gn-logo-w); height: auto; max-height: calc(var(--gn-header-h) - 16px); object-fit: contain; }
.gn-site-title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60vw; margin: 0; font-family: var(--gn-font-heading); font-size: 1.25rem; font-weight: 700; letter-spacing: 0.02em; line-height: 1.1; }
.gn-site-title a { color: var(--gn-heading); text-decoration: none; }
.gn-site-title a:hover { color: var(--gn-primary); }
.gn-site-tagline { margin: 2px 0 0; font-size: 0.8rem; color: var(--gn-muted); }
.gn-item-text { color: var(--gn-muted); font-size: 0.9em; }
.gn-item-account { display: inline-flex; align-items: center; gap: 8px; color: var(--gn-text); text-decoration: none; font-weight: 500; }
.gn-item-account:hover { color: var(--gn-primary); }
.gn-avatar { border-radius: 50%; border: 1px solid var(--gn-primary); }

.gn-icon-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 42px; height: 42px; padding: 0;
    background: transparent; color: var(--gn-text);
    border: var(--gn-line) solid transparent; border-radius: var(--gn-radius);
    cursor: pointer;
}
.gn-icon-btn:hover, .gn-icon-btn[aria-expanded="true"] { color: var(--gn-primary); border-color: var(--gn-border); }
.gn-menu-toggle { display: none; margin-left: auto; }
.gn-item-search { position: relative; }
.gn-search-panel {
    position: absolute; right: 0; top: calc(100% + 12px); width: min(360px, 86vw);
    background: var(--gn-surface-2); border: var(--gn-line) solid var(--gn-border); padding: 12px;
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft); border-radius: var(--gn-radius);
}

/* Main menu */
.gn-nav { min-width: 0; }
.gn-menu { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px var(--gn-menu-gap); }
.gn-menu li { position: relative; }
.gn-menu a {
    display: block;
    padding: 8px 2px;
    color: var(--gn-text);
    text-decoration: none;
    font-family: var(--gn-font-heading);
    font-size: var(--gn-menu-size);
    font-weight: var(--gn-menu-weight);
    text-transform: var(--gn-menu-transform);
    letter-spacing: 0.02em;
}
.gn-menu a:hover, .gn-menu .current-menu-item > a, .gn-menu .current-menu-ancestor > a { color: var(--gn-primary); }
.gn-menu-underline .gn-menu > li > a { position: relative; }
.gn-menu-underline .gn-menu > li > a::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 2px; height: 2px;
    background: linear-gradient(90deg, var(--gn-primary), var(--gn-secondary));
    transform: scaleX(0); transform-origin: left; transition: transform .2s;
    box-shadow: 0 0 8px var(--gn-glow-soft);
}
.gn-menu-underline .gn-menu > li > a:hover::after,
.gn-menu-underline .gn-menu > .current-menu-item > a::after,
.gn-menu-underline .gn-menu > .current-menu-ancestor > a::after { transform: scaleX(1); }
.gn-menu-pill .gn-menu > li > a { padding: 6px 14px; border-radius: 999px; }
.gn-menu-pill .gn-menu > .current-menu-item > a, .gn-menu-pill .gn-menu > li > a:hover { background: var(--gn-primary); color: var(--gn-on-primary); }
.gn-menu-bracket .gn-menu > li > a { padding: 6px 12px; border: 1px solid transparent; }
.gn-menu-bracket .gn-menu > .current-menu-item > a, .gn-menu-bracket .gn-menu > li > a:hover {
    border-image: linear-gradient(90deg, var(--gn-primary), var(--gn-secondary)) 1;
}
/* Dropdowns */
.gn-menu .sub-menu {
    list-style: none; margin: 0; padding: 8px 0;
    position: absolute; top: 100%; left: -12px; min-width: var(--gn-dropdown-w);
    background: var(--gn-surface-2); border: var(--gn-line) solid var(--gn-border);
    border-top: 2px solid var(--gn-primary);
    box-shadow: 0 12px 30px rgba(0, 0, 0, .6), 0 0 var(--gn-glow) var(--gn-glow-soft);
    opacity: 0; visibility: hidden; transform: translateY(6px);
    transition: opacity .15s, transform .15s, visibility .15s;
    z-index: 60;
}
.gn-menu .sub-menu .sub-menu { top: -9px; left: 100%; }
.gn-menu li:hover > .sub-menu, .gn-menu li:focus-within > .sub-menu { opacity: 1; visibility: visible; transform: none; }
.gn-menu .sub-menu a { padding: 8px 16px; font-size: calc(var(--gn-menu-size) * .95); text-transform: none; }
.gn-menu .sub-menu a:hover { background: color-mix(in srgb, var(--gn-primary) 8%, transparent); }
.gn-menu .menu-item-has-children > a::after { content: " \25BE"; font-size: .8em; color: var(--gn-muted); }
.gn-menu-underline .gn-menu > .menu-item-has-children > a::after { content: ""; }

/* Mobile menu */
.gn-mobile-nav {
    position: fixed; inset: 0; z-index: 1000;
    background: color-mix(in srgb, var(--gn-bg) 70%, transparent);
    -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.gn-mobile-nav-inner {
    position: absolute; top: 0; right: 0; bottom: 0; width: min(380px, 88vw);
    background: var(--gn-surface); border-left: 2px solid var(--gn-primary);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
    padding: 64px 22px 28px; overflow-y: auto;
    display: flex; flex-direction: column; gap: 18px;
    animation: gn-slide-in .22s ease-out;
}
.gn-mobile-drop .gn-mobile-nav-inner { top: var(--gn-header-h); left: 0; width: auto; bottom: auto; max-height: calc(100vh - var(--gn-header-h)); border-left: 0; border-top: 2px solid var(--gn-primary); animation: none; }
.gn-menu-close { position: absolute; top: 14px; right: 14px; }
.gn-mobile-menu { list-style: none; margin: 0; padding: 0; }
.gn-mobile-nav-inner > .gn-button { align-self: stretch; }
.gn-mobile-menu a { display: block; padding: 12px 0; color: var(--gn-text); text-decoration: none; font-family: var(--gn-font-heading); font-size: 1.1rem; border-bottom: 1px solid var(--gn-border); }
.gn-mobile-menu .current-menu-item > a { color: var(--gn-primary); }
.gn-mobile-menu .sub-menu { list-style: none; padding-left: 16px; margin: 0; }
.gn-mobile-menu .sub-menu a { font-size: 1rem; color: var(--gn-muted); }
@keyframes gn-slide-in { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }

/* --------------------------------------------------------------------------
   Page titles & breadcrumbs
   -------------------------------------------------------------------------- */
.gn-titlebar {
    padding: calc(var(--gn-section-space) * .8) 0 calc(var(--gn-section-space) * .6);
    border-bottom: var(--gn-line) solid var(--gn-border);
    background: linear-gradient(180deg, var(--gn-surface), var(--gn-bg));
}
.gn-header-transparent .gn-titlebar { padding-top: calc(var(--gn-header-h) + var(--gn-section-space) * .6); }
.gn-title-align-center .gn-titlebar, .gn-title-align-center .gn-page-title--inline { text-align: center; }
.gn-title-align-center .gn-breadcrumbs ol { justify-content: center; }
.gn-page-title { margin: 0; font-size: var(--gn-h1); }
.gn-page-title--inline { margin-bottom: 0.6em; }
.gn-archive-desc { color: var(--gn-muted); margin-top: .6em; max-width: var(--gn-measure); }
.gn-breadcrumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 12px; padding: 0; font-size: 0.85em; color: var(--gn-muted); }
.gn-breadcrumbs li + li::before { content: "/"; margin-right: 6px; color: var(--gn-border); }
.gn-breadcrumbs a { color: var(--gn-muted); text-decoration: none; }
.gn-breadcrumbs a:hover { color: var(--gn-primary); }

/* --------------------------------------------------------------------------
   Blog feeds — Customize → Blog
   -------------------------------------------------------------------------- */
.gn-posts { display: grid; gap: var(--gn-gutter); }
.gn-posts--grid { grid-template-columns: repeat(var(--gn-blog-cols), minmax(0, 1fr)); }
.gn-posts--masonry { display: block; columns: var(--gn-blog-cols); column-gap: var(--gn-gutter); }
.gn-posts--masonry > * { break-inside: avoid; margin-bottom: var(--gn-gutter); }
.gn-posts--list .gn-card { display: grid; grid-template-columns: minmax(160px, 34%) 1fr; align-items: start; }
.gn-posts--list .gn-card:not(.has-post-thumbnail) { grid-template-columns: 1fr; }
.gn-posts--list .gn-card-media { margin: calc(var(--gn-pad) * -1) 0 calc(var(--gn-pad) * -1) calc(var(--gn-pad) * -1); height: calc(100% + var(--gn-pad) * 2); }
.gn-posts--list .gn-card-media img { height: 100%; aspect-ratio: auto; }
.gn-posts--list .gn-card.has-post-thumbnail .gn-card-body { padding-left: var(--gn-pad); }
.gn-posts--feed { grid-template-columns: minmax(0, 1fr); gap: calc(var(--gn-gutter) * 2); }
@media (max-width: 900px) { .gn-posts--grid { grid-template-columns: repeat(min(2, var(--gn-blog-cols)), minmax(0, 1fr)); } .gn-posts--masonry { columns: min(2, var(--gn-blog-cols)); } }
@media (max-width: 600px) { .gn-posts--grid { grid-template-columns: minmax(0, 1fr); } .gn-posts--masonry { columns: 1; } .gn-posts--list .gn-card { grid-template-columns: 1fr; } .gn-posts--list .gn-card.has-post-thumbnail .gn-card-body { padding-left: 0; } .gn-posts--list .gn-card-media { margin: calc(var(--gn-pad) * -1) calc(var(--gn-pad) * -1) 0; height: auto; } }

.gn-card { display: flex; flex-direction: column; overflow: hidden; }
.gn-card-media { display: block; margin: calc(var(--gn-pad) * -1) calc(var(--gn-pad) * -1) var(--gn-pad); overflow: hidden; }
.gn-card-media img { width: 100%; aspect-ratio: var(--gn-blog-ratio); object-fit: cover; transition: transform .35s ease; }
.gn-card:hover .gn-card-media img { transform: scale(1.03); }
.gn-card-title { margin: 0 0 .35em; font-size: var(--gn-h4); }
.gn-card-title a { color: var(--gn-heading); text-decoration: none; }
.gn-card-title a:hover { color: var(--gn-primary); }
.gn-card-excerpt { color: color-mix(in srgb, var(--gn-text) 85%, var(--gn-muted)); }
.gn-card-excerpt p:last-child { margin-bottom: .6em; }
.gn-read-more { font-weight: 600; text-decoration: none; margin-top: auto; }
.gn-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: .88em; color: var(--gn-muted); margin-bottom: .8em; }
.gn-meta a { color: inherit; }
.gn-meta a:hover { color: var(--gn-primary); }
.gn-meta-sep { width: 4px; height: 4px; background: var(--gn-secondary); transform: rotate(45deg); }

.nav-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: var(--gn-gutter); }
.nav-links .page-numbers, .nav-links a {
    display: inline-flex; min-width: 42px; height: 42px; align-items: center; justify-content: center; padding: 0 12px;
    border: var(--gn-line) solid var(--gn-border); color: var(--gn-text); text-decoration: none; border-radius: var(--gn-radius);
}
.nav-links .current, .nav-links a:hover { border-color: var(--gn-primary); color: var(--gn-primary); box-shadow: 0 0 10px var(--gn-glow-soft); }
.post-navigation .nav-links { display: grid; grid-template-columns: 1fr 1fr; }
.post-navigation .nav-links a { height: auto; display: block; padding: 14px; }
.post-navigation .nav-next { text-align: right; }

/* Single */
.gn-single-image img { width: 100%; border-radius: var(--gn-radius); }
.gn-single-title { font-size: var(--gn-h1); margin: 0 0 .3em; }
.gn-single-title a { color: inherit; text-decoration: none; }
.gn-entry > *:first-child { margin-top: 0; }
.gn-tags a { display: inline-block; margin: 0 6px 6px 0; padding: 3px 10px; border: 1px solid var(--gn-border); border-radius: 999px; font-size: .85em; text-decoration: none; color: var(--gn-muted); }
.gn-tags a:hover { color: var(--gn-primary); border-color: var(--gn-primary); }
.gn-author { display: flex; gap: 18px; align-items: flex-start; margin: var(--gn-gutter) 0; }
.gn-author-avatar { border-radius: 50%; border: 2px solid var(--gn-primary); flex: none; }
.gn-author-name { font-family: var(--gn-font-heading); font-size: 1.1em; margin: 0 0 .3em; }
.gn-author-bio { margin: 0; color: var(--gn-muted); }
.gn-related { margin-top: calc(var(--gn-gutter) * 1.5); }
.gn-related-title { font-size: var(--gn-h3); }

/* Comments */
.gn-comments { margin-top: calc(var(--gn-gutter) * 1.5); }
.gn-comment-list { list-style: none; padding: 0; margin: 0 0 var(--gn-gutter); }
.gn-comment-list .children { list-style: none; padding-left: 28px; border-left: 1px solid var(--gn-border); }
.gn-comment-list .comment-body { padding: 16px 0; border-bottom: 1px solid var(--gn-border); }
.gn-comment-list .avatar { float: left; margin-right: 12px; border-radius: 50%; }
.gn-comment-list .comment-meta { font-size: .88em; color: var(--gn-muted); }
.gn-comment-list .fn { color: var(--gn-heading); font-style: normal; font-weight: 600; }
.gn-comment-form p { margin-bottom: 1em; }

/* 404 & empty */
.gn-404 { text-align: center; max-width: 620px; margin: 0 auto; padding: var(--gn-section-space) 0; }
.gn-404-code {
    font-family: var(--gn-font-heading); font-size: clamp(5rem, 18vw, 10rem); font-weight: 700; line-height: 1; margin: 0;
    background: linear-gradient(100deg, var(--gn-primary), var(--gn-secondary)); -webkit-background-clip: text; background-clip: text; color: transparent;
    filter: drop-shadow(0 0 18px var(--gn-glow-soft));
}
.gn-404 .gn-search-form { max-width: 440px; margin: 1.5em auto; }
.gn-empty h2 { margin-top: 0; }

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.gn-footer { background: var(--gn-footer-bg); color: var(--gn-footer-text); margin-top: auto; position: relative; }
.gn-footer-edge-line .gn-footer { border-top: var(--gn-line) solid var(--gn-border); }
.gn-footer-edge-glow .gn-footer::before {
    content: ""; position: absolute; left: 0; right: 0; top: 0; height: calc(var(--gn-line) + 1px);
    background: linear-gradient(90deg, transparent, var(--gn-secondary) 20%, var(--gn-primary) 80%, transparent);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft-2);
}
.gn-footer-widgets { display: grid; grid-template-columns: repeat(var(--gn-footer-cols), minmax(0, 1fr)); gap: var(--gn-gutter); padding-top: var(--gn-section-space); padding-bottom: calc(var(--gn-section-space) * .6); }
.gn-footer-split-first { grid-template-columns: 2fr repeat(calc(var(--gn-footer-cols) - 1), minmax(0, 1fr)); }
.gn-footer-split-last { grid-template-columns: repeat(calc(var(--gn-footer-cols) - 1), minmax(0, 1fr)) 2fr; }
.gn-footer .gn-widget-title { color: var(--gn-heading); font-size: var(--gn-h6); letter-spacing: 0.04em; }
.gn-footer .gn-widget { background: none !important; border: 0 !important; box-shadow: none !important; padding: 0 !important; }
.gn-footer a { color: var(--gn-footer-text); }
.gn-footer a:hover { color: var(--gn-primary); }
.gn-footer-bar { border-top: var(--gn-line) solid color-mix(in srgb, var(--gn-border) 60%, transparent); font-size: .9em; }
.gn-footer-bar-inner { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; min-height: 64px; padding-top: 12px; padding-bottom: 12px; }
.gn-footer-bar .gn-zone p { margin: 0; }
@media (max-width: 900px) { .gn-footer-widgets, .gn-footer-split-first, .gn-footer-split-last { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) { .gn-footer-widgets, .gn-footer-split-first, .gn-footer-split-last { grid-template-columns: 1fr; } .gn-footer-bar-inner { flex-direction: column; align-items: flex-start; } .gn-footer-bar .gn-zone-right { margin-left: 0; } }

.gn-social { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; }
.gn-social a {
    display: inline-block; padding: 4px 10px; font-size: .82em; text-decoration: none;
    border: 1px solid var(--gn-border); border-radius: var(--gn-radius); color: var(--gn-muted);
}
.gn-social a:hover { color: var(--gn-primary); border-color: var(--gn-primary); box-shadow: 0 0 10px var(--gn-glow-soft); }

.gn-to-top {
    position: fixed; right: 18px; bottom: 18px; z-index: 40;
    width: 44px; height: 44px; display: flex; align-items: center; justify-content: center;
    background: var(--gn-surface-2); color: var(--gn-primary);
    border: var(--gn-line) solid var(--gn-primary); border-radius: var(--gn-radius);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
}
.gn-to-top:hover { background: var(--gn-primary); color: var(--gn-on-primary); }

/* --------------------------------------------------------------------------
   Core blocks alignment
   -------------------------------------------------------------------------- */
.gn-entry > .alignwide { width: min(100vw - 2 * var(--gn-edge), var(--gn-container)); max-width: none; margin-left: 50%; transform: translateX(-50%); }
.gn-entry > .alignfull { width: 100vw; max-width: 100vw; margin-left: 50%; transform: translateX(-50%); }
.gn-layout--right .gn-entry > .alignwide, .gn-layout--left .gn-entry > .alignwide, .gn-layout--both .gn-entry > .alignwide,
.gn-layout--right .gn-entry > .alignfull, .gn-layout--left .gn-entry > .alignfull, .gn-layout--both .gn-entry > .alignfull {
    width: auto; max-width: 100%; margin-left: 0; transform: none;
}
.gn-entry--full > .alignfull, .gn-layout--edge .gn-entry > .alignfull { margin-left: 0; transform: none; width: 100%; }
body { overflow-x: clip; }
.wp-block-image figcaption, .wp-caption-text { color: var(--gn-muted); font-size: .88em; text-align: center; }
.wp-block-separator { border-color: var(--gn-border); }
.wp-block-pullquote { border-color: var(--gn-secondary); }
.wp-block-code { background: var(--gn-surface); }

/* ==========================================================================
   Gremlin Neon blocks
   ========================================================================== */
.gn-block { margin-bottom: 1.5em; }
.gn-entry > .gn-block:last-child { margin-bottom: 0; }

/* Section */
.gn-section {
    position: relative;
    background-color: var(--gn-b-bg, transparent);
    min-height: var(--gn-b-minh, 0);
    display: flex; flex-direction: column; justify-content: center;
    margin-bottom: 0;
}
.gn-section.gn-has-image { background-image: linear-gradient(color-mix(in srgb, var(--gn-bg) var(--gn-b-overlay, 55%), transparent), color-mix(in srgb, var(--gn-bg) var(--gn-b-overlay, 55%), transparent)), var(--gn-b-img); background-size: cover; background-position: center; }
.gn-section-inner { width: 100%; margin: 0 auto; position: relative; }
.gn-section--width-contained > .gn-section-inner { max-width: var(--gn-container); }
.gn-section--width-narrow > .gn-section-inner { max-width: var(--gn-measure); }
.gn-section.alignfull > .gn-section-inner, .gn-section.alignwide > .gn-section-inner { padding-left: var(--gn-edge); padding-right: var(--gn-edge); }
/* the padding sits inside the width, so full-width sections line up with the header and hero */
.gn-section--width-contained.alignfull > .gn-section-inner, .gn-section--width-contained.alignwide > .gn-section-inner { max-width: calc(var(--gn-container) + 2 * var(--gn-edge)); }
.gn-section--width-narrow.alignfull > .gn-section-inner, .gn-section--width-narrow.alignwide > .gn-section-inner { max-width: calc(var(--gn-measure) + 2 * var(--gn-edge)); }
.gn-section--padding-none { padding: 0; }
.gn-section--padding-small { padding: calc(var(--gn-section-space) * .4) 0; }
.gn-section--padding-medium { padding: var(--gn-section-space) 0; }
.gn-section--padding-large { padding: calc(var(--gn-section-space) * 1.6) 0; }
.gn-section--padding-huge { padding: calc(var(--gn-section-space) * 2.4) 0; }
.gn-section[class*="gn-section--frame-"]:not(.gn-section--frame-none) { padding-left: var(--gn-pad); padding-right: var(--gn-pad); }
.gn-section--frame-brackets, .gn-section--frame-outline, .gn-section--frame-glow, .gn-section--frame-rounded { background-color: var(--gn-b-bg, var(--gn-surface)); }
.gn-section--frame-brackets { border: var(--gn-line) solid color-mix(in srgb, var(--gn-border) 70%, transparent); }
.gn-section--frame-outline { border: var(--gn-line) solid var(--gn-border); }
.gn-section--frame-glow { border: var(--gn-line) solid color-mix(in srgb, var(--gn-primary) 60%, transparent); box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft); }
.gn-section--frame-rounded { border: var(--gn-line) solid var(--gn-border); border-radius: max(12px, var(--gn-radius)); }
.gn-section--frame-brackets::before {
    content: ""; position: absolute; inset: -1px; pointer-events: none;
    background-image:
        linear-gradient(var(--gn-primary), var(--gn-primary)), linear-gradient(var(--gn-primary), var(--gn-primary)),
        linear-gradient(var(--gn-secondary), var(--gn-secondary)), linear-gradient(var(--gn-secondary), var(--gn-secondary)),
        linear-gradient(var(--gn-secondary), var(--gn-secondary)), linear-gradient(var(--gn-secondary), var(--gn-secondary)),
        linear-gradient(var(--gn-primary), var(--gn-primary)), linear-gradient(var(--gn-primary), var(--gn-primary));
    background-size:
        calc(var(--gn-bracket) * 1.5) 2px, 2px calc(var(--gn-bracket) * 1.5), calc(var(--gn-bracket) * 1.5) 2px, 2px calc(var(--gn-bracket) * 1.5),
        calc(var(--gn-bracket) * 1.5) 2px, 2px calc(var(--gn-bracket) * 1.5), calc(var(--gn-bracket) * 1.5) 2px, 2px calc(var(--gn-bracket) * 1.5);
    background-position: top left, top left, top right, top right, bottom left, bottom left, bottom right, bottom right;
    background-repeat: no-repeat;
}
.gn-section--top_line::after {
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, transparent, var(--gn-primary), var(--gn-secondary), transparent);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
}
.gn-section--text_align-center { text-align: center; }
.gn-section--text_align-right { text-align: right; }

/* Columns grid */
.gn-grid {
    display: grid;
    gap: var(--gn-b-gap, 24px);
    grid-template-columns: repeat(var(--gn-b-cols, 3), minmax(0, 1fr));
}
.gn-grid > * { margin: 0; min-width: 0; }
.gn-grid--align_items-start { align-items: start; }
.gn-grid--align_items-center { align-items: center; }
.gn-grid--align_items-end { align-items: end; }
@media (max-width: 1024px) { .gn-grid { grid-template-columns: repeat(var(--gn-b-cols-t, 2), minmax(0, 1fr)); } }
@media (max-width: 640px) { .gn-grid { grid-template-columns: repeat(var(--gn-b-cols-p, 1), minmax(0, 1fr)); } }

/* Card */
.gn-card.gn-block { margin-bottom: 0; }
.gn-card--linked { transition: box-shadow .2s, transform .2s; }
.gn-card--linked:hover { box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft); }
.gn-card-link { position: absolute; inset: 0; z-index: 2; }
.gn-card--image_ratio-4-3 .gn-card-media img { aspect-ratio: 4/3; }
.gn-card--image_ratio-1-1 .gn-card-media img { aspect-ratio: 1; }
.gn-card--image_ratio-auto .gn-card-media img { aspect-ratio: auto; }
.gn-card-body > *:last-child { margin-bottom: 0; }

/* Fold-out */
.gn-accordion { border-bottom: var(--gn-line) solid var(--gn-border); margin-bottom: 0; }
.gn-accordion summary {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 18px 0; cursor: pointer; list-style: none;
    font-family: var(--gn-font-heading); font-size: 1.1em; font-weight: 600; color: var(--gn-heading);
}
.gn-accordion summary::-webkit-details-marker { display: none; }
.gn-accordion summary:hover { color: var(--gn-primary); }
.gn-accordion summary .gn-icon { transition: transform .2s; color: var(--gn-primary); flex: none; }
.gn-accordion[open] summary .gn-icon { transform: rotate(180deg); }
.gn-accordion[open] summary { color: var(--gn-primary); }
.gn-accordion-body { padding: 0 0 18px; }

/* Notice */
.gn-notice { --gn-n: var(--gn-primary); padding: 14px 18px; border: var(--gn-line) solid color-mix(in srgb, var(--gn-n) 50%, transparent); border-left: 3px solid var(--gn-n); background: color-mix(in srgb, var(--gn-n) 7%, transparent); border-radius: var(--gn-radius); }
.gn-notice--kind-success { --gn-n: var(--gn-success); }
.gn-notice--kind-warning { --gn-n: var(--gn-warning); }
.gn-notice--kind-danger { --gn-n: var(--gn-danger); }
.gn-notice-title { font-family: var(--gn-font-heading); font-weight: 600; color: var(--gn-n); margin-bottom: .3em; }
.gn-notice > *:last-child { margin-bottom: 0; }

/* Spacer & divider */
.gn-spacer { height: var(--gn-b-h, 48px); margin: 0; }
@media (max-width: 640px) { .gn-spacer { height: var(--gn-b-hp, 24px); } }
.gn-divider { border: 0; height: 2px; margin: 2em auto; }
.gn-divider--style-gradient { background: linear-gradient(90deg, transparent, var(--gn-primary), var(--gn-secondary), transparent); }
.gn-divider--style-line { background: var(--gn-border); height: var(--gn-line); }
.gn-divider--style-dashed { background: repeating-linear-gradient(90deg, var(--gn-border) 0 8px, transparent 8px 14px); }
.gn-divider--style-brackets { height: 14px; background:
    linear-gradient(var(--gn-primary), var(--gn-primary)) left center / 40% 1px no-repeat,
    linear-gradient(var(--gn-primary), var(--gn-primary)) left top / 1px 100% no-repeat,
    linear-gradient(var(--gn-secondary), var(--gn-secondary)) right center / 40% 1px no-repeat,
    linear-gradient(var(--gn-secondary), var(--gn-secondary)) right top / 1px 100% no-repeat; }
.gn-divider--space-small { margin: 1em auto; }
.gn-divider--space-large { margin: 4em auto; }

/* Hero — the one orchestrated entrance */
.gn-hero {
    position: relative;
    display: flex; align-items: center;
    padding: calc(var(--gn-section-space) * 1.4) 0;
    background-color: var(--gn-bg);
    overflow: hidden;
    margin-bottom: 0;
}
.gn-hero.gn-has-image { background-image: linear-gradient(90deg, color-mix(in srgb, var(--gn-bg) calc(var(--gn-b-overlay, 55%) + 20%), transparent), color-mix(in srgb, var(--gn-bg) var(--gn-b-overlay, 55%), transparent)), var(--gn-b-img); background-size: cover; background-position: center; }
.gn-hero::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 2px;
    background: linear-gradient(90deg, var(--gn-primary), var(--gn-secondary) 60%, transparent);
    box-shadow: 0 0 var(--gn-glow) var(--gn-glow-soft);
}
.gn-hero--height-half { min-height: 50vh; }
.gn-hero--height-tall { min-height: 72vh; }
.gn-hero--height-full { min-height: 100vh; }
.gn-header-transparent .gn-entry > .gn-hero:first-child { padding-top: calc(var(--gn-header-h) + var(--gn-section-space)); }
.gn-hero-inner { position: relative; z-index: 1; }
.gn-hero-title {
    margin: 0 0 .35em;
    max-width: 16ch;
    font-size: clamp(2.4rem, 6vw, 4.6rem);
    line-height: 1.02;
    letter-spacing: -0.01em;
    text-shadow: 0 0 28px var(--gn-glow-soft);
}
.gn-hero--size-large .gn-hero-title { font-size: clamp(2rem, 4.5vw, 3.4rem); }
.gn-hero--size-giant .gn-hero-title { font-size: clamp(2.8rem, 8.5vw, 6.6rem); max-width: 14ch; }
.gn-hero-text { font-size: clamp(1.05rem, 1.6vw, 1.3rem); color: color-mix(in srgb, var(--gn-text) 85%, var(--gn-muted)); max-width: 52ch; margin-bottom: 1.6em; }
.gn-hero-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.gn-hero--align-center .gn-hero-inner { text-align: center; }
.gn-hero--align-center .gn-hero-title, .gn-hero--align-center .gn-hero-text { margin-left: auto; margin-right: auto; }
.gn-hero--align-center .gn-hero-actions { justify-content: center; }
/* Entrance: headline, then text, then buttons, once, when the page opens */
.gn-reveal .gn-hero-title, .gn-reveal .gn-hero-text, .gn-reveal .gn-hero-actions { animation: gn-rise .7s cubic-bezier(.2, .7, .2, 1) both; }
.gn-reveal .gn-hero-text { animation-delay: .12s; }
.gn-reveal .gn-hero-actions { animation-delay: .24s; }
@keyframes gn-rise { from { opacity: 0; transform: translateY(14px); filter: blur(4px); } to { opacity: 1; transform: none; filter: none; } }

/* Neon heading */
.gn-heading { margin-top: 0; }
.gn-heading--underline::after {
    content: ""; display: block; width: 72px; height: 3px; margin-top: .35em;
    background: linear-gradient(90deg, var(--gn-primary), var(--gn-secondary));
    box-shadow: 0 0 10px var(--gn-glow-soft);
}
.gn-heading--text_align-center { text-align: center; }
.gn-heading--text_align-center.gn-heading--underline::after { margin-left: auto; margin-right: auto; }
.gn-heading--text_align-right { text-align: right; }
.gn-heading--text_align-right.gn-heading--underline::after { margin-left: auto; }
.gn-heading--size-small { font-size: var(--gn-h4); }
.gn-heading--size-large { font-size: var(--gn-h1); }
.gn-heading--size-huge { font-size: clamp(2.4rem, 5vw, 4rem); }
.gn-heading--tone-primary { color: var(--gn-primary); }
.gn-heading--tone-secondary { color: var(--gn-secondary); }
.gn-heading--tone-gradient { background: linear-gradient(100deg, var(--gn-primary), var(--gn-secondary)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.gn-heading--glow { text-shadow: 0 0 18px var(--gn-glow-soft), 0 0 2px color-mix(in srgb, var(--gn-primary) 50%, transparent); }
.gn-heading--tone-gradient.gn-heading--glow { text-shadow: none; filter: drop-shadow(0 0 14px var(--gn-glow-soft)); }

/* Button block */
.gn-btn--text_align-center { text-align: center; }
.gn-btn--text_align-right { text-align: right; }
.gn-btn--full .gn-button { width: 100%; }

/* Feature */
.gn-feature { margin-bottom: 0; }
.gn-feature-symbol {
    display: inline-flex; align-items: center; justify-content: center;
    width: 52px; height: 52px; margin-bottom: 14px;
    font-size: 1.5rem; line-height: 1; color: var(--gn-primary);
    border: var(--gn-line) solid color-mix(in srgb, var(--gn-primary) 55%, transparent);
    box-shadow: 0 0 12px var(--gn-glow-soft), inset 0 0 12px var(--gn-glow-soft);
    border-radius: var(--gn-radius);
}
.gn-feature-title { margin: 0 0 .35em; font-size: var(--gn-h4); }
.gn-feature-body p:last-child { margin-bottom: 0; }
.gn-feature--layout-side { display: flex; gap: 16px; align-items: flex-start; }
.gn-feature--layout-side .gn-feature-symbol { flex: none; margin-bottom: 0; }
.gn-feature-link { font-weight: 600; text-decoration: none; }

/* Number */
.gn-stat { margin-bottom: 0; }
.gn-stat-number { display: block; font-family: var(--gn-font-heading); font-weight: 700; font-size: clamp(2.2rem, 4.5vw, 3.4rem); line-height: 1; color: var(--gn-primary); text-shadow: 0 0 18px var(--gn-glow-soft); }
.gn-stat--tone-secondary .gn-stat-number { color: var(--gn-secondary); text-shadow: 0 0 18px var(--gn-glow-soft-2); }
.gn-stat--tone-text .gn-stat-number { color: var(--gn-heading); text-shadow: none; }
.gn-stat-label { display: block; margin-top: .4em; color: var(--gn-muted); }

/* Price plan */
.gn-pricing { display: flex; flex-direction: column; margin-bottom: 0; }
.gn-pricing-name { margin: 0 0 .3em; font-size: var(--gn-h4); }
.gn-pricing-price { color: var(--gn-muted); margin-bottom: 1em; }
.gn-pricing-price span { font-family: var(--gn-font-heading); font-size: 2.6rem; font-weight: 700; color: var(--gn-heading); line-height: 1; }
.gn-pricing-list { list-style: none; padding: 0; margin: 0 0 1.6em; flex: 1; }
.gn-pricing-list li { padding: .45em 0 .45em 1.5em; position: relative; border-bottom: 1px solid color-mix(in srgb, var(--gn-border) 60%, transparent); }
.gn-pricing-list li::before { content: ""; position: absolute; left: 2px; top: 1em; width: 7px; height: 7px; background: var(--gn-primary); transform: rotate(45deg); box-shadow: 0 0 6px var(--gn-glow-soft); }
.gn-pricing--highlight { border-color: var(--gn-primary) !important; box-shadow: 0 0 calc(var(--gn-glow) * 1.4) var(--gn-glow-soft); }
.gn-pricing--highlight .gn-pricing-price span { color: var(--gn-primary); }
.gn-pricing-badge { position: absolute; top: -12px; right: 16px; padding: 3px 10px; font-size: .78em; font-weight: 600; background: var(--gn-secondary); color: var(--gn-on-primary); border-radius: var(--gn-radius); }
.gn-pricing .gn-button { width: 100%; }

/* Quote */
.gn-testimonial { margin: 0; }
.gn-testimonial blockquote { border: 0; padding: 0; margin: 0 0 1em; font-size: 1.15em; }
.gn-testimonial blockquote p::before { content: "\201C"; color: var(--gn-secondary); font-family: Georgia, serif; font-size: 1.6em; line-height: 0; vertical-align: -0.35em; margin-right: 2px; }
.gn-testimonial figcaption { display: flex; align-items: center; gap: 12px; }
.gn-testimonial figcaption img { width: 44px; height: 44px; border-radius: 50%; object-fit: cover; border: 1px solid var(--gn-primary); }
.gn-testimonial figcaption span { display: flex; flex-direction: column; line-height: 1.3; }
.gn-testimonial figcaption span span { color: var(--gn-muted); font-size: .88em; }

/* Call to action */
.gn-cta { display: flex; align-items: center; justify-content: space-between; gap: 24px; flex-wrap: wrap; padding: calc(var(--gn-pad) * 1.4); }
.gn-cta h2 { margin: 0 0 .2em; font-size: var(--gn-h3); }
.gn-cta p { margin: 0; }
.gn-cta--style-band { background: linear-gradient(100deg, var(--gn-primary), var(--gn-secondary)); color: var(--gn-on-primary); border-radius: var(--gn-radius); }
.gn-cta--style-band h2 { color: var(--gn-on-primary); }
.gn-cta--style-plain { padding-left: 0; padding-right: 0; }
.gn-cta-text { flex: 1 1 320px; }

/* Countdown & social */
.gn-countdown-label { color: var(--gn-muted); margin-bottom: .2em; }
.gn-countdown-clock { font-family: var(--gn-font-heading); font-size: clamp(1.8rem, 4vw, 2.8rem); font-weight: 700; color: var(--gn-primary); text-shadow: 0 0 16px var(--gn-glow-soft); font-variant-numeric: tabular-nums; margin: 0; }
.gn-social-links--text_align-center .gn-social { justify-content: center; }
.gn-social-links--text_align-right .gn-social { justify-content: flex-end; }

/* ==========================================================================
   Gremlin Community inside the theme
   ========================================================================== */
.gn-gremlin-heading { margin-top: 0; font-size: var(--gn-h3); }
/* "Let the theme frame community areas": drop the plugin's own panel so it
   isn't a box inside a box. */
.gn-gremlin-flat :is(.gc-profile, .gc-home-wall, .gc-groups, .gc-pages, .gc-friends, .gc-messages, .gc-group-page, .gc-page-page, .gc-forum, .gc-shop, .gc-my-orders, .gc-bg-mine, .gc-bg-market, .gc-lms, .gc-sprites) {
    background-color: transparent;
    padding: 0;
    border-radius: 0;
}
.gn-gremlin-page .gn-main .gw-wallet { margin-left: auto; margin-right: auto; }

/* ==========================================================================
   Motion: respect the visitor's device setting and the Customizer switch
   ========================================================================== */
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
}
.gn-no-motion *, .gn-no-motion *::before, .gn-no-motion *::after { animation: none !important; transition: none !important; }
html:has(body.gn-no-motion) { scroll-behavior: auto; }

@media print {
    .gn-header, .gn-topbar, .gn-footer, .gn-sidebar, .gn-to-top, .gn-mobile-nav { display: none !important; }
    body { background: #fff; color: #000; }
    .gn-layout { display: block; }
}

/* Touch screens: first tap opens a dropdown (see theme.js) */
.gn-menu li.is-open > .sub-menu { opacity: 1; visibility: visible; transform: none; }
