:root {
  --bg: #0a0a0a;
  --bg2: #111111;
  --bg3: #1c1c1c;
  --fg: #f4f4ef;
  --fg2: #888;
  --fg3: #444;
  --accent: #c8ff00;
  --border: #1e1e1e;
  --card-bg: #0f0f0f;
}
[data-theme="light"] {
  --bg: #f4f4ef;
  --bg2: #eaeae4;
  --bg3: #e0e0d8;
  --fg: #0a0a0a;
  --fg2: #555;
  --fg3: #bbb;
  --accent: #7aaa00;
  --border: #d8d8d0;
  --card-bg: #fff;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--bg);color:var(--fg);
  font-family:'Space Grotesk',sans-serif;
  cursor:none;overflow-x:hidden;
  transition:background 0.5s,color 0.5s;
}
a{color:inherit;text-decoration:none;}
::selection{background:var(--accent);color:#000;}

/* CURSOR */
#cursor{position:fixed;top:0;left:0;z-index:9999;pointer-events:none;mix-blend-mode:difference;}
.c-dot{width:8px;height:8px;background:var(--fg);border-radius:50%;position:absolute;transform:translate(-50%,-50%);transition:width .15s,height .15s,background .2s;}
.c-ring{width:40px;height:40px;border:1.5px solid var(--fg);border-radius:50%;position:absolute;transform:translate(-50%,-50%);transition:width .3s,height .3s,opacity .3s;opacity:.5;}
body.cur-hover .c-dot{width:14px;height:14px;background:var(--accent);}
body.cur-hover .c-ring{width:64px;height:64px;opacity:.25;}
[data-theme="light"] .c-dot{background:#fff;}
[data-theme="light"] .c-ring{border-color:#fff;}
[data-theme="light"] body.cur-hover .c-dot{background:#fff;}

/* SCROLLBAR */
::-webkit-scrollbar{width:3px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--fg3);}

/* SCROLL SPY */
#spy{position:fixed;right:28px;top:50%;transform:translateY(-50%);z-index:100;display:flex;flex-direction:column;gap:12px;}
.spy-dot{width:6px;height:6px;border-radius:50%;border:1px solid var(--fg3);transition:all .3s;cursor:none;}
.spy-dot.active{background:var(--accent);border-color:var(--accent);transform:scale(1.5);}

/* NAV */
nav{
  position:fixed;top:0;left:0;right:0;z-index:500;
  display:flex;align-items:center;justify-content:space-between;
  padding:20px 48px;
  transition:background .4s,border-color .3s,backdrop-filter .3s;
  border-bottom:1px solid transparent;
}
nav.scrolled{background:rgba(10,10,10,.85);border-color:var(--border);backdrop-filter:blur(16px);}
[data-theme="light"] nav.scrolled{background:rgba(244,244,239,.85);}
.nav-logo{font-family:'DM Mono',monospace;font-size:14px;font-weight:500;letter-spacing:.12em;}
.nav-logo em{color:var(--accent);font-style:normal;}
.nav-links{display:flex;gap:28px;align-items:center;}
.nav-links a{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--fg2);transition:color .2s;}
.nav-links a:hover,.nav-links a.active{color:var(--accent);}
.theme-btn{background:none;border:1px solid var(--border);color:var(--fg2);padding:7px 16px;font-family:'DM Mono',monospace;font-size:10px;letter-spacing:.1em;cursor:none;transition:all .2s;border-radius:2px;}
.theme-btn:hover{border-color:var(--accent);color:var(--accent);}

/* HERO */
.hero{min-height:100vh;display:grid;grid-template-rows:1fr auto;padding:0 48px 56px;position:relative;overflow:hidden;}
#hero-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;}
.hero-bg-grid{display:none;}
.hero-content{display:flex;flex-direction:column;justify-content:center;padding-top:100px;position:relative;z-index:1;}
.hero-tag{font-family:'DM Mono',monospace;font-size:10px;color:var(--accent);letter-spacing:.22em;text-transform:uppercase;margin-bottom:28px;opacity:0;animation:fadeUp .6s .2s ease forwards;}
.hero-name{font-size:clamp(70px,13vw,200px);font-weight:700;line-height:.88;letter-spacing:-.04em;margin-bottom:0;}
.hero-name .line{display:block;overflow:hidden;}
.hero-name .word{display:inline-block;transform:translateY(110%);animation:slideUp .9s cubic-bezier(.16,1,.3,1) forwards;}
.hero-name .line:nth-child(2) .word{animation-delay:.12s;color:var(--accent);}
.hero-rotating{display:flex;align-items:center;gap:16px;margin-top:32px;opacity:0;animation:fadeUp .6s .6s ease forwards;}
.hero-rotating-label{font-size:clamp(18px,2.5vw,32px);font-weight:300;color:var(--fg2);}
.hero-rotating-word{font-size:clamp(18px,2.5vw,32px);font-weight:700;color:var(--accent);overflow:hidden;height:1.2em;display:inline-block;}
.hero-rotating-inner{display:flex;flex-direction:column;transition:transform .6s cubic-bezier(.16,1,.3,1);}
.hero-rotating-inner span{display:block;line-height:1.2;}
.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;padding-top:40px;border-top:1px solid var(--border);opacity:0;animation:fadeUp .6s .9s ease forwards;position:relative;z-index:1;}
.hero-desc{font-size:14px;color:var(--fg2);max-width:360px;line-height:1.8;}
.hero-stats{display:flex;gap:40px;}
.hero-stat-num{font-size:36px;font-weight:700;letter-spacing:-.03em;line-height:1;}
.hero-stat-num em{color:var(--accent);font-style:normal;}
.hero-stat-label{font-family:'DM Mono',monospace;font-size:9px;color:var(--fg3);letter-spacing:.15em;text-transform:uppercase;margin-top:4px;}
.hero-scroll{position:absolute;bottom:60px;right:52px;writing-mode:vertical-rl;font-family:'DM Mono',monospace;font-size:9px;color:#8e8e8a;letter-spacing:.2em;display:flex;align-items:center;gap:10px;opacity:0;animation:fadeUp .6s 1.2s ease forwards;}
.hero-scroll::after{content:'';width:1px;height:50px;background:#8e8e8a;}
[data-theme="dark"] .hero-scroll{
  right:max(10px, env(safe-area-inset-right));
  bottom:max(210px, calc(120px + env(safe-area-inset-bottom)));
  z-index:3;
  color:#989892;
  text-shadow:0 1px 0 rgba(0,0,0,.45);
}
[data-theme="dark"] .hero-scroll::after{background:#989892;}
[data-theme="dark"] .hero-bottom{padding-right:80px;}
[data-theme="light"] .hero-scroll{bottom:132px;right:24px;z-index:2;color:#6d6d67;}
[data-theme="light"] .hero-scroll::after{background:#6d6d67;}

/* TICKER */
.ticker{overflow:hidden;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:14px 0;background:var(--bg2);}
.ticker-track{display:flex;gap:0;white-space:nowrap;animation:tickerScroll 25s linear infinite;}
.ticker-item{font-family:'DM Mono',monospace;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--fg3);padding:0 32px;}
.ticker-item em{color:var(--accent);font-style:normal;margin-right:32px;}
.ticker:hover .ticker-track{animation-play-state:paused;}
[data-theme="dark"] .ticker{
  background:#0d0d0d;
  border-top-color:#1f1f1d;
  border-bottom-color:#1f1f1d;
}
[data-theme="dark"] .ticker-item{
  color:#8f8f89;
  font-weight:500;
  text-shadow:0 0 1px rgba(255,255,255,.08);
}

/* SECTIONS */
section{padding:120px 48px;border-top:1px solid var(--border);}
.sec-header{display:flex;align-items:baseline;gap:16px;margin-bottom:72px;}
.sec-num{font-family:'DM Mono',monospace;font-size:10px;color:var(--accent);letter-spacing:.18em;}
.sec-title{font-size:clamp(40px,5.5vw,80px);font-weight:700;line-height:.95;letter-spacing:-.03em;}
.sec-line{flex:1;height:1px;background:var(--border);margin-left:20px;align-self:center;}

/* ABOUT */
.about-grid{display:grid;grid-template-columns:minmax(320px,0.92fr) minmax(420px,1.08fr);gap:64px;align-items:center;}
.about-photo-wrap{position:relative;max-width:520px;width:100%;justify-self:center;}
.about-photo{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:top;display:block;filter:grayscale(20%);}
.about-photo-frame{position:absolute;inset:-10px;border:1px solid var(--border);pointer-events:none;z-index:-1;}
.about-photo-accent{position:absolute;bottom:-16px;left:-16px;width:80px;height:80px;background:var(--accent);z-index:-2;}
.about-text{display:flex;flex-direction:column;justify-content:center;gap:0;max-width:760px;}
.about-text p{font-size:clamp(16px,1.05vw,18px);line-height:1.82;color:var(--fg2);margin-bottom:16px;}
.about-text p strong{color:var(--fg);font-weight:600;}
.about-stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);margin-top:40px;}
.about-stat{background:var(--bg);padding:20px 24px;}
.about-stat-n{font-size:42px;font-weight:700;letter-spacing:-.03em;color:var(--accent);line-height:1;}
.about-stat-l{font-family:'DM Mono',monospace;font-size:9px;color:var(--fg3);letter-spacing:.15em;text-transform:uppercase;margin-top:6px;}

/* SKILLS */
.skills-wrap{margin-top:48px;}
.skills-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.skill-pill{font-family:'DM Mono',monospace;font-size:10px;color:var(--fg2);border:1px solid var(--border);padding:6px 14px;letter-spacing:.08em;transition:all .2s;}
.skill-pill:hover{border-color:var(--accent);color:var(--accent);}
.skills-cat{font-family:'DM Mono',monospace;font-size:9px;color:var(--accent);letter-spacing:.18em;text-transform:uppercase;margin-top:24px;}

/* PROJECTS */
.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);}
.project-card{background:var(--card-bg);padding:32px 28px;position:relative;overflow:hidden;cursor:none;min-height:280px;display:flex;flex-direction:column;justify-content:space-between;transition:background .25s;}
.project-card:hover{background:var(--bg3);}
.project-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--accent);transform:scaleY(0);transform-origin:bottom;transition:transform .35s cubic-bezier(.16,1,.3,1);}
.project-card:hover::before{transform:scaleY(1);}
.project-num{font-family:'DM Mono',monospace;font-size:10px;color:var(--fg3);letter-spacing:.15em;transition:color .2s;}
.project-card:hover .project-num{color:var(--accent);}
.project-title{font-size:20px;font-weight:600;line-height:1.2;margin:16px 0 10px;letter-spacing:-.01em;}
.project-desc{font-size:13px;color:var(--fg2);line-height:1.65;flex:1;margin-bottom:20px;}
.project-tags{display:flex;gap:6px;flex-wrap:wrap;}
.project-tag{font-family:'DM Mono',monospace;font-size:9px;color:var(--fg3);border:1px solid var(--border);padding:4px 8px;text-transform:uppercase;letter-spacing:.08em;transition:all .2s;}
.project-card:hover .project-tag{border-color:var(--fg3);color:var(--fg2);}
.project-arrow{position:absolute;top:28px;right:28px;font-size:20px;color:var(--accent);opacity:0;transform:translate(6px,-6px);transition:opacity .25s,transform .25s;}
.project-card:hover .project-arrow{opacity:1;transform:translate(0,0);}

