/*
Theme Name: Astranyx
Theme URI: https://github.com/jonathanrey87/Astranyx
Author: Jonathan Mendiola
Description: A cinematic, animated cybersecurity theme for the Astranyx digital forensics project.
Version: 1.1.0
Requires at least: 6.0
Requires PHP: 7.4
License: GNU General Public License v2 or later
Text Domain: astranyx
*/

:root{--bg:#08090b;--panel:#101216;--panel2:#15171c;--ink:#f3f1ec;--muted:#95979d;--red:#f13c3c;--line:#272a30;--mono:"DM Mono",monospace;--sans:"Manrope",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;overflow-x:hidden}.noise{position:fixed;inset:0;pointer-events:none;opacity:.045;z-index:9;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.8'/%3E%3C/svg%3E")}.site-header{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid var(--line);position:relative;z-index:10;background:rgba(8,9,11,.88);backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none;font-weight:800;letter-spacing:.18em;font-size:.86rem}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--red);color:var(--red);clip-path:polygon(50% 0,100% 100%,0 100%);padding-top:8px;font-family:var(--mono);font-size:.78rem}.site-header nav{display:flex;align-items:center;gap:32px}.site-header nav a{color:#b9bbc0;text-decoration:none;font-size:.84rem;font-weight:600}.site-header nav a:hover{color:#fff}.site-header .nav-cta{border:1px solid #45484f;padding:11px 16px;color:#fff}.nav-cta span,.button span{color:var(--red);margin-left:7px}.menu-button{display:none;background:none;border:1px solid var(--line);color:white;padding:9px 12px;font:inherit}.hero{min-height:calc(100vh - 82px);display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:6vw;padding:7vw 7vw 6vw;position:relative}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.9%,rgba(255,255,255,.035) 50%,transparent 50.1%),linear-gradient(rgba(255,255,255,.02) 1px,transparent 1px);background-size:100% 100%,100% 80px;pointer-events:none}.eyebrow,.kicker{font-family:var(--mono);font-size:.72rem;letter-spacing:.18em;color:#afb1b6}.eyebrow{display:flex;align-items:center;gap:10px}.eyebrow span{width:28px;height:2px;background:var(--red)}h1{font-size:clamp(3.8rem,7.4vw,8rem);line-height:.83;letter-spacing:-.075em;margin:34px 0 38px;text-transform:uppercase}h1 em,.final-cta em{font-weight:400;color:var(--red);font-style:italic;font-family:Georgia,serif;text-transform:none;letter-spacing:-.04em}.hero-intro{max-width:590px;font-size:clamp(1rem,1.35vw,1.22rem);line-height:1.65;color:#b9bbc0}.hero-actions{display:flex;align-items:center;gap:28px;margin-top:40px}.button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font-weight:700;font-size:.9rem;padding:16px 21px}.button.primary{background:var(--ink);color:#101114}.button.primary:hover{background:var(--red);color:#fff}.button.primary:hover span{color:white}.text-link{color:white;text-decoration:none;border-bottom:1px solid #555;padding:12px 0;font-size:.88rem}.signal-panel{background:linear-gradient(145deg,#14161b,#0d0f12);border:1px solid #2c2f36;min-height:570px;position:relative;padding:24px;box-shadow:0 40px 100px rgba(0,0,0,.45)}.signal-panel:after{content:"";position:absolute;inset:-1px;clip-path:polygon(0 0,35% 0,0 50%);border-top:1px solid var(--red);pointer-events:none}.panel-top,.panel-meta{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.65rem;letter-spacing:.14em;color:#777b83}.live{color:var(--red)}.live:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:7px;box-shadow:0 0 12px var(--red)}.orbit{width:265px;height:265px;border:1px solid #30333a;border-radius:50%;position:relative;margin:42px auto 30px;display:grid;place-items:center;animation:drift 9s ease-in-out infinite}.orbit:before,.orbit:after{content:"";position:absolute;border:1px solid #282b31;border-radius:50%}.orbit:before{inset:32px}.orbit:after{inset:72px;border-color:#3b292c}.orbit-core{width:68px;height:68px;display:grid;place-items:center;background:var(--red);color:#090a0c;clip-path:polygon(50% 0,100% 100%,0 100%);padding-top:18px;font-family:var(--mono);font-weight:700;font-size:1.4rem}.orbit i{position:absolute;width:7px;height:7px;background:#686c74;border-radius:50%}.orbit i:nth-child(2){top:9px;left:85px}.orbit i:nth-child(3){right:25px;bottom:55px;background:var(--red)}.orbit i:nth-child(4){left:44px;bottom:32px}.terminal{font:400 .76rem/1.8 var(--mono);padding:17px 18px;background:#090a0c;border:1px solid #202228;color:#d9dadd}.prompt{color:var(--red);margin-right:10px}.output{color:#777c84;padding-left:22px}.cursor b{display:inline-block;width:7px;height:14px;background:var(--red);vertical-align:-2px;animation:blink 1s steps(1) infinite}.panel-meta{position:absolute;bottom:24px;left:24px;right:24px;border-top:1px solid #272a30;padding-top:15px}.panel-meta b{color:#cfd0d3;font-weight:500}.proof-strip{border-block:1px solid var(--line);min-height:72px;display:grid;grid-template-columns:repeat(4,1fr);align-items:center;padding:0 5vw;font:400 .66rem var(--mono);letter-spacing:.14em;color:#74777e}.proof-strip span:not(:last-child){border-right:1px solid var(--line)}.proof-strip span{padding:8px 2vw}.section{padding:130px 7vw}.section-heading h2,.workflow h2,.final-cta h2{font-size:clamp(2.8rem,5.6vw,6.2rem);line-height:.98;letter-spacing:-.06em;margin:18px 0 60px}.section-heading h2 span{color:#676a72}.cap-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;border:1px solid var(--line)}.cap-card{min-height:390px;padding:34px;position:relative;border-left:1px solid var(--line);background:var(--panel);transition:.25s}.cap-card:first-child{border-left:0}.cap-card:hover{background:var(--panel2);transform:translateY(-5px)}.cap-card.feature{background:linear-gradient(145deg,#1d1618,#111317)}.card-index{font:400 .68rem var(--mono);color:#656870}.icon-box{width:48px;height:48px;border:1px solid #343840;display:grid;place-items:center;margin:56px 0 26px;color:var(--red);font-size:1.4rem}.cap-card h3{font-size:1.35rem;margin:0 0 14px}.cap-card p{color:#989ba2;line-height:1.65;margin:0;max-width:360px}.cap-card code{position:absolute;bottom:28px;left:34px;right:34px;padding-top:17px;border-top:1px solid #2a2d33;font:400 .68rem var(--mono);color:#777b82}.workflow{display:grid;grid-template-columns:.8fr 1.2fr;gap:10vw;background:#ece9e2;color:#111216}.workflow .kicker{color:#777}.workflow-copy>p:last-child{font-size:1.08rem;color:#606268;line-height:1.65;max-width:430px}.steps{list-style:none;margin:0;padding:0;border-top:1px solid #c8c5bf}.steps li{display:grid;grid-template-columns:82px 1fr;gap:18px;padding:32px 0;border-bottom:1px solid #c8c5bf}.steps li>span{font:500 .72rem var(--mono);color:var(--red);padding-top:5px}.steps h3{font-size:1.55rem;margin:0 0 7px}.steps p{color:#686a70;margin:0;line-height:1.55}.manifesto{position:relative;overflow:hidden}.manifesto-line{white-space:nowrap;font-size:clamp(3rem,8vw,9rem);font-weight:800;color:#101216;-webkit-text-stroke:1px #26282e;letter-spacing:-.07em;position:absolute;top:35px;left:-40px}.quote{position:relative;margin-top:130px;display:grid;grid-template-columns:.35fr 1.65fr;gap:5vw}.quote blockquote{font-size:clamp(2rem,3.8vw,4.4rem);line-height:1.17;letter-spacing:-.04em;margin:0;max-width:1100px}.principles{margin-top:100px;margin-left:20%;display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}.principles div{padding:24px 12px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:9px}.principles strong{font-size:1rem}.principles span{font:400 .7rem var(--mono);color:#777b83}.final-cta{text-align:center;background:radial-gradient(circle at 50% 45%,#2a1316 0,transparent 39%)}.final-cta h2{font-size:clamp(3.5rem,8vw,8.8rem);text-transform:uppercase}.final-cta .button{margin-top:10px}footer{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:34px 5vw;border-top:1px solid var(--line);color:#74777e;font:400 .7rem var(--mono)}footer p:nth-child(2){text-align:center}footer p:last-child{text-align:right}.reveal{opacity:0;transform:translateY(24px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:none}@keyframes blink{50%{opacity:0}}@keyframes drift{50%{transform:translateY(-8px) rotate(2deg)}}
@media(max-width:900px){.site-header{height:70px}.menu-button{display:block}.site-header nav{display:none;position:absolute;top:70px;left:0;right:0;background:#0d0f12;padding:24px 5vw;flex-direction:column;align-items:flex-start;border-bottom:1px solid var(--line)}.site-header nav.open{display:flex}.hero{grid-template-columns:1fr;padding-top:70px}.signal-panel{min-height:525px}.proof-strip{grid-template-columns:1fr 1fr;padding:10px 5vw}.proof-strip span{border:0!important}.cap-grid{grid-template-columns:1fr}.cap-card,.cap-card:first-child{border-left:0;border-top:1px solid var(--line)}.cap-card:first-child{border-top:0}.workflow{grid-template-columns:1fr;gap:40px}.quote{grid-template-columns:1fr;gap:25px}.principles{margin-left:0}.section{padding:90px 7vw}}
@media(max-width:560px){h1{font-size:3.55rem}.hero{padding:58px 6vw}.hero-actions{align-items:flex-start;flex-direction:column}.signal-panel{min-height:480px;padding:18px}.orbit{width:220px;height:220px;margin-top:32px}.panel-meta{left:18px;right:18px;bottom:18px}.proof-strip{grid-template-columns:1fr}.proof-strip span{padding:8px}.section{padding:74px 6vw}.cap-card{padding:28px;min-height:380px}.cap-card code{left:28px}.principles{grid-template-columns:1fr}.principles div{border-right:0;border-bottom:1px solid var(--line);padding:20px 0}footer{grid-template-columns:1fr;gap:18px;text-align:left}footer p:nth-child(2),footer p:last-child{text-align:left;margin:0}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.orbit,.cursor b{animation:none}}

/* Gothic-tech front direction */
:root{--gothic:"Cinzel Decorative",serif;--red:#e62635;--blood:#610914}
body{background:#070708}
.scanlines{position:fixed;inset:0;z-index:8;pointer-events:none;opacity:.13;background:repeating-linear-gradient(0deg,transparent 0,transparent 3px,rgba(255,255,255,.045) 4px);animation:scan-shift 10s linear infinite}
.embers{position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle,rgba(230,38,53,.7) 0 1px,transparent 1.5px),radial-gradient(circle,rgba(230,38,53,.35) 0 1px,transparent 1.5px);background-size:71px 71px,113px 113px;background-position:0 0,31px 47px;mask-image:linear-gradient(to top,black,transparent 75%);animation:ember-rise 22s linear infinite}
.brand{font-family:var(--gothic);letter-spacing:.12em;text-shadow:0 0 20px rgba(230,38,53,.22)}
h1{font-family:var(--gothic);font-size:clamp(3.35rem,6.8vw,7.4rem);line-height:.9;letter-spacing:-.055em;position:relative;text-shadow:0 0 34px rgba(230,38,53,.12)}
h1 em,.final-cta em{font-family:var(--gothic);font-style:normal;text-shadow:0 0 20px rgba(230,38,53,.42)}
.section-heading h2,.workflow h2,.final-cta h2{font-family:var(--gothic);font-size:clamp(2.55rem,5.1vw,5.8rem);line-height:1.04;letter-spacing:-.045em}
.cap-card h3,.steps h3{font-family:var(--gothic);letter-spacing:.015em}
.quote blockquote{font-family:var(--gothic);font-size:clamp(1.8rem,3.3vw,3.8rem);line-height:1.28;letter-spacing:-.025em}
.signal-panel{background:linear-gradient(145deg,#171318,#0b0c0f);border-color:#3a2a30;box-shadow:0 40px 100px rgba(0,0,0,.55),0 0 70px rgba(97,9,20,.12);animation:panel-breathe 5s ease-in-out infinite;transition:transform .15s ease-out}
.orbit{border-color:#403038;box-shadow:inset 0 0 45px rgba(97,9,20,.18),0 0 35px rgba(230,38,53,.08)}
.orbit-core{font-family:var(--gothic);font-weight:900;filter:drop-shadow(0 0 16px rgba(230,38,53,.6));animation:core-pulse 2.8s ease-in-out infinite}
.rune-ring{position:absolute;inset:13px;display:flex;align-items:flex-start;justify-content:center;padding-top:2px;font:400 .55rem var(--gothic);letter-spacing:.24em;color:#85515a;animation:rune-spin 18s linear infinite}
.reveal{transform:translateY(30px) scale(.985);filter:blur(4px);transition:opacity .85s ease,transform .85s ease,filter .85s ease}.reveal.visible{filter:none}
.glitch{animation:glitch-jolt 6s steps(1) infinite}
@keyframes rune-spin{to{transform:rotate(360deg)}}@keyframes core-pulse{50%{transform:scale(1.08);filter:drop-shadow(0 0 28px rgba(230,38,53,.9))}}@keyframes panel-breathe{50%{border-color:#603039;box-shadow:0 40px 100px rgba(0,0,0,.55),0 0 90px rgba(97,9,20,.22)}}@keyframes ember-rise{to{background-position:0 -710px,31px -1083px}}@keyframes scan-shift{to{transform:translateY(8px)}}@keyframes glitch-jolt{0%,92%,100%{transform:none;text-shadow:0 0 34px rgba(230,38,53,.12)}93%{transform:translate(3px,-1px);text-shadow:-5px 0 var(--red),5px 0 #6573ff}95%{transform:translate(-2px,1px);text-shadow:4px 0 var(--red),-4px 0 #6573ff}97%{transform:none}}
@media(max-width:560px){h1{font-size:3.05rem;line-height:.98}.rune-ring{font-size:.48rem}}
@media(prefers-reduced-motion:reduce){.rune-ring,.orbit-core,.signal-panel,.embers,.scanlines,.glitch{animation:none}.reveal{filter:none}.signal-panel{transform:none!important}}

/* Astranyx Cipher: a custom-built display treatment */
:root{--cipher:"Syne",sans-serif}
.brand{font-family:var(--cipher);font-weight:800;letter-spacing:.22em;transform:skewX(-5deg)}
.brand>span:last-child{background:linear-gradient(90deg,#fff 0 46%,#aeb0b6 46% 50%,#fff 50%);background-clip:text;color:transparent}
.cipher-title{font-family:var(--cipher);font-weight:800;font-size:clamp(3.2rem,6.7vw,7.25rem);line-height:.78;letter-spacing:-.085em;text-transform:uppercase;display:flex;flex-direction:column;gap:.16em;filter:drop-shadow(0 18px 28px rgba(0,0,0,.5))}
.cipher-title span{position:relative;display:block;width:max-content;max-width:100%;background:linear-gradient(105deg,#f4f1e9 0 38%,#777b82 38.5% 40%,#f4f1e9 40.5% 71%,#5b5e65 71.5% 73%,#f4f1e9 73.5%);background-clip:text;color:transparent;clip-path:polygon(0 0,94% 0,100% 24%,97% 54%,100% 100%,5% 100%,0 78%,3% 48%)}
.cipher-title span:before,.cipher-title span:after{content:attr(data-word);position:absolute;inset:0;pointer-events:none}
.cipher-title span:before{color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.2);transform:translate(4px,4px);clip-path:polygon(0 62%,100% 48%,100% 58%,0 72%)}
.cipher-title span:after{color:var(--red);opacity:.78;transform:translate(-3px,1px);clip-path:polygon(0 43%,100% 35%,100% 40%,0 49%);animation:cipher-slice 4.8s steps(1) infinite}
.cipher-title .cipher-red{margin-left:.12em;background:linear-gradient(100deg,#e62635 0 47%,#5e0b15 47.5% 51%,#ff5360 51.5%);background-clip:text;color:transparent;font-size:.74em;letter-spacing:.035em}
.section-heading h2,.workflow h2,.final-cta h2,.quote blockquote,.cap-card h3,.steps h3{font-family:var(--cipher);font-weight:700}
.section-heading h2,.workflow h2,.final-cta h2{letter-spacing:-.07em}.quote blockquote{letter-spacing:-.045em}
.final-cta em{font-family:var(--cipher);font-style:normal;letter-spacing:-.07em}
.rune-ring{font-family:var(--cipher);font-weight:700}
@keyframes cipher-slice{0%,89%,100%{transform:translate(-3px,1px)}90%{transform:translate(9px,-2px)}92%{transform:translate(-7px,3px)}94%{transform:translate(2px,0)}}
@media(max-width:560px){.cipher-title{font-size:2.8rem;line-height:.86}.cipher-title .cipher-red{font-size:.76em}}
@media(prefers-reduced-motion:reduce){.cipher-title span:after{animation:none}}

/* Hero title signal-break sequence */
.cipher-title{isolation:isolate}
.cipher-title.glitch-hit{animation:title-flicker .46s steps(1)}
.cipher-title.glitch-hit span{animation:word-break .46s steps(1)}
.cipher-title.glitch-hit span:nth-child(2){animation-delay:.035s}
.cipher-title.glitch-hit span:nth-child(3){animation-delay:.07s}
.cipher-title.glitch-hit span:before{animation:ghost-red .46s steps(1)}
.cipher-title.glitch-hit span:after{animation:ghost-blue .46s steps(1)}
@keyframes title-flicker{0%,100%{opacity:1;filter:drop-shadow(0 18px 28px rgba(0,0,0,.5))}12%{opacity:.35}18%{opacity:1}42%{filter:contrast(1.8) brightness(1.45)}46%{opacity:.7}52%{opacity:1}}
@keyframes word-break{0%,100%{transform:none;clip-path:polygon(0 0,94% 0,100% 24%,97% 54%,100% 100%,5% 100%,0 78%,3% 48%)}16%{transform:translateX(-9px) skewX(5deg);clip-path:polygon(0 0,100% 0,100% 28%,4% 40%,100% 48%,100% 100%,0 100%)}29%{transform:translateX(12px);clip-path:polygon(0 8%,100% 0,100% 61%,0 48%)}44%{transform:translateX(-5px) scaleX(1.025);clip-path:polygon(0 0,96% 4%,100% 100%,0 88%)}66%{transform:translateX(7px);clip-path:polygon(0 14%,100% 6%,97% 78%,3% 100%)}}
@keyframes ghost-red{0%,100%{transform:translate(4px,4px);opacity:.2}22%{transform:translate(-15px,1px);opacity:.85;-webkit-text-stroke:2px var(--red)}52%{transform:translate(10px,-3px);opacity:.5}72%{transform:translate(-5px,2px);opacity:.25}}
@keyframes ghost-blue{0%,100%{transform:translate(-3px,1px);opacity:.78}18%{transform:translate(17px,-2px);color:#64d8ff;opacity:.85;clip-path:polygon(0 18%,100% 12%,100% 28%,0 36%)}47%{transform:translate(-13px,3px);color:var(--red);clip-path:polygon(0 62%,100% 48%,100% 68%,0 78%)}74%{transform:translate(8px,-1px);color:#fff}}
@media(prefers-reduced-motion:reduce){.cipher-title.glitch-hit,.cipher-title.glitch-hit span,.cipher-title.glitch-hit span:before,.cipher-title.glitch-hit span:after{animation:none}}

/* User-provided Astranyx dragon emblem hero background */
.hero{isolation:isolate;background:radial-gradient(circle at 67% 43%,rgba(97,9,20,.12),transparent 38%),linear-gradient(90deg,rgba(7,7,8,.98),rgba(7,7,8,.9) 48%,rgba(7,7,8,.82))}
.hero:after{content:"";position:absolute;inset:-4%;z-index:-1;background-image:url("assets/astranyx-dragon-emblem.png");background-repeat:no-repeat;background-position:center;background-size:cover;opacity:.14;filter:saturate(.72) contrast(1.18) brightness(.7);mix-blend-mode:screen;animation:emblem-drift 24s ease-in-out infinite alternate;pointer-events:none}
.hero>*,.hero:before{z-index:1}.hero-copy{position:relative}
.signal-panel{background:linear-gradient(145deg,rgba(23,19,24,.92),rgba(11,12,15,.88));backdrop-filter:blur(8px)}
@keyframes emblem-drift{from{transform:scale(1.02) translate3d(-.5%,0,0)}to{transform:scale(1.1) translate3d(1.5%,-1%,0)}}
@media(max-width:900px){.hero:after{background-position:center top;opacity:.11}.hero{background:linear-gradient(rgba(7,7,8,.9),rgba(7,7,8,.94))}}
@media(prefers-reduced-motion:reduce){.hero:after{animation:none}}
