/* ============ HYPERFRAME // Shiva Prasad — shared portfolio theme ============ */
:root{
  --bg:#04050e;
  --panel:rgba(10,14,32,.55);
  --line:#1b2447;
  --cyan:#00f0ff;
  --purple:#a855f7;
  --magenta:#ff2fd6;
  --text:#e8ecff;
  --dim:#8b93b8;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--text);
  font-family:Inter,system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  overflow-x:hidden;min-height:100vh;
}
/* CRT scanlines + vignette overlays */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:998;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.012) 0 1px,transparent 1px 3px);
  mix-blend-mode:overlay;
}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:999;
  background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.55) 100%);
}
/* canvas bg */
#bg3d{position:fixed;inset:0;z-index:0;display:block}
main,.wrap{position:relative;z-index:1}
a{color:var(--cyan);text-decoration:none}
.mono{font-family:var(--mono)}

/* ===== hyper-frame panels (corner brackets) ===== */
.frame{
  position:relative;background:var(--panel);
  border:1px solid var(--line);
  backdrop-filter:blur(6px);
  clip-path:polygon(0 14px,14px 14px,14px 0,calc(100% - 14px) 0,calc(100% - 14px) 14px,100% 14px,100% calc(100% - 14px),calc(100% - 14px) calc(100% - 14px),calc(100% - 14px) 100%,14px 100%,14px calc(100% - 14px),0 calc(100% - 14px));
}
.frame::before,.frame::after{content:"";position:absolute;width:34px;height:2px;background:linear-gradient(90deg,var(--cyan),transparent)}
.frame::before{top:-1px;left:12px}
.frame::after{bottom:-1px;right:12px;background:linear-gradient(270deg,var(--magenta),transparent)}
.frame .tag{
  position:absolute;top:-10px;left:18px;background:var(--bg);color:var(--cyan);
  font-family:var(--mono);font-size:11px;letter-spacing:2px;padding:0 8px;text-transform:uppercase;
}

