:root{--ink:#062d38;--ink-2:#0c4550;--cream:#fff9ed;--paper:#fffdf8;--coral:#f55046;--mango:#ffbb0e;--aqua:#19cbd6;--muted:#6d7774;--line:#e8e2d6;--shadow:0 18px 50px rgba(5,40,48,.11)}
#tahiti-map{height:100%;min-height:0;border-radius:22px;overflow:hidden;z-index:2}.leaflet-container{font:13px "DM Sans",system-ui,sans-serif}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--cream);color:var(--ink);font-family:"DM Sans",system-ui,sans-serif}
button,input{font:inherit}
button{cursor:pointer}
.app-shell{overflow:hidden}
.topbar{height:76px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,84px);border-bottom:1px solid rgba(255,255,255,.08);background:var(--ink);color:white}
.brand{font:26px Pacifico,cursive;color:var(--coral);text-decoration:none;letter-spacing:-1px}
.brand span{font:12px sans-serif;color:var(--mango);vertical-align:top;margin-left:3px}
nav{display:flex;gap:30px;margin-left:78px}
.nav-link{font-size:14px;color:#c9d7d4;text-decoration:none}
.nav-link.active,.nav-link:hover{color:#fff}
.top-actions{display:flex;align-items:center;gap:12px}
.icon-button,.profile-button{border:0;color:white;background:transparent}
.icon-button{font-size:25px}
.profile-button{border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:9px 15px;font-size:13px}
.profile-button span{color:var(--mango);font-size:17px;margin-left:4px}
.hero{min-height:485px;position:relative;padding:69px clamp(20px,11vw,180px) 82px;color:white;background:radial-gradient(circle at 76% 25%,rgba(248,81,69,.38),transparent 23%),radial-gradient(circle at 70% 85%,rgba(25,203,214,.19),transparent 29%),linear-gradient(110deg,#062d38 5%,#0b3d48 65%,#062e39);isolation:isolate}
.hero:after{content:"";position:absolute;inset:auto -10% -65px -4%;height:150px;background:var(--cream);clip-path:ellipse(59% 30% at 52% 90%);z-index:-1}
.hero-copy{max-width:630px}
.eyebrow{font-size:11px;letter-spacing:1.65px;font-weight:700;margin:0 0 12px;color:#b7e7e4}
.eyebrow span{color:var(--mango);font-size:14px}
.coral{color:var(--coral)}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(43px,5vw,66px);line-height:1.04;letter-spacing:-2.7px;margin-bottom:17px}
.hero-text{max-width:530px;line-height:1.55;color:#d3e2df;font-size:16px}
.mascot{position:absolute;right:clamp(28px,12vw,210px);top:40px;width:230px;margin:0;filter:drop-shadow(0 18px 20px rgba(0,0,0,.22))}
.mascot img{display:block;width:100%;border-radius:48%}
.mascot:before{display:none}
.mascot-face{display:flex;gap:22px;justify-content:center;padding-top:58px;font-size:28px;color:#172f2f}
.mascot-face b{position:absolute;top:91px;font-size:26px}
.leaf{position:absolute;color:#64b65c;font-size:44px}
.leaf-one{top:-30px;left:27px;transform:rotate(-40deg)}
.leaf-two{top:-28px;right:29px;transform:rotate(32deg)}
.bowl{position:absolute;bottom:-30px;left:37px;width:111px;height:49px;border-radius:0 0 70px 70px;background:#fbfbef;color:#f27040;text-align:center;font-size:55px;line-height:32px;box-shadow:0 6px 12px rgba(0,0,0,.18)}
.bowl i{position:absolute;font-style:normal;color:#3fac6c;font-size:30px;top:-32px}
.bowl i:nth-child(2){left:22px}
.bowl i:nth-child(3){right:17px}
.search-card{position:absolute;bottom:-42px;left:50%;transform:translateX(-50%);z-index:2;width:min(890px,calc(100% - 40px));padding:16px 17px 13px;border-radius:17px;background:#fffdfb;color:var(--ink);box-shadow:var(--shadow)}
.search-card label{display:block;font-size:13px;font-weight:700;margin:0 0 9px 4px}
.search-input-wrap{display:flex;align-items:center;border:1.5px solid #dfe5df;border-radius:12px;height:55px;padding-left:14px}
.search-icon{font-size:25px;color:var(--coral);margin-right:9px}
.search-input-wrap input{border:0;outline:0;min-width:0;flex:1;font-size:14px;color:var(--ink)}
.search-input-wrap input::placeholder{color:#9ba4a1}
.voice-button{border:0;background:transparent;color:var(--coral);font-size:19px;padding:10px}
.search-button{border:0;border-radius:9px;background:var(--coral);color:white;font-weight:700;padding:12px 18px;white-space:nowrap}
.search-button span,.outline-button span{color:var(--mango);font-size:19px;margin-left:5px}
.quick-row{display:flex;align-items:center;gap:8px;overflow:auto;padding:12px 2px 0;color:#76817f;font-size:12px;white-space:nowrap}
.quick-filter{background:#f5f2e9;border:0;border-radius:999px;padding:6px 10px;color:#38545a;font-size:12px}
.quick-filter:hover{background:#d9f6f4}
.discovery{padding:105px clamp(20px,11vw,180px) 76px}
.section-heading{display:flex;align-items:end;justify-content:space-between;gap:15px}
.section-heading h2,.guide-strip h2,.pro-banner h2{font-size:clamp(27px,3.1vw,39px);letter-spacing:-1.5px;margin:0}
.filter-button{border:1px solid var(--line);padding:10px 14px;background:var(--paper);border-radius:9px;color:var(--ink);font-weight:600}
.filter-button span{display:inline-grid;place-items:center;background:var(--coral);color:white;border-radius:50%;font-size:10px;min-width:16px;height:16px;margin-left:4px}
.filter-button span:empty{display:none}
.search-summary{color:var(--muted);font-size:14px;margin:10px 0}
.active-chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:19px}
.chip{border:1px solid #a5dfdb;background:#eafffd;color:#17545a;border-radius:999px;padding:6px 10px;font-size:12px}
.chip b{font-size:16px;line-height:8px;margin-left:3px}
.results-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(235px,.55fr);gap:21px}
.results-list{display:flex;flex-direction:column;gap:13px}
.venue-card,.sponsor-card{position:relative;display:grid;grid-template-columns:148px 1fr 30px;gap:16px;align-items:center;background:var(--paper);border:1px solid #eee7da;border-radius:14px;padding:10px;transition:transform .2s,box-shadow .2s}
.venue-card:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(5,45,56,.1)}
.venue-card:focus-visible{outline:3px solid var(--aqua)}
.venue-image{height:128px;border-radius:10px;display:grid;place-items:center;overflow:hidden;position:relative}
.image-glow{font-size:75px;color:#fff5cc;text-shadow:0 4px 15px rgba(0,0,0,.25)}
.image-poke{background:radial-gradient(circle at 50% 45%,#fa7654 0 18%,#e5b552 19% 26%,#105148 27% 42%,#ecf1c7 43% 48%,#2f3430 49% 100%)}
.image-grill{background:radial-gradient(circle,#ffdb82 0 16%,#ce6035 17% 35%,#342019 36% 100%)}
.image-cafe{background:radial-gradient(circle at 50% 48%,#f2d598 0 18%,#7e4a2e 19% 29%,#f1e6c9 30% 37%,#507a6a 38% 100%)}
.image-sunset{background:radial-gradient(circle at 52% 31%,#ffc55a 0 13%,transparent 14%),linear-gradient(#f2785b 0 40%,#f7b658 41% 51%,#135e72 52% 100%)}
.image-burger{background:radial-gradient(ellipse at 50% 45%,#f1ae3c 0 21%,#5c3421 22% 31%,#95b757 32% 36%,#e66737 37% 43%,#e5a342 44% 52%,#284b45 53% 100%)}
.heart{position:absolute;right:7px;top:7px;border:0;border-radius:50%;width:31px;height:31px;background:rgba(255,255,255,.9);color:var(--coral);font-size:20px}
.heart.saved{color:var(--coral)}
.venue-main{min-width:0}
.venue-topline{display:flex;justify-content:space-between;gap:12px;color:#74817e;font-size:11px;font-weight:700}
.rating{color:#e89200}
.rating i{color:#87908c;font-style:normal;font-weight:400}
.venue-card h3,.sponsor-card h3{font-size:17px;margin:5px 0 3px}
.venue-card p,.sponsor-card p{font-size:12.5px;line-height:1.4;color:#61716e;margin-bottom:8px}
.venue-meta{font-size:11px;color:#687370}
.venue-meta b{color:#c3c8c5;margin:0 4px}
.venue-meta strong{color:#e89800;letter-spacing:1px}
.open-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#53b86e;margin-right:4px}
.open-dot.closed{background:var(--coral)}
.why{display:inline-block;margin-top:8px;padding:5px 8px;border-radius:6px;background:#eff9f3;color:#276b57;font-size:10.5px}
.why span{color:#f5a400}
.card-arrow{background:transparent;color:var(--coral);border:0;font-size:23px}
.sponsor-card{grid-template-columns:92px 1fr 30px;background:#fff9e8;border:1px solid #f5dc94}
.sponsor-image{height:84px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(140deg,#f2b728,#f36949);color:white;font-size:38px}
.sponsored-label{font-size:10px;display:inline-block;background:#f2b728;border-radius:4px;padding:3px 6px;color:#513a00;font-weight:700;text-transform:uppercase}
.sponsor-meta{font-size:10px;color:#806d3d}
.map-panel{height:min(50vh,560px);min-height:0;align-self:start;position:sticky;top:20px;border-radius:14px;overflow:hidden;background:#c7e6d5;border:1px solid #b3d5c3}
.map-water{position:absolute;right:-34%;top:-16%;width:80%;height:140%;border-radius:45%;background:#75cee2}
.map-road{position:absolute;background:#fbf5df;border:4px solid #d7c496;border-radius:50%;height:19px;transform:rotate(-27deg)}
.road-a{width:115%;top:36%;left:-23%}
.road-b{width:98%;top:65%;left:-8%;transform:rotate(22deg)}
.map-label{position:absolute;font-size:11px;letter-spacing:1px;font-weight:700;color:#497162}
.label-a{left:21%;top:43%}
.label-b{left:35%;top:67%}
.pin{position:absolute;display:grid;place-items:center;width:34px;height:34px;border:3px solid white;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--coral);color:white;box-shadow:0 3px 8px #375b59}
.pin:first-letter{transform:rotate(45deg)}
.pin-a{left:38%;top:34%}
.pin-b{left:57%;top:54%;background:var(--ink)}
.pin-c{left:21%;top:58%;background:var(--mango)}
.map-caption{position:absolute;bottom:12px;left:12px;border-radius:7px;background:rgba(255,255,255,.9);padding:8px;font-size:10px;color:#63706c}
.guide-strip{padding:61px clamp(20px,11vw,180px);background:#f1ebdb;display:grid;grid-template-columns:.65fr 1.35fr;gap:38px;align-items:center}
.guide-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.guide-card{min-height:155px;border:0;border-radius:13px;padding:15px;text-align:left;color:white;display:flex;flex-direction:column;justify-content:end;box-shadow:inset 0 -60px 50px rgba(0,0,0,.26);transition:transform .2s}
.guide-card:hover{transform:translateY(-3px)}
.guide-card span{font-size:29px;margin-bottom:auto}
.guide-card b{font-size:14px;line-height:1.2}
.guide-card small{font-size:10px;color:#f6f0d6;margin-top:5px}
.sunset{background:linear-gradient(145deg,#ed7559,#4b2740)}
.lagoon{background:linear-gradient(145deg,#18a4bb,#084652)}
.mango{background:linear-gradient(145deg,#ffbd18,#ed6039)}
.pro-banner{margin:64px clamp(20px,11vw,180px);padding:32px 38px;border-radius:18px;display:grid;grid-template-columns:auto 1fr auto;gap:25px;align-items:center;background:var(--ink);color:white}
.pro-banner h2{font-size:27px}
.pro-banner p:not(.eyebrow){margin:8px 0 0;color:#bcd2ce;font-size:13px;line-height:1.4}
.pro-mark{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:var(--mango);color:var(--ink);font-size:27px}
.outline-button{border:1px solid rgba(255,255,255,.45);background:transparent;border-radius:9px;padding:12px 16px;color:white;font-weight:700;white-space:nowrap}
.empty-state{text-align:center;padding:55px 20px;background:var(--paper);border:1px dashed #d9d2c1;border-radius:13px}
.empty-state>span{font-size:44px;color:var(--coral)}
.empty-state h3{margin:8px 0}
.empty-state p{color:var(--muted);font-size:13px}
.empty-state .outline-button{color:var(--ink);border-color:var(--ink)}
footer{min-height:86px;padding:0 clamp(20px,11vw,180px);display:flex;align-items:center;gap:24px;border-top:1px solid var(--line);font-size:11px;color:#85908b}
footer .brand{margin-right:auto}
footer b{color:var(--coral)}
.legal-link{color:inherit;text-decoration:underline;text-underline-offset:3px}
.legal-link:hover{color:var(--aqua)}
button.legal-link{border:0;background:transparent;padding:0;font:inherit;cursor:pointer}
.app-dialog{border:0;padding:0;background:transparent;max-width:min(510px,calc(100% - 28px));color:var(--ink)}
.app-dialog::backdrop{background:rgba(4,34,42,.58);backdrop-filter:blur(3px)}
.dialog-content{position:relative;padding:31px;border-radius:18px;background:var(--paper);box-shadow:var(--shadow)}
.dialog-content h2{font-size:29px;letter-spacing:-1px}
.close-dialog{position:absolute;right:15px;top:13px;border:0;background:transparent;color:var(--ink);font-size:30px;line-height:1}
.filter-options{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:20px 0}
.filter-option{border:1px solid var(--line);padding:11px;border-radius:9px;background:white;color:var(--ink);display:flex;justify-content:space-between;font-size:13px;text-align:left}
.filter-option.selected{border-color:#72cfc9;background:#edfffd;color:#0d5960}
.dialog-actions{display:flex;align-items:center;justify-content:space-between;gap:10px}
.text-button{border:0;background:transparent;color:var(--coral);font-weight:700}
.dialog-copy{font-size:14px;color:var(--muted);line-height:1.5}
.form-label{display:block;font-size:12px;font-weight:700;margin:15px 0}
.form-label input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:8px;padding:12px;outline-color:var(--aqua)}
.full{width:100%;margin-top:6px}
.detail-dialog{max-width:min(620px,calc(100% - 24px));border-radius:18px;background:var(--paper)}
.detail-cover{height:195px;position:relative;display:flex;align-items:end;padding:18px;color:white;background-size:cover}
.detail-cover>span{font-size:11px;letter-spacing:1px;font-weight:700;text-transform:uppercase;border:1px solid rgba(255,255,255,.7);padding:5px 8px;border-radius:20px}
.detail-close{color:white}
.detail-body{padding:24px}
.detail-title{display:flex;justify-content:space-between;gap:10px}
.detail-title h2{font-size:31px;letter-spacing:-1.5px;margin-bottom:4px}
.detail-title p{font-size:13px;color:#dc9200;margin:0}
.detail-heart{position:static;flex:none;border:1px solid var(--line)}
.detail-description{line-height:1.5;color:var(--muted);font-size:14px}
.detail-menu{margin:18px 0;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:rgba(45,225,223,.07)}
.detail-menu span{display:block;margin-bottom:6px;font-size:10px;font-weight:800;letter-spacing:1px;color:var(--aqua)}
.detail-menu p{margin:0;white-space:pre-line;font-size:13px;line-height:1.55;color:var(--ink)}
.detail-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:19px 0}
.detail-actions>*{border:1px solid var(--line);border-radius:8px;padding:10px 3px;text-align:center;background:white;color:var(--ink);font-size:12px;text-decoration:none;font-weight:700}
.info-grid{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:18px 0}
.info-grid span{display:block;font-size:10px;font-weight:700;letter-spacing:1px;color:#80908b;margin-bottom:5px}
.info-grid b,.info-grid em{display:block;font-size:12px;line-height:1.45}
.info-grid em{font-style:normal;color:#61716e;margin-top:4px}
.claim-inline{border:0;color:var(--coral);background:transparent;padding:0;font-size:12px;text-decoration:underline}
#toast{position:fixed;z-index:9;left:50%;bottom:25px;transform:translate(-50%,120px);background:var(--ink);color:white;padding:12px 16px;border-radius:9px;font-size:13px;box-shadow:var(--shadow);transition:transform .25s}
#toast.visible{transform:translate(-50%,0)}
.analytics-consent{position:fixed;z-index:21;left:50%;bottom:22px;transform:translateX(-50%);display:flex;align-items:center;gap:20px;width:min(720px,calc(100% - 30px));padding:17px 18px;border:1px solid rgba(80,224,230,.6);border-radius:16px;background:rgba(0,38,50,.98);box-shadow:0 20px 48px rgba(0,0,0,.43);color:#efffff}.analytics-consent b{display:block;font-size:14px}.analytics-consent p{margin:4px 0;font-size:12px;line-height:1.45;color:#b9dada}.analytics-consent a{color:#7cf2ef;font-size:12px;font-weight:700}.analytics-actions{display:flex;flex:none;gap:8px}.analytics-actions button{border:1px solid rgba(116,235,235,.55);border-radius:9px;padding:9px 11px;background:transparent;color:#efffff;font:inherit;font-size:12px;font-weight:800;white-space:nowrap}.analytics-actions #analytics-accept{border-color:var(--coral);background:var(--coral)}
.analytics-consent[hidden]{display:none!important}
.app-update{position:fixed;z-index:20;right:24px;bottom:24px;width:min(405px,calc(100% - 32px));padding:17px;border:1px solid rgba(72,225,225,.55);border-radius:16px;background:rgba(0,45,58,.96);box-shadow:0 20px 45px rgba(0,0,0,.4);color:#efffff;animation:hero-rise .35s ease both}.app-update b,.app-update span{display:block}.app-update b{font-size:14px}.app-update span{margin-top:5px;color:#b6dcdc;font-size:13px}.app-update-actions{display:flex;gap:8px;margin-top:14px}.app-update button{border:0;border-radius:9px;padding:9px 12px;background:#ff4d5a;color:white;font:inherit;font-size:12px;font-weight:800}.app-update #update-later{background:transparent;border:1px solid rgba(255,255,255,.3);color:#dbf7f7}
@media (max-width:800px){.topbar{height:64px;padding:0 18px}
nav{display:none}
.profile-button{font-size:0;padding:8px 10px}
.profile-button span{font-size:17px;margin:0}
.hero{min-height:545px;padding:45px 20px 92px}
.hero-copy{max-width:70%}
.mascot{right:15px;top:47px;width:142px;height:auto}
.mascot-face{padding-top:36px;font-size:19px;gap:14px}
.mascot-face b{top:57px;font-size:20px}
.leaf{font-size:29px}
.leaf-one{top:-20px;left:15px}
.leaf-two{top:-20px;right:15px}
.bowl{bottom:-20px;left:24px;width:73px;height:33px;font-size:39px}
.bowl i{font-size:21px;top:-22px}
.bowl i:nth-child(2){left:13px}
.bowl i:nth-child(3){right:9px}
h1{font-size:43px;letter-spacing:-2px}
.hero-text{font-size:14px}
.search-card{bottom:-62px;padding:13px;width:calc(100% - 28px)}
.search-input-wrap{height:51px}
.search-input-wrap input{font-size:12px}
.voice-button{padding:7px}
.search-button{padding:10px 11px;font-size:12px}
.search-button span{display:none}
.quick-row{padding-top:9px}
.discovery{padding:92px 15px 52px}
.section-heading h2{font-size:27px}
.results-layout{display:block}
.map-panel{display:none}
.venue-card{grid-template-columns:104px 1fr 22px;gap:10px;padding:8px}
.venue-image{height:118px}
.venue-topline{font-size:10px}
.venue-card h3{font-size:15px}
.venue-card p{font-size:11px;line-height:1.3;margin-bottom:5px}
.venue-meta{font-size:10px;white-space:nowrap}
.why{font-size:9.5px;margin-top:5px}
.card-arrow{font-size:20px}
.sponsor-card{grid-template-columns:73px 1fr 23px;gap:10px}
.sponsor-image{height:71px}
.guide-strip{padding:40px 20px;display:block}
.guide-strip h2{margin-bottom:22px}
.guide-cards{gap:8px}
.guide-card{min-height:130px;padding:11px}
.guide-card b{font-size:12px}
.guide-card small{display:none}
.pro-banner{margin:38px 15px;padding:24px;display:block}
.pro-mark{display:none}
.pro-banner h2{font-size:25px}
.pro-banner .outline-button{width:100%;margin-top:19px}
.filter-options{grid-template-columns:1fr}
.detail-cover{height:165px}
.detail-body{padding:20px}
.detail-title h2{font-size:27px}
footer{padding:18px 20px;flex-wrap:wrap;gap:10px}
footer .brand{width:100%}
.app-update{right:16px;bottom:16px}
.analytics-consent{bottom:14px;display:block;padding:15px}.analytics-actions{margin-top:12px;display:flex}.analytics-actions button{flex:1;font-size:11px;padding:9px 7px}
}

/* Direction graphique issue des visuels pilotes Kaikau. */
:root{--ink:#002d3a;--ink-2:#003d4d;--cream:#002d3a;--paper:#003947;--coral:#ff4d5a;--mango:#ffd700;--aqua:#00cbe7;--muted:#a8c9ce;--line:rgba(111,211,221,.22);--shadow:0 18px 50px rgba(0,0,0,.35)}
body{background:#002d3a;color:#f7ffff}
.topbar{position:relative;z-index:5;height:66px;background:#001f2b;border:0;padding:0 clamp(20px,4vw,55px)}
.brand{font-size:29px;color:#ff4d5a;text-shadow:0 2px 0 rgba(0,0,0,.2)}
nav{gap:29px;margin-left:28px}.nav-link{font-size:12px;color:#e1f5f4}.nav-link.active,.nav-link:hover{color:#ff4d5a}.profile-button{font-size:12px;padding:9px 18px}.sign-up-button{border:0;background:var(--coral);color:white;border-radius:999px;padding:10px 16px;font-size:12px;font-weight:700}
.install-button{border:1px solid rgba(71,225,225,.6);background:rgba(0,73,87,.8);color:#e7ffff;border-radius:999px;padding:9px 13px;font-size:11px;font-weight:700}
.site-announcement{position:relative;z-index:4;padding:10px 20px;background:#ffd700;color:#002d3a;text-align:center;font-size:13px;font-weight:700}
.hero{min-height:590px;padding:52px 20px 135px;display:flex;justify-content:center;text-align:center;background:linear-gradient(180deg,rgba(0,25,37,.16),rgba(0,38,50,.68)),url('assets/kaikau-hero-v1.png') center/cover no-repeat}.hero:after{display:none}.hero-copy{position:relative;z-index:2;max-width:650px}.hero-copy .eyebrow{display:none}h1{font-family:Pacifico,cursive;font-size:clamp(42px,4.25vw,60px);font-weight:400;line-height:1.3;letter-spacing:-1px;text-shadow:0 3px 13px rgba(0,0,0,.35);margin:0 0 10px}.hero-text{margin:auto;color:#e1f7f7;font-size:14px;max-width:470px;text-shadow:0 2px 8px rgba(0,0,0,.5)}.hero-install-button{margin-top:17px;border:1px solid #54d9df;border-radius:999px;padding:10px 17px;background:rgba(0,45,58,.82);color:#fff;font-size:12px;font-weight:700;box-shadow:0 5px 15px rgba(0,0,0,.22)}.hero-install-button:hover{background:#ff4d5a;border-color:#ff4d5a}
.search-card{bottom:126px;width:min(680px,calc(100% - 40px));padding:7px;border-radius:999px;background:white;box-shadow:0 4px 0 #50dce3,0 16px 35px rgba(0,0,0,.38)}.search-card label,.quick-row>span{display:none}.search-input-wrap{height:49px;border:0;border-radius:999px;padding-left:18px}.search-icon{color:#31525b;font-size:21px}.search-input-wrap input{font-size:13px}.voice-button{display:none}.search-button{height:44px;border-radius:50%;width:44px;padding:0;font-size:0;background:var(--coral);box-shadow:0 2px 8px rgba(255,77,90,.5)}.search-button:before{content:'⌕';font-size:25px;font-weight:400}.search-button span{display:none}.quick-row{position:absolute;left:50%;top:65px;transform:translateX(-50%);padding:0;gap:8px}.quick-filter{padding:8px 15px;background:rgba(0,96,113,.84);border:1px solid rgba(93,229,231,.55);color:white;font-size:11px;backdrop-filter:blur(6px)}.quick-filter:hover{background:#00a5b9}
.mascot{left:clamp(8px,4vw,65px);right:auto;top:auto;bottom:25px;width:120px;z-index:2;filter:drop-shadow(0 11px 13px rgba(0,0,0,.5))}.mascot img{border-radius:0;filter:saturate(1.05)}.mascot-bubble{position:absolute;left:clamp(106px,11vw,185px);top:245px;bottom:auto;z-index:2;width:142px;padding:14px;border:1px solid #1ed5df;border-radius:22px 22px 22px 3px;background:rgba(0,37,49,.9);text-align:left;color:#e3ffff;font-size:11px;line-height:1.5;box-shadow:0 9px 25px rgba(0,0,0,.35)}.mascot-bubble b{color:#ffdd38}.hero-benefits{position:absolute;z-index:2;bottom:13px;left:50%;transform:translateX(-50%);display:flex;justify-content:center;gap:36px;width:min(720px,75%);color:#dbffff}.hero-benefits span{display:grid;grid-template-columns:auto 1fr;column-gap:7px;text-align:left;font-size:18px;color:#00d5e8}.hero-benefits b{align-self:end;font-size:10px;color:#fff}.hero-benefits small{grid-column:2;font-size:8px;color:#a8d8d6;white-space:nowrap}
@keyframes mascot-float{0%,100%{transform:translate3d(0,0,0) rotate(-1deg)}50%{transform:translate3d(0,-12px,0) rotate(1.5deg)}}
@keyframes mascot-sway{0%,100%{transform:rotate(0deg) scale(1)}50%{transform:rotate(-1.5deg) scale(1.012)}}
.mascot{transform-origin:center bottom;animation:mascot-float 4.8s ease-in-out infinite}.mascot img{transform-origin:center bottom;animation:mascot-sway 3.6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.mascot,.mascot img{animation:none}}
.discovery{padding:44px clamp(20px,6vw,80px) 62px;background:radial-gradient(circle at 65% 0,#005365 0,transparent 40%),#002d3a}.section-heading h2,.guide-strip h2,.pro-banner h2{color:#fff;font-size:29px}.section-heading h2{font-size:25px}.search-summary{color:#afd1d3}.filter-button{border-color:#2c9daa;background:#003b49;color:white}.active-chips .chip{border-color:#23b8c6;background:#004e5d;color:#d8ffff}.results-layout{grid-template-columns:minmax(0,1.7fr) minmax(220px,.5fr)}.venue-card,.sponsor-card{background:#003745;border-color:#167686;box-shadow:0 9px 25px rgba(0,0,0,.2)}.venue-card:hover{background:#004555}.venue-topline{color:#90b8bb}.venue-card h3,.sponsor-card h3{color:#fff}.venue-card p,.sponsor-card p,.venue-meta{color:#bed6d8}.why{background:#004f5a;color:#9ff7ed}.sponsor-card{background:#003b49;border-color:#cc9d1b}.map-panel{background:#003643;border-color:#198492;filter:saturate(.7) brightness(.78)}.map-caption{background:#001f2b;color:#c8eeee}.guide-strip{background:#002634;padding:55px clamp(20px,7vw,110px)}.guide-card{border:1px solid rgba(75,235,237,.55);box-shadow:inset 0 -60px 50px rgba(0,0,0,.4)}.pro-banner{background:linear-gradient(110deg,#004959,#002934);border:1px solid #197f8d}.pro-banner p:not(.eyebrow){color:#bcdddf}.pro-mark{background:var(--coral);color:white}.outline-button{border-color:#4dc4ce;background:#003e4b}footer{background:#001f2b;border:0;color:#a8c9ce}
.app-dialog{color:#f8ffff}.dialog-content,.detail-dialog{background:#003846}.dialog-content h2,.detail-title h2{color:white}.dialog-copy{color:#b5d5d5}.filter-option,.detail-actions>*{background:#004553;border-color:#177e8b;color:#fff}.filter-option.selected{background:#005d68;border-color:#2de1df;color:#fff}.detail-description,.info-grid em{color:#bbd8d8}.info-grid{border-color:#1b7180}.close-dialog{color:#fff}.empty-state{background:#003846;border-color:#227f8b}.empty-state p{color:#bdd6d7}
/* Mouvement discret : le décor guide l'œil sans ralentir l'exploration. */
@keyframes hero-aurora{0%,100%{transform:translate3d(-4%,-2%,0) scale(1);opacity:.28}50%{transform:translate3d(4%,3%,0) scale(1.13);opacity:.62}}
@keyframes hero-rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes search-rise{from{opacity:0;transform:translateX(-50%) translateY(22px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
@keyframes water-drift{0%,100%{transform:translateX(0) rotate(-3deg)}50%{transform:translateX(-6%) rotate(3deg)}}
@keyframes pin-bob{0%,100%{transform:rotate(-45deg) translateY(0)}50%{transform:rotate(-45deg) translateY(-7px)}}
.hero:before{content:"";position:absolute;inset:-16%;z-index:0;pointer-events:none;background:radial-gradient(circle at 25% 36%,rgba(0,217,233,.24),transparent 22%),radial-gradient(circle at 73% 30%,rgba(255,95,91,.35),transparent 25%),radial-gradient(circle at 57% 78%,rgba(255,217,56,.15),transparent 22%);filter:blur(12px);animation:hero-aurora 13s ease-in-out infinite}
.hero-copy{animation:hero-rise .72s cubic-bezier(.2,.8,.2,1) both}.hero-text{animation:hero-rise .72s .14s cubic-bezier(.2,.8,.2,1) both}.hero-install-button{animation:hero-rise .72s .24s cubic-bezier(.2,.8,.2,1) both}.search-card{animation:search-rise .8s .32s cubic-bezier(.2,.8,.2,1) both}.hero-benefits{animation:hero-rise .7s .46s cubic-bezier(.2,.8,.2,1) both}
.search-card:focus-within{box-shadow:0 4px 0 #50dce3,0 18px 40px rgba(0,211,231,.28),0 18px 35px rgba(0,0,0,.38)}
.map-water{animation:water-drift 12s ease-in-out infinite}.pin{animation:pin-bob 2.8s ease-in-out infinite}.pin-b{animation-delay:.55s}.pin-c{animation-delay:1.1s}
.reveal{opacity:0;transform:translateY(20px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.8,.2,1)}.reveal.is-visible{opacity:1;transform:translateY(0)}
@media (hover:hover){.quick-filter,.filter-button,.outline-button,.install-button,.hero-install-button,.search-button,.heart,.pin,.guide-card,.venue-card,.sponsor-card{transition:transform .22s ease,box-shadow .22s ease,background-color .22s ease,border-color .22s ease}.quick-filter:hover,.filter-button:hover,.outline-button:hover,.install-button:hover,.hero-install-button:hover{transform:translateY(-2px);box-shadow:0 9px 20px rgba(0,0,0,.22)}.search-button:hover{transform:scale(1.08) rotate(8deg);box-shadow:0 6px 16px rgba(255,77,90,.58)}.heart:hover{transform:scale(1.16);box-shadow:0 5px 12px rgba(0,0,0,.2)}.guide-card:hover{transform:translateY(-7px) rotate(-.5deg);box-shadow:inset 0 -60px 50px rgba(0,0,0,.35),0 16px 30px rgba(0,0,0,.24)}.venue-card:hover,.sponsor-card:hover{transform:translateX(5px);box-shadow:0 15px 30px rgba(0,0,0,.24)}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero:before,.hero-copy,.hero-text,.hero-install-button,.hero-benefits,.map-water,.pin,.mascot,.mascot img{animation:none;transition:none}.search-card{animation:none;transform:translateX(-50%);opacity:1}.reveal{opacity:1;transform:none;transition:none}}
@media (max-width:800px){.topbar{background:#001f2b}.topbar nav,.profile-button{display:none}.top-actions{gap:7px}.install-button{font-size:0;width:34px;height:34px;padding:0}.install-button:first-letter{font-size:18px}.sign-up-button{font-size:10px;padding:8px 11px}.hero{min-height:625px;padding:45px 20px 180px;background-position:58% center}.hero-copy{max-width:100%}h1{font-size:38px;line-height:1.32}.hero-text{font-size:12px;max-width:300px}.hero-install-button{margin-top:13px;padding:9px 14px;font-size:11px}.search-card{bottom:170px;width:calc(100% - 34px)}.quick-row{top:61px;width:100%;justify-content:center}.quick-filter{padding:7px 10px}.quick-filter:nth-of-type(n+4){display:none}.mascot{left:-5px;bottom:15px;width:95px}.mascot-bubble{display:none}.hero-benefits{display:none}.discovery{padding:36px 15px 45px}.guide-strip{padding:42px 20px}.pro-banner{margin:35px 15px}}
.hero .mascot{width:240px!important;max-width:240px;margin:0}.hero .mascot img{width:100%!important;height:auto!important}
@media (max-width:800px){.hero .mascot{width:170px!important;max-width:170px}}

/* Expérience magique Kaikau : profondeur, lumière et réactions tactiles. */
.app-shell{overflow:clip}
.topbar{position:sticky!important;top:0;z-index:30;background:rgba(0,31,43,.88);backdrop-filter:blur(16px) saturate(1.3);box-shadow:0 10px 28px rgba(0,0,0,.12)}
.scroll-progress{--scroll-ratio:0;position:absolute;left:0;right:0;bottom:0;height:2px;transform:scaleX(var(--scroll-ratio));transform-origin:left;background:linear-gradient(90deg,#00dbe7,#ffd93d 52%,#ff4d5a);box-shadow:0 0 12px rgba(79,236,239,.75);transition:transform .08s linear}
.hero{--magic-x:50%;--magic-y:50%;overflow:hidden;background-position:center;transition:background-position .2s ease-out}
.hero:before{inset:-12%;background:radial-gradient(circle at var(--magic-x) var(--magic-y),rgba(102,246,241,.32),transparent 17%),radial-gradient(circle at 75% 30%,rgba(255,81,91,.34),transparent 25%),radial-gradient(circle at 55% 80%,rgba(255,222,70,.18),transparent 22%);mix-blend-mode:screen;will-change:transform,opacity}
.hero-copy{translate:var(--copy-x,0) var(--copy-y,0);transition:translate .22s cubic-bezier(.2,.8,.2,1)}
@keyframes mascot-float{0%,100%{transform:translate3d(var(--mascot-x,0),var(--mascot-y,0),0) rotate(-1deg)}50%{transform:translate3d(var(--mascot-x,0),calc(var(--mascot-y,0px) - 12px),0) rotate(1.5deg)}}
.magic-sky{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}.magic-star{position:absolute;width:7px;height:7px;border-radius:50%;background:#f8ffff;box-shadow:0 0 5px #fff,0 0 16px #67f1ef;animation:magic-twinkle 3.4s ease-in-out infinite}.magic-star:before,.magic-star:after{content:"";position:absolute;left:50%;top:50%;background:linear-gradient(90deg,transparent,#dfffff,transparent);transform:translate(-50%,-50%)}.magic-star:before{width:27px;height:1px}.magic-star:after{width:1px;height:27px;background:linear-gradient(transparent,#dfffff,transparent)}.star-one{left:18%;top:17%;animation-delay:-.7s}.star-two{left:72%;top:16%;width:5px;height:5px;animation-delay:-2.1s}.star-three{left:84%;top:54%;animation-delay:-1.4s}.star-four{left:39%;top:72%;width:4px;height:4px;animation-delay:-2.8s}.magic-ring{position:absolute;border:1px solid rgba(123,244,240,.3);border-radius:50%;filter:drop-shadow(0 0 12px rgba(88,234,235,.18));animation:magic-ring 9s ease-in-out infinite}.ring-one{width:190px;height:190px;right:9%;top:10%}.ring-two{width:110px;height:110px;left:29%;bottom:10%;animation-delay:-4s}
.search-card{isolation:isolate}.search-card:before{content:"";position:absolute;z-index:-1;inset:-2px;border-radius:inherit;background:linear-gradient(115deg,#64f2ee,#ffd83d,#ff5965,#64f2ee);background-size:260% 100%;filter:blur(.2px);animation:magic-border 6s linear infinite}.search-input-wrap{background:#fff;border-radius:inherit}.search-icon{animation:search-glow 2.7s ease-in-out infinite}
.hero-install-button,.install-button,.sign-up-button,.outline-button,.filter-button{position:relative;overflow:hidden}.hero-install-button:after,.install-button:after,.sign-up-button:after,.outline-button:after,.filter-button:after{content:"";position:absolute;top:-80%;bottom:-80%;left:-45%;width:28%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.72),transparent);transform:rotate(18deg) translateX(-250%);transition:transform .65s cubic-bezier(.2,.8,.2,1);pointer-events:none}.hero-install-button:hover:after,.install-button:hover:after,.sign-up-button:hover:after,.outline-button:hover:after,.filter-button:hover:after{transform:rotate(18deg) translateX(650%)}
.venue-card,.sponsor-card,.guide-card{--spot-x:50%;--spot-y:50%;--card-rx:0deg;--card-ry:0deg;overflow:hidden;transform-style:preserve-3d;will-change:transform}.venue-card:after,.sponsor-card:after,.guide-card:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(circle 210px at var(--spot-x) var(--spot-y),rgba(111,244,239,.18),transparent 68%);opacity:0;transition:opacity .28s;pointer-events:none}.venue-card:hover:after,.sponsor-card:hover:after,.guide-card:hover:after{opacity:1}.venue-image,.sponsor-image,.guide-card span{transform:translateZ(14px)}
.reveal{transition-delay:var(--reveal-delay,0ms)}
.tap-spark{position:fixed;z-index:100;width:10px;height:10px;border-radius:50%;pointer-events:none;background:#fff;box-shadow:0 0 0 0 rgba(83,238,237,.9),0 0 18px #fff,18px -12px 0 -2px #ffd83d,-16px -15px 0 -3px #ff5965,15px 16px 0 -3px #68f2ef;transform:translate(-50%,-50%);animation:tap-spark .65s ease-out forwards}
@keyframes magic-twinkle{0%,100%{opacity:.25;transform:scale(.55) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(90deg)}}
@keyframes magic-ring{0%,100%{opacity:.18;transform:scale(.82) rotate(0)}50%{opacity:.58;transform:scale(1.15) rotate(25deg)}}
@keyframes magic-border{to{background-position:260% 0}}
@keyframes search-glow{0%,100%{filter:drop-shadow(0 0 0 rgba(0,204,221,0));transform:scale(1)}50%{filter:drop-shadow(0 0 6px rgba(0,204,221,.75));transform:scale(1.08)}}
@keyframes tap-spark{0%{opacity:1;transform:translate(-50%,-50%) scale(.35)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.8)}}
@media(hover:hover) and (pointer:fine){.venue-card:hover,.sponsor-card:hover{transform:perspective(900px) translateY(-5px) rotateX(var(--card-rx)) rotateY(var(--card-ry));box-shadow:0 22px 42px rgba(0,0,0,.28),0 0 0 1px rgba(78,225,231,.18)}.guide-card:hover{transform:perspective(700px) translateY(-8px) rotateX(var(--card-rx)) rotateY(var(--card-ry));box-shadow:inset 0 -60px 50px rgba(0,0,0,.32),0 20px 38px rgba(0,0,0,.28)}}
@media(max-width:800px){.magic-ring{display:none}.magic-star{opacity:.7}.star-two,.star-four{display:none}.search-card:before{animation-duration:9s}.topbar{backdrop-filter:blur(12px) saturate(1.2)}}
@media(prefers-reduced-motion:reduce){.scroll-progress{transition:none}.magic-sky{display:none}.hero-copy{translate:0 0;transition:none}.hero:before,.search-card:before,.search-icon{animation:none}.venue-card,.sponsor-card,.guide-card{will-change:auto}.tap-spark{display:none}}

/* Introduction cinématique de la mascotte. */
html.intro-active,html.intro-active body{overflow:hidden}
.mascot-intro{position:fixed;inset:0;z-index:90;display:grid;place-items:center;min-height:100dvh;overflow:hidden;background:#001f2b;color:#fff;isolation:isolate}.mascot-intro[hidden]{display:none!important}.intro-lagoon{position:absolute;z-index:-3;inset:-7%;background:linear-gradient(rgba(0,28,40,.58),rgba(0,42,52,.8)),url('assets/kaikau-hero-v1.png') center/cover no-repeat;filter:blur(4px) saturate(1.25);animation:intro-lagoon 4.2s ease-out both}.mascot-intro:before{content:"";position:absolute;z-index:-2;inset:0;background:radial-gradient(circle at 50% 48%,rgba(33,232,231,.31),transparent 24%),radial-gradient(circle at 38% 38%,rgba(255,216,61,.18),transparent 17%),linear-gradient(180deg,rgba(0,27,39,.1),rgba(0,31,43,.72));animation:intro-light 2.4s ease-out both}.mascot-intro:after{content:"";position:absolute;z-index:-1;left:-10%;right:-10%;bottom:-12%;height:38%;background:radial-gradient(ellipse at center,rgba(31,223,226,.38),transparent 61%);filter:blur(14px);animation:intro-water 2.8s ease-in-out infinite alternate}
.intro-content{position:relative;z-index:3;display:grid;justify-items:center;width:min(620px,100% - 30px);padding:22px;text-align:center}.intro-brand{font:clamp(36px,6vw,58px) Pacifico,cursive;color:#ff5965;line-height:1;text-shadow:0 5px 20px rgba(0,0,0,.35),0 0 24px rgba(255,89,101,.24);opacity:0;animation:intro-brand .65s .18s cubic-bezier(.2,.8,.2,1) forwards}.intro-brand small{margin-left:7px;color:#ffe13d;font:18px "DM Sans",sans-serif;vertical-align:top}.intro-mascot{position:relative;width:min(310px,54vw);aspect-ratio:1;margin:-9px 0 -25px;filter:drop-shadow(0 25px 24px rgba(0,0,0,.48));transform-origin:center bottom;animation:intro-mascot-arrive 1.05s .22s cubic-bezier(.17,.84,.31,1.22) both}.intro-mascot:before{content:"";position:absolute;inset:0;background-image:url('assets/kaikau-mascot-display-v4.png'),url('assets/kaikau-mascot-hero-v2.png');background-position:center;background-repeat:no-repeat;background-size:contain;transform-origin:60% 80%;animation:intro-celebrate .95s 1.15s ease-in-out both}.intro-mascot:after{content:"";position:absolute;left:18%;right:18%;bottom:8%;height:12%;border-radius:50%;background:rgba(0,14,22,.45);filter:blur(14px);z-index:-1;animation:intro-shadow 1.05s .22s ease-out both}
.intro-halo{position:absolute;z-index:0;left:50%;top:48%;width:min(510px,82vw);aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,221,61,.18),rgba(0,224,230,.12) 37%,transparent 69%);animation:intro-halo-burst 1.2s .18s cubic-bezier(.2,.8,.2,1) both}.intro-halo>i{position:absolute;inset:9%;border:1px solid rgba(105,247,243,.48);border-radius:50%;box-shadow:inset 0 0 28px rgba(69,233,236,.12),0 0 24px rgba(69,233,236,.14);animation:intro-orbit 8s linear infinite}.intro-halo>i:nth-child(2){inset:18%;border-style:dashed;animation-direction:reverse;animation-duration:6s}.intro-halo>i:nth-child(3){inset:29%;border-color:rgba(255,220,61,.52);animation-duration:4s}
.intro-message{display:grid;gap:2px;position:relative;z-index:4;padding:12px 22px;border:1px solid rgba(111,242,239,.58);border-radius:20px 20px 20px 4px;background:rgba(0,43,55,.85);box-shadow:0 16px 38px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,255,255,.12);backdrop-filter:blur(12px);opacity:0;animation:intro-message .65s 1.1s cubic-bezier(.2,.8,.2,1) forwards}.intro-message b{color:#ffe13d;font-size:clamp(20px,4vw,28px)}.intro-message span{color:#dcffff;font-size:clamp(12px,2vw,15px)}.intro-skip{position:relative;z-index:4;margin-top:17px;padding:9px 16px;border:1px solid rgba(255,255,255,.43);border-radius:999px;background:rgba(0,35,47,.64);color:#fff;font-weight:800;font-size:12px;opacity:0;animation:intro-message .55s 1.55s ease-out forwards}.intro-skip span{display:inline-block;margin-left:6px;color:#72efed;animation:intro-arrow .85s ease-in-out infinite alternate}
.intro-sparks{position:absolute;z-index:2;inset:0;pointer-events:none}.intro-sparks i{--spark-x:50%;--spark-y:50%;position:absolute;left:var(--spark-x);top:var(--spark-y);width:8px;height:8px;border-radius:50%;background:#fff;box-shadow:0 0 8px #fff,0 0 19px #65f3ef;opacity:0;animation:intro-spark .85s var(--spark-delay,.55s) cubic-bezier(.15,.8,.3,1) both}.intro-sparks i:before,.intro-sparks i:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#efffff}.intro-sparks i:before{width:28px;height:1px}.intro-sparks i:after{width:1px;height:28px}.intro-sparks i:nth-child(1){--spark-x:29%;--spark-y:34%;--spark-delay:.5s}.intro-sparks i:nth-child(2){--spark-x:69%;--spark-y:31%;--spark-delay:.64s;transform:scale(.7)}.intro-sparks i:nth-child(3){--spark-x:76%;--spark-y:53%;--spark-delay:.81s}.intro-sparks i:nth-child(4){--spark-x:22%;--spark-y:56%;--spark-delay:.9s;transform:scale(.6)}.intro-sparks i:nth-child(5){--spark-x:35%;--spark-y:70%;--spark-delay:1.03s}.intro-sparks i:nth-child(6){--spark-x:66%;--spark-y:72%;--spark-delay:1.16s;transform:scale(.7)}.intro-sparks i:nth-child(7){--spark-x:45%;--spark-y:22%;--spark-delay:1.28s;transform:scale(.55)}.intro-sparks i:nth-child(8){--spark-x:57%;--spark-y:64%;--spark-delay:1.38s;transform:scale(.5)}
.mascot-intro.is-leaving{animation:intro-curtain-out .68s cubic-bezier(.65,0,.85,.35) forwards}.mascot-intro.is-leaving .intro-content{animation:intro-content-out .58s ease-in forwards}
@keyframes intro-lagoon{from{opacity:0;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}
@keyframes intro-light{from{opacity:0}to{opacity:1}}
@keyframes intro-water{from{transform:translateX(-3%) scale(.95);opacity:.35}to{transform:translateX(3%) scale(1.08);opacity:.72}}
@keyframes intro-brand{from{opacity:0;transform:translateY(-22px) scale(.82)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes intro-mascot-arrive{0%{opacity:0;transform:translateY(115px) scale(.16) rotate(-16deg)}62%{opacity:1;transform:translateY(-12px) scale(1.09) rotate(3deg)}82%{transform:translateY(5px) scale(.97) rotate(-1.5deg)}100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@keyframes intro-celebrate{0%,100%{transform:rotate(0) scale(1)}35%{transform:rotate(-3deg) scale(1.04)}70%{transform:rotate(2deg) scale(1.01)}}
@keyframes intro-shadow{from{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}
@keyframes intro-halo-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.15) rotate(-35deg)}70%{opacity:1;transform:translate(-50%,-50%) scale(1.08) rotate(5deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}}
@keyframes intro-orbit{to{transform:rotate(360deg)}}
@keyframes intro-message{from{opacity:0;transform:translateY(18px) scale(.94)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes intro-arrow{to{transform:translateY(4px)}}
@keyframes intro-spark{0%{opacity:0;filter:blur(4px);transform:scale(.1) rotate(0)}55%{opacity:1;filter:blur(0);transform:scale(1.35) rotate(45deg)}100%{opacity:.5;transform:scale(.65) rotate(90deg)}}
@keyframes intro-curtain-out{0%{opacity:1;clip-path:circle(150% at 50% 50%)}100%{opacity:0;clip-path:circle(0 at 50% 48%)}}
@keyframes intro-content-out{to{opacity:0;transform:translateY(-22px) scale(1.08)}}
@media(max-width:600px){.intro-content{padding:13px}.intro-brand{font-size:38px}.intro-mascot{width:min(245px,67vw);margin:-4px 0 -18px}.intro-halo{width:94vw}.intro-message{padding:10px 16px}.intro-skip{margin-top:13px}.intro-sparks i:nth-child(1),.intro-sparks i:nth-child(4){display:none}}
@media(prefers-reduced-motion:reduce){.mascot-intro{display:none!important}}
.kaikau-map-marker{background:transparent;border:0}.kaikau-map-marker span{display:grid;place-items:center;width:34px;height:34px;border:3px solid rgba(255,255,255,.95);border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:linear-gradient(145deg,#ff5965,#e9364a);color:#fff8cf;font-size:16px;box-shadow:0 8px 18px rgba(0,31,43,.38),0 0 0 4px rgba(73,231,232,.18)}.kaikau-map-marker span::first-letter{transform:rotate(45deg)}
.venue-card.is-map-selected{border-color:#62efeb;box-shadow:0 0 0 2px rgba(98,239,235,.34),0 18px 38px rgba(0,0,0,.25)}.kaikau-map-marker.is-selected span{animation:map-marker-selected .72s cubic-bezier(.18,.8,.28,1.2) both;background:linear-gradient(145deg,#ffd83d,#ff8d3e);box-shadow:0 10px 22px rgba(0,31,43,.45),0 0 0 8px rgba(98,239,235,.32)}.kaikau-map-popup{display:grid;gap:3px;min-width:130px;color:#07333e}.kaikau-map-popup b{font-size:13px}.kaikau-map-popup span{font-size:11px;color:#61716e}.kaikau-map-popup button{margin-top:5px;border:0;border-radius:999px;padding:6px 9px;background:#ff5965;color:white;font:700 10px "DM Sans",sans-serif;cursor:pointer}.map-panel:has(.kaikau-map-marker.is-selected){border-color:#5de9e8;box-shadow:0 0 0 3px rgba(93,233,232,.15),0 18px 36px rgba(0,0,0,.22)}@keyframes map-marker-selected{0%{transform:rotate(-45deg) translateY(0) scale(.7)}48%{transform:rotate(-45deg) translateY(-11px) scale(1.22)}100%{transform:rotate(-45deg) translateY(0) scale(1)}}@media(max-width:800px){.results-layout{display:flex;flex-direction:column}.map-panel{display:block;position:relative;top:auto;width:100%;height:360px;margin-top:18px;order:2;filter:saturate(.82) brightness(.9)}}@media(prefers-reduced-motion:reduce){.kaikau-map-marker.is-selected span{animation:none}}

/* La mascotte devient un assistant de découverte interactif. */
.hero .mascot{border:0;padding:0;background:transparent;cursor:pointer;-webkit-tap-highlight-color:transparent;animation:none}.hero .mascot-art{display:block;width:100%;aspect-ratio:1;pointer-events:none;background-image:url('assets/kaikau-mascot-display-v4.png'),url('assets/kaikau-mascot-hero-v2.png');background-position:center;background-repeat:no-repeat;background-size:contain;transform-origin:center bottom;animation:mascot-interactive-float 4.8s ease-in-out infinite}.hero .mascot:focus-visible{outline:3px solid #68f2ef;outline-offset:7px;border-radius:45%}.hero .mascot:hover{filter:drop-shadow(0 15px 18px rgba(0,0,0,.54)) drop-shadow(0 0 14px rgba(99,241,238,.28))}.hero .mascot.is-cheering{animation:mascot-cheer .9s cubic-bezier(.18,.8,.28,1.25) both}.mascot-bubble{width:190px;display:grid;gap:3px;padding:15px 16px}.mascot-bubble b{display:block}.mascot-bubble span{display:block;line-height:1.42}.mascot-bubble button{justify-self:start;margin-top:7px;border:1px solid rgba(99,239,238,.6);border-radius:999px;padding:6px 9px;background:rgba(0,82,95,.72);color:#efffff;font-size:9px;font-weight:800;box-shadow:0 5px 12px rgba(0,0,0,.18)}.mascot-bubble button:hover{background:#ff5965;border-color:#ff5965}.mascot-bubble.is-speaking{animation:mascot-bubble-pop .58s cubic-bezier(.18,.8,.28,1.18) both}
@keyframes mascot-interactive-float{0%,100%{transform:translate3d(var(--mascot-x,0),var(--mascot-y,0),0) rotate(-1deg) scale(1)}50%{transform:translate3d(var(--mascot-x,0),calc(var(--mascot-y,0px) - 12px),0) rotate(1.5deg) scale(1.012)}}
@keyframes mascot-cheer{0%{transform:translate3d(var(--mascot-x,0),var(--mascot-y,0),0) rotate(-1deg) scale(1)}28%{transform:translate3d(var(--mascot-x,0),calc(var(--mascot-y,0px) - 34px),0) rotate(-8deg) scale(1.05)}52%{transform:translate3d(var(--mascot-x,0),calc(var(--mascot-y,0px) - 12px),0) rotate(7deg) scale(1.08)}75%{transform:translate3d(var(--mascot-x,0),calc(var(--mascot-y,0px) - 23px),0) rotate(-3deg) scale(1.03)}100%{transform:translate3d(var(--mascot-x,0),var(--mascot-y,0),0) rotate(-1deg) scale(1)}}
@keyframes mascot-bubble-pop{0%{opacity:.2;transform:translate(-12px,12px) scale(.72)}65%{opacity:1;transform:translate(3px,-2px) scale(1.04)}100%{opacity:1;transform:translate(0,0) scale(1)}}
@media(max-width:800px){.mascot-bubble{display:none}.mascot-bubble.is-speaking{display:grid;left:112px;top:auto;bottom:34px;width:220px;padding:13px 14px;z-index:8}.mascot-bubble.is-speaking button{font-size:9px}.hero .mascot:focus-visible{outline-offset:2px}}
@media(prefers-reduced-motion:reduce){.hero .mascot-art,.hero .mascot.is-cheering,.mascot-bubble.is-speaking{animation:none}}

/* Piste animée : la mascotte danse et voyage toujours au-dessus de la recherche. */
.mascot-runway{--mascot-size:158px;--runway-edge:34px;position:absolute;left:50%;bottom:202px;z-index:4;width:min(760px,calc(100% - 48px));height:var(--mascot-size);transform:translateX(-50%);pointer-events:none}
.mascot-path{position:absolute;left:var(--runway-edge);bottom:0;width:var(--mascot-size);pointer-events:none;will-change:left;animation:mascot-wander 12s cubic-bezier(.45,.05,.55,.95) infinite alternate}
.mascot-path:after{content:"✦";position:absolute;right:7%;bottom:14%;z-index:-1;color:#7af4f0;font-size:18px;text-shadow:-20px 8px 0 rgba(255,216,61,.72),-42px -2px 0 rgba(255,89,101,.6),0 0 12px #5ef2ef;opacity:.78;animation:mascot-trail 1.2s ease-in-out infinite}
.hero .mascot-runway .mascot{position:relative!important;inset:auto!important;display:block;width:100%!important;max-width:none;margin:0;pointer-events:auto;filter:drop-shadow(0 14px 15px rgba(0,0,0,.5));transform-origin:center bottom}
.hero .mascot-runway .mascot-art{animation:mascot-dance 1.8s cubic-bezier(.45,.05,.55,.95) infinite}
.mascot-runway .mascot-bubble{display:none;left:50%;top:auto;bottom:82%;width:190px;transform:translateX(-50%);pointer-events:auto}
.mascot-runway .mascot-bubble.is-speaking{display:grid}
.mascot-path:has(.mascot:focus-visible),.mascot-path:has(.mascot.is-cheering){animation-play-state:paused}
@keyframes mascot-wander{0%{left:var(--runway-edge)}20%{left:23%}44%{left:calc(100% - var(--mascot-size) - var(--runway-edge))}58%{left:66%}78%{left:37%}100%{left:var(--runway-edge)}}
@keyframes mascot-dance{0%,100%{transform:translate3d(0,0,0) rotate(-2deg) scale(1)}14%{transform:translate3d(0,-8px,0) rotate(5deg) scale(1.025)}28%{transform:translate3d(0,0,0) rotate(-5deg) scale(.99)}43%{transform:translate3d(0,-12px,0) rotate(3deg) scale(1.035)}60%{transform:translate3d(0,-2px,0) rotate(-3deg) scale(1)}76%{transform:translate3d(0,-9px,0) rotate(4deg) scale(1.02)}}
@keyframes mascot-trail{0%,100%{opacity:.3;transform:translateX(-3px) scale(.72) rotate(0)}50%{opacity:1;transform:translateX(5px) scale(1.08) rotate(90deg)}}
@media(min-width:801px){.hero{min-height:700px}}
@media(max-width:800px){.search-card{bottom:140px}.mascot-runway{--mascot-size:168px;--runway-edge:0px;left:16px;bottom:214px;width:calc(100% - 32px);height:var(--mascot-size);transform:none}.mascot-runway .mascot-bubble,.mascot-runway .mascot-bubble.is-speaking{display:none}.mascot-path{animation-duration:10.5s}.mascot-path:after{right:3%;bottom:11%;font-size:15px}}
@media(prefers-reduced-motion:reduce){.mascot-path{left:50%;transform:translateX(-50%);animation:none}.hero .mascot-runway .mascot-art,.mascot-path:after{animation:none}}

/* Un petit avion traverse le lagon en tirant la bannière Kaikau. */
.sky-tow{position:absolute;left:0;top:13px;z-index:5;display:flex;align-items:center;width:max-content;pointer-events:none;will-change:transform;filter:drop-shadow(0 7px 8px rgba(0,21,31,.38));animation:sky-tow-flight 19s 1.8s linear 1 both}.sky-tow.is-complete{display:none}.sky-banner{position:relative;display:grid;align-content:center;width:150px;height:43px;padding:4px 12px 4px 23px;clip-path:polygon(8% 50%,0 0,100% 7%,100% 93%,0 100%);background:linear-gradient(105deg,#fff9e9 0%,#fff 62%,#ffedb7 100%);border-right:3px solid #ff5965;color:#07333e;text-align:center;transform-origin:right center;animation:sky-banner-wave 1.15s ease-in-out infinite}.sky-banner:after{content:"✿";position:absolute;right:7px;top:4px;color:#ffd52e;font:10px "DM Sans",sans-serif}.sky-banner b{font:21px/1 Pacifico,cursive;color:#ff4d5a;text-shadow:0 1px 0 #fff}.sky-banner small{margin-top:2px;font-size:7px;font-weight:900;letter-spacing:.55px;text-transform:uppercase}.tow-rope{display:block;width:39px;height:1px;margin-left:-1px;background:rgba(241,250,247,.84);box-shadow:0 1px 2px rgba(0,0,0,.4);transform:rotate(-5deg);transform-origin:left}.sky-plane{display:grid;place-items:center;width:42px;height:38px;margin-left:-1px;color:#f8ffff;font:34px/1 "Arial Unicode MS","Segoe UI Symbol",sans-serif;text-shadow:0 1px 0 #1a5d6b,0 0 7px rgba(100,241,239,.75);transform:rotate(5deg)}
@keyframes sky-tow-flight{0%{opacity:0;transform:translate3d(-255px,6px,0)}4%{opacity:1}36%{transform:translate3d(34vw,16px,0)}68%{transform:translate3d(70vw,3px,0)}95%{opacity:1}100%{opacity:0;transform:translate3d(calc(100vw + 255px),-7px,0)}}
@keyframes sky-banner-wave{0%,100%{transform:skewY(-1.5deg) scaleY(.98)}50%{transform:skewY(1.8deg) scaleY(1.03)}}
@media(max-width:800px){.sky-tow{top:8px;animation-duration:15s}.sky-banner{width:116px;height:35px;padding-left:18px}.sky-banner b{font-size:17px}.sky-banner small{font-size:5.5px}.tow-rope{width:27px}.sky-plane{width:32px;height:30px;font-size:26px}}
@media(prefers-reduced-motion:reduce){.sky-tow{display:none}}
