/* LUNE 29 — editorial typography and architectural light. */
.l29-maison{--wine:#742e35;--ink:#252320;--paper:#f5f1e8;--serif:"Iowan Old Style","Baskerville","Palatino Linotype","Book Antiqua",Georgia,serif;--sans:"Avenir Next","Helvetica Neue",Helvetica,Arial,sans-serif;color:var(--ink);font-family:var(--sans);box-sizing:border-box}
.l29-maison *{box-sizing:border-box}
#gallery.l29-maison{padding-top:48px;background:transparent;border-top:1px solid #d4c9bb}
.l29-maison-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:center;padding-bottom:40px}
.l29-maison-copy{display:grid;gap:24px;min-width:0}
.l29-maison .l29-maison-kicker{margin:0;color:var(--wine);font:500 10px/1.8 var(--sans);letter-spacing:.19em;text-transform:uppercase}
.l29-maison .l29-maison-title,#gallery.l29-maison .l29-maison-title{margin:0;color:var(--ink);font:400 clamp(38px,4.4vw,62px)/1.08 var(--serif);letter-spacing:-.035em;text-wrap:balance}
.l29-maison-title em{font-weight:400;color:var(--wine)}
.l29-maison .l29-maison-note{margin:0;max-width:400px;color:#6f655c;font:300 15px/1.9 var(--sans)}
.l29-maison .l29-maison-date{margin:8px 0 0;padding:17px 0 0;border-top:1px solid #c9b9a5;max-width:340px;font:500 10px/1.8 var(--sans);letter-spacing:.12em;text-transform:uppercase;color:var(--wine)}
.l29-maison .l29-maison-plan{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:26px 0;border-top:1px solid #d4c9bb;color:inherit;text-decoration:none}
.l29-maison-plan h3{margin:5px 0 0;font:400 31px/1.2 var(--serif);letter-spacing:-.02em}
.l29-maison .l29-maison-status{margin:0;color:var(--wine);font:500 10px/1.8 var(--sans);letter-spacing:.12em;text-transform:uppercase}
.l29-maison-status span{display:inline-block;font-size:22px;margin-left:15px;transition:transform .4s}
.l29-maison-plan:hover .l29-maison-status span{transform:translate(4px,-4px)}
.l29-maison a:focus-visible,.l29-signature button:focus-visible,.l29-plan-header a:focus-visible{outline:2px solid #b18d55;outline-offset:6px}
.l29-signature{position:relative;isolation:isolate;height:500px;min-width:0;margin:0;overflow:hidden;background:radial-gradient(ellipse at 25% 20%,#974a4e,transparent 65%),#642930;color:#f5f1e8;box-shadow:0 18px 40px -28px #49262e80}
.l29-signature::after{content:'';position:absolute;inset:12px;border:1px solid #e6cfa522;pointer-events:none;z-index:5}
.l29-sig-top{position:absolute;top:31px;left:31px;right:31px;display:flex;align-items:center;justify-content:space-between;gap:15px;z-index:4}
.l29-sig-top span:first-child{font:18px var(--serif);letter-spacing:.16em}
.l29-sig-top span:last-child{font:9px var(--sans);letter-spacing:.2em;color:#e2cbbc}
.l29-sig-art{position:absolute;inset:75px 24px 86px;perspective:1000px;overflow:hidden;--px:50%;--py:45%}
.l29-sig-art::after{content:'';position:absolute;inset:0;background:radial-gradient(circle at var(--px) var(--py),#fff3c52e,transparent 48%);pointer-events:none;z-index:3}
.l29-sig-arch{position:absolute;border-radius:160px 160px 0 0;width:55%;height:84%;bottom:5%;left:50%;transform:translateX(-50%)}
.l29-sig-arch-back{width:65%;height:94%;left:46%;border:1px solid #d7af8799;background:linear-gradient(125deg,#dab69c12,#3c152230);box-shadow:8px 9px 15px #37121e25}
.l29-sig-arch-front{left:54%;overflow:hidden;background:linear-gradient(130deg,#f4e8d3 0%,#c9a782 45%,#9b6e58 100%);box-shadow:-10px 9px 24px #34131f59,inset 1px 1px 0 #fff8eb80}
.l29-sig-arch-front::after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 20%,#fff9dc99 48%,transparent 76%);transform:translateX(-40%);animation:l29-sig-light 12s ease-in-out infinite alternate;animation-play-state:paused}
.l29-sig-horizon{position:absolute;left:-30%;right:-30%;bottom:-27%;height:62%;background:#ad866a;transform:rotate(-20deg);box-shadow:0 -1px 0 #fff2cd60,0 -13px 30px #fff6d22b}
.l29-sig-moon{position:absolute;top:24%;left:43%;width:52px;height:52px;border-radius:50%;background:#fcf4e4;box-shadow:0 0 25px #fff2cf88,inset -8px -3px 12px #d6b38b66}
.l29-sig-step{position:absolute;bottom:3%;left:20%;right:11%;height:6px;background:linear-gradient(90deg,#aa7e64,#e8cdb0,#986b56);box-shadow:0 5px 12px #3b15265c}
.l29-sig-beam{position:absolute;inset:-40%;background:linear-gradient(118deg,transparent 42%,#f8db9c2b 49%,transparent 58%);transform:translateX(-15%);animation:l29-sig-light 12s ease-in-out infinite alternate;animation-play-state:paused;pointer-events:none;z-index:2}
.l29-signature figcaption{position:absolute;left:28px;right:28px;bottom:49px;margin:0;text-align:center;color:#f0dfce;font:10px/1.7 var(--sans);letter-spacing:.08em}
.l29-signature .l29-sig-motion{position:absolute;bottom:22px;left:50%;transform:translateX(-50%);padding:5px 10px;border:0;background:transparent;color:#e3c4b3;white-space:nowrap;font:9px/1.5 var(--sans);letter-spacing:.07em;cursor:pointer;text-decoration:underline;text-underline-offset:3px;z-index:6}
.l29-sig-motion[hidden]{display:none}
.l29-sig-plan{width:100%;height:100%;transform:rotate(-8deg);filter:drop-shadow(4px 9px 5px #30152255)}
.l29-sig-plan-base{stroke:#d8b991;stroke-width:3;opacity:.65}
.l29-sig-plan-trace{stroke:#fff1ce;stroke-width:3;stroke-dasharray:130 850;animation:l29-sig-trace 16s linear infinite;animation-play-state:paused}
.l29-sig-plan-guide{stroke:#d8b991;stroke-width:1;opacity:.3}
.l29-signature.is-running .l29-sig-arch-front::after,.l29-signature.is-running .l29-sig-beam,.l29-signature.is-running .l29-sig-plan-trace{animation-play-state:running}
@keyframes l29-sig-light{from{transform:translateX(-22%);opacity:.4}to{transform:translateX(24%);opacity:1}}
@keyframes l29-sig-trace{to{stroke-dashoffset:-980}}
.l29-plan-body{margin:0;background:#f5f1e8;color:#252320}
.l29-plan-header{display:flex;justify-content:space-between;align-items:center;gap:20px;max-width:1280px;padding:32px clamp(24px,5vw,60px);margin:auto;border-bottom:1px solid #d4c9bb}
.l29-plan-header a{color:inherit;text-decoration:none}
.l29-plan-brand{font:28px "Iowan Old Style","Baskerville",Georgia,serif;letter-spacing:.12em;white-space:nowrap}
.l29-plan-header nav{display:flex;gap:24px;font:12px "Avenir Next","Helvetica Neue",Arial,sans-serif}
.l29-plan-main{max-width:1180px;padding:0 clamp(24px,5vw,54px);margin:64px auto}
.l29-maison-nav{display:flex;flex-wrap:wrap;justify-content:space-between;gap:24px;padding-top:26px;border-top:1px solid #d4c9bb}
.l29-maison-nav a{color:var(--wine);font:13px/1.8 var(--sans);text-decoration:underline;text-underline-offset:5px}
@media(max-width:700px){#gallery.l29-maison{padding-top:32px}.l29-maison-layout{grid-template-columns:minmax(0,1fr);gap:30px;padding-bottom:28px}.l29-signature{height:420px}.l29-maison-copy{gap:20px}.l29-maison .l29-maison-plan{align-items:flex-start;flex-direction:column;gap:14px}.l29-maison .l29-maison-date{max-width:100%}.l29-plan-main{margin:36px auto}.l29-plan-brand{font-size:24px}.l29-sig-art{left:16px;right:16px}}
@media(prefers-reduced-motion:reduce){.l29-sig-arch-front::after,.l29-sig-beam,.l29-sig-plan-trace{animation:none!important}.l29-maison-status span{transition:none}.l29-sig-motion{display:none}}

/* Floor-plan link: architectural icon and clear, keyboard-accessible affordance. */
.l29-maison-plan .l29-maison-status{display:flex;align-items:center;gap:14px}
.l29-maison-plan .l29-plan-link-icon{box-sizing:content-box;flex:0 0 32px;width:32px;height:32px;padding:10px;border:1px solid #742e3533;border-radius:50%;background:#742e3506;transition:background .25s,border-color .25s}
.l29-maison-plan:hover .l29-plan-link-icon,.l29-maison-plan:focus-visible .l29-plan-link-icon{background:#742e3510;border-color:#742e3570}
.l29-maison-plan:focus-visible{outline:2px solid var(--wine);outline-offset:6px}
.l29-maison-plan .l29-maison-status span{flex-shrink:0;margin-left:0}
@media(max-width:700px){.l29-maison-plan .l29-maison-status{gap:10px}.l29-maison-plan .l29-plan-link-icon{width:28px;height:28px;flex-basis:28px;padding:8px}}
@media(prefers-reduced-motion:reduce){.l29-maison-plan .l29-plan-link-icon{transition:none}}

/* Matching city-map icon for the Paris guide. */
#paris .l29-paris-guide-link{align-items:center;gap:14px;color:#742e35;border-bottom:0;padding-bottom:0;max-width:100%;line-height:1.8}
#paris .l29-city-link-icon{box-sizing:content-box;flex:0 0 32px;width:32px;height:32px;padding:10px;border:1px solid #742e3533;border-radius:50%;background:#742e3506;transition:background .25s,border-color .25s}
#paris .l29-paris-guide-link:hover .l29-city-link-icon,#paris .l29-paris-guide-link:focus-visible .l29-city-link-icon{background:#742e3510;border-color:#742e3570}
#paris .l29-paris-guide-link:focus-visible{outline:2px solid #742e35;outline-offset:6px}
#paris .l29-paris-guide-link>span{flex-shrink:0}
@media(max-width:700px){#paris .l29-paris-guide-link{gap:10px}#paris .l29-city-link-icon{width:28px;height:28px;flex-basis:28px;padding:8px}}
@media(prefers-reduced-motion:reduce){#paris .l29-city-link-icon{transition:none}}