/* ===== glitch hero ===== */
.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:0 6vw;position:relative}
.hud{position:absolute;top:22px;left:6vw;right:6vw;display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;color:var(--dim);letter-spacing:2px}
.kicker{font-family:var(--mono);color:var(--cyan);letter-spacing:4px;font-size:13px;margin-bottom:18px;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.kicker::before{content:"";width:44px;height:1px;background:var(--cyan);box-shadow:0 0 8px var(--cyan)}
h1.name{
  font-size:clamp(2.6rem,8vw,6.2rem);line-height:.95;font-weight:800;letter-spacing:-2px;
  text-transform:uppercase;position:relative;
}
h1.name .grad{background:linear-gradient(90deg,var(--cyan),var(--purple),var(--magenta));-webkit-background-clip:text;background-clip:text;color:transparent}
.sub{font-family:var(--mono);color:var(--dim);margin-top:20px;font-size:clamp(.9rem,2vw,1.15rem);max-width:720px}
.cta{margin-top:34px;display:flex;gap:16px;flex-wrap:wrap}
.btn{
  font-family:var(--mono);letter-spacing:1px;text-transform:uppercase;font-size:13px;
  padding:13px 26px;border:1px solid var(--cyan);color:var(--cyan);position:relative;
  transition:.25s;cursor:pointer;background:rgba(0,240,255,.05);
}
.btn:hover{background:var(--cyan);color:#02121a;box-shadow:0 0 24px rgba(0,240,255,.5);transform:translateY(-2px)}
.btn.alt{border-color:var(--magenta);color:var(--magenta);background:rgba(255,47,214,.05)}
.btn.alt:hover{background:var(--magenta);color:#1a0213;box-shadow:0 0 24px rgba(255,47,214,.45)}
.scroll-hint{position:absolute;bottom:26px;left:6vw;font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:3px;animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}

/* ===== sections ===== */
section{padding:70px 6vw;max-width:1500px;margin:0 auto}
.sec-head{display:flex;align-items:baseline;gap:18px;margin-bottom:34px}
.sec-head .idx{font-family:var(--mono);color:var(--magenta);font-size:14px}
.sec-head h2{font-size:clamp(1.4rem,3.4vw,2.2rem);text-transform:uppercase;letter-spacing:2px}
.sec-head .ln{flex:1;height:1px;background:linear-gradient(90deg,var(--line),transparent)}

/* skills grid */
.skills{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.skill{font-family:var(--mono);font-size:13px;padding:16px 14px;color:var(--text);position:relative;overflow:hidden}
.skill .num{position:absolute;right:10px;bottom:4px;font-size:10px;color:var(--dim)}
.skill:hover{border-color:var(--cyan);box-shadow:0 0 18px rgba(0,240,255,.15)}
.skill::after{content:"";position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--cyan);transition:.3s}
.skill:hover::after{width:100%}

/* project grid */
.projects{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.card{padding:26px 24px 22px;transition:.25s;display:flex;flex-direction:column;min-height:250px}
.card:hover{transform:translateY(-6px);border-color:var(--purple);box-shadow:0 10px 40px rgba(168,85,247,.15)}
.card .pnum{font-family:var(--mono);font-size:11px;color:var(--dim);letter-spacing:2px}
.card h3{font-size:1.2rem;margin:10px 0 8px;text-transform:uppercase;letter-spacing:1px}
.card p{font-size:.92rem;color:var(--dim);line-height:1.55;flex:1}
.card .tech{font-family:var(--mono);font-size:11px;color:var(--cyan);margin:12px 0 4px;line-height:1.7}
.card .go{margin-top:8px;font-family:var(--mono);font-size:12px;letter-spacing:1px}
.card .go::after{content:"\2192";margin-left:8px;color:var(--magenta)}

/* contact */
.contact-links{display:flex;flex-wrap:wrap;gap:14px}
.contact-links .btn{min-width:190px;text-align:center}
footer{padding:34px 6vw;font-family:var(--mono);font-size:12px;color:var(--dim);border-top:1px solid var(--line);display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;max-width:1500px;margin:0 auto}
.small{font-size:.8rem;color:var(--dim)}

/* project detail pages */
.pbody{max-width:1000px;margin:0 auto;padding:0 6vw 90px;position:relative;z-index:1}
.phead{padding:120px 0 10px;position:relative;z-index:1}
.phead .crumb{font-family:var(--mono);font-size:12px;color:var(--dim);margin-bottom:16px}
.phead h1{font-size:clamp(1.9rem,5vw,3.4rem);text-transform:uppercase;letter-spacing:1px}
.phead h1 .grad{background:linear-gradient(90deg,var(--cyan),var(--magenta));-webkit-background-clip:text;background-clip:text;color:transparent}
.pmeta{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.chip{font-family:var(--mono);font-size:11px;border:1px solid var(--line);padding:5px 10px;color:var(--dim);letter-spacing:1px}
.chip.hot{border-color:var(--cyan);color:var(--cyan)}
.pblock{margin-top:26px;padding:24px;line-height:1.7;color:#c7cde8}
.pblock h2{font-family:var(--mono);font-size:14px;color:var(--cyan);letter-spacing:2px;margin-bottom:12px;text-transform:uppercase}
.pblock ul{margin:10px 0 0 20px}
.pblock li{margin:6px 0}
.pblock .links{margin-top:18px;display:flex;flex-wrap:wrap;gap:12px}
.navbar{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;justify-content:space-between;align-items:center;padding:18px 4vw;font-family:var(--mono);font-size:13px;background:linear-gradient(180deg,rgba(4,5,14,.9),transparent)}
.navbar .brand{color:var(--cyan);letter-spacing:3px}
@media(max-width:640px){.hero{padding:0 8vw}h1.name{font-size:2.6rem}}