/* DESIGN */
.design-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);}
.design-card{position:relative;overflow:hidden;cursor:none;background:var(--bg2);}
.design-card:nth-child(1){grid-column:span 2;}
.design-card:nth-child(5){grid-column:span 2;}
.design-card:nth-child(1) .design-inner,
.design-card:nth-child(5) .design-inner{aspect-ratio:2/1;}
.design-inner{aspect-ratio:1;position:relative;}
.design-ph{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:repeating-linear-gradient(45deg,var(--bg2) 0,var(--bg2) 10px,var(--bg3) 10px,var(--bg3) 11px);}
.design-ph-label{font-family:'DM Mono',monospace;font-size:9px;color:var(--fg3);letter-spacing:.2em;text-align:center;padding:0 16px;}
.design-overlay{position:absolute;inset:0;background:linear-gradient(to top,var(--bg) 0%,transparent 60%);opacity:0;display:flex;flex-direction:column;justify-content:flex-end;padding:20px;transition:opacity .35s;}
.design-card:hover .design-overlay{opacity:1;}
.design-ov-cat{font-family:'DM Mono',monospace;font-size:9px;color:var(--accent);letter-spacing:.2em;text-transform:uppercase;margin-bottom:4px;}
.design-ov-title{font-size:15px;font-weight:600;}
[data-theme="light"] .design-overlay{background:linear-gradient(to top,rgba(0,0,0,.72) 0%,rgba(0,0,0,.35) 35%,transparent 68%);}
[data-theme="light"] .design-ov-title{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.45);}
[data-theme="light"] .design-ov-cat{text-shadow:0 1px 2px rgba(0,0,0,.45);}

