/* Edition 04: a welcoming Data Scientist portfolio.
   Original Edition 03 project card design is retained in style.css. */
:root {
  --bg:#0b101a;
  --panel:#111823;
  --panel2:#1b2331;
  --ink:#f8f6f6;
  --muted:#b9bec9;
  --soft:#8e98a7;
  --line:#313a47;
  --green:#77dfd6;
  --lilac:#c3b4ff;
  --blue:#88b8ff;
  --pink:#f6a9cc;
  --display:'Plus Jakarta Sans', 'DM Sans', sans-serif;
  --sans:'DM Sans', sans-serif;
}
html {scroll-padding-top:90px;}
body {background:var(--bg);}
::selection {background:#99bbff;color:#0c1322;}
#scroll-progress {height:3px;background:linear-gradient(90deg,#87dce4,#ac9dff,#f4a8cd);}
.ambient {display:none;}
.site-header {background:rgba(11,15,24,.83);border-bottom:1px solid rgba(226,235,255,.09);}
.nav-shell {height:78px;}
.brand-mark__dot {color:#86dce4;}
.brand-caption {letter-spacing:.14em;}
.desktop-nav {gap:27px;}
.desktop-nav a {color:#aeb8c6;font-size:12px;font-weight:550;}
.desktop-nav a:hover,.desktop-nav a.is-current {color:#f1e8ff;}
.header-cta {min-width:124px;border-radius:999px;border:1px solid #475066;padding:12px 18px;background:rgba(255,255,255,.02);font:600 11px var(--display);letter-spacing:.01em;text-transform:none;}
.header-cta:hover {background:#e5deff;color:#171329;border-color:#e5deff;}
.nav-actions {gap:13px;}
.search-trigger:hover {color:#a9bfff;}
/* An inviting hero, no dashboards, HUD, orbital art or meaningless status chips. */
.hero.hero--welcome {width:100%;position:relative;isolation:isolate;display:block;overflow:hidden;min-height:775px;padding:0;background:
  radial-gradient(ellipse 75% 60% at 50% 108%,rgba(50,94,170,.20),transparent 80%),
  linear-gradient(180deg,#0b101a 0%,#0b111c 52%,#101525 100%);
}
.hero-grid {position:absolute;inset:0;z-index:-3;opacity:.43;pointer-events:none;
  background-image:linear-gradient(rgba(162,183,228,.048) 1px,transparent 1px),linear-gradient(90deg,rgba(162,183,228,.048) 1px,transparent 1px);
  background-size:94px 94px;mask-image:linear-gradient(to bottom,transparent 0%,black 35%,black 75%,transparent 99%);
}
.hero-atmosphere {z-index:-2;position:absolute;border-radius:50%;pointer-events:none;filter:blur(90px);will-change:transform;}
.hero-atmosphere--blue {width:min(900px,70vw);height:470px;left:17%;bottom:-280px;background:rgba(60,120,236,.23);animation:atmosphere-blue 19s ease-in-out infinite alternate;}
.hero-atmosphere--pink {width:min(600px,55vw);height:440px;right:-7%;top:8%;background:rgba(132,72,170,.115);animation:atmosphere-pink 22s ease-in-out infinite alternate;}
.hero-sheen {position:absolute;z-index:-2;inset:0;pointer-events:none;background:radial-gradient(ellipse 39% 54% at var(--pointer-x,50%) var(--pointer-y,64%),rgba(112,122,210,.065),transparent 80%);transition:background .4s;}
.hero-sparks {position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;}
.hero-spark {position:absolute;width:var(--spark-size,2px);height:var(--spark-size,2px);border-radius:50%;background:var(--spark-color,#a7c5ff);opacity:var(--spark-opacity,.35);box-shadow:0 0 15px currentColor;animation:spark-float var(--spark-duration,14s) ease-in-out infinite alternate;animation-delay:var(--spark-delay,0s);}
@keyframes atmosphere-blue {from{transform:translate(-5%,5%) scale(.93);}to{transform:translate(7%,-6%) scale(1.12);}}
@keyframes atmosphere-pink {from{transform:translate(4%,0) scale(1);}to{transform:translate(-12%,8%) scale(1.12);}}
@keyframes spark-float {0%{transform:translate3d(0,0,0);opacity:.13;}50%{opacity:var(--spark-opacity,.35);}100%{transform:translate3d(10px,-22px,0);opacity:.13;}}
.hero-inner {display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;z-index:1;min-height:775px;max-width:1200px;text-align:center;padding-top:80px;padding-bottom:68px;}
.hero.hero--welcome .hero-intro {position:relative;z-index:1;padding:0;max-width:1100px;width:100%;}
.hero-introduction {font-size:17px;font-weight:500;color:#e0dcf0;letter-spacing:-.012em;margin:0 0 16px;display:flex;justify-content:center;align-items:center;gap:13px;}
.hello-line {display:block;height:8px;width:8px;border-radius:50%;background:#f7b8d5;box-shadow:0 0 0 6px rgba(246,169,204,.08),0 0 19px rgba(246,169,204,.31);}
.hero-discipline {margin:0 0 22px;color:#92c7e7;font:700 11px var(--display);letter-spacing:.23em;}
.hero.hero--welcome h1 {margin:0 auto;max-width:1080px;white-space:normal;font:750 clamp(58px,7.1vw,104px)/1.18 var(--display);letter-spacing:-.075em;color:#f8f8fb;text-wrap:balance;}
.hero-gradient-text {display:inline-block;padding-right:.10em;background:linear-gradient(100deg,#95dfeb 0%,#95adfa 30%,#c4abfa 60%,#f7b9cf 95%);color:transparent;-webkit-background-clip:text;background-clip:text;}
.hero.hero--welcome .hero-summary {font-size:17px;line-height:1.76;letter-spacing:-.017em;color:#c1c9d7;max-width:655px;margin:31px auto 0;}
.hero.hero--welcome .hero-actions {justify-content:center;gap:25px;margin-top:33px;}
.hero.hero--welcome .button {min-height:54px;font:650 13px var(--display);letter-spacing:-.015em;gap:21px;}
.hero.hero--welcome .button--solid {color:#11172a;background:linear-gradient(115deg,#a7dff1 0%,#bcaafa 100%);border:1px solid rgba(255,255,255,.12);box-shadow:0 10px 30px rgba(111,120,227,.15);border-radius:9px;padding-inline:23px;}
.hero.hero--welcome .button--solid:hover {background:linear-gradient(115deg,#c3eff7 0%,#d1bfff 100%);box-shadow:0 18px 48px rgba(112,126,236,.25);transform:translateY(-3px);}
.hero.hero--welcome .button--understated {color:#d3d5e1;padding:0 10px;}
.hero.hero--welcome .button--understated:hover {color:#f0bdda;}
.hero-socials {display:flex;align-items:center;justify-content:center;gap:10px 28px;flex-wrap:wrap;margin-top:49px;}
.hero-socials a {font:550 12px var(--display);color:#8799b3;display:inline-flex;align-items:center;gap:7px;transition:transform .25s,color .25s;}
.hero-socials a span {font-size:14px;opacity:.75;}
.hero-socials a:hover {color:#e9d3ff;transform:translateY(-2px);}
.hero-scroll-cue {position:absolute;bottom:25px;left:50%;transform:translateX(-50%);white-space:nowrap;display:flex;gap:13px;align-items:center;color:#718399;font:650 9px var(--display);letter-spacing:.15em;}
.hero-scroll-cue__line {height:1px;width:29px;background:linear-gradient(90deg,transparent,#718399);}
.hero-scroll-cue__arrow {font-size:17px;animation:scroll-cue-bob 2.9s ease-in-out infinite;}
@keyframes scroll-cue-bob {50%{transform:translateY(4px);}}
/* Keep original project visuals, layout and filter interactions unchanged. */
.work-section {--green:#b7f4a0;--lilac:#d7bff4;--blue:#b4d8f2;--pink:#e5accb;}
.work-section .project-card {background-color:#121316;}
/* Remaining page sections have a friendlier rhythm and color. */
.impact-section {background:linear-gradient(115deg,#101521,#101a26 58%,#131524);}
.impact-item__top span {color:#8db5e8;}
.impact-item>strong span {color:#9bd9ee;}
.impact-item--projection>strong span {color:#bea5ef;}
.experience-section {border-bottom:1px solid rgba(224,231,248,.13);}
.experience-company {color:#b4bbf8;}
.experience-role h3 span {color:#84cfe5;}
.experience-link {border-color:#7b9cc7;color:#bad7f3;}
.experience-link:hover {color:#e9c2f7;}
.about-section {isolation:isolate;}
.about-section:before {content:"";position:absolute;z-index:-1;left:-10vw;top:0;width:85%;height:75%;background:radial-gradient(ellipse at 16% 40%,rgba(112,89,155,.105),transparent 65%);pointer-events:none;}
.about-year strong {color:#d6bafb;}
.about-signature .signature-rule {background:linear-gradient(#a2b7fa,#f2a7c7);}
.about-signature p em {color:#f0abc4;}
.collaborations__head {color:#abb5c9;font-size:10px;letter-spacing:.08em;}
.collaborations__list span {border-color:rgba(186,201,234,.19);color:#c2c8d4;background:rgba(136,160,200,.035);transition:background .25s,border-color .25s,transform .25s;}
.collaborations__list span:hover {background:rgba(131,162,244,.11);border-color:rgba(160,185,253,.32);transform:translateY(-2px);}
.community-section {background:linear-gradient(155deg,#131628,#151826 58%,#111827);border-top:1px solid rgba(226,219,255,.08);border-bottom:1px solid rgba(226,219,255,.07);}
.community-top {display:block;margin-bottom:48px;}
.community-top>div:first-child {max-width:730px;}
.community-top>div:first-child>p {max-width:560px;color:#adb9d0;}
.community-card {border-color:rgba(195,198,235,.17);background:rgba(255,255,255,.018);transition:transform .42s var(--ease),border-color .4s,background .4s,box-shadow .4s;}
.community-card:hover {transform:translateY(-6px);border-color:rgba(167,183,251,.46);background:rgba(146,145,227,.07);box-shadow:0 24px 55px rgba(4,8,29,.18);}
.community-card:nth-child(2):hover {border-color:rgba(135,205,226,.43);}
.community-card:nth-child(3):hover {border-color:rgba(246,173,205,.43);}
.community-card h3 em {color:#c6b9ff;}
.community-card:nth-child(2) h3 em {color:#8ccee8;}
.community-card:nth-child(3) h3 em {color:#f4b0cc;}
.community-card__icon {color:#bdccf1;}
/* A warm, light editorial break for a genuinely extensive skills directory. */
.technologies-section {position:relative;isolation:isolate;background:linear-gradient(165deg,#f6f5f6 0%,#f1f4fa 62%,#f7f2f6 100%);color:#1c2639;border-top:1px solid #eee9ee;overflow:hidden;}
.technologies-section:before {content:"";position:absolute;z-index:-1;right:-180px;top:-250px;width:700px;height:700px;pointer-events:none;background:radial-gradient(circle,rgba(178,192,245,.34),transparent 62%);}
.technologies-section:after {content:"";position:absolute;z-index:-1;left:-220px;bottom:-330px;width:760px;height:760px;background:radial-gradient(circle,rgba(252,198,213,.26),transparent 65%);pointer-events:none;}
.technologies-inner {padding-top:128px;padding-bottom:135px;}
.technologies-top {display:flex;justify-content:space-between;align-items:end;gap:55px;margin-bottom:43px;}
.technologies-eyebrow {color:#58729a;font:750 10px var(--display);letter-spacing:.18em;margin:0 0 20px;}
.technologies-top h2 {font:750 clamp(49px,5.2vw,82px)/1.12 var(--display);letter-spacing:-.08em;margin:0;}
.technologies-top h2 span {background:linear-gradient(110deg,#4e82c4,#8466bc,#cf769c);-webkit-background-clip:text;background-clip:text;color:transparent;}
.technologies-top>p {color:#647088;font-size:15px;line-height:1.85;max-width:360px;margin:0 0 8px;}
.tech-controls {display:flex;align-items:center;justify-content:space-between;gap:22px;padding:24px 0;border-top:1px solid #d5dbe7;border-bottom:1px solid #d5dbe7;}
.tech-filter-row {display:flex;gap:7px;align-items:center;flex-wrap:wrap;}
.tech-filter {border:1px solid transparent;background:transparent;color:#67748a;padding:9px 12px;border-radius:40px;font:600 11px var(--display);white-space:nowrap;transition:background .25s,color .25s,border-color .25s;}
.tech-filter:hover {color:#253c66;background:#e3eaf7;}
.tech-filter.is-active {background:#1c2943;color:white;border-color:#1c2943;box-shadow:0 5px 15px rgba(22,44,82,.12);}
.tech-search-label {position:relative;min-width:190px;display:flex;align-items:center;}
.tech-search-label svg {position:absolute;left:11px;width:16px;height:16px;fill:none;stroke:#6f809c;stroke-width:1.7;pointer-events:none;}
.tech-search-label input {width:100%;height:39px;border-radius:7px;border:1px solid #d6dce8;background:rgba(255,255,255,.72);outline:none;padding:0 11px 0 34px;color:#20324d;font-size:12px;}
.tech-search-label input:focus {border-color:#7796c8;box-shadow:0 0 0 3px rgba(116,147,212,.12);}
.tech-search-label input::placeholder {color:#8f9bb0;}
.tech-groups {display:grid;grid-template-columns:1fr 1fr;gap:0 45px;}
.tech-group {padding:31px 0 36px;border-bottom:1px solid #d7dce6;min-width:0;}
.tech-group[hidden],.tech-chip[hidden] {display:none!important;}
.tech-group__name {display:flex;align-items:center;gap:10px;margin-bottom:19px;}
.tech-group__stripe {width:5px;height:19px;border-radius:6px;background:#6a9cd8;}
.tech-group:nth-child(3n+2) .tech-group__stripe {background:#a58bd5;}
.tech-group:nth-child(3n+3) .tech-group__stripe {background:#e19db9;}
.tech-group h3 {margin:0;font:720 18px var(--display);letter-spacing:-.035em;}
.tech-group small {margin-left:auto;color:#8794a9;font:650 9px var(--display);letter-spacing:.07em;white-space:nowrap;}
.tech-pills {display:flex;flex-wrap:wrap;gap:8px;}
.tech-chip {font:550 12px var(--display);color:#40516d;background:rgba(255,255,255,.81);border:1px solid #dae1ee;padding:9px 12px;border-radius:7px;transition:transform .25s,box-shadow .25s,color .25s,border-color .25s;}
.tech-chip:hover {transform:translateY(-3px);box-shadow:0 8px 18px rgba(56,71,105,.11);border-color:#b3c2e5;color:#283d6c;}
.tech-empty {color:#566684;padding:45px 0;}
/* Contact section: a friendly invitation, not a hard sell. */
.contact-section {position:relative;isolation:isolate;overflow:hidden;}
.contact-section:before {content:"";position:absolute;z-index:-1;right:-80px;top:14%;height:450px;width:500px;opacity:.55;filter:blur(50px);background:radial-gradient(ellipse,rgba(103,76,181,.16),transparent 68%);}
.contact-title-wrap h2 em {color:#cfb9fb;}
.contact-primary {background:linear-gradient(115deg,#a7dff1,#d1baff);color:#151929;border-radius:9px;box-shadow:0 12px 25px rgba(80,91,176,.12);}
.contact-primary:hover {background:linear-gradient(115deg,#c0ebfa,#e2c9ff);transform:translateY(-2px);}
.site-footer {background:#0a0e17;border-top:1px solid #202b3b;}
.footer-inner {padding:35px 0;display:flex;align-items:center;gap:30px;justify-content:space-between;}
.footer-logo {font:720 23px var(--display);letter-spacing:-.065em;}
.footer-logo span {color:#86bbfa;}
.footer-credit {color:#8390a4;font-size:12px;letter-spacing:0;}
.footer-nav {display:flex;gap:22px;align-items:center;}
.footer-nav a {color:#a4afc1;font-size:12px;transition:color .25s;}
.footer-nav a:hover {color:#efd0f7;}
/* WCAG-friendly interactions and motion */
.reveal {transition-duration:.9s;}
.hero-intro.reveal.is-visible {animation:hero-enter 1.0s cubic-bezier(.15,.8,.17,1) both;}
@keyframes hero-enter {from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@media (max-width:1250px) {
  .desktop-nav {gap:16px;}
  .nav-shell {gap:24px;}
  .hero.hero--welcome h1 {font-size:clamp(61px,7.5vw,94px);}
  .tech-controls {align-items:flex-start;flex-direction:column;}
  .tech-search-label {width:min(360px,100%);}
}
@media (max-width:1020px) {
  .desktop-nav {gap:12px;}
  .desktop-nav a {font-size:11px;}
  .header-cta {min-width:104px;padding:10px 13px;}
  .hero.hero--welcome {min-height:720px;}
  .hero-inner {min-height:720px;}
  .hero.hero--welcome h1 {font-size:clamp(56px,7.4vw,79px);}
  .hero.hero--welcome .hero-summary {max-width:585px;}
  .technologies-top {align-items:start;}
  .tech-groups {gap:0 27px;}
}
@media (max-width:760px) {
  .site-header .nav-shell {height:70px;}
  .mobile-nav:not([hidden]) {top:70px;background:#111827;border-color:#28344b;}
  .mobile-nav a {color:#e2e7f1;}
  .hero.hero--welcome {min-height:665px;}
  .hero-inner {min-height:665px;padding-top:79px;padding-bottom:77px;width:calc(100% - 36px);}
  .hero-introduction {font-size:14px;margin-bottom:16px;}
  .hero-discipline {font-size:10px;letter-spacing:.18em;margin-bottom:20px;}
  .hero.hero--welcome h1 {font-size:clamp(45px,8.8vw,72px);line-height:1.2;letter-spacing:-.071em;}
  .hero.hero--welcome .hero-summary {font-size:14px;line-height:1.75;max-width:480px;margin-top:24px;}
  .hero.hero--welcome .hero-actions {gap:12px 20px;margin-top:30px;}
  .hero.hero--welcome .button {min-height:50px;font-size:12px;}
  .hero-socials {gap:12px 18px;margin-top:36px;}
  .hero-socials a {font-size:11px;}
  .hero-scroll-cue {font-size:8px;bottom:26px;}
  .hero-atmosphere--blue {width:650px;left:-20%;bottom:-380px;}
  .hero-atmosphere--pink {width:470px;right:-30%;top:10%;}
  .technologies-inner {padding-top:87px;padding-bottom:98px;}
  .technologies-top {display:block;margin-bottom:31px;}
  .technologies-top h2 {font-size:clamp(44px,8.2vw,65px);}
  .technologies-top>p {margin-top:22px;max-width:440px;font-size:14px;}
  .tech-filter-row {gap:3px;}
  .tech-filter {font-size:10px;padding:9px 11px;}
  .tech-groups {grid-template-columns:1fr;}
  .tech-group {padding:25px 0 28px;}
  .tech-group h3 {font-size:17px;}
  .tech-chip {font-size:11px;padding:9px 11px;}
  .community-top {display:block;}
  .contact-section h2 {font-size:clamp(55px,9vw,77px);}
  .footer-inner {display:flex;gap:18px;flex-wrap:wrap;justify-content:space-between;}
  .footer-nav {width:100%;gap:20px;justify-content:flex-start;}
}
@media (max-width:420px) {
  .hero.hero--welcome h1 {font-size:clamp(40px,9vw,48px);}
  .hero.hero--welcome {min-height:655px;}
  .hero-inner {min-height:655px;}
  .hero.hero--welcome .hero-actions {gap:6px 16px;}
  .hero.hero--welcome .button--solid {padding-inline:17px;}
  .hero-socials {gap:12px 14px;}
  .tech-group small {font-size:8px;letter-spacing:0;}
  .tech-filter-row {overflow-x:auto;max-width:100%;}
}
@media (prefers-reduced-motion:reduce) {
  .hero-atmosphere,.hero-spark,.hero-scroll-cue__arrow {animation:none!important;}
  .hero-intro.reveal.is-visible {animation:none!important;}
  .hero-sparks {display:none;}
}

/* Give tablet visitors a spacious menu rather than squeezing seven links into a narrow header. */
@media (max-width:920px) and (min-width:761px) {
  .desktop-nav,.search-trigger,.header-cta {display:none;}
  .mobile-toggle {display:flex;width:40px;height:42px;justify-content:center;flex-direction:column;gap:6px;}
  .mobile-toggle span {width:22px;height:2px;background:#eff0f6;transition:transform .3s;}
  .mobile-toggle[aria-expanded="true"] span:first-child {transform:translateY(4px) rotate(45deg);}
  .mobile-toggle[aria-expanded="true"] span:last-child {transform:translateY(-4px) rotate(-45deg);}
  .mobile-nav:not([hidden]) {display:flex;position:absolute;top:78px;left:0;right:0;background:#131a28;border-bottom:1px solid #334055;flex-direction:column;padding:14px 40px 24px;box-shadow:0 24px 40px rgba(0,0,0,.3);}
  .mobile-nav a {padding:14px 0;font:600 18px var(--display);border-bottom:1px solid #30394c;color:#e6e8f1;}
}
