:root{--gray-900:#111;--gray-800:#1f1f1f;--gray-700:#2e2e2e;--gray-500:#6b7280;--gray-400:#9ca3af;--gray-300:#d1d5db;--main-colour:#11b965;--main-colour-bright:#33ec8f;--surface:#111111eb;--soft-border:#0c8f4d;--black:#000;--black-900:#0b0b0b;--black-950:#101010;--gray-850:#181818;--gray-700-85:#2e2e2ed9;--white:whitesmoke;--off-white:lightgray;--transparent:transparent;--overlay-black-72:#000000b8;--overlay-black-88:#000000e0;--shadow-black-20:#0003;--shadow-black-24:#0000003d;--shadow-black-28:#00000047;--shadow-black-38:#00000061;--accent-shadow-35:#00e67859;--accent-shadow-50:#00e67880;--accent-shadow-70:#00e678b3;--accent-wash-09:#00e67817;--accent-wash-10:#00e6781a;--accent-border-30:#00e6784d;--white-shadow-65:#ffffffa6}body{background-color:var(--gray-900);background-image:radial-gradient(var(--gray-700-85) 1px, var(--transparent) 1px), linear-gradient(135deg, var(--black-950) 0%, var(--gray-850) 55%, var(--black-900) 100%);text-align:center;color:var(--off-white);background-size:30px 30px,100% 100%;background-attachment:fixed;min-height:100vh;margin:0;padding:0;font-family:Arsenal,sans-serif;line-height:1.6}header{padding:clamp(.4rem,1.2vw,1rem) 0 .85rem;position:relative}h1{color:var(--main-colour-bright);text-shadow:4px 4px 0 var(--black);letter-spacing:1px;margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:clamp(3rem,6vw,4.8rem);font-style:italic;line-height:1.1}h2{color:var(--white);letter-spacing:.025em;margin:0;font-size:clamp(1.25rem,2.4vw,1.8rem);line-height:1.1}header>h2+br{display:none}header>h2{color:var(--gray-300);letter-spacing:.16em;text-shadow:none;text-transform:uppercase;margin-top:.85rem;margin-bottom:1.5rem;font-family:Arsenal,sans-serif;font-size:clamp(1rem,1.8vw,1.35rem);font-weight:400;line-height:1.3}.main-nav{z-index:100;border:1px solid var(--soft-border);background:var(--overlay-black-72);box-shadow:4px 4px 0 var(--accent-shadow-35);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);gap:20px;padding:5px;display:flex;position:absolute;top:20px;right:20px}.nav-link{color:var(--white);border:2px solid var(--transparent);text-transform:uppercase;letter-spacing:1px;padding:8px 16px;font-size:90%;font-weight:700;text-decoration:none;transition:all .3s}.nav-link:hover{color:var(--main-colour);border-color:var(--main-colour);text-shadow:0px 0px 4px var(--accent-shadow-70)}.nav-link:focus-visible,a:focus-visible{outline:3px solid var(--main-colour-bright);outline-offset:4px}.nav-link.active{color:var(--main-colour);border-color:var(--main-colour);background-color:var(--accent-wash-10)}.nav-dots{justify-content:center;gap:10px;margin:0 auto 1rem;display:flex}.dot{background-color:var(--gray-700);border:1px solid var(--main-colour);cursor:pointer;border-radius:0;width:16px;height:16px;padding:0;transition:background-color .2s,transform .2s;display:inline-block;transform:rotate(45deg)}.dot.active,.dot:hover{background-color:var(--main-colour)}.dot:hover{transform:rotate(45deg)scale(1.15)}a i{color:var(--white)}.contact-info{flex-direction:column;align-items:flex-start;gap:.5em;display:flex;transform:skew(-10deg)}.contact-info i{margin-right:.5em}.contact-info p{margin:0}.contact-info>*{transform:skew(10deg)}.box{background:var(--surface);text-align:center;color:var(--off-white);text-shadow:none;box-shadow:10px 10px 0 2px var(--main-colour), 0 18px 36px var(--shadow-black-28);border:2px solid var(--main-colour);justify-content:center;align-items:center;gap:10px;width:min(82%,1320px);margin:0 auto;padding:clamp(.9rem,2vw,1.5rem);font-size:clamp(1rem,2.1vh,1.25rem);font-weight:600;line-height:1.5;display:flex;position:relative;overflow:hidden}.box.contact-info{width:min(60%,700px);font-size:clamp(1.2rem,2.8vh,1.45rem)}.project-description{margin-top:2.5rem}.videobox{box-shadow:-10px 10px 0 2px var(--main-colour), 0 18px 36px var(--shadow-black-28)!important;transform:skew(5deg)!important}.videobox>*{transform:skew(-5deg)}.box.videobox{flex-direction:column}.videobox .project-title{border-bottom:2px solid var(--main-colour);letter-spacing:.04em;text-transform:uppercase;text-shadow:3px 3px 0 var(--black);color:var(--white);align-self:center;margin:0 0 .85rem;padding-bottom:.25rem;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:clamp(1.35rem,2.4vw,2rem);font-style:italic;font-weight:700;line-height:1.2;display:inline-block;transform:none}.video-tags{flex-wrap:wrap;justify-content:center;gap:8px;margin-top:10px;margin-bottom:1rem;display:flex}.tag{background-color:var(--transparent);color:var(--off-white);text-transform:uppercase;border:1px solid var(--main-colour);padding:4px 10px;font-size:75%;font-weight:700;transition:background-color .3s,color .3s;display:inline-block;transform:skew(-15deg)}.tag.button-container{transform:skew(0deg)}a.tag.button-container{box-sizing:border-box;text-align:center;border:2px solid var(--main-colour);width:fit-content;min-width:10.5rem;margin-top:.75em;margin-left:auto;margin-right:auto;padding:.45rem 1rem;display:block}a.tag.button-container>span{justify-content:center;align-items:center;font-size:1rem;line-height:1.2;display:flex;transform:skew(0deg);gap:10px!important}a.tag.button-container>span>i{color:var(--off-white)}.tag:hover{background-color:var(--main-colour);color:var(--white)}.tag span{display:block;transform:skew(15deg)}video,img,iframe{background-color:var(--black);box-sizing:border-box;width:100%;height:480px;max-height:480px;display:inline-block}video{aspect-ratio:16/9;object-fit:cover;width:min(100%,100vh);height:auto;max-height:none;margin:0 auto;display:block}.video-embed{aspect-ratio:16/9;width:min(100%,100vh);margin:0 auto;position:relative;overflow:hidden}.media-frame{width:min(100%,100vh);margin:0 auto}.media-frame>video,.media-frame>iframe{aspect-ratio:16/9;width:100%;height:auto;max-height:none;margin:0 auto;display:block}.media-frame.video-embed{aspect-ratio:16/9;position:relative;overflow:hidden}.media-frame.video-embed>video,.media-frame.video-embed>iframe{height:100%}.video-embed iframe{width:100%;height:100%;max-height:none;inset:0}.contact-row{flex-direction:row;align-items:center;display:flex}a{color:var(--off-white);font-weight:700;text-decoration:none;transition:all .3s;position:relative}a:hover,i{color:var(--main-colour)}.media{flex-direction:column;justify-content:center;align-items:center;width:min(92%,1240px);display:flex}.highlight{color:var(--main-colour);letter-spacing:.5px;font-weight:700}.media p a{color:var(--main-colour)}.media p a:hover{color:var(--white)}footer{text-align:center;background-color:var(--overlay-black-88);color:var(--white);border-top:3px solid var(--main-colour);margin-top:4rem;padding:1em;font-style:italic}.project h2{border-bottom:2px solid var(--main-colour);letter-spacing:.04em;text-transform:uppercase;text-shadow:3px 3px 0 var(--black);margin:0 0 .85rem;padding-bottom:.25rem;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-style:italic;font-weight:700;display:inline-block}.description{border:2px solid var(--main-colour);background-color:var(--gray-900);background-image:radial-gradient(var(--gray-800) 1px, var(--transparent) 1px);color:var(--off-white);box-shadow:inset 0 0 18px var(--shadow-black-38), 0 12px 28px var(--shadow-black-20);text-shadow:1px 1px 0 var(--black);box-sizing:border-box;text-align:left;background-size:10px 10px;width:90%;max-width:1200px;margin:1em auto;padding:1.5em;position:relative;overflow:hidden;transform:skew(-5deg)}.description>*{transform:skew(5deg)}.description h2{color:var(--main-colour);text-transform:uppercase;letter-spacing:1px;margin-bottom:15px;font-size:1.4em}.description h3{color:var(--main-colour);margin:10px 0;font-size:1.2em}.description p{max-width:65ch;margin:0 0 1rem;line-height:1.8}.description ul{margin-bottom:15px;line-height:1.6}.description li{margin-bottom:8px}.description.smalldesc{text-align:left;grid-template-columns:auto 1fr;align-items:center;gap:20px;width:75%;min-width:300px;max-width:800px;padding:1em 2em;display:grid}.description.smalldesc>a.tag.button-container{grid-column:1/-1;justify-self:center;min-width:12rem;padding:.65rem 1.25rem}.description img{border:2px solid var(--main-colour);object-fit:cover;width:auto;max-width:180px;height:auto;max-height:180px;box-shadow:3px 3px 0px 0px var(--main-colour);flex-shrink:0;transform:skew(5deg)}.description-text{flex:1;font-size:125%}.description-text+.description-text{border-top:1px solid var(--soft-border);margin-top:1.5rem;padding-top:1.5rem}.portfolio-summary .description-text{flex-direction:column;gap:.9rem;display:flex}.portfolio-summary .description-text>br{display:none}.portfolio-summary a.tag.button-container{box-sizing:border-box;justify-content:center;align-items:center;min-width:14rem;min-height:3.4rem;margin:.35rem auto 0;padding:.8rem 1.5rem;font-size:1.1rem;display:flex}.portfolio-summary a.tag.button-container.cv-button{align-self:center;transform:skew(-15deg)!important}.portfolio-summary a.tag.button-container.cv-button>span{transform:skew(15deg)!important}#videos{width:min(95%,1500px);margin:0 auto}.portfolio-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:1.5rem;width:100%;display:grid}.portfolio-grid .project{box-sizing:border-box;background:var(--gray-850);border:1px solid var(--gray-700);width:100%;min-width:0;min-height:600px;box-shadow:0 12px 24px var(--shadow-black-28);text-align:left;flex-direction:column;transition:border-color .25s,transform .25s,box-shadow .25s;display:flex;overflow:hidden;transform:none}.portfolio-grid .project:hover{border-color:var(--main-colour);box-shadow:0 16px 30px var(--shadow-black-38);transform:translateY(-4px)}.portfolio-grid .project h2{width:auto;color:var(--white);letter-spacing:0;text-transform:none;text-shadow:none;border:0;order:2;margin:0;padding:.85rem 1rem .25rem;font-family:Arsenal,sans-serif;font-size:clamp(1.1rem,1.5vw,1.45rem);font-style:normal;line-height:1.2;transform:none}.portfolio-grid .video-embed,.portfolio-grid>video,.portfolio-grid>iframe{aspect-ratio:16/9;width:100%;height:auto;max-height:none;box-shadow:none;object-fit:cover;border:0;order:1;margin:0}.portfolio-grid .video-embed iframe{display:block}.portfolio-grid>iframe.youtube-player{transform:scale(1.34)}.video-embed video{object-fit:cover;width:100%;height:100%;display:block}.portfolio-grid .skills-links-bar{box-sizing:border-box;background:0 0;flex-wrap:wrap;order:3;justify-content:flex-start;align-items:center;gap:.7rem;width:100%;min-width:0;margin-top:0;padding:.75rem 1rem;display:flex;flex-direction:row!important}.portfolio-grid .skills-section{width:auto;padding:0;display:contents}.portfolio-grid .skills-section i{color:var(--gray-300);text-shadow:none;box-sizing:border-box;background:#9ca3af14;border:1px solid #9ca3af4d;align-items:center;gap:.35rem;max-width:100%;padding:.25rem .75rem;font-size:1rem;font-style:normal;line-height:1.35;display:inline-flex}.portfolio-grid .skills-section .skill-icon{color:#ff72b6;white-space:nowrap;box-sizing:border-box;background:#ff007a24;border:1px solid #ff007a80;align-items:center;gap:.35rem;width:auto;min-height:1.2rem;padding:.25rem .75rem;font-size:.85rem;font-weight:700;line-height:1.35;display:inline-flex}.portfolio-grid .skills-section .skill-icon img{object-fit:contain;filter:brightness(0)saturate()invert(62%)sepia(73%)saturate(2431%)hue-rotate(294deg)brightness(104%)contrast(101%);background:0 0;width:1rem;height:1rem;max-height:none;display:block}.portfolio-grid .skills-section i:after{content:attr(title);color:inherit;letter-spacing:.02em;white-space:nowrap;font-family:Arsenal,sans-serif;font-size:.85rem;font-weight:700}.portfolio-grid .video-tags{display:contents}.portfolio-grid .video-tags .tag{color:var(--gray-300);box-sizing:border-box;background:#9ca3af14;border:1px solid #9ca3af4d;max-width:100%;padding:.25rem .75rem;font-size:.85rem;line-height:1.35;transform:none}.portfolio-grid .video-tags .tag span{transform:none}.video-tags .tag{align-items:center;gap:.45rem;font-size:.85rem;line-height:1.35;display:inline-flex}.video-tags .tag:before{content:"";text-align:center;flex:0 0 1rem;width:1rem;font-family:"Font Awesome 6 Free";font-size:1rem;font-weight:900;line-height:1}.portfolio-grid .skills-section i.devicon-unity-plain{color:#b8a2f5;background:#a78bfa24;border-color:#a78bfa59}.portfolio-grid .skills-section i.devicon-csharp-plain{color:#5eead4;background:#2dd4bf24;border-color:#2dd4bf59}.portfolio-grid .skills-section i.devicon-java-plain{color:#ff8a8a;background:#ef444429;border-color:#ef444473}.portfolio-grid .skills-section i.devicon-photoshop-plain{color:#fcd34d;background:#fbbf2424;border-color:#fbbf2459}.portfolio-grid .skills-section i.devicon-vscode-plain,.portfolio-grid .skills-section i.devicon-intellij-plain,.portfolio-grid .skills-section i.fa-twitch{color:var(--gray-300);background:#9ca3af14;border-color:#9ca3af4d}.portfolio-grid .skills-section i.devicon-github-plain{color:#5fed83;background:#0fbf3e29;border-color:#0fbf3e80}.portfolio-grid .skills-section i.fa-twitch{color:#b98cff;background:#9146ff29;border-color:#9146ff73}.portfolio-grid .skills-section i.devicon-vscode-plain{color:#4db8ff;background:#007acc29;border-color:#007acc73}.portfolio-grid .skills-section i.devicon-godot-plain{color:#76b9e8;background:#478cbf29;border-color:#478cbf73}.portfolio-grid .description{width:auto;box-shadow:none;background:0 0;border:0;flex:1;order:5;padding:0 1rem 5rem;font-size:1.1rem;line-height:1.45;position:relative;transform:none}.portfolio-grid .description>*{transform:none}.portfolio-grid .description>span{display:block}.portfolio-grid .description a.tag.button-container,.portfolio-grid .description>a.tag.button-container{box-sizing:border-box;width:10.5rem;min-width:10.5rem;min-height:2.6rem;margin:0 auto;position:absolute;bottom:1rem;left:0;right:0;transform:none}.portfolio-grid .description a.tag.button-container{margin-bottom:0}.portfolio-grid .description a.tag.button-container:hover{box-shadow:none;text-shadow:none}.portfolio-grid .description a.tag.button-container.read-more{transform:skew(-15deg)!important}.portfolio-grid .description a.tag.button-container.read-more>span{transform:skew(15deg)!important}@media (width<=1085px){.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=700px){#videos{width:92%}.portfolio-grid{grid-template-columns:1fr;gap:1.25rem}.portfolio-grid .project{min-height:0}}.about-intro{box-sizing:border-box;border:1px solid var(--soft-border);width:min(88%,920px);box-shadow:8px 8px 0 var(--accent-shadow-35), 0 18px 36px var(--shadow-black-28);text-align:left;background:linear-gradient(135deg,#111111f5,#1f1f1fe6);grid-template-columns:minmax(150px,220px) minmax(0,1fr);align-items:center;gap:1rem clamp(1.5rem,4vw,3.5rem);margin:2rem auto 2em;padding:clamp(1.5rem,4vw,3rem);display:grid}.about-intro .profile-image{aspect-ratio:1;border:2px solid var(--main-colour);object-fit:cover;width:100%;max-width:220px;height:auto;box-shadow:4px 4px 0 var(--main-colour)}.about-intro .description-text{font-size:clamp(1rem,1.5vw,1.2rem);line-height:1.7}.about-intro .description-text>div+div{margin-top:1.25rem}.about-cv-button{border:2px solid var(--main-colour);background:var(--black);min-width:14rem;min-height:3.4rem;color:var(--white);text-transform:uppercase;letter-spacing:.04em;grid-column:1/-1;justify-content:center;justify-self:center;align-items:center;gap:.65rem;padding:.8rem 1.5rem;font-size:1.1rem;transition:background-color .2s,color .2s;display:inline-flex}.about-cv-button:hover{background:var(--main-colour);color:var(--white);text-shadow:none}.about-cv-button i{color:inherit}@media (width<=1024px){.description.smalldesc{width:70%}}@media (width<=768px){h1{letter-spacing:0;margin-top:1.5rem;font-size:300%}.main-nav{box-sizing:border-box;flex-wrap:wrap;justify-content:center;gap:12px;width:fit-content;max-width:calc(100% - 16px);margin:0 auto;padding:12px 8px;display:flex;position:static;top:auto;right:auto}.box{box-sizing:border-box;width:92%;padding:12px;overflow:visible}.box.contact-info{width:92%}.description.smalldesc{text-align:center;flex-direction:column;align-items:center;width:92%;min-width:0;padding:1em;display:flex}.description{text-align:left;flex-direction:column;gap:15px;width:92%;padding:1em;overflow:visible}.description img{max-width:150px;max-height:150px;transform:none}.description-text{font-size:110%}video,iframe{aspect-ratio:16/9;height:auto;max-height:none}.media,.video-embed{width:100%}.about-intro{text-align:center;grid-template-columns:1fr;justify-items:center;width:92%}.about-intro .description-text{font-size:1rem}}@media (width<=480px){.description.smalldesc{width:95%;padding:.8em}.description img{max-width:120px;max-height:120px}.description-text{font-size:100%}h1{font-size:250%}h2{font-size:150%}}.skills-links-bar{background-image:linear-gradient(to right, var(--transparent), var(--gray-700) 12%, var(--gray-700) 88%, var(--transparent)), linear-gradient(to right, var(--transparent), var(--gray-700) 12%, var(--gray-700) 88%, var(--transparent));background-position:top,bottom;background-repeat:no-repeat;background-size:100% 1px,100% 1px;flex-direction:row;justify-content:space-between;align-items:center;width:100%;margin-top:1em;padding:5px 0;display:flex}.skills-section{flex-shrink:0;justify-content:flex-start;gap:10px;width:max-content;padding-left:10px;display:flex}.skills-section i{color:var(--white);font-size:1.8rem;transition:color .3s}.skills-section .skill-icon{color:var(--white);white-space:nowrap;flex-shrink:0;align-items:center;gap:.35rem;transition:color .3s;display:inline-flex}.skills-section .skill-icon img{object-fit:contain;filter:invert();background:0 0;width:1.6rem;height:1.6rem;max-height:none;transition:filter .3s;display:block}.skills-section i:hover,.skills-section .skill-icon:hover{color:var(--main-colour)}.skills-section .skill-icon:hover img{filter:brightness(0)saturate()invert(56%)sepia(91%)saturate(1044%)hue-rotate(103deg)brightness(93%)contrast(90%)}.link-button{background-color:var(--black);color:var(--off-white);text-transform:uppercase;border:2px solid var(--main-colour);align-items:center;gap:8px;padding:5px 12px;font-size:80%;font-weight:700;transition:background-color .3s,color .3s;display:inline-flex;transform:skew(-15deg)}.link-button:hover{background-color:var(--main-colour);color:var(--white);text-shadow:none}.link-button i,.link-button img,.link-button span{transform:skew(15deg)}.detail-back{box-sizing:border-box;justify-content:center;align-self:center;width:12rem;min-height:2.8rem;margin-top:1rem;display:flex}.media>.detail-back{flex:none}.video-tags{flex-wrap:wrap;justify-content:center;gap:8px;width:fit-content;max-width:90%;margin:10px auto 1rem;padding:0 10px;display:flex}@media (width<=1024px){.skills-links-bar{flex-direction:column;gap:10px;padding:10px 0}.skills-section{text-align:center;justify-content:center;width:100%;min-width:0;padding:0}.video-tags{width:90%;margin:10px auto 1rem}}@media (width<=1085px){.videobox,.videobox>*,.videobox h2,.contact-info,.contact-info>*,.description,.description>*,.description img,.tag,.tag span,.tag.button-container,a.tag.button-container>span,.link-button,.link-button i,.link-button img,.link-button span{transform:none!important}.videobox{box-shadow:8px 8px 0 2px var(--main-colour)!important}.skills-links-bar{flex-wrap:wrap;gap:12px}.contact-info{align-items:center}.contact-boxes{width:100%}.contact-row{text-align:center;flex-wrap:wrap;justify-content:center}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}html{scroll-behavior:smooth}body{overflow-x:hidden}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