/* LIGHTBOX */
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .3s;}
.lightbox.open{opacity:1;pointer-events:all;}
.lightbox-img{max-width:90vw;max-height:85vh;object-fit:contain;}
.lightbox-close{position:absolute;top:24px;right:32px;font-size:28px;color:var(--fg2);cursor:none;transition:color .2s;}
.lightbox-close:hover{color:var(--accent);}
.lightbox-info{position:absolute;bottom:32px;left:48px;}
.lightbox-info-cat{font-family:'DM Mono',monospace;font-size:10px;color:var(--accent);letter-spacing:.18em;margin-bottom:6px;}
.lightbox-info-title{font-size:22px;font-weight:600;}

/* CONTACT */
.contact-section{border-top:1px solid var(--border);padding:120px 48px;}
.contact-big{font-size:clamp(40px,7vw,110px);font-weight:700;letter-spacing:-.04em;line-height:.9;margin-bottom:80px;}
.contact-big em{color:var(--accent);font-style:normal;}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);}
.contact-link{background:var(--card-bg);display:flex;align-items:center;justify-content:space-between;padding:28px 32px;transition:background .2s;cursor:none;}
.contact-link:hover{background:var(--bg3);}
.contact-link:hover .cl-arrow{transform:translate(0,0);opacity:1;}
.cl-left{display:flex;align-items:center;gap:20px;}
.cl-label{font-family:'DM Mono',monospace;font-size:10px;color:var(--accent);letter-spacing:.18em;text-transform:uppercase;width:90px;}
.cl-val{font-size:15px;color:var(--fg2);}
.cl-arrow{font-size:20px;color:var(--accent);transform:translate(6px,-6px);opacity:0;transition:all .25s;}

