/* --- index-P1C4dS9m.css --- */
:root{--ivory:#f8f7f4;--paper:#fffdf9;--brown:#3f2c20;--brown-soft:#715d4e;--caramel:#d8904f;--caramel-dark:#b86e32;--line:#d8904f61;--shadow:0 14px 36px #3d281814;--serif:"Cormorant Garamond", Georgia, serif;--sans:"DM Sans", Arial, sans-serif;--radius-card:20px;--content-width:720px}*{box-sizing:border-box}html{background:var(--ivory);scroll-behavior:smooth;min-height:100%}body{background:var(--ivory);min-height:100%;color:var(--brown);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0}a{color:inherit}button,input,select{font:inherit}img{max-width:100%}#root,.app-shell-fallback{min-height:100vh}.fallback-hero{color:#fff;text-align:center;background:linear-gradient(#1e140d3d,#1e140d3d),url(/assets/hero-home-hospitality-premium-v24.webp) 50%/cover;place-items:center;min-height:100vh;display:grid}.fallback-hero>img{width:98px;position:absolute;top:24px;left:24px}.fallback-hero span{font:500 64px/1 var(--serif)}.route-loading{background:var(--ivory);min-height:100vh;color:var(--brown-soft);place-items:center;display:grid}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.route-stage{min-height:100vh;animation:.22s cubic-bezier(.22,.61,.36,1) both route-enter}.route-loading{letter-spacing:.04em;align-content:center;gap:10px;font-size:13px}.route-loading__mark{color:var(--caramel);font:500 28px/1 var(--serif);animation:1s ease-in-out infinite route-pulse;display:block}@keyframes route-enter{0%{opacity:.72;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@keyframes route-pulse{0%,to{opacity:.42;transform:scale(.92)rotate(0)}50%{opacity:1;transform:scale(1.05)rotate(12deg)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.route-stage,.route-loading__mark{animation:none}}.brand-logo{object-fit:contain;width:118px;height:auto}.brand-logo--compact{width:96px}.language-switcher{position:relative;display:block}.language-switcher>summary{list-style:none}.language-switcher>summary::-webkit-details-marker{display:none}.language-switcher__trigger{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:var(--caramel);border:1px solid var(--caramel);border-radius:999px;min-width:58px;height:38px;padding:0 12px;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:600;letter-spacing:.03em;display:flex;box-shadow:0 8px 22px #12090424,inset 0 1px #ffffff38}.language-switcher__trigger svg{fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round;width:11px;height:8px;transition:transform .16s}.language-switcher[open] .language-switcher__trigger svg{transform:rotate(180deg)}.language-switcher__menu{z-index:10;top:calc(100% + 8px);right:0;padding:0;gap:8px;display:flex;position:absolute;background:transparent;border:0;box-shadow:none;white-space:nowrap}.language-switcher__menu a{color:#fff;-webkit-backdrop-filter:blur(14px) saturate(130%);backdrop-filter:blur(14px) saturate(130%);background:#ffffff24;border:1px solid #ffffff75;border-radius:999px;place-items:center;min-width:48px;height:38px;padding:0 12px;font-size:12px;font-weight:600;text-decoration:none;display:grid;box-shadow:0 8px 22px #12090424,inset 0 1px #ffffff4d;transition:background .16s,transform .16s,border-color .16s}.language-switcher__menu a:hover,.language-switcher__menu a:focus-visible{background:#ffffff38;border-color:#ffffffa6;outline:0}.language-switcher__menu a:active{transform:scale(.97)}.back-button{z-index:1;appearance:none;cursor:pointer;color:#fffaf5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1f16107a;border:1px solid #d8904f94;border-radius:50%;flex:none;place-items:center;width:48px;height:48px;padding:0;transition:transform .16s,border-color .16s,background .16s;display:grid;position:relative;box-shadow:0 9px 24px #12090433,inset 0 1px #ffffff2e}.back-button svg{fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px;overflow:visible}.back-button:hover{background:#1f16109e;border-color:#d8904fe6;transform:translateY(-1px)}.back-button:active{transform:scale(.96)}.back-button:focus-visible{outline-offset:3px;outline:3px solid #fffaf5eb}.hero{color:#fff;isolation:isolate;background-color:#251911;place-items:center;min-height:clamp(600px,86vh,900px);display:grid;position:relative;overflow:hidden}.hero--compact{min-height:clamp(430px,62vh,620px)}.hero__media{--hero-position:center;z-index:0;object-fit:cover;object-position:var(--hero-position);transform-origin:50%;width:calc(100% + 4px);max-width:none;height:calc(100% + 4px);position:absolute;inset:-2px;transform:scale(1.01)}.hero--city .hero__media,.hero--moment .hero__media{filter:brightness(.48)contrast(1.08)saturate(.88)}.hero--music .hero__media{filter:brightness(.56)contrast(1.06)saturate(.92)}.hero__overlay{z-index:1;pointer-events:none;background:linear-gradient(#1b120c33,#1b120c1f 42%,#1b120c6b);position:absolute;inset:0}.hero--city .hero__overlay,.hero--moment .hero__overlay{background:linear-gradient(#180f0957,#180f0930 43%,#180f0985),radial-gradient(circle at 50% 31%,#ffffff09,#0000 42%)}.hero--music .hero__overlay{background:linear-gradient(#180f0945,#180f0926 43%,#180f0978),radial-gradient(circle at 50% 31%,#ffffff0d,#0000 43%)}.hero__topbar{z-index:3;top:max(20px, env(safe-area-inset-top));justify-content:space-between;align-items:center;display:flex;position:absolute;left:24px;right:24px}.hero__content{z-index:2;text-align:center;width:min(92vw,760px);margin-top:-5vh;position:relative}.hero-kicker{font:500 clamp(14px, 2vw, 22px)/1 var(--serif);letter-spacing:.18em;text-transform:uppercase;margin:0 0 10px}.hero h1{font:500 clamp(60px, 10vw, 118px)/.9 var(--serif);letter-spacing:-.04em;text-shadow:0 16px 38px #12090457;margin:0}.city-name{color:var(--caramel);font-style:italic}.home-welcome-title__label{display:block}.hero h1 .home-welcome-title__name{color:var(--caramel);font-family:var(--serif);letter-spacing:-.05em;text-shadow:0 14px 34px #12090461;margin-top:.12em;font-size:.78em;font-style:italic;font-weight:600;line-height:1.02;display:block}.city-name{letter-spacing:-.042em;font-size:clamp(76px,10.5vw,128px);line-height:.88;display:block}.hero-subtitle{color:#fffbf6f2;text-shadow:0 8px 24px #08050380;max-width:480px;margin:16px auto 0;font-size:15px;line-height:1.55}.hero-subtitle span{display:block}.ornament{background:linear-gradient(90deg,transparent,var(--caramel),transparent) center/100% 1px no-repeat;width:120px;height:16px;margin:15px auto 0}.ornament:after{content:"✦";color:var(--caramel);display:block;transform:translateY(-8px)}.basket-curve{z-index:2;height:114px;color:var(--ivory);pointer-events:none;position:absolute;bottom:-2px;left:0;right:0}.basket-curve svg{width:100%;height:100%;display:block;overflow:visible}.basket-curve path{fill:#f8f7f4;stroke:#f8f7f4;stroke-width:2px;vector-effect:non-scaling-stroke;shape-rendering:geometricprecision}.basket-curve__mobile{display:none}.basket-curve:after{content:"";background:var(--ivory);height:6px;position:absolute;bottom:-4px;left:0;right:0}.action-grid{width:min(100%, var(--content-width));gap:12px;margin:auto;display:grid}.action-card{border:1px solid var(--line);border-radius:var(--radius-card);min-height:88px;box-shadow:var(--shadow);background:linear-gradient(145deg,#fffffffe,#f5f6f7f9);grid-template-columns:52px 1fr auto;align-items:center;gap:15px;padding:16px 19px;text-decoration:none;transition:transform .18s,box-shadow .18s;display:grid}.action-card:hover{transform:translateY(-2px);box-shadow:0 18px 38px #3d28181c}.action-card__icon{width:52px;height:52px;color:var(--caramel-dark);font:500 22px/1 var(--serif);background:0 0;border:0;border-radius:0;place-items:center;display:grid;overflow:visible}.action-card__icon img{object-fit:contain;width:100%;height:100%}.action-card__icon svg{fill:none;stroke:currentColor;stroke-width:1.65px;stroke-linecap:round;stroke-linejoin:round;width:23px;height:23px}.action-card__copy strong{font:600 22px/1.05 var(--serif);display:block}.action-card__copy small{color:var(--brown-soft);margin-top:6px;line-height:1.42;display:block}.action-card--featured{border-color:#b86e3285}.action-card--map{background:linear-gradient(145deg,#fffffffe,#f5f6f7f9)}.chevron{color:var(--caramel-dark);font-size:30px;font-weight:400}.site-footer{place-items:center;padding:38px 20px 52px;display:grid}.site-footer:before{content:"";background:linear-gradient(90deg,transparent,var(--caramel),transparent);width:150px;height:1px;margin-bottom:20px}.offline-indicator{z-index:100;left:50%;bottom:max(14px, env(safe-area-inset-bottom));background:var(--brown);color:#fff;box-shadow:var(--shadow);border-radius:999px;padding:10px 16px;font-size:12px;position:fixed;transform:translate(-50%)}@media (max-width:650px){.hero{min-height:690px}.hero--compact{min-height:500px}.hero__topbar{left:16px;right:16px}.hero h1{font-size:clamp(56px,17vw,82px)}.home-welcome-title__name{letter-spacing:-.045em;font-size:.76em}.city-name{font-size:clamp(66px,18vw,90px)}.brand-logo--compact{width:82px}.basket-curve{height:78px;bottom:-2px}.basket-curve__desktop{display:none}.basket-curve__mobile{display:block}.action-card{border-radius:18px;grid-template-columns:48px 1fr auto;min-height:82px;padding:14px 15px}.action-card__icon{width:48px;height:48px}.action-card__copy strong{font-size:19px}.action-card__copy small{font-size:12.5px}}.page-content{padding:38px 18px}.page-content--first{margin-top:-2px}.page-content--list{width:min(100%,860px);margin:auto;padding-top:42px}.recommendation-list{gap:18px;display:grid}.recommendation-card{border:1px solid var(--line);background:var(--paper);box-shadow:var(--shadow);border-radius:24px;grid-template-columns:210px minmax(0,1fr);align-items:start;display:grid;overflow:hidden}.recommendation-card__image{background:#e8dfd5;width:210px;height:210px;min-height:0;overflow:hidden}.recommendation-card__image img{object-fit:cover;width:100%;height:100%;display:block}.recommendation-card__body{padding:24px}.recommendation-card__meta{color:var(--caramel-dark);text-transform:uppercase;letter-spacing:.08em;justify-content:space-between;gap:12px;font-size:12px;display:flex}.recommendation-card h2{font:600 34px/1 var(--serif);margin:10px 0 8px}.recommendation-card p{color:var(--brown-soft);line-height:1.58}.guest-advice{border-left:2px solid var(--caramel);color:var(--brown-soft);background:#fbf5ee;margin-top:16px;padding:14px;line-height:1.5}.guest-advice span{color:var(--caramel-dark);letter-spacing:.13em;margin-bottom:4px;font-size:10px;font-weight:600;display:block}.text-link{color:var(--caramel-dark);margin-top:16px;font-weight:600;display:inline-block}.feedback-card{border:1px solid var(--line);text-align:center;background:var(--paper);border-radius:20px;margin-top:28px;padding:24px}.feedback-card h2{font:600 28px/1 var(--serif);margin:0 0 12px}.feedback-card button{border:1px solid var(--line);min-width:92px;color:var(--brown);background:#fff;border-radius:999px;margin:0 5px;padding:11px 18px}.intent-grid,.map-filters{width:min(100%, var(--content-width));flex-wrap:wrap;justify-content:center;gap:8px;margin:0 auto 20px;display:flex}.intent-grid button,.map-filters button{border:1px solid var(--line);background:var(--paper);color:var(--brown);border-radius:999px;padding:11px 15px}.intent-grid button.active,.map-filters button.active{background:var(--caramel);color:#fff;border-color:var(--caramel)}.map-page{padding:30px 18px 0}.map-holder{border:1px solid var(--line);width:min(100%,1050px);height:min(66vh,680px);box-shadow:var(--shadow);border-radius:24px;margin:auto;overflow:hidden}.legal-page{border:1px solid var(--line);background:var(--paper);width:min(100% - 36px,760px);min-height:80vh;box-shadow:var(--shadow);border-radius:24px;margin:40px auto;padding:38px}.legal-page h1{font:600 48px/1 var(--serif)}.legal-page h2{font:600 28px/1 var(--serif);margin-top:30px}.legal-page p{color:var(--brown-soft);line-height:1.7}.legal-back{background:var(--brown)}@media (max-width:650px){.hero{min-height:690px}.hero--compact{min-height:500px}.hero__topbar{left:16px;right:16px}.hero h1{font-size:clamp(56px,17vw,82px)}.brand-logo--compact{width:82px}.basket-curve{height:76px}.page-content{padding:28px 14px}.action-card{border-radius:18px;grid-template-columns:48px 1fr auto;min-height:82px;padding:14px 15px}.action-card__icon{width:48px;height:48px}.action-card__copy strong{font-size:19px}.action-card__copy small{font-size:12.5px}.recommendation-card{grid-template-columns:1fr}.recommendation-card__image{width:100%;height:190px;min-height:0}.recommendation-card__body{padding:20px}.map-holder{border-radius:20px;height:62vh}}.home-actions{width:min(100%, var(--content-width));gap:12px;margin:auto;display:grid}.home-actions__title{text-align:center;font:600 clamp(28px, 4vw, 40px)/1 var(--serif);margin:0 0 8px}.home-actions .action-card__copy strong{font-family:var(--sans);font-weight:600;letter-spacing:-.015em}.home-actions .action-card__copy small{font-family:var(--sans);font-weight:400}.home-actions__pair{grid-template-columns:1fr 1fr;gap:12px;display:grid}.home-actions__pair .action-card{grid-template-columns:48px 1fr auto}.home-actions>.action-card--featured{color:#fff;background:linear-gradient(90deg,#1d120bad,#1d120b6e),url(/assets/hero-home-hospitality-premium-v24.webp) 50% 52%/cover no-repeat;border-color:#d8904fb8;min-height:124px;box-shadow:0 16px 36px #2b1a0f2e}.home-actions>.action-card--featured .action-card__icon{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffcf738;border-color:#ffffff57}.home-actions>.action-card--featured .action-card__copy small{color:#fffbf6e0}.home-actions>.action-card--featured .chevron{color:#fff}.moment-controls{gap:14px;margin-bottom:28px;display:grid}.control-group{border:1px solid var(--line);background:var(--paper);border-radius:18px;padding:17px}.control-group>strong{font:600 21px/1 var(--serif);margin-bottom:10px;display:block}.control-group>div{flex-wrap:wrap;gap:8px;display:flex}.control-group button,.moment-heading button{border:1px solid var(--line);color:var(--brown);background:#fff;border-radius:999px;padding:10px 14px}.control-group button.active{background:var(--caramel);border-color:var(--caramel);color:#fff}.moment-heading{justify-content:space-between;align-items:center;gap:16px;margin:0 0 18px;display:flex}.moment-heading h2{font:600 34px/1 var(--serif);margin:0}.map-error{width:min(100%,720px);color:var(--caramel-dark);text-align:center;margin:0 auto 14px}@media (max-width:650px){.home-actions__pair{grid-template-columns:1fr}.moment-heading{flex-direction:column;align-items:flex-start}}.music-page-content{background:linear-gradient(#f8f7f4 0%,#f4f1ec 54%,#faf9f7 100%)}.music-section-heading{width:min(100%, var(--content-width));text-align:center;margin:0 auto 22px}.music-section-heading span{color:var(--caramel-dark);letter-spacing:.16em;text-transform:uppercase;margin-bottom:8px;font-size:11px;font-weight:600;display:block}.music-section-heading h2{font:600 clamp(30px, 4.2vw, 42px)/1 var(--serif);letter-spacing:-.025em;margin:0}.recommendation-card{content-visibility:auto;contain-intrinsic-size:210px 420px;transition:transform .18s,box-shadow .18s,border-color .18s}.recommendation-card:hover{border-color:#d8904f7a;transform:translateY(-2px);box-shadow:0 18px 40px #3d28181b}.recommendation-card__image{position:relative}.recommendation-card__image:after{content:"";pointer-events:none;background:linear-gradient(105deg,#e8dfd58c 20%,#fffdf9eb 42%,#e8dfd58c 64%) 0 0/220% 100%;transition:opacity .22s;animation:1.15s ease-in-out infinite image-placeholder;position:absolute;inset:0}.recommendation-card__image img{opacity:0;transition:opacity .24s,transform .38s;transform:scale(1.01)}.recommendation-card__image.is-loaded:after{opacity:0}.recommendation-card__image.is-loaded img{opacity:1;transform:scale(1)}.action-card,.intent-grid button,.map-filters button,.control-group button,.feedback-card button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.action-card:active,.intent-grid button:active,.map-filters button:active,.control-group button:active,.feedback-card button:active{transform:scale(.985)}@keyframes image-placeholder{0%{background-position:100% 0}to{background-position:-100% 0}}@media (max-width:650px){.recommendation-card:hover{transform:none}}@media (prefers-reduced-motion:reduce){.recommendation-card,.recommendation-card__image img,.recommendation-card__image:after,}.action-card,.action-card--map,.action-card:hover,.action-card--featured,.home-actions>.action-card--featured{border-color:#0000}.home-actions>.action-card--featured{box-shadow:0 16px 36px #1c140e2e,inset 0 0 0 1px #ffffff1a}.home-actions>.action-card--featured .action-card__icon{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0;border:0}.control-group{background:linear-gradient(145deg,#fffffffe,#f6f8fafb);border-color:#0000;box-shadow:0 10px 28px #1f23280e,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.control-group button,.moment-heading button,.intent-grid button,.feedback-card button{background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border-color:#0000;box-shadow:0 5px 14px #1f23280b,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.control-group button.active,.intent-grid button.active{background:var(--caramel);border-color:#0000;box-shadow:0 7px 18px #b86e3233}.moment-context-strip{width:100%;min-height:64px;color:var(--brown);background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border:0;border-radius:20px;grid-template-columns:minmax(0,1.12fr) minmax(0,1.35fr) minmax(0,.72fr);align-items:stretch;margin:0 0 26px;padding:10px 12px;display:grid;box-shadow:0 12px 30px #1f232811,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.moment-context-strip>div{align-items:center;gap:9px;min-width:0;padding:4px 13px;display:flex}.moment-context-strip>div+div{border-left:1px solid #3f2c2017}.moment-context-strip__weather-copy{min-width:0;line-height:1.05;display:grid}.moment-context-strip__weather-copy strong{font:600 22px/1 var(--serif);letter-spacing:-.02em}.moment-context-strip__weather-copy small,.moment-context-strip__item{color:var(--brown-soft);font-size:12px;line-height:1.25}.moment-context-strip__weather-copy small,.moment-context-strip__item>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.moment-context-strip__icon,.moment-context-strip__mini-icon{color:var(--caramel-dark);flex:none;place-items:center;display:grid}.moment-context-strip__icon{width:34px;height:34px}.moment-context-strip__mini-icon{width:20px;height:20px}.moment-context-strip svg{fill:none;stroke:currentColor;stroke-width:1.55px;stroke-linecap:round;stroke-linejoin:round;width:100%;height:100%}.moment-context-strip__city{justify-content:center;font-weight:600}@media (max-width:650px){.moment-context-strip{border-radius:18px;grid-template-columns:minmax(0,1.1fr) minmax(0,1.35fr) minmax(0,.72fr);min-height:58px;margin-bottom:22px;padding:8px 7px}.moment-context-strip>div{gap:6px;padding:4px 8px}.moment-context-strip__icon{width:29px;height:29px}.moment-context-strip__mini-icon{width:17px;height:17px}.moment-context-strip__weather-copy strong{font-size:19px}.moment-context-strip__weather-copy small,.moment-context-strip__item{font-size:10.5px}}
.home-actions .action-card{min-height:112px;grid-template-columns:60px minmax(0,1fr) auto;gap:18px;padding:20px 22px}.home-actions__pair .action-card{grid-template-columns:60px minmax(0,1fr) auto}.home-actions .action-card__icon{width:60px;height:60px}.home-actions .action-card__copy strong{font-size:23px}.home-actions .action-card__copy small{font-size:14px;line-height:1.45}.home-actions>.action-card--featured{min-height:138px}@media (max-width:650px){.home-actions{gap:14px}.home-actions__pair{gap:14px}.home-actions .action-card,.home-actions__pair .action-card{min-height:104px;grid-template-columns:56px minmax(0,1fr) auto;gap:15px;padding:18px 17px}.home-actions .action-card__icon{width:56px;height:56px}.home-actions .action-card__copy strong{font-size:20px}.home-actions .action-card__copy small{font-size:13px;line-height:1.4}.home-actions>.action-card--featured{min-height:132px}}

.all-filters{margin:0 0 22px}.all-category-row{display:flex;gap:2px;overflow:auto;padding:4px;margin-bottom:10px;scrollbar-width:none;border-radius:16px;background:#eceef1b8;box-shadow:inset 0 1px 3px #1f23280a}.all-category-row::-webkit-scrollbar{display:none}.all-chip,.all-filter-toggle,.all-filter-panel button,.all-filter-panel select{min-height:44px;border:0;border-radius:14px;background:linear-gradient(145deg,#fff,#f3f5f7);box-shadow:0 8px 22px #1f232810,inset 0 0 0 1px #1f232809;color:var(--brown);font-weight:600;padding:9px 14px;white-space:nowrap}.all-chip{flex:1;background:transparent;box-shadow:none;min-height:38px;padding:7px 12px}.all-chip.active{background:#fffffff2;box-shadow:0 2px 8px #1f232812,inset 0 0 0 1px #ffffffb8}.all-filter-panel button.active{box-shadow:0 9px 22px #b86e3219,inset 0 0 0 1.5px var(--caramel)}.all-filter-toggle{width:100%;border-radius:17px;display:flex;align-items:center;justify-content:space-between;margin-top:7px}.all-filter-panel{background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border-radius:19px;box-shadow:0 10px 28px #1f23280e,inset 0 0 0 1px #1f232809;padding:17px;margin-top:10px;display:grid;gap:17px}.all-filter-group>strong{color:var(--caramel-dark);font:600 10px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;display:block;margin-bottom:9px}.all-filter-options{display:flex;flex-wrap:wrap;gap:8px}.all-filter-check{display:flex;align-items:center;gap:9px;font-size:13px}.all-filter-check input{accent-color:var(--caramel);width:18px;height:18px}.all-filter-selects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.all-filter-panel select{border-radius:14px;width:100%;appearance:auto}.all-filter-actions{display:flex;justify-content:flex-end}.all-results-count{color:var(--brown-soft);font-size:12px;margin:0 0 13px}.all-empty{padding:28px;text-align:center;background:#fff;border-radius:18px;color:var(--brown-soft)}.all-filter-panel{position:fixed;z-index:60;left:50%;transform:translateX(-50%);bottom:12px;width:min(720px,calc(100vw - 24px));max-height:min(78vh,680px);overflow:auto;padding:18px 16px 22px;border-radius:24px;box-shadow:0 24px 70px #1f232833,0 0 0 100vmax #12090438,inset 0 0 0 1px #fff9;animation:allSheetIn .2s ease both}.all-filter-selects{grid-template-columns:repeat(2,minmax(0,1fr))}@keyframes allSheetIn{from{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%,0)}}@media(max-width:600px){.all-category-row{margin-left:-2px;margin-right:-2px}.all-chip{font-size:11px;padding:7px 10px}.all-filter-panel{left:10px;right:10px;bottom:10px;width:auto;transform:none;max-height:min(80vh,720px)}@keyframes allSheetIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.all-filter-selects{grid-template-columns:1fr}}.all-category-row button,.all-filter-toggle,.all-filter-panel button,.all-filter-panel select,.all-results-count,.all-filter-check,
.moment-flow,.moment-result-summary,.moment-itinerary,.moment-quick{background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border:0;border-radius:20px;box-shadow:0 10px 28px #1f23280e,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.moment-flow{padding:22px;margin-bottom:24px}.moment-sheet-layer{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;padding:max(18px,env(safe-area-inset-top)) 12px max(18px,env(safe-area-inset-bottom));background:rgba(22,15,10,.34);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);touch-action:none;overscroll-behavior:contain}.moment-flow.moment-flow-enter{position:relative;left:auto;right:auto;bottom:auto;z-index:1;width:min(430px,calc(100% - 8px));max-height:min(82dvh,680px);overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain;margin:0;padding:30px 18px 26px;border-radius:28px;box-shadow:0 28px 80px #12090445,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.moment-flow.moment-flow-enter:before{content:"";position:absolute;top:9px;left:50%;width:42px;height:5px;border-radius:999px;background:#3f2c2030;transform:translateX(-50%)}.moment-flow__kicker{color:var(--caramel-dark);font:600 10px/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;margin:0 0 9px}.moment-flow h2{font:600 28px/1.08 var(--serif);margin:0 0 18px;color:var(--brown)}.moment-flow__step+.moment-flow__step{border-top:1px solid #3f2c2012;margin-top:20px;padding-top:20px}.moment-context-strip{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 14px;margin:18px auto 0;padding:0;border:0;border-radius:0;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;color:#fffaf5;text-shadow:0 5px 18px #1209048a}.moment-context-strip__item{display:inline-flex;align-items:center;gap:8px;color:#fffaf5;font:500 13px/1.2 var(--sans)}.moment-context-strip__icon,.moment-context-strip__mini-icon{color:#fffaf5;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;opacity:.95}.moment-context-strip__icon svg,.moment-context-strip__mini-icon svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7px;stroke-linecap:round;stroke-linejoin:round}.moment-context-strip__weather-copy{font:600 13px/1 var(--sans);letter-spacing:.01em;color:#fff}.moment-context-strip__city{opacity:.92}.moment-choice-grid{display:grid;grid-template-columns:1fr;gap:10px}.moment-choice-grid--occasion{grid-template-columns:1fr}.moment-choice,.moment-duration button,.moment-quick button{min-height:50px;color:var(--brown);background:linear-gradient(145deg,#fff,#f3f5f7);border:0;border-radius:16px;padding:11px 14px;font-weight:600;box-shadow:0 8px 22px #1f232810,inset 0 1px #fff,inset 0 0 0 1px #1f232809;transition:transform .16s,box-shadow .16s}.moment-flow-enter .moment-choice{width:100%;min-height:52px;text-align:left;padding-left:18px;padding-right:18px}.moment-choice:hover,.moment-duration button:hover,.moment-quick button:hover{transform:translateY(-1px);box-shadow:0 12px 28px #1f232817,inset 0 1px #fff}.moment-choice.active,.moment-duration button.active,.moment-quick button.active{box-shadow:0 10px 24px #b86e321c,inset 0 0 0 1.5px var(--caramel),inset 0 1px #fff}.moment-result-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;margin-bottom:18px}.moment-result-summary strong{font:600 20px/1.1 var(--serif)}.moment-result-summary span{display:block;color:var(--brown-soft);font-size:12px;margin-top:4px}.moment-result-summary button{border:0;background:transparent;color:var(--caramel-dark);font-weight:600;padding:10px}.moment-duration{margin-bottom:22px}.moment-duration>strong,.moment-quick>strong{color:var(--caramel-dark);font:600 11px/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;display:block;margin:0 0 10px}.moment-duration>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.moment-heading{margin-top:4px}.moment-itinerary{padding:18px;margin:22px 0}.moment-itinerary h3{font:600 24px/1.1 var(--serif);margin:0 0 15px}.moment-itinerary__route{display:grid;gap:0;margin-bottom:16px}.moment-itinerary__stop{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;position:relative;padding-bottom:14px}.moment-itinerary__stop:not(:last-child):before{content:"";position:absolute;left:5px;top:14px;bottom:-2px;width:1px;background:linear-gradient(to bottom,#483e3708,#483e3726,#483e3708);box-shadow:0 0 8px #fff6}.moment-itinerary__dot{width:11px;height:11px;border-radius:50%;border:1px solid #705c4b29;background:#f8f7f5eb;margin-top:3px;box-shadow:0 2px 8px #332a2414,inset 0 1px #ffffffe6}.moment-itinerary__stop:first-child .moment-itinerary__dot{border-color:#b87b734d;box-shadow:0 0 0 4px #b87b7312,0 2px 8px #332a2414}.moment-itinerary__stop strong{display:block;font-size:13px}.moment-itinerary__stop small{color:var(--brown-soft);font-size:11px}.moment-itinerary__button,.moment-all-link{min-height:48px;border-radius:16px;background:linear-gradient(145deg,#fff,#f3f5f7);box-shadow:0 8px 22px #1f232810,inset 0 0 0 1px #1f232809;color:var(--brown);font-weight:600;display:flex;align-items:center;justify-content:center;text-align:center;padding:11px 14px}.moment-escape-summary{margin:0 0 18px;padding:16px 17px;background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border-radius:18px;box-shadow:0 10px 28px #1f23280e,inset 0 0 0 1px #1f232809}.moment-escape-summary__metrics{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.moment-escape-summary__metrics span{font-size:12px;font-weight:600;color:var(--brown);padding:7px 10px;border-radius:999px;background:#fff9;box-shadow:inset 0 0 0 1px #1f232809}.moment-escape-summary p{margin:0;color:var(--brown-soft);font-size:13px}.moment-route-list{position:relative}.moment-route-step{position:relative;padding-left:25px;margin-bottom:24px;overflow:visible}.moment-route-step:before{content:"";position:absolute;left:5px;top:13px;bottom:-22px;width:1px;background:linear-gradient(to bottom,#483e3708,#483e3722,#483e3706)}.moment-route-step:last-child:before{display:none}.moment-route-step:after{content:"";position:absolute;left:0;top:8px;width:11px;height:11px;border-radius:50%;background:#f8f7f5eb;border:1px solid #705c4b29;box-shadow:0 2px 8px #332a2414,inset 0 1px #ffffffe6}.moment-route-step:first-child:after{border-color:#b87b734d;box-shadow:0 0 0 4px #b87b7312,0 2px 8px #332a2414}.moment-quick{padding:16px;margin:20px 0}.moment-quick>div{display:flex;flex-wrap:wrap;gap:9px}.moment-quick button{min-height:42px;border-radius:999px;padding:8px 13px;font-size:12px}.moment-all-link{margin:14px 0 8px;text-decoration:none}.moment-generation{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px 22px;margin-bottom:24px;background:linear-gradient(145deg,#fffffffe,#f5f7f9fb);border-radius:20px;box-shadow:0 10px 28px #1f23280e,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}.moment-generation__spinner{width:34px;height:34px;border-radius:50%;border:1.5px solid #b86e3224;border-top-color:var(--caramel);animation:momentSpin .85s linear infinite;margin-bottom:18px}.moment-generation h2{font:600 27px/1.1 var(--serif);color:var(--brown);margin:0 0 16px}.moment-generation__steps{display:grid;gap:7px;color:var(--brown-soft);font:400 12px/1.35 var(--sans)}.moment-generation__steps span{animation:momentSoftPulse 1.05s ease-in-out infinite}.moment-generation__steps span:nth-child(2){animation-delay:.15s}.moment-generation__steps span:nth-child(3){animation-delay:.3s}.moment-result-summary,.moment-duration,.moment-heading,.moment-escape-summary,.moment-itinerary,.moment-quick,.moment-all-link{animation:momentResultIn .22s ease both;backface-visibility:hidden}.moment-duration{animation-delay:.04s}.moment-heading{animation-delay:.08s}.moment-escape-summary{animation-delay:.12s}.moment-route-step{animation:momentResultIn .22s ease both;animation-delay:calc(.14s + var(--step-index,0)*80ms);backface-visibility:hidden}.moment-itinerary{animation-delay:.34s}.moment-quick{animation-delay:.39s}.moment-all-link{animation-delay:.44s}.moment-flow-enter{animation:momentFlowIn .2s ease both}@keyframes momentSpin{to{transform:rotate(360deg)}}@keyframes momentSoftPulse{0%,100%{opacity:.52}50%{opacity:1}}@keyframes momentResultIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes momentFlowIn{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.moment-generation__spinner,.moment-generation__steps span,.moment-result-summary,.moment-duration,.moment-heading,.moment-escape-summary,.moment-route-step,.moment-itinerary,.moment-quick,.moment-all-link{animation:none!important}}@media(max-width:650px){.moment-flow{padding:18px 14px;border-radius:18px}.moment-sheet-layer{align-items:center;padding:max(14px,env(safe-area-inset-top)) 10px max(14px,env(safe-area-inset-bottom))}.moment-flow.moment-flow-enter{width:min(100%,390px);max-height:min(84dvh,620px);padding:30px 14px 22px;border-radius:26px}.moment-flow h2{font-size:25px}.moment-choice-grid{grid-template-columns:1fr;gap:8px}.moment-choice-grid--occasion{grid-template-columns:1fr;gap:8px}.moment-choice{min-height:50px;padding:11px 16px;font-size:13px}.moment-result-summary{padding:12px 13px}.moment-result-summary strong{font-size:19px}.moment-duration button{font-size:12px;padding:9px 7px}.moment-itinerary{padding:16px 14px}.moment-route-step{padding-left:21px}.moment-quick{padding:14px}.moment-all-link{font-size:13px}}@media(max-width:360px){.moment-duration button{font-size:11px;padding-left:4px;padding-right:4px}}.moment-choice,.moment-result-summary button,.moment-duration button,.moment-quick button,.moment-itinerary__button,.moment-all-link,.moment-result-summary span,.moment-itinerary__stop small,.moment-escape-summary p,
.tga-map-marker-wrap{background:none;border:0}.tga-map-marker{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#fffdf9;box-shadow:0 10px 22px #12090426,inset 0 0 0 1px #d8904f6b;color:#3f2c20;position:relative}.tga-map-marker:after{content:'';position:absolute;inset:-4px;border-radius:50%;background:#d8904f1f;z-index:-1}.tga-map-marker svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.75px;stroke-linecap:round;stroke-linejoin:round}.tga-map-marker--restaurants{color:#b86e32}.tga-map-marker--bars{color:#8f5b38}.tga-map-marker--activites{color:#d8904f}.tga-map-marker--culture{color:#6a5142}.tga-map-marker--me{color:#3f2c20;box-shadow:0 0 0 5px #d8904f2a,0 10px 22px #12090426,inset 0 0 0 1px #d8904f6b}.leaflet-popup-content-wrapper{border-radius:16px;box-shadow:0 12px 26px #1209041f}.leaflet-popup-content{font:500 13px/1.45 var(--sans);color:var(--brown)}.leaflet-popup-content strong{font:600 16px/1.1 var(--serif)}


/* TGA unified cards, controls and typography — P1/P2/P3 */
:root{--tga-control-radius:18px;--tga-chip-radius:999px;--tga-control-min:48px;--tga-control-bg:linear-gradient(145deg,#fffffffe,#f3f5f7fb);--tga-control-shadow:0 8px 22px #1f232810,inset 0 1px #fffffffa,inset 0 0 0 1px #1f232809}
.hero h1,.hero-kicker+.hero-title,.home-actions__title,.page-content h1,.page-content h2,.recommendation-card h2,.all-address-card h2,.moment-heading h2,.moment-itinerary h3,.feedback-card h2,.music-section-heading h2{font-family:var(--serif);font-weight:600}
.action-card__copy strong,.all-address-card__actions a,.map-filters button,.all-chip,.all-filter-toggle,.all-filter-panel button,.all-filter-panel select,.moment-choice,.moment-duration button,.moment-quick button,.moment-itinerary__button,.moment-all-link,.feedback-card button,.language-switcher__trigger,.language-switcher__option,.back-button,.control-group button,.intent-grid button,.site-footer a,.site-footer button{font-family:var(--sans);font-weight:600}
.action-card__copy small,.recommendation-card p,.recommendation-card__meta,.guest-advice,.all-address-card__price span,.all-results-count,.all-filter-check,.moment-result-summary span,.moment-itinerary__stop small,.moment-escape-summary p,.moment-generation__steps,.hero-subtitle,.page-content p{font-family:var(--sans);font-weight:400}
.all-address-card{position:relative;display:grid;grid-template-columns:1fr;border:1px solid var(--line);border-radius:28px;background:var(--paper);box-shadow:var(--shadow);overflow:hidden;content-visibility:visible;contain-intrinsic-size:auto}
.all-address-card .recommendation-card{display:contents;border:0;border-radius:0;background:transparent;box-shadow:none;transform:none;content-visibility:visible;contain-intrinsic-size:auto}
.all-address-card .recommendation-card__image{width:100%;height:clamp(210px,34vw,320px)}
.all-address-card .recommendation-card__body{padding:20px 20px 0}
.all-address-card .recommendation-card__meta{font-size:11px;letter-spacing:.12em;color:var(--caramel-dark);gap:8px;flex-wrap:wrap}
.all-address-card .recommendation-card h2{font:600 clamp(46px,5vw,66px)/.96 var(--serif);margin:18px 0 12px;color:var(--brown)}
.all-address-card .recommendation-card p{font-size:16px;line-height:1.55;color:var(--brown-soft);margin:0}
.all-address-card .guest-advice{margin:22px 0 0;padding:18px 18px 18px 14px;border-radius:18px;background:#f6efe7;border-left:4px solid var(--caramel)}
.all-address-card .guest-advice span{font-size:11px;letter-spacing:.18em}
.all-address-card__extras{position:relative;z-index:1;margin:0;padding:0 20px 20px;background:var(--paper)}
.all-address-card__price{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 0 12px;margin-top:14px;border-top:1px solid #3f2c2012;color:var(--brown-soft);font-size:15px}
.all-address-card__price strong{color:var(--brown);font:600 20px/1 var(--sans);letter-spacing:.05em}
.all-address-card__actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding-top:14px;border-top:1px solid #3f2c2012}
.all-address-card__actions a{display:inline-flex;align-items:center;justify-content:center;min-height:56px;padding:12px 14px;border:0;border-radius:var(--tga-control-radius);background:var(--tga-control-bg);box-shadow:var(--tga-control-shadow);color:var(--brown);font-size:13px;text-decoration:none;text-align:center}
.all-address-card__actions a.is-route{color:var(--caramel-dark);box-shadow:0 8px 20px #b86e3215,inset 0 0 0 1px #b86e3247}
.all-address-card__actions a:last-child:nth-child(odd){grid-column:1/-1}
.recommendation-list,.moment-route-list{display:grid;gap:20px}
.moment-route-step{padding-left:25px;margin-bottom:4px}
.moment-route-step .all-address-card{margin:0}
.action-card,.all-address-card__actions a,.moment-itinerary__button,.moment-all-link,.feedback-card button{border-radius:var(--tga-control-radius)}
.map-filters button,.all-chip,.moment-quick button,.intent-grid button,.language-switcher__trigger,.language-switcher__option{border-radius:var(--tga-chip-radius);font-size:12px;min-height:44px}
.map-filters button,.all-chip,.all-filter-toggle,.all-filter-panel button,.all-filter-panel select,.moment-choice,.moment-duration button,.moment-quick button,.control-group button,.intent-grid button{background:var(--tga-control-bg);box-shadow:var(--tga-control-shadow);border:0;color:var(--brown)}
.map-filters button.active,.all-chip.active,.moment-choice.active,.moment-duration button.active,.moment-quick button.active,.control-group button.active,.intent-grid button.active{background:var(--caramel);color:#fff;box-shadow:0 8px 20px #b86e3226,inset 0 0 0 1px #fff3}
.language-switcher__option{background:#ffffffd9;color:var(--brown);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 10px 26px #12090420,inset 0 0 0 1px #ffffffb8}
@media(max-width:650px){.all-address-card{border-radius:24px}.all-address-card .recommendation-card__body{padding:18px 18px 0}.all-address-card .recommendation-card h2{font-size:44px}.all-address-card__extras{padding:0 18px 18px}.all-address-card__price{font-size:14px}.all-address-card__price strong{font-size:18px}.all-address-card__actions{grid-template-columns:1fr 1fr}.recommendation-list,.moment-route-list{gap:18px}.moment-route-step{padding-left:21px}}

/* TGA V29 R6 — accueil uniquement: snap écran, titre DM Sans, taille Surprise alignée */
.home-page{height:100dvh;min-height:100svh;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch}
.home-page>.hero,.home-page>.page-content--first,.home-page>.site-footer{scroll-snap-align:start;scroll-snap-stop:always}
.home-page>.hero{min-height:100dvh}
.home-page>.page-content--first{min-height:100dvh;display:grid;align-items:center;padding-top:max(38px,env(safe-area-inset-top));padding-bottom:max(38px,env(safe-area-inset-bottom))}
.home-page .home-actions__title{font-family:var(--sans);font-size:clamp(24px,3.2vw,34px);font-weight:600;line-height:1.2;letter-spacing:-.025em;margin:0 0 28px}
.home-page .home-actions>.action-card--featured{min-height:88px}
@media(max-width:650px){.home-page>.hero{min-height:100dvh}.home-page>.page-content--first{min-height:100dvh;padding-top:max(28px,env(safe-area-inset-top));padding-bottom:max(28px,env(safe-area-inset-bottom))}.home-page .home-actions__title{font-size:clamp(22px,6.6vw,28px);line-height:1.22;margin-bottom:24px}.home-page .home-actions>.action-card--featured{min-height:82px}}
@media(prefers-reduced-motion:reduce){.home-page{scroll-behavior:auto}}


/* =========================================================
   V29 R7 — language controls + card typography/backgrounds
   Scope limited to language selectors, music action cards and content cards.
   ========================================================= */
.language-switcher{position:relative;display:block}
.language-switcher__menu.language-switcher__menu--always{position:static;display:grid;grid-template-columns:1fr;align-items:stretch;gap:7px;min-width:46px;padding:0;background:transparent;border:0;box-shadow:none;white-space:normal}
.language-switcher__option{display:grid;place-items:center;width:46px;min-width:46px;height:36px;min-height:36px;padding:0;border:1px solid rgba(255,255,255,.52);border-radius:14px;color:#fff;text-decoration:none;font:600 10px/1 var(--sans);letter-spacing:.10em;background:linear-gradient(145deg,rgba(255,255,255,.22),rgba(255,255,255,.08));box-shadow:inset 0 1px 0 rgba(255,255,255,.30),0 9px 24px rgba(18,9,4,.20);-webkit-backdrop-filter:blur(16px) saturate(135%);backdrop-filter:blur(16px) saturate(135%);transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}
.language-switcher__option:hover,.language-switcher__option:focus-visible{outline:0;transform:translateY(-1px);background:linear-gradient(145deg,rgba(255,255,255,.31),rgba(255,255,255,.13));border-color:rgba(255,255,255,.76)}
.language-switcher__option:active{transform:scale(.97)}
.language-switcher__option.is-active{color:#fff;background:linear-gradient(145deg,rgba(216,144,79,.92),rgba(184,110,50,.84));border-color:rgba(255,226,197,.78);box-shadow:inset 0 1px 0 rgba(255,255,255,.34),0 10px 24px rgba(84,45,18,.26)}

.music-page-content .action-card__copy strong{font-family:var(--sans)!important;font-weight:600;letter-spacing:-.012em;font-size:20px}
.music-page-content .action-card__copy small{font-size:13px}

.recommendation-card,.all-address-card,.feedback-card{background:linear-gradient(145deg,#fffffffe,#f5f6f7f9)}
.all-address-card__extras{background:#fff}
.recommendation-card__meta{font-size:11px}
.recommendation-card h2{font-size:30px}
.recommendation-card p{font-size:14.5px}
.guest-advice{font-size:13.5px}
.text-link{font-size:13px}
.all-address-card .recommendation-card__meta{font-size:10px}
.all-address-card .recommendation-card h2{font-size:clamp(40px,4.4vw,56px)}
.all-address-card .recommendation-card p{font-size:14.5px}
.all-address-card .guest-advice{font-size:13.5px}
.all-address-card .guest-advice span{font-size:10px}
.all-address-card__price{font-size:13.5px}
.all-address-card__price strong{font-size:18px}
.all-address-card__actions a{font-size:12px}

@media(max-width:650px){
  .language-switcher__menu.language-switcher__menu--always{gap:6px;min-width:42px}
  .language-switcher__option{width:42px;min-width:42px;height:33px;min-height:33px;border-radius:13px;font-size:9px}
  .music-page-content .action-card__copy strong{font-size:18px}
  .music-page-content .action-card__copy small{font-size:12px}
  .recommendation-card h2{font-size:27px}
  .recommendation-card p{font-size:14px}
  .all-address-card .recommendation-card h2{font-size:38px}
  .all-address-card .recommendation-card p{font-size:14px}
  .all-address-card__price{font-size:13px}
  .all-address-card__price strong{font-size:17px}
}

/* --- r8-targeted-fixes.css --- */
/* TGA V29 R8 — targeted fixes only: language visibility and cache-safe delivery. */

/* Main application: keep FR / EN / ES visible, including when an older cached
   language-switcher markup is still present. */
.hero__topbar .language-switcher {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: fixed !important;
  top: max(16px, env(safe-area-inset-top)) !important;
  right: max(16px, env(safe-area-inset-right)) !important;
  z-index: 10000 !important;
  pointer-events: auto !important;
}
.hero__topbar .language-switcher > summary,
.hero__topbar .language-switcher__trigger {
  display: none !important;
}
.hero__topbar .language-switcher__menu,
.hero__topbar .language-switcher__menu.language-switcher__menu--always {
  display: grid !important;
  grid-template-columns: 1fr !important;
  align-items: stretch !important;
  gap: 7px !important;
  position: static !important;
  inset: auto !important;
  min-width: 46px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  white-space: normal !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.hero__topbar .language-switcher__menu a,
.hero__topbar .language-switcher__option {
  display: grid !important;
  place-items: center !important;
  width: 46px !important;
  min-width: 46px !important;
  height: 36px !important;
  min-height: 36px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 1px solid rgba(255,255,255,.52) !important;
  border-radius: 14px !important;
  color: #fff !important;
  text-decoration: none !important;
  font: 600 10px/1 var(--sans, "DM Sans", Arial, sans-serif) !important;
  letter-spacing: .10em !important;
  background: linear-gradient(145deg,rgba(255,255,255,.22),rgba(255,255,255,.08)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.30),0 9px 24px rgba(18,9,4,.20) !important;
  -webkit-backdrop-filter: blur(16px) saturate(135%) !important;
  backdrop-filter: blur(16px) saturate(135%) !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.hero__topbar .language-switcher__menu a[aria-current="page"],
.hero__topbar .language-switcher__option.is-active {
  background: linear-gradient(145deg,rgba(216,144,79,.92),rgba(184,110,50,.84)) !important;
  border-color: rgba(255,226,197,.78) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.34),0 10px 24px rgba(84,45,18,.26) !important;
}

/* Sound Room pages: same vertical glass selector, always visible. */
.tga-header .lang-switch {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 6px !important;
  position: fixed !important;
  top: max(16px, env(safe-area-inset-top)) !important;
  right: max(16px, env(safe-area-inset-right)) !important;
  z-index: 10000 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  visibility: visible !important;
  opacity: 1 !important;
}
.tga-header .lang-switch button {
  display: grid !important;
  place-items: center !important;
  width: 42px !important;
  min-width: 42px !important;
  height: 34px !important;
  min-height: 34px !important;
  padding: 0 !important;
  border: 1px solid rgba(255,255,255,.40) !important;
  border-radius: 13px !important;
  color: var(--text,#f1e5d5) !important;
  font: 600 9px/1 "DM Sans",sans-serif !important;
  letter-spacing: .11em !important;
  background: linear-gradient(145deg,rgba(255,255,255,.19),rgba(255,255,255,.065)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.24),0 8px 21px rgba(0,0,0,.18) !important;
  -webkit-backdrop-filter: blur(15px) saturate(130%) !important;
  backdrop-filter: blur(15px) saturate(130%) !important;
  visibility: visible !important;
  opacity: .82 !important;
}
.tga-header .lang-switch button.active {
  color: #fff !important;
  opacity: 1 !important;
  background: linear-gradient(145deg,color-mix(in srgb,var(--accent) 88%,#fff 12%),color-mix(in srgb,var(--accent) 78%,#1d120b 22%)) !important;
  border-color: color-mix(in srgb,var(--accent) 58%,#fff 42%) !important;
}

@media (max-width:650px) {
  .hero__topbar .language-switcher__menu,
  .hero__topbar .language-switcher__menu.language-switcher__menu--always { gap: 6px !important; min-width: 42px !important; }
  .hero__topbar .language-switcher__menu a,
  .hero__topbar .language-switcher__option { width: 42px !important; min-width: 42px !important; height: 33px !important; min-height: 33px !important; border-radius: 13px !important; font-size: 9px !important; }
  .tga-header .lang-switch { gap: 5px !important; }
  .tga-header .lang-switch button { width: 39px !important; min-width: 39px !important; height: 31px !important; min-height: 31px !important; border-radius: 12px !important; font-size: 8px !important; }
}

/* --- r12-global-navigation.css --- */
/* TGA V29 R12 — navigation only: Sound Room arrows + connected language dropdown. */

/* --------------------------------------------------------------------------
   Shared language selector — one active language at rest, connected vertical
   menu when opened. The visual treatment is inherited from the Sound Room.
   -------------------------------------------------------------------------- */
.hero__topbar .language-switcher,
.soundroom-app .language-switch {
  border: 1px solid rgba(255,255,255,.16) !important;
  border-radius: 16px !important;
  background: rgba(22,15,12,.30) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 10px 28px rgba(0,0,0,.16) !important;
  -webkit-backdrop-filter: blur(14px) saturate(130%) !important;
  backdrop-filter: blur(14px) saturate(130%) !important;
  overflow: hidden !important;
  isolation: isolate;
}

.hero__topbar .language-switcher {
  display: block !important;
  visibility: visible !important;
  opacity: 1 !important;
  position: fixed !important;
  top: max(16px, env(safe-area-inset-top)) !important;
  right: max(16px, env(safe-area-inset-right)) !important;
  z-index: 10000 !important;
  width: 46px !important;
  min-width: 46px !important;
  padding: 0 !important;
  pointer-events: auto !important;
}

.hero__topbar .language-switcher > summary,
.hero__topbar .language-switcher__trigger {
  display: none !important;
}

.hero__topbar .language-switcher__menu,
.hero__topbar .language-switcher__menu.language-switcher__menu--always {
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 0 !important;
  position: static !important;
  inset: auto !important;
  min-width: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-radius: inherit !important;
  background: transparent !important;
  box-shadow: none !important;
  white-space: normal !important;
  visibility: visible !important;
  opacity: 1 !important;
  overflow: hidden !important;
}

.soundroom-app .language-switch {
  justify-self: end !important;
  display: flex !important;
  flex-direction: column !important;
  align-items: stretch !important;
  gap: 0 !important;
  margin: 0 !important;
  padding: 0 !important;
  visibility: visible !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  width: 46px !important;
  min-width: 46px !important;
}

.hero__topbar .language-switcher__option,
.hero__topbar .language-switcher__menu a,
.soundroom-app .language-switch button {
  position: relative !important;
  order: 0;
  display: none !important;
  place-items: center !important;
  width: 46px !important;
  min-width: 46px !important;
  height: 36px !important;
  min-height: 36px !important;
  margin: 0 !important;
  padding: 0 !important;
  border: 0 !important;
  border-top: 1px solid rgba(255,255,255,.11) !important;
  border-radius: 0 !important;
  color: rgba(255,255,255,.68) !important;
  text-decoration: none !important;
  font: 600 9px/1 "DM Sans", Inter, system-ui, sans-serif !important;
  letter-spacing: .10em !important;
  background: rgba(255,255,255,.025) !important;
  box-shadow: none !important;
  -webkit-backdrop-filter: none !important;
  backdrop-filter: none !important;
  cursor: pointer !important;
  opacity: 1 !important;
  visibility: visible !important;
  transition: color .18s ease, background .18s ease !important;
}

.hero__topbar .language-switcher__option.is-active,
.hero__topbar .language-switcher__menu a[aria-current="page"],
.soundroom-app .language-switch button.active {
  order: -1;
  display: grid !important;
  border-top: 0 !important;
  color: #fff !important;
  background: linear-gradient(145deg, rgba(199,141,89,.88), rgba(164,101,49,.82)) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.22) !important;
}

.hero__topbar .language-switcher__option.is-active::after,
.hero__topbar .language-switcher__menu a[aria-current="page"]::after,
.soundroom-app .language-switch button.active::after {
  content: "⌄";
  position: absolute;
  right: 5px;
  top: 50%;
  font-size: 8px;
  line-height: 1;
  opacity: .72;
  transform: translateY(-55%);
  transform-origin: 50% 52%;
  transition: transform .2s ease;
}

.hero__topbar .language-switcher.is-open .language-switcher__option,
.hero__topbar .language-switcher.is-open .language-switcher__menu a,
.soundroom-app .language-switch.is-open button {
  display: grid !important;
}

.hero__topbar .language-switcher.is-open .language-switcher__option.is-active::after,
.hero__topbar .language-switcher.is-open .language-switcher__menu a[aria-current="page"]::after,
.soundroom-app .language-switch.is-open button.active::after {
  transform: translateY(-42%) rotate(180deg);
}

.hero__topbar .language-switcher.is-open .language-switcher__option:hover,
.hero__topbar .language-switcher.is-open .language-switcher__option:focus-visible,
.hero__topbar .language-switcher.is-open .language-switcher__menu a:hover,
.hero__topbar .language-switcher.is-open .language-switcher__menu a:focus-visible,
.soundroom-app .language-switch.is-open button:hover,
.soundroom-app .language-switch.is-open button:focus-visible {
  outline: 0 !important;
  color: #fff !important;
  background: rgba(255,255,255,.09) !important;
}

/* --------------------------------------------------------------------------
   Main application back arrows — exact Sound Room pill language and arrow.
   -------------------------------------------------------------------------- */
.hero__topbar .back-button {
  justify-self: start !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 8px !important;
  width: auto !important;
  min-width: 0 !important;
  min-height: 38px !important;
  height: 38px !important;
  padding: 0 14px 0 11px !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  border-radius: 999px !important;
  background: rgba(22,15,12,.27) !important;
  color: #f3e8da !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.06) !important;
  -webkit-backdrop-filter: blur(12px) !important;
  backdrop-filter: blur(12px) !important;
  font: 550 9px/1 "DM Sans", Inter, system-ui, sans-serif !important;
  letter-spacing: .08em !important;
  cursor: pointer !important;
  opacity: 1 !important;
  visibility: visible !important;
  transform: none !important;
}

.hero__topbar .back-button:hover,
.hero__topbar .back-button:focus-visible {
  background: rgba(22,15,12,.46) !important;
}

.hero__topbar .back-button svg {
  display: none !important;
}

.hero__topbar .back-button::before {
  content: "←";
  flex: none;
  font-size: 17px;
  line-height: 1;
  font-weight: 400;
  letter-spacing: 0;
}

.hero__topbar .back-button .sr-only {
  position: static !important;
  width: auto !important;
  height: auto !important;
  padding: 0 !important;
  margin: 0 !important;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  white-space: normal !important;
  border: 0 !important;
}

/* Standalone legal pages use the same circular Sound Room arrow treatment. */
.legal-page .back-button.legal-back {
  display: inline-grid !important;
  place-items: center !important;
  width: 38px !important;
  min-width: 38px !important;
  height: 38px !important;
  min-height: 38px !important;
  padding: 0 !important;
  border: 1px solid rgba(255,255,255,.16) !important;
  border-radius: 50% !important;
  background: rgba(22,15,12,.88) !important;
  color: transparent !important;
  font-size: 0 !important;
  text-decoration: none !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.08), 0 8px 22px rgba(0,0,0,.16) !important;
}

.legal-page .back-button.legal-back::before {
  content: "←";
  color: #f3e8da;
  font: 400 17px/1 "DM Sans", Inter, system-ui, sans-serif;
}

@media (max-width: 650px) {
  .hero__topbar .language-switcher,
  .soundroom-app .language-switch {
    width: 42px !important;
    min-width: 42px !important;
    border-radius: 14px !important;
  }

  .hero__topbar .language-switcher__option,
  .hero__topbar .language-switcher__menu a,
  .soundroom-app .language-switch button {
    width: 42px !important;
    min-width: 42px !important;
    height: 34px !important;
    min-height: 34px !important;
    font-size: 8px !important;
  }

  .hero__topbar .back-button {
    width: 38px !important;
    min-width: 38px !important;
    height: 38px !important;
    min-height: 38px !important;
    padding: 0 !important;
    justify-content: center !important;
    border-radius: 50% !important;
  }

  .hero__topbar .back-button .sr-only {
    display: none !important;
  }
}

/* --- r13-targeted-fixes.css --- */
/* tga-v29-r13 targeted fixes: rounded playlist thumbnails only */
.music-page-content .action-card__icon img,
.music-page-content .action-card img[src*="ritual-"] {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 50%;
}

/* --- r16-section-snap.css --- */
/* V29 R16 — scroll snap ciblé : Rituels + résultat d'une Échappée */
html.tga-r16-snap-page,
html.tga-r16-snap-page body {
  scroll-behavior: smooth;
  scroll-snap-type: y proximity;
  scroll-padding-top: max(12px, env(safe-area-inset-top));
}

html.tga-r16-rituals-snap .hero--music,
html.tga-r16-rituals-snap .music-page-content,
html.tga-r16-escape-snap .hero--moment,
html.tga-r16-escape-snap .moment-result-summary,
html.tga-r16-escape-snap .moment-itinerary {
  scroll-snap-align: start;
  scroll-snap-stop: normal;
}

html.tga-r16-rituals-snap .music-page-content,
html.tga-r16-escape-snap .moment-result-summary,
html.tga-r16-escape-snap .moment-itinerary {
  scroll-margin-top: max(12px, env(safe-area-inset-top));
}

html.tga-r16-rituals-snap .music-page-content {
  min-height: 100svh;
}

/* Séparation visuelle entre la sélection générée et l'itinéraire. */
html.tga-r16-escape-snap .moment-itinerary {
  position: relative;
  margin-top: clamp(48px, 9svh, 88px);
  padding-top: clamp(34px, 6svh, 58px);
  min-height: calc(100svh - max(24px, env(safe-area-inset-top)));
  border-top: 1px solid rgba(91, 61, 40, 0.18);
}

html.tga-r16-escape-snap .moment-itinerary::before {
  content: "";
  position: absolute;
  top: -1px;
  left: 50%;
  width: min(92px, 24vw);
  height: 2px;
  border-radius: 999px;
  background: rgba(177, 112, 66, 0.72);
  transform: translateX(-50%);
}

@media (max-width: 720px) {
  html.tga-r16-escape-snap .moment-itinerary {
    margin-top: 44px;
    padding-top: 32px;
    min-height: calc(100svh - max(18px, env(safe-area-inset-top)));
  }
}

@media (prefers-reduced-motion: reduce) {
  html.tga-r16-snap-page,
  html.tga-r16-snap-page body {
    scroll-behavior: auto;
    scroll-snap-type: none;
  }
}

/* --- r17-soundroom-home-buttons.css --- */
/* V29 R17 — changements ciblés : titre Soundroom + hauteur uniforme des actions accueil. */
.home-page .home-actions .action-card,
.home-page .home-actions__pair .action-card,
.home-page .home-actions > .action-card--featured {
  height: 112px;
  min-height: 112px;
}

@media (max-width: 650px) {
  .home-page .home-actions .action-card,
  .home-page .home-actions__pair .action-card,
  .home-page .home-actions > .action-card--featured {
    height: 108px;
    min-height: 108px;
  }
}

/* --- r18-fluid-snap.css --- */
/* V29 R18 — snap plein écran ciblé et ouverture Maps directe. */

/* Le snap R16 utilisait le document global. Les pages R18 utilisent leur propre
   conteneur, comme l'accueil, afin d'éviter les à-coups sur iOS. */
html.tga-r16-snap-page,
html.tga-r16-snap-page body {
  scroll-snap-type: none !important;
  scroll-behavior: auto;
}

.sound-room-page,
.city-welcome-page,
.moment-page {
  height: 100dvh;
  min-height: 100svh;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  scroll-behavior: smooth;
}

.sound-room-page,
.city-welcome-page,
.moment-page {
  scroll-snap-type: y mandatory;
}

.sound-room-page > .hero,
.sound-room-page > .music-page-content,
.sound-room-page > .site-footer,
.city-welcome-page > .hero,
.city-welcome-page > .page-content--first,
.city-welcome-page > .site-footer,
.moment-page > .hero,
.moment-page .moment-heading,
.moment-page .moment-route-step,
.moment-page .moment-itinerary {
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

/* Sound Room et Bienvenue ville : le héros et les boutons forment deux écrans. */
.sound-room-page > .hero,
.city-welcome-page > .hero {
  min-height: 100dvh;
}

.sound-room-page > .music-page-content,
.city-welcome-page > .page-content--first {
  min-height: 100dvh;
  display: grid;
  align-items: center;
  padding-top: max(48px, env(safe-area-inset-top));
  padding-bottom: max(48px, env(safe-area-inset-bottom));
}

.sound-room-page .music-section-heading {
  margin-bottom: clamp(24px, 4svh, 38px);
}

.sound-room-page .action-grid,
.city-welcome-page .action-grid {
  gap: clamp(16px, 2.4svh, 24px);
}

/* Un vrai blanc avant le titre « Votre échappée ». */
.moment-page .moment-heading {
  padding-top: clamp(76px, 12svh, 124px);
  scroll-margin-top: 0;
}

/* Une carte par geste, centrée dans un écran complet. */
.moment-page .moment-route-step {
  min-height: 100dvh;
  margin-bottom: 0;
  padding-top: max(38px, env(safe-area-inset-top));
  padding-bottom: max(38px, env(safe-area-inset-bottom));
  display: flex;
  align-items: center;
}

.moment-page .moment-route-step > .moment-address-card {
  width: 100%;
}

.moment-page .moment-itinerary {
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

@media (max-width: 650px) {
  .sound-room-page > .music-page-content,
  .city-welcome-page > .page-content--first {
    padding-top: max(34px, env(safe-area-inset-top));
    padding-bottom: max(34px, env(safe-area-inset-bottom));
  }

  .sound-room-page .action-grid,
  .city-welcome-page .action-grid {
    gap: 16px;
  }

  .moment-page .moment-heading {
    padding-top: clamp(64px, 10svh, 92px);
  }

  .moment-page .moment-route-step {
    padding-top: max(24px, env(safe-area-inset-top));
    padding-bottom: max(24px, env(safe-area-inset-bottom));
  }
}

@media (prefers-reduced-motion: reduce) {
  .sound-room-page,
  .city-welcome-page,
  .moment-page {
    scroll-snap-type: none;
    scroll-behavior: auto;
  }
}

/* --- r20-sound-room-caramel.css --- */
/* V29 R20 — Sound Room title color only. */
.sound-room-page > .hero h1 {
  color: var(--caramel);
  text-shadow: 0 2px 18px rgba(39, 21, 10, .2);
}

/* --- r21-layout-adjustments.css --- */
/* V29 R21 — only requested layout adjustments. */

/* Sound Room returns to white. */
.sound-room-page .hero--music h1,
.sound-room-page .hero--music .music-section-heading__title,
.sound-room-page .hero h1 {
  color: #fffaf5 !important;
}

/* Your itinerary is a compact final block before the footer, not a full page. */
.moment-page .moment-itinerary {
  min-height: 0 !important;
  height: auto !important;
  display: block !important;
  justify-content: initial !important;
  scroll-snap-align: none !important;
  scroll-snap-stop: normal !important;
  margin-top: 28px !important;
  margin-bottom: 34px !important;
}

/* Slightly larger brand marks so “Atelier Design” remains legible. */
.brand-logo {
  width: 132px !important;
}
.brand-logo--compact {
  width: 92px !important;
}

@media (max-width: 650px) {
  .brand-logo {
    width: 126px !important;
  }
  .brand-logo--compact {
    width: 92px !important;
  }
  .moment-page .moment-itinerary {
    margin-top: 24px !important;
    margin-bottom: 28px !important;
  }
}

/* --- r22-itinerary-spacing.css --- */
/* V29 R22 — targeted itinerary spacing only. */

/* Keep "Votre itinéraire" visually attached to the final escape card,
   with only a small breathing space before the footer. */
.moment-page .moment-itinerary {
  margin-top: 10px !important;
  margin-bottom: 28px !important;
}

@media (max-width: 650px) {
  .moment-page .moment-itinerary {
    margin-top: 8px !important;
    margin-bottom: 24px !important;
  }
}

/* --- r23-snap-soundroom-home.css --- */
/* V29 R23 — targeted two-screen snap alignment for Home and Sound Room only. */
.home-page,
.sound-room-page {
  position: relative;
  height: 100dvh;
  min-height: 100svh;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior-y: contain;
  -webkit-overflow-scrolling: touch;
  scroll-snap-type: y mandatory;
  scroll-behavior: smooth;
}

.home-page > .hero,
.home-page > .page-content--first,
.sound-room-page > .hero,
.sound-room-page > .music-page-content {
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

.home-page > .hero,
.sound-room-page > .hero {
  min-height: 100dvh !important;
}

.home-page > .page-content--first,
.sound-room-page > .music-page-content {
  box-sizing: border-box;
  min-height: 100dvh !important;
  width: 100%;
  display: grid;
  align-content: center;
  justify-items: center;
  padding-top: max(34px, env(safe-area-inset-top));
  padding-right: 18px;
  padding-bottom: max(142px, calc(env(safe-area-inset-bottom) + 118px));
  padding-left: 18px;
}

/* Sound Room follows the same centered horizontal structure as Home. */
.sound-room-page .music-section-heading {
  width: min(100%, 780px);
  margin-right: auto;
  margin-left: auto;
  text-align: center;
}

.sound-room-page .action-grid {
  width: min(100%, 780px);
  margin-right: auto;
  margin-left: auto;
  gap: clamp(14px, 2svh, 20px);
}

.sound-room-page .action-card {
  width: 100%;
}

/* The brand mark visually belongs to screen two and never creates screen three. */
.home-page > .site-footer,
.sound-room-page > .site-footer {
  position: absolute;
  z-index: 4;
  top: calc(200dvh - max(116px, calc(env(safe-area-inset-bottom) + 98px)));
  left: 0;
  right: 0;
  min-height: 0;
  margin: 0;
  padding: 18px 20px max(24px, env(safe-area-inset-bottom));
  scroll-snap-align: none !important;
  scroll-snap-stop: normal !important;
  pointer-events: none;
}

.home-page > .site-footer::before,
.sound-room-page > .site-footer::before {
  margin-bottom: 14px;
}

@media (max-width: 650px) {
  .home-page > .page-content--first,
  .sound-room-page > .music-page-content {
    padding-top: max(26px, env(safe-area-inset-top));
    padding-right: 16px;
    padding-bottom: max(130px, calc(env(safe-area-inset-bottom) + 108px));
    padding-left: 16px;
  }

  .sound-room-page .music-section-heading {
    margin-bottom: clamp(18px, 2.8svh, 26px);
  }

  .sound-room-page .action-grid {
    width: min(100%, 560px);
    gap: 14px;
  }

  .home-page > .site-footer,
  .sound-room-page > .site-footer {
    top: calc(200dvh - max(108px, calc(env(safe-area-inset-bottom) + 92px)));
    padding-top: 14px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .home-page,
  .sound-room-page {
    scroll-behavior: auto;
    scroll-snap-type: none;
  }
}

/* --- r24-escape-cards.css --- */
/* R24 — targeted escape summary/card typography only */
.moment-heading h2{font-family:var(--sans)!important;font-weight:600;letter-spacing:-.025em}
.moment-escape-summary__metrics span{font-family:var(--sans);font-size:clamp(14px,3.8vw,16px)!important;font-weight:650!important;line-height:1.15;padding:9px 12px!important}
.moment-escape-summary__families{font-family:var(--sans)!important;font-size:13px!important;font-weight:550!important;line-height:1.2!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0!important}
.moment-route-step{position:relative}
.moment-route-step__number{position:absolute;z-index:5;top:14px;left:8px;display:grid;place-items:center;width:34px;height:34px;border-radius:999px;background:rgba(31,23,18,.86);border:1px solid rgba(226,157,91,.62);box-shadow:0 8px 18px rgba(22,13,8,.22),inset 0 1px 0 rgba(255,255,255,.13);color:#f0b06f;font-family:var(--sans);font-size:12px;font-weight:700;letter-spacing:.08em;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
@media(min-width:651px){.moment-route-step__number{left:10px;top:18px;width:38px;height:38px;font-size:13px}.moment-escape-summary__families{font-size:14px!important}}

/* --- r25-home-hero-darkening.css --- */
/* R25 — assombrissement ciblé du hero d’accueil uniquement */
.home-page > .hero .hero__media {
  filter: brightness(.84) contrast(1.03) saturate(.96);
}

/* --- r26-ios-polish.css --- */
/* TGA V29 R26 — optical containment for the home cocktail icon only. */
.home-page .home-actions__pair > .action-card:nth-child(2) .action-card__icon img {
  transform: translateX(-1px) scale(.9);
  transform-origin: center;
}

/* --- r27-escape-snap-fix.css --- */
/* R27 — l'échappée reste librement scrollable jusqu'à l'itinéraire sur iOS. */
.moment-page {
  scroll-snap-type: none !important;
  scroll-behavior: auto !important;
  overscroll-behavior-y: auto;
}
.moment-page > .hero,
.moment-page .moment-heading,
.moment-page .moment-route-step,
.moment-page .moment-itinerary {
  scroll-snap-align: none !important;
  scroll-snap-stop: normal !important;
}
.moment-page .moment-route-step,
.moment-page .moment-itinerary {
  min-height: auto !important;
}
.moment-page .moment-itinerary {
  padding-bottom: max(52px, env(safe-area-inset-bottom));
}

/* --- r28-production-corrections.css --- */
/* R28 — corrections confirmées uniquement : filtre mobile, logos et géométrie du disque. */
@media (max-width: 600px) {
  .all-filter-panel {
    position: relative !important;
    z-index: 2 !important;
    left: auto !important;
    right: auto !important;
    bottom: auto !important;
    width: 100% !important;
    max-height: none !important;
    overflow: visible !important;
    transform: none !important;
    margin-top: 10px !important;
    padding: 17px !important;
    border-radius: 19px !important;
    box-shadow: 0 10px 28px rgba(31, 35, 40, .055), inset 0 0 0 1px rgba(31, 35, 40, .035) !important;
    animation: r28FilterOpen .18s ease both !important;
  }
}

@keyframes r28FilterOpen {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: none; }
}

.platform-options .platform-logo {
  display: none !important;
}

.platform-options button[data-platform]::before {
  content: "";
  display: block;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
}

.platform-options button[data-platform="spotify"]::before {
  background-image: url("/assets/logo-spotify-r28.svg");
}

.platform-options button[data-platform="youtube"]::before {
  background-image: url("/assets/logo-youtube-r28.svg");
}

.source-deck .platter {
  inset: 4.3% !important;
}

.source-deck .rubber {
  inset: 6.4% !important;
}

.source-deck .record-thickness {
  inset: 7.8% !important;
  transform: translateY(2px) !important;
}

.source-deck .vinyl {
  inset: 7.8% !important;
}

/* --- r29-filter-popup.css --- */
/* R29 — filtre uniquement : fenêtre modale centrée, jamais ancrée en bas. */
.all-filter-panel {
  position: fixed !important;
  z-index: 60 !important;
  top: 50% !important;
  left: 50% !important;
  right: auto !important;
  bottom: auto !important;
  width: min(720px, calc(100vw - 24px)) !important;
  max-height: min(78dvh, 680px) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  margin: 0 !important;
  transform: translate(-50%, -50%) !important;
  border-radius: 24px !important;
  box-shadow: 0 24px 70px rgba(31, 35, 40, .20), 0 0 0 100vmax rgba(18, 9, 4, .22), inset 0 0 0 1px rgba(255, 255, 255, .98) !important;
  animation: r29FilterPopup .18s ease both !important;
  overscroll-behavior: contain;
}

@keyframes r29FilterPopup {
  from { opacity: 0; transform: translate(-50%, -48%) scale(.985); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@media (max-width: 600px) {
  .all-filter-panel {
    width: calc(100vw - 24px) !important;
    max-height: calc(100dvh - 40px) !important;
    padding: 18px 16px max(18px, env(safe-area-inset-bottom)) !important;
    border-radius: 22px !important;
  }
}

/* --- r31-turntable-soundroom-reference.css --- */
/* R31 — uniquement la platine de référence et les boutons de sélection Sound Room. */

/* Platine : proportions horizontales, noyer sombre, disque dominant et filet bronze. */
.source-deck.turntable {
  aspect-ratio: 1.46 / 1 !important;
  border: 2px solid rgba(8, 6, 5, .94) !important;
  border-radius: 30px !important;
  background:
    radial-gradient(ellipse at 28% 3%, rgba(255, 232, 207, .055), transparent 35%),
    radial-gradient(ellipse at 82% 88%, rgba(0, 0, 0, .34), transparent 46%),
    repeating-linear-gradient(0deg, rgba(222, 181, 144, .018) 0 1px, transparent 1px 4px),
    repeating-linear-gradient(91deg, rgba(8, 4, 3, .12) 0 1px, transparent 1px 20px),
    linear-gradient(112deg, #30251f 0%, #211713 44%, #130d0b 100%) !important;
  box-shadow:
    0 2px 0 rgba(161, 117, 78, .20),
    0 7px 0 #0d0907,
    0 14px 0 #050403,
    0 38px 72px rgba(0, 0, 0, .52),
    inset 0 0 0 1px rgba(211, 164, 119, .18),
    inset 0 1px 0 rgba(255, 238, 217, .07),
    inset 0 -2px 0 rgba(0, 0, 0, .72) !important;
}

.source-deck.turntable::before {
  inset: 7px !important;
  border: 1px solid rgba(185, 138, 96, .13) !important;
  border-radius: 24px !important;
  background: linear-gradient(112deg, rgba(255, 240, 220, .035), transparent 31% 76%, rgba(0, 0, 0, .18)) !important;
  opacity: 1 !important;
}

.source-deck.turntable::after {
  left: 5px !important;
  right: 5px !important;
  bottom: -14px !important;
  height: 17px !important;
  border-radius: 0 0 24px 24px !important;
  background: linear-gradient(180deg, #17100d, #070504 76%, #030202) !important;
  box-shadow: 0 13px 24px rgba(0, 0, 0, .48), inset 0 1px rgba(199, 150, 104, .08) !important;
}

.source-deck .wood-specular {
  opacity: .045 !important;
}

.source-deck .noise {
  opacity: .014 !important;
}

.source-deck .record-wrap {
  width: 59% !important;
  left: 3.8% !important;
  top: 6.5% !important;
  transform: none !important;
}

.source-deck .record-shadow {
  left: 3% !important;
  right: 3% !important;
  bottom: -2.6% !important;
  height: 8% !important;
  filter: blur(7px) !important;
}

.source-deck .platter {
  inset: 0 !important;
  background:
    repeating-conic-gradient(from 0deg, rgba(255, 225, 186, .13) 0 .09deg, rgba(37, 25, 18, .22) .09deg .30deg),
    radial-gradient(circle, #c39a69 0 84%, #765134 85.2% 88%, #1b1714 89% 94%, #060504 95% 100%) !important;
  box-shadow:
    0 13px 23px rgba(0, 0, 0, .64),
    0 4px 6px rgba(0, 0, 0, .48),
    inset 0 0 0 1px rgba(255, 229, 195, .32),
    inset 0 -3px 8px rgba(0, 0, 0, .48) !important;
}

.source-deck .platter::before {
  opacity: .34 !important;
}

.source-deck .platter-glint {
  opacity: .13 !important;
}

.source-deck .rubber {
  inset: 2.1% !important;
  background: radial-gradient(circle, #181716 0 80%, #090807 88%, #030303 100%) !important;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .025), inset 0 -3px 7px rgba(0, 0, 0, .76) !important;
}

.source-deck .record-thickness {
  inset: 4.1% !important;
  transform: translateY(2px) !important;
  background: #020202 !important;
}

.source-deck .vinyl {
  inset: 4.1% !important;
  background:
    radial-gradient(circle at 31% 21%, rgba(255, 255, 255, .075), transparent 12%),
    conic-gradient(from 208deg, transparent 0 9%, rgba(255, 255, 255, .018) 14%, rgba(255, 255, 255, .07) 19%, transparent 27% 61%, rgba(255, 255, 255, .025) 67%, transparent 75%),
    radial-gradient(circle, #121212 0%, #0a0a0a 45%, #050505 77%, #010101 100%) !important;
  box-shadow:
    0 5px 9px rgba(0, 0, 0, .64),
    inset 0 0 0 1px rgba(255, 255, 255, .07),
    inset 0 -7px 13px rgba(0, 0, 0, .70) !important;
}

.source-deck .vinyl::before {
  inset: 1.5% !important;
  background:
    repeating-radial-gradient(circle, transparent 0 1.15px, rgba(255, 255, 255, .020) 1.35px, rgba(0, 0, 0, .24) 1.55px, transparent 1.78px),
    repeating-radial-gradient(circle, transparent 0 15px, rgba(255, 255, 255, .014) 15.35px, rgba(0, 0, 0, .18) 15.7px, transparent 16.25px) !important;
  opacity: .86 !important;
}

.source-deck .vinyl::after {
  inset: 8% !important;
  background: repeating-radial-gradient(circle, transparent 0 17px, rgba(255, 255, 255, .016) 17.35px, rgba(0, 0, 0, .15) 17.7px, transparent 18.3px) !important;
  opacity: .42 !important;
}

.source-deck .fixed-light {
  inset: 4.1% !important;
  background: linear-gradient(121deg, transparent 22%, rgba(255, 255, 255, .018) 31%, rgba(255, 255, 255, .085) 40%, rgba(255, 255, 255, .16) 43%, rgba(255, 255, 255, .026) 49%, transparent 59%) !important;
  opacity: .56 !important;
}

.source-deck .label {
  width: 23% !important;
  left: 38.5% !important;
  top: 38.5% !important;
  color: #ead1ae !important;
  background:
    radial-gradient(circle at 32% 25%, rgba(255, 255, 255, .065), transparent 32%),
    repeating-linear-gradient(1deg, rgba(255, 255, 255, .012) 0 1px, transparent 1px 4px),
    radial-gradient(circle, #69402f 0%, #4a2b21 68%, #2b1712 100%) !important;
  box-shadow: 0 0 0 1px rgba(225, 183, 139, .16), 0 0 0 3px rgba(0, 0, 0, .34), inset 0 1px rgba(255, 255, 255, .045) !important;
}

.source-deck .spindle {
  background: radial-gradient(circle at 33% 27%, #f3d7b1, #b27b49 37%, #644127 67%, #21140d) !important;
}

.source-deck .tonearm {
  filter: saturate(.96) contrast(1.04) drop-shadow(0 4px 3px rgba(0, 0, 0, .44)) !important;
}

.source-deck .screw {
  background: radial-gradient(circle at 32% 27%, #efd4aa 0 10%, #ae7a48 31%, #5c3923 61%, #17100c 100%) !important;
}

/* Sélection Sound Room : quatre grands boutons réellement centrés. */
.sound-room-page .music-section-heading,
.sound-room-page .action-grid {
  width: min(100%, 680px) !important;
  margin-right: auto !important;
  margin-left: auto !important;
}

.sound-room-page .action-card {
  min-height: 108px !important;
  grid-template-columns: 64px minmax(0, 1fr) 32px !important;
  gap: 18px !important;
  padding: 19px 23px !important;
}

.sound-room-page .action-card__icon {
  width: 64px !important;
  height: 64px !important;
}

.sound-room-page .action-card__copy strong {
  font-size: 21px !important;
}

@media (max-width: 760px) {
  .source-deck.turntable {
    width: min(94vw, 410px) !important;
    aspect-ratio: 1.46 / 1 !important;
    border-radius: 22px !important;
  }

  .source-deck.turntable::before {
    inset: 5px !important;
    border-radius: 18px !important;
  }

  .source-deck .record-wrap {
    width: 59% !important;
    left: 3.8% !important;
    top: 6.5% !important;
  }

  .sound-room-page .action-grid {
    width: min(100%, 390px) !important;
    justify-self: center !important;
  }

  .sound-room-page .action-card {
    min-height: 94px !important;
    grid-template-columns: 58px minmax(0, 1fr) 28px !important;
    gap: 15px !important;
    padding: 16px 18px !important;
  }

  .sound-room-page .action-card__icon {
    width: 58px !important;
    height: 58px !important;
  }

  .sound-room-page .action-card__copy strong {
    font-size: 20px !important;
  }
}

@media (max-width: 390px) and (max-height: 720px) {
  .source-deck.turntable {
    width: min(92vw, 360px) !important;
    aspect-ratio: 1.46 / 1 !important;
  }

  .sound-room-page .action-card {
    min-height: 90px !important;
  }
}

/* --- r32-filter-list-exit.css --- */
/* R32 — uniquement la popup de filtres et la sortie des listes d’adresses. */
.route-stage--all {
  animation: none !important;
  transform: none !important;
  will-change: auto !important;
}

.route-stage--all .all-filter-panel {
  position: fixed !important;
  z-index: 60 !important;
  inset: auto !important;
  top: 50% !important;
  left: 50% !important;
  right: auto !important;
  bottom: auto !important;
  width: min(720px, calc(100vw - 24px)) !important;
  max-height: min(78dvh, 680px) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  margin: 0 !important;
  transform: translate(-50%, -50%) !important;
  overscroll-behavior: contain;
}

@media (max-width: 600px) {
  .route-stage--all .all-filter-panel {
    width: calc(100vw - 24px) !important;
    max-height: calc(100dvh - 40px) !important;
  }
}

/* --- r34-home-hero-vinyl-depth.css --- */
/* R34 — uniquement : hero d'accueil légèrement plus sombre et relief du vinyle plus naturel. */

.home-page > .hero .hero__media {
  filter: brightness(.78) contrast(1.03) saturate(.96) !important;
}

/* Une tranche fine et une lumière concentrique remplacent l'ancien volume en cuvette. */
.source-deck .record-thickness {
  background: linear-gradient(180deg, #151515 0%, #070707 44%, #010101 100%) !important;
  box-shadow:
    0 5px 7px rgba(0, 0, 0, .58),
    0 1px 1px rgba(0, 0, 0, .82) !important;
}

.source-deck .vinyl {
  background:
    radial-gradient(circle at 50% 50%, rgba(255, 255, 255, .022) 0 18%, transparent 40%),
    radial-gradient(circle at 50% 50%, #111 0%, #0b0b0b 48%, #070707 78%, #030303 100%) !important;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, .035),
    0 4px 7px rgba(0, 0, 0, .58),
    0 0 0 1px rgba(0, 0, 0, .76),
    inset 0 0 0 1px rgba(255, 255, 255, .045),
    inset 0 -2px 3px rgba(0, 0, 0, .38) !important;
}

.source-deck .vinyl::before {
  background:
    repeating-radial-gradient(circle at 50% 50%,
      transparent 0 1.05px,
      rgba(255, 255, 255, .018) 1.22px,
      rgba(0, 0, 0, .24) 1.42px,
      transparent 1.68px),
    repeating-radial-gradient(circle at 50% 50%,
      transparent 0 14px,
      rgba(255, 255, 255, .012) 14.3px,
      rgba(0, 0, 0, .20) 14.65px,
      transparent 15.2px) !important;
  opacity: .82 !important;
}

.source-deck .vinyl::after {
  background: conic-gradient(from 214deg,
    transparent 0 10%,
    rgba(255, 255, 255, .016) 15%,
    rgba(255, 255, 255, .050) 20%,
    transparent 27% 61%,
    rgba(255, 255, 255, .018) 68%,
    transparent 75%) !important;
  opacity: .38 !important;
}

.source-deck .fixed-light {
  background: linear-gradient(121deg,
    transparent 25%,
    rgba(255, 255, 255, .014) 34%,
    rgba(255, 255, 255, .072) 42%,
    rgba(255, 255, 255, .020) 48%,
    transparent 57%) !important;
  opacity: .42 !important;
}

/* --- r35-targeted-production-fixes.css --- */
/* R35 — uniquement : popup filtre iOS et matière bois du tourne-disque. */

/* Même couche modale que le questionnaire, sans filtre résiduel dans la page. */
.all-filter-sheet-layer {
  animation: r35FilterBackdropIn .2s ease both;
}

.route-stage--all .all-filter-sheet-layer .all-filter-panel {
  position: relative !important;
  z-index: 1 !important;
  inset: auto !important;
  width: min(430px, calc(100vw - 24px)) !important;
  max-height: min(84dvh, 680px) !important;
  overflow-x: hidden !important;
  overflow-y: auto !important;
  margin: 0 !important;
  padding: 30px 18px max(22px, env(safe-area-inset-bottom)) !important;
  transform: none !important;
  border-radius: 28px !important;
  box-shadow: 0 28px 80px rgba(18, 9, 4, .27), inset 0 1px rgba(255, 255, 255, .98), inset 0 0 0 1px rgba(31, 35, 40, .035) !important;
  animation: r35FilterSheetIn .22s cubic-bezier(.22, .72, .2, 1) both !important;
  -webkit-overflow-scrolling: touch;
  touch-action: pan-y;
  overscroll-behavior: contain;
}

.route-stage--all .all-filter-sheet-layer .all-filter-panel::before {
  content: "";
  position: absolute;
  top: 9px;
  left: 50%;
  width: 42px;
  height: 5px;
  border-radius: 999px;
  background: rgba(63, 44, 32, .18);
  transform: translateX(-50%);
}

.all-filter-close {
  position: absolute;
  z-index: 2;
  top: 14px;
  right: 14px;
  width: 36px !important;
  min-width: 36px !important;
  height: 36px !important;
  min-height: 36px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  font-size: 22px;
  line-height: 1;
}

.all-filter-actions {
  align-items: center;
  justify-content: space-between !important;
  gap: 10px;
}

.all-filter-actions .all-filter-apply {
  color: #fff !important;
  background: var(--caramel) !important;
  box-shadow: 0 9px 22px rgba(184, 110, 50, .18), inset 0 1px rgba(255, 255, 255, .25) !important;
}

@keyframes r35FilterBackdropIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes r35FilterSheetIn {
  from { opacity: 0; translate: 0 18px; scale: .985; }
  to { opacity: 1; translate: none; scale: none; }
}

/* Noyer mat : fibres irrégulières horizontales, sans trame croisée. */
.source-deck.turntable {
  background:
    radial-gradient(ellipse at 18% 2%, rgba(255, 228, 201, .065), transparent 35%),
    radial-gradient(ellipse at 82% 98%, rgba(0, 0, 0, .35), transparent 50%),
    linear-gradient(180deg, rgba(255, 255, 255, .018), transparent 24% 72%, rgba(0, 0, 0, .12)),
    url("/assets/r35-walnut-horizontal.svg") center / 100% 100% no-repeat,
    linear-gradient(101deg, #382a23, #2b1e19 46%, #160e0c) !important;
}

.source-deck.turntable::before {
  background: linear-gradient(112deg, rgba(255, 241, 222, .04), transparent 31% 73%, rgba(0, 0, 0, .19)) !important;
}

.source-deck .wood-specular {
  opacity: .028 !important;
  background: linear-gradient(109deg, transparent 31%, rgba(255, 239, 217, .04) 41%, rgba(255, 255, 255, .02) 44%, transparent 55%) !important;
}

.source-deck .record-shadow {
  filter: blur(8px) !important;
  opacity: .88 !important;
}

.source-deck .platter {
  box-shadow:
    0 15px 26px rgba(0, 0, 0, .67),
    0 4px 7px rgba(0, 0, 0, .52),
    inset 0 0 0 1px rgba(255, 229, 195, .30),
    inset 0 -3px 8px rgba(0, 0, 0, .48) !important;
}

.source-deck .tonearm {
  filter: saturate(.96) contrast(1.04) drop-shadow(0 5px 4px rgba(0, 0, 0, .50)) !important;
}

@media (max-width: 600px) {
  .route-stage--all .all-filter-sheet-layer .all-filter-panel {
    width: min(100%, 390px) !important;
    max-height: min(84dvh, 620px) !important;
    padding: 30px 14px max(20px, env(safe-area-inset-bottom)) !important;
    border-radius: 26px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .all-filter-sheet-layer,
  .route-stage--all .all-filter-sheet-layer .all-filter-panel {
    animation: none !important;
  }
}

/* --- tga-concierge-R35.css --- */
:root {
  --tga-concierge-ink: #241a15;
  --tga-concierge-muted: #75675f;
  --tga-concierge-paper: #fbfaf7;
  --tga-concierge-line: rgba(58, 40, 29, 0.14);
  --tga-concierge-caramel: #a66a42;
  --tga-concierge-shadow: 0 24px 70px rgba(28, 18, 12, 0.28);
}

.tga-concierge-launcher {
  position: fixed;
  right: max(18px, env(safe-area-inset-right));
  bottom: max(20px, calc(env(safe-area-inset-bottom) + 14px));
  z-index: 2147483000;
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 0 17px;
  border: 1px solid rgba(255, 255, 255, 0.48);
  border-radius: 999px;
  background: rgba(42, 29, 22, 0.88);
  color: #fff;
  box-shadow: 0 14px 34px rgba(25, 15, 10, 0.28);
  -webkit-backdrop-filter: blur(18px) saturate(120%);
  backdrop-filter: blur(18px) saturate(120%);
  font: 600 13px/1 "DM Sans", system-ui, sans-serif;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: transform 160ms ease, box-shadow 160ms ease, opacity 160ms ease;
}

.tga-concierge-launcher:hover { transform: translateY(-2px); }
.tga-concierge-launcher:active { transform: translateY(0); }
.tga-concierge-launcher:focus-visible {
  outline: 3px solid rgba(166, 106, 66, 0.35);
  outline-offset: 3px;
}
.tga-concierge-launcher__mark { font-size: 16px; line-height: 1; }

.tga-concierge-overlay {
  position: fixed;
  inset: 0;
  z-index: 2147483001;
  display: grid;
  place-items: end center;
  padding: max(18px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
  background: rgba(20, 14, 11, 0.44);
  -webkit-backdrop-filter: blur(10px);
  backdrop-filter: blur(10px);
  opacity: 0;
  visibility: hidden;
  transition: opacity 180ms ease, visibility 180ms ease;
}

.tga-concierge-overlay.is-open { opacity: 1; visibility: visible; }
body.tga-concierge-open { overflow: hidden !important; }

.tga-concierge-panel {
  width: min(100%, 560px);
  height: min(82dvh, 760px);
  min-height: 510px;
  display: grid;
  grid-template-rows: auto auto 1fr auto;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.64);
  border-radius: 28px;
  background: rgba(251, 250, 247, 0.97);
  box-shadow: var(--tga-concierge-shadow);
  transform: translateY(22px) scale(0.985);
  transition: transform 220ms cubic-bezier(.2,.8,.2,1);
}

.tga-concierge-overlay.is-open .tga-concierge-panel { transform: translateY(0) scale(1); }

.tga-concierge-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 19px 20px 15px;
  border-bottom: 1px solid var(--tga-concierge-line);
}

.tga-concierge-eyebrow {
  margin: 0 0 2px;
  color: var(--tga-concierge-caramel);
  font: 600 10px/1.2 "DM Sans", system-ui, sans-serif;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.tga-concierge-title {
  margin: 0;
  color: var(--tga-concierge-ink);
  font: 600 25px/1.05 "Cormorant Garamond", Georgia, serif;
}

.tga-concierge-close {
  width: 38px;
  height: 38px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  border: 1px solid var(--tga-concierge-line);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  color: var(--tga-concierge-ink);
  font: 400 24px/1 system-ui, sans-serif;
  cursor: pointer;
}

.tga-concierge-suggestions {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  padding: 12px 16px;
  scrollbar-width: none;
}
.tga-concierge-suggestions::-webkit-scrollbar { display: none; }
.tga-concierge-chip {
  flex: 0 0 auto;
  padding: 9px 12px;
  border: 1px solid var(--tga-concierge-line);
  border-radius: 999px;
  background: #fff;
  color: var(--tga-concierge-ink);
  font: 500 12px/1.2 "DM Sans", system-ui, sans-serif;
  cursor: pointer;
}

.tga-concierge-messages {
  min-height: 0;
  overflow-y: auto;
  padding: 8px 16px 18px;
  overscroll-behavior: contain;
}

.tga-concierge-message {
  width: fit-content;
  max-width: min(88%, 430px);
  margin-top: 10px;
  padding: 11px 13px;
  border-radius: 17px;
  color: var(--tga-concierge-ink);
  font: 400 14px/1.52 "DM Sans", system-ui, sans-serif;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.tga-concierge-message--assistant {
  margin-right: auto;
  border: 1px solid var(--tga-concierge-line);
  border-bottom-left-radius: 6px;
  background: #fff;
}

.tga-concierge-message--user {
  margin-left: auto;
  border-bottom-right-radius: 6px;
  background: #2e211a;
  color: #fff;
}

.tga-concierge-message--system {
  max-width: 100%;
  margin-inline: auto;
  padding: 8px 10px;
  border: 0;
  background: transparent;
  color: var(--tga-concierge-muted);
  text-align: center;
  font-size: 11px;
}

.tga-concierge-source {
  width: fit-content;
  max-width: 88%;
  margin: 5px 0 0 4px;
  color: var(--tga-concierge-muted);
  font: 500 10px/1.35 "DM Sans", system-ui, sans-serif;
}

.tga-concierge-draft {
  margin: 12px 0 0;
  padding: 13px;
  border: 1px solid rgba(166, 106, 66, 0.28);
  border-radius: 17px;
  background: rgba(166, 106, 66, 0.08);
}
.tga-concierge-draft__title {
  margin: 0 0 5px;
  color: var(--tga-concierge-ink);
  font: 600 13px/1.3 "DM Sans", system-ui, sans-serif;
}
.tga-concierge-draft__text {
  margin: 0 0 10px;
  color: var(--tga-concierge-muted);
  font: 400 12px/1.45 "DM Sans", system-ui, sans-serif;
}
.tga-concierge-confirm {
  width: 100%;
  min-height: 42px;
  border: 0;
  border-radius: 13px;
  background: var(--tga-concierge-ink);
  color: #fff;
  font: 600 12px/1 "DM Sans", system-ui, sans-serif;
  cursor: pointer;
}
.tga-concierge-confirm:disabled { opacity: 0.55; cursor: wait; }

.tga-concierge-form {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 9px;
  padding: 12px 14px max(14px, env(safe-area-inset-bottom));
  border-top: 1px solid var(--tga-concierge-line);
  background: rgba(251, 250, 247, 0.96);
}

.tga-concierge-input {
  width: 100%;
  min-width: 0;
  min-height: 44px;
  max-height: 120px;
  resize: none;
  padding: 12px 14px;
  border: 1px solid var(--tga-concierge-line);
  border-radius: 16px;
  background: #fff;
  color: var(--tga-concierge-ink);
  font: 400 14px/1.4 "DM Sans", system-ui, sans-serif;
}
.tga-concierge-input:focus {
  outline: 2px solid rgba(166, 106, 66, 0.24);
  border-color: rgba(166, 106, 66, 0.45);
}
.tga-concierge-send {
  width: 44px;
  height: 44px;
  align-self: end;
  border: 0;
  border-radius: 15px;
  background: var(--tga-concierge-ink);
  color: #fff;
  font: 600 17px/1 system-ui, sans-serif;
  cursor: pointer;
}
.tga-concierge-send:disabled { opacity: 0.5; cursor: wait; }

@media (min-width: 700px) {
  .tga-concierge-overlay { place-items: center; padding: 24px; }
  .tga-concierge-panel { height: min(78vh, 760px); }
}

@media (max-width: 480px) {
  .tga-concierge-overlay { padding: 0; }
  .tga-concierge-panel {
    width: 100%;
    height: 100dvh;
    min-height: 0;
    border-radius: 0;
    border: 0;
  }
  .tga-concierge-launcher__label { display: none; }
  .tga-concierge-launcher { width: 50px; padding: 0; justify-content: center; }
}

@media (prefers-reduced-motion: reduce) {
  .tga-concierge-launcher,
  .tga-concierge-overlay,
  .tga-concierge-panel { transition: none !important; }
}

/* --- r27-client-navigation.css --- */
/* TGA R27 — navigation client unifiée et conciergerie */
.home-actions--three {
  width: min(100%, 720px);
  gap: 14px;
}
.home-actions--three > .action-card {
  min-height: 108px;
}
.home-actions--three .action-card__icon svg {
  width: 31px;
  height: 31px;
}
.hero--concierge .hero__media {
  filter: brightness(.46) contrast(1.08) saturate(.86);
}
.hero--concierge .hero__overlay {
  background: linear-gradient(#180f0957,#180f0930 43%,#180f0985), radial-gradient(circle at 50% 31%,#ffffff0d,#0000 44%);
}
.concierge-page__content {
  min-height: min(620px, 72vh);
  display: grid;
  place-items: center;
}
.concierge-entry-card {
  width: min(100%, 620px);
  margin: 0 auto;
  padding: clamp(28px, 5vw, 48px);
  text-align: center;
  border-radius: 24px;
  background: linear-gradient(145deg,#fffffffe,#f7f4effb);
  box-shadow: 0 18px 46px #2c1e1515, inset 0 1px #fff, inset 0 0 0 1px #3f2c200b;
}
.concierge-entry-card__icon {
  width: 66px;
  height: 66px;
  margin: 0 auto 18px;
  display: grid;
  place-items: center;
  border-radius: 50%;
  color: var(--caramel-dark);
  background: #fffaf4;
  box-shadow: inset 0 0 0 1px #d8904f32, 0 10px 26px #3d281812;
}
.concierge-entry-card__icon svg { width: 31px; height: 31px; }
.concierge-entry-card h2 {
  margin: 0;
  font: 600 clamp(34px, 5vw, 48px)/1 var(--serif);
  letter-spacing: -.03em;
}
.concierge-entry-card p {
  max-width: 480px;
  margin: 16px auto 24px;
  color: var(--brown-soft);
  font-size: 15px;
  line-height: 1.65;
}
.concierge-entry-card__cta {
  min-height: 52px;
  border: 0;
  border-radius: 999px;
  padding: 0 25px;
  color: #fff;
  background: var(--brown);
  cursor: pointer;
  font-family: var(--sans);
  font-weight: 600;
  box-shadow: 0 12px 26px #241a1526;
  transition: transform .16s ease, box-shadow .16s ease;
}
.concierge-entry-card__cta:hover { transform: translateY(-1px); box-shadow: 0 15px 30px #241a1530; }
.concierge-entry-card__cta:active { transform: scale(.98); }
.concierge-entry-card__cta:focus-visible { outline: 3px solid #d8904f66; outline-offset: 3px; }
.concierge-entry-card small {
  display: block;
  margin-top: 15px;
  color: var(--brown-soft);
  font-size: 11px;
  line-height: 1.45;
}
@media (max-width:650px) {
  .home-actions--three { gap: 13px; }
  .home-actions--three > .action-card { min-height: 98px; }
  .home-actions--three .action-card__copy strong { font-size: 19px; }
  .home-actions--three .action-card__copy small { font-size: 12.5px; }
  .concierge-page__content { min-height: 560px; padding-top: 28px; padding-bottom: 34px; }
  .concierge-entry-card { border-radius: 21px; padding: 30px 20px; }
}
@media (prefers-reduced-motion:reduce) {
  .concierge-entry-card__cta { transition: none; }
}
