/*
Theme Name: Hadi Mirzaei Portfolio
Theme URI: https://example.com
Author: Hadi Mirzaei
Description: قالب وردپرس سایت شخصی هادی میرزایی؛ طراح و برنامه‌نویس. طرح شب فانتزی با ناوبری Dock، ترمینال مهارت‌ها، باران کد و تصاویر بزرگ. راست‌چین و کاملاً ریسپانسیو.
Version: 4.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GPL-2.0-or-later
Text Domain: hadi
*/
:root{--bg:#04100D;--bg2:#071A15;--fg:#E8F5EE;--mfg:#A5C0B2;--card:rgba(9,40,33,.74);--line:rgba(140,235,200,.16);--gold:#F2C879;--goldl:#E7B863;--acc:#5CE6B0;--soft:rgba(92,230,176,.14);--dock:rgba(6,26,21,.82);--noise:.1;--shadow:0 24px 50px -28px rgba(0,0,0,.9);--rain:92,230,176;--gx:clamp(16px,3.2vw,64px);
--page:radial-gradient(1100px 700px at 88% 0%,rgba(124,108,240,.16),transparent 62%),radial-gradient(1000px 700px at 4% 14%,rgba(92,230,176,.13),transparent 62%),radial-gradient(1100px 800px at 60% 62%,rgba(23,96,79,.34),transparent 66%),radial-gradient(1000px 700px at 10% 100%,rgba(23,96,79,.4),transparent 66%),linear-gradient(180deg,#03100E 0%,#05201A 40%,#0A2F28 78%,#051A15 100%);
--serif:"Aref Ruqaa","Vazirmatn",serif;--font:"Vazirmatn",Tahoma,system-ui,sans-serif;--mono:"JetBrains Mono",ui-monospace,Consolas,monospace;color-scheme:dark}
:root[data-theme="light"]{--bg:#EDF2E8;--bg2:#E2EBDC;--fg:#10261D;--mfg:#46594F;--card:rgba(255,255,255,.78);--line:rgba(16,38,29,.15);--gold:#8A5A08;--goldl:#C8923A;--acc:#17784F;--soft:rgba(23,120,79,.14);--dock:rgba(255,255,255,.8);--noise:.07;--shadow:0 22px 44px -28px rgba(16,38,29,.55);--rain:20,120,80;--page:radial-gradient(900px 520px at 88% -4%,rgba(200,146,58,.18),transparent),linear-gradient(180deg,#EDF2E8,#E6EEDF 60%,#EDF2E8);color-scheme:light}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:24px}
body{margin:0;background:var(--page);color:var(--fg);font:400 16px/1.9 var(--font);overflow-x:hidden}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:100;opacity:var(--noise);mix-blend-mode:overlay;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%' height='100%' filter='url(%23n)'/%3E%3C/svg%3E")}
a{color:inherit}img{max-width:100%;height:auto}
:focus-visible{outline:3px solid var(--acc);outline-offset:3px;border-radius:12px}
.wrap{width:100%;max-width:2000px;margin:0 auto;padding:0 var(--gx)}
.mono{font-family:var(--mono);direction:ltr;unicode-bidi:isolate}
.skip{position:absolute;inset-inline-start:-999px}.skip:focus{inset-inline-start:12px;top:12px;background:var(--gold);color:var(--bg);padding:8px 14px;z-index:99;border-radius:10px}
/* dock */
.dock{position:fixed;inset-inline:0;bottom:max(14px,env(safe-area-inset-bottom));margin-inline:auto;width:max-content;max-width:calc(100% - 16px);z-index:60;display:flex;align-items:center;gap:4px;padding:8px;border-radius:999px;background:var(--dock);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--line);box-shadow:0 18px 44px -14px rgba(0,0,0,.55)}
.dock a,.dock button{position:relative;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:var(--fg);background:transparent;border:0;padding:0;cursor:pointer;text-decoration:none;transition:background .2s,transform .2s}
.dock a:hover,.dock button:hover{background:var(--soft);transform:translateY(-4px)}
.dock a[aria-current="true"]{background:linear-gradient(135deg,#F5D58A,#E3A33B);color:#2A1B02}
.dock svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.dock .lbl{position:absolute;bottom:calc(100% + 14px);inset-inline-start:50%;transform:translateX(50%) translateY(4px);white-space:nowrap;padding:3px 12px;border-radius:999px;background:var(--bg);color:var(--fg);border:1px solid var(--line);font-size:.8rem;line-height:1.7;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}
[dir="ltr"] .dock .lbl{transform:translateX(-50%) translateY(4px)}
.dock a:hover .lbl,.dock a:focus-visible .lbl,.dock button:hover .lbl,.dock button:focus-visible .lbl{opacity:1;transform:translateX(50%)}
[dir="ltr"] .dock a:hover .lbl{transform:translateX(-50%)}
.dock .sep{width:1px;height:26px;background:var(--line);margin:0 4px}
/* buttons */
.btn{display:inline-flex;align-items:center;min-height:50px;padding:0 28px;border-radius:999px;background:linear-gradient(135deg,#F5D58A,#E3A33B);color:#2A1B02;border:0;font:700 1rem var(--font);text-decoration:none;cursor:pointer;box-shadow:0 14px 28px -14px #E3A33B;transition:transform .2s,box-shadow .2s}
.btn:hover{transform:translateY(-3px);box-shadow:0 18px 32px -12px #E3A33B}
.btn.ghost{background:var(--card);color:var(--fg);border:1px solid var(--line);box-shadow:none;backdrop-filter:blur(8px)}
.btn.ghost:hover{border-color:var(--goldl)}
/* hero */
.hero{position:relative;margin:0;width:100%;min-height:min(94vh,960px);border-radius:0 0 clamp(28px,4vw,56px) clamp(28px,4vw,56px);overflow:hidden;isolation:isolate;display:grid;align-items:center;color:#F3FBF6;border-bottom:1px solid rgba(242,200,121,.4);background:#06100D}
.hero>.scene{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.hero::before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(to left,rgba(3,16,14,.9) 0%,rgba(3,16,14,.6) 38%,transparent 72%)}
.hero-in{position:relative;z-index:1;display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:32px;padding:clamp(72px,9vh,110px) var(--gx) 140px;max-width:2000px;margin:0 auto;width:100%}
.rain{position:absolute;inset:0;width:100%;height:100%;z-index:-1;opacity:.55;pointer-events:none;-webkit-mask-image:linear-gradient(#000 0%,#000 40%,transparent 78%);mask-image:linear-gradient(#000 0%,#000 40%,transparent 78%)}
.kicker{display:inline-flex;align-items:center;gap:10px;margin:0 0 18px;padding:6px 16px;border-radius:999px;border:1px solid rgba(242,200,121,.45);background:rgba(3,16,14,.45);color:#F2C879;font-size:.9rem}
.kicker::before{content:"";width:8px;height:8px;border-radius:50%;background:#5CE6B0;box-shadow:0 0 0 4px rgba(92,230,176,.25)}
.hero h1{font:700 clamp(3.2rem,7vw,8rem)/1.35 var(--serif);margin:0;padding-block:.05em;background:linear-gradient(180deg,#FFF6DA,#F2C879);-webkit-background-clip:text;background-clip:text;color:transparent}
.lead{color:#D5E7DC;font-size:1.12rem;max-width:520px;margin:12px 0 32px}
.btns{display:flex;gap:14px;flex-wrap:wrap}
.hero .btn.ghost{background:rgba(255,255,255,.08);color:#F3FBF6;border-color:rgba(255,255,255,.35)}
.arch-wrap{position:relative;width:min(290px,100%);justify-self:end;margin-inline-end:20px}.arch{position:relative;width:100%;aspect-ratio:3/4;padding:9px;border-radius:999px 999px 30px 30px;border:1px solid #E7B863;background:rgba(3,16,14,.4);backdrop-filter:blur(6px);box-shadow:0 30px 60px -24px #000,0 0 80px -20px #F2C879}
.arch::before{content:"";position:absolute;inset:-14px;border-radius:999px 999px 40px 40px;border:1px dashed rgba(242,200,121,.55)}
.arch img{width:100%;height:100%;object-fit:cover;display:block;border-radius:999px 999px 22px 22px}
/* sections */
.sec{padding-top:88px}
.sec-h{margin-bottom:26px}
.sec-h small{display:block;width:fit-content;font:500 .8rem var(--mono);letter-spacing:.08em;color:var(--gold);margin-bottom:2px}
.sec-h h2{font:700 clamp(2rem,5vw,3rem)/1.5 var(--serif);margin:0}
.sec-h p{margin:4px 0 0;color:var(--mfg);max-width:600px}
.bento{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,1.6vw,28px)}
.tile{position:relative;background:var(--card);border:1px solid var(--line);border-radius:30px;padding:clamp(22px,2.2vw,34px);overflow:hidden;box-shadow:var(--shadow)}
.tile::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.7;background:radial-gradient(var(--line) 1px,transparent 1.3px) 0 0/16px 16px;-webkit-mask-image:radial-gradient(circle at 100% 0,#000,transparent 50%);mask-image:radial-gradient(circle at 100% 0,#000,transparent 50%)}
.s5{grid-column:span 5}.s6{grid-column:span 6}.s7{grid-column:span 7}.s4{grid-column:span 4}.s12{grid-column:span 12}
.tile h3.t{font:700 1.6rem/1.5 var(--serif);margin:0 0 10px;color:var(--gold)}
.tile p{margin:0 0 14px}
.facts{margin:0;padding:0}.facts div{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px dashed var(--line)}
.facts dt{color:var(--mfg)}.facts dd{margin:0;font-weight:500;text-align:end}
.rain-bg{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none}
main,.site-footer{position:relative;z-index:1}
/* floating code chips */
.chip{position:absolute;padding:3px 12px;border-radius:999px;background:rgba(3,16,14,.72);border:1px solid rgba(242,200,121,.5);color:#F2C879;font:500 .78rem var(--mono);direction:ltr;backdrop-filter:blur(6px);animation:bob 5s ease-in-out infinite}
.c1{top:6%;left:-38px}.c2{top:40%;right:-46px;animation-delay:-1.6s}.c3{bottom:16%;left:-52px;animation-delay:-3.2s}.c4{bottom:-16px;right:12%;animation-delay:-2.2s}
@keyframes bob{50%{transform:translateY(-10px)}}
.caret{display:inline-block;width:.5em;height:1.05em;margin-inline-start:3px;background:currentColor;vertical-align:-.15em;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
/* terminal skills */
.term{background:#07110E;border:1px solid rgba(242,200,121,.4);border-radius:26px;color:#D5E7DC;box-shadow:var(--shadow),0 0 70px -34px #5CE6B0;overflow:hidden}
.term-bar,.codecard .tb{display:flex;align-items:center;gap:7px;padding:12px 18px;border-bottom:1px solid rgba(255,255,255,.08);direction:ltr}
.term-bar i,.codecard .tb i{width:11px;height:11px;border-radius:50%;background:#FB7185}.term-bar i:nth-child(2),.codecard .tb i:nth-child(2){background:#FBBF24}.term-bar i:nth-child(3),.codecard .tb i:nth-child(3){background:#34D399}
.term-bar span,.codecard .tb span{margin-inline:auto;font:400 .78rem var(--mono);color:#7F9A8C}
.tabs{display:flex;gap:6px;padding:14px 18px 0;overflow-x:auto;direction:ltr}
.tabs button{font:500 .8rem var(--mono);color:#9DB8AB;background:transparent;border:1px solid transparent;border-radius:999px;padding:0 16px;min-height:38px;cursor:pointer;white-space:nowrap}
.tabs button:hover{border-color:rgba(242,200,121,.5)}
.tabs button[aria-selected="true"]{color:#07110E;background:#F2C879}
.cmdline{padding:14px 20px 4px;font:400 .9rem var(--mono);direction:ltr;color:#D5E7DC;min-height:2.6em}
.cmdline .ps{color:#5CE6B0}.cmdline .cmd{color:#F2C879}
.sk-list{list-style:none;margin:0;padding:10px 14px 6px;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media (min-width:1600px){.sk-list{grid-template-columns:repeat(4,1fr)}}
.sk{--s:#1F9D6B;display:grid;grid-template-columns:auto 1fr;grid-template-areas:"ic nm" "ic bar";align-items:center;gap:4px 14px;padding:11px 14px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);transition:opacity .4s,background .2s,border-color .2s}
.sk:hover,.sk:focus-visible{background:rgba(255,255,255,.08);border-color:var(--s)}
.sk.api{--s:#B7791F}.sk.data{--s:#6F5BE0}.sk.geo{--s:#168AA6}
.sk .ic{grid-area:ic;width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:var(--s);color:#fff;font:700 .9rem var(--mono)}
.sk .nm{grid-area:nm;display:flex;justify-content:space-between;gap:10px;align-items:baseline}
.sk b{font:700 .98rem var(--font);direction:ltr}.sk .lv{font:500 .68rem var(--mono);color:#9DB8AB;letter-spacing:.06em}
.sk .bar{grid-area:bar}
.meter{height:6px;border-radius:6px;background:rgba(255,255,255,.1);overflow:hidden}
.meter i{display:block;height:100%;width:var(--w);border-radius:6px;background:linear-gradient(90deg,var(--s),#F2C879);transition:width 1s cubic-bezier(.2,.8,.2,1)}
.js .sk .meter i{width:0}.js .sk.on .meter i{width:var(--w)}.js .sk:not(.on){opacity:.3}
.sk[hidden]{display:none}
.stat{padding:8px 20px 16px;font:400 .8rem var(--mono);color:#5CE6B0;unicode-bidi:plaintext;min-height:2.8em}
/* code card */
.codecard{background:#07110E;border:1px solid rgba(242,200,121,.35);border-radius:26px;overflow:hidden;color:#D5E7DC;box-shadow:var(--shadow);direction:ltr}
.codecard code{display:block;padding:14px 18px 20px;font:400 .86rem/2 var(--mono);white-space:pre;overflow-x:auto;counter-reset:l}
.codecard .ln{display:block;counter-increment:l}.codecard .ln::before{content:counter(l);display:inline-block;width:1.6em;margin-inline-end:1.1em;text-align:end;color:#4E6A5D}
.ck{color:#5CE6B0}.cs{color:#F2C879}.cp{color:#7F9A8C}
.console{font:500 .9rem var(--mono);color:#5CE6B0;direction:ltr;width:fit-content;margin:0 0 4px}.console b{color:#F2C879;font-weight:500}
/* projects */
.proj{padding:14px 14px 26px}
.proj .shot{position:relative;border-radius:22px;overflow:hidden;background:#0F2018;margin-bottom:18px;padding-top:32px}
.proj .shot::before{content:"";position:absolute;inset:0 0 auto;height:32px;background:radial-gradient(circle at 18px 16px,#FB7185 4.5px,transparent 5.5px),radial-gradient(circle at 36px 16px,#FBBF24 4.5px,transparent 5.5px),radial-gradient(circle at 54px 16px,#34D399 4.5px,transparent 5.5px),#0F2018}
.proj .shot::after{content:attr(data-url);position:absolute;top:6px;left:72px;height:20px;padding:0 12px;border-radius:10px;background:rgba(255,255,255,.08);color:#9DB8AB;font:400 .68rem/20px var(--mono);direction:ltr}
.proj .shot img{display:block;width:100%;transition:transform .5s}.proj:hover .shot img{transform:scale(1.04)}
.proj .body{padding:0 14px}
.proj h3{font:700 1.3rem/1.5 var(--font);margin:0}
.proj p{color:var(--mfg);font-size:.95rem;margin:6px 0 12px}
.proj.s12{display:grid;grid-template-columns:1.25fr 1fr;gap:28px;align-items:center;padding:14px}
.proj.s12 .shot{margin:0}
.chips{display:flex;gap:6px;flex-wrap:wrap}.chips span{font:500 .72rem var(--mono);padding:2px 12px;border-radius:999px;border:1px solid var(--goldl);color:var(--gold)}
/* timeline */
.tl{list-style:none;margin:0;padding:0;padding-inline-start:30px;position:relative}
.tl::before{content:"";position:absolute;inset-block:8px 4px;inset-inline-start:6px;width:1px;background:linear-gradient(var(--goldl),transparent)}
.tl>li{position:relative;margin:0 0 24px}
.tl>li::before{content:"";position:absolute;inset-inline-start:-30px;top:8px;width:13px;height:13px;transform:rotate(45deg);background:var(--bg);border:2px solid var(--goldl)}
.tl .hash{margin-inline-end:14px;font:400 .72rem var(--mono);color:var(--mfg);opacity:.85}.tl .hash::before{content:"commit ";opacity:.6}
.tl>li.in::before{animation:pulse 1.4s ease-out 1}
@keyframes pulse{0%{box-shadow:0 0 0 0 var(--goldl)}100%{box-shadow:0 0 0 14px transparent}}
.tl .when{font:500 .78rem var(--mono);color:var(--gold)}
.tl h4{font:700 1.1rem/1.5 var(--font);margin:2px 0 0}
.tl .org{color:var(--mfg);font-size:.92rem}
.tl ul{margin:8px 0 0;padding-inline-start:18px;color:var(--mfg);font-size:.92rem}
/* posts */
.post{padding:14px 14px 26px}
.thumb{height:160px;border-radius:22px;margin-bottom:14px;overflow:hidden;background:#0B3B33}
.thumb img{width:100%;height:100%;object-fit:cover}
.art1{background:radial-gradient(circle at 75% 30%,#F9D77E 0 26px,transparent 28px),linear-gradient(160deg,#0B3B33,#17604F)}
.art2{background:radial-gradient(rgba(255,255,255,.4) 1.4px,transparent 1.7px) 0 0/16px 16px,linear-gradient(160deg,#16205A,#0B3B33)}
.art3{background:repeating-linear-gradient(45deg,rgba(242,200,121,.22) 0 2px,transparent 2px 14px),linear-gradient(160deg,#0B3B33,#3A2A6E)}
.post>*:not(.thumb){margin-inline:14px}
.post time{font:400 .8rem var(--mono);color:var(--gold)}
.post h2,.post h3{font:700 1.15rem/1.6 var(--font);margin:4px 14px 8px}
.post a{text-decoration:none}.post p{color:var(--mfg);font-size:.93rem;margin-block:0}
/* contact */
.contact{min-height:clamp(380px,46vh,560px);display:grid;align-content:end;gap:6px;padding:48px;color:#F3FBF6;background:url(assets/img/lake.svg) center 12%/cover no-repeat;border-color:rgba(242,200,121,.4)}
.contact::before{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(3,16,14,.85),rgba(3,16,14,.15) 70%)}
.contact::after{display:none}
.contact>*{position:relative}
.contact h2{font:700 clamp(2rem,5vw,3.2rem)/1.5 var(--serif);margin:0;color:#F2C879}
.contact p{color:#D5E7DC;margin:0 0 6px}
.mail{display:inline-block;width:fit-content;font:700 clamp(1.4rem,5vw,2.8rem) var(--font);direction:ltr;text-decoration:underline;text-decoration-color:#5CE6B0;text-decoration-thickness:3px;text-underline-offset:10px;color:#FFF6DA;word-break:break-all}
.socials{display:flex;gap:12px;flex-wrap:wrap;margin-top:18px}
.contact .btn.ghost{background:rgba(255,255,255,.08);color:#F3FBF6;border-color:rgba(255,255,255,.35)}
/* pages */
.entry{max-width:760px;margin:0 auto;padding:72px 20px 20px}
.entry h1{font:700 clamp(2.2rem,5vw,3.2rem)/1.5 var(--serif);margin:0 0 20px}
.entry .content{font-size:1.05rem}.entry .content a{color:var(--acc)}
.entry img{border-radius:24px}
.entry pre{background:var(--card);padding:18px;overflow-x:auto;direction:ltr;border:1px solid var(--line);border-radius:18px}
.pagination{margin-top:40px}.pagination .page-numbers{display:inline-block;min-width:44px;line-height:42px;text-align:center;border:1px solid var(--line);border-radius:999px;background:var(--card);text-decoration:none;margin-inline-end:6px}
.pagination .current{background:linear-gradient(135deg,#F5D58A,#E3A33B);color:#2A1B02;border-color:transparent}
.site-footer{padding:48px 16px 130px;text-align:center;font-family:var(--mono);direction:ltr;color:var(--mfg);font-size:.9rem}
.reveal{opacity:0;transform:translateY(14px);transition:opacity .5s,transform .5s}.reveal.in{opacity:1;transform:none}
@media (max-width:980px){
 .hero-in{grid-template-columns:1fr;padding:44px var(--gx) 120px;gap:36px}.arch-wrap{width:210px;order:-1;justify-self:center;margin:0}
 .hero{min-height:0}
 .hero::before{background:linear-gradient(to top,rgba(3,16,14,.94) 0%,rgba(3,16,14,.6) 55%,rgba(3,16,14,.25))}
 .s4,.s5,.s6,.s7{grid-column:span 12}.proj.s12{grid-template-columns:1fr}
 .deck{grid-template-columns:repeat(2,1fr)}.sec{padding-top:64px}
 .contact{padding:30px 24px}
}
@media (max-width:760px){.sk-list{grid-template-columns:1fr}}
@media (max-width:560px){.c1{left:-14px}.c2{right:-14px}.c3{left:-18px}.dock a,.dock button{width:42px;height:42px}.dock{gap:2px;padding:6px}.dock svg{width:20px;height:20px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}
