/* Atef Barbouche — signature vitrine immersive, 26 octobre 2026. */
.ab-final-vitrine{position:absolute;z-index:1;border:0;background:none;padding:0;opacity:0;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:center;isolation:isolate;transition:opacity .22s;cursor:zoom-in}
.ab-final-vitrine.is-ready,.ab-final-vitrine.is-static{pointer-events:auto}
.ab-final-vitrine.is-static{opacity:1!important}
.ab-final-vitrine::before{content:"";position:absolute;width:65%;height:45%;border-radius:50%;background:radial-gradient(ellipse,rgba(238,190,91,.15),transparent 68%);filter:blur(35px);z-index:-1}
.ab-hero-vitrine{inset:calc(var(--hdr-h) + 18px) 7vw 6vh}
.ab-fraisier-vitrine{inset:calc(var(--hdr-h) + 20px) 3vw 5vh 36vw}
.ab-final-vitrine img{width:100%;height:calc(100% - 46px);object-fit:contain;filter:drop-shadow(0 32px 23px rgba(58,30,14,.18));animation:ab-float 5s ease-in-out infinite}
.ab-discover{display:flex;gap:18px;align-items:center;justify-content:center;font:500 10px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:12px 18px;border:1px solid currentColor;border-radius:30px;white-space:nowrap;color:inherit}
.ab-discover span{font-size:18px;line-height:1}
.ab-final-vitrine .ab-discover{margin-top:4px;color:var(--ink);background:rgba(255,253,248,.8)}
.ab-final-vitrine:focus-visible,.ab-portrait:focus-visible,.ab-craft-trigger:focus-visible{outline:2px solid var(--pitaya);outline-offset:-5px}
.overture:has(.ab-hero-vitrine.is-static) .ov__poster{display:none}
#fraisier.is-static .fscene__stage{visibility:hidden}
#fraisier.is-static .ab-fraisier-vitrine{min-height:65svh}
/* Carousel: large creations with depth, on an open gallery floor. */
.ab-works-vitrine .works__pin{min-height:0;overflow:hidden;padding-bottom:60px}
.ab-works-vitrine .works__track{overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;scroll-padding-inline:calc(50% - min(22vw,250px));gap:clamp(12px,2vw,36px);padding:32px max(var(--gutter),calc(50% - min(22vw,250px))) 25px;perspective:1500px;will-change:auto;touch-action:pan-x pan-y}
.ab-works-vitrine .works__track::-webkit-scrollbar{display:none}
.ab-works-vitrine .work{width:min(44vw,500px);height:clamp(380px,57vh,610px);scroll-snap-align:center;perspective:1200px;flex:none}
.ab-works-vitrine .work__card{transform:translateY(var(--ab-lift,0px)) rotateY(var(--ab-turn,0deg)) scale(var(--ab-scale,1));transform-origin:center;transition:transform .22s ease-out}
.ab-works-vitrine .work__img{background:transparent;overflow:visible;flex:1;aspect-ratio:auto;border-radius:0;display:flex;align-items:center;justify-content:center;min-height:0}
.ab-works-vitrine .work__img::before{content:"";position:absolute;inset:32% 10% 0;background:radial-gradient(ellipse,color-mix(in srgb,var(--tone) 8%,transparent),transparent 65%);z-index:-1}
.ab-works-vitrine .work__img::after{display:none}
.ab-works-vitrine .work__img img{height:100%;width:100%;object-fit:contain;transform:none;filter:drop-shadow(0 22px 15px rgba(34,21,13,.16));transition:filter .35s}
.ab-works-vitrine .work__meta{justify-content:center;min-height:80px;padding-top:25px}
.ab-works-vitrine .work__view{right:50%;bottom:-4px;transform:translateX(50%);opacity:1;font-size:9px;letter-spacing:.13em;background:rgba(250,244,235,.9);border:1px solid rgba(40,30,20,.15)}
.ab-works-vitrine .work:hover .work__view{transform:translateX(50%)}
.ab-works-vitrine .works__progress{display:none}
.ab-carousel-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:18px;font:500 11px var(--sans);letter-spacing:.14em}
.ab-carousel-controls button{height:44px;min-width:44px;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:50%;font-size:18px;cursor:pointer}
.ab-carousel-controls #abWorksPause{border-radius:30px;font:500 10px var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:0 18px}
.ab-carousel-controls button:hover,.ab-carousel-controls button:focus-visible{background:var(--ink);color:var(--cream)}
/* Monumental — full silhouette, no chair, table or photographic rectangle. */
.ab-portrait{border:0;padding:clamp(28px,5vw,80px) 10px 30px;background:radial-gradient(ellipse at 50% 50%,#4a3224 0%,transparent 69%);color:var(--cream);cursor:zoom-in;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;overflow:visible;min-width:0}
.ab-portrait #monoImg{position:static;width:100%;height:auto;max-height:88svh;object-fit:contain;transform:none;filter:drop-shadow(0 25px 20px #0007)}
.ab-portrait .ab-discover{align-self:center;background:#ffffff08}
/* Four gestures — a whole creation next to each narrative, still readable. */
.craft__stack{background:transparent;overflow:visible;aspect-ratio:1/1}
.craft__stack img{object-fit:contain;filter:drop-shadow(0 28px 20px #54331e26)}
.craft__steps li{opacity:.75;position:relative;transition:opacity .35s}
.craft__steps li.is-on,.craft__steps li:hover,.craft__steps li:focus-within{opacity:1}
.ab-craft-trigger{border:0;padding:0;margin:26px 0 0;background:none;color:var(--ink);cursor:zoom-in;display:flex;align-items:center;gap:22px;text-align:left}
.ab-craft-trigger .craft__inline{display:block;width:110px;height:100px;object-fit:contain;filter:drop-shadow(0 12px 8px #54331e24)}
.ab-craft-trigger .ab-discover{font-size:9px;white-space:normal;max-width:190px}
/* Real foreground preview. It never intercepts the original card or link. */
.ab-hover-vitrine{position:fixed;inset:0;z-index:1000;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .24s,visibility .24s;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:4vh 6vw 5vh;background:radial-gradient(ellipse at center,rgba(19,15,12,.18),rgba(19,15,12,.68));backdrop-filter:blur(4px)}
.ab-hover-vitrine.is-visible{opacity:1;visibility:visible}
.ab-hover-vitrine img{height:74vh;width:min(78vw,1100px);object-fit:contain;filter:drop-shadow(0 35px 26px #0008);transform:translateY(25px) scale(.88);transition:transform .48s cubic-bezier(.16,1,.3,1)}
.ab-hover-vitrine.is-visible img{transform:translateY(0) scale(1)}
.ab-hover-vitrine figcaption{color:#fff8ed;font:400 clamp(22px,3vw,44px)/1.2 var(--serif);text-align:center;margin-top:14px;text-shadow:0 2px 14px #0008}
.ab-hover-vitrine small{display:block;margin-top:10px;font:500 10px var(--sans);letter-spacing:.18em;text-transform:uppercase}
/* Detailed vitrine remains a real, accessible dialog on touch screens. */
.lightbox{width:min(1440px,96vw);max-width:96vw;max-height:94svh;background:transparent;overflow:visible;border-radius:0;color:var(--cream)}
.lightbox::backdrop{background:rgba(20,16,13,.82);backdrop-filter:blur(10px)}
.lightbox__inner{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;max-height:94svh;position:relative;gap:2vw}
.lightbox__media{background:transparent;height:85svh;overflow:visible}
.lightbox__media img{width:100%;height:100%;max-height:85svh;object-fit:contain;filter:drop-shadow(0 28px 22px #0008)}
.lightbox__copy{padding:42px 28px 28px;background:rgba(34,27,22,.92);border:1px solid #ffffff25;border-radius:5px;max-height:85svh;overscroll-behavior:contain}
.lightbox__copy>.kicker,.lightbox__copy>p:not(.kicker),.lightbox__nav button{color:#efe4d5}
.lightbox__copy .btn{background:var(--cream);color:var(--ink)}
.lightbox__tags li{border-color:#ffffff38}
.lightbox__close{position:fixed;top:12px;right:12px;background:var(--cream);color:var(--ink);z-index:3;box-shadow:0 3px 16px #0004;min-height:44px}
.ab-story-dialog{border:0;padding:0;background:transparent;color:var(--cream);width:min(1300px,95vw);max-width:95vw;max-height:94svh;overflow:visible}
.ab-story-dialog::backdrop{background:#18120ee0;backdrop-filter:blur(10px)}
.ab-story-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:3vw;align-items:center;max-height:90svh}
.ab-story-layout img{width:100%;height:85svh;object-fit:contain;filter:drop-shadow(0 30px 20px #0008)}
.ab-story-copy{padding:35px;background:#282019ed;border:1px solid #ffffff24;border-radius:5px;max-height:80svh;overflow:auto}
.ab-story-copy h2{font:400 clamp(36px,4vw,66px)/1.1 var(--serif);margin:0 0 24px}
.ab-story-copy p{font:400 16px/1.8 var(--sans);color:#f0e3d4}
.ab-story-copy a{display:inline-block;margin-top:20px;color:inherit;border-bottom:1px solid;padding:10px 0}
@keyframes ab-float{50%{transform:translateY(-8px)}}
@media(max-width:900px){
 .ab-hero-vitrine{inset:calc(var(--hdr-h) + 16px) 3vw 4vh}
 .ab-fraisier-vitrine{inset:calc(var(--hdr-h) + 105px) 2vw 155px}
 .ab-final-vitrine img{height:calc(100% - 42px)}
 .ab-final-vitrine .ab-discover{font-size:9px;padding:10px 16px}
 #fraisier .fscene__copy{pointer-events:none}#fraisier .fscene__more{pointer-events:auto}
 .ab-works-vitrine .works__track{padding-left:12vw;padding-right:12vw;scroll-padding-inline:12vw;gap:3vw}
 .ab-works-vitrine .work{width:76vw;height:clamp(360px,60svh,560px)}
 .ab-works-vitrine .work__meta{gap:12px}.ab-works-vitrine .work__title{font-size:23px}
 .ab-works-vitrine .works__pin{padding-top:75px}
 .ab-portrait{padding:28px 4vw;min-height:0;aspect-ratio:auto}.ab-portrait #monoImg{max-height:78svh;width:100%;height:auto}
 .craft__steps li{min-height:0;opacity:1;padding:36px 0}
 .ab-craft-trigger{display:flex;flex-direction:column;gap:15px;width:100%;margin-top:24px}
 .ab-craft-trigger .craft__inline{width:100%;height:clamp(240px,47svh,430px);object-fit:contain;aspect-ratio:auto;margin:0}
 .ab-craft-trigger .ab-discover{max-width:none;margin:0}
 .lightbox,.ab-story-dialog{max-height:94svh;overflow:auto;overscroll-behavior:contain;width:96vw}
 .lightbox__inner,.ab-story-layout{display:flex;flex-direction:column;gap:0;max-height:none}
 .lightbox__media{width:100%;height:48svh;min-height:240px;margin-top:40px}
 .lightbox__media img{height:100%;max-height:none}
 .lightbox__copy{max-height:none;width:100%;padding:25px 22px 30px}
 .lightbox__copy h2{font-size:34px}.lightbox__tags{margin:10px 0 20px}.lightbox__nav{padding-top:25px}
 .ab-story-layout img{height:50svh;margin-top:40px}.ab-story-copy{max-height:none;width:100%;padding:25px}
 .ab-hover-vitrine{display:none}
}
@media(prefers-reduced-motion:reduce){
 .ab-final-vitrine img{animation:none}.ab-hover-vitrine,.ab-hover-vitrine img,.ab-works-vitrine .work__card{transition:none}
 .ab-works-vitrine .work__card{transform:none}
}

.ab-craft-stack{width:100%;display:block;border:0;padding:0;cursor:zoom-in}
.ab-craft-stack:focus-visible{outline:2px solid var(--pitaya);outline-offset:10px}
.ab-hover-vitrine{margin:0}
/* The strawberry cake has wider transparent margins around its mirror platter. */
.ab-fraisier-vitrine img{width:132%;max-width:none}
@media(max-width:900px){.ab-fraisier-vitrine img{width:140%;max-width:none}}

/* Circular vitrine — seven cutouts on a continuous 18-second orbit. */
.ab-orbit .works__pin{padding-bottom:35px;overflow:hidden}
.ab-orbit .works__track{position:relative;display:block;overflow:visible;padding:0;margin:0 auto;width:100%;height:clamp(490px,65svh,690px);perspective:none;scroll-snap-type:none;touch-action:pan-y;isolation:isolate}
.ab-orbit .work{position:absolute;left:50%;top:48%;width:min(38vw,470px);height:clamp(320px,46svh,490px);margin:0;will-change:transform;transform-origin:center;perspective:none;scroll-snap-align:none;transition:none}
.ab-orbit .work__card{height:100%;transform:none!important;transition:none;overflow:visible}
.ab-orbit .work__img{min-height:0;isolation:isolate}
.ab-orbit .work__img img{filter:drop-shadow(0 25px 18px #38261724)}
.ab-orbit .work__img::before{display:none}
.ab-orbit .work__meta{opacity:var(--orbit-detail,1);padding-top:24px;min-height:68px;gap:10px}
.ab-orbit .work__title{font-size:clamp(19px,1.7vw,28px);white-space:normal;text-align:left}
.ab-orbit .work__kicker{font-size:9px}
.ab-orbit .work__view{opacity:var(--orbit-detail,1)}
.ab-orbit .works__track:focus-visible{outline:1px solid var(--pitaya);outline-offset:-8px}
@media(max-width:650px){
 .ab-orbit .works__pin{padding-top:65px;padding-bottom:25px}
 .ab-orbit .works__track{height:480px}
 .ab-orbit .work{width:min(70vw,300px);height:320px;top:46%}
 .ab-orbit .work__title{font-size:20px}
 .ab-orbit .work__meta{padding-top:22px;gap:7px}
 .ab-orbit .work__n,.ab-orbit .work__swatch{display:none}
}
@media(prefers-reduced-motion:reduce){
 .ab-orbit .works__track{display:flex;overflow-x:auto;gap:24px;height:450px;padding:20px 6vw;scroll-snap-type:x mandatory;touch-action:pan-x pan-y}
 .ab-orbit .work{position:relative;left:auto;top:auto;transform:none!important;opacity:1!important;flex:0 0 min(76vw,400px);height:380px;scroll-snap-align:center}
 .ab-orbit .work__meta,.ab-orbit .work__view{opacity:1}
}
