:root{--ink:#17231f;--muted:#68746d;--paper:#f5f2e9;--paper-deep:#e9e5d9;--line:#d3d2c6;--accent:#b9e36d;--accent-ink:#496832;--dark:#1d2a25}
*{box-sizing:border-box}html{overflow-x:hidden;scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font:1rem/1.55 Arial,ui-sans-serif,system-ui,sans-serif}main{width:100%;max-width:1280px;margin:auto;padding:24px clamp(16px,5vw,72px) 56px}a{color:var(--ink);text-underline-offset:4px}nav{display:flex;justify-content:space-between;align-items:center;gap:20px;border-bottom:1px solid var(--line);padding-bottom:17px;font-size:.68rem}nav>span,.footer-identity,.project-title,h1,h2,.featured-copy strong,.case-card strong,.metric strong{font-family:Georgia,serif}nav>span{font-size:1rem;letter-spacing:-.03em}.nav-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 18px;margin:0;padding:0;list-style:none}.nav-links a{text-decoration:none}.nav-links a:hover,.nav-links a:focus-visible{color:var(--accent-ink)}.skip-link{position:absolute;left:16px;top:-48px;z-index:2;padding:10px 14px;background:var(--dark);color:var(--paper)}.skip-link:focus{top:16px}:focus-visible{outline:3px solid var(--accent-ink);outline-offset:4px}.profile-intro{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:clamp(44px,7vw,96px);align-items:center;padding:clamp(42px,6vw,70px) 0 38px}.eyebrow,.profile-kicker,.project-tag{color:var(--accent-ink);font-size:.67rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.profile-intro h1{max-width:760px;margin:14px 0 20px;font-size:clamp(3.5rem,7.8vw,7.2rem);font-weight:400;line-height:.88;letter-spacing:-.075em;text-wrap:balance}.lede{max-width:52ch;font-size:1.05rem;line-height:1.5}.profile-note{max-width:52ch;margin-top:12px;color:var(--muted);font-size:.88rem}.profile-actions,.links{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border:1px solid var(--ink);padding:10px 15px;text-decoration:none;font-size:.86rem;transition:background .2s ease,color .2s ease,transform .2s ease}.button:hover,.button:focus-visible{background:var(--accent);transform:translateY(-2px)}.button:active{transform:translateY(0)}.profile-actions .button:first-child{background:var(--dark);color:var(--paper);box-shadow:5px 5px 0 var(--accent)}.profile-actions .button:first-child:hover,.profile-actions .button:first-child:focus-visible{color:var(--ink)}.profile-aside{padding:22px;border:1px solid var(--line);background:#fbfaf5;box-shadow:12px 12px 0 var(--accent)}.profile-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.profile-list li{padding:13px 0;border-top:1px solid var(--line)}.profile-list strong{display:block;font-family:Georgia,serif;font-size:1.12rem;font-weight:400}.profile-list span,.note,.stack,.video-note{color:var(--muted);font-size:.86rem}.manifesto{display:grid;grid-template-columns:.8fr 2fr;gap:28px;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:11px 0}.manifesto strong{font:1.3rem Georgia,serif}.manifesto p{max-width:58ch;margin:0;color:var(--muted);font-size:.9rem}.section{border-top:1px solid var(--line);padding:46px 0}.section-intro{display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:26px}.section-intro p{max-width:40ch;margin:0;color:var(--muted);font-size:.9rem}.section-intro h2{margin:0;font-size:clamp(2rem,4vw,3.5rem);font-weight:400;letter-spacing:-.05em;line-height:1}.project-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.featured-link{display:block;text-decoration:none;transition:transform .25s ease}.featured-link:hover,.featured-link:focus-visible{transform:translateY(-5px)}.featured-visual{display:block;overflow:hidden;border:1px solid var(--line);background:var(--paper-deep)}.featured-visual img{display:block;width:100%;aspect-ratio:1.55;object-fit:cover;object-position:center;transition:transform .35s ease}.featured-link:hover img,.featured-link:focus-visible img{transform:scale(1.035)}.featured-copy{display:grid;gap:10px;padding:14px 0 0;border-top:1px solid var(--ink)}.featured-copy small{color:var(--accent-ink);font-size:.65rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.featured-copy strong{font-size:1.55rem;font-weight:400;line-height:1}.featured-copy span{max-width:34ch;color:var(--muted);font-size:.84rem;line-height:1.45}.all-projects-link{display:inline-block;margin-top:25px;font-size:.85rem}.compact-footer{display:grid;grid-template-columns:1fr auto;gap:24px;border-top:1px solid var(--line);padding-top:20px;color:var(--muted);font-size:.8rem}.footer-identity{color:var(--ink);font-size:1.15rem}.footer-identity small{display:block;margin-top:5px;color:var(--muted);font: .78rem Arial,sans-serif}.footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px 18px}.project-page .project-hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:8vw;align-items:center;padding:68px 0 64px}.project-title{max-width:760px;margin:18px 0 24px;font-size:clamp(3rem,7vw,6.4rem);font-weight:400;letter-spacing:-.07em;line-height:.9}.project-meta{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:20px;color:var(--muted);font-size:.82rem}.project-meta span+span:before{content:'·';margin-right:18px;color:#9da59e}.project-page section{border-top:1px solid var(--line);padding:58px 0}.section-grid{display:grid;grid-template-columns:.35fr 1fr;gap:7vw}.section-grid>*{min-width:0}.section-grid h2{margin:0;font-size:clamp(2rem,4vw,3.5rem);font-weight:400;letter-spacing:-.05em;line-height:1}.section-grid p{max-width:680px;text-wrap:pretty}.hero-card,.rag-card,.second-brain-card{padding:18px;background:var(--dark);color:var(--paper);box-shadow:16px 16px 0 var(--accent)}.triptych{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.triptych figure{margin:0}.triptych img{display:block;width:100%;aspect-ratio:1;object-fit:cover}.triptych figcaption{margin-top:9px;color:#c3ccc7;font-size:.66rem}.hero-card small,.rag-card small,.second-brain-card small{display:block;margin-top:14px;color:#cbd6dd;font-size:.8rem}.rag-card img,.second-brain-card img{display:block;width:100%;height:auto}.warungfit-banner{margin:0;border:1px solid #cddded;background:#eef6ff;box-shadow:14px 14px 0 #a9d4ff}.warungfit-banner img{display:block;width:100%;height:auto}.warungfit-banner figcaption{padding:10px 14px;color:#526477;background:#f7fbff;font-size:.72rem}.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:30px;background:var(--line)}.metric{padding:22px;background:var(--paper-deep)}.metric strong{display:block;font-size:2rem;font-weight:400}.metric small{color:var(--muted)}video{display:block;width:100%;aspect-ratio:16/9;object-fit:contain;margin-top:26px;background:#111}.video-transcript{margin-top:14px;border-top:1px solid var(--line);padding-top:12px;color:var(--muted);font-size:.86rem}.video-transcript summary{color:var(--ink);cursor:pointer;font-weight:700}.video-transcript p{margin:10px 0 0}.flow-list{display:grid;gap:10px;margin:26px 0 0;padding:0;list-style:none;counter-reset:flow}.flow-list li{counter-increment:flow;border-left:3px solid var(--accent);padding:10px 14px;background:#fbfaf5}.flow-list li:before{content:counter(flow,decimal-leading-zero);margin-right:12px;color:var(--accent-ink);font:600 .75rem Arial,sans-serif}.architecture-diagram,.case-image{display:block;width:100%;max-width:900px;height:auto;border:1px solid var(--line);background:#fbfaf5}.case-columns,.privacy-list,.warungfit-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:28px}.case-card,.privacy-item{border:1px solid var(--line);padding:20px;background:#fbfaf5}.case-card strong,.privacy-item h3{display:block;margin:0 0 7px;font-size:1.25rem;font-weight:400}.warungfit-shot{margin:0}.warungfit-shot img{display:block;width:100%;height:auto;border:1px solid var(--line);background:#fff}.warungfit-shot figcaption{margin-top:9px;color:var(--muted);font-size:.74rem}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:7px 11px;border:1px solid #cbd7b5;background:#eef6df;color:#45652f;font-size:.78rem;font-weight:700}.status-pill:before{content:'';width:7px;height:7px;border-radius:50%;background:#78a84b}.project-nav{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:20px}.project-nav a{font-size:.85rem}.project-nav a:last-child{text-align:right}.index-page .project-index{grid-template-columns:repeat(2,minmax(0,1fr))}.index-page .featured-link{border:1px solid var(--line);padding:0 0 16px;background:#fbfaf5}.index-page .featured-copy{padding:14px 16px 0}.index-page .featured-visual{border:0;border-bottom:1px solid var(--line)}
/* Homepage featured cards use one shared visual frame and equal-height flex content. */
.project-index .featured-link{display:flex;flex-direction:column;height:100%}
.featured-visual{aspect-ratio:1.7}
.featured-visual img{width:100%;height:100%;object-fit:cover;object-position:center}
.featured-copy{grid-template-rows:auto auto 1fr;flex:1}
.featured-copy span{font-size:.9rem}
.index-page .featured-link.project-colorisation .featured-visual img{content:url("assets/featured/project-01-colorisation-visual.png")}
.index-page .featured-link.project-rag .featured-visual img{content:url("assets/featured/project-02-rag-visual.png")}
.index-page .featured-link.project-warungfit .featured-visual img{content:url("assets/featured/project-03-warungfit-visual.png")}
.index-page .project-index{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.index-page .featured-link{position:relative;border:1px solid #d9ded7;border-radius:10px;padding:7px;background:#fffdf9;box-shadow:0 5px 14px rgba(44,67,61,.075),0 0 0 3px rgba(255,253,249,.9);overflow:hidden;transition:transform .22s ease,box-shadow .22s ease}
.index-page .featured-link:hover,.index-page .featured-link:focus-visible{transform:translateY(-4px);box-shadow:0 12px 22px rgba(44,67,61,.13),0 0 0 3px rgba(255,253,249,.96)}
.index-page .featured-visual{position:relative;flex:0 0 auto;aspect-ratio:1.6;overflow:hidden;border-radius:6px;background:#f1f2eb}
.index-page .featured-link.project-second-brain .featured-visual img{transform:scale(1.3) translateY(-5%);transform-origin:top center}
.index-page .featured-copy{display:flex;min-height:170px;flex-direction:column;gap:9px;padding:14px 16px 15px;border-top:1px solid #d9ded7}
.index-page .featured-copy small{display:flex;align-items:center;gap:8px;color:#50636a;font-size:.67rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.index-page .featured-copy small::before{content:"";width:8px;height:8px;border-radius:50%;background:#54ad83;flex:none}
.index-page .featured-link.project-rag .featured-copy small::before{background:#5aa3cf}
.index-page .featured-link.project-warungfit .featured-copy small::before{background:#61b881}
.index-page .featured-link.project-second-brain .featured-copy small::before{background:#7f8c88}
.index-page .featured-copy strong{font-size:1.45rem;line-height:1.05;letter-spacing:-.025em}
.index-page .featured-copy>span{color:#5b7076;font-family:Georgia,serif;font-size:.88rem;line-height:1.42}
.index-page .featured-copy::after{content:"→";display:grid;place-items:center;align-self:flex-end;width:35px;height:35px;margin-top:auto;border:1px solid #cbd5ce;border-radius:50%;color:#50636a;font-size:1.2rem}
@media(max-width:760px){nav{align-items:flex-start}.nav-links{justify-content:flex-start}.profile-intro,.project-page .project-hero{display:block;padding:48px 0 56px}.profile-intro h1{font-size:clamp(3.1rem,13vw,5rem)}.profile-aside{margin-top:32px}.manifesto,.section-grid{grid-template-columns:1fr;gap:12px}.section-intro{display:block}.section-intro p{margin-top:14px}.project-index,.index-page .project-index{grid-template-columns:1fr;gap:28px}.compact-footer{grid-template-columns:1fr}.footer-links{justify-content:flex-start}.case-columns,.privacy-list,.warungfit-gallery{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.featured-link,.button,.featured-arrow{transform:none!important}.featured-visual img{transform:none!important}}

/* Loop 1: compact proportions and target alignment. */
main{padding:20px clamp(24px,3.3vw,48px) 32px}
nav{padding-bottom:13px}
.profile-intro{grid-template-columns:minmax(0,1.28fr) minmax(300px,.72fr);gap:clamp(28px,4.6vw,62px);padding:clamp(38px,4.6vw,58px) 0 36px}
.profile-intro h1{max-width:680px;margin:13px 0 18px;font-size:clamp(3.7rem,7.2vw,6.9rem);line-height:.86}
.lede{line-height:1.45}
.profile-note{margin-top:11px}
.profile-actions,.links{margin-top:22px}
.profile-aside{display:flex;min-height:456px;flex-direction:column;padding:24px 26px;border-radius:8px;box-shadow:10px 10px 0 var(--accent)}
.profile-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:14px}
.profile-year{color:var(--muted);font:600 .68rem/1 Arial,sans-serif;letter-spacing:.12em}
.profile-list{flex:1;margin-top:14px}
.profile-list li{display:flex;flex-direction:column;justify-content:center;gap:4px;padding:14px 0;border-bottom:1px solid var(--line)}
.profile-row{display:flex;align-items:center;gap:14px}
.profile-row svg{width:22px;height:22px;flex:none;fill:none;stroke:var(--ink);stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
.profile-list li>span:last-child{padding-left:36px;color:var(--muted);font-size:.78rem}
.profile-quote{margin:15px 0 0;padding:0 0 0 36px;color:var(--muted);font:italic 1rem/1.3 Georgia,serif}
.manifesto{grid-template-columns:minmax(220px,.8fr) minmax(0,2fr);padding:14px 0}
.section{border-top:0;padding:40px 0 28px}
.section-intro{margin-bottom:20px}
.section-intro p{max-width:34ch}
#projets .project-index{align-items:stretch;gap:18px}
#projets .featured-link{display:flex;height:100%;flex-direction:column;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fbfaf5}
#projets .featured-visual{border:0}
#projets .featured-visual img{aspect-ratio:1.62}
#projets .featured-copy{display:flex;flex:1;min-height:180px;flex-direction:column;gap:9px;padding:13px 16px 16px;border-top:1px solid var(--line)}
#projets .featured-copy strong{font-size:1.5rem}
#projets .featured-category{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.67rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
.category-dot{width:8px;height:8px;border-radius:50%;background:#54ad83;flex:none}
.featured-link.project-rag .category-dot{background:#5aa3cf}
.featured-link.project-warungfit .category-dot{background:#61b881}
.featured-description{font-size:.9rem}
.featured-tech{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:5px}
.featured-tech span{border:1px solid var(--line);border-radius:999px;padding:3px 9px;color:var(--muted);font-size:.67rem;line-height:1.25}
.featured-arrow{display:grid;place-items:center;align-self:flex-end;width:36px;height:36px;margin-top:2px;border:1px solid var(--line);border-radius:50%;color:var(--ink);transition:background .2s ease,color .2s ease,transform .2s ease}
.featured-arrow svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.7}
.featured-link:hover .featured-arrow,.featured-link:focus-visible .featured-arrow{background:var(--ink);color:var(--paper);transform:translateX(2px)}
.all-projects-link{margin-top:20px}
.compact-footer{padding-top:16px}
.footer-identity small{margin-top:3px}

@media(max-width:760px){
  main{padding-inline:16px}
  .profile-intro{gap:0;padding:42px 0 46px}
  .profile-intro h1{font-size:clamp(3.1rem,13vw,5rem)}
  .profile-aside{min-height:0;padding:22px}
  #projets .project-index{gap:20px}
  #projets .featured-copy{min-height:0}
}

/* Shared case-study layouts. Keep these rules limited to selectors used by projets/*.html. */
main{max-width:1360px;padding-inline:clamp(24px,3.3vw,48px)}
.manifesto{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(0,2fr);gap:clamp(24px,4vw,64px);align-items:start}
.project-index{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
.project-page .project-hero{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);gap:clamp(34px,6vw,84px);align-items:center;padding:54px 0 64px}
.project-page .project-title{max-width:760px;margin:14px 0 20px;font-size:clamp(3rem,6.2vw,6.2rem);font-weight:400;line-height:.9;letter-spacing:-.07em;text-wrap:balance}
.project-meta{display:flex;flex-wrap:wrap;gap:8px 16px;margin:22px 0;color:var(--muted);font-size:.78rem}
.project-meta span+span{border-left:1px solid var(--line);padding-left:16px}
.project-page section{border-top:1px solid var(--line);padding:48px 0}
.section-grid{display:grid;grid-template-columns:minmax(190px,.35fr) minmax(0,1fr);gap:clamp(28px,6vw,84px);align-items:start}
.section-grid>*{min-width:0}
.section-grid h2{margin:0;font-size:clamp(2rem,4vw,3.5rem);font-weight:400;line-height:1;letter-spacing:-.05em}
.section-grid p{max-width:680px}
.hero-card,.rag-card,.second-brain-card{color:#f7f3e9;padding:18px}
.hero-card{background:var(--dark);box-shadow:16px 16px 0 var(--accent);transform:rotate(2deg)}
.rag-card,.second-brain-card{background:#17212b;box-shadow:16px 16px 0 var(--accent);transform:rotate(-1.5deg)}
.second-brain-card{transform:rotate(1.2deg)}
.hero-card img,.rag-card img,.second-brain-card img{display:block;width:100%;height:auto}
.hero-card small,.rag-card small,.second-brain-card small{display:block;margin-top:14px;color:#cbd6dd;font-size:.8rem}
.triptych{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.triptych figure{min-width:0;margin:0}
.triptych img{aspect-ratio:1;object-fit:cover}
.triptych figcaption{margin-top:9px;color:#c3ccc7;font-size:.66rem;line-height:1.3}
.architecture-diagram,.pipeline-diagram{display:block;width:100%;max-width:760px;height:auto;margin:28px auto 0;border:1px solid var(--line);background:#fbfaf5}
.pipeline-diagram{overflow:hidden}
.pipeline-diagram svg{display:block;width:100%;height:auto;min-width:0}
.flow-list{display:grid;gap:10px;margin:26px 0 0;padding:0;list-style:none;counter-reset:flow}
.flow-list li{counter-increment:flow;border-left:3px solid var(--accent);padding:10px 14px;background:#fbfaf5}
.flow-list li::before{content:counter(flow,decimal-leading-zero);margin-right:12px;color:var(--accent-ink);font:600 .75rem Arial,sans-serif}
.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;margin-top:30px;background:var(--line)}
.metric{background:var(--paper);padding:22px}
.metric strong{display:block;font-size:2rem;font-weight:400}
.metric small{color:var(--muted)}
.case-columns,.privacy-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:28px}
.case-card{border:1px solid var(--line);background:#fbfaf5;padding:20px}
.case-card strong{display:block;margin-bottom:7px;font-size:1.25rem;font-weight:400}
.privacy-list{gap:1px;background:var(--line)}
.privacy-item{background:#fbfaf5;padding:22px}
.privacy-item h3{margin:0 0 8px;font-family:Georgia,serif;font-size:1.3rem;font-weight:400}
.privacy-item p{margin:0;color:var(--muted);font-size:.9rem}
.warungfit-card{position:relative;min-height:560px;overflow:hidden;background:#dfefff;padding:28px;box-shadow:16px 16px 0 #176b49;transform:rotate(-1deg)}
.warungfit-banner{margin:0;overflow:hidden;border:1px solid #cddded;background:#eef6ff;box-shadow:14px 14px 0 #a9d4ff;transform:rotate(1deg)}
.warungfit-banner img{display:block;width:100%;height:auto}
.warungfit-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:30px}
.warungfit-shot{min-width:0;margin:0}
.warungfit-shot img{display:block;width:100%;height:auto;border:1px solid var(--line);background:#fff}
.warungfit-shot figcaption{margin-top:9px;color:var(--muted);font-size:.74rem;line-height:1.35}
video{display:block;width:100%;max-width:760px;height:auto;margin-top:26px;background:#111}
.video-transcript{margin-top:16px;color:var(--muted);font-size:.9rem}
.project-nav{display:flex;justify-content:space-between;gap:20px;margin-top:20px;padding-top:20px;border-top:1px solid var(--line);font-size:.86rem}
.compact-footer{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:24px;padding-top:16px}
.footer-identity small{display:block;color:var(--muted);font:normal .78rem/1.4 Arial,ui-sans-serif,system-ui,sans-serif}
.footer-links{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px 18px;font-size:.82rem}

@media(max-width:760px){
  .manifesto,.section-grid,.project-page .project-hero{grid-template-columns:1fr}
  .project-page .project-hero{display:grid;gap:36px;padding:48px 0 56px}
  .project-index,.index-page .project-index{grid-template-columns:1fr;gap:28px}
  .metrics,.case-columns,.privacy-list,.warungfit-gallery{grid-template-columns:1fr}
  .project-nav,.compact-footer{grid-template-columns:1fr;display:grid}
  .project-nav{gap:12px}
  .footer-links{justify-content:flex-start}
}

@media(max-width:520px){
  .triptych{grid-template-columns:1fr}
  .triptych img{aspect-ratio:1.5}
  .pipeline-diagram{overflow-x:auto}
  .pipeline-diagram svg{min-width:640px}
}

/* Quiet, non-interactive globe between the hero thesis and Repères. */
.home-page #contenu{position:relative}
.thinking-orb{position:absolute;z-index:0;top:clamp(190px,18vw,270px);left:clamp(48%,53%,58%);width:clamp(240px,23vw,300px);height:clamp(240px,23vw,300px);pointer-events:none;opacity:.72}
.thinking-orb canvas{display:block;width:100%;height:100%}
.home-page .profile-intro,.home-page .profile-intro>:not(.thinking-orb){position:relative;z-index:1}
@media(max-width:1040px){.thinking-orb{left:auto;right:24%;width:240px;height:240px;opacity:.56}}
@media(max-width:760px){.thinking-orb{display:none}}
@media(prefers-reduced-motion:reduce){.thinking-orb{opacity:.62}}
.home-page .profile-intro>.thinking-orb{position:absolute;z-index:0;top:50%;left:clamp(48%,53%,58%);transform:translate(-50%,-50%)}
@media(max-width:1040px){.home-page .profile-intro>.thinking-orb{left:auto;right:24%;width:240px;height:240px}}
@media(max-width:760px){.home-page .profile-intro>.thinking-orb{display:none}}

/* Loop 4: homepage target-like refinement. */
.home-page{--rail-right:7%}
.home-page .profile-intro{position:relative;isolation:isolate}
.home-page .profile-intro::before{content:"";position:absolute;inset:-24px -48px 0;z-index:-2;opacity:.42;background-image:linear-gradient(90deg,transparent 0 37%,rgba(76,137,153,.18) 37% 37.12%,transparent 37.12% 55%,rgba(76,137,153,.13) 55% 55.12%,transparent 55.12%),linear-gradient(transparent 0 28%,rgba(76,137,153,.15) 28% 28.12%,transparent 28.12% 66%,rgba(76,137,153,.12) 66% 66.12%,transparent 66.12%),radial-gradient(circle at 37% 28%,#5ba991 0 3px,transparent 3.5px),radial-gradient(circle at 55% 66%,#5ba991 0 3px,transparent 3.5px),radial-gradient(circle at 69% 46%,#5aa3c3 0 3px,transparent 3.5px),linear-gradient(rgba(84,128,126,.012) 1px,transparent 1px),linear-gradient(90deg,rgba(84,128,126,.012) 1px,transparent 1px);background-size:100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,56px 56px,56px 56px;mask-image:linear-gradient(90deg,transparent 0,black 14%,black 86%,transparent 100%)}
.home-page .profile-intro::after{content:"";position:absolute;left:24%;bottom:0;width:500px;height:220px;z-index:-1;opacity:.32;background-image:radial-gradient(circle,rgba(79,151,137,.48) .75px,transparent 1.15px),radial-gradient(circle,rgba(79,151,137,.22) .6px,transparent 1px);background-size:5px 5px,8px 8px;background-position:0 0,2px 3px;background-blend-mode:multiply;clip-path:polygon(0 100%,18% 70%,34% 82%,52% 35%,68% 60%,85% 18%,100% 49%,100% 100%);mask-image:linear-gradient(to bottom,black 0,black 68%,transparent 100%)}
.home-page .hero-copy{position:relative}
.home-page .hero-copy::before{content:"";position:absolute;left:48%;bottom:-18px;width:235px;height:145px;z-index:-1;pointer-events:none;opacity:.16;background-image:radial-gradient(circle,rgba(72,137,137,.42) .7px,transparent 1.1px);background-size:5px 5px;background-blend-mode:multiply;clip-path:polygon(0 100%,24% 68%,43% 80%,62% 38%,79% 57%,100% 22%,100% 100%);mask-image:linear-gradient(to bottom,black 0,transparent 92%)}
.home-page .eyebrow{display:flex;align-items:center;gap:12px}
.home-page .eyebrow::before{content:"";width:9px;height:9px;border-radius:50%;background:#5aa98c;box-shadow:0 0 0 4px rgba(90,169,140,.08)}
.home-page .button{gap:10px;min-height:50px;padding:12px 17px;border-radius:5px;font-size:.83rem}
.home-page .button svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.55}
.home-page .button-primary{background:var(--dark);color:var(--paper);box-shadow:4px 4px 0 #a9d88a}
.home-page .button-secondary{background:rgba(251,250,245,.7)}
.home-page .button-primary:hover,
.home-page .button-primary:focus-visible{background:var(--accent);color:var(--ink);box-shadow:4px 4px 0 var(--dark)}
.home-page .button-secondary:hover,
.home-page .button-secondary:focus-visible{background:var(--dark);color:var(--paper);box-shadow:4px 4px 0 #a9d88a}
.home-page .button-arrow{font-size:1.15rem;line-height:1}
.home-page .button:hover,.home-page .button:focus-visible{transform:translateY(-2px)}
.home-page .profile-aside{min-height:460px;background:rgba(251,250,245,.88);border:1px solid rgba(211,210,198,.78);box-shadow:10px 10px 0 #a9d8bd}
.home-page .profile-kicker{display:flex;align-items:center;gap:12px;color:var(--ink);font-family:Arial,ui-sans-serif,system-ui,sans-serif;font-size:.76rem;letter-spacing:.16em}
.home-page .profile-kicker svg{width:21px;height:21px;fill:none;stroke:#173147;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.55}
.home-page .profile-list{margin:8px 0 0}
.home-page .profile-list li{padding:14px 0}
.home-page .profile-row{gap:16px}
.home-page .profile-row svg{width:26px;height:26px;color:#18354d;stroke-width:1.45}
.home-page .profile-list li>span:last-child{font-family:Georgia,serif;font-size:.78rem}
.home-page .profile-quote{border-top:1px solid var(--line);padding:14px 0 0 42px;margin-top:0;font-size:.91rem}
.home-page .profile-quote span{display:inline-block;margin-top:7px;color:#61737a;font:600 .68rem/1 Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase}
.home-page .profile-quote::before{content:none}
@media(prefers-reduced-motion:no-preference){
  @keyframes profile-reperes-enter{from{opacity:0;transform:translateX(12px)}to{opacity:1;transform:translateX(0)}}
  .home-page .profile-list li{animation:profile-reperes-enter .28s cubic-bezier(.22,1,.36,1) both}
  .home-page .profile-list li:nth-child(1){animation-delay:60ms}
  .home-page .profile-list li:nth-child(2){animation-delay:120ms}
  .home-page .profile-list li:nth-child(3){animation-delay:180ms}
  .home-page .profile-list li:nth-child(4){animation-delay:240ms}
}
.home-page .manifesto{position:relative;grid-template-columns:minmax(0,1fr) auto;gap:clamp(24px,4vw,64px);align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:17px 0 18px}
.home-page .manifesto p{margin:0;color:#516873;font-family:Georgia,serif;font-size:.94rem;line-height:1.45}
.manifesto-signals{display:flex;gap:13px;align-self:start;padding-top:2px;color:#617680;font:600 .59rem/1 Arial,sans-serif;letter-spacing:.19em}
.manifesto-signals span{display:flex;flex-direction:column;align-items:center;gap:7px}
.manifesto-signals i{width:7px;height:7px;border-radius:50%;background:#53a080}.manifesto-signals span:nth-child(2) i{background:#57a3c3}.manifesto-signals span:nth-child(3) i{background:#75b4d4}
.home-page #projets{padding-top:41px}
.home-page .section-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px, .56fr);gap:32px;align-items:start;margin-bottom:20px}
.home-page .section-intro h2{position:relative;margin:0;padding-left:0;font-size:clamp(2.7rem,4.6vw,4rem);line-height:.98}
.home-page .section-intro h2::before{content:none}
.home-page .section-intro p{margin:7px 0 0;max-width:34ch;color:#536d77;font-family:Georgia,serif;font-size:.84rem;line-height:1.45}
.home-page #projets .featured-link{background:rgba(251,250,245,.76);border-color:#d8dcd3;border-radius:8px;box-shadow:0 5px 13px rgba(44,67,61,.07)}
.home-page #projets .featured-link:hover,.home-page #projets .featured-link:focus-visible{transform:translateY(-3px);box-shadow:0 10px 18px rgba(44,67,61,.11)}
.home-page #projets .featured-copy{padding:13px 16px 15px}
.home-page #projets .featured-copy strong{font-size:1.48rem;line-height:1.05}
.home-page #projets .featured-description{color:#61737a;line-height:1.38}
.home-page #projets .featured-tech span{background:#f8f8f3}
.home-page .compact-footer{position:relative;grid-template-columns:minmax(0,1fr) auto auto auto;border-top:1px solid var(--line);padding-top:26px;margin-top:14px;overflow:hidden}
.home-page .footer-links{position:relative;z-index:1;gap:8px 22px;font-weight:600}
.home-page .footer-links a{text-underline-offset:5px}
.footer-divider{width:1px;height:28px;background:#c5d0c7;align-self:center}
.footer-decoration{display:flex;align-items:stretch;gap:16px;min-height:54px}
.footer-grid{display:block;width:58px;height:54px;background-image:radial-gradient(circle,#6ba7a0 1px,transparent 1.3px);background-size:11px 11px;opacity:.48}
.footer-words{position:relative;z-index:1;padding-left:14px;border-left:1px solid #c5d0c7;color:#76918f;font:600 .57rem/1.7 Arial,sans-serif;letter-spacing:.17em}

@media(max-width:760px){
  .home-page .profile-intro::before{inset:-20px -16px 0;background-size:100% 100%,100% 100%,100% 100%,100% 100%,100% 100%,42px 42px,42px 42px}
  .home-page .profile-intro::after{left:auto;right:-4%;width:170px;height:120px}
  .home-page .hero-copy::before{display:none}
  .home-page .profile-aside{min-height:0}
  .home-page .section-intro{display:block}
  .home-page .section-intro p{margin:14px 0 0;padding-left:48px}
  .home-page .manifesto{grid-template-columns:1fr;gap:13px}
  .home-page .manifesto p{padding:0}
  .manifesto-signals{justify-content:flex-end}
  .home-page .compact-footer{grid-template-columns:1fr;gap:18px}
  .home-page .footer-links{justify-content:flex-start}
  .home-page .footer-divider{width:100%;height:1px}
  .home-page .footer-decoration{width:100%}
  .footer-words{width:max-content}
}

@media(prefers-reduced-motion:reduce){
  .home-page .button:hover,.home-page .button:focus-visible,.home-page #projets .featured-link:hover,.home-page #projets .featured-link:focus-visible{transform:none}
}

/* Homepage feedback pass. */
.home-page>nav{font-size:.8rem}
.home-page>nav .nav-links{font-size:.88rem;gap:8px 22px}
.home-page>nav .nav-links a,.index-page>nav .nav-links a{display:inline-flex;align-items:center;padding-block:6px}
.home-page>nav .nav-links a{min-height:40px}
.index-page>nav,.project-page>nav{font-size:.8rem}
.index-page>nav .nav-links,.project-page>nav .nav-links{font-size:.88rem;gap:8px 22px}
.home-page .profile-list li:first-child{border-top:0}
.home-page .manifesto-signals{gap:0;padding:7px;border:1px solid #d2ddd5;border-radius:999px;background:#f7faf4;box-shadow:inset 0 0 0 3px #fffdf9}
.home-page .manifesto-signals span{min-width:74px;padding:5px 9px;border-left:1px solid #d2ddd5;gap:6px;letter-spacing:.13em}
.home-page .manifesto-signals span:first-child{border-left:0}
.home-page .manifesto-signals i{width:8px;height:8px;border-radius:2px;transform:rotate(45deg)}
.home-page .manifesto-signals span:nth-child(1) i{background:#53a080}
.home-page .manifesto-signals span:nth-child(2) i{background:#57a3c3}
.home-page .manifesto-signals span:nth-child(3) i{background:#75b4d4}

@media(max-width:760px){
  .home-page .manifesto-signals{justify-content:stretch;width:max-content;max-width:100%}
  .home-page .manifesto-signals span{min-width:0}
}

/* Loop 1: homepage card contours and Repères surface. */
.home-page>nav .nav-links{
  margin-left:auto;
  padding-right:28px;
  border-right:1px solid var(--line);
}
.home-page>nav::after{
  content:"";
  display:block;
  flex:none;
  width:14px;
  height:14px;
  margin-left:-8px;
  border-radius:50%;
  background:#70bf96;
  box-shadow:0 0 0 4px rgba(112,191,150,.1);
}
.home-page .profile-intro{
  grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);
  gap:clamp(30px,4.8vw,58px);
  padding:clamp(46px,5.2vw,64px) 0 38px;
}
.home-page .profile-intro h1{
  max-width:640px;
}
.home-page .profile-aside{
  background:#fffdf9;
  border:1px solid #dde3dc;
  padding:24px 27px 22px;
  box-shadow:9px 9px 0 rgba(169,216,189,.72);
}
.home-page .profile-heading,
.home-page .profile-list li,
.home-page .profile-quote{
  border-color:#d6ddd7;
}
.home-page .profile-list li{
  padding-top:16px;
  padding-bottom:16px;
}
.home-page #projets .project-index{
  grid-auto-rows:1fr;
}
.home-page #projets .featured-link{
  background:#fffdf9;
  border:1px solid #e6e4dc;
  border-radius:9px;
  padding:7px;
  box-shadow:0 4px 12px rgba(44,67,61,.08),0 0 0 3px rgba(255,253,249,.92);
}
.home-page #projets .featured-visual{
  flex:0 0 auto;
  aspect-ratio:1.62;
  overflow:hidden;
  border-radius:5px;
}
.home-page #projets .featured-visual img{
  display:block;
  width:100%;
  height:100%;
  aspect-ratio:auto;
  object-fit:cover;
}
.home-page #projets .featured-copy{
  min-height:180px;
  border-top:1px solid #e0e1da;
}
.home-page #projets .featured-link:hover,
.home-page #projets .featured-link:focus-visible{
  box-shadow:0 8px 16px rgba(44,67,61,.11),0 0 0 3px rgba(255,253,249,.92);
}

@media(max-width:760px){
  .home-page>nav .nav-links{margin-left:0;padding-right:0;border-right:0}
  .home-page>nav::after{margin-left:0}
  .home-page #projets .featured-link{
    padding:6px;
  }
}

/* Loop 2: homepage project-card geometry and interaction polish. */
.home-page #projets .featured-link{
  border-color:#d9ded7;
  border-radius:10px;
  padding:7px;
  box-shadow:0 5px 14px rgba(44,67,61,.075),0 0 0 3px rgba(255,253,249,.9);
  transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;
}
.home-page #projets .featured-link:hover,
.home-page #projets .featured-link:focus-visible{
  border-color:#c8d5cc;
  box-shadow:0 12px 22px rgba(44,67,61,.13),0 0 0 3px rgba(255,253,249,.96);
  transform:translateY(-4px);
}
.home-page #projets .featured-visual{
  aspect-ratio:1.6;
  border-radius:6px;
  background:#f1f2eb;
}
.home-page #projets .featured-visual img{
  transition:transform .35s ease;
}
.home-page #projets .featured-link:hover .featured-visual img,
.home-page #projets .featured-link:focus-visible .featured-visual img{
  transform:scale(1.025);
}
.home-page #projets .featured-copy{
  min-height:188px;
  gap:10px;
  padding:15px 17px 16px;
  border-top-color:#d9ded7;
}
.home-page #projets .featured-copy strong{
  font-size:1.52rem;
  line-height:1.04;
  letter-spacing:-.025em;
}
.home-page #projets .featured-description{
  color:#5b7076;
  font-family:Georgia,serif;
  font-size:.88rem;
  line-height:1.42;
}
.home-page #projets .featured-tech{
  gap:6px;
  padding-top:6px;
}
.home-page #projets .featured-tech span{
  border-color:#d6dcd5;
  background:#f8f8f3;
  padding:4px 9px;
  color:#50636a;
  line-height:1.15;
}
.home-page #projets .featured-arrow{
  width:35px;
  height:35px;
  margin-top:3px;
  border-color:#cbd5ce;
  transition:background .22s ease,color .22s ease,transform .22s ease,border-color .22s ease;
}
.home-page #projets .featured-link:hover .featured-arrow,
.home-page #projets .featured-link:focus-visible .featured-arrow{
  border-color:var(--ink);
}

@media(max-width:760px){
  .home-page #projets .featured-link{
    padding:6px;
  }
  .home-page #projets .featured-copy{
    min-height:0;
    padding:14px 15px 15px;
  }
}

@media(max-width:760px){
  .home-page>nav,.index-page>nav,.project-page>nav{
    display:grid;
    grid-template-columns:minmax(0,1fr) auto;
    row-gap:10px;
    align-items:center;
  }
  .home-page>nav>span,.index-page>nav>span,.project-page>nav>span{
    grid-column:1;
    grid-row:1;
  }
  .home-page>nav .nav-links,.index-page>nav .nav-links,.project-page>nav .nav-links{
    grid-column:1 / -1;
    grid-row:2;
    width:100%;
    flex-wrap:nowrap;
    justify-content:flex-start;
    gap:8px 20px;
  }
  .home-page>nav::after{
    grid-column:2;
    grid-row:1;
    margin-left:auto;
  }
}

/* Reverse Copilot case study: reuse the portfolio palette and typography. */
.reverse-page .rc-hero-visual{margin:0;background:var(--dark);box-shadow:12px 12px 0 var(--accent);border:1px solid var(--line)}
.rc-hero-visual img{display:block;width:100%;height:auto}.rc-hero-visual figcaption{padding:12px 16px;color:var(--paper);font-size:.75rem}
.rc-jump{display:flex;flex-wrap:wrap;gap:12px 24px;padding:15px 0;border-top:1px solid var(--line);font-size:.85rem}
.reverse-page details{margin-top:20px;padding:16px;border:1px solid var(--line);background:#fbfaf5}.reverse-page summary{cursor:pointer;font-weight:700;line-height:1.5}
.reverse-page pre{white-space:pre-wrap;overflow-wrap:anywhere;padding:18px;background:var(--dark);color:var(--paper);font: .86rem/1.7 Consolas,monospace}
.reverse-page code{overflow-wrap:anywhere}.rc-list{padding-left:22px}.rc-list li{margin:12px 0}.rc-approaches{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:24px}
.rc-approaches article{padding:18px;border-top:3px solid var(--accent-ink);background:#fbfaf5}.rc-approaches h3{font:1.3rem Georgia,serif;margin:0 0 12px}.rc-approaches p{font-size:.9rem}
.rc-chart{max-width:980px;margin:44px auto 0}.rc-chart img{display:block;width:100%;height:auto;border:1px solid var(--line)}.rc-chart figcaption{margin-top:14px;font-size:.9rem;max-width:80ch}.rc-chart-note{max-width:980px;margin:16px auto;color:var(--muted);font-size:.85rem}
.reverse-page .rc-chart-data,.reverse-page .rc-method{max-width:980px;margin:18px auto 0}.rc-table-scroll{overflow-x:auto;margin-top:18px}.reverse-page table{border-collapse:collapse;width:100%;font-size:.85rem}.reverse-page caption{text-align:left;font-weight:700;margin-bottom:12px}.reverse-page th,.reverse-page td{text-align:left;padding:12px;border-bottom:1px solid var(--line);vertical-align:top}.reverse-page th{font-weight:600}.reverse-page thead{background:var(--paper-deep)}
.project-reverse .category-dot,.project-reverse .featured-copy small::before{background:#719333}.project-rag .category-dot{background:#5aa3cf}.project-warungfit .category-dot{background:#61b881}
@media(max-width:760px){.rc-approaches{grid-template-columns:1fr}.reverse-page .project-hero{display:block}.reverse-page .rc-hero-visual{margin-top:34px}.reverse-page .rc-chart{overflow-x:auto}.rc-chart img{min-width:660px}.rc-chart{padding-bottom:10px}.rc-chart figcaption{min-width:0}.reverse-page .project-title{font-size:clamp(2.8rem,11vw,4rem)}.reverse-page .rc-hero-visual{box-shadow:7px 7px 0 var(--accent)}}

.project-reverse .featured-visual{background:var(--dark)}
.project-reverse .featured-visual img{object-fit:contain}
@media(min-width:761px) and (max-width:1040px){.home-page .profile-intro::before{left:-24px;right:-24px}}