/* FOOTER */
footer{border-top:1px solid var(--border);padding:24px 48px;display:flex;align-items:center;justify-content:space-between;font-family:'DM Mono',monospace;font-size:10px;color:var(--fg3);letter-spacing:.1em;}

/* REVEAL */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .7s ease,transform .7s cubic-bezier(.16,1,.3,1);}
.reveal.visible{opacity:1;transform:translateY(0);}
.rd1{transition-delay:.07s;} .rd2{transition-delay:.14s;} .rd3{transition-delay:.21s;} .rd4{transition-delay:.28s;}

/* KEYFRAMES */
@keyframes fadeUp{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:translateY(0);}}
@keyframes slideUp{from{transform:translateY(110%);}to{transform:translateY(0);}}
@keyframes tickerScroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}

@media(max-width:960px){
  nav{padding:16px 24px;} .nav-links a{display:none;} .theme-btn{display:block;}
  .hero{padding:0 24px 48px;}
  section,.contact-section{padding:80px 24px;}
  .about-grid{grid-template-columns:1fr;gap:48px;}
  .about-photo{aspect-ratio:4/3;}
  .projects-grid{grid-template-columns:1fr 1fr;}
  .design-grid{grid-template-columns:1fr 1fr;}
  .design-card:nth-child(1),.design-card:nth-child(5){grid-column:span 2;}
  .contact-grid{grid-template-columns:1fr;}
  #spy{display:none;}
  .hero-scroll{display:none;}
  footer{padding:20px 24px;}
}
@media(max-width:580px){
  .projects-grid{grid-template-columns:1fr;}
  .contact-big{font-size:clamp(32px,10vw,60px);}
}
