@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--bg:#080d17;--surface:#111a29;--stroke:#243249;--text:#f0f5ff;--muted:#9eaec5;--blue:#5597ff;--font:'DM Sans',Arial,sans-serif;--display:'Space Grotesk',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.55;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}a:focus-visible,button:focus-visible{outline:2px solid #a4c8ff;outline-offset:5px}.shell{width:min(1152px,calc(100% - 52px));margin-inline:auto}.ambient{position:absolute;pointer-events:none;z-index:-1;border-radius:100%;filter:blur(75px);opacity:.4}.ambient-one{width:520px;height:490px;background:#123869;top:90px;right:-240px}.ambient-two{width:370px;height:300px;background:#153055;top:600px;left:-250px}.site-header{position:sticky;top:0;z-index:30;background:rgba(8,13,23,.83);backdrop-filter:blur(18px);border-bottom:1px solid rgba(141,177,233,.08)}.header-inner{height:84px;display:flex;align-items:center;justify-content:space-between}.wordmark,.footer-brand{font:700 25px var(--display);letter-spacing:-1.7px}.wordmark span,.footer-brand span,.about-marker span,.blue-dot{color:var(--blue)}.nav{display:flex;align-items:center;gap:35px}.nav>a{font-size:13px;color:#bac7d9;transition:color .2s}.nav>a:hover{color:white}.language-switch{display:flex;background:#172237;border:1px solid #2c3d56;border-radius:10px;padding:3px;margin-left:8px}.lang-button{border:0;background:transparent;color:#93a4be;padding:6px 10px;border-radius:7px;cursor:pointer;font-weight:700;font-size:11px}.lang-button.active{background:#365e9d;color:white}.menu-toggle{display:none}.hero{min-height:660px;display:grid;grid-template-columns:1.2fr 1fr;align-items:center;position:relative;gap:20px;padding-bottom:70px}.hero-copy{z-index:1;padding-top:16px}.eyebrow{font-size:11px;letter-spacing:2.6px;color:#83b3ff;font-weight:700;display:flex;align-items:center;gap:13px;margin:0 0 22px}.eyebrow-line{display:inline-block;width:25px;height:1px;background:var(--blue)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:var(--display)}h1{font-size:clamp(52px,5.8vw,84px);line-height:1.06;letter-spacing:-4.9px;margin-bottom:24px}h1 em,h2 em{font-style:normal;color:var(--blue)}.hero-description{font-size:16px;line-height:1.9;color:var(--muted);max-width:500px;margin-bottom:31px}.hero-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.button{border:0;display:inline-flex;align-items:center;justify-content:center;gap:23px;min-height:49px;padding:0 20px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:700;transition:transform .2s,background .2s}.button:hover{transform:translateY(-3px)}.button-primary{background:var(--blue);color:#061323}.button-primary:hover{background:#7eb0ff}.button-text{color:#d8e4f6;padding-inline:5px}.button-text span:last-child{color:var(--blue)}.hero-art{height:455px;position:relative;display:grid;place-items:center;isolation:isolate}.hero-art:before{content:"";position:absolute;width:75%;height:75%;border-radius:50%;background:#2a5eaa;opacity:.25;filter:blur(75px);z-index:-1}.hero-art-grid{position:absolute;inset:25px;background-image:linear-gradient(#547aa51b 1px,transparent 1px),linear-gradient(90deg,#547aa51b 1px,transparent 1px);background-size:34px 34px;mask-image:radial-gradient(ellipse,black,transparent 70%)}.orbit{position:absolute;border:1px solid #29466e;border-radius:50%;transform:rotate(-25deg)}.orbit-one{width:385px;height:275px}.orbit-two{width:295px;height:380px;transform:rotate(38deg);border-color:#29507b}.art-core{position:relative;width:195px;height:195px;border-radius:28%;background:linear-gradient(145deg,#193453,#0a1425 75%);border:1px solid #5275a5;box-shadow:0 0 70px #3581e329, inset 0 0 65px #398cf51c;transform:rotate(-14deg);display:grid;place-items:center}.art-core>span:first-child{font:700 130px var(--display);letter-spacing:-12px;color:#eaf3ff;transform:rotate(14deg);text-shadow:0 0 35px #5190ef80}.core-dot{position:absolute;width:14px;height:14px;border-radius:50%;background:var(--blue);right:27px;bottom:29px;box-shadow:0 0 20px var(--blue)}.art-label{position:absolute;font:600 10px var(--display);letter-spacing:2.2px;color:#89a8d2}.art-label-top{top:69px;right:30px}.art-label-bottom{bottom:45px;left:25px}.art-spark{width:5px;height:5px;position:absolute;border-radius:50%;background:#7cb4ff;box-shadow:0 0 16px #78afff}.art-spark-a{top:80px;left:72px}.art-spark-b{bottom:95px;right:56px}.scroll-cue{position:absolute;bottom:42px;left:0;color:#72839c;font-size:10px;font-weight:700;letter-spacing:2px;display:flex;align-items:center;gap:12px}.scroll-cue span{width:28px;height:1px;background:#72839c}.projects-section{padding:95px 0 115px;background:linear-gradient(180deg,#0d1522,#0a111c 80%,#080d17)}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:37px;gap:25px}.section-heading .eyebrow{margin-bottom:15px}h2{font-size:clamp(34px,4vw,50px);letter-spacing:-2.5px;line-height:1.13;margin-bottom:0}.section-side{color:#8fa2be;text-align:right;font-size:13px;line-height:1.8;margin-bottom:5px}.projects-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:19px}.project-card{grid-column:span 3;min-width:0;border:1px solid #24334a;background:#121d2d;border-radius:15px;overflow:hidden;display:block;transition:transform .25s,border-color .25s,box-shadow .25s}.project-card:hover{transform:translateY(-5px);border-color:#4b7bb4;box-shadow:0 18px 50px #0005}.project-card.shooting{grid-column:span 6;display:grid;grid-template-columns:1fr 1fr}.project-card.shooting .card-visual{height:220px}.card-visual{height:215px;overflow:hidden;position:relative;display:grid;place-items:center}.motorsport .card-visual{background:radial-gradient(ellipse at 65% 95%,#1d4265 0%,transparent 65%),linear-gradient(130deg,#101c2c,#162c40)}.track-line{position:absolute;width:150%;height:100px;left:-25%;bottom:-73px;transform:rotate(-9deg);border-top:1px solid #6486a75c;background:repeating-linear-gradient(90deg,#8499b116 0px,#8499b116 2px,transparent 2px,transparent 65px)}.car-illustration{width:75%;max-width:400px;filter:drop-shadow(0 10px 13px #000a);transform:translateY(6px);transition:transform .3s}.project-card:hover .car-illustration{transform:translate(8px,2px)}.security .card-visual{background:radial-gradient(circle,#18465a 0%,#0e2336 65%,#0b1d30)}.cyber-visual{height:145px;width:210px;position:relative;border:1px solid #367b9588;background:linear-gradient(140deg,#1b4f6380,#0c2435);box-shadow:0 0 60px #11b6ca19;display:grid;place-items:center;border-radius:8px}.cyber-icon{font:700 47px var(--display);color:#80deea}.cyber-text{position:absolute;bottom:15px;font:9px monospace;letter-spacing:1px;color:#63a6b2}.scan-line{position:absolute;top:0;left:0;height:2px;width:100%;background:#4bdeee;opacity:.6;box-shadow:0 0 18px #4bdeee}.gaming .card-visual{background:radial-gradient(circle at center,#30345c,#171b39 63%,#12162b)}.gaming-visual{position:relative;display:grid;place-items:center;height:100%;width:100%}.racing-ring{border-radius:50%;height:155px;width:155px;border:13px solid #6d70bd;box-shadow:0 0 30px #7a7ffc55,inset 0 0 30px #7a7ffc44;display:grid;place-items:center;transform:rotate(-25deg)}.ring-center{font:700 65px var(--display);color:#b1b5f7}.racing-lines{position:absolute;width:65%;height:2px;background:#777cdc;transform:rotate(-26deg);opacity:.4}.gaming-top{position:absolute;bottom:13px;right:20px;font:10px var(--display);letter-spacing:3px;color:#969ae1}.development .card-visual{background:radial-gradient(circle at 50% 95%,#305064,#152436 64%,#0d1b2e)}.dev-window{width:220px;height:139px;border:1px solid #456f85;border-radius:10px;background:#101e2e;box-shadow:0 13px 35px #0008;transform:rotate(-5deg);position:relative;padding:13px}.window-dots{font-size:9px;color:#7f9fb5;letter-spacing:4px}.dev-code{margin-top:16px;display:grid;gap:9px}.dev-code i{display:block;height:5px;border-radius:6px;background:linear-gradient(90deg,#73c2d8 30%,#48677c 30%,#48677c 75%,transparent 75%)}.dev-code i:nth-child(2){width:70%;margin-left:20px}.dev-code i:nth-child(3){width:84%}.dev-code i:nth-child(4){width:49%;margin-left:20px}.dev-cursor{position:absolute;right:20px;bottom:10px;color:#70c8db}.shooting .card-visual{background:radial-gradient(circle,#384454,#1b2836 65%,#121b27)}.target-visual{position:relative}.target-ring{width:180px;height:180px;border:2px solid #9aa9b766;border-radius:50%;display:grid;place-items:center}.target-ring.two{width:122px;height:122px}.target-ring.three{width:61px;height:61px;border-color:#c8a56f}.target-center{height:12px;width:12px;border-radius:50%;background:#d7ac72;box-shadow:0 0 15px #d7ac72}.target-hair{position:absolute;background:#d1bb9599}.target-hair.horizontal{height:1px;width:260px;left:50%;top:50%;transform:translate(-50%,-50%)}.target-hair.vertical{width:1px;height:210px;top:50%;left:50%;transform:translate(-50%,-50%)}.card-body{padding:24px 26px 25px}.card-topline{display:flex;justify-content:space-between;align-items:center;color:#7a9bc8;margin-bottom:17px}.card-index{font-size:10px;letter-spacing:1.8px;font-weight:700}.card-arrow{font-size:20px;color:#75a8ee;line-height:1}.card-body h3{font-size:26px;letter-spacing:-.9px;margin-bottom:6px}.card-body p{font-size:13px;color:#a9b9ce;line-height:1.6;margin-bottom:17px}.coming-soon{display:inline-block;border:1px solid #3a4960;color:#899bb3;font-size:10px;font-weight:700;letter-spacing:.8px;padding:5px 10px;border-radius:5px;text-transform:uppercase}.shooting .card-body{align-self:center}.about-section{padding-block:140px;display:grid;grid-template-columns:1fr 1.1fr;gap:100px;align-items:center}.about-marker{width:260px;height:260px;border:1px solid #2b4766;border-radius:24px;display:grid;place-items:center;font:700 162px var(--display);letter-spacing:-25px;color:#dceaff;transform:rotate(-7deg);background:linear-gradient(145deg,#1a2c44,#0a1422);box-shadow:0 20px 75px #0004;justify-self:center}.about-marker span{position:absolute;font-size:110px;bottom:-10px;right:29px}.about-copy h2{margin-bottom:25px}.about-copy>p:last-child{color:#a8b8cd;line-height:1.95;font-size:15px;max-width:510px}.contact-section{padding:75px 0 90px;background:#0d1624;border-top:1px solid #1e2c41}.contact-inner{display:flex;align-items:end;justify-content:space-between;gap:30px}.contact-inner h2{margin-bottom:20px}.contact-inner p:last-child{max-width:490px;color:#a8b8cd;font-size:14px}.button-outline{border:1px solid #3d5c86;background:transparent;color:#dbe8fa;white-space:nowrap}.button-outline:hover{background:#192a43}.site-footer{border-top:1px solid #1e2c41;padding:30px 0}.footer-inner{display:flex;align-items:center;gap:30px;justify-content:space-between}.footer-brand{font-size:18px}.footer-inner>span{color:#8496ad;font-size:11px}.project-dialog{width:min(440px,calc(100% - 36px));background:#121e30;color:white;border:1px solid #42638b;border-radius:16px;padding:35px;box-shadow:0 30px 90px #000a}.project-dialog::backdrop{background:#000a;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:18px;top:10px;color:#c5d4e8;background:transparent;border:none;font-size:27px;cursor:pointer}.dialog-eyebrow{color:#7cafff;font-weight:700;letter-spacing:2px;font-size:10px}.project-dialog h2{font-size:32px;margin:14px 0}.project-dialog p{color:#afbed2;font-size:14px}.dialog-url{font-family:monospace;color:#83b4ff!important;margin-bottom:25px;overflow-wrap:anywhere}.dialog-button{width:100%}
@media(max-width:900px){.hero{min-height:590px;grid-template-columns:1.2fr .8fr}.hero-art{transform:scale(.78);margin-inline:-65px}.projects-grid{gap:14px}.card-body{padding:21px}.card-body h3{font-size:23px}.about-section{gap:50px}}@media(max-width:680px){.shell{width:calc(100% - 36px)}.header-inner{height:70px}.menu-toggle{display:flex;background:transparent;border:0;flex-direction:column;gap:5px;padding:11px;cursor:pointer}.menu-toggle span{width:23px;height:2px;background:#dde9ff}.nav{display:none;position:absolute;left:0;right:0;top:70px;padding:20px;background:#0b1422;border-bottom:1px solid #30435d;flex-direction:column;align-items:stretch;gap:20px}.nav.open{display:flex}.nav>a{font-size:15px}.language-switch{align-self:start;margin:0}.hero{display:flex;flex-direction:column;align-items:stretch;gap:0;min-height:720px;padding-top:88px;padding-bottom:55px}.hero-copy{padding:0}.hero h1{font-size:clamp(47px,10vw,65px);letter-spacing:-3px}.hero-description{font-size:14px}.hero-art{height:310px;transform:scale(.7);margin:-8px -80px -25px}.scroll-cue{bottom:20px}.projects-section{padding:75px 0}.section-heading{display:block}.section-side{text-align:left;margin-top:18px}.projects-grid{display:grid;grid-template-columns:1fr}.project-card,.project-card.shooting{grid-column:auto;display:block}.project-card.shooting .card-visual{height:210px}.card-visual{height:200px}.about-section{padding-block:100px;grid-template-columns:1fr;gap:65px}.about-marker{width:190px;height:190px;font-size:120px}.about-marker span{font-size:85px;right:24px}.contact-inner{align-items:start;flex-direction:column}.footer-inner{gap:14px;flex-wrap:wrap}.footer-inner>span:last-child{width:100%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* V0.2: original photography for Shooting Sports only; Motorsport remains strictly motorsport. */
.shooting .card-visual.shooting-photo{background:#172233;isolation:isolate}
.shooting-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;filter:brightness(.78) saturate(.87);transition:transform .45s ease,filter .45s ease}
.project-card.shooting:hover .shooting-photo>img{transform:scale(1.04);filter:brightness(.9) saturate(.97)}
.shooting-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 50%,#101a2770);pointer-events:none}
.shooting-photo .target-visual,.shooting-photo .target-hair{display:none}


/* V0.3: original motorsport photography on the homepage */
.motorsport .card-visual.motorsport-photo{background:#101826;isolation:isolate}
.motorsport-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 58%;filter:brightness(.64) saturate(.94);transition:transform .45s ease,filter .45s ease}
.project-card.motorsport:hover .motorsport-photo>img{transform:scale(1.045);filter:brightness(.76) saturate(1)}
.motorsport-photo:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#08111b25 0%,#08111b72 100%),linear-gradient(90deg,#0d152210 0%,#0d152200 48%,#0d1522aa 100%);pointer-events:none}
.photo-badge{position:absolute;left:16px;top:16px;padding:8px 10px;border:1px solid #86b3eb55;border-radius:999px;background:#091320b0;backdrop-filter:blur(6px);color:#dbe9fc;font:700 10px var(--display);letter-spacing:1.8px;z-index:1}


/* V0.4: Security card uses the user's real Nmap scan as a stylized terminal preview */
.security .card-visual.security-terminal{background:radial-gradient(circle at 50% 20%,#12303d,#0e1b2b 64%,#0b1522);padding:18px}
.terminal-shell{width:100%;height:100%;border:1px solid #2e5161;border-radius:14px;background:linear-gradient(180deg,#0d1724,#09111a);box-shadow:0 18px 55px #0009,0 0 0 1px #0f2c3a inset;overflow:hidden;display:flex;flex-direction:column}
.terminal-top{display:flex;align-items:center;gap:7px;padding:10px 12px;border-bottom:1px solid #173140;background:linear-gradient(180deg,#122131,#0c1824)}
.terminal-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.terminal-dot.red{background:#ee6c73}.terminal-dot.yellow{background:#f1c36d}.terminal-dot.green{background:#6ed38f}.terminal-title{margin-left:6px;color:#8ca6ba;font:600 11px var(--display);letter-spacing:1px}
.terminal-body{padding:12px 14px 14px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;color:#d5e8f2;display:flex;flex-direction:column;gap:4px}
.terminal-prompt{color:#cde2ec;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.prompt-user{color:#61d3ff}.prompt-path{color:#8ec4d6}.prompt-command{color:#f2f7fb}
.terminal-line{display:grid;grid-template-columns:68px 50px 58px 1fr;gap:8px;align-items:baseline}.terminal-line.head{margin-top:2px;color:#8bbbc7;font-weight:700}.terminal-line b{color:#72ecd2;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terminal-line.muted{display:block;color:#95b2c0}.terminal-line .accent{color:#72ecd2}.terminal-spacer{height:3px}.terminal-footer{margin-top:auto;padding-top:5px;color:#7da0ad;font-size:11px}
@media(max-width:680px){.security .card-visual.security-terminal{padding:12px}.terminal-body{font-size:11px}.terminal-line{grid-template-columns:58px 42px 50px 1fr;gap:6px}}


/* V0.5: more authentic project cards using the user's own screenshots */
.screenshot-photo{background:#131d2b;isolation:isolate}
.screenshot-photo>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .45s ease,filter .45s ease}
.project-card:hover .screenshot-photo>img{transform:scale(1.04)}
.screenshot-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0a142412 0%,#0a14245c 100%),linear-gradient(90deg,#0a142230 0%,#0a142200 42%,#0a142280 100%);pointer-events:none}
.photo-badge-security{border-color:#59c6ff55;background:#071723b8;color:#d5f4ff}
.photo-badge-gaming{border-color:#9a9bff55;background:#121127b8;color:#e2e2ff}
.photo-badge-dev{border-color:#76e8c255;background:#0a1b1ab8;color:#ddfff6}
.security-photo>img{object-position:center 30%;filter:brightness(.82) saturate(.97)}
.project-card.security:hover .security-photo>img{filter:brightness(.92) saturate(1.02)}
.gaming-photo>img{object-position:center 38%;filter:brightness(.79) saturate(1)}
.project-card.gaming:hover .gaming-photo>img{filter:brightness(.89) saturate(1.05)}
.dev-photo>img{object-position:center 42%;filter:brightness(.77) saturate(.94)}
.project-card.development:hover .dev-photo>img{filter:brightness(.87) saturate(1)}

/* v0.6: no overlay labels on project photos; consistent clean card presentation. */
