/*
Theme Name: Noise Floor
Theme URI: https://example.com/noise-floor
Author: Joe Colamedici
Description: Loud, glitchy one-page portfolio theme. Window-framed sections, VHS noise, scanlines, pixel starfield, ticker, custom cursor, switchable colour palettes. Every section (Intro, Index, Goals, Work, Testimonials & Recommendations, Awards, Contact) can be toggled, reordered and rewritten in Appearance > Customize. Every effect can be turned down.
Version: 7.1.1
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: noise-floor
Tags: one-column, portfolio, custom-colors, custom-logo, custom-menu, featured-images, theme-options, dark
*/

/* ================= TOKENS (real values injected from the Customizer) ================= */
:root{
  --nf-bg:#050607;--nf-panel:#0c1114;--nf-bar:#18222a;--nf-bartext:#e9f1f2;--nf-text:#e9f1f2;--nf-dim:#93a4a9;
  --nf-a1:#25ff06;--nf-a2:#fff105;--nf-a3:#03d0fc;--nf-hot:#ff2a12;--nf-border:#3a474d;
  --nf-display:"Rubik Mono One","Arial Black",sans-serif;--nf-label:"Silkscreen",monospace;--nf-mono:"Share Tech Mono",monospace;
  --nf-base:17px;--nf-width:1320px;--nf-marquee:40s;--nf-header-h:72px;--nf-marquee-h:38px;
  --g-off:3px;--g-dur:4.2s;
}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--nf-bg);overflow-x:hidden;scroll-behavior:smooth;scroll-padding-top:calc(var(--nf-header-h) + 16px)}
body{margin:0;background:var(--nf-bg);color:var(--nf-text);font-family:var(--nf-mono);font-size:var(--nf-base);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}
body.nf-has-marquee{padding-bottom:var(--nf-marquee-h)}
img{max-width:100%;height:auto;display:block}
a{color:var(--nf-a1);text-underline-offset:3px}
a:hover{color:var(--nf-a2)}
p{margin:0 0 1em}
h1,h2,h3,h4{margin:0 0 .4em;line-height:1.05;font-weight:400}
::selection{background:var(--nf-hot);color:#fff}
.screen-reader-text{position:absolute!important;clip:rect(1px,1px,1px,1px);width:1px;height:1px;overflow:hidden}
.skip-link:focus{clip:auto;width:auto;height:auto;left:12px;top:12px;z-index:100000;background:var(--nf-a1);color:var(--nf-bg);padding:8px 14px}
:focus-visible{outline:2px dashed var(--nf-a2);outline-offset:3px}
.nf-container{width:100%;max-width:var(--nf-width);margin:0 auto;padding:0 40px;position:relative}
#nf-main{position:relative;z-index:1}
.nf-c0{color:var(--nf-a1)}.nf-c1{color:var(--nf-a2)}.nf-c2{color:var(--nf-a3)}

/* ================= FX LAYERS ================= */
#nf-stars{position:fixed;inset:0;width:100vw;height:100vh;z-index:0;pointer-events:none;opacity:.85}
.nf-fx{position:fixed;pointer-events:none;z-index:9990}
.nf-fx--noise{inset:0;opacity:0;background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:nf-grain .9s steps(5) infinite}
.nf-noise-low .nf-fx--noise{opacity:.035}.nf-noise-medium .nf-fx--noise{opacity:.07}.nf-noise-high .nf-fx--noise{opacity:.14}
@keyframes nf-grain{0%{background-position:0 0}20%{background-position:-40px 20px}40%{background-position:30px -35px}60%{background-position:-20px -10px}80%{background-position:45px 30px}100%{background-position:0 0}}
.nf-fx--scan{inset:0;display:none;background:repeating-linear-gradient(to bottom,rgba(0,0,0,.22) 0 1px,transparent 1px 3px);box-shadow:inset 0 0 180px rgba(0,0,0,.55)}
.nf-scan .nf-fx--scan{display:block}
.nf-fx--scan::after{content:"";position:absolute;left:0;right:0;height:120px;top:-120px;background:linear-gradient(to bottom,transparent,rgba(255,255,255,.035),transparent);animation:nf-roll 7s linear infinite}
@keyframes nf-roll{to{top:110%}}

/* custom cursor */
#nf-cursor{position:fixed;left:0;top:0;width:34px;height:34px;margin:-17px 0 0 -17px;z-index:10000;pointer-events:none;display:none;mix-blend-mode:difference;transition:width .15s,height .15s,margin .15s}
.nf-cursor-on #nf-cursor{display:block}
.nf-cursor-on,.nf-cursor-on a,.nf-cursor-on button,.nf-cursor-on [role=button]{cursor:none}
#nf-cursor::before,#nf-cursor::after{content:"";position:absolute;background:#fff}
#nf-cursor::before{left:50%;top:0;bottom:0;width:2px;margin-left:-1px}
#nf-cursor::after{top:50%;left:0;right:0;height:2px;margin-top:-1px}
.nf-cursor__x{position:absolute;inset:9px;border:2px solid #fff}
.nf-cursor__lbl{position:absolute;left:30px;top:30px;font:11px/1 var(--nf-label);color:#fff;white-space:nowrap;letter-spacing:.08em}
#nf-cursor.is-link .nf-cursor__x{inset:-6px;transform:rotate(45deg);border-color:#fff}
#nf-cursor.is-link::before,#nf-cursor.is-link::after{opacity:.35}
#nf-cursor.is-down .nf-cursor__x{background:#fff}

/* ================= GLITCH ================= */
.nf-glitch{position:relative;display:inline-block}
.nf-glitch::before,.nf-glitch::after{content:attr(data-text);position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;opacity:0;white-space:inherit}
.nf-glitch::before{color:var(--nf-a3);text-shadow:none;-webkit-text-stroke:0}
.nf-glitch::after{color:var(--nf-hot);text-shadow:none;-webkit-text-stroke:0}
.nf-motion:not(.nf-glitch-off) .nf-glitch::before{opacity:.9;animation:nf-g1 var(--g-dur) infinite steps(1)}
.nf-motion:not(.nf-glitch-off) .nf-glitch::after{opacity:.9;animation:nf-g2 calc(var(--g-dur) * 1.3) infinite steps(1)}
.nf-glitch-low{--g-off:2px;--g-dur:7s}.nf-glitch-medium{--g-off:4px;--g-dur:4.2s}.nf-glitch-high{--g-off:9px;--g-dur:1.6s}
@keyframes nf-g1{
 0%,86%,100%{clip-path:inset(0 0 100% 0);transform:none}
 87%{clip-path:inset(12% 0 60% 0);transform:translate(calc(var(--g-off) * -1),0)}
 89%{clip-path:inset(55% 0 20% 0);transform:translate(var(--g-off),0)}
 91%{clip-path:inset(30% 0 45% 0);transform:translate(calc(var(--g-off) * -2),0)}
 93%{clip-path:inset(80% 0 2% 0);transform:translate(var(--g-off),0)}
 95%{clip-path:inset(0 0 100% 0)}}
@keyframes nf-g2{
 0%,80%,100%{clip-path:inset(0 0 100% 0);transform:none}
 81%{clip-path:inset(65% 0 10% 0);transform:translate(var(--g-off),0)}
 84%{clip-path:inset(5% 0 75% 0);transform:translate(calc(var(--g-off) * -1.5),0)}
 87%{clip-path:inset(40% 0 38% 0);transform:translate(calc(var(--g-off) * 2),0)}
 90%{clip-path:inset(0 0 100% 0)}}
.nf-glitch-high.nf-motion .nf-hero__word{animation:nf-skew 2.8s infinite steps(1)}
@keyframes nf-skew{0%,92%,100%{transform:none}93%{transform:skewX(-12deg) translateX(-6px)}95%{transform:skewX(8deg) translateX(4px)}97%{transform:none}}
@keyframes nf-jitter{0%{transform:translate(0)}25%{transform:translate(-2px,1px)}50%{transform:translate(2px,-1px)}75%{transform:translate(-1px,-2px)}100%{transform:translate(0)}}

/* ================= HEADER ================= */
.nf-header{height:var(--nf-header-h);display:flex;align-items:center;background:var(--nf-bg);border-bottom:2px solid var(--nf-border);z-index:500;position:relative}
.nf-header.is-sticky{position:sticky;top:0}
.admin-bar .nf-header.is-sticky{top:32px}
.nf-header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px}
.nf-logo{font-family:var(--nf-display);font-size:1.45rem;line-height:.9;text-transform:uppercase;text-decoration:none;color:#fff;-webkit-text-stroke:1px #000;text-shadow:2px 2px 0 var(--nf-hot),4px 4px 0 var(--nf-a3),5px 5px 0 #000;white-space:nowrap;letter-spacing:-.02em}
.nf-logo:hover{color:var(--nf-a2);animation:nf-jitter .2s steps(2) 3}
.custom-logo{max-height:52px;width:auto}
.nf-nav{display:flex;align-items:center;gap:14px}
.nf-menu{list-style:none;display:flex;gap:8px;margin:0;padding:0}
.nf-menu a{position:relative;display:block;padding:8px 14px;font-family:var(--nf-label);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--nf-a2);background:linear-gradient(180deg,var(--nf-bar),var(--nf-panel));border:1px solid var(--nf-border);border-radius:4px;text-shadow:0 0 8px color-mix(in srgb,var(--nf-a2) 55%,transparent);white-space:nowrap}
.nf-menu li:nth-child(3n+2) a{color:var(--nf-a3);text-shadow:0 0 8px color-mix(in srgb,var(--nf-a3) 55%,transparent)}
.nf-menu li:nth-child(3n) a{color:var(--nf-a1);text-shadow:0 0 8px color-mix(in srgb,var(--nf-a1) 55%,transparent)}
.nf-menu a:hover,.nf-menu a.is-active{border-color:var(--nf-a2);box-shadow:0 0 0 1px var(--nf-a2) inset}
.nf-menu a:hover{animation:nf-jitter .18s steps(2) 2}
.nf-badge{position:absolute;top:-9px;right:-8px;background:var(--nf-hot);color:#fff;font-size:.56rem;padding:2px 5px;border-radius:2px;text-shadow:none;letter-spacing:.06em;animation:nf-blink 1.1s steps(1) infinite}
@keyframes nf-blink{50%{opacity:.25}}
.nf-nav-toggle{display:none;font-family:var(--nf-label);background:none;color:var(--nf-a1);border:1px solid var(--nf-a1);padding:8px 12px;font-size:.8rem}
.nf-vibe{position:relative}
.nf-vibe__btn{display:block;background:var(--nf-panel);border:1px solid var(--nf-border);padding:6px;border-radius:3px}
.nf-vibe__btn:hover{border-color:var(--nf-a2)}
.nf-vibe__sw,.nf-vibe__strip{display:flex;width:44px;height:14px;border:1px solid #000}
.nf-vibe__sw i,.nf-vibe__strip i{flex:1}
.nf-vibe__menu{position:absolute;right:0;top:calc(100% + 10px);width:min(480px,calc(100vw - 32px));background:var(--nf-panel);border:1px solid var(--nf-border);box-shadow:6px 6px 0 #000;padding:12px;z-index:600}
.nf-vibe__title{font:.7rem var(--nf-label);letter-spacing:.2em;color:var(--nf-dim);margin-bottom:8px}
/* v3.8: 16 palettes, two columns */
.nf-vibe__menu:not([hidden]){display:grid;grid-template-columns:1fr 1fr;gap:2px 6px}
.nf-vibe__menu .nf-vibe__title{grid-column:1/-1}
/* v3.9: labelled sets (classic / cyberpunk / federation) */
.nf-vibe__group{grid-column:1/-1;font:.6rem var(--nf-label);letter-spacing:.22em;text-transform:uppercase;color:var(--nf-a2);border-top:1px dashed var(--nf-border);padding:8px 8px 2px;margin-top:4px}
.nf-vibe__title+.nf-vibe__group{border-top:0;margin-top:0;padding-top:0}
.nf-vibe__opt{display:flex;align-items:center;gap:10px;width:100%;background:none;border:1px solid transparent;color:var(--nf-text);padding:7px 8px;font:.74rem var(--nf-label);letter-spacing:.1em;text-transform:uppercase;text-align:left}
.nf-vibe__opt:hover,.nf-vibe__opt.is-current{border-color:var(--nf-a2);color:var(--nf-a2)}

/* ================= BUTTONS ================= */
.nf-btn{display:inline-flex;align-items:center;gap:.5em;padding:.95em 1.4em;font-family:var(--nf-label);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;color:var(--nf-a1);background:transparent;border:1.5px solid var(--nf-a1);transition:background .15s,color .15s;white-space:nowrap}
.nf-btn:hover{background:var(--nf-a1);color:var(--nf-bg);animation:nf-jitter .15s steps(2) 3}
.nf-btn--solid{background:var(--nf-a1);color:var(--nf-bg)}
.nf-btn--solid:hover{background:var(--nf-a2);border-color:var(--nf-a2);color:var(--nf-bg)}
.nf-btn--hot{background:var(--nf-hot);border-color:var(--nf-hot);color:#fff}
.nf-btn--hot:hover{background:#fff;color:#000;border-color:#fff}
.nf-btn--sm{padding:.7em 1.1em;font-size:.72rem}
.nf-btn--big{font-size:1rem;padding:1.1em 1.8em}

/* ================= SECTIONS / WINDOWS ================= */
.nf-section{padding:64px 0;position:relative}
.nf-win{position:relative;background:var(--nf-panel);border:2px solid var(--nf-border);box-shadow:inset 1px 1px 0 rgba(255,255,255,.07),8px 8px 0 rgba(0,0,0,.85)}
.nf-win__bar{display:flex;align-items:center;gap:12px;padding:8px 10px 8px 14px;background:linear-gradient(180deg,color-mix(in srgb,var(--nf-bar) 80%,#fff 8%),var(--nf-bar));border-bottom:2px solid var(--nf-border);font-family:var(--nf-label);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--nf-bartext)}
.nf-win__icon{color:var(--nf-a1)}
.nf-win__title{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nf-win__meta{color:var(--nf-dim);font-size:.72rem}
.nf-win__dots{color:var(--nf-dim);letter-spacing:.4em}
.nf-win__btn{width:26px;height:24px;display:grid;place-items:center;background:var(--nf-panel);border:1.5px solid var(--nf-a1);color:var(--nf-a1);font:700 1rem/1 var(--nf-mono);padding:0}
.nf-win__btn:hover{background:var(--nf-a1);color:var(--nf-bg)}
.nf-win__body{padding:48px 52px 56px}
.nf-win.is-collapsed .nf-win__body{display:none}
.nf-win.is-collapsed{box-shadow:4px 4px 0 rgba(0,0,0,.85)}
.nf-raw{position:relative}
.nf-raw__file{position:absolute;right:-10px;top:-38px;font-family:var(--nf-display);font-size:clamp(3rem,8vw,8.5rem);line-height:1;color:transparent;-webkit-text-stroke:1.5px var(--nf-border);white-space:nowrap;pointer-events:none;z-index:0;user-select:none}
.nf-raw__body{position:relative;z-index:1}
.nf-section--inverted{--nf-inv:var(--nf-a1);background:var(--nf-a1);transform:skewY(-1.2deg);margin:40px 0}
.nf-section--inverted>.nf-container{transform:skewY(1.2deg);--nf-text:var(--nf-bg);--nf-dim:var(--nf-bg);--nf-a1:var(--nf-bg);--nf-a2:var(--nf-bg);--nf-a3:var(--nf-bg);--nf-hot:var(--nf-bg);--nf-border:var(--nf-bg);--nf-panel:transparent;--nf-bar:var(--nf-bg);--nf-bartext:var(--nf-inv);color:var(--nf-bg)}
.nf-section--inverted .nf-win{box-shadow:8px 8px 0 var(--nf-bg)}
.nf-section--inverted .nf-title{color:var(--nf-bg);text-shadow:4px 4px 0 rgba(255,255,255,.35);-webkit-text-stroke:0}
.nf-section--inverted .nf-raw__file{-webkit-text-stroke-color:color-mix(in srgb,var(--nf-bg) 30%,transparent)}
.nf-section--inverted .nf-win__icon,.nf-section--inverted .nf-win__btn{color:var(--nf-inv);border-color:var(--nf-inv);background:transparent}

/* heads */
.nf-head{margin-bottom:40px;max-width:1000px}
.nf-kicker{display:flex;align-items:center;gap:12px;font-family:var(--nf-label);font-size:.82rem;letter-spacing:.2em;text-transform:uppercase;color:var(--nf-a1);margin-bottom:14px}
.nf-kicker__num{color:var(--nf-a2)}
.nf-kicker__blink{animation:nf-blink 1s steps(1) infinite;color:var(--nf-hot)}
.nf-title{font-family:var(--nf-display);font-size:clamp(2.2rem,4.8vw,4.6rem);line-height:.95;text-transform:uppercase;letter-spacing:-.02em;color:var(--nf-text);text-shadow:3px 3px 0 var(--nf-hot),6px 6px 0 rgba(0,0,0,.9);margin:0 0 18px}
.nf-title--sm{font-size:clamp(1.8rem,3vw,2.8rem)}
.nf-intro{color:var(--nf-dim);font-size:1.05em;max-width:62ch;margin:0}
.nf-empty{border:1.5px dashed var(--nf-border);padding:24px;color:var(--nf-dim);font-family:var(--nf-label)}
.nf-grid{display:grid;gap:28px}
.nf-cols-1{grid-template-columns:1fr}.nf-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.nf-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.nf-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}

/* ================= HERO ================= */
.nf-hero{position:relative;padding:22px 0 90px;overflow:hidden}
.nf-crumbs{display:flex;gap:10px;align-items:center;font-family:var(--nf-label);font-size:.8rem;letter-spacing:.08em;color:var(--nf-dim);margin-bottom:40px;text-transform:lowercase}
.nf-crumbs b{color:var(--nf-text);font-weight:400;text-transform:uppercase}
.nf-crumbs__arr{color:var(--nf-a2)}
.nf-crumbs__ts{margin-left:auto;color:var(--nf-dim);text-transform:uppercase}
.nf-hero__grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:48px;align-items:start}
.nf-hero--image-left .nf-hero__side{order:-1}
.nf-hero--no-image .nf-hero__grid{grid-template-columns:minmax(0,8fr) minmax(0,4fr)}
.nf-hero__main{position:relative;z-index:4}
.nf-hero__kicker{font-family:var(--nf-label);font-size:.85rem;letter-spacing:.22em;color:var(--nf-a1);margin-bottom:18px;text-transform:uppercase}
.nf-rec{color:var(--nf-hot);animation:nf-blink 1.2s steps(1) infinite}
.nf-hero__name{margin:0 0 22px;display:flex;flex-direction:column;align-items:flex-start;width:max-content;max-width:none;position:relative}
.nf-hero__word{font-family:var(--nf-display);font-size:clamp(3.4rem,8.4vw,8.6rem);line-height:.86;text-transform:uppercase;letter-spacing:-.03em;color:#fff;-webkit-text-stroke:2px #000;text-shadow:4px 4px 0 var(--nf-hot),8px 8px 0 var(--nf-a3),12px 12px 0 #000;white-space:nowrap}
.nf-hero__word--1{color:var(--nf-a1);margin-left:.35em}
.nf-hero__word--2{margin-left:.1em;color:var(--nf-a2)}
.nf-hero__tagline{display:inline-block;font-family:var(--nf-label);font-size:1.15rem;letter-spacing:.12em;text-transform:uppercase;background:var(--nf-text);color:var(--nf-bg);padding:6px 12px;margin:10px 0 18px;transform:rotate(-1deg)}
.nf-hero__edu{font-size:.95rem;color:var(--nf-text);max-width:60ch;margin-bottom:24px}
.nf-hero__edu-tag{display:inline-block;font-family:var(--nf-label);font-size:.7rem;letter-spacing:.14em;background:var(--nf-a3);color:var(--nf-bg);padding:2px 7px;margin-right:6px;vertical-align:2px}
.nf-term{border:1.5px solid var(--nf-border);background:color-mix(in srgb,var(--nf-panel) 88%,transparent);margin-bottom:26px;max-width:640px;box-shadow:6px 6px 0 rgba(0,0,0,.8)}
.nf-term__bar{padding:7px 12px;background:var(--nf-bar);color:var(--nf-bartext);font-family:var(--nf-mono);font-size:.82rem;border-bottom:1.5px solid var(--nf-border)}
.nf-term__body{padding:16px 18px 18px;margin:0;color:var(--nf-a1);text-shadow:0 0 10px color-mix(in srgb,var(--nf-a1) 35%,transparent);font-size:1rem;line-height:1.7}
.nf-caret{animation:nf-blink .9s steps(1) infinite;margin-left:2px}
.nf-quote{margin:0 0 30px;padding:4px 0 4px 18px;border-left:1.5px solid var(--nf-dim);max-width:560px;color:var(--nf-a2);font-style:italic}
.nf-quote p{margin:0 0 6px;font-size:1.02rem}
.nf-quote cite{font-size:.8rem;color:var(--nf-dim);font-style:normal;letter-spacing:.06em}
.nf-ctas{display:flex;flex-wrap:wrap;gap:14px}
.nf-hero__side{position:relative;z-index:2;display:flex;flex-direction:column;gap:26px;padding-top:90px}
.nf-win--mini .nf-win__bar{font-size:.72rem;padding:6px 10px}
.nf-photo{margin:0;transform:rotate(2deg)}
.nf-photo__img{position:relative;aspect-ratio:4/5;background:var(--nf-a3);overflow:hidden}
.nf-photo__img img{width:100%;height:100%;object-fit:cover;filter:grayscale(1) contrast(1.35) brightness(1.05);mix-blend-mode:multiply}
.nf-photo__img::after{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(0,0,0,.55) 1px,transparent 1.6px) 0 0/5px 5px;mix-blend-mode:multiply;pointer-events:none}
.nf-photo__img::before{content:"";position:absolute;left:0;right:0;top:38%;height:14px;background:var(--nf-hot);mix-blend-mode:screen;opacity:.0;z-index:2}
.nf-motion .nf-photo__img::before{animation:nf-tear 5s infinite steps(1)}
@keyframes nf-tear{0%,90%,100%{opacity:0}91%{opacity:.8;top:22%}93%{opacity:.7;top:61%;height:6px}95%{opacity:0}}
.nf-photo__cap{font-family:var(--nf-label);font-size:.68rem;letter-spacing:.14em;color:var(--nf-dim);padding:8px 12px;border-top:2px solid var(--nf-border)}
.nf-status{transform:rotate(-1.5deg);margin-left:-40px}
.nf-status__body{padding:12px 14px 14px}
.nf-status__screen{border:1px solid var(--nf-a1);background:color-mix(in srgb,var(--nf-a1) 8%,#000);color:var(--nf-a1);font-size:.8rem;padding:4px 0;overflow:hidden;white-space:nowrap;margin-bottom:10px}
.nf-status__scroll{display:inline-block;padding-left:100%;animation:nf-mq 16s linear infinite}
.nf-status dl{margin:0;font-size:.8rem}
.nf-status dl div{display:grid;grid-template-columns:96px 1fr;gap:8px;padding:3px 0;border-bottom:1px dashed var(--nf-border)}
.nf-status dt{color:var(--nf-dim);font-family:var(--nf-label);font-size:.7rem;letter-spacing:.08em;padding-top:2px}
.nf-status dd{margin:0;color:var(--nf-text)}
.nf-status__bar{height:6px;background:var(--nf-border);margin-top:12px;position:relative;overflow:hidden}
.nf-status__bar span{position:absolute;left:0;top:0;bottom:0;width:37%;background:var(--nf-a2)}
.nf-motion .nf-status__bar span{animation:nf-prog 9s linear infinite}
@keyframes nf-prog{from{width:0}to{width:100%}}

/* stickers */
.nf-sticker{position:absolute;z-index:6;font-family:var(--nf-label);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;padding:7px 12px;box-shadow:4px 4px 0 #000;white-space:nowrap;transition:transform .2s}
.nf-sticker:hover{transform:rotate(0) scale(1.08)!important}
.nf-sticker--0{top:92px;right:3%;background:var(--nf-a2);color:#000;transform:rotate(7deg)}
.nf-sticker--1{top:48%;right:36%;background:var(--nf-hot);color:#fff;transform:rotate(-8deg)}
.nf-sticker--2{bottom:44px;right:6%;background:var(--nf-a3);color:#000;transform:rotate(-4deg)}
.nf-sticker--3{bottom:40px;left:40%;background:var(--nf-text);color:var(--nf-bg);transform:rotate(3deg)}
.nf-sticker--4{top:30px;left:52%;border:2px dashed var(--nf-a1);color:var(--nf-a1);background:var(--nf-bg);box-shadow:none;transform:rotate(-3deg)}
.nf-sticker--5{top:64%;right:1%;background:var(--nf-a1);color:#000;transform:rotate(10deg)}

/* ================= TOC / DIRECTORY ================= */
.nf-toc__wrap{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:48px}
.nf-dir{border:1.5px solid var(--nf-border);background:color-mix(in srgb,#000 55%,var(--nf-panel))}
.nf-dir__prompt,.nf-dir__foot{font-family:var(--nf-mono);font-size:.85rem;color:var(--nf-a1);padding:12px 18px;border-bottom:1.5px solid var(--nf-border)}
.nf-dir__foot{border-bottom:0;border-top:1.5px solid var(--nf-border);color:var(--nf-dim)}
.nf-dir__list{list-style:none;margin:0;padding:0}
.nf-dir__list li+li{border-top:1px dashed var(--nf-border)}
.nf-dir__list a{display:grid;grid-template-columns:52px minmax(150px,210px) 1fr 70px 76px;gap:14px;align-items:center;padding:14px 18px;text-decoration:none;color:var(--nf-text);transition:background .1s}
.nf-dir__num{color:var(--nf-a2);font-family:var(--nf-label);font-size:.85rem}
.nf-dir__name{font-family:var(--nf-display);font-size:1.15rem;text-transform:uppercase;letter-spacing:-.01em}
.nf-dir__blurb{color:var(--nf-dim);font-size:.9rem}
.nf-dir__size{color:var(--nf-dim);font-size:.78rem;text-align:right}
.nf-dir__open{font-family:var(--nf-label);font-size:.72rem;letter-spacing:.1em;color:var(--nf-a1);text-align:right}
.nf-dir__list a:hover{background:var(--nf-a1);color:var(--nf-bg)}
.nf-dir__list a:hover *{color:var(--nf-bg)}
.nf-dir__list a:hover .nf-dir__name{animation:nf-jitter .15s steps(2) 3}

/* ================= GOALS ================= */
.nf-goals{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,4fr);gap:56px;align-items:start}
.nf-goals--solo{grid-template-columns:1fr}
.nf-goals__statement{font-size:clamp(1.3rem,2vw,1.75rem);line-height:1.45;color:var(--nf-text);border-left:6px solid var(--nf-hot);padding-left:22px;margin-bottom:36px}
.nf-log{list-style:none;margin:0;padding:0}
.nf-log__item{display:grid;grid-template-columns:150px 1fr;gap:18px;padding:22px 0;border-top:1px dashed var(--nf-border)}
.nf-log__tag{font-family:var(--nf-label);font-size:.9rem;letter-spacing:.14em;padding-top:4px}
.nf-log__title{font-family:var(--nf-mono);font-weight:700;font-size:1.3rem;text-transform:uppercase;margin-bottom:6px;color:var(--nf-text)}
.nf-log p{margin:0;color:var(--nf-dim)}
.nf-idcard{position:relative;border-radius:14px;border:2px solid var(--nf-a3);background:linear-gradient(145deg,var(--nf-bar),var(--nf-panel) 60%);padding:22px 22px 18px;transform:rotate(-2deg);box-shadow:10px 10px 0 rgba(0,0,0,.85);transition:transform .25s}
.nf-idcard:hover{transform:rotate(0)}
.nf-idcard__top{display:flex;justify-content:space-between;align-items:center;font-family:var(--nf-label);font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;color:var(--nf-a3);margin-bottom:18px}
.nf-idcard__chip{width:40px;height:30px;border-radius:5px;background:linear-gradient(90deg,transparent 45%,rgba(0,0,0,.35) 45% 55%,transparent 55%),linear-gradient(0deg,transparent 45%,rgba(0,0,0,.35) 45% 55%,transparent 55%),var(--nf-a2)}
.nf-idcard__who{display:flex;gap:14px;align-items:center;margin-bottom:18px}
.nf-idcard__pic{width:64px;height:76px;display:grid;place-items:center;background:var(--nf-hot);color:#fff;font-family:var(--nf-display);font-size:1.5rem;border:2px solid #000;flex:none}
.nf-idcard__name{font-family:var(--nf-display);font-size:1.15rem;text-transform:uppercase;line-height:1}
.nf-idcard__lvl{font-family:var(--nf-label);font-size:.66rem;letter-spacing:.12em;color:var(--nf-a1);margin-top:6px}
.nf-idcard__edu{padding:12px 0;border-top:1px dashed var(--nf-border)}
.nf-idcard__school{font-weight:700;font-size:1rem;line-height:1.3}
.nf-idcard__degree{color:var(--nf-text);font-size:.9rem}
.nf-idcard__meta{font-family:var(--nf-label);font-size:.68rem;letter-spacing:.1em;margin-top:4px}
.nf-tags{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:8px 0 14px;padding:12px 0 0;border-top:1px dashed var(--nf-border)}
.nf-tags li{font-size:.72rem;padding:3px 8px;border:1px solid var(--nf-border);color:var(--nf-text);text-transform:uppercase}
.nf-tags li:nth-child(4n+1){border-color:var(--nf-a1);color:var(--nf-a1)}
.nf-tags li:nth-child(4n+3){border-color:var(--nf-a2);color:var(--nf-a2)}
.nf-idcard__barcode{height:34px;background:repeating-linear-gradient(90deg,var(--nf-text) 0 2px,transparent 2px 4px,var(--nf-text) 4px 5px,transparent 5px 8px,var(--nf-text) 8px 11px,transparent 11px 12px)}

/* ================= WORK / EPISODES ================= */
.nf-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:-8px 0 34px}
.nf-filters__lbl{font-family:var(--nf-label);font-size:.75rem;letter-spacing:.14em;color:var(--nf-dim);margin-right:6px}
.nf-filter{font-family:var(--nf-label);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;padding:7px 12px;background:var(--nf-panel);border:1px solid var(--nf-border);color:var(--nf-text)}
.nf-filter:hover,.nf-filter.is-active{border-color:var(--nf-a2);color:var(--nf-a2);box-shadow:0 0 0 1px var(--nf-a2) inset}
.nf-episodes{gap:34px 30px}
.nf-episodes.nf-cols-3 .nf-ep:nth-child(3n+2){transform:translateY(38px) rotate(var(--r))}
.nf-ep{position:relative;background:var(--nf-panel);border:2px solid var(--nf-border);box-shadow:6px 6px 0 rgba(0,0,0,.85);transform:rotate(var(--r));transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column}
.nf-ep:hover{transform:rotate(0) translate(-3px,-3px)!important;box-shadow:10px 10px 0 var(--nf-hot);z-index:3}
.nf-ep.is-hidden,.nf-dossier.is-hidden{display:none}
.nf-ep__thumb{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;border-bottom:2px solid var(--nf-border);text-decoration:none}
.nf-ep__thumb img{width:100%;height:100%;object-fit:cover}
.nf-ep__thumb::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.22) 0 2px,transparent 2px 4px);pointer-events:none}
.nf-ep__thumb--h0{background:linear-gradient(135deg,var(--nf-a1),var(--nf-a3))}
.nf-ep__thumb--h1{background:radial-gradient(circle at 30% 40%,var(--nf-a2),var(--nf-hot) 70%)}
.nf-ep__thumb--h2{background:conic-gradient(from 45deg,var(--nf-a3),var(--nf-hot),var(--nf-a2),var(--nf-a3))}
.nf-ep__thumb--h3{background:repeating-linear-gradient(45deg,var(--nf-hot) 0 18px,#000 18px 36px)}
.nf-ep__thumb--h4{background:linear-gradient(160deg,var(--nf-a2) 0 40%,var(--nf-a1) 40% 70%,var(--nf-a3) 70%)}
.nf-ep__thumb--h5{background:radial-gradient(circle,var(--nf-a3) 0 20%,var(--nf-hot) 20% 40%,var(--nf-a2) 40% 60%,#000 60%)}
.nf-ep__num{position:absolute;left:8px;top:8px;z-index:3;font-family:var(--nf-label);font-size:.85rem;background:#000;color:var(--nf-a2);padding:2px 8px;border:1px solid var(--nf-a2)}
.nf-ep__band{position:absolute;left:-10%;right:-10%;top:18%;z-index:1;background:#000;color:var(--nf-a2);font-family:var(--nf-label);font-size:.7rem;letter-spacing:.14em;white-space:nowrap;padding:4px 0;transform:rotate(-3deg);overflow:hidden}
.nf-ep__big{position:absolute;left:0;right:0;bottom:14%;z-index:2;text-align:center;font-family:var(--nf-display);font-size:clamp(1.3rem,2.1vw,2.1rem);line-height:1;text-transform:uppercase;color:#fff;-webkit-text-stroke:1.5px #000;text-shadow:3px 3px 0 #000,6px 6px 0 var(--nf-hot);transform:rotate(-4deg);padding:0 10px}
.nf-ep:hover .nf-ep__big{animation:nf-jitter .12s steps(2) infinite}
.nf-ep__body{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.nf-ep__row{display:flex;justify-content:space-between;font-family:var(--nf-label);font-size:.74rem;letter-spacing:.1em;margin-bottom:8px}
.nf-ep__ep{color:var(--nf-a1)}.nf-ep__views{color:var(--nf-dim)}
.nf-ep__title{font-family:var(--nf-mono);font-weight:700;font-size:1.08rem;text-transform:uppercase;line-height:1.25;margin-bottom:8px}
.nf-ep__title a{color:var(--nf-text);text-decoration:none}
.nf-ep__title a:hover{color:var(--nf-a2)}
.nf-ep__excerpt{color:var(--nf-dim);font-size:.9rem;flex:1}
.nf-ep__excerpt p{margin:0 0 .8em}
.nf-ep__meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}
.nf-pill{font-family:var(--nf-label);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;padding:2px 7px;border:1px solid var(--nf-a3);color:var(--nf-a3)}
.nf-ep__year{font-size:.8rem;color:var(--nf-dim)}
.nf-ep__role{font-size:.8rem;color:var(--nf-dim);border-top:1px dashed var(--nf-border);padding-top:8px;margin-bottom:10px}
.nf-ep__role b{color:var(--nf-text);font-weight:400}
.nf-ep__link{font-family:var(--nf-label);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;color:var(--nf-a1)}

/* ================= TESTIMONIALS / COMMENTS ================= */
.nf-feed{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px}
.nf-feed--feed .nf-comment:first-child{grid-column:1/-1}
.nf-comment{margin:0;border:1.5px solid var(--nf-border);background:color-mix(in srgb,#000 35%,var(--nf-panel));padding:14px 16px}
.nf-comment__head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.nf-avatar{width:38px;height:38px;flex:none;display:grid;place-items:center;font-family:var(--nf-label);font-size:.85rem;color:#000;border:1.5px solid #000;object-fit:cover}
.nf-avatar--h0{background:var(--nf-a1)}.nf-avatar--h1{background:var(--nf-a2)}.nf-avatar--h2{background:var(--nf-a3)}.nf-avatar--h3{background:var(--nf-hot);color:#fff}
.nf-comment__name{font-family:var(--nf-display);font-size:1rem;text-transform:uppercase}
.nf-comment__name a{color:inherit}
.nf-comment__badges{color:var(--nf-a2);font-size:.9rem}
.nf-comment__time{margin-left:auto;font-family:var(--nf-label);font-size:.66rem;letter-spacing:.1em;color:var(--nf-dim)}
.nf-comment__body{margin:0 0 10px;padding:12px 14px;border:1px solid var(--nf-border);background:color-mix(in srgb,#000 30%,transparent);color:var(--nf-a2);font-size:1rem;line-height:1.6}
.nf-feed--feed .nf-comment:first-child .nf-comment__body{font-size:1.25rem;padding:18px 20px}
.nf-comment__foot{display:flex;justify-content:space-between;gap:12px;font-family:var(--nf-label);font-size:.7rem;letter-spacing:.08em;color:var(--nf-a1);text-transform:uppercase}
.nf-comment__foot span:last-child{color:var(--nf-dim)}
.nf-feed--grid .nf-comment{background:var(--nf-a2);color:#000;border:0;transform:rotate(var(--r));box-shadow:6px 6px 0 rgba(0,0,0,.85)}
.nf-feed--grid .nf-comment__body{color:#000;background:transparent;border:0;padding:4px 0}
.nf-feed--grid .nf-comment *{color:#000!important}

/* ================= AWARDS / ACHIEVEMENTS ================= */
.nf-ach{list-style:none;margin:0;padding:0}
.nf-ach--cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.nf-ach__item{display:flex;gap:16px;align-items:flex-start;padding:18px;border:2px solid var(--nf-border);background:var(--nf-panel);box-shadow:5px 5px 0 rgba(0,0,0,.85)}
.nf-section--inverted .nf-ach__item{box-shadow:5px 5px 0 var(--nf-bg)}
.nf-ach__icon{width:58px;height:58px;flex:none;display:grid;place-items:center;font-size:2rem;background:var(--nf-text);color:var(--nf-inv,var(--nf-a1));border:2px solid var(--nf-border);image-rendering:pixelated}
.nf-motion .nf-ach__item:hover .nf-ach__icon{animation:nf-jitter .15s steps(2) 4}
.nf-ach__unlock{font-family:var(--nf-label);font-size:.66rem;letter-spacing:.14em;color:var(--nf-a1);margin-bottom:4px}
.nf-ach__title{font-family:var(--nf-mono);font-weight:700;font-size:1.05rem;text-transform:uppercase;line-height:1.25;margin-bottom:4px}
.nf-ach__issuer{font-size:.84rem;color:var(--nf-dim);text-transform:uppercase}
.nf-ach__desc{font-size:.88rem;margin:8px 0 0;color:var(--nf-text)}
.nf-ach__link{display:inline-block;margin-top:8px;font-family:var(--nf-label);font-size:.7rem;color:var(--nf-a1)}
.nf-ach--list .nf-ach__item{box-shadow:none;border-width:0 0 1.5px;background:transparent;padding:16px 0}
.nf-ach--list .nf-ach__icon{width:40px;height:40px;font-size:1.3rem}

/* ================= RECOMMENDATIONS / DOSSIERS ================= */
.nf-dossiers{gap:40px 32px;padding-top:16px}
.nf-dossier{position:relative;--nf-a1:#111;--nf-bg:#efe6d2;--nf-text:#111;--nf-dim:#4a4438;--nf-border:#111;color:#111}
.nf-dossier:nth-child(odd){transform:rotate(-1deg)}.nf-dossier:nth-child(even){transform:rotate(1.2deg)}
.nf-dossier__tab{display:inline-block;background:#efe6d2;padding:6px 16px 4px;font-family:var(--nf-label);font-size:.68rem;letter-spacing:.14em;border:2px solid #111;border-bottom:0;border-radius:6px 6px 0 0;color:#111}
.nf-dossier__inner{background:#efe6d2;border:2px solid #111;padding:22px 24px 24px;box-shadow:8px 8px 0 rgba(0,0,0,.85);position:relative;background-image:repeating-linear-gradient(0deg,transparent 0 27px,rgba(0,0,0,.06) 27px 28px)}
.nf-dossier__who{display:flex;align-items:center;gap:14px;margin-bottom:14px;position:relative}
.nf-dossier__name{font-family:var(--nf-display);font-size:1.15rem;text-transform:uppercase;line-height:1.05}
.nf-dossier__role{font-size:.84rem;color:#4a4438}
.nf-stamp{position:absolute;right:0;top:-6px;border:3px solid #c1121f;color:#c1121f;font-family:var(--nf-label);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;padding:4px 10px;transform:rotate(-10deg);opacity:.85;background:rgba(239,230,210,.6)}
.nf-redact{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.nf-redact span{display:block;height:12px;background:#111}
.nf-dossier__body{font-size:.98rem;line-height:1.65}
.nf-dossier__body p{margin:0 0 1em}
.nf-dossier .nf-btn{color:#111;border-color:#111}
.nf-dossier .nf-btn:hover{background:#111;color:#efe6d2}

/* v3.6: testimonials + letters share the dossier files. Tighter, less chrome. */
.nf-anchor{display:block;position:relative;top:-90px;height:0;overflow:hidden}
.nf-dossiers-sec .nf-dossiers{gap:30px 28px;padding-top:6px}
.nf-dossiers-sec .nf-dossier:nth-child(odd){transform:rotate(-.5deg)}.nf-dossiers-sec .nf-dossier:nth-child(even){transform:rotate(.6deg)}
.nf-dossiers-sec .nf-dossier__inner{padding:18px 20px 18px}
.nf-dossiers-sec .nf-dossier__who{margin-bottom:10px}
.nf-dossiers-sec .nf-dossier__body{font-size:.92rem;line-height:1.6}
.nf-dossiers-sec .nf-dossier__body p:last-child{margin-bottom:0}
.nf-dossiers-sec .nf-dossier .nf-btn{margin-top:12px}
.nf-dossier__name a{color:inherit;text-decoration:none;border-bottom:2px solid currentColor}
.nf-dossier--testimonial .nf-dossier__tab{background:#f2c230;color:#111}
.nf-dossier__quote{margin:0;padding-left:14px;border-left:4px solid #111;font-style:italic}
.nf-filters--dossiers{margin:-4px 0 26px}
.nf-filter b{opacity:.6;font-weight:400;margin-left:4px}

/* ================= CONTACT ================= */
.nf-contact__grid{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:56px;align-items:center}
.nf-section-contact .nf-title{font-size:clamp(2.8rem,6vw,6rem)}
.nf-contact__loc{color:var(--nf-dim);margin:14px 0 26px}
.nf-contact__side{position:relative}
.nf-callout{position:absolute;right:-8px;top:-36px;z-index:3;background:var(--nf-hot);color:#fff;font-family:var(--nf-display);font-size:1.05rem;padding:10px 16px;transform:rotate(4deg);box-shadow:5px 5px 0 #000;text-transform:uppercase;border:2px solid #fff}
.nf-motion .nf-callout{animation:nf-callout 1.6s steps(1) infinite}
@keyframes nf-callout{50%{background:var(--nf-text);color:var(--nf-bg);border-color:var(--nf-hot)}}
.nf-term--links{max-width:none}
.nf-links{list-style:none;margin:0;padding:0}
.nf-links li+li{border-top:1px dashed var(--nf-border)}
.nf-links a{display:grid;grid-template-columns:80px 1fr auto;gap:12px;align-items:center;padding:14px 18px;text-decoration:none;color:var(--nf-text)}
.nf-links__cmd{color:var(--nf-a1);font-size:.85rem}
.nf-links__lbl{font-family:var(--nf-label);letter-spacing:.1em;text-transform:uppercase;font-size:.9rem}
.nf-links__val{color:var(--nf-dim);font-size:.88rem}
.nf-links a:hover{background:var(--nf-a1)}
.nf-links a:hover *{color:var(--nf-bg)}

/* ================= FOOTER / MARQUEE ================= */
.nf-footer{position:relative;z-index:1;padding:26px 0;border-top:2px solid var(--nf-border);font-family:var(--nf-label);font-size:.74rem;letter-spacing:.1em;color:var(--nf-a1);background:var(--nf-bg);text-transform:uppercase}
.nf-footer__inner{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
.nf-footer ul{list-style:none;display:flex;gap:14px;margin:0;padding:0}
.nf-footer a{color:var(--nf-a2);text-decoration:none}
.nf-marquee{position:fixed;left:0;right:0;bottom:0;height:var(--nf-marquee-h);z-index:800;background:var(--nf-panel);border-top:2px solid var(--nf-border);overflow:hidden;display:flex;align-items:center;box-shadow:0 -4px 0 rgba(0,0,0,.6)}
.nf-marquee__track{display:flex;width:max-content;animation:nf-mq var(--nf-marquee) linear infinite}
.nf-marquee:hover .nf-marquee__track{animation-play-state:paused}
.nf-marquee__run{display:flex;white-space:nowrap;font-family:var(--nf-label);font-size:.85rem;letter-spacing:.12em;text-transform:uppercase}
.nf-marquee__sep{color:var(--nf-a2);margin:0 18px}
.nf-marquee__msg.nf-c0{color:var(--nf-a1)}.nf-marquee__msg.nf-c1{color:var(--nf-a3)}.nf-marquee__msg.nf-c2{color:var(--nf-text)}
@keyframes nf-mq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.nf-top{position:fixed;right:22px;bottom:calc(var(--nf-marquee-h) + 18px);z-index:700;width:44px;height:44px;display:grid;place-items:center;background:var(--nf-panel);border:1.5px solid var(--nf-a1);color:var(--nf-a1);text-decoration:none;opacity:0;pointer-events:none;transition:opacity .2s;box-shadow:4px 4px 0 #000}
body:not(.nf-has-marquee) .nf-top{bottom:22px}
.nf-top.is-visible{opacity:1;pointer-events:auto}
.nf-top:hover{background:var(--nf-a1);color:var(--nf-bg)}

/* ================= GENERIC PAGES ================= */
.pp-page{position:relative;z-index:1;padding:70px 0}
.pp-page .pp-container{max-width:900px;margin:0 auto;padding:40px 44px;background:var(--nf-panel);border:2px solid var(--nf-border);box-shadow:8px 8px 0 #000}
.pp-page__title{font-family:var(--nf-display);font-size:clamp(2rem,4vw,3.6rem);text-transform:uppercase;text-shadow:3px 3px 0 var(--nf-hot)}
.pp-entry{margin-bottom:40px}
.pp-muted{color:var(--nf-dim)}
.nf-meta{display:flex;gap:10px;font-family:var(--nf-label);font-size:.75rem;letter-spacing:.12em;color:var(--nf-a1);text-transform:uppercase;margin-bottom:10px}
.pp-content{line-height:1.75}

/* ================= STILL MODE / REDUCED MOTION ================= */
.nf-still *,.nf-still *::before,.nf-still *::after{animation:none!important;transition:none!important}
.nf-still .nf-glitch::before,.nf-still .nf-glitch::after{display:none}
.nf-still .nf-marquee__track{transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .nf-glitch::before,.nf-glitch::after{display:none}
  #nf-cursor{display:none!important}
  .nf-cursor-on,.nf-cursor-on a,.nf-cursor-on button{cursor:auto}
}

/* ================= RESPONSIVE ================= */
@media (max-width:1180px){
  .nf-menu a{padding:7px 9px;font-size:.7rem}
  .nf-vibe{display:none}
  .nf-cols-4,.nf-ach--cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nf-episodes.nf-cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nf-episodes.nf-cols-3 .nf-ep:nth-child(3n+2){transform:rotate(var(--r))}
}
@media (max-width:960px){
  :root{--nf-header-h:62px}
  .nf-container{padding:0 18px}
  .nf-nav-toggle{display:block}
  .nf-nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;background:var(--nf-bg);border-bottom:2px solid var(--nf-border);padding:16px 18px 20px}
  .nf-nav.is-open{display:flex}
  .nf-vibe__menu{position:static;width:auto;margin-top:10px;box-shadow:none}
  .nf-vibe__menu:not([hidden]){display:grid;grid-template-columns:1fr 1fr;gap:2px 8px}
  .nf-vibe__title{grid-column:1/-1}
  .nf-menu{flex-direction:column}
  .nf-vibe{display:block}
  .nf-logo{font-size:1.1rem}
  .nf-hero__grid,.nf-hero--no-image .nf-hero__grid,.nf-hero--image-left .nf-hero__grid,.nf-toc__wrap,.nf-goals,.nf-contact__grid{grid-template-columns:minmax(0,1fr);gap:34px}
  .nf-hero__word{font-size:2.6rem}
  .nf-hero__kicker{letter-spacing:.1em;font-size:.72rem}
  .nf-photo{transform:rotate(1deg)}
  .nf-hero--image-left .nf-hero__side{order:0}
  .nf-hero__side{padding-top:0;max-width:440px}
  .nf-hero__name{width:auto}
  .nf-status{margin-left:0}
  .nf-sticker--3,.nf-sticker--4,.nf-sticker--5{display:none}
  .nf-sticker--0{top:auto;bottom:18px;right:4%}
  .nf-sticker--1{top:auto;bottom:62px;right:auto;left:4%}
  .nf-sticker--2{bottom:12px;right:auto;left:44%}
  .nf-hero{padding-bottom:120px}
  .nf-win__body{padding:28px 20px 32px}
  .nf-cols-2,.nf-cols-3,.nf-cols-4,.nf-ach--cards,.nf-feed,.nf-episodes.nf-cols-3{grid-template-columns:1fr}
  .nf-dir__list a{grid-template-columns:44px 1fr 60px}
  .nf-dir__blurb,.nf-dir__size{display:none}
  .nf-log__item{grid-template-columns:1fr;gap:4px}
  .nf-crumbs__ts{display:none}
  .nf-callout{right:4px;top:-30px}
  .nf-raw__file{font-size:3rem;top:-20px}
  .nf-section--inverted,.nf-section--inverted>.nf-container{transform:none}
}
@media (max-width:520px){
  .nf-btn{white-space:normal}
  .nf-links a{grid-template-columns:64px 1fr}
  .nf-links__val{grid-column:2}
  .nf-comment__time{margin-left:0;width:100%}
}

/* ================= REFINEMENTS ================= */
.nf-section--inverted .nf-win__meta{color:var(--nf-inv)}
.nf-raw__file{opacity:.55;top:-58px}
.nf-sticker--1{top:47%;right:1%;transform:rotate(-7deg)}
.nf-sticker--5{top:auto;bottom:130px;left:46%;right:auto;transform:rotate(8deg)}
@media (max-width:960px){
  .nf-sticker--1{top:auto;bottom:62px;right:auto;left:4%;transform:rotate(-5deg)}
  .nf-sticker--5{display:none}
  .nf-title{font-size:clamp(1.3rem,6.1vw,2.2rem);overflow-wrap:break-word}
  .nf-section-contact .nf-title{font-size:clamp(2rem,9vw,3rem)}
  .nf-dossier__name{font-size:1rem}
  .nf-stamp{position:static;display:inline-block;margin-left:auto}
  .nf-dossier__who{flex-wrap:wrap}
}
#nf-cursor{opacity:0}
#nf-cursor.is-live{opacity:1}

/* =====================================================================
   v3 — SIGNAL / CYBORG / CHAOS LAYER
   ===================================================================== */
.nf-defs{position:absolute;width:0;height:0;overflow:hidden}
.nf-glitch-high{--g-off:14px;--g-dur:1.05s}
.nf-glitch-high .nf-title{text-shadow:-3px 0 color-mix(in srgb,var(--nf-hot) 75%,transparent),3px 0 color-mix(in srgb,var(--nf-a3) 75%,transparent)}
.nf-glitch-high.nf-motion .nf-title{animation:nf-skew 3.6s infinite steps(1)}

/* ---- bio terminal ---- */
.nf-term{max-width:680px;position:relative}
.nf-term__bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.nf-term__sig{color:var(--nf-a2);font-family:var(--nf-label);font-size:.66rem;letter-spacing:.1em;margin-left:auto}
.nf-term__body{padding:16px 18px 10px}
.nf-term__p{margin:0 0 .85em}
.nf-term__prompt{color:var(--nf-dim);text-shadow:none}
.nf-type__off{color:transparent;text-shadow:none}
.nf-eq{display:inline-flex;align-items:flex-end;gap:2px;height:14px}
.nf-eq i{display:block;width:3px;height:40%;background:var(--nf-a1);box-shadow:0 0 6px var(--nf-a1)}
.nf-motion .nf-eq i{animation:nf-eq .9s ease-in-out infinite alternate}
.nf-eq i:nth-child(2n){animation-duration:.63s!important;height:70%}
.nf-eq i:nth-child(3n){animation-duration:1.17s!important;height:55%;background:var(--nf-a2)}
.nf-eq i:nth-child(5n){animation-duration:.47s!important;background:var(--nf-hot)}
@keyframes nf-eq{0%{height:12%}100%{height:100%}}
.nf-eq--inline{vertical-align:middle;margin-left:6px;height:11px}

/* ---- status widget + oscilloscope ---- */
.nf-status dl div{grid-template-columns:118px 1fr}
.nf-scope{position:relative;margin-top:12px;border:1.5px solid var(--nf-border);background:#000}
.nf-scope__cv{display:block;width:100%;height:74px}
.nf-scope__hz,.nf-scope__lbl{position:absolute;top:4px;font-family:var(--nf-label);font-size:.6rem;letter-spacing:.1em;padding:1px 5px;background:#000}
.nf-scope__hz{right:4px;color:var(--nf-a2)}
.nf-scope__lbl{left:4px;color:var(--nf-a1)}
.nf-motion .nf-scope__lbl{animation:nf-blink 2.4s steps(1) infinite}

/* ---- photo HUD reticle + rotating seal ---- */
.nf-photo{position:relative}
.nf-reticle{position:absolute;inset:0;z-index:3;pointer-events:none;color:var(--nf-a1)}
.nf-reticle__c{position:absolute;width:26px;height:26px;border:3px solid currentColor}
.nf-reticle__c--tl{top:10px;left:10px;border-right:0;border-bottom:0}
.nf-reticle__c--tr{top:10px;right:10px;border-left:0;border-bottom:0}
.nf-reticle__c--bl{bottom:10px;left:10px;border-right:0;border-top:0}
.nf-reticle__c--br{bottom:10px;right:10px;border-left:0;border-top:0}
.nf-reticle__x{position:absolute;left:50%;top:40%;width:84px;height:84px;margin:-42px 0 0 -42px;border:2px dashed currentColor;border-radius:50%;opacity:.8}
.nf-reticle__x::before,.nf-reticle__x::after{content:"";position:absolute;background:currentColor}
.nf-reticle__x::before{left:50%;top:-14px;bottom:-14px;width:2px;margin-left:-1px}
.nf-reticle__x::after{top:50%;left:-14px;right:-14px;height:2px;margin-top:-1px}
.nf-motion .nf-reticle__x{animation:nf-spin 7s linear infinite}
.nf-reticle__tag{position:absolute;font-family:var(--nf-label);font-size:.58rem;letter-spacing:.08em;background:#000;color:var(--nf-a1);padding:2px 6px;white-space:nowrap}
.nf-reticle__tag--a{top:44px;left:14px}
.nf-reticle__tag--b{top:44px;right:14px}
.nf-reticle__tag--c{bottom:44px;left:50%;transform:translateX(-50%);color:var(--nf-a2)}
.nf-reticle::after{content:"";position:absolute;left:0;right:0;height:2px;top:0;background:var(--nf-a1);box-shadow:0 0 12px var(--nf-a1);opacity:.8}
.nf-motion .nf-reticle::after{animation:nf-scanline 3.2s linear infinite}
@keyframes nf-scanline{0%{top:0}100%{top:100%}}
@keyframes nf-spin{to{transform:rotate(360deg)}}
.nf-seal{position:absolute;z-index:8;width:150px;height:150px;left:-66px;bottom:40px;pointer-events:none;filter:drop-shadow(4px 4px 0 #000)}
.nf-motion .nf-seal{animation:nf-spin 16s linear infinite}
.nf-seal__ring{fill:var(--nf-bg);stroke:var(--nf-a2);stroke-width:3}
.nf-seal text{fill:var(--nf-a2);font-family:var(--nf-label);font-size:12px;letter-spacing:0}
.nf-seal__core circle{fill:var(--nf-hot);stroke:#000;stroke-width:3}
.nf-seal__core path{fill:none;stroke:#fff;stroke-width:4;stroke-linejoin:round;stroke-linecap:round}

/* ---- extra hero stickers ---- */
.nf-sticker--6{top:250px;right:40%;background:var(--nf-bg);color:var(--nf-a2);border:2px solid var(--nf-a2);transform:rotate(-12deg)}
.nf-sticker--7{bottom:230px;right:-4px;background:var(--nf-hot);color:#fff;transform:rotate(90deg);transform-origin:right bottom}

/* ---- floating section stickers ---- */
.nf-fsticker{top:-16px;left:var(--fx);transform:rotate(var(--fr));z-index:12;font-size:.7rem}
.nf-fsticker--0{background:var(--nf-a2);color:#000}
.nf-fsticker--1{background:var(--nf-hot);color:#fff}
.nf-fsticker--2{background:var(--nf-a3);color:#000}
.nf-fsticker--3{background:var(--nf-bg);color:var(--nf-a1);border:2px dashed var(--nf-a1);box-shadow:none}
.nf-warp-medium.nf-motion .nf-fsticker{animation:nf-wob 4s ease-in-out infinite alternate}
.nf-warp-high.nf-motion .nf-fsticker{animation:nf-spinr 9s linear infinite}
.nf-warp-high.nf-motion .nf-sticker--4,.nf-warp-high.nf-motion .nf-sticker--6{animation:nf-spinr 12s linear infinite reverse}
@keyframes nf-wob{0%{transform:rotate(calc(var(--fr) - 6deg))}100%{transform:rotate(calc(var(--fr) + 6deg)) translateY(-4px)}}
@keyframes nf-spinr{to{transform:rotate(calc(var(--fr, 0deg) + 360deg))}}

/* ---- rotated / warped windows (scaled by the warp level) ---- */
.nf-warp-low .nf-section:nth-of-type(even)>.nf-container>.nf-win{rotate:.35deg}
.nf-warp-medium .nf-section:nth-of-type(odd)>.nf-container>.nf-win{rotate:-.6deg}
.nf-warp-medium .nf-section:nth-of-type(even)>.nf-container>.nf-win{rotate:.7deg}
.nf-warp-high .nf-section:nth-of-type(odd)>.nf-container>.nf-win{rotate:-1.3deg}
.nf-warp-high .nf-section:nth-of-type(even)>.nf-container>.nf-win{rotate:1.2deg}
.nf-warp-low #nf-main,.nf-warp-medium #nf-main,.nf-warp-high #nf-main{transform:skewY(var(--nf-skew,0deg));transform-origin:50% 50%}

/* ---- datamosh ---- */
.is-mosh{filter:url(#nf-mosh) hue-rotate(var(--mh,0deg)) saturate(2.2);translate:var(--mx,0) 0;outline:2px solid color-mix(in srgb,var(--nf-hot) 70%,transparent);outline-offset:3px}
.nf-mosh-high .is-mosh{filter:url(#nf-mosh) hue-rotate(var(--mh,0deg)) saturate(3) contrast(1.4) invert(.12)}
.is-tear #nf-main{filter:url(#nf-mosh-still) saturate(2.5);translate:6px 0}
.nf-mosh-medium .nf-photo__img img,.nf-mosh-high .nf-photo__img img{filter:grayscale(1) contrast(1.5) brightness(1.05)}
.nf-mosh-high.nf-motion .nf-hero__word--1{animation:nf-skew 1.9s infinite steps(1)}

/* ---- HUD corners ---- */
.nf-hud{display:none}
@media (min-width:1400px){
  .nf-hud{display:block;position:fixed;inset:0;pointer-events:none;z-index:650;font-family:var(--nf-label);font-size:.58rem;letter-spacing:.14em;color:var(--nf-a1);text-transform:uppercase}
  .nf-hud__c{position:absolute;display:flex;gap:8px;writing-mode:vertical-rl;opacity:.85}
  .nf-hud__c span{white-space:nowrap}
  .nf-hud__c b{font-weight:400;color:var(--nf-a2)}
  .nf-hud__c::before{content:"";position:absolute;width:18px;height:18px;border:2px solid currentColor}
  .nf-hud__c--tl{left:10px;top:calc(var(--nf-header-h) + 16px);transform:rotate(180deg)}
  .nf-hud__c--tl::before{bottom:-26px;right:-4px;border-left:0;border-top:0}
  .nf-hud__c--tr{right:10px;top:calc(var(--nf-header-h) + 16px)}
  .nf-hud__c--tr::before{top:-26px;right:-4px;border-left:0;border-bottom:0}
  .nf-hud__c--bl{left:10px;bottom:calc(var(--nf-marquee-h) + 16px);transform:rotate(180deg)}
  .nf-hud__c--bl::before{top:-26px;left:-4px;border-right:0;border-bottom:0}
  .nf-hud__c--br{right:10px;bottom:calc(var(--nf-marquee-h) + 16px)}
  .nf-hud__c--br::before{bottom:-26px;right:-4px;border-left:0;border-top:0}
  .nf-hud__eq{display:flex;gap:2px;align-items:flex-end}
  .nf-hud__eq i{display:block;height:3px;width:10px;background:currentColor}
  .nf-motion .nf-hud__eq i{animation:nf-eqw .7s ease-in-out infinite alternate}
  .nf-hud__eq i:nth-child(odd){animation-duration:.45s!important}
  .nf-hud__eq i:nth-child(3n){animation-duration:1.1s!important}
  .admin-bar .nf-hud__c--tl,.admin-bar .nf-hud__c--tr{top:calc(var(--nf-header-h) + 48px)}
}
@keyframes nf-eqw{0%{width:2px}100%{width:14px}}

/* ---- dividers ---- */
.nf-div{position:relative;max-width:var(--nf-width);margin:0 auto;padding:0 40px;pointer-events:none}
.nf-div--wave svg{display:block;width:100%;height:56px;overflow:visible}
.nf-div__axis{stroke:var(--nf-border);stroke-width:1;stroke-dasharray:4 6;vector-effect:non-scaling-stroke}
.nf-div__line{fill:none;stroke:var(--nf-a1);stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 4px var(--nf-a1))}
.nf-div__line--ghost{stroke:var(--nf-hot);opacity:.65;transform:translate(4px,2px);filter:none}
.nf-motion .nf-div__line--ghost{animation:nf-ghost 2.2s steps(4) infinite}
@keyframes nf-ghost{0%{transform:translate(4px,2px)}50%{transform:translate(-5px,-1px)}100%{transform:translate(4px,2px)}}
.nf-div__lbl{position:absolute;left:40px;top:-6px;font-family:var(--nf-label);font-size:.6rem;letter-spacing:.14em;color:var(--nf-a1);background:var(--nf-bg);padding:0 8px}
.nf-div__lbl--r{left:auto;right:40px;top:auto;bottom:-6px;color:var(--nf-dim)}
.nf-div--ascii{max-width:none;padding:0;overflow:hidden;white-space:nowrap;border-top:1px dashed var(--nf-border);border-bottom:1px dashed var(--nf-border);background:color-mix(in srgb,var(--nf-panel) 70%,transparent);transform:rotate(-1deg);margin:6px -20px}
.nf-div--ascii.nf-div--rev{transform:rotate(.8deg)}
.nf-div__run{display:inline-flex;font-family:var(--nf-mono);font-size:.82rem;line-height:28px;color:var(--nf-a3);letter-spacing:.06em}
.nf-div__run span{padding-right:.5em}
.nf-motion .nf-div__run{animation:nf-run 50s linear infinite}
.nf-motion .nf-div--rev .nf-div__run{animation-direction:reverse}
@keyframes nf-run{to{transform:translateX(-50%)}}

/* ---- section personalities ---- */
.nf-goals__mission-tag{font-family:var(--nf-label);font-size:.66rem;letter-spacing:.14em;color:var(--nf-hot);margin-bottom:8px}
.nf-log__hz{display:block;font-size:.62rem;color:var(--nf-dim);margin-top:4px;letter-spacing:.1em}
.nf-log__meter{display:block;height:5px;margin-top:5px;max-width:110px;background:linear-gradient(90deg,var(--nf-a1) 0 var(--lvl),var(--nf-border) var(--lvl))}
.nf-idcard__lvl--hw{color:var(--nf-a1)}
.nf-ep__thumb{position:relative}
.nf-ep__rec{position:absolute;right:8px;top:8px;z-index:3;font-family:var(--nf-label);font-size:.6rem;letter-spacing:.1em;background:#000;color:var(--nf-hot);padding:2px 6px}
.nf-live{font-family:var(--nf-label);font-size:.7rem;letter-spacing:.14em;color:var(--nf-dim);margin:-6px 0 18px}
.nf-live__dot{color:var(--nf-hot)}
.nf-motion .nf-live__dot{animation:nf-blink 1s steps(1) infinite}
.nf-typing{grid-column:1/-1;display:flex;align-items:center;gap:10px;color:var(--nf-dim);font-size:.85rem;opacity:.85}
.nf-typing .nf-avatar{width:30px;height:30px;font-size:.7rem}
.nf-typing__dots{display:inline-flex;gap:4px}
.nf-typing__dots i{width:6px;height:6px;border-radius:50%;background:var(--nf-dim)}
.nf-motion .nf-typing__dots i{animation:nf-blink 1.2s steps(1) infinite}
.nf-typing__dots i:nth-child(2){animation-delay:.3s!important}.nf-typing__dots i:nth-child(3){animation-delay:.6s!important}
.nf-band{overflow:hidden;white-space:nowrap;background:var(--nf-a2);color:#000;font-family:var(--nf-label);font-size:.75rem;letter-spacing:.12em;padding:6px 0;margin:0 -10px 30px;transform:rotate(-1.2deg);box-shadow:4px 4px 0 #000}
.nf-band span{display:inline-block}
.nf-motion .nf-band span{animation:nf-run 30s linear infinite}
.nf-meter{display:flex;align-items:center;gap:10px;margin:0 0 20px;font-family:var(--nf-label);font-size:.62rem;letter-spacing:.12em;color:var(--nf-a1)}
.nf-meter__bars{display:inline-flex;align-items:flex-end;gap:3px;height:22px}
.nf-meter__bars i{display:block;width:6px;background:var(--nf-a1)}
.nf-meter__bars i:nth-child(n+8){background:var(--nf-a2)}.nf-meter__bars i:nth-child(n+11){background:var(--nf-hot)}
.nf-meter__bars i:nth-child(1){height:15%}.nf-meter__bars i:nth-child(2){height:22%}.nf-meter__bars i:nth-child(3){height:30%}.nf-meter__bars i:nth-child(4){height:37%}.nf-meter__bars i:nth-child(5){height:45%}.nf-meter__bars i:nth-child(6){height:52%}.nf-meter__bars i:nth-child(7){height:60%}.nf-meter__bars i:nth-child(8){height:67%}.nf-meter__bars i:nth-child(9){height:75%}.nf-meter__bars i:nth-child(10){height:82%}.nf-meter__bars i:nth-child(11){height:90%}.nf-meter__bars i:nth-child(12){height:100%}
.nf-motion .nf-meter__bars i:nth-child(n+9){animation:nf-blink .8s steps(1) infinite}
.nf-motion .nf-meter__bars i:nth-child(n+11){animation-duration:.5s!important}

/* ---- pop-ups ---- */
.nf-pops{position:fixed;inset:0;z-index:900;pointer-events:none}
.nf-pop{position:absolute;pointer-events:auto;background:var(--nf-panel);border:2px solid var(--nf-text);box-shadow:7px 7px 0 #000;rotate:var(--pr);font-family:var(--nf-mono);color:var(--nf-text)}
.nf-motion .nf-pop{animation:nf-popin .22s steps(3)}
.nf-pop.is-closing{opacity:0;scale:.9}
.nf-pop.is-drag{rotate:0deg;box-shadow:12px 12px 0 #000}
@keyframes nf-popin{0%{scale:.4;opacity:0}60%{scale:1.08}100%{scale:1;opacity:1}}
.nf-pop__bar{display:flex;align-items:center;gap:8px;padding:5px 6px 5px 10px;background:var(--nf-hot);color:#fff;font-family:var(--nf-label);font-size:.7rem;letter-spacing:.1em;cursor:move;user-select:none;touch-action:none}
.nf-pop--b .nf-pop__bar{background:var(--nf-a3);color:#000}
.nf-pop--c .nf-pop__bar{background:var(--nf-a1);color:#000}
.nf-pop__t{flex:1}
.nf-pop__x{background:var(--nf-bg);color:var(--nf-text);border:1.5px solid currentColor;width:22px;height:22px;line-height:1;cursor:pointer;font-size:.9rem;padding:0}
.nf-pop__body{padding:14px 14px 12px}
.nf-pop__m{margin:0 0 12px;font-size:.88rem;line-height:1.5}
.nf-pop__btns{display:flex;gap:8px;justify-content:flex-end}
.nf-pop__ok{font-family:var(--nf-label);font-size:.66rem;letter-spacing:.1em;padding:6px 10px;background:var(--nf-bar);color:var(--nf-bartext);border:1.5px solid var(--nf-border);box-shadow:2px 2px 0 #000;cursor:pointer}
.nf-pop__ok:hover{background:var(--nf-a2);color:#000}

/* ---- easter-egg overlays ---- */
.nf-flash{position:fixed;inset:0;z-index:950;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(0,0,0,.6);text-align:center;padding:20px}
.nf-motion .nf-flash{animation:nf-flash 1.6s steps(6) forwards}
@keyframes nf-flash{0%{opacity:0}8%{opacity:1}85%{opacity:1}100%{opacity:0}}
.nf-flash__big{position:relative;font-family:var(--nf-display);font-size:clamp(2rem,8vw,7rem);line-height:.95;color:var(--nf-a1);text-shadow:-5px 0 var(--nf-hot),5px 0 var(--nf-a3),0 0 30px var(--nf-a1)}
.nf-flash__small{font-family:var(--nf-label);font-size:clamp(.7rem,1.6vw,1rem);letter-spacing:.2em;color:var(--nf-a2);background:#000;padding:6px 12px}
.nf-flash--cyborg{background:rgba(0,0,0,.35)}
.nf-flash--cyborg .nf-flash__big{color:var(--nf-a2)}
.nf-motion .nf-flash--cyborg,.nf-motion .nf-flash--recal{animation-duration:2.6s}
.nf-flash__meter{width:min(520px,80vw);height:14px;border:2px solid var(--nf-a1);padding:2px}
.nf-flash__meter span{display:block;height:100%;width:var(--p,0%);background:repeating-linear-gradient(90deg,var(--nf-a1) 0 8px,transparent 8px 11px)}
.nf-rain{position:fixed;inset:0;z-index:940;pointer-events:none;mix-blend-mode:screen;opacity:.75;transition:opacity .6s}
.nf-rain.is-out{opacity:0}
html.nf-cyborg #nf-main{filter:hue-rotate(95deg) saturate(1.5) contrast(1.1)}
html.nf-cyborg .nf-hud{color:var(--nf-hot)}
html.nf-cyborg .nf-logo::after{content:" [CYBORG]";font-size:.5em;color:var(--nf-a1);-webkit-text-stroke:0;text-shadow:none}
.nf-logo.is-poked{animation:nf-jitter .12s steps(2) 3}

/* ---- responsive for v3 ---- */
@media (max-width:960px){
  .nf-sticker--6,.nf-sticker--7{display:none}
  .nf-seal{width:104px;height:104px;left:-14px;bottom:auto;top:-40px}
  .nf-fsticker{font-size:.6rem;padding:5px 9px;left:min(var(--fx),calc(100% - 190px));max-width:calc(100% - 30px);overflow:hidden;text-overflow:ellipsis}
  .nf-div{padding:0 18px}
  .nf-div__lbl{left:18px}.nf-div__lbl--r{right:18px}
  .nf-div--wave svg{height:40px}
  .nf-term__sig{display:none}
  .nf-band{margin:0 0 24px}
  .nf-warp-low .nf-section>.nf-container>.nf-win,.nf-warp-medium .nf-section>.nf-container>.nf-win,.nf-warp-high .nf-section>.nf-container>.nf-win{rotate:none}
  .nf-reticle__tag--a,.nf-reticle__tag--b{top:40px;font-size:.5rem}
}
@media (prefers-reduced-motion:reduce){
  .nf-warp-low #nf-main,.nf-warp-medium #nf-main,.nf-warp-high #nf-main{transform:none}
  .is-mosh{filter:none;translate:none;outline:0}
  .nf-rain,.nf-pops{display:none}
}
.nf-still #nf-main{transform:none!important}
/* v3 fixes */
.nf-reticle__tag--a,.nf-reticle__tag--b{top:auto;bottom:74px}
.nf-reticle__tag--c{bottom:auto;top:16px}
.nf-sticker--6{top:440px;left:50%;right:auto}
.nf-seal{left:-44px;bottom:30px}
.nf-section--inverted .nf-band{color:var(--nf-inv);box-shadow:4px 4px 0 rgba(0,0,0,.35)}
@media (min-width:961px){
  .nf-sticker--5{bottom:118px;left:24%}
  .nf-sticker--2{bottom:12px;right:17%}
}
@media (max-width:960px){
  .nf-hero{padding-bottom:140px}
  .nf-sticker{font-size:.66rem;padding:6px 10px}
  .nf-sticker--0{bottom:-58px;top:auto;left:4%;right:auto;transform:rotate(-4deg)}
  .nf-sticker--1{bottom:-62px;top:auto;right:4%;left:auto;transform:rotate(5deg)}
  .nf-sticker--2{bottom:-112px;top:auto;left:8%;right:auto;transform:rotate(-2deg)}
  #nf-main{overflow-x:clip}
}
.nf-section--raw .nf-fsticker{top:-44px}
/* ==========================================================================
   v3.1 — Work Sample video facade ("PLAY TRANSMISSION")
   ========================================================================== */
.nf-vid{position:relative;display:block;aspect-ratio:16/9;overflow:hidden;background:#000;isolation:isolate}
.nf-vid--card,.nf-vid--link{border-bottom:2px solid var(--nf-border)}
.nf-vid__btn{all:unset;box-sizing:border-box;position:absolute;inset:0;display:block;cursor:pointer;overflow:hidden}
.nf-vid__btn:focus{outline:0}
.nf-vid__btn::after,.nf-vid--link::before{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;box-shadow:inset 0 0 0 3px var(--nf-a2),inset 0 0 0 6px #000;opacity:0}
.nf-vid__btn:focus-visible::after,.nf-vid--link:focus-visible::before{opacity:1}
.nf-vid--link:focus-visible{outline:0}
.nf-vid__frame,.nf-vid__blur{position:absolute;inset:0;display:block}
.nf-vid__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.35) contrast(1.12);transition:filter .2s,transform .3s}
.nf-vid__frame::before,.nf-vid__frame::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none}
.nf-vid__frame::before{background:repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 2px,transparent 2px 4px)}
.nf-vid__frame::after{background:linear-gradient(180deg,rgba(0,0,0,.55),transparent 30%,transparent 55%,rgba(0,0,0,.8));mix-blend-mode:multiply}
.nf-vid__noimg{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--nf-label);letter-spacing:.2em;color:var(--nf-a2);background:repeating-linear-gradient(45deg,#111 0 10px,#000 10px 20px)}
/* chromatic glitch strips over the cover */
.nf-vid__glitch{position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(transparent 0 22%,color-mix(in srgb,var(--nf-a2) 35%,transparent) 22% 24%,transparent 24% 61%,color-mix(in srgb,var(--nf-hot) 40%,transparent) 61% 62.5%,transparent 62.5%);mix-blend-mode:screen;opacity:.55}
.nf-vid__src{position:absolute;left:8px;bottom:8px;z-index:3;font-family:var(--nf-label);font-size:.58rem;letter-spacing:.12em;color:#fff;background:rgba(0,0,0,.75);padding:2px 6px;border-left:3px solid var(--nf-hot)}
.nf-vid .nf-ep__num{position:absolute;left:8px;top:8px;z-index:3}
.nf-vid .nf-ep__rec{position:absolute;right:8px;top:8px;z-index:3;animation:nf-blink 1.2s steps(2) infinite}
.nf-vid__play{position:absolute;left:50%;top:50%;z-index:3;transform:translate(-50%,-50%) rotate(-3deg);display:inline-flex;align-items:center;gap:.55em;white-space:nowrap;font-family:var(--nf-display);font-size:clamp(.8rem,1.25vw,1.05rem);letter-spacing:.06em;text-transform:uppercase;color:#000;background:var(--nf-a1);padding:.55em .9em;border:2px solid #000;box-shadow:4px 4px 0 #000,7px 7px 0 var(--nf-hot);text-shadow:none;transition:transform .15s}
.nf-vid__tri{display:inline-grid;place-items:center;width:1.7em;height:1.7em;border-radius:50%;background:#000;color:var(--nf-a1);font-size:.85em;line-height:1}
.nf-vid__btn:hover .nf-vid__play,.nf-vid__btn:focus-visible .nf-vid__play,.nf-vid--link:hover .nf-vid__play{transform:translate(-50%,-50%) rotate(-1deg) scale(1.07);box-shadow:4px 4px 0 #000,-6px -4px 0 var(--nf-a2),9px 9px 0 var(--nf-hot)}
.nf-vid__btn:hover .nf-vid__img,.nf-vid--link:hover .nf-vid__img{filter:saturate(1.8) contrast(1.3) hue-rotate(-12deg);transform:scale(1.03)}
.nf-motion .nf-vid__btn:hover .nf-vid__glitch,.nf-motion .nf-vid--link:hover .nf-vid__glitch{animation:nf-vidglitch .35s steps(3) infinite;opacity:.9}
@keyframes nf-vidglitch{0%{transform:translate(0,0)}33%{transform:translate(-6px,8%)}66%{transform:translate(5px,-12%)}100%{transform:translate(0,4%)}}
/* vertical (Shorts): blurred fill behind a centred 9:16 frame on the cover */
.nf-vid.is-vertical .nf-vid__blur .nf-vid__img{filter:blur(18px) saturate(1.6) brightness(.55);transform:scale(1.2)}
.nf-vid.is-vertical .nf-vid__frame{left:50%;right:auto;width:calc(100% * 9 / 16 * 9 / 16);transform:translateX(-50%);border-inline:2px solid var(--nf-a2);box-shadow:0 0 0 1px #000}
.nf-vid.is-vertical .nf-vid__frame .nf-vid__img{object-fit:cover}
/* playing */
.nf-vid__iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:#000}
.nf-vid.is-playing{outline:2px solid var(--nf-a1);outline-offset:-2px;cursor:auto}
.nf-vid--card.is-vertical.is-playing,.nf-vid--single.is-vertical.is-playing{aspect-ratio:9/16;width:min(100%,calc(min(78vh,640px) * 9 / 16));margin-inline:auto}
.nf-ep.is-video-playing{--r:0deg;transform:none!important;z-index:5}
.nf-ep__link.nf-vid__trigger{display:inline-block;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:left;line-height:inherit}
.nf-ep__link.nf-vid__trigger:hover{text-decoration:underline}
.nf-ep__link.nf-vid__trigger:focus-visible{outline:2px solid var(--nf-a2);outline-offset:3px}
.nf-vid__fallback{position:absolute;inset:auto 8px 8px auto;z-index:4;background:#000;color:var(--nf-a1);padding:4px 8px}
/* while a video plays: CRT overlays back off, no new pop-ups (see main.js) */
.nf-watching .nf-fx--scan,.nf-watching .nf-fx--noise{opacity:0!important;transition:opacity .3s}
.nf-cur-park #nf-cursor{visibility:hidden}
/* single project page */
.nf-vid-single{margin:36px 0 40px}
.nf-vid--single{border:2px solid var(--nf-border);box-shadow:6px 6px 0 #000,10px 10px 0 color-mix(in srgb,var(--nf-hot) 70%,transparent)}
.nf-vid--single.is-vertical:not(.is-playing){aspect-ratio:16/9}
.nf-vid--single .nf-vid__play{font-size:clamp(.95rem,2vw,1.4rem)}
.nf-vid-single__cap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:14px;font-family:var(--nf-label);font-size:.7rem;letter-spacing:.12em;color:var(--nf-muted,#aaa)}
.nf-vid-single__cap a{color:var(--nf-a2)}
@media (max-width:600px){.nf-vid__play{font-size:.78rem}.nf-vid__src{display:none}}
@media (prefers-reduced-motion:reduce){
  .nf-vid .nf-ep__rec,.nf-vid__glitch{animation:none!important}
  .nf-vid__img,.nf-vid__play{transition:none}
  .nf-vid__btn:hover .nf-vid__img{transform:none}
}
.nf-still .nf-vid .nf-ep__rec{animation:none}
/* v3.2: editor oEmbeds (classic editor) fill the column at 16:9 */
.pp-content iframe[src*="youtube"],.pp-content iframe[src*="vimeo"]{display:block;width:100%;height:auto;aspect-ratio:16/9;border:2px solid var(--nf-border);box-shadow:6px 6px 0 #000;margin:28px 0}
/* ==========================================================================
   v3.3 — header that always follows you
   Root cause of the old bug: html AND body both had overflow-x:hidden, which turns <body> into a
   (non-scrolling) scroll container, so position:sticky stuck to <body> instead of the viewport and
   scrolled away. Now: body uses overflow-x:clip (no scroll container) and the header is position:fixed,
   with matching top padding on <body>. The header sits outside #nf-main, so scroll-warp skew, datamosh
   and Cyborg-mode filters (all applied to #nf-main) can't become its containing block.
   ========================================================================== */
.nf-header.is-sticky{position:fixed;top:0;left:0;right:0;z-index:960}
body.nf-sticky{padding-top:var(--nf-header-h)}
.admin-bar .nf-header.is-sticky{top:32px}
@media (max-width:782px){.admin-bar .nf-header.is-sticky{top:46px}}
@media (max-width:600px){.admin-bar .nf-header.is-sticky{top:0}}
.admin-bar [id]{scroll-margin-top:32px}
@media (max-width:960px){
  .nf-sticky .nf-nav{max-height:calc(100vh - var(--nf-header-h));max-height:calc(100dvh - var(--nf-header-h));overflow-y:auto;overscroll-behavior:contain;padding-bottom:64px;scroll-padding-bottom:64px}
}
/* ==========================================================================
   v3.3 — Asteroids
   ========================================================================== */
#nf-ast{position:fixed;left:0;top:0;width:100vw;height:100vh;z-index:850;pointer-events:none;image-rendering:pixelated;image-rendering:crisp-edges;transition:opacity .4s}
#nf-ast.is-off{opacity:0}
.nf-ast-over,.nf-ast-over *{cursor:crosshair!important}
.nf-cursor-on.nf-ast-over,.nf-cursor-on.nf-ast-over *{cursor:none!important}
#nf-cursor.is-target{mix-blend-mode:normal;width:46px;height:46px;margin:-23px 0 0 -23px}
#nf-cursor.is-target::before,#nf-cursor.is-target::after{background:var(--nf-hot);opacity:1}
#nf-cursor.is-target .nf-cursor__x{border-color:var(--nf-hot);border-radius:50%;inset:6px;transform:none;box-shadow:0 0 12px var(--nf-hot)}
#nf-cursor.is-target .nf-cursor__lbl{color:var(--nf-hot)}
#nf-cursor.is-target .nf-cursor__lbl::after{content:" LOCK"}
#nf-cursor.is-fire .nf-cursor__x{background:color-mix(in srgb,var(--nf-hot) 60%,transparent)}
.nf-ast-hud{position:fixed;left:16px;bottom:calc(var(--nf-marquee-h) + 14px);z-index:860;pointer-events:none;font-family:var(--nf-label);font-size:.66rem;letter-spacing:.14em;color:var(--nf-a1);background:rgba(0,0,0,.82);border:1px solid var(--nf-a1);box-shadow:3px 3px 0 #000;padding:6px 10px;display:flex;align-items:center;gap:6px}
body:not(.nf-has-marquee) .nf-ast-hud{bottom:16px}
.nf-ast-hud b{color:#fff;font-weight:400}
.nf-ast-hud i{font-style:normal;color:#000;background:var(--nf-hot);padding:0 4px}
.nf-ast-hud__dot{width:7px;height:7px;background:var(--nf-hot);display:inline-block;animation:nf-blink 1s steps(2) infinite}
.nf-ast-hud.is-bump{animation:nf-astbump .25s steps(3)}
@keyframes nf-astbump{0%{transform:translate(0,0)}33%{transform:translate(-3px,-2px)}66%{transform:translate(3px,1px)}100%{transform:none}}
@media (max-width:760px){.nf-ast-hud{left:10px;font-size:.58rem;padding:5px 8px}}
/* v3.7: combo multiplier, best level, level-up note */
.nf-ast-hud__best{color:var(--nf-dim)}
.nf-ast-hud__best b{color:inherit}
.nf-ast-hud__x{color:#000;background:var(--nf-a2);padding:0 5px;font-weight:700}
.nf-ast-hud.is-combo{border-color:var(--nf-a2)}
.nf-ast-lvl{position:fixed;left:16px;bottom:calc(var(--nf-marquee-h) + 52px);z-index:860;pointer-events:none;max-width:min(420px,calc(100vw - 32px));font-family:var(--nf-mono);font-size:.82rem;line-height:1.35;color:var(--nf-text);background:var(--nf-panel);border:1px solid var(--nf-a1);border-left:4px solid var(--nf-a1);box-shadow:3px 3px 0 #000;padding:8px 12px;opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s}
.nf-ast-lvl.is-on{opacity:1;transform:none}
body:not(.nf-has-marquee) .nf-ast-lvl{bottom:54px}
@media (max-width:760px){.nf-ast-lvl{left:10px;font-size:.74rem;bottom:calc(var(--nf-marquee-h) + 46px)}}
/* v3.8: reduced motion no longer hides the game outright. It starts off and the visitor can opt in from the game panel. */
@media (prefers-reduced-motion:reduce){.nf-ast-hud.is-bump{animation:none}.nf-ast-lvl{transition:none}.nf-ast-hud__dot{animation:none}}
#nf-ast[hidden],.nf-ast-hud[hidden]{display:none}

/* ==========================================================================
   v3.8 — Game button, panel, power-ups, achievements, reticles
   ========================================================================== */
.nf-game-btn{position:fixed;left:16px;bottom:calc(var(--nf-marquee-h) + 14px);z-index:880;width:36px;height:36px;display:grid;place-items:center;padding:0;background:var(--nf-panel);color:var(--nf-a1);border:1.5px solid var(--nf-a1);box-shadow:3px 3px 0 #000;cursor:pointer}
body:not(.nf-has-marquee) .nf-game-btn{bottom:16px}
.nf-game-btn:hover,.nf-game-btn.is-open{background:var(--nf-a1);color:var(--nf-bg)}
.nf-game-btn:focus-visible{outline:2px solid var(--nf-a2);outline-offset:3px}
.nf-game-btn__led{fill:var(--nf-hot)}
.nf-game-btn__slash{fill:none}
.nf-game-btn.is-off{color:var(--nf-dim);border-color:var(--nf-border)}
.nf-game-btn.is-off .nf-game-btn__slash{fill:var(--nf-hot)}
.nf-game-btn.is-off .nf-game-btn__led{fill:var(--nf-dim)}
.nf-game-btn.is-off:hover,.nf-game-btn.is-off.is-open{background:var(--nf-bar);color:var(--nf-text)}
/* the counter and toasts sit beside / above the button */
.nf-ast-hud{left:62px;bottom:calc(var(--nf-marquee-h) + 18px)}
body:not(.nf-has-marquee) .nf-ast-hud{bottom:20px}
.nf-ast-lvl{bottom:calc(var(--nf-marquee-h) + 60px)}
body:not(.nf-has-marquee) .nf-ast-lvl{bottom:62px}
.nf-ast-lvl__tag{font:400 .62rem var(--nf-label);letter-spacing:.14em;text-transform:uppercase;color:#000;background:var(--nf-a1);padding:1px 5px;margin-right:4px;vertical-align:1px}
.nf-ast-lvl--ach{border-color:var(--nf-a2);border-left-color:var(--nf-a2)}
.nf-ast-lvl--ach .nf-ast-lvl__tag{background:var(--nf-a2)}
.nf-ast-lvl--alert{border-color:var(--nf-hot);border-left-color:var(--nf-hot)}
.nf-ast-lvl--alert .nf-ast-lvl__tag{background:var(--nf-hot)}
.nf-ast-hud__pw{color:#000;background:var(--nf-a1);padding:0 5px}
.nf-ast-hud__pw--slow{background:var(--nf-a3)}
.nf-ast-hud__pw--wide{background:var(--nf-a2)}
.nf-ast-hud__pw--dbl{background:var(--nf-hot)}
@media (max-width:760px){
  .nf-game-btn{left:10px;width:34px;height:34px}
  .nf-ast-hud{left:10px;bottom:calc(var(--nf-marquee-h) + 56px);flex-wrap:wrap;max-width:calc(100vw - 86px)}
  body:not(.nf-has-marquee) .nf-ast-hud{bottom:58px}
  .nf-ast-lvl{bottom:calc(var(--nf-marquee-h) + 124px)}
  body:not(.nf-has-marquee) .nf-ast-lvl{bottom:126px}
}
.nf-game-panel{position:fixed;left:16px;bottom:calc(var(--nf-marquee-h) + 60px);z-index:950;width:min(400px,calc(100vw - 32px));max-height:min(600px,calc(100vh - var(--nf-header-h) - var(--nf-marquee-h) - 90px));max-height:min(600px,calc(100dvh - var(--nf-header-h) - var(--nf-marquee-h) - 90px));display:flex;flex-direction:column;background:var(--nf-panel);color:var(--nf-text);border:2px solid var(--nf-a1);box-shadow:6px 6px 0 #000;font-family:var(--nf-mono);font-size:.8rem;line-height:1.4}
.nf-game-panel[hidden]{display:none}
body:not(.nf-has-marquee) .nf-game-panel{bottom:62px}
.nf-game-panel__bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px 6px 12px;background:var(--nf-bar);color:var(--nf-bartext);font:.66rem var(--nf-label);letter-spacing:.16em;text-transform:uppercase;border-bottom:1px solid var(--nf-border)}
.nf-game-panel__x{background:none;border:1px solid var(--nf-border);color:inherit;width:28px;height:28px;font-size:1rem;line-height:1;cursor:pointer}
.nf-game-panel__x:hover{border-color:var(--nf-hot);color:var(--nf-hot)}
.nf-game-panel__body{overflow:auto;padding:10px 12px 14px;overscroll-behavior:contain}
.nf-game-panel button{font-family:var(--nf-label);letter-spacing:.1em;text-transform:uppercase}
.nf-game-panel button:focus-visible{outline:2px solid var(--nf-a2);outline-offset:2px}
.nf-game-row{display:flex;align-items:center;justify-content:space-between;padding:5px 0;border-bottom:1px dashed var(--nf-border);font-family:var(--nf-label);font-size:.7rem;letter-spacing:.14em;text-transform:uppercase}
.nf-game-tog{min-width:64px;padding:5px 10px;font-size:.66rem;background:transparent;color:var(--nf-dim);border:1.5px solid var(--nf-border);cursor:pointer}
.nf-game-tog.is-on{background:var(--nf-a1);color:var(--nf-bg);border-color:var(--nf-a1)}
.nf-game-tog:disabled{opacity:.5;cursor:not-allowed}
.nf-game-note{margin:8px 0 0;padding:6px 8px;border-left:3px solid var(--nf-a3);color:var(--nf-dim);font-size:.74rem}
.nf-game-h{display:flex;justify-content:space-between;margin:14px 0 6px;font:.66rem var(--nf-label);letter-spacing:.18em;text-transform:uppercase;color:var(--nf-a2)}
.nf-game-h span{color:var(--nf-dim)}
.nf-game-stats{display:grid;grid-template-columns:1fr 1fr;gap:2px 12px;margin:0}
.nf-game-stats div{display:flex;justify-content:space-between;gap:6px;border-bottom:1px dotted var(--nf-border);padding:2px 0}
.nf-game-stats dt{color:var(--nf-dim);font-size:.72rem}
.nf-game-stats dd{margin:0;color:var(--nf-text)}
.nf-game-xp{height:8px;margin-top:10px;border:1px solid var(--nf-a1);background:var(--nf-bg)}
.nf-game-xp span{display:block;height:100%;background:var(--nf-a1)}
.nf-game-small{margin:4px 0 0;color:var(--nf-dim);font-size:.72rem}
.nf-game-small b{color:var(--nf-a1);font-weight:400}
.nf-game-ach{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:3px}
@media (max-width:360px){.nf-game-ach{grid-template-columns:1fr}}
.nf-game-ach li{display:grid;align-content:start;padding:3px 6px;border:1px solid var(--nf-border);color:var(--nf-dim);font-size:.68rem;line-height:1.3}
.nf-game-ach li b{font:400 .64rem var(--nf-label);letter-spacing:.12em;text-transform:uppercase}
.nf-game-ach li.is-got{border-color:var(--nf-a1);color:var(--nf-text)}
.nf-game-ach li.is-got b{color:var(--nf-a1)}
.nf-sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nf-game-pick{display:flex;flex-wrap:wrap;gap:4px}
.nf-game-pick button{padding:5px 8px;font-size:.62rem;background:transparent;color:var(--nf-text);border:1px solid var(--nf-border);cursor:pointer}
.nf-game-pick button[aria-pressed=true]{border-color:var(--nf-a2);color:var(--nf-a2);box-shadow:inset 0 0 0 1px var(--nf-a2)}
.nf-game-pick button:disabled{color:var(--nf-dim);border-style:dashed;cursor:not-allowed;opacity:.7}
.nf-game-reset{margin-top:14px;padding-top:10px;border-top:1px dashed var(--nf-border)}
.nf-game-reset button{padding:6px 10px;font-size:.62rem;background:transparent;color:var(--nf-dim);border:1px solid var(--nf-border);cursor:pointer}
.nf-game-reset button:hover{color:var(--nf-text);border-color:var(--nf-text)}
.nf-game-reset .is-danger{color:#000;background:var(--nf-hot);border-color:var(--nf-hot)}
.nf-game-confirm p{margin:0 0 6px;font-size:.74rem}
@media (max-width:760px){
  .nf-game-panel{left:10px;right:10px;width:auto;bottom:calc(var(--nf-marquee-h) + 56px);max-height:calc(100dvh - 62px - var(--nf-marquee-h) - 76px)}
}
/* reticle cosmetics (shown on the custom cursor while it's over a target) */
#nf-cursor.is-wide.is-target{width:78px;height:78px;margin:-39px 0 0 -39px}
html[data-nf-reticle=diamond] #nf-cursor.is-target .nf-cursor__x{border-radius:0;transform:rotate(45deg);inset:9px}
html[data-nf-reticle=brackets] #nf-cursor.is-target .nf-cursor__x{border:0;border-radius:0;box-shadow:none;inset:4px;background:linear-gradient(var(--nf-hot),var(--nf-hot)) 0 0/10px 2px,linear-gradient(var(--nf-hot),var(--nf-hot)) 0 0/2px 10px,linear-gradient(var(--nf-hot),var(--nf-hot)) 100% 0/10px 2px,linear-gradient(var(--nf-hot),var(--nf-hot)) 100% 0/2px 10px,linear-gradient(var(--nf-hot),var(--nf-hot)) 0 100%/10px 2px,linear-gradient(var(--nf-hot),var(--nf-hot)) 0 100%/2px 10px,linear-gradient(var(--nf-hot),var(--nf-hot)) 100% 100%/10px 2px,linear-gradient(var(--nf-hot),var(--nf-hot)) 100% 100%/2px 10px;background-repeat:no-repeat}
html[data-nf-reticle=block] #nf-cursor.is-target .nf-cursor__x{border-radius:0;inset:14px;background:var(--nf-hot);box-shadow:0 0 0 3px #000,0 0 0 5px var(--nf-hot)}
html[data-nf-reticle=halo] #nf-cursor.is-target .nf-cursor__x{border-style:dashed;inset:1px;box-shadow:0 0 0 5px transparent,0 0 0 7px color-mix(in srgb,var(--nf-hot) 55%,transparent);animation:nf-halo 3s linear infinite}
@keyframes nf-halo{to{transform:rotate(360deg)}}
html[data-nf-reticle=saucer] #nf-cursor.is-target .nf-cursor__x{border-radius:50%;inset:17px 1px 13px;box-shadow:0 -6px 0 -1px color-mix(in srgb,var(--nf-a3) 80%,transparent),0 0 12px var(--nf-hot)}
@media (prefers-reduced-motion:reduce){html[data-nf-reticle=halo] #nf-cursor.is-target .nf-cursor__x{animation:none}}

/* ==========================================================================
   v3.9 — Esoteric layer: network threads (v7.0), sigil, transmissions, Pleroma mode
   Decoration only: aria-hidden, no pointer events, behind the content.
   ========================================================================== */
.nf-eso-layer{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;--eso-o:.035}
.nf-eso-subtle .nf-eso-layer{--eso-o:.025}
.nf-eso-strong .nf-eso-layer{--eso-o:.06}
.nf-eso-g{position:absolute;display:block;fill:none;stroke-width:1;opacity:var(--eso-o);transition:opacity 1.2s,filter 1.2s}
.nf-eso-g *{vector-effect:non-scaling-stroke}
/* v3.10: one figure by default, a second on Strong, the full set only in Pleroma mode */
.nf-eso-g--net2,.nf-eso-g--net3,.nf-eso-g--net4{display:none}
.nf-eso-strong .nf-eso-g--net2,html.nf-pleroma .nf-eso-g--net2,html.nf-pleroma .nf-eso-g--net3,html.nf-pleroma .nf-eso-g--net4{display:block}
.nf-eso-g--net1{width:520px;height:520px;right:-90px;bottom:3vh;stroke:var(--nf-a2)}
.nf-eso-g--net2{width:560px;height:560px;right:-140px;top:10vh;stroke:var(--nf-a3)}
.nf-eso-g--net3{width:460px;height:460px;left:-110px;bottom:6vh;stroke:var(--nf-a2)}
.nf-eso-g--net4{width:320px;height:214px;left:3vw;top:44vh;stroke:var(--nf-a1);opacity:calc(var(--eso-o) * .8)}
.nf-eso-g g{transform-origin:50% 50%;transform-box:fill-box}
.nf-motion.nf-eso-strong .nf-eso-g--net1 g{animation:nf-spin 360s linear infinite reverse}
.nf-eso-strong .nf-eso-g--net2{right:auto;left:-160px;top:8vh}
html.nf-pleroma .nf-eso-g--net2{left:auto;right:-140px;top:10vh}
.nf-motion.nf-eso-strong .nf-eso-g--net2 g,html.nf-pleroma .nf-motion .nf-eso-g--net2 g{animation:nf-spin 240s linear infinite}
.nf-motion.nf-eso-strong .nf-eso-g--net3 g,html.nf-pleroma .nf-motion .nf-eso-g--net3 g{animation:nf-spin 300s linear infinite reverse}
@media (max-width:760px){
  .nf-eso-g--net2{width:340px;height:340px;right:-120px;top:14vh}
  .nf-eso-g--net3{width:280px;height:280px;left:-110px;bottom:10vh}
  .nf-eso-g--net4{display:none!important}
  .nf-eso-g--net1{width:320px;height:320px;right:-110px;bottom:12vh}
}
.nf-eso-veil{display:none}
.nf-eso-sigil{display:none}
@media (min-width:1400px){
  .nf-eso-strong .nf-eso-sigil,html.nf-pleroma .nf-eso-sigil{display:flex;position:fixed;right:8px;top:calc(50% + 72px);transform:translateY(-50%);z-index:650;pointer-events:none;flex-direction:column;align-items:center;gap:8px;font-family:var(--nf-label);font-size:.5rem;letter-spacing:.1em;text-transform:uppercase;color:var(--nf-dim)}
  .nf-eso-sigil svg{width:22px;height:22px;fill:none;stroke:var(--nf-a3);stroke-width:2}
  .nf-eso-sigil__dot{fill:var(--nf-hot);stroke:none}
  .nf-motion .nf-eso-sigil__dot{animation:nf-blink 2.4s steps(2) infinite}
  .nf-eso-sigil span{writing-mode:vertical-rl;white-space:nowrap}
  .nf-eso-sigil b{font-weight:400;color:var(--nf-a3)}
}
/* ticker + pop-up transmissions */
.nf-marquee__sep--eso{color:var(--nf-a3)}
.nf-marquee__msg--eso{color:var(--nf-a3);font-style:italic;opacity:.92}
.nf-pop--eso{border-color:var(--nf-a3);box-shadow:7px 7px 0 #000,0 0 0 1px var(--nf-a3),0 0 28px color-mix(in srgb,var(--nf-a3) 35%,transparent)}
.nf-pop--eso .nf-pop__bar{background:linear-gradient(90deg,var(--nf-a3),var(--nf-a2));color:#000}
.nf-pop--eso .nf-pop__m{font-style:italic}
/* the seal: esoteric variant (always, or during Pleroma mode) */
.nf-seal__eso{display:none}
.nf-seal__eso circle{fill:none;stroke:var(--nf-a2);stroke-width:2}
.nf-seal__eso .nf-seal__eso-bg{fill:#000;stroke:var(--nf-a3);stroke-width:3}
.nf-seal__eso path{fill:none;stroke:var(--nf-hot);stroke-width:2.5;stroke-linejoin:round}
.nf-eso-seal .nf-seal__eso,html.nf-pleroma .nf-seal__eso{display:inline}
.nf-eso-seal .nf-seal__core,html.nf-pleroma .nf-seal__core{display:none}
.nf-eso .nf-seal{pointer-events:auto;cursor:pointer}
.nf-seal.is-poked .nf-seal__ring{animation:nf-sealpoke .35s steps(3)}
@keyframes nf-sealpoke{50%{stroke-width:9;stroke:var(--nf-a3)}}
/* Pleroma mode: the noise drops out, the threads light up, everything glows a little */
html.nf-pleroma .nf-eso-layer{--eso-o:.34}
html.nf-pleroma .nf-eso-g{stroke:#ffdf8f;filter:none}
html.nf-pleroma .nf-eso-g g{will-change:transform}
html.nf-pleroma .nf-eso-g--net3{stroke:#cfefff}
html.nf-pleroma .nf-fx--noise,html.nf-pleroma .nf-fx--scan{opacity:0!important;animation:none}
html.nf-pleroma .nf-eso-veil{display:block;position:fixed;inset:0;z-index:640;pointer-events:none;will-change:opacity;background:radial-gradient(ellipse 70% 55% at 50% 0%,rgba(255,236,180,.13),transparent 70%),radial-gradient(ellipse 50% 40% at 85% 80%,rgba(190,230,255,.12),transparent 70%),radial-gradient(ellipse 40% 35% at 10% 60%,rgba(230,200,255,.10),transparent 70%)}
.nf-motion.nf-eso .nf-eso-veil{animation:nf-veil 7s ease-in-out infinite alternate}
@keyframes nf-veil{from{opacity:.75}to{opacity:1}}
html.nf-pleroma #nf-stars{opacity:1}
html.nf-pleroma .nf-hero__name{text-shadow:0 0 22px rgba(255,236,180,.35)}
html.nf-pleroma .nf-seal__ring{stroke:#ffdf8f;stroke-width:5}
html.nf-pleroma .nf-eso-sigil b{color:#ffdf8f}
.nf-flash--pleroma{background:radial-gradient(circle at 50% 45%,rgba(255,236,180,.28),rgba(0,0,0,.55) 70%)}
.nf-flash--pleroma .nf-flash__big{color:#fff3cf;text-shadow:0 0 18px #ffdf8f,0 0 44px #ffdf8f,-3px 0 var(--nf-a3),3px 0 var(--nf-a2)}
.nf-flash--pleroma .nf-flash__small{color:#ffdf8f;letter-spacing:.12em;max-width:min(640px,90vw)}
.nf-motion .nf-flash--pleroma{animation-duration:2.8s}
.nf-flash--pleroma-out .nf-flash__big{color:var(--nf-a3)}
@media (prefers-reduced-motion:reduce){.nf-eso-g g,.nf-eso-veil,.nf-eso-sigil__dot{animation:none!important}}

/* ==========================================================================
   v3.10 — Chroma palettes (named Psychedelic before v5.0): accent drift, gradient drift, breathing, chromatic aberration.
   The per-palette selectors and keyframes come from pp_psy_css(). Decoration only.
   ========================================================================== */
@property --psy-a1{syntax:'<color>';inherits:true;initial-value:#ffffff}
@property --psy-a2{syntax:'<color>';inherits:true;initial-value:#ffffff}
@property --psy-a3{syntax:'<color>';inherits:true;initial-value:#ffffff}
@property --psy-x{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --psy-y{syntax:'<percentage>';inherits:false;initial-value:0%}
@property --psy-o{syntax:'<number>';inherits:false;initial-value:1}
/* Painted with the page (no compositor layer), so it stays cheap. Motion comes from small stepped
   changes (4 a second, each tiny): the colour blobs wander, stretch and breathe. */
.nf-psy-layer{display:none;position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(calc(38% + var(--psy-y) / 2) calc(34% - var(--psy-y) / 3) at calc(22% + var(--psy-x)) calc(20% + var(--psy-y)),color-mix(in srgb,var(--psy-g1,#888) calc(var(--psy-o) * 13%),transparent),transparent),
    radial-gradient(calc(34% - var(--psy-x) / 3) calc(40% + var(--psy-x) / 2) at calc(80% - var(--psy-y)) calc(46% + var(--psy-x)),color-mix(in srgb,var(--psy-g2,#888) calc(var(--psy-o) * 12%),transparent),transparent),
    radial-gradient(42% 30% at calc(44% - var(--psy-x)) calc(84% - var(--psy-y)),color-mix(in srgb,var(--psy-g3,#888) calc(var(--psy-o) * 12%),transparent),transparent)}
.nf-psy-layer i{display:none}
@media (prefers-reduced-motion:no-preference){
  .nf-motion .nf-psy-layer{animation:nf-psy-wander 40s steps(160) infinite alternate,nf-psy-breathe 14s steps(56) infinite alternate}
}
@keyframes nf-psy-wander{0%{--psy-x:0%;--psy-y:0%}33%{--psy-x:9%;--psy-y:-6%}66%{--psy-x:-4%;--psy-y:8%}100%{--psy-x:6%;--psy-y:4%}}
@keyframes nf-psy-breathe{from{--psy-o:.6}to{--psy-o:1}}




/* ==========================================================================
   v6.0 — RAW. Back to the v3.10 collage, then pushed further: crooked
   windows, tape, a marker scribble under every heading, ransom-note kickers,
   misregistered print, a tilted broadcast strip and a giant stamped footer.
   All decoration: text keeps its v3.10 colours and contrast.
   ========================================================================== */
:root{--nf-ease:cubic-bezier(.2,.8,.2,1);--nf-strip-h:24px}
@media (min-width:961px){:root{--nf-header-h:calc(72px + var(--nf-strip-h))}}
.nf-header{height:auto;flex-direction:column;align-items:stretch}
.nf-header>.nf-header__inner{height:72px;width:100%}
.nf-header__strip{height:var(--nf-strip-h);background:var(--nf-text);color:var(--nf-bg);font:.62rem/1 var(--nf-label);letter-spacing:.14em;text-transform:uppercase;overflow:hidden;border-bottom:2px solid #000;box-shadow:0 3px 0 var(--nf-hot)}
.nf-header__strip-in{height:100%;display:flex;align-items:center;gap:22px;white-space:nowrap}
.nf-header__strip b{font-weight:700;text-decoration:underline;text-decoration-thickness:2px}
.nf-header__live{display:inline-flex;align-items:center;gap:6px;font-weight:700}
.nf-header__live::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--nf-hot);box-shadow:0 0 0 2px #000}
.nf-motion .nf-header__live::before{animation:nf-blink 1.4s steps(1) infinite}
.nf-header__strip-r{margin-left:auto;transform:skewX(-14deg);padding:0 10px;background:var(--nf-bg);color:var(--nf-text)}
.nf-menu li:nth-child(odd) a{rotate:-1.6deg}
.nf-menu li:nth-child(even) a{rotate:1.2deg;translate:0 2px}
.nf-menu li:nth-child(3n) a{rotate:-.6deg;translate:0 -2px}
/* big stamped section number */
.nf-head--num{position:relative}
.nf-head__num{position:absolute;right:2%;top:-34px;z-index:0;font-family:var(--nf-display);font-size:clamp(5rem,12vw,11rem);line-height:.8;color:transparent;-webkit-text-stroke:2px color-mix(in srgb,var(--nf-hot) 70%,transparent);transform:rotate(9deg);pointer-events:none;user-select:none;letter-spacing:-.04em}
.nf-head__body{position:relative;z-index:1}
/* marker scribble under each heading */
.nf-head__body::after{content:"";display:block;width:min(300px,70%);height:18px;margin:-6px 0 14px -4px;background:var(--nf-hot);transform:rotate(-2.2deg);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 18'%3E%3Cpath d='M2 12 C40 4 60 16 96 8 S150 3 180 11 S250 16 298 5 M8 15 C70 9 120 14 170 12 S240 9 290 12' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 18'%3E%3Cpath d='M2 12 C40 4 60 16 96 8 S150 3 180 11 S250 16 298 5 M8 15 C70 9 120 14 170 12 S240 9 290 12' fill='none' stroke='%23000' stroke-width='3.2' stroke-linecap='round'/%3E%3C/svg%3E") center/100% 100% no-repeat}
.nf-head__body{display:flex;flex-direction:column;align-items:flex-start}
.nf-head__body>.nf-kicker{order:1}.nf-head__body>.nf-title{order:2}.nf-head__body::after{order:3}.nf-head__body>.nf-intro{order:4}
/* ransom-note kicker (letters split by main.js; the label stays readable to screen readers) */
.nf-ransom{display:inline-flex;flex-wrap:wrap;gap:2px;align-items:center}
.nf-ransom i{font-style:normal;font-size:1.2em;display:inline-block;padding:1px 3px;line-height:1.1}
.nf-ransom i:nth-child(3n+1){background:var(--nf-text);color:var(--nf-bg);rotate:-4deg}
.nf-ransom i:nth-child(3n+2){border:1.5px solid var(--nf-a2);color:var(--nf-text);rotate:3deg;translate:0 2px}
.nf-ransom i:nth-child(5n){background:var(--nf-bg);color:var(--nf-a1);outline:1px dashed var(--nf-a1);rotate:6deg;font-size:1.15em}
.nf-ransom i:nth-child(7n+3){rotate:-8deg;translate:0 -2px}
.nf-ransom i.nf-sp{background:none;border:0;outline:0;width:.4em}
/* crooked windows with tape */
.nf-section:nth-of-type(odd) .nf-win:not(.nf-win--mini){rotate:-.45deg}
.nf-section:nth-of-type(even) .nf-win:not(.nf-win--mini){rotate:.55deg}
.nf-win:not(.nf-win--mini)::after{content:"";position:absolute;z-index:7;pointer-events:none;top:-14px;left:8%;width:110px;height:28px;rotate:-7deg;
  background:repeating-linear-gradient(90deg,transparent 0 6px,rgba(0,0,0,.08) 6px 7px),color-mix(in srgb,var(--nf-a2) 42%,transparent);box-shadow:0 1px 0 rgba(0,0,0,.35)}
.nf-section:nth-of-type(even) .nf-win:not(.nf-win--mini)::after{left:auto;right:10%;rotate:5deg;background:repeating-linear-gradient(90deg,transparent 0 6px,rgba(0,0,0,.08) 6px 7px),color-mix(in srgb,var(--nf-a3) 42%,transparent)}
/* misregistered print shadow on windows, alternating hot / cool */
.nf-section:nth-of-type(odd) .nf-win{box-shadow:inset 1px 1px 0 rgba(255,255,255,.07),8px 8px 0 rgba(0,0,0,.85),-5px -4px 0 color-mix(in srgb,var(--nf-hot) 55%,transparent)}
.nf-section:nth-of-type(even) .nf-win{box-shadow:inset 1px 1px 0 rgba(255,255,255,.07),8px 8px 0 rgba(0,0,0,.85),5px -5px 0 color-mix(in srgb,var(--nf-a3) 45%,transparent)}
/* photocopy grain inside windows (static, no blending) */
.nf-win__body{background-image:radial-gradient(rgba(255,255,255,.035) 1px,transparent 1.4px),radial-gradient(rgba(0,0,0,.18) 1px,transparent 1.6px);background-size:7px 7px,11px 11px;background-position:0 0,3px 5px}
/* louder card collage */
.nf-episodes.nf-cols-3 .nf-ep:nth-child(3n){translate:0 -16px}
.nf-episodes .nf-ep:nth-child(even){box-shadow:6px 6px 0 rgba(0,0,0,.85),-4px 4px 0 color-mix(in srgb,var(--nf-a3) 50%,transparent)}
.nf-episodes .nf-ep:nth-child(4n+1)::before{content:"";position:absolute;z-index:5;top:-12px;right:18%;width:74px;height:22px;rotate:8deg;pointer-events:none;background:color-mix(in srgb,var(--nf-a2) 45%,transparent)}
.nf-ach--cards .nf-ach__item:nth-child(odd){rotate:-1.2deg}
.nf-ach--cards .nf-ach__item:nth-child(even){rotate:1.4deg;translate:0 10px}
.nf-dossier:nth-child(3n){translate:0 14px}
/* marquee tag */
.nf-marquee__tag{position:absolute;left:0;top:0;bottom:0;z-index:2;display:flex;align-items:center;gap:6px;padding:0 14px 0 10px;background:var(--nf-text);color:var(--nf-bg);font:.72rem var(--nf-label);letter-spacing:.14em;text-transform:uppercase;box-shadow:4px 0 0 var(--nf-hot),6px 0 0 #000}
.nf-marquee__tag i{width:8px;height:8px;border-radius:50%;background:var(--nf-hot)}
.nf-motion .nf-marquee__tag i{animation:nf-blink 1.4s steps(1) infinite}
/* giant stamped footer */
.nf-footer__mark{font-family:var(--nf-display);font-size:clamp(1.7rem,6.6vw,9rem);line-height:.9;text-transform:uppercase;white-space:nowrap;color:var(--nf-a1);-webkit-text-stroke:2px #000;text-shadow:5px 5px 0 var(--nf-hot),10px 10px 0 #000;transform:rotate(-2.5deg);margin:4px 0 28px;user-select:none;overflow:visible}
.nf-footer__inner{align-items:center;position:relative;z-index:2}
.nf-footer__text{background:var(--nf-bg);padding:4px 8px;box-shadow:3px 3px 0 #000}
.nf-footer__eot{background:var(--nf-bg);font-family:var(--nf-label);color:var(--nf-a1);transform:rotate(1.5deg);border:1.5px dashed var(--nf-a1);padding:4px 8px}
.nf-footer{overflow:hidden}
/* palette menu: tabs + swatches, raw */
.nf-vibe__menu:not([hidden]){display:block;width:min(560px,calc(100vw - 32px))}
.nf-vibe__head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;margin:0 0 8px}
.nf-vibe__now{font-family:var(--nf-display);font-size:1.3rem;line-height:1;text-transform:uppercase;color:var(--nf-text);text-shadow:2px 2px 0 var(--nf-hot);transform:rotate(-1.5deg)}
.nf-vibe__count{font:.66rem var(--nf-label);letter-spacing:.14em;color:var(--nf-dim);text-transform:uppercase}
.nf-vibe__tabs{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0 10px;border-bottom:1px dashed var(--nf-border);margin-bottom:8px}
.nf-vibe__tab{display:inline-flex;gap:6px;align-items:baseline;padding:6px 9px;background:var(--nf-bg);color:var(--nf-text);border:1.5px dashed var(--nf-border);font:.68rem var(--nf-label);letter-spacing:.1em;text-transform:uppercase;cursor:pointer}
.nf-vibe__tab:nth-child(odd){rotate:-2deg}.nf-vibe__tab:nth-child(even){rotate:1.5deg}
.nf-vibe__tab b{font-weight:400;color:var(--nf-dim);font-size:.9em}
.nf-vibe__tab:hover{border-color:var(--nf-a2);color:var(--nf-a2)}
.nf-vibe__tab[aria-selected="true"]{background:var(--nf-text);color:var(--nf-bg);border:1.5px solid #000;box-shadow:3px 3px 0 var(--nf-hot)}
.nf-vibe__tab[aria-selected="true"] b{color:var(--nf-bg)}
.nf-vibe__panel{display:grid;grid-template-columns:1fr 1fr;gap:2px 6px;max-height:min(420px,58vh);overflow:auto;overscroll-behavior:contain}
.nf-vibe__panel[hidden]{display:none}
.nf-vibe__panel .nf-vibe__group{display:none}
@media (max-width:960px){
  :root{--nf-header-h:62px}
  .nf-header__strip{display:none}
  .nf-header>.nf-header__inner{height:62px}
  .nf-vibe__menu:not([hidden]){display:block;width:auto}
  .nf-vibe__panel{max-height:none;overflow:visible}
  .nf-head__num{font-size:4.6rem;top:-18px;right:0}
  .nf-section:nth-of-type(odd) .nf-win:not(.nf-win--mini),.nf-section:nth-of-type(even) .nf-win:not(.nf-win--mini){rotate:0deg}
  .nf-episodes.nf-cols-3 .nf-ep:nth-child(3n){translate:none}
  .nf-footer__mark{-webkit-text-stroke-width:1px;text-shadow:3px 3px 0 var(--nf-hot),6px 6px 0 #000}
}
@media (max-width:520px){ .nf-vibe__opt{padding:9px 6px} }

/* ==========================================================================
   v5.0 — Eyes (Customize › Cyborg HUD & Signal › Eyes)
   ========================================================================== */
.nf-eye-defs line{stroke:var(--nf-text);stroke-width:.7;opacity:.55}
.nf-eye-defs circle{fill:color-mix(in srgb,var(--nf-bg) 70%,#000)}
.nf-eye{display:inline-block;position:relative;line-height:0;pointer-events:none;--eye-iris:var(--nf-a1);--eye-white:color-mix(in srgb,var(--nf-text) 90%,var(--nf-bg))}
.nf-eye svg{width:100%;height:auto;overflow:visible;display:block}
.nf-eye__white{fill:var(--eye-white)}
.nf-eye__rim{fill:none;stroke:var(--nf-text);stroke-width:2.4;stroke-linejoin:round}
.nf-eye__lash{fill:none;stroke:var(--nf-text);stroke-width:2;stroke-linecap:round}
.nf-eye__lid{fill:color-mix(in srgb,var(--nf-bg) 45%,transparent)}
.nf-eye__hatch{fill:url(#nf-eye-hatch);opacity:.9}
.nf-eye__vein{fill:none;stroke:var(--nf-hot);stroke-width:.9;opacity:.85}
.nf-eye__ring{fill:var(--eye-iris);stroke:color-mix(in srgb,var(--nf-bg) 60%,#000);stroke-width:1.6}
.nf-eye__spokes{fill:none;stroke:color-mix(in srgb,var(--nf-bg) 55%,transparent);stroke-width:.9}
.nf-eye__dots{fill:url(#nf-eye-dots)}
.nf-eye__pupil{fill:color-mix(in srgb,var(--nf-bg) 25%,#000)}
.nf-eye__spiral{fill:none;stroke:var(--nf-a2);stroke-width:1.3;transform-box:view-box;transform-origin:50px 30px}
.nf-eye__glint{fill:#fff;opacity:.85}
.nf-eye__tendril{fill:none;stroke:var(--nf-a3);stroke-width:1.6;stroke-linecap:round;opacity:.8}
.nf-eye--blood{--eye-iris:var(--nf-hot)}
.nf-eye--spiral{--eye-iris:var(--nf-a3)}
.nf-eye--halftone{--eye-iris:var(--nf-hot)}
.nf-eye--halftone .nf-eye__ring{fill:var(--nf-a2)}
.nf-eye--flame .nf-eye__lash{stroke:var(--nf-hot);stroke-width:2.6}
.nf-eye--flame{--eye-iris:var(--nf-a2)}
.nf-eye--tendril{--eye-iris:var(--nf-a3)}
.nf-eye__iris{transition:transform .14s linear}
.nf-eye--field .nf-eye__iris{transition:none}
.nf-eyes-idle .nf-eye__iris{transition:transform 1.1s var(--nf-ease)}
/* opening + blinking: open/close lives on one group, the blink on the one inside */
.nf-eye__open,.nf-eye__ball{transform-box:view-box;transform-origin:50px 30px}
.nf-motion .nf-eye__open{transform:scaleY(.06);transition:transform .55s var(--nf-ease)}
.nf-motion .nf-eye.is-open .nf-eye__open{transform:none}
.nf-motion .nf-eye.is-open .nf-eye__ball{animation:nf-eyeblink 8s infinite}
.nf-motion .nf-eye__spiral{animation:nf-spin 9s linear infinite}
@keyframes nf-eyeblink{0%,95.5%,100%{transform:none}97.2%{transform:scaleY(.05)}}
@media (prefers-reduced-motion:reduce){
  .nf-eye__open,.nf-eye.is-open .nf-eye__open{transform:none!important;transition:none!important}
  .nf-eye__ball,.nf-eye__spiral{animation:none!important}
  .nf-eye__iris{transition:none!important}
}
/* logo eye */
.nf-eyes .nf-logo::before{display:none}
.nf-eye--logo{width:30px;margin-right:2px;flex:none}
.nf-eye--logo .nf-eye__rim{stroke-width:4}
.nf-eye--logo .nf-eye__lash{stroke-width:3.4}
/* section heads: the eye sits at the end of the kicker rule */
.nf-eye--head{width:46px;flex:none;margin-left:2px}
.nf-section--inverted .nf-eye{--eye-white:var(--nf-bg);--eye-iris:var(--nf-text)}
.nf-section--inverted .nf-eye__rim,.nf-section--inverted .nf-eye__lash{stroke:var(--nf-bg)}
/* dividers */
.nf-div{position:relative}
.nf-div__eye{position:absolute;left:50%;top:50%;width:58px;transform:translate(-50%,-50%);z-index:2;background:var(--nf-bg);padding:0 12px;box-sizing:content-box}
.nf-div__eye svg{margin:-6px 0}
/* fields of eyes in the dark */
.nf-eyefield{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.nf-eyefield .nf-eye--field{position:absolute;contain:layout paint;transform:translate(-50%,-50%) rotate(var(--er,0deg));opacity:var(--eo,.6);--eye-white:color-mix(in srgb,var(--nf-text) 24%,var(--nf-bg))}
.nf-eyefield .nf-eye--field .nf-eye__rim,.nf-eyefield .nf-eye--field .nf-eye__lash{stroke:color-mix(in srgb,var(--nf-text) 70%,var(--nf-bg))}
.nf-eyefield .nf-eye--field .nf-eye__glint{opacity:.55}
.nf-footer{position:relative}
.nf-footer>.nf-container{position:relative;z-index:1}
.nf-eyefield--footer{-webkit-mask-image:linear-gradient(180deg,#000 0,#000 72%,transparent);mask-image:linear-gradient(180deg,#000 0,#000 72%,transparent)}
.nf-hero>.nf-container{position:relative;z-index:1}
.nf-eyefield--hero .nf-eye--field{--eo:.55!important}
.nf-eyefield--pleroma{position:fixed;z-index:0;transition:opacity .6s}
.nf-eyefield--pleroma .nf-eye--field{--eo:.5!important}
.nf-eyefield--pleroma.is-closing{opacity:0}
/* spiral-pupil seal (hidden whenever the esoteric seal shows) */
.nf-seal__eye{display:none}
.nf-eyes .nf-seal__eye{display:inline}
.nf-eyes .nf-seal__core,.nf-eso-seal .nf-seal__eye,html.nf-pleroma .nf-seal__eye{display:none}
.nf-seal__lid{fill:var(--nf-text);stroke:#000;stroke-width:3}
.nf-seal__spiral circle{fill:var(--nf-hot);stroke:#000;stroke-width:2.5}
.nf-seal__spiral path{fill:none;stroke:#000;stroke-width:2.4}
.nf-seal__eye,.nf-seal__spiral{transform-box:view-box;transform-origin:100px 100px}
.nf-motion .nf-seal__eye{animation:nf-spin 16s linear infinite reverse}
.nf-motion .nf-seal__spiral{animation:nf-spin 6s linear infinite}
@media (prefers-reduced-motion:reduce){.nf-seal__eye,.nf-seal__spiral{animation:none!important}}
/* game: the eye reticle cosmetic */
html[data-nf-reticle=eye] #nf-cursor.is-target .nf-cursor__x{border-radius:80% 0;transform:rotate(45deg);inset:9px;background:radial-gradient(circle,#000 0 3px,var(--nf-hot) 3.5px 6px,transparent 6.5px);box-shadow:0 0 0 2px #000}
@media (max-width:960px){
  .nf-eye--head{width:36px}
  .nf-eye--logo{width:24px}
  .nf-div__eye{width:44px}
}

/* v6.0: eyes, roughed up to match the collage (misregistered print, heavier ink, crooked) */
.nf-eye__white{stroke:var(--nf-hot);stroke-width:5;paint-order:stroke;transform:translate(2.5px,2px)}
.nf-eye__rim{stroke-width:3.2;stroke-dasharray:60 3 18 2;stroke:#000}
.nf-eye__lash{stroke:#000;stroke-width:2.6}
.nf-eye--flame .nf-eye__lash{stroke:var(--nf-hot)}
.nf-eye--head{width:58px;rotate:-8deg;margin-left:6px}
.nf-kicker .nf-eye--head{translate:0 -4px}
.nf-eye--logo{rotate:-10deg}
.nf-div__eye{rotate:6deg;width:70px}
.nf-eyefield .nf-eye--field .nf-eye__rim{stroke:color-mix(in srgb,var(--nf-text) 70%,var(--nf-bg));stroke-dasharray:none}
.nf-eyefield .nf-eye--field .nf-eye__white{stroke-width:3}

/* ==========================================================================
   v6.0 — Game panel tabs, skill tree, codex, HUD extras, new reticles.
   Raw like the rest: dashed rules, crooked tabs, hard shadows.
   ========================================================================== */
.nf-game-panel{width:min(440px,calc(100vw - 32px));max-height:min(680px,calc(100vh - var(--nf-header-h) - var(--nf-marquee-h) - 90px));max-height:min(680px,calc(100dvh - var(--nf-header-h) - var(--nf-marquee-h) - 90px));rotate:-.4deg}
.nf-game-tabs{display:flex;flex-wrap:wrap;gap:4px;padding:8px 10px 6px;border-bottom:1px dashed var(--nf-border);background:var(--nf-bg)}
.nf-game-tabs button{flex:1 1 auto;padding:6px 8px;font-size:.62rem;background:var(--nf-panel);color:var(--nf-text);border:1.5px dashed var(--nf-border);cursor:pointer}
.nf-game-tabs button:nth-child(odd){rotate:-1.5deg}.nf-game-tabs button:nth-child(even){rotate:1.2deg}
.nf-game-tabs button[aria-selected=true]{background:var(--nf-text);color:var(--nf-bg);border:1.5px solid #000;box-shadow:2px 2px 0 var(--nf-hot)}
.nf-game-tabs button b{font-weight:400;color:#000;background:var(--nf-a2);padding:0 4px;margin-left:2px}
.nf-game-seg{display:inline-flex;gap:2px}
.nf-game-seg button{padding:4px 7px;font-size:.58rem;background:transparent;color:var(--nf-dim);border:1px solid var(--nf-border);cursor:pointer}
.nf-game-seg button[aria-pressed=true]{background:var(--nf-a1);color:var(--nf-bg);border-color:var(--nf-a1)}
.nf-game-seg button:disabled{opacity:.45;cursor:not-allowed}
.nf-game-now{margin:12px 0 0;padding:6px 8px;border:1.5px solid var(--nf-a1);box-shadow:3px 3px 0 #000;font-family:var(--nf-label);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--nf-text)}
.nf-game-now b{color:var(--nf-a1);font-weight:400;font-size:1.1em}
.nf-game-now span{display:block;margin-top:3px;color:var(--nf-dim);text-transform:none;letter-spacing:.04em;font-family:var(--nf-mono);font-size:.72rem}
.nf-game-now i{font-style:normal;color:#000;background:var(--nf-a2);padding:0 4px}
.nf-game-tree,.nf-game-list,.nf-game-codex{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.nf-game-tree li{display:flex;gap:8px;align-items:flex-start;justify-content:space-between;padding:5px 7px;border:1px dashed var(--nf-border);color:var(--nf-dim);font-size:.7rem;line-height:1.3}
.nf-game-tree li:nth-child(odd){rotate:-.4deg}
.nf-game-tree li b{font:400 .64rem var(--nf-label);letter-spacing:.1em;text-transform:uppercase;color:var(--nf-text)}
.nf-game-tree li p{margin:2px 0 0}
.nf-game-tree li.is-some{border-style:solid;border-color:var(--nf-a3)}
.nf-game-tree li.is-full{border-style:solid;border-color:var(--nf-a1)}
.nf-game-tree li.is-full b{color:var(--nf-a1)}
.nf-game-tree li.is-lock{opacity:.75}
.nf-game-rank{color:var(--nf-a2);letter-spacing:1px;font-size:.62rem}
.nf-game-tree button{flex:none;min-width:56px;padding:5px 6px;font-size:.6rem;background:var(--nf-a1);color:var(--nf-bg);border:1.5px solid #000;box-shadow:2px 2px 0 #000;cursor:pointer}
.nf-game-tree button:disabled{background:transparent;color:var(--nf-dim);border:1px dashed var(--nf-border);box-shadow:none;cursor:not-allowed}
.nf-game-list li{padding:4px 7px;border-left:3px solid var(--nf-border);color:var(--nf-dim);font-size:.72rem}
.nf-game-list li b{font:400 .62rem var(--nf-label);letter-spacing:.1em;text-transform:uppercase;color:var(--nf-text)}
.nf-game-list li.is-got{border-left-color:var(--nf-a1)}
.nf-game-list li.is-got b{color:var(--nf-a1)}
.nf-game-tasks li{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:baseline}
.nf-game-tasks li .nf-game-xp{grid-column:1/-1;height:5px;margin-top:2px}
.nf-game-codex li{padding:6px 8px;border:1px solid var(--nf-border);color:var(--nf-dim);font-size:.72rem;line-height:1.35}
.nf-game-codex li:nth-child(3n){rotate:.5deg}
.nf-game-codex li b{display:flex;justify-content:space-between;gap:6px;font:400 .64rem var(--nf-label);letter-spacing:.1em;text-transform:uppercase;color:var(--nf-a1)}
.nf-game-codex li b span{color:var(--nf-dim)}
.nf-game-codex li p{margin:3px 0 0;color:var(--nf-text)}
.nf-game-codex li.is-boss{border:1.5px solid var(--nf-hot);box-shadow:3px 3px 0 #000}
.nf-game-codex li.is-boss b{color:var(--nf-hot)}
.nf-game-codex li.is-lock{border-style:dashed}
.nf-game-codex li.is-lock b{color:var(--nf-dim)}
.nf-game-codex li.is-lock p{color:var(--nf-dim)}
.nf-game-ph{color:var(--nf-a2)!important;font-family:var(--nf-label);font-size:.6rem;letter-spacing:.08em;text-transform:uppercase}
.nf-game-pick{gap:5px}
.nf-game-pick button:nth-child(4n+1){rotate:-1deg}.nf-game-pick button:nth-child(4n+3){rotate:1deg}
.nf-ast-hud__sec{color:#000;background:var(--nf-a3);padding:0 5px;transform:skewX(-10deg)}
.nf-ast-hud__reb{color:#000;background:var(--nf-a2);padding:0 4px}
.nf-ast-hud__pw--freeze,.nf-ast-hud__pw--shield,.nf-ast-hud__pw--echo{background:var(--nf-a3)}
.nf-ast-hud__pw--nuke,.nf-ast-hud__pw--crit{background:var(--nf-hot)}
.nf-ast-hud__pw--chainp,.nf-ast-hud__pw--triple,.nf-ast-hud__pw--xpup{background:var(--nf-a2)}
.nf-ast-lvl--win{border-color:var(--nf-a1)}
@media (max-width:760px){
  .nf-game-panel{width:auto;rotate:0deg}
  .nf-game-tabs button{padding:8px 6px;font-size:.6rem}
  .nf-game-tabs button:nth-child(odd),.nf-game-tabs button:nth-child(even),.nf-game-tree li:nth-child(odd),.nf-game-codex li:nth-child(3n){rotate:0deg}
  .nf-ast-hud__sec{display:none}
}
/* v6.0 reticles */
html[data-nf-reticle=cross] #nf-cursor.is-target .nf-cursor__x{border:0;inset:4px;background:linear-gradient(var(--nf-hot),var(--nf-hot)) 50% 0/3px 100% no-repeat,linear-gradient(var(--nf-hot),var(--nf-hot)) 0 50%/100% 3px no-repeat;transform:rotate(45deg)}
html[data-nf-reticle=hex] #nf-cursor.is-target .nf-cursor__x{border:0;inset:5px;background:var(--nf-hot);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%,25% 0,30% 12%,18% 50%,30% 88%,70% 88%,82% 50%,70% 12%,30% 12%)}
html[data-nf-reticle=fang] #nf-cursor.is-target .nf-cursor__x{border:0;inset:6px;background:var(--nf-hot);clip-path:polygon(0 0,30% 0,15% 60%,50% 20%,85% 60%,70% 0,100% 0,85% 100%,50% 55%,15% 100%)}
html[data-nf-reticle=crt] #nf-cursor.is-target .nf-cursor__x{border-radius:22%;inset:6px;border-color:var(--nf-hot);background:repeating-linear-gradient(0deg,transparent 0 2px,color-mix(in srgb,var(--nf-hot) 45%,transparent) 2px 3px)}
html[data-nf-reticle=sigil] #nf-cursor.is-target .nf-cursor__x{border-radius:50%;inset:3px;border-color:var(--nf-hot);background:conic-gradient(from 0deg,transparent 0 30deg,var(--nf-hot) 30deg 34deg,transparent 34deg 150deg,var(--nf-hot) 150deg 154deg,transparent 154deg 270deg,var(--nf-hot) 270deg 274deg,transparent 274deg)}
html[data-nf-reticle=glitch] #nf-cursor.is-target .nf-cursor__x{border-radius:0;inset:8px;border-color:var(--nf-hot);box-shadow:4px -2px 0 -1px var(--nf-a3),-4px 2px 0 -1px var(--nf-a1)}
html[data-nf-reticle=star] #nf-cursor.is-target .nf-cursor__x{border:0;inset:3px;background:var(--nf-hot);clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
html[data-nf-reticle=gold] #nf-cursor.is-target .nf-cursor__x{border-color:var(--nf-a2);border-radius:50%;inset:6px;box-shadow:0 0 0 3px #000,0 0 0 5px var(--nf-a2)}
html[data-nf-reticle=orbit] #nf-cursor.is-target .nf-cursor__x{border-radius:50%;inset:-2px;border-style:dotted;border-color:var(--nf-hot);box-shadow:inset 0 0 0 6px transparent,inset 0 0 0 8px var(--nf-a3)}
html[data-nf-reticle=void] #nf-cursor.is-target .nf-cursor__x{border-radius:50%;inset:5px;background:#000;border-color:var(--nf-hot);box-shadow:0 0 0 3px var(--nf-text)}

/* ==========================================================================
   v7.0 — Glitch portrait (photo window default)
   ========================================================================== */
.nf-photo__img--glitch{background:var(--nf-bg)}
.nf-portrait{position:absolute;inset:0;z-index:1;overflow:hidden;background:var(--nf-bg)}
.nf-portrait__cv{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;opacity:0}
.nf-portrait.is-live .nf-portrait__cv{opacity:1}
.nf-portrait.is-live .nf-portrait__still{display:none}
.nf-portrait__still{position:absolute;inset:0;width:100%;height:100%}
.nf-portrait__skin{fill:color-mix(in srgb,var(--nf-dim) 70%,var(--nf-bg))}
.nf-portrait__eye{fill:var(--nf-bg);stroke:var(--nf-a1);stroke-width:.8}
.nf-portrait::after{content:"";position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px);mix-blend-mode:multiply}
.nf-portrait__tag{position:absolute;right:40px;bottom:14px;z-index:4;max-width:calc(100% - 88px);font-family:var(--nf-label);font-size:.56rem;letter-spacing:.12em;line-height:1.3;color:var(--nf-bg);background:var(--nf-a1);padding:2px 6px;transform:rotate(-1.5deg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:2px 2px 0 var(--nf-hot)}
.nf-photo__img--glitch::after{opacity:.45}

/* ==========================================================================
   v7.0 — Under construction
   ========================================================================== */
.nf-build{position:relative;margin:18px 0 8px;border:3px dashed var(--nf-hot);background:color-mix(in srgb,var(--nf-panel) 88%,transparent);transform:rotate(-.8deg);box-shadow:6px 6px 0 var(--nf-a3),-3px -3px 0 var(--nf-hot);overflow:hidden}
.nf-build--1{transform:rotate(.9deg)}
.nf-build--2{transform:rotate(-1.4deg)}
.nf-build__tape{position:relative;overflow:hidden;white-space:nowrap;height:26px;display:flex;align-items:center;background:repeating-linear-gradient(-45deg,var(--nf-hot) 0 14px,#050505 14px 28px);transform:rotate(-1.2deg) scale(1.04)}
.nf-build__tape--b{transform:rotate(1deg) scale(1.04);background:repeating-linear-gradient(45deg,var(--nf-a2) 0 14px,#050505 14px 28px)}
.nf-build__tape span{display:inline-block;padding:2px 10px;font-family:var(--nf-label);font-size:.62rem;letter-spacing:.2em;font-weight:700;color:#f4f4f4;background:#050505;margin-left:18px}
.nf-motion .nf-build__tape span{animation:nf-build-tape 38s linear infinite}
.nf-motion .nf-build__tape--b span{animation-direction:reverse}
@keyframes nf-build-tape{to{transform:translateX(-50%)}}
.nf-build__body{display:grid;grid-template-columns:minmax(120px,220px) 1fr;gap:18px 24px;align-items:center;padding:18px 20px}
.nf-build__art{width:100%;height:auto;overflow:visible}
.nf-build__bar{fill:var(--nf-hot)}
.nf-build__stripe{fill:#050505}
.nf-build__legs,.nf-build__beacon rect:first-child{fill:var(--nf-dim)}
.nf-build__lamp{fill:var(--nf-a2)}
.nf-build__rays{stroke:var(--nf-a2);stroke-width:2;fill:none;opacity:.8}
.nf-build__cone path,.nf-build__cone rect{fill:var(--nf-hot)}
.nf-build__cone .nf-build__band{fill:var(--nf-text)}
.nf-build__digger rect{fill:var(--nf-a1)}
.nf-build__digger .nf-build__hat{fill:var(--nf-a2)}
.nf-build__digger .nf-build__skin{fill:var(--nf-text)}
.nf-build__shovel rect{fill:var(--nf-dim)}
.nf-build__pile path{fill:color-mix(in srgb,var(--nf-dim) 60%,var(--nf-bg))}
.nf-build__ground{fill:var(--nf-dim)}
.nf-motion .nf-build__digger{animation:nf-build-dig 1.6s steps(2) infinite;transform-origin:106px 98px}
.nf-motion .nf-build__shovel{animation:nf-build-shovel 1.6s steps(2) infinite;transform-origin:111px 75px}
.nf-motion .nf-build__rays{animation:nf-build-rays 2.4s steps(2) infinite}
@keyframes nf-build-dig{50%{transform:translateY(2px)}}
@keyframes nf-build-shovel{50%{transform:rotate(22deg)}}
@keyframes nf-build-rays{50%{opacity:.15}}
.nf-build__sign{margin:0 0 8px;font-family:var(--nf-display);font-size:clamp(1.3rem,3.2vw,2.4rem);line-height:1;text-transform:uppercase;color:var(--nf-text);text-shadow:3px 3px 0 var(--nf-hot),-2px -1px 0 var(--nf-a3);transform:skewX(-6deg)}
.nf-build__blink{color:var(--nf-a2);display:inline-block}
.nf-motion .nf-build__blink{animation:nf-build-blink 2s steps(2) infinite}
@keyframes nf-build-blink{50%{opacity:.25}}
.nf-build__msg{margin:0 0 8px;color:var(--nf-text);max-width:60ch}
.nf-build__meta{margin:0;font-family:var(--nf-label);font-size:.62rem;letter-spacing:.16em;color:var(--nf-dim)}
.nf-build__edit{margin:10px 0 0;font-size:.8rem}
.nf-build__edit a{color:var(--nf-a1)}
.nf-build__edit span{color:var(--nf-dim)}
@media (max-width:600px){.nf-build__body{grid-template-columns:1fr;padding:14px}.nf-build__art{max-width:200px}}
.nf-build__sign{overflow-wrap:anywhere}
.nf-contact__side .nf-build__body{grid-template-columns:110px 1fr;gap:12px}
.nf-contact__side .nf-build__sign{font-size:clamp(1.1rem,1.9vw,1.6rem)}

/* ==========================================================================
   v7.0 — Network threads (replaces the v3.9 figures in the esoteric layer)
   ========================================================================== */
.nf-eso-g .nf-net__threads path{stroke-linecap:round;stroke-dasharray:1 0}
.nf-eso-g .nf-net__threads .nf-net__link{stroke-dasharray:2 3;opacity:.7}
.nf-eso-g .nf-net__nodes{fill:currentColor;stroke:none}
.nf-eso-g--net1{color:var(--nf-a2)}.nf-eso-g--net2{color:var(--nf-a3)}.nf-eso-g--net3{color:var(--nf-a2)}.nf-eso-g--net4{color:var(--nf-a1)}
.nf-eso-g .nf-net__tip{opacity:.8}
/* the old spin is gone: networks grow instead of turning */
.nf-motion.nf-eso-strong .nf-eso-g g,html.nf-pleroma .nf-motion .nf-eso-g g{animation:none}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__threads path:not(.nf-net__link),html.nf-pleroma .nf-motion .nf-eso-g .nf-net__threads path:not(.nf-net__link){stroke-dasharray:1 1;animation:nf-net-grow 26s ease-in-out calc(var(--d,0) * -3.7s) infinite alternate}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__nodes circle,html.nf-pleroma .nf-motion .nf-eso-g .nf-net__nodes circle{animation:nf-net-pulse 6s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:50% 50%}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__nodes circle:nth-child(3n),html.nf-pleroma .nf-motion .nf-eso-g .nf-net__nodes circle:nth-child(3n){animation-delay:-2s}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__nodes circle:nth-child(3n+1),html.nf-pleroma .nf-motion .nf-eso-g .nf-net__nodes circle:nth-child(3n+1){animation-delay:-4s}
@keyframes nf-net-grow{0%{stroke-dashoffset:.55}100%{stroke-dashoffset:0}}
@keyframes nf-net-pulse{0%{opacity:.35;transform:scale(.8)}100%{opacity:1;transform:scale(1.35)}}
@media (prefers-reduced-motion:reduce){.nf-eso-g .nf-net__threads path,.nf-eso-g .nf-net__nodes circle{animation:none!important;stroke-dasharray:1 0!important}}
html.nf-pleroma .nf-eso-g{color:#ffdf8f}html.nf-pleroma .nf-eso-g--net3{color:#cfefff}
.nf-eso-g{opacity:calc(var(--eso-o) * 1.8)}.nf-eso-g--net4{opacity:calc(var(--eso-o) * 1.5)}
/* perf: in Pleroma the threads stay drawn; nodes pulse as a group (compositor-only) */
html.nf-pleroma .nf-motion .nf-eso-g .nf-net__threads path:not(.nf-net__link){animation:none;stroke-dasharray:1 0}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__nodes circle,html.nf-pleroma .nf-motion .nf-eso-g .nf-net__nodes circle{animation:none}
.nf-motion.nf-eso-strong .nf-eso-g .nf-net__nodes,html.nf-pleroma .nf-motion .nf-eso-g .nf-net__nodes{animation:nf-net-glow 5s ease-in-out infinite alternate;will-change:opacity}
.nf-motion.nf-eso-strong .nf-eso-g--net2 .nf-net__nodes,html.nf-pleroma .nf-motion .nf-eso-g--net4 .nf-net__nodes{animation-delay:-2.5s}
@keyframes nf-net-glow{0%{opacity:.3}100%{opacity:1}}
@media (prefers-reduced-motion:reduce){.nf-eso-g .nf-net__nodes{animation:none!important}}

/* ==========================================================================
   v7.1 — Contact form (crooked terminal, loud status lines)
   ========================================================================== */
.nf-form{max-width:640px;transform:rotate(.6deg);box-shadow:6px 6px 0 rgba(0,0,0,.8),-3px -3px 0 var(--nf-a3);margin-bottom:0}
.nf-form__body{padding:16px 18px 18px}
.nf-form__row{margin:0 0 14px}
.nf-form__row label{display:flex;justify-content:space-between;gap:10px;font-family:var(--nf-mono);font-size:.9rem;color:var(--nf-a1);margin-bottom:5px;letter-spacing:.04em}
.nf-form__req{font-family:var(--nf-label);font-size:.62rem;color:var(--nf-dim);text-transform:uppercase}
.nf-form input[type=text],.nf-form input[type=email],.nf-form textarea{display:block;width:100%;box-sizing:border-box;background:var(--nf-bg);color:var(--nf-text);border:1.5px solid var(--nf-border);border-left:4px solid var(--nf-a2);padding:10px 12px;font:1rem/1.45 var(--nf-mono);border-radius:0;resize:vertical}
.nf-form textarea{min-height:130px}
.nf-form input:focus,.nf-form textarea:focus{outline:2px solid var(--nf-a1);outline-offset:2px;border-left-color:var(--nf-a1)}
.nf-form__row.is-bad input,.nf-form__row.is-bad textarea{border-color:var(--nf-hot);border-left-color:var(--nf-hot);box-shadow:3px 3px 0 var(--nf-hot)}
.nf-form__err{display:block;margin-top:5px;font-family:var(--nf-mono);font-size:.85rem;color:var(--nf-hot)}
.nf-form__err::before{content:"!! "}
.nf-form__hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.nf-form__go{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:6px 0 0}
.nf-form__go .nf-btn{cursor:pointer;border:0;font:inherit}
.nf-form__go .nf-btn[disabled]{opacity:.6;cursor:progress}
.nf-form__note{font-family:var(--nf-mono);font-size:.8rem;color:var(--nf-dim)}
.nf-form__status{margin:0 0 16px;padding:10px 12px;font-family:var(--nf-mono);font-size:.95rem;line-height:1.4;transform:rotate(-1deg);border:2px solid}
.nf-form__status.is-ok{color:var(--nf-bg);background:var(--nf-a3);border-color:var(--nf-a3);box-shadow:4px 4px 0 var(--nf-a1)}
.nf-form__status.is-bad{color:var(--nf-text);background:color-mix(in srgb,var(--nf-hot) 22%,var(--nf-bg));border:2px dashed var(--nf-hot);box-shadow:4px 4px 0 var(--nf-hot)}
.nf-motion .nf-form__status.is-bad{animation:nf-form-jolt .35s steps(3) 1}
@keyframes nf-form-jolt{0%{transform:translateX(-6px) rotate(-1deg)}50%{transform:translateX(5px) rotate(-1.6deg)}100%{transform:rotate(-1deg)}}
@media (prefers-reduced-motion:reduce){.nf-form__status{animation:none!important}}
@media (max-width:600px){.nf-form{transform:none}.nf-form__body{padding:14px}}
.nf-form__err[hidden],.nf-form__status[hidden]{display:none!important}
