/* Trois fichiers WOFF2 statiques vérifiés, stockés localement. */
@font-face{font-family:"Timeless Sans";src:url("fonts/TimelessSans-SansRegular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:block}
@font-face{font-family:"Timeless Serif";src:url("fonts/TimelessSerif-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:block}
@font-face{font-family:"Timeless Serif Text";src:url("fonts/TimelessSerif-TextRegular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:block}
:root{--sans:"Timeless Sans",Arial,Helvetica,sans-serif;--serif:"Timeless Serif",Didot,'Times New Roman',serif;--serif-text:"Timeless Serif Text",Georgia,serif;--space:clamp(20px,3.2vw,56px)}
*{box-sizing:border-box}html{color:#000;background:#fff}body{margin:0;font-family:var(--sans);font-size:15px;line-height:1.4}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:4px}a:focus-visible{outline:2px solid #000;outline-offset:6px}header,footer{margin:0 var(--space);display:flex;justify-content:space-between;gap:24px}header{padding:28px 0;border-bottom:1px solid #000;align-items:flex-start}.identity{font-size:19px;line-height:1.3}.identity span{display:block;font-size:14px;margin-top:4px}nav{display:flex;gap:32px;padding-top:4px}nav [aria-current]{text-decoration:underline;text-underline-offset:5px}main{margin:0 var(--space);min-height:65vh}h1,h2,p,figure{margin:0}h1{font-family:var(--serif);font-weight:400;letter-spacing:-.045em;line-height:1.04;font-size:clamp(54px,8vw,126px)}.intro{padding:65px 0 52px}.intro p{font-family:var(--serif-text);font-size:clamp(24px,3vw,40px);margin-top:14px}.home-media{display:grid;grid-template-columns:1.55fr 1fr;gap:24px;align-items:start}.media{position:relative;border:1px solid #000;background:#fff;aspect-ratio:4/3;overflow:hidden;display:grid;place-items:center}.media:before{content:"";position:absolute;inset:0;background:linear-gradient(to top right,transparent calc(50% - .5px),#000 50%,transparent calc(50% + .5px));pointer-events:none}.media span{position:relative;background:#fff;padding:5px 12px;font-family:var(--serif-text);font-size:18px}.home-media .media{aspect-ratio:16/10}figcaption,.caption{display:flex;justify-content:space-between;gap:12px;padding-top:12px;font-size:13px}figcaption span:last-child{font-family:var(--serif-text)}.page-heading{padding:60px 0 46px;display:flex;justify-content:space-between;align-items:flex-end;gap:20px}.page-heading p{font-family:var(--serif-text)}.projects-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.caption{align-items:baseline}.caption h2{font-size:17px;font-weight:400}.caption>span{font-family:var(--serif-text);font-size:13px}.experiments-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 24px}.experiments-grid .media{aspect-ratio:1}.back{display:inline-block;margin-top:34px}.project-heading{padding:40px 0;display:flex;justify-content:space-between;gap:30px;align-items:flex-end}.project-heading p+p{margin-top:8px}.text-serif{font-family:var(--serif-text)}.wide{aspect-ratio:16/9}.project-content{display:grid;gap:24px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:24px}.next{display:block;text-align:right;margin-top:28px}footer{margin-top:72px;border-top:1px solid #000;padding:22px 0 30px;font-size:13px;align-items:baseline}.contact{display:flex;gap:24px}small{font-size:11px;font-family:var(--serif-text)}
@media(min-width:1600px){body{max-width:1800px;margin:auto}}
@media(max-width:850px){.projects-grid,.experiments-grid{grid-template-columns:repeat(2,1fr)}.home-media{grid-template-columns:1fr}.caption{flex-direction:column;gap:4px}.project-heading{align-items:flex-start;flex-direction:column}.page-heading p{max-width:130px;text-align:right}footer{align-items:flex-start;flex-direction:column;gap:14px}}
@media(max-width:520px){header{flex-direction:column;gap:24px;padding:22px 0}nav{width:100%;justify-content:space-between;gap:16px}.intro{padding:44px 0 36px}.projects-grid{grid-template-columns:1fr}.experiments-grid{gap:28px 16px}.experiments-grid figcaption{flex-direction:column;gap:3px}.experiments-grid .media span{font-size:15px}.page-heading{padding:42px 0 32px;align-items:flex-start;flex-direction:column}.page-heading p{max-width:none;text-align:left}.pair{grid-template-columns:1fr}.contact{gap:18px}footer{margin-top:50px}}

/* Showreel local provisoire, remplaçable sans modifier la structure. */
.showreel{display:block;width:100%;aspect-ratio:16/10;object-fit:contain;border:1px solid #000;background:#fff}

/* Accueil : télévision dessinée en CSS, sans image ni bibliothèque. */
.tv-home{max-width:none;min-height:100svh;display:flex;flex-direction:column}
.tv-home header{border:0;position:relative;z-index:1}
.tv-home footer{border:0;margin-top:0;padding-top:20px}
.tv-stage{flex:1;min-height:360px;display:grid;place-content:center;perspective:1000px;margin:0;position:relative}
.tv{display:block;position:relative;width:240px;height:210px;padding:0;border:0;background:none;color:#000;cursor:pointer;transform-style:preserve-3d;animation:tv-drift 7s ease-in-out infinite;font-family:var(--sans)}
.tv:focus-visible{outline:2px solid #000;outline-offset:16px;border-radius:22px}
.tv-face{position:absolute;inset:0;background:#fff;border:1px solid #000;border-radius:22px 22px 16px 16px;padding:18px;display:flex;flex-direction:column;transform:translateZ(16px)}
.tv-side{position:absolute;inset:3px -22px 3px 22px;border:1px solid #000;border-radius:22px;background:repeating-linear-gradient(90deg,#fff 0 8px,#000 8px 9px);transform:translateZ(-14px)}
.tv-screen{display:grid;place-items:center;flex:1;border:1px solid #000;border-radius:24px / 20px;background:#fff;box-shadow:inset 0 0 0 5px #fff,inset 0 0 0 6px #000;font-family:var(--serif-text);font-size:23px;transition:background .2s,color .2s}
.tv:hover .tv-screen{background:#000;color:#fff;box-shadow:none}
.tv-base{height:33px;display:flex;align-items:flex-end;justify-content:space-between;padding:0 8px}
.tv-vents{width:74px;height:9px;background:repeating-linear-gradient(90deg,#000 0 1px,#fff 1px 5px)}
.tv-knob{width:15px;height:15px;border:1px solid #000;border-radius:50%}
@keyframes tv-drift{0%,100%{transform:rotateY(-13deg) rotateX(3deg) rotateZ(-2deg)}50%{transform:rotateY(13deg) rotateX(-3deg) rotateZ(2deg)}}
.reel-dialog{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;border:0;padding:0;margin:0;background:transparent;overflow:hidden}
.reel-dialog::backdrop{background:#fff}
.reel-panel{position:absolute;inset:0;background:#000;transform-origin:0 0;overflow:hidden}
.reel-panel video{width:100%;height:100%;display:block;object-fit:cover;background:#000}
.reel-close{position:absolute;right:20px;top:20px;width:40px;height:40px;display:grid;place-items:center;border:1px solid #fff;border-radius:50%;background:#000;color:#fff;font:30px/1 var(--sans);cursor:pointer}
.reel-close:focus-visible{outline:2px solid #fff;outline-offset:4px}
.reel-status{position:absolute;left:20px;bottom:65px;color:#fff;background:#000;padding:10px;max-width:calc(100% - 40px)}
@media(prefers-reduced-motion:reduce){.tv{animation:none;transform:rotateY(-8deg)}.tv-screen{transition:none}}
@media(max-width:520px){.tv{width:210px;height:190px}.tv-home header{padding-bottom:10px}.tv-home footer{font-size:12px}.tv-stage{min-height:300px}}

/* Le dessin CSS reste un secours si WebGL est indisponible. */
.tv.is-3d{width:360px;height:340px;animation:none;transform:none}
.tv.is-3d>.tv-face,.tv.is-3d>.tv-side{display:none}
.tv canvas{width:100%;height:100%;display:block;pointer-events:none}
@media(max-width:520px){.tv.is-3d{width:300px;height:300px}}

/* Couleur et typo identiques pour le dessin de secours. */
.tv-face{background:#f2da83}.tv-screen{font-family:var(--sans);font-size:32px}

.tv.is-3d{touch-action:none;user-select:none}
.tv.is-3d.is-entering{position:fixed;inset:0;width:100vw;height:100dvh;z-index:20;background:#fff;cursor:default}

/* Masquer la construction initiale jusqu’à ce que la télé soit prête. */
.tv{visibility:hidden}.tv.tv-ready{visibility:visible}
.tv-face{background:#ffba39}
.reel-panel{inset:10px;border-radius:16px}
.reel-close{right:12px;top:12px;width:32px;height:32px;font-size:23px;border:0;background:rgba(0,0,0,.55)}
@media(max-aspect-ratio:4/3){
  .reel-panel{inset:0;border-radius:0;background:#fff;display:flex;align-items:center;justify-content:center}
  .reel-panel video{width:calc(100% - 24px);height:auto;max-height:calc(100dvh - 100px);aspect-ratio:16/9;object-fit:contain;border-radius:16px;background:#000}
  .reel-close{top:max(16px,env(safe-area-inset-top));right:16px}
}

/* Pas de cadre autour de l’objet lors d’un geste souris ou tactile. */
.tv.pointer-interaction:focus,.tv.pointer-interaction:focus-visible{outline:none}

/* Vraie souris et visiteurs fictifs : même silhouette, même taille. */
.ghost-cursor{position:absolute;left:0;top:0;width:24px;height:28px;z-index:12;pointer-events:none;opacity:0}
.ghost-cursor svg{width:100%;height:100%;display:block}
.ghost-ring{position:absolute;width:18px;height:18px;border:1px solid currentColor;border-radius:50%;z-index:11;pointer-events:none;opacity:0}
nav a,header .identity,footer .contact a,footer>span,main h1,main h2,main p,main figcaption span{background-image:linear-gradient(currentColor,currentColor);background-repeat:no-repeat;background-position:0 100%;background-size:0% 1px;transition:background-size .7s ease}
.ghost-hover{color:var(--ghost-color)!important;background-size:100% 1px;text-decoration:none!important}

body{overflow-x:clip}

/* Brève perturbation VHS entre l’écran 3D et la vidéo. */
.vhs-transition{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;background:repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.16) 3px 4px),linear-gradient(90deg,rgba(255,50,90,.15),transparent,rgba(40,210,230,.15));mix-blend-mode:screen}
.reel-panel.vhs-enter .vhs-transition{animation:vhs-cut 420ms steps(1) both}
.reel-panel.vhs-enter video{animation:vhs-shift 420ms steps(1) both}
@keyframes vhs-cut{0%{opacity:.8;transform:translateY(-5%)}20%{opacity:.3;transform:translateY(3%)}40%{opacity:.7;transform:translateY(-2%)}65%{opacity:.2;transform:none}100%{opacity:0}}
@keyframes vhs-shift{0%{transform:translateX(-7px);filter:contrast(1.3)}20%{transform:translateX(5px)}40%{transform:translateX(-3px)}65%,100%{transform:none;filter:none}}
@media(prefers-reduced-motion:reduce){.reel-panel.vhs-enter .vhs-transition,.reel-panel.vhs-enter video{animation:none}}


/* Canvas Experiments : cartes horizontales 16:9, déplaçables. */
.field-page{height:100dvh;max-width:none;overflow:hidden;display:flex;flex-direction:column}
.field-page header{flex-shrink:0;border-bottom:0;background:#fff;z-index:3}
.field-page footer{flex-shrink:0;z-index:3;background:#fff;border-top:0;margin-top:0;padding:14px 0;min-height:0}
.field-main{flex:1;min-height:0;margin:0;position:relative;overflow:hidden}
.field-title{position:absolute;left:var(--space);top:12px;z-index:2;pointer-events:none;background:#ffffffde;padding:8px 16px 12px 0}
.field-title h1{font-size:34px;letter-spacing:-.025em}.field-title p{font-size:12px;margin-top:7px;font-family:var(--serif-text)}
#experiment-field{position:absolute;inset:0;touch-action:none;overflow:hidden;background:#fff;cursor:grab}
#experiment-field:active{cursor:grabbing}#experiment-field:focus-visible{outline:1px solid #000;outline-offset:-3px}
#field-world{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.field-card{position:absolute;width:310px;margin:0;padding:5px 5px 0;background:#fff;border:1px solid #ddd;border-radius:15px;box-shadow:0 3px 14px #0000000c;user-select:none;cursor:grab;transition:box-shadow .2s}
.field-card:hover,.field-card:focus-visible{box-shadow:0 5px 20px #0002;outline:none;border-color:#999}
.field-card img,.field-card video{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;border-radius:10px;pointer-events:none}
.field-card figcaption{font-size:12px;padding:9px 8px 10px;font-family:var(--serif-text)}
.field-resize{position:absolute;right:3px;bottom:3px;width:17px;height:17px;cursor:nwse-resize;opacity:0}
.field-card:hover .field-resize{opacity:.6}.field-resize:after{content:"";position:absolute;right:4px;bottom:4px;width:6px;height:6px;border-right:1px solid #000;border-bottom:1px solid #000}
.field-tools{position:absolute;bottom:16px;right:var(--space);display:flex;gap:6px;z-index:2}
.field-tools button{width:32px;height:32px;border:1px solid #ddd;border-radius:50%;background:#fff;font:18px var(--sans);color:#000}
@media(max-width:520px){.field-title h1{font-size:28px}.field-page header{gap:12px}.field-page footer{gap:7px}.field-title p{font-size:11px}.field-card{width:270px}}

/* Direction crème / sauge pour l’accueil uniquement. */
.tv-home{background:#d9e2da;color:#252a25}
.tv-home .tv-stage{background:transparent}
.tv-home .tv.is-3d.is-entering{background:#d9e2da}
.tv-home .tv-face{background:#eadcc2}
.tv-home .reel-dialog::backdrop{background:#d9e2da}

/* Menu vertical à gauche, commun à toutes les pages. */
body{--sidebar:190px;padding-left:var(--sidebar)}
body>header{position:fixed;left:0;top:0;bottom:0;width:var(--sidebar);margin:0;padding:30px 24px;display:flex;flex-direction:column;justify-content:flex-start;gap:45px;border:0;z-index:8;background:inherit}
body>header nav{display:flex;flex-direction:column;gap:16px;align-items:flex-start}
.tv-home header,.field-page header{position:fixed;z-index:8;gap:45px}
.field-card{width:240px}.field-card video{object-fit:contain;background:#fff}
@media(max-width:600px){body{--sidebar:0px;padding-top:112px}body>header,.tv-home header,.field-page header{left:0;right:0;bottom:auto;width:auto;padding:16px 20px;gap:12px;background:inherit}body>header nav{flex-direction:row;gap:24px}.identity{font-size:16px}.identity span{font-size:12px}.field-page{padding-top:112px}}

/* Fond partagé et navigation flottante en verre dépoli. */
html,body{background:#fff;color:#252a25}
body{--sidebar:0px;padding-left:0}
body>header,.tv-home header,.field-page header{left:18px;top:18px;bottom:auto;width:166px;padding:20px 18px;gap:28px;background:rgba(255,255,255,.28);border:1px solid rgba(255,255,255,.6);border-radius:18px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 3px 18px #243c2510}
body>header nav{gap:13px}
body>header .identity{font-size:17px}
body:not(.tv-home):not(.field-page) main{padding-top:215px}
#experiment-field,.field-main{background:#d9e2da}
.field-page footer{background:rgba(217,226,218,.7);backdrop-filter:blur(10px)}
.field-card{background:rgba(255,255,255,.65);border-color:rgba(255,255,255,.8)}
.field-tools button{background:rgba(255,255,255,.7)}
@media(max-width:600px){body{padding-top:0}body>header,.tv-home header,.field-page header{left:12px;top:12px;right:auto;width:auto;padding:12px 16px;gap:10px;border-radius:15px}body>header nav{gap:18px}.field-page{padding-top:0}.tv-home .tv-stage{min-height:100svh}body:not(.tv-home):not(.field-page) main{padding-top:155px}}

/* Folies garde la flèche personnalisée sur le fond, les cartes et leurs poignées. */

/* Prises sur chaque côté et coin ; proportions conservées. */
.field-resize{opacity:0;z-index:4}.field-resize:after{display:none}
.resize-n,.resize-s{left:15px;right:15px;width:auto;height:10px}
.resize-n{top:-4px;bottom:auto}.resize-s{bottom:-4px}
.resize-e,.resize-w{top:15px;bottom:15px;height:auto;width:10px}
.resize-e{right:-4px}.resize-w{left:-4px;right:auto}
.resize-ne,.resize-nw,.resize-se,.resize-sw{width:18px;height:18px}
.resize-ne{right:-4px;top:-4px;bottom:auto}.resize-nw{left:-4px;top:-4px;bottom:auto;right:auto}
.resize-se{right:-4px;bottom:-4px}.resize-sw{left:-4px;bottom:-4px;right:auto}
.field-card:hover .field-resize{opacity:1}
.field-card:hover .resize-ne:after,.field-card:hover .resize-nw:after,.field-card:hover .resize-se:after,.field-card:hover .resize-sw:after{display:block;width:5px;height:5px;border:1px solid #9da99d;background:#fff;border-radius:50%;right:6px;bottom:6px}

.field-card figcaption{font-size:clamp(11px,5cqw,17px)}.field-card{container-type:inline-size}
.reel-controls{position:absolute;bottom:22px;right:45px;z-index:4;display:flex;align-items:center;gap:8px;padding:5px 10px;background:#0006;border-radius:20px;color:#fff}
.reel-controls button{border:0;background:none;color:#fff;font:17px var(--sans);padding:4px;cursor:pointer}
.reel-controls input{width:55px;height:12px;accent-color:#fff}
.reel-close{z-index:5;width:26px;height:26px;font-size:20px;background:#0004;opacity:.65}.reel-close:hover{opacity:1}
.close-tl{top:12px;left:12px;right:auto}.close-tc{top:12px;left:calc(50% - 13px);right:auto}
.close-ml{top:calc(50% - 13px);left:12px;right:auto}.close-mr{top:calc(50% - 13px);right:12px}
.close-bl{top:auto;bottom:12px;left:12px;right:auto}.close-bc{top:auto;bottom:12px;left:calc(50% - 13px);right:auto}.close-br{top:auto;bottom:12px;right:12px}

/* Navigation nue et contacts sous forme d’icônes. */
body>header,.tv-home header,.field-page header{background:transparent;border:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
footer{justify-content:flex-end}.contact svg{width:21px;height:21px;display:block;color:#000}.contact a{display:inline-block}
.reel-dialog .reel-close{opacity:0;pointer-events:none;transition:opacity .18s}
.reel-dialog.show-close .reel-close{opacity:.65;pointer-events:auto}
.reel-dialog.show-close .reel-close:hover,.reel-dialog .reel-close:focus-visible{opacity:1;pointer-events:auto}

.tv{transform:scale(.9)}
.reel-controls{transform:scale(.8);transform-origin:bottom right}
.reel-dialog .reel-close{transition:opacity .3s ease}
.contact a{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;transition:transform .22s ease,background .15s,color .15s}
.contact a:hover{transform:scale(1.13)}
.contact a:active,.contact a.contact-active{background:#000;color:#fff;transform:scale(.96)}
#contact-status{position:fixed;bottom:65px;right:28px;font:12px var(--sans);z-index:20;background:#d9e2da;padding:6px 10px;border-radius:6px}
#contact-status:empty{display:none}


.tv.is-3d:not(.is-entering){width:324px;height:306px}
@media(max-width:520px){.tv.is-3d:not(.is-entering){width:270px;height:270px}}

/* Menu simple restauré. */
body>header .identity{font-family:var(--sans);font-size:17px;letter-spacing:normal;line-height:1.3}
.identity span{font-family:var(--sans);font-size:14px;letter-spacing:normal;line-height:1.4;margin-top:4px;padding:0;border:0}

.field-card[hidden]{display:none!important}

/* Rebond doux des contacts et enveloppe remplie au clic, sans carré derrière. */
.contact a{transition:transform .48s cubic-bezier(.34,1.56,.64,1),background .25s;color:#000;background:transparent}
.contact a:hover{transform:scale(1.2)}
.contact a:active,.contact a.contact-active{background:transparent;color:#000;transform:scale(.92)}
.contact svg .mail-solid{display:none}
.contact a.contact-active svg .mail-solid,.contact a:active svg .mail-solid{display:block}
.contact a.contact-active svg:has(.mail-solid)>rect,.contact a.contact-active svg:has(.mail-solid)>path:not(.mail-solid),.contact a:active svg:has(.mail-solid)>rect,.contact a:active svg:has(.mail-solid)>path:not(.mail-solid){display:none}

/* Ressort calculé sur l’icône : accélération progressive et amortissement. */
.contact a,.contact a:hover,.contact a:active,.contact a.contact-active{transform:none;transition:none;background:transparent}
.contact svg{transform-origin:center;will-change:transform}

/* Lecteur minimal : clic dans la vidéo, symbole local et son seul. */
.reel-close{width:18px;height:18px;font-size:14px;line-height:1;background:rgba(0,0,0,.22)}
.reel-dialog.show-close .reel-close:hover{background:rgba(0,0,0,.82);opacity:1}
.reel-controls{right:38px;bottom:38px;padding:0;background:none;transform:none;border-radius:0}
.reel-controls #reel-sound{display:grid;place-items:center;width:28px;height:28px;padding:4px;background:#0003;border-radius:50%}
#reel-sound svg{width:20px;height:20px}
.reel-feedback{position:absolute;z-index:4;pointer-events:none;width:32px;height:32px;transform:translate(-50%,-50%);color:#fff;background:#0005;border-radius:50%;padding:7px}
.reel-feedback svg{width:100%;height:100%;display:block}
.reel-feedback[hidden]{display:none}
#reel-video:focus-visible{outline:1px solid #fff8;outline-offset:-3px}

/* Croix nues et commandes encore plus discrètes. */
.reel-close{width:16px;height:16px;padding:0;font-size:13px;background:none!important;border:0;border-radius:0;color:#fff;text-shadow:0 1px 3px #0008;line-height:1}
.reel-dialog.show-close .reel-close:hover{color:#000;text-shadow:0 0 3px #fff9}
.reel-controls #reel-sound{width:23px;height:23px;padding:3px;background:#0002}
#reel-sound svg{width:16px;height:16px}
.reel-feedback{width:25px;height:25px;padding:5px;background:#0003}
.reel-ending-cursor{position:fixed;left:0;top:0;z-index:8;pointer-events:none;width:24px;height:28px}

/* Lecteur épuré : une seule croix, bouton mute isolé. */
.reel-dialog .reel-close{opacity:.7;pointer-events:auto;width:16px;height:16px}
.reel-dialog .reel-close:hover{opacity:1}
.reel-controls{z-index:9;pointer-events:auto}

/* Coque de téléphone proportionnelle à chaque poster vidéo. */
.field-card{padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
.field-card:hover,.field-card:focus-visible{border:0;box-shadow:none}
.phone-frame{position:relative;padding:4cqw;background:#151515;border-radius:15cqw;box-shadow:inset 0 0 0 1px #666,0 4px 12px #0002;overflow:hidden}
.field-card .phone-frame video{border-radius:11cqw;background:#000;object-fit:cover}
.phone-island{position:absolute;left:36%;top:5.5cqw;width:28%;height:7cqw;border-radius:5cqw;background:#080808;pointer-events:none}
.phone-island:after{content:"";position:absolute;right:12%;top:25%;width:3.5cqw;height:3.5cqw;border-radius:50%;background:#20242c;box-shadow:inset 0 0 0 1px #313640}
.phone-home{position:absolute;bottom:6cqw;left:34%;width:32%;height:1.8cqw;border-radius:3cqw;background:#fff9;pointer-events:none}
.field-card figcaption{padding:8px 3px 0;color:#252a25;background:transparent}

/* Liseré argenté et interface de téléphone, entièrement vectoriels. */
.phone-frame{padding:2.8cqw 2.8cqw 15cqw;background:linear-gradient(120deg,#ddd 0%,#7d7d7d 20%,#ededed 45%,#858585 75%,#d8d8d8);border-radius:15cqw;box-shadow:0 5px 12px #00000024,inset 0 0 0 1px #999}
.phone-frame:before{content:"";position:absolute;inset:1.3cqw;background:#090909;border-radius:13.7cqw;pointer-events:none}
.field-card .phone-frame video{position:relative;border-radius:11.8cqw 11.8cqw 0 0}
.phone-island{top:4.2cqw;left:36%;width:28%;height:6.5cqw;z-index:2}
.phone-status{position:absolute;top:5cqw;left:12%;right:12%;display:flex;align-items:center;justify-content:space-between;color:white;font:5.1cqw/1 var(--sans);text-shadow:0 1px 2px #0008;pointer-events:none;z-index:2}
.phone-status svg{width:19%;height:5cqw;overflow:visible}
.phone-nav{position:absolute;left:8%;right:8%;bottom:5.2cqw;height:7cqw;display:flex;align-items:center;justify-content:space-between;color:#fff;pointer-events:none}
.phone-nav svg{width:8cqw;height:8cqw;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.phone-nav svg:nth-child(3){width:11cqw}
.phone-home{bottom:2.5cqw;height:1cqw;background:#fff8}

/* L’accueil reste dans la fenêtre, même lorsque les curseurs passent hors champ. */
.tv-home{height:100dvh;min-height:0;overflow:hidden}
.tv-home .tv-stage{min-height:0;flex:1;padding-top:0}
.tv-home .reel-dialog.cursor-idle,.tv-home .reel-dialog.cursor-idle *{cursor:none!important}
@media(max-width:600px){.tv-home .tv-stage{padding-top:100px}}

/* Les détails du téléphone suivent sa largeur, sans changer ses proportions. */
.phone-frame{aspect-ratio:9/19.5;padding:2.8cqw 2.8cqw 15cqw;box-sizing:border-box;box-shadow:0 4px 10px #0000001a}
.field-card .phone-frame video{width:100%;height:100%;aspect-ratio:auto!important;object-fit:cover;display:block}
.phone-nav svg{width:6cqw;height:6cqw;stroke-width:1.4}
.phone-nav svg:nth-child(3){width:8cqw}
.phone-status{font-size:4.4cqw}
.phone-status svg{height:4.4cqw}
.phone-island{height:5.5cqw;width:26%;left:37%}
.phone-island:after{width:2.8cqw;height:2.8cqw}
.field-card figcaption{font-size:5cqw;padding:3cqw 1cqw 0}
body>.study-header{position:relative;inset:auto;width:auto;padding:30px 24px;margin:0;display:block}
body:has(>.study-header) main{padding-top:35px}
footer{justify-content:flex-start;align-items:center;gap:18px}

/* Interface de feed décorative : compteurs fictifs, sans boutons actifs. */
.phone-feed{position:absolute;top:16cqw;left:15%;right:15%;display:flex;justify-content:center;gap:5cqw;z-index:2;color:#fff9;font:4.5cqw var(--sans);pointer-events:none;text-shadow:0 1px 3px #0008}
.phone-feed span:last-child{color:#fff;border-bottom:1px solid #fff;padding-bottom:1.5cqw}
.field-card .phone-frame figcaption{position:absolute;left:8cqw;right:25cqw;bottom:24cqw;padding:0;color:#eee;font:4.6cqw/1.3 var(--sans);text-shadow:0 1px 3px #0009;pointer-events:none;z-index:2}
.phone-credit{position:absolute;left:8cqw;right:20cqw;bottom:18cqw;color:#ddd;font:3.3cqw var(--sans);pointer-events:none;text-shadow:0 1px 3px #0009}
.phone-social{position:absolute;right:8cqw;bottom:31cqw;display:flex;flex-direction:column;align-items:center;gap:5cqw;color:#fffd;pointer-events:none;text-shadow:0 1px 3px #0009}
.phone-social>span{display:flex;flex-direction:column;align-items:center;gap:1cqw}
.phone-social svg{width:7cqw;height:7cqw;fill:currentColor;filter:drop-shadow(0 1px 1px #0005)}
.phone-social small{font:3.1cqw var(--sans)}
.phone-avatar{width:9cqw;height:9cqw;border:1px solid #fff9;border-radius:50%;display:grid!important;place-items:center;background:#0003;font:3cqw var(--sans)}
.resize-nw{left:5cqw;top:5cqw}.resize-ne{right:5cqw;top:5cqw}.resize-sw{left:5cqw;bottom:5cqw}.resize-se{right:5cqw;bottom:5cqw}
footer .contact{gap:10px}

/* Hauteur du téléphone explicite, indépendante du chargement du MP4. */
.field-card .phone-frame{height:auto;aspect-ratio:9/19.5;padding:0}
.field-card .phone-frame video{position:absolute;left:2.8cqw;top:2.8cqw;width:calc(100% - 5.6cqw);height:calc(100% - 17.8cqw);border-radius:11.8cqw 11.8cqw 0 0}
.field-card[hidden]{display:none!important}

/* La visibilité ne change pas les dimensions utilisées par les animations. */
html.fonts-pending body{visibility:hidden}

/* Lisibilité du feed et signes du lecteur. */
.phone-frame:after{content:"";position:absolute;left:2.8cqw;right:2.8cqw;bottom:14cqw;height:37cqw;background:rgba(0,0,0,.24);border-radius:3cqw;pointer-events:none;z-index:1}
.phone-credit,.phone-social,.phone-nav{z-index:2}
.ghost-cursor,.reel-ending-cursor{width:27px;height:32px}
.ghost-cursor svg,.reel-ending-cursor svg{width:100%;height:100%}
.reel-feedback{width:42px;height:42px;padding:9px;background:#0004}

/* Même dessin sur tous les éléments, y compris le lecteur et ses overlays. */
html body .reel-dialog.cursor-idle,html body .reel-dialog.cursor-idle *{cursor:none!important}

.real-cursor{position:fixed;left:0;top:0;width:27px;height:32px;pointer-events:none;z-index:2147483647;display:block}
.real-cursor svg{width:100%;height:100%;display:block}
.reel-dialog.cursor-idle .real-cursor{display:none}


/* Curseur natif PNG : aucun doublon dessiné dans la page. */
/* Real pointer is a single DOM element, including while stationary.
   Native pointer is hidden only within the document, never outside the browser. */
@media(pointer:fine){html,body,body *{cursor:none!important}}
.site-pointer{position:fixed;left:0;top:0;width:27px;height:32px;pointer-events:none;z-index:2147483647;visibility:hidden;background:none}
.site-pointer.is-visible{visibility:visible}
body:has(.reel-dialog.cursor-idle[open]) .site-pointer{visibility:hidden}

.site-pointer svg{display:block;width:100%;height:100%;overflow:visible}
/* Les visiteurs fictifs sont opaques et disparaissent au retrait de leur élément. */
.ghost-cursor{opacity:1!important}

/* Flèches arrondies : même taille que le curseur personnalisé natif. */
.ghost-cursor,.reel-ending-cursor{width:27px;height:32px}

/* Étiquettes sans délai au survol et au focus des contacts. */
.contact a{position:relative}
.contact-tooltip{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%,4px) scale(.97);opacity:0;visibility:hidden;pointer-events:none;white-space:nowrap;padding:6px 9px;border-radius:6px;background:#111514;color:#fff;font:11px/1.25 var(--sans);z-index:20;transition:opacity .1s ease,transform .18s cubic-bezier(.22,1,.36,1)}
.contact a:is(:hover,:focus-visible) .contact-tooltip{visibility:visible;opacity:1;transform:translate(-50%,0) scale(1)}
@media(prefers-reduced-motion:reduce){.contact-tooltip{transition:none}}

/* Croix lisible quelle que soit la luminosité de la vidéo. */
.reel-dialog .reel-close{width:34px;height:34px;font-size:26px;color:#fff;opacity:1;background:rgba(0,0,0,.68)!important;border:1px solid rgba(255,255,255,.5);border-radius:7px;text-shadow:none}
.reel-dialog .reel-close:hover,.reel-dialog .reel-close:focus-visible{color:#111;background:#fff!important;opacity:1}

/* Shared, smaller visitor cursors. The real arrow uses the same compact proportions. */
.ghost-cursor,.reel-ending-cursor{width:20px;height:24px}
