:root {
  --paper:#f6f3eb; --ink:#193c33; --olive:#536243; --clay:#ad5034;
  --muted:#586157; --line:#cbcdbf; --sage:#e7e9df; --sand:#ede6d8;
  --serif:'Cormorant Garamond',Georgia,serif; --sans:Manrope,Arial,sans-serif;
  color-scheme:light;
}
* { box-sizing:border-box; }
html { scroll-behavior:smooth; scroll-padding-top:28px; }
body { margin:0; color:var(--ink); background:var(--paper); font:400 15px/1.75 var(--sans); -webkit-font-smoothing:antialiased; }
body::before { content:''; position:fixed; inset:0; z-index:-1; pointer-events:none; background-image:linear-gradient(#45533d0d 1px,transparent 1px),linear-gradient(90deg,#45533d0d 1px,transparent 1px); background-size:40px 40px; }
h1,h2,h3,h4,p,figure { margin:0; }
h1,h2,h3 { font-family:var(--serif); font-weight:500; line-height:1.05; }
em { color:var(--clay); font-weight:400; }
a { color:inherit; text-decoration:none; }
button { font:inherit; cursor:pointer; }
button,a,summary { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
:is(a,button,summary):focus-visible { outline:3px solid var(--clay); outline-offset:5px; }
img { display:block; max-width:100%; }
.wrap { width:min(1240px,calc(100% - 112px)); margin-inline:auto; }
.signal,.mini-label { font:600 11px/1.6 var(--sans); text-transform:uppercase; letter-spacing:.15em; }
.signal { color:var(--olive); }
.skip-link { position:fixed; left:18px; top:-100px; padding:12px 18px; background:var(--ink); color:var(--paper); z-index:20; }
.skip-link:focus { top:12px; }
.site-header { display:flex; align-items:center; justify-content:space-between; gap:24px; min-height:112px; border-bottom:1px solid var(--line); }
.signature { display:flex; align-items:center; gap:17px; font:italic 500 51px/1 var(--serif); color:var(--clay); }
.signature-logo { width:126px; height:auto; flex:none; }
.signature>span { font:500 20px/1.25 var(--serif); color:var(--ink); border-left:1px solid var(--line); padding-left:17px; }
.signature small { display:block; margin-top:6px; font:400 9px/1.5 var(--sans); letter-spacing:.11em; text-transform:uppercase; }
.site-header nav { display:flex; align-items:center; gap:27px; font-size:12px; }
.site-header nav>a:hover { color:var(--clay); }
.nav-contact { border:1px solid var(--ink); padding:10px 17px; }
.nav-contact span { margin-left:22px; font-size:18px; }
.menu-toggle { display:none; }
.cover { padding-top:52px; padding-bottom:64px; }
.cover-grid { display:grid; grid-template-columns:1.05fr 1fr; gap:64px; align-items:center; }
.title-block { padding-block:14px 20px; }
.title-block>.signal { font-size:10px; letter-spacing:.13em; margin-bottom:28px; }
h1 { font-size:clamp(88px,9.5vw,142px); line-height:.79; letter-spacing:-.065em; }
h1 em { display:inline-block; margin-top:10px; }
.hero-motto { font:500 clamp(27px,2.6vw,37px)/1.2 var(--serif); margin-top:32px; letter-spacing:-.015em; }
.subtitle { max-width:420px; font-size:14px; line-height:1.9; color:var(--muted); margin-top:18px; }
.hero-actions { display:flex; gap:22px; flex-wrap:wrap; align-items:center; margin-top:28px; }
.button { display:inline-flex; gap:25px; align-items:center; justify-content:center; padding:13px 19px; background:var(--olive); color:var(--paper); font-size:12px; font-weight:600; border:1px solid var(--olive); border-radius:2px; transition:background .15s; }
.button:hover { background:var(--ink); }
.button>span { font-size:20px; line-height:1; }
.text-link { font-size:12px; padding:4px 0; border-bottom:1px solid var(--line); }
.text-link:hover { color:var(--clay); border-color:var(--clay); }
.hero-note { display:flex; align-items:center; gap:13px; font-size:10px; letter-spacing:.02em; color:var(--muted); margin-top:29px; }
.note-line { display:block; width:30px; height:1px; background:var(--clay); }
.hero-portrait { position:relative; align-self:center; justify-self:center; width:min(100%,350px); padding-bottom:28px; min-width:0; }
.hero-portrait>img { width:100%; height:310px; object-fit:cover; object-position:63% 40%; }
.hero-portrait figcaption { position:relative; width:max-content; max-width:calc(100% + 12px); margin:-34px 0 0 -18px; background:var(--paper); padding:18px 22px 20px; box-shadow:6px 8px 0 #193c3314; transform:rotate(-3deg); font:500 24px/1.08 var(--serif); }
.hero-portrait figcaption>.signal { display:block; margin-bottom:13px; font-size:9px; }
.hero-portrait figcaption em { color:var(--ink); }
.portrait-note { position:absolute; bottom:6px; right:0; font-size:10px; color:var(--muted); letter-spacing:.05em; }
.role-explorer { margin-top:53px; }
.role-rail { display:grid; grid-template-columns:repeat(3,1fr); border-block:1px solid var(--line); }
.role-rail button { display:flex; align-items:center; justify-content:center; gap:14px; background:transparent; border:none; border-bottom:2px solid transparent; color:var(--muted); padding:19px 10px; font-size:12px; text-align:left; transition:background .15s; }
.role-rail button span { font:italic 400 22px/1 var(--serif); color:var(--clay); }
.role-rail button:hover { background:#e7e9df70; }
.role-rail button.active { border-bottom-color:var(--clay); color:var(--ink); background:#e7e9df80; }
.role-card { display:grid; grid-template-columns:1fr 1.5fr 76px; gap:32px; align-items:center; padding:28px 0 0; min-height:132px; }
.role-card .signal { font-size:9px; margin-bottom:8px; }
.role-card h2 { font-size:28px; }
.role-card>p { font-size:13px; color:var(--muted); line-height:1.8; }
.role-card-logo { width:70px; max-height:60px; object-fit:contain; }
.role-card-logo.is-hidden { visibility:hidden; }
.chapter { padding:82px max(56px,calc((100vw - 1240px)/2)); }
.chapter-heading { margin-bottom:42px; }
.chapter-heading>.signal { margin-bottom:21px; }
.chapter-heading h2 { font-size:clamp(42px,4.5vw,64px); letter-spacing:-.03em; max-width:900px; }
.chapter-intro { margin-top:20px; color:var(--muted); max-width:550px; font-size:14px; }
.dark { background:var(--sage); border-block:1px solid var(--line); }
.dark em { color:var(--olive); }
.orbit-timeline { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); column-gap:24px; }
.orbit-timeline article { position:relative; padding-top:23px; border-top:1px solid #aab59f; }
.orbit-timeline article::before { content:''; width:7px; height:7px; border-radius:50%; background:var(--olive); position:absolute; top:-4px; left:0; }
.orbit-timeline article>span { font:400 36px/1 var(--serif); color:var(--olive); }
.orbit-timeline h3 { font-size:26px; margin-top:21px; }
.orbit-timeline p { margin-top:12px; color:var(--muted); font-size:12px; line-height:1.85; }
.mission-board { display:grid; grid-template-columns:repeat(4,1fr); gap:28px; }
.mission { border-top:1px solid var(--line); padding-top:20px; }
.mission>span { color:var(--clay); font:italic 400 26px/1 var(--serif); }
.mission h3 { font-size:31px; margin-top:22px; min-height:65px; }
.mission p { font-size:13px; color:var(--muted); margin-top:17px; }
.projects { background:var(--ink); color:var(--paper); }
.projects .signal { color:#d6decc; }
.projects em { color:#d9c6a2; }
.proof-stack { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.proof-stack a { display:flex; flex-direction:column; border-bottom:1px solid #f6f3eb55; padding-bottom:24px; position:relative; }
.proof-stack img { aspect-ratio:1.42; width:100%; object-fit:cover; margin-bottom:23px; transition:filter .2s; }
.proof-stack a:hover img { filter:brightness(1.08); }
.proof-stack a::after { content:'Explorer le projet ↗'; font-size:11px; margin-top:auto; padding-top:23px; color:#d9c6a2; }
.proof-stack strong { font:500 34px/1.1 var(--serif); margin-bottom:13px; }
.proof-stack span { font-size:13px; color:#d5dfcf; line-height:1.85; }
.deep-dive { padding-bottom:72px; }
.detail-grid { border-top:1px solid var(--line); }
details { border-bottom:1px solid var(--line); scroll-margin-top:30px; }
summary { list-style:none; display:grid; grid-template-columns:40px 1fr 34px; gap:15px; align-items:center; padding:25px 0; cursor:pointer; }
summary::-webkit-details-marker { display:none; }
summary>span { color:var(--clay); font:italic 400 24px/1 var(--serif); }
summary strong { font:500 29px/1.2 var(--serif); }
summary::after { content:'+'; display:grid; place-items:center; height:30px; width:30px; border:1px solid var(--line); border-radius:50%; color:var(--olive); font:400 23px/1 var(--sans); }
details[open]>summary::after { content:'−'; }
summary:hover strong { color:var(--clay); }
.detail-content { display:grid; grid-template-columns:1.1fr 1fr 1fr; gap:24px; padding:0 0 30px 55px; }
.detail-card { padding:22px; background:var(--sage); font-size:13px; }
.detail-card.major { background:var(--sand); }
.detail-card p+p { margin-top:13px; }
.mini-label { font-size:9px; color:var(--olive); margin-bottom:11px; }
.quote-card>p { font:500 25px/1.25 var(--serif); }
.partner-logos { display:flex; align-items:center; flex-wrap:wrap; gap:20px; }
.partner-logos img { max-width:80px; max-height:56px; object-fit:contain; }
.badge-card { grid-column:span 2; display:flex; flex-wrap:wrap; align-content:center; align-items:center; gap:10px; }
.badge-card span { border:1px solid #aab59f; padding:6px 10px; font-size:11px; }
.detail-content.with-photo { grid-template-columns:1fr 1.1fr; align-items:start; }
.detail-content.with-photo>img { width:100%; height:310px; object-fit:cover; }
.detail-content.with-photo>div { display:grid; gap:16px; }
.detail-photo-tokyo { object-position:center 45%; }
.detail-photo-crapa { object-position:center 50%; }
.credentials { background:var(--sand); border-block:1px solid var(--line); }
.skill-passport { border:1px solid #b4b7a5; background:#f6f3eb90; }
.passport-head { display:flex; justify-content:space-between; align-items:center; gap:24px; padding:28px 32px; border-bottom:1px solid #b4b7a5; }
.passport-head p { font-size:9px; letter-spacing:.15em; text-transform:uppercase; color:var(--muted); margin-bottom:8px; }
.passport-head h3 { font-size:34px; }
.passport-head>.terrain-stamp { position:relative; flex:none; border:3px solid var(--clay); border-radius:999px; padding:13px 20px; font-size:12px; font-weight:700; line-height:1.4; color:var(--clay); letter-spacing:.1em; text-transform:uppercase; transform:rotate(-6deg); }
.terrain-stamp::after { content:''; position:absolute; inset:3px; border:1px solid currentColor; border-radius:inherit; opacity:.55; pointer-events:none; }
.passport-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:32px; padding:30px 32px; }
.passport-grid section+section { padding-left:28px; border-left:1px solid var(--line); }
.passport-grid h4 { font:600 10px/1.7 var(--sans); text-transform:uppercase; letter-spacing:.09em; color:var(--olive); }
.passport-grid ul { list-style:none; padding:0; margin:18px 0 0; font-size:13px; }
.passport-grid li { padding-block:9px; border-bottom:1px solid #cbcdbf80; }
.contact-layout { display:grid; grid-template-columns:1.25fr 1fr; gap:80px; align-items:center; }
.contact-card h2 { font-size:clamp(43px,4.8vw,66px); letter-spacing:-.03em; margin-top:22px; }
.contact-intro { font-size:14px; color:var(--muted); margin-top:24px; max-width:430px; }
.contact-actions { display:flex; gap:12px 22px; flex-wrap:wrap; align-items:center; margin-top:29px; }
.contact-actions a { font-size:12px; padding-block:6px; border-bottom:1px solid var(--line); }
.contact-actions a:first-child { padding:12px 17px; background:var(--olive); color:var(--paper); border:1px solid var(--olive); }
.contact-actions a:hover { border-color:var(--clay); }
.virtual-card { position:relative; width:100%; max-width:440px; justify-self:end; margin-top:48px; padding:99px 30px 29px; border:1px solid #193c332c; border-radius:26px; background:linear-gradient(140deg,var(--paper),var(--sand)); box-shadow:0 22px 48px #193c331c,4px 5px 0 #e7e9df; transform:rotate(1.4deg); }
.virtual-card::after { content:''; position:absolute; inset:12px; border:1px solid #193c331c; border-radius:17px; pointer-events:none; }
.card-kicker { font-size:10px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--clay); margin-bottom:13px; }
.card-photo-frame { position:absolute; top:-47px; left:29px; width:136px; height:136px; padding:5px; border:3px solid var(--clay); border-radius:25px; background:var(--paper); box-shadow:0 12px 24px #193c3326; transform:rotate(-5deg); z-index:1; }
.card-avatar { width:100%; height:100%; border-radius:17px; object-fit:cover; object-position:center 24%; }
.virtual-card h3 { font-size:45px; line-height:1.04; letter-spacing:-.035em; margin-bottom:8px; }
.virtual-card>p:not(.card-kicker) { font-size:12px; font-weight:500; line-height:1.7; color:var(--muted); max-width:300px; margin-bottom:20px; }
.card-qr { display:block; width:148px; height:148px; background:white; padding:7px; border:1px solid var(--line); border-radius:15px; margin:0 0 23px; box-shadow:0 3px 10px #193c3310; }
.card-qr img { width:100%; height:100%; object-fit:contain; image-rendering:pixelated; }
.virtual-card>strong { display:block; font-size:11px; font-weight:600; line-height:1.8; }
.virtual-card>span { display:block; font-size:11px; color:var(--muted); margin-top:3px; }
.site-footer { border-top:1px solid var(--line); display:flex; justify-content:space-between; gap:22px; align-items:center; padding-block:26px; font-size:10px; color:var(--muted); }
.site-footer a:hover { color:var(--clay); }
@media(min-width:1450px) { .cover-grid { gap:95px; } }
@media(max-width:1100px) {
  .wrap { width:calc(100% - 64px); }
  .chapter { padding:70px 32px; }
  .site-header nav { gap:17px; }
  .cover-grid { gap:40px; }
  .title-block>.signal { max-width:270px; line-height:1.9; }
  .hero-portrait>img { height:300px; }
  .hero-portrait figcaption { padding:18px 20px; font-size:24px; }
  .mission-board { gap:20px; }
  .mission h3 { font-size:28px; }
  .contact-layout { gap:42px; grid-template-columns:1.1fr 1fr; }
  .virtual-card { padding-inline:26px; }
}
@media(max-width:800px) {
  .site-header { min-height:95px; position:relative; }
  .signature { font-size:43px; }
  .signature>span { font-size:19px; }
  .menu-toggle { display:flex; gap:16px; align-items:center; background:transparent; color:var(--ink); border:1px solid var(--line); padding:8px 12px; font-size:12px; }
  .site-header nav { display:none; position:absolute; top:85px; left:0; right:0; background:var(--paper); border:1px solid var(--line); padding:22px; z-index:5; box-shadow:0 10px 20px #193c3314; }
  .site-header nav.is-open { display:flex; flex-direction:column; align-items:stretch; gap:18px; }
  .cover { padding-top:35px; }
  .cover-grid { gap:27px; }
  h1 { font-size:clamp(78px,12vw,110px); }
  .hero-motto { font-size:29px; }
  .hero-portrait figcaption { font-size:22px; padding:17px; }
  .hero-portrait>img { height:260px; object-position:68% 40%; }
  .subtitle { font-size:13px; }
  .hero-actions { gap:15px; }
  .hero-note { font-size:9px; }
  .role-rail button { font-size:10px; gap:8px; padding:16px 10px; }
  .role-card { grid-template-columns:1fr 1.3fr; gap:20px; min-height:155px; }
  .role-card-logo { display:none; }
  .role-card h2 { font-size:26px; }
  .orbit-timeline { grid-template-columns:repeat(3,1fr); row-gap:32px; }
  .mission-board { grid-template-columns:repeat(2,1fr); gap:32px; }
  .mission h3 { min-height:0; }
  .proof-stack { gap:18px; }
  .proof-stack strong { font-size:29px; }
  .proof-stack span { font-size:12px; }
  .detail-content { padding-left:0; grid-template-columns:1fr 1fr; }
  .detail-content>.major { grid-column:1/-1; }
  .badge-card { grid-column:1/-1; }
  .passport-grid { padding:24px; gap:20px; }
  .passport-grid section+section { padding-left:15px; }
  .passport-grid ul { font-size:12px; }
  .contact-layout { grid-template-columns:1fr; gap:36px; }
  .virtual-card { justify-self:center; }
  .site-footer { flex-wrap:wrap; gap:10px 24px; }
}
@media(max-width:600px) {
  .site-header { gap:10px; }
  .signature { gap:10px; }
  .signature-logo { width:100px; }
  .signature>span { font-size:17px; padding-left:10px; }
  .signature small { font-size:8px; max-width:100px; }
  .menu-toggle { padding:8px 9px; gap:8px; font-size:11px; }
  .wrap { width:calc(100% - 40px); }
  .chapter { padding:58px 20px; }
  .cover-grid { grid-template-columns:1fr; gap:26px; }
  .title-block { padding:4px 0 0; }
  .title-block>.signal { max-width:none; margin-bottom:27px; font-size:9px; }
  h1 { font-size:clamp(91px,23vw,132px); }
  .hero-motto { font-size:31px; margin-top:24px; }
  .subtitle { max-width:440px; font-size:14px; line-height:1.8; margin-top:15px; }
  .hero-actions { margin-top:24px; gap:16px; }
  .button { font-size:11px; padding:12px 14px; gap:16px; }
  .text-link { font-size:11px; }
  .hero-note { margin-top:23px; font-size:9px; }
  .hero-portrait { display:grid; grid-template-columns:112px minmax(0,1fr); gap:14px; align-items:center; width:100%; margin:12px 0 0; padding-bottom:26px; }
  .hero-portrait>img { height:146px; object-position:65% 40%; }
  .hero-portrait figcaption { width:auto; max-width:none; margin:0; font-size:21px; padding:16px; }
  .portrait-note { font-size:9px; }
  .role-explorer { margin-top:30px; }
  .role-rail { grid-template-columns:1fr; border-bottom:none; }
  .role-rail button { justify-content:flex-start; padding:13px 15px; gap:17px; font-size:12px; border-bottom:1px solid var(--line); border-left:2px solid transparent; }
  .role-rail button.active { border-bottom-color:var(--line); border-left-color:var(--clay); }
  .role-card { grid-template-columns:1fr; gap:14px; padding-top:23px; min-height:215px; }
  .role-card>p { font-size:13px; }
  .cover { padding-bottom:42px; }
  .chapter-heading { margin-bottom:30px; }
  .chapter-heading>.signal { margin-bottom:16px; font-size:10px; }
  .chapter-heading h2 { font-size:42px; }
  .orbit-timeline { grid-template-columns:1fr; gap:0; padding-left:7px; }
  .orbit-timeline article { display:grid; grid-template-columns:61px 1fr; gap:6px 18px; border-top:none; border-left:1px solid #aab59f; padding:0 0 28px 22px; }
  .orbit-timeline article:last-child { padding-bottom:0; }
  .orbit-timeline article::before { left:-4px; top:9px; }
  .orbit-timeline article>span { font-size:28px; }
  .orbit-timeline h3 { margin-top:1px; font-size:25px; }
  .orbit-timeline p { grid-column:2; margin-top:0; font-size:12px; }
  .mission-board { gap:27px 21px; }
  .mission h3 { font-size:28px; margin-top:17px; }
  .mission p { font-size:12px; margin-top:14px; }
  .proof-stack { grid-template-columns:1fr; gap:31px; }
  .proof-stack img { aspect-ratio:1.55; margin-bottom:19px; }
  .proof-stack strong { font-size:35px; }
  .proof-stack span { font-size:13px; }
  .proof-stack a::after { padding-top:16px; }
  summary { grid-template-columns:25px 1fr 28px; gap:10px; padding:22px 0; }
  summary strong { font-size:25px; }
  summary>span { font-size:21px; }
  summary::after { width:27px; height:27px; font-size:20px; }
  .detail-content,.detail-content.with-photo { grid-template-columns:1fr; gap:13px; }
  .detail-card { padding:20px; }
  .detail-content.with-photo>img { height:250px; }
  .passport-head { padding:23px; flex-wrap:wrap; gap:16px; }
  .passport-head h3 { font-size:29px; }
  .passport-head>.terrain-stamp { font-size:10px; padding:11px 17px; margin-block:5px; }
  .passport-grid { grid-template-columns:1fr; padding:23px; gap:27px; }
  .passport-grid section+section { border-left:none; padding-left:0; }
  .passport-grid ul { margin-top:10px; font-size:13px; }
  .contact-layout { grid-template-columns:1fr; gap:36px; }
  .contact-card h2 { font-size:46px; }
  .virtual-card { width:calc(100% - 12px); transform:rotate(1deg); padding:99px 25px 27px; margin-top:48px; }
  .virtual-card h3 { font-size:41px; }
  .card-photo-frame { left:24px; }
  .site-footer { flex-direction:column; align-items:flex-start; padding-block:23px; font-size:9px; gap:11px; }
}
@media(max-width:360px) {
  .signature { gap:8px; }
  .signature-logo { width:74px; }
  .signature>span { padding-left:8px; font-size:15px; }
  .signature small { font-size:7px; max-width:90px; }
  .menu-toggle { padding:7px 9px; gap:9px; }
  .mission-board { grid-template-columns:1fr; }
  .chapter-heading h2 { font-size:37px; }
  .virtual-card { transform:none; padding-inline:22px; }
  .virtual-card h3 { font-size:37px; }
  .virtual-card>strong { font-size:10px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*::before,*::after { transition:none!important; animation:none!important; } }
@media print {
  body { font-size:10pt; background:white; }
  body::before,.site-header,.hero-actions,.hero-note,.role-explorer,.site-footer,.contact-actions { display:none; }
  .wrap { width:100%; }
  .cover,.chapter { padding:24px 0; }
  .cover-grid { grid-template-columns:1.2fr 1fr; gap:30px; }
  h1 { font-size:65pt; }
  .hero-portrait>img { min-height:0; height:280px; }
  .hero-portrait figcaption { font-size:18pt; padding:10px; }
  .projects { background:white; color:var(--ink); }
  .projects .signal,.projects em,.proof-stack span,.proof-stack a::after { color:var(--ink); }
  .proof-stack a,.mission,.skill-passport,details { break-inside:avoid; }
  .virtual-card { transform:none; box-shadow:none; }
}
