:root{--bg:#07110d;--panel:#0c1913;--ink:#f3f7f4;--muted:#9caf9f;--green:#48f28b;--line:#203229;--serif:Manrope,sans-serif;--sans:"DM Sans",sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.65}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:var(--green);color:#001b0d;padding:.5rem 1rem;z-index:10}a{color:inherit;text-decoration:none}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1.25rem,5vw,5rem);border-bottom:1px solid var(--line);position:relative;z-index:2;background:rgba(7,17,13,.92)}.brand{display:flex;gap:.75rem;align-items:center;font-weight:700}.brand>span{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--green);color:var(--green);font-family:var(--serif);font-size:.85rem}.topbar nav{display:flex;gap:2.2rem}.topbar nav a{color:var(--muted);font-size:.9rem}.topbar nav a:hover,.topbar nav a:focus{color:var(--green)}.menu{display:none}.hero{min-height:calc(100vh - 84px);position:relative;display:grid;grid-template-columns:1.2fr .8fr;align-items:center;padding:5rem clamp(1.25rem,8vw,8rem);overflow:hidden}.hero:before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 49.8%,rgba(72,242,139,.08) 50%,transparent 50.2%),linear-gradient(rgba(72,242,139,.03) 1px,transparent 1px);background-size:100% 100%,100% 88px;pointer-events:none}.eyebrow,.section-number,.tag{text-transform:uppercase;letter-spacing:.18em;font-size:.75rem;color:var(--green);font-weight:700}.hero h1,.section h2{font-family:var(--serif);font-size:clamp(3.8rem,8vw,8rem);line-height:.88;letter-spacing:-.06em;margin:1.2rem 0 2rem}.hero h1 span,.section h2 span{color:var(--green)}.intro{max-width:660px;color:#bdc9c0;font-size:clamp(1.08rem,1.6vw,1.35rem)}.actions{display:flex;gap:1rem;margin-top:2.2rem}.button{padding:.85rem 1.35rem;border:1px solid var(--green);font-weight:700}.primary{background:var(--green);color:#04110a}.ghost:hover{background:#10261a}.hero-mark{justify-self:center;position:relative;width:min(32vw,420px);aspect-ratio:1;display:grid;place-items:center}.orbit{position:absolute;inset:0;border:1px solid #244033;border-radius:50%}.orbit:before,.orbit:after{content:"";position:absolute;border:1px solid #1a3025;border-radius:50%}.orbit:before{inset:12%}.orbit:after{inset:25%}.monogram{font:800 clamp(5rem,11vw,9rem)/1 var(--serif);letter-spacing:-.12em}.monogram span{color:var(--green)}.hero-mark p{position:absolute;bottom:10%;background:var(--bg);padding:.3rem 1rem;color:var(--muted);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase}.scroll-note{position:absolute;right:2.5rem;bottom:2rem;color:var(--muted);font-size:.75rem;letter-spacing:.12em;text-transform:uppercase}.scroll-note span{color:var(--green);font-size:1.2rem}.section{padding:clamp(5rem,10vw,9rem) clamp(1.25rem,8vw,8rem);border-top:1px solid var(--line)}.section h2{font-size:clamp(3rem,6vw,6rem);margin-top:1.5rem}.about{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem)}.about-copy{padding-top:4rem;color:var(--muted);max-width:640px}.about-copy .lead{font-size:1.5rem;line-height:1.45;color:var(--ink)}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:3rem}.facts div{border-top:1px solid var(--line);padding-top:1rem}.facts strong{display:block;color:var(--green);font:700 2.3rem var(--serif)}.facts span{font-size:.8rem}.work{background:var(--panel)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:2rem}.section-heading>p{max-width:420px;color:var(--muted);margin-bottom:3rem}.project.featured{display:grid;grid-template-columns:70px 1fr 1.15fr;border:1px solid var(--line);margin-top:2rem;background:#09140f}.project-index{padding:2rem 1rem;color:var(--green);border-right:1px solid var(--line)}.project-copy{padding:3rem}.project-copy h3,.project-card h3{font:700 clamp(2.5rem,5vw,5rem)/1 var(--serif);margin:.8rem 0 1.5rem}.project-copy p,.project-card p{color:var(--muted)}.project-copy ul{list-style:none;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:.6rem;color:#c5d1c8}.project-copy li:before{content:"+";color:var(--green);margin-right:.5rem}.project-copy a{display:inline-block;margin-top:1.5rem;border-bottom:1px solid var(--green);color:var(--green)}.project-visual{display:grid;place-items:center;padding:3rem;background:radial-gradient(circle at 50% 50%,#174a2b,#08150e 65%)}.screen{width:100%;max-width:520px;aspect-ratio:1.5;background:#dfe9e2;border:8px solid #17241d;border-radius:8px;box-shadow:0 35px 70px #000}.screen-top{height:8%;background:#15251c;display:flex;align-items:center;gap:5px;padding:0 10px}.screen-top i{width:6px;height:6px;border-radius:50%;background:#48f28b}.screen-body{height:92%;display:flex}.side{width:22%;background:#0d2d1b}.dash{flex:1;color:#173120;padding:8%;font-size:clamp(.6rem,1vw,1rem)}.cards{display:flex;gap:5%;margin:8% 0}.cards i{height:35px;flex:1;background:#9ee9b6}.chart{height:42%;background:linear-gradient(135deg,transparent 0 35%,#3abd70 36% 40%,transparent 41% 50%,#6dcf8d 51% 56%,transparent 57%),#f7faf7}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin-top:1.5rem}.project-card{padding:2.5rem;border:1px solid var(--line);min-height:330px;display:flex;flex-direction:column}.project-card h3{font-size:2.2rem}.project-card>span{margin-top:auto;color:#718378;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}.skills{display:grid;grid-template-columns:.9fr 1.1fr;gap:6rem}.skill-list>div{display:grid;grid-template-columns:50px 1fr 1.3fr;gap:1.5rem;align-items:start;border-top:1px solid var(--line);padding:1.7rem 0}.skill-list span{color:var(--green)}.skill-list h3{font:700 1.2rem var(--serif);margin:0}.skill-list p{color:var(--muted);margin:0}.journey{background:#e9f2ec;color:#07110d}.journey .section-number,.journey h2 span{color:#087638}.timeline{margin-top:2rem}.timeline>div{display:grid;grid-template-columns:180px 1fr 1fr;gap:2rem;border-top:1px solid #a8bbb0;padding:2rem 0}.timeline time{color:#087638;font-weight:700;text-transform:uppercase;letter-spacing:.1em;font-size:.75rem}.timeline h3,.timeline p{margin:0}.timeline h3{font:700 1.2rem var(--serif)}.timeline p{color:#52685b}.contact{text-align:center;padding-top:8rem;padding-bottom:8rem}.contact h2{margin-left:auto;margin-right:auto}.contact>p:not(.section-number){color:var(--muted);max-width:620px;margin:0 auto 3rem}.email{font:700 clamp(1.2rem,3vw,2.6rem) var(--serif);border-bottom:2px solid var(--green);word-break:break-word}.email span{color:var(--green)}.contact-row{display:flex;justify-content:center;gap:2rem;flex-wrap:wrap;margin-top:3rem;color:var(--muted)}.contact-row a:hover{color:var(--green)}footer{border-top:1px solid var(--line);padding:2rem clamp(1.25rem,5vw,5rem);display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.8rem}footer .brand{color:var(--ink)}
@media(max-width:850px){.topbar nav{display:none;position:absolute;top:84px;left:0;right:0;background:var(--panel);padding:1.5rem;flex-direction:column;border-bottom:1px solid var(--line)}.topbar nav.open{display:flex}.menu{display:block;background:none;color:var(--green);border:1px solid var(--line);padding:.5rem .8rem}.hero{grid-template-columns:1fr;padding-top:4rem}.hero-mark{position:absolute;right:-10%;top:15%;opacity:.22;width:70vw}.hero-copy{position:relative;z-index:1}.scroll-note{display:none}.about,.skills{grid-template-columns:1fr;gap:1rem}.about-copy{padding-top:0}.section-heading{display:block}.project.featured{grid-template-columns:42px 1fr}.project-visual{grid-column:1/3;min-height:330px}.project-copy{padding:2rem}.project-grid{grid-template-columns:1fr}.timeline>div{grid-template-columns:1fr;gap:.4rem}.skill-list>div{grid-template-columns:35px 1fr}.skill-list p{grid-column:2}.facts{grid-template-columns:1fr 1fr}.contact-row{flex-direction:column;gap:.7rem}footer{align-items:flex-start;gap:1.5rem;flex-direction:column}}
@media(max-width:480px){.hero h1{font-size:3.3rem}.actions{flex-direction:column;align-items:stretch;text-align:center}.project-copy ul{grid-template-columns:1fr}.project-visual{padding:2rem 1rem}.facts{grid-template-columns:1fr}.topbar{height:74px}.topbar nav{top:74px}}

/* Product visuals */
.edusl-screen .side{padding:9% 5%;display:flex;flex-direction:column;gap:9%}.edusl-screen .side span{height:4px;border-radius:10px;background:rgba(158,233,182,.38)}.edusl-mark{width:30px;aspect-ratio:1;display:grid;place-items:center;margin-bottom:10%;border-radius:7px;background:#d7aa35;color:#0d2d1b;font-weight:800}.edusl-brand{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.edusl-brand strong{font-size:1.35em;color:#0d6f38}.edusl-brand small{color:#587060}.feature-chips{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8%}.feature-chips span{padding:6px;background:#fff;border:1px solid #c9ddd0;border-radius:4px;color:#27543a;font-size:.72em}.project-card-visual{padding:0;min-height:570px;overflow:hidden}.project-card-visual .card-copy{padding:2rem 2.5rem;display:flex;flex:1;flex-direction:column}.project-card-visual .card-copy h3{font-size:clamp(1.8rem,3vw,2.5rem)}.project-card-visual .card-copy>span{margin-top:auto;color:#718378;font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}.business-dashboard{height:265px;padding:1.4rem;background:linear-gradient(145deg,#eef7f1,#d7eadf);color:#153421}.dashboard-header{display:flex;justify-content:space-between;align-items:center;font-weight:700}.dashboard-header b{font-size:.78rem;color:#087638}.metric-row{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin:1rem 0}.metric-row i{height:48px;border-radius:4px;background:linear-gradient(135deg,#fff 0 65%,#8ad5a4 66%)}.graph-row{height:125px;display:grid;grid-template-columns:1.6fr 1fr;gap:.8rem}.bar-chart,.donut-chart{border-radius:5px;background:#fff}.bar-chart{display:flex;align-items:end;gap:7%;padding:1rem}.bar-chart i{flex:1;background:linear-gradient(#48f28b,#138543);border-radius:3px 3px 0 0}.bar-chart i:nth-child(1){height:35%}.bar-chart i:nth-child(2){height:62%}.bar-chart i:nth-child(3){height:48%}.bar-chart i:nth-child(4){height:85%}.bar-chart i:nth-child(5){height:68%}.bar-chart i:nth-child(6){height:96%}.donut-chart{position:relative;display:grid;place-items:center}.donut-chart:before{content:"";width:72px;aspect-ratio:1;border-radius:50%;background:conic-gradient(#0d783a 0 42%,#48f28b 42% 71%,#d7aa35 71% 88%,#c6ddd0 88%)}.donut-chart:after{content:"";position:absolute;width:38px;aspect-ratio:1;border-radius:50%;background:#fff}.card-image{height:265px;position:relative;overflow:hidden}.card-image img{width:100%;height:100%;object-fit:cover;transition:transform .45s ease}.hospital-card:hover .card-image img{transform:scale(1.035)}.card-image span{position:absolute;left:1.2rem;bottom:1.2rem;padding:.45rem .75rem;background:rgba(7,17,13,.88);color:var(--green);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}
@media(max-width:850px){.project-card-visual{min-height:540px}.business-dashboard,.card-image{height:250px}}
@media(max-width:480px){.project-card-visual .card-copy{padding:1.6rem}.business-dashboard{padding:1rem}.feature-chips{grid-template-columns:1fr}.edusl-brand small{display:none}}

/* Finished projects and protected GitHub publishing */
.finished-projects{background:#08140f}.finished-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;margin-top:2rem}.finished-empty,.finished-card{min-height:230px;border:1px solid var(--line);padding:2rem;display:flex;gap:1.5rem;background:var(--panel)}.finished-empty>span,.finished-card>span{color:var(--green);font-weight:700}.finished-empty h3,.finished-card h3,.deploy-center h3{font:700 clamp(1.7rem,3vw,2.5rem)/1.05 var(--serif);margin:.2rem 0 1rem}.finished-empty p,.finished-card p,.deploy-center p{color:var(--muted)}.finished-card{flex-direction:column}.finished-card .project-tech{color:var(--green);font-size:.78rem;text-transform:uppercase;letter-spacing:.1em}.finished-links{display:flex;gap:1rem;margin-top:auto;flex-wrap:wrap}.finished-links a{border-bottom:1px solid var(--green);color:var(--green)}.deploy-center{margin-top:1.5rem;border:1px solid var(--green);padding:clamp(1.5rem,4vw,3rem);display:grid;grid-template-columns:1.2fr .8fr;gap:3rem;align-items:center;background:linear-gradient(135deg,rgba(72,242,139,.08),transparent)}.deploy-actions{display:flex;flex-direction:column;gap:.8rem}.deploy-actions .button{text-align:center}.repo-link{text-align:center;color:var(--green);padding:.5rem}.loading-projects{color:var(--muted)}
@media(max-width:850px){.finished-grid,.deploy-center{grid-template-columns:1fr}.deploy-center{gap:1.5rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* Brand and product flyers */
.flyers{background:#0a1711}.flyer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,460px));justify-content:center;gap:1.5rem;margin-top:2rem}.flyer-card{margin:0;border:1px solid var(--line);background:var(--panel);overflow:hidden}.flyer-image{display:block;aspect-ratio:2/3;overflow:hidden;background:#eef2ef}.flyer-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:top;transition:transform .35s ease}.flyer-card:hover .flyer-image img{transform:scale(1.015)}.flyer-card figcaption{padding:1.5rem 1.6rem 1.7rem}.flyer-card h3{font:700 clamp(1.6rem,2.5vw,2.2rem)/1.1 var(--serif);margin:.45rem 0 .7rem}.flyer-card figcaption>p:not(.tag){margin:0;color:var(--muted)}.flyer-card figcaption>a{display:inline-block;margin-top:1rem;color:var(--green);border-bottom:1px solid var(--green)}
@media(max-width:760px){.flyer-grid{grid-template-columns:minmax(0,460px)}.flyer-card figcaption{padding:1.3rem}}
.hero-mark.portrait{aspect-ratio:4/5;margin:0;border:1px solid #315b43;padding:.55rem;background:linear-gradient(145deg,#163d27,#07110d);box-shadow:1.4rem 1.4rem 0 rgba(72,242,139,.10)}.hero-mark.portrait:before{content:"";position:absolute;inset:-1.2rem 1.4rem 1.2rem -1.2rem;border:1px solid rgba(72,242,139,.25);z-index:-1}.hero-mark.portrait img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 32%;filter:saturate(.85) contrast(1.04)}.hero-mark.portrait figcaption{position:absolute;left:1.5rem;bottom:1.5rem;background:rgba(7,17,13,.92);border-left:3px solid var(--green);padding:.55rem .85rem;color:var(--ink);font-size:.78rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}@media(max-width:850px){.hero-mark.portrait{position:relative;right:auto;top:auto;opacity:1;width:min(88vw,430px);margin:3rem auto 1rem;justify-self:center;z-index:1}.hero{padding-bottom:3rem}.hero-copy{align-self:end}}
.resume{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,8vw,9rem);background:var(--panel)}.resume-card{align-self:center;border-left:2px solid var(--green);padding:2rem 0 2rem 2.5rem}.resume-card>p{max-width:560px;color:var(--muted);font-size:1.15rem}@media(max-width:850px){.resume{grid-template-columns:1fr;gap:1rem}.resume-card{padding:1rem 0 1rem 1.5rem}}
.social-links{display:flex;justify-content:center;gap:1rem;flex-wrap:wrap;margin-top:2.25rem}.social-links a{display:inline-flex;align-items:center;gap:.7rem;padding:.72rem 1.1rem;border:1px solid var(--line);color:var(--ink);font-weight:700;transition:border-color .2s ease,background .2s ease,color .2s ease}.social-links a:hover,.social-links a:focus-visible{border-color:var(--green);background:#10261a;color:var(--green)}.social-links svg{width:1.35rem;height:1.35rem;fill:currentColor;flex:none}
.gallery{background:#07110d}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;margin-top:2.5rem;align-items:stretch}.photo-card{position:relative;margin:0;min-height:430px;overflow:hidden;border:1px solid #294538;background:#0c1913}.photo-card img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .45s ease,filter .45s ease}.photo-card:not(.photo-tall):not(.photo-accountant):not(.photo-profession) img{object-position:center}.photo-tall img{object-position:center 28%}.photo-accountant img{object-position:center 24%}.photo-profession img{object-position:center 22%}.photo-card:after{content:"";position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(4,13,8,.92));pointer-events:none}.photo-card figcaption{position:absolute;z-index:1;left:1.35rem;right:1.35rem;bottom:1.25rem;display:flex;flex-direction:column;line-height:1.25}.photo-card figcaption span{color:var(--green);font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin-bottom:.4rem}.photo-card figcaption strong{font-family:var(--serif);font-size:1.25rem}.photo-card:hover img{transform:scale(1.025);filter:saturate(1.08)}.hero-mark.portrait img{object-position:center 38%}@media(max-width:980px){.photo-grid{grid-template-columns:1fr 1fr}.photo-card{min-height:400px}}@media(max-width:620px){.photo-grid{grid-template-columns:1fr}.photo-card,.photo-wide,.photo-tall,.photo-accountant,.photo-profession{min-height:360px}.photo-tall,.photo-accountant,.photo-profession{aspect-ratio:4/5}.topbar nav{max-height:calc(100vh - 74px);overflow:auto}}
.photo-compact{width:100%;min-height:350px}.photo-compact img{object-fit:cover}@media(min-width:1100px){.photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.photo-card{min-height:360px}.photo-compact{min-height:340px}}@media(max-width:980px){.photo-compact{width:100%;min-height:330px}}@media(max-width:620px){.photo-compact{min-height:360px}}

/* Tighter desktop rhythm for laptop and computer screens */
@media(min-width:981px){
  .topbar{height:72px}
  .hero{min-height:620px;padding:4rem clamp(2rem,7vw,7rem)}
  .hero h1{font-size:clamp(3.8rem,6.4vw,6.6rem);margin:1rem 0 1.5rem}
  .hero-mark{width:min(29vw,360px)}
  .section{padding:clamp(4rem,5.5vw,5.75rem) clamp(2rem,7vw,7rem)}
  .section h2{font-size:clamp(2.8rem,4.7vw,4.8rem);margin:1rem 0 1.5rem}
  .section-heading>p{margin-bottom:1.5rem}
  .about{gap:clamp(3rem,6vw,6rem)}
  .about-copy{padding-top:2rem}
  .facts{margin-top:2rem}
  .photo-grid{margin-top:1.75rem;gap:1rem}
  .photo-card,.photo-compact{height:300px;min-height:0}
  .project.featured{margin-top:1.5rem}
  .project-copy,.project-visual{padding:2.25rem}
  .project-card{min-height:280px;padding:2rem}
  .project-grid{gap:1rem;margin-top:1rem}
  .skills{gap:4rem}
  .skill-list>div{padding:1.35rem 0}
  .timeline>div{padding:1.5rem 0}
  .resume{gap:clamp(3rem,6vw,6rem)}
  .contact{padding-top:5rem;padding-bottom:5rem}
}

/* Multi-page structure */
.home-page main>.section{display:none}.home-page .hero{border-bottom:1px solid var(--line)}
.home-sections{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));border-bottom:1px solid var(--line)}.home-sections a{min-height:150px;padding:1.5rem;border-right:1px solid var(--line);display:flex;flex-direction:column;transition:background .2s ease}.home-sections a:last-child{border-right:0}.home-sections a:hover,.home-sections a:focus-visible{background:var(--panel)}.home-sections span{color:var(--green);font-size:.75rem;letter-spacing:.12em}.home-sections strong{font:700 1.25rem var(--serif);margin-top:auto}.home-sections small{color:var(--muted);font-size:.78rem;margin-top:.25rem}
.page-hero{padding:clamp(3.5rem,6vw,6rem) clamp(1.25rem,8vw,8rem) 2.5rem;border-bottom:1px solid var(--line)}
.page-hero h1{font:800 clamp(3.2rem,7vw,7rem)/.92 var(--serif);letter-spacing:-.055em;margin:1rem 0}
.page-hero h1 span{color:var(--green)}.page-hero p:last-child{max-width:720px;color:var(--muted);font-size:1.1rem}
.topbar nav a[aria-current="page"]{color:var(--green)}
.page-main>.section:first-child{border-top:0}
@media(max-width:850px){.page-hero{padding-top:3rem}.page-hero h1{font-size:clamp(3rem,14vw,5rem)}.home-sections{grid-template-columns:1fr 1fr}.home-sections a{min-height:120px;border-bottom:1px solid var(--line)}.home-sections a:last-child{grid-column:1/3}}

/* EduSL primary and fallback addresses */
.product-links{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.product-links a{margin-top:1.5rem}.product-links a:last-child{padding:.55rem .8rem;border:1px solid var(--green);background:rgba(72,242,139,.08)}.project-copy .link-note{margin:.8rem 0 0;font-size:.86rem;color:#8ea297}
