/* Responsive layout loaded after app.css so these rules always win. */
html,body{min-width:280px;min-height:100%;overscroll-behavior:none}
body{min-height:100vh;min-height:100dvh}
button,.button,input{touch-action:manipulation}
button,.button{min-height:40px}
button.is-loading{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:wait;opacity:.78}button.is-loading::before{content:'';width:15px;height:15px;flex:0 0 15px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:button-spinner .65s linear infinite}@keyframes button-spinner{to{transform:rotate(360deg)}}
.topbar{height:auto;min-height:76px;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}
.topbar>div{min-width:0}.topbar h1{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.topbar nav{justify-content:flex-end}
.layout{height:calc(100vh - 76px);height:calc(100dvh - 76px);grid-template-columns:minmax(0,1fr) clamp(360px,28vw,440px)}
.panel{padding:clamp(18px,2vw,28px);padding-bottom:max(24px,env(safe-area-inset-bottom))}
.stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.stats strong{overflow-wrap:anywhere}
.actions>button,.actions>.button{flex:1 1 145px;text-align:center}
.maplibregl-ctrl-top-right{top:8px;right:8px}
dialog{max-height:calc(100vh - 28px);max-height:calc(100dvh - 28px);overflow:auto}
.address-search{position:absolute;z-index:4;top:14px;left:14px;display:grid;grid-template-columns:20px minmax(140px,1fr) auto;align-items:center;gap:8px;width:min(540px,calc(100% - 90px));padding:7px 8px 7px 13px;border:1px solid #315064;border-radius:18px;background:#07131eee;box-shadow:0 8px 28px #0007;backdrop-filter:blur(10px)}
.address-search>svg{width:19px;height:19px;fill:var(--muted)}.address-search input{min-width:0;height:38px;border:0;outline:0;background:transparent;color:var(--text);font:inherit}.address-search input::placeholder{color:#91a9b8}.address-search>button{min-height:38px;padding:7px 13px;background:var(--accent);border-color:var(--accent);color:#172033;font-weight:700}.address-results{position:absolute;top:calc(100% + 8px);right:0;left:0;display:none;max-height:min(380px,55vh);overflow:auto;padding:6px;border:1px solid #315064;border-radius:16px;background:#0a2030;box-shadow:0 16px 40px #000a}.address-results.show{display:grid}.address-result{display:grid;grid-template-columns:24px 1fr;gap:7px;width:100%;border:0;border-radius:11px;padding:10px;text-align:left;line-height:1.35}.address-result:hover,.address-result:focus{background:#173b50;outline:0}.search-status{margin:0;padding:12px;color:var(--muted)}.search-marker{width:24px;height:24px;border:4px solid white;border-radius:50%;background:var(--accent);box-shadow:0 0 0 5px #f5a80033,0 3px 10px #0008}.map-tools{top:76px}

@media (min-width:1400px){
  body{font-size:15px}.topbar{padding-left:30px;padding-right:30px}.panel{padding:30px}.panel h2{font-size:27px}.address-search{top:20px;left:20px}.map-tools{top:82px;left:20px}
}

@media (min-width:801px) and (max-width:1100px){
  .layout{grid-template-columns:minmax(0,1fr) 350px}.panel{padding:18px}.topbar{padding:10px 14px}.topbar nav{gap:6px}.topbar nav button{padding-inline:11px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats div:last-child{grid-column:1/-1}.map-tools{max-width:420px}
}

@media (max-width:800px){
  html,body{overflow:auto;overscroll-behavior-y:auto}
  .topbar{position:relative;z-index:5;min-height:0;padding:10px max(12px,env(safe-area-inset-right)) 10px max(12px,env(safe-area-inset-left));gap:10px}
  .topbar small{letter-spacing:.22em}.topbar h1{font-size:16px;margin:2px 0}.topbar nav{flex-shrink:0}
  .topbar nav button{min-height:42px;padding:8px 11px}
  .layout{display:block;height:auto;min-height:0}
  .map-wrap{height:clamp(350px,55dvh,540px);min-height:350px}
  .panel{position:static;width:100%;max-height:none;overflow:visible;padding:22px max(16px,env(safe-area-inset-right)) max(30px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));border-top:1px solid #294557}
  .panel h2{margin-bottom:18px}
  .address-search{top:10px;left:10px;right:58px;width:auto}.map-tools{top:72px;left:10px;right:58px;max-width:none;flex-wrap:nowrap;overflow-x:auto;padding:7px;border-radius:16px;scrollbar-width:none}
  .map-tools::-webkit-scrollbar{display:none}.map-tools button{flex:0 0 auto;min-height:42px;white-space:nowrap}
  .maplibregl-ctrl-top-right{top:8px;right:7px}.maplibregl-ctrl-group button{min-height:29px}
  .hint{display:block;right:10px;bottom:34px;left:10px;margin:0;text-align:center;font-size:12px;pointer-events:none}
  .choice-row button{min-height:44px}.options label{min-height:44px;align-items:center}
  .segment-card .checks{display:grid;gap:12px}.segment-card .checks label{min-height:32px}
  dialog{width:min(94vw,460px);min-width:0;margin:auto}
}

@media (max-width:560px){
  .topbar{display:grid;grid-template-columns:1fr}.topbar>div{text-align:center}.topbar nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .topbar nav button{width:100%;padding-inline:8px}.topbar #account-button{grid-column:1/-1}
  .map-wrap{height:52dvh;min-height:330px;max-height:460px}.address-search{grid-template-columns:18px minmax(80px,1fr) auto;gap:5px;padding-left:10px}.address-search>button{padding-inline:10px}.address-search input{font-size:16px}
  .panel{padding-top:18px}.panel .eyebrow{margin-top:0}.panel h2{font-size:22px}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stats div:last-child{grid-column:1/-1}
  .actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.actions>button,.actions>.button{display:grid;place-items:center;min-width:0;min-height:46px;padding:8px}
  .auth-dialog{width:calc(100vw - 20px);padding:22px 18px;border-radius:22px}.auth-tabs{margin-bottom:22px}.auth-tabs button{font-size:13px;padding-inline:5px}.auth-form input{font-size:16px}.dialog-close{top:10px;right:10px}
  #context-dialog,#trips-dialog{width:calc(100vw - 20px);padding:20px}.context-grid{grid-template-columns:1fr}
}

@media (max-width:350px){
  .topbar nav{grid-template-columns:1fr}.topbar #account-button{grid-column:auto}.address-search{right:50px}.address-search>button{font-size:0;width:38px;padding:0}.address-search>button::after{content:'→';font-size:18px}.map-tools{right:50px}.map-tools button{padding-inline:10px}.stats,.actions{grid-template-columns:1fr}.stats div:last-child{grid-column:auto}.auth-tabs{grid-template-columns:1fr}.panel{padding-inline:12px}
}

/* Short landscape screens keep the map and editor side by side. */
@media (orientation:landscape) and (max-height:600px) and (min-width:700px){
  html,body{overflow:hidden}.topbar{min-height:58px;padding-block:7px}.topbar small{display:none}.topbar h1{margin:0}.layout{display:grid;height:calc(100dvh - 58px);grid-template-columns:minmax(0,1fr) min(380px,42vw)}.map-wrap{height:auto;min-height:0}.panel{position:static;max-height:none;height:100%;overflow:auto;padding:15px}.panel .eyebrow{display:none}.panel h2{margin:0 0 12px;font-size:20px}.panel section{margin:12px 0}.hint{display:none}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.maplibregl-canvas{scroll-behavior:auto!important}
}

/* Barre d'actions compacte, y compris sur mobile. */
.actions.icon-actions{display:grid;grid-template-columns:repeat(6,minmax(38px,1fr))}
.actions.icon-actions>button,.actions.icon-actions>.button{min-height:46px;padding:8px}
@media(max-width:800px){.layer-switcher{top:48px;right:7px;flex-direction:column}.layer-switcher .layer-menu{top:0;right:48px}}

/* Recherche et raccourcis de carte intégrés dans l'en-tête. */
.topbar{height:138px;display:grid;grid-template-columns:230px minmax(0,1fr);grid-template-rows:72px 46px;align-items:center;gap:4px 18px;padding-block:8px}.topbar>.header-map-menu{grid-column:1/-1;grid-row:2;min-width:0;display:grid;grid-template-columns:minmax(280px,1fr) auto;align-items:center;gap:10px}.topbar .main-nav{grid-column:2;grid-row:1;display:flex;justify-content:flex-end;min-width:0;overflow-x:auto;scrollbar-width:none}.topbar .main-nav::-webkit-scrollbar{display:none}.header-map-menu .address-search{position:relative;inset:auto;width:100%;max-width:none;z-index:9}.header-map-menu .map-tools{position:static;z-index:auto;display:flex;flex-wrap:nowrap;max-width:none;padding:6px;background:#07131e}.header-map-menu .map-tools button{flex:0 0 auto;min-height:40px;white-space:nowrap}.header-map-menu .map-tools svg{width:17px;height:17px;fill:currentColor}.layout{height:calc(100vh - 138px);height:calc(100dvh - 138px)}
@media(max-width:1100px){.topbar{grid-template-columns:190px minmax(0,1fr)}.topbar>.header-map-menu{grid-template-columns:minmax(240px,1fr) minmax(0,auto)}.header-map-menu .map-tools{overflow-x:auto;max-width:430px;scrollbar-width:none}.header-map-menu .map-tools::-webkit-scrollbar{display:none}.header-map-menu .map-tools button{padding-inline:10px}}
@media(max-width:800px){.topbar{display:grid;height:auto;grid-template-columns:1fr;grid-template-rows:auto;gap:8px;padding:10px 12px}.topbar>div:first-child{grid-column:1;grid-row:1;text-align:center}.topbar .main-nav{grid-column:1;grid-row:2;justify-content:center}.topbar>.header-map-menu{grid-column:1;grid-row:3;grid-template-columns:1fr}.header-map-menu .address-search{right:auto;left:auto;top:auto}.header-map-menu .map-tools{max-width:100%;overflow-x:auto;justify-content:flex-start}.layout{height:auto}.map-wrap .hint{display:none}}
@media(max-width:560px){.header-map-menu .address-search{grid-template-columns:18px minmax(80px,1fr) auto}.header-map-menu .address-search>button{font-size:0;width:40px;padding:0}.header-map-menu .address-search>button::after{content:'→';font-size:18px}.header-map-menu .map-tools{padding:5px}.header-map-menu .map-tools button{min-height:38px;padding-inline:9px}}
@media(max-width:560px){#context-dialog{width:calc(100vw - 20px);padding:22px 16px}.context-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.context-actions{grid-template-columns:repeat(3,minmax(0,1fr))}}
#context-dialog .context-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0}
@media(max-width:600px){.help-dialog{width:calc(100vw - 12px);height:calc(100dvh - 12px);max-height:none;padding:22px 13px;border-radius:18px}.help-heading>span{flex-basis:43px;width:43px;height:43px}.help-heading h2{font-size:19px}.help-heading small{font-size:11px}.help-search{margin-top:16px}.help-sections{height:calc(100% - 130px)}.help-sections summary{padding-inline:10px}.help-content{padding:3px 13px 14px}}
@media(max-width:800px){.map-interaction-hint{display:grid;right:10px;bottom:10px;left:10px;max-width:none;padding-block:8px}.map-interaction-hint>span{width:30px;height:30px}.map-interaction-hint small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}
@media(max-width:600px){.mail-settings-dialog{width:calc(100vw - 14px);padding:22px 14px}.mail-settings-grid{grid-template-columns:1fr 1fr}.mail-settings-grid label:nth-child(1),.mail-settings-grid label:nth-child(n+4){grid-column:1/-1}.mail-settings-form footer{display:grid;grid-template-columns:1fr 1fr}}
.poi-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 14px 14px}.poi-card-actions button{min-height:42px;padding:9px 11px;border-radius:22px;font-size:12px;font-weight:800}.poi-card-google{border-color:#597083;background:#172f40;color:#dcecff}.poi-card-google:hover{background:#21445d}.poi-card-actions .poi-card-primary{margin:0;border-color:#83adf1;background:#83adf1;color:#101a27;text-align:center}.poi-card-actions .poi-card-primary:hover{background:#a6c5f7}@media(max-width:420px){.poi-card-actions{grid-template-columns:1fr}}
.avatar-editor{position:relative;overflow:visible}.avatar-editor #profile-avatar{display:grid;place-items:center;width:100%;height:100%;overflow:hidden;border-radius:50%}.avatar-editor #profile-avatar img{width:100%;height:100%;object-fit:cover}.avatar-edit-icon{position:absolute;right:-4px;bottom:-3px;display:grid;place-items:center;width:25px;height:25px;border:2px solid #0a2030;border-radius:50%;background:#2997ff;color:#fff;box-shadow:0 4px 12px #0008;font-size:13px;font-weight:900;transition:transform .15s,background .15s}.avatar-editor:hover .avatar-edit-icon,.avatar-editor:focus-within .avatar-edit-icon{background:#56adff;transform:scale(1.08)}
.help-content h4{margin:17px 0 7px;color:#eef7fc;font-size:13px}.help-content ol{margin:9px 0;padding-left:21px}.help-content ol li+li{margin-top:7px}.help-content .help-intro{margin:10px 0 14px;color:#dceaf2;font-size:13px;line-height:1.65}.help-tip,.help-warning{padding:10px 12px;border-left:3px solid #2997ff;border-radius:4px 10px 10px 4px;background:#0d2a3d}.help-warning{border-left-color:#fb7185;background:#41182455}
.poi-google-dialog{position:relative;width:min(1050px,calc(100vw - 28px));max-width:1050px;height:min(820px,calc(100dvh - 28px));max-height:none;padding:0;overflow:hidden;border:1px solid #31566f;border-radius:22px;background:#071824;box-shadow:0 28px 90px #000c}.poi-google-dialog::backdrop{background:#020b13c9;backdrop-filter:blur(5px)}.poi-google-dialog>header{height:78px;display:flex;align-items:center;gap:12px;padding:12px 62px 12px 18px;border-bottom:1px solid #29495c;background:#0b2537}.poi-google-dialog>header>span{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;background:#2997ff22;font-size:22px}.poi-google-dialog h2,.poi-google-dialog p{margin:0}.poi-google-dialog h2{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:19px}.poi-google-dialog p{margin-top:4px;overflow:hidden;color:#91a9b8;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.poi-google-frame-wrap{position:relative;height:calc(100% - 78px);background:#e7edf2}.poi-google-loading{position:absolute;inset:0;display:grid;place-items:center;color:#315064;font-weight:700}.poi-google-dialog iframe{position:relative;width:100%;height:100%;border:0;background:#fff}@media(max-width:600px){.poi-google-dialog{width:calc(100vw - 10px);height:calc(100dvh - 10px);border-radius:16px}.poi-google-dialog>header{height:70px;padding-left:12px}.poi-google-frame-wrap{height:calc(100% - 70px)}.poi-google-dialog>header>span{width:38px;height:38px}.poi-google-dialog h2{font-size:16px}}
.help-sections summary{grid-template-columns:38px minmax(0,1fr)}.help-sections summary::after{display:none!important}
