/* Conciergerie : carte plein écran, commandes flottantes, panneaux qui montent du bas (style appli iPhone). */
:root{
  --bg:#f6f3ee; --surface:#ffffff; --surface-2:#f6f3ee; --ink:#1c1c1e; --muted:#6e6a63; --line:#ebe5db; --soft-fill:#ebe5db;
  --amber:#c5860e; --amber-ink:#8a5a00; --amber-soft:#fbf0d9; /* ambre : les moments réussis (v176) */
  --accent:#0066cc; --accent-fill:#0066cc; --accent-ink:#ffffff; --accent-soft:#e6f1ff;
  --granite:#e5484d; --granite-ink:#c0282d; --granite-fill:#c0282d; --granite-soft:#ffecec; --brand:#1f5f6b; --warn:#f5a524; --ok:#30a46c;
  --note:#fff8e1; --me:#0a84ff; --shadow:0 8px 28px rgba(0,0,0,.14), 0 1px 3px rgba(0,0,0,.08);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --r:16px; color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#000000; --surface:#1c1c1e; --surface-2:#2c2c2e; --ink:#f2f2f7; --muted:#98989f; --line:#38383a; --soft-fill:#2c2c2e;
  --amber:#e0a43a; --amber-ink:#f2bd5c; --amber-soft:#33260c;
  --accent:#3d9bff; --accent-fill:#0070e0; --accent-soft:#0a2a4d; --granite:#ff6369; --granite-ink:#ff6369; --granite-fill:#d7353b; --granite-soft:#3b1a1c; --brand:#5fb3c1;
  --note:#2c2614; --shadow:0 8px 28px rgba(0,0,0,.5); color-scheme:dark}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}
[hidden]{display:none!important}
h1,h2,h3{margin:0;line-height:1.2;letter-spacing:-.01em}
h1{font-size:1.6rem;font-weight:800}
h2{font-size:1.4rem;font-weight:800}
h3{font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:6px 4px -4px}
p{margin:0}
.muted{color:var(--muted)}
.small{font-size:.88rem}
.hint{font-size:.85rem;color:var(--muted);margin-top:-4px}
.err{color:var(--granite-ink);font-size:.9rem}
.ok{color:var(--ok);font-size:.9rem}
.i{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* boutons */
.btn{font:600 1rem var(--font);border:0;border-radius:14px;padding:12px 16px;min-height:46px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent-fill);color:var(--accent-ink)}
.btn.big{width:100%;min-height:52px;font-size:1.05rem}
.btn.soft{background:var(--soft-fill);color:var(--ink)} /* gris visible sur le fond gris comme dans un groupe blanc (avant : la couleur du fond, on ne voyait que le texte) */
.btn.ghost{background:transparent;color:var(--accent);min-height:40px}
.btn.light{background:#fff;color:var(--accent);min-height:36px;padding:6px 12px;font-size:.92rem}
.btn.danger{background:var(--granite-fill);color:#fff}
.btn.danger-t{color:var(--granite-ink)}
.btn:disabled{opacity:.45}
.round{width:46px;height:46px;border-radius:50%;border:0;background:var(--surface);color:var(--ink);display:grid;place-items:center;cursor:pointer;box-shadow:var(--shadow);font:700 .95rem var(--font);padding:0}
.round.sm{width:32px;height:32px;background:var(--surface-2);box-shadow:none;color:var(--muted)}
.round.sm .i{width:16px;height:16px;stroke-width:2.5}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}

/* champs */
input,textarea,select{font:inherit;font-size:16px;color:var(--ink);background:var(--surface-2);border:1.5px solid transparent;border-radius:12px;padding:12px 14px;width:100%;transition:border-color .15s,background .15s}
input:focus,textarea:focus{outline:0;border-color:var(--accent);background:var(--surface)}
/* cases à cocher : jamais la marge intérieure des champs de saisie (elle élargissait les pastilles rondes en ovale, 32 × 28) */
input[type=checkbox],input[type=radio]{padding:0;box-sizing:border-box}
textarea{min-height:90px;resize:vertical}
label{display:flex;flex-direction:column;gap:6px;font-size:.85rem;font-weight:600;color:var(--muted)}
form{display:flex;flex-direction:column;gap:12px}
.actions{display:flex;gap:8px;justify-content:flex-end}

/* connexion */
.screen{height:100%;display:grid;place-items:center;padding:20px;background:radial-gradient(120% 70% at 50% 0%,#cfe6ff 0%,var(--bg) 60%)}
@media (prefers-color-scheme:dark){.screen{background:radial-gradient(120% 70% at 50% 0%,#0a2a4d 0%,var(--bg) 60%)}}
.card{width:100%;max-width:400px;background:var(--surface);border-radius:24px;padding:28px 22px;display:flex;flex-direction:column;gap:18px;box-shadow:var(--shadow)}
.card h1+p{margin-top:4px}
.logo{width:56px;height:56px;border-radius:16px;background:var(--accent-fill);color:#fff;display:grid;place-items:center}
.logo .i{width:30px;height:30px}

/* segment */
.seg{display:grid;grid-template-columns:1fr 1fr;background:var(--soft-fill);border-radius:12px;padding:3px;gap:3px}
.tab{font:600 .92rem var(--font);border:0;border-radius:10px;padding:9px 6px;background:transparent;color:var(--ink);cursor:pointer}
.tab[aria-selected="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.12)}
.tab .n:not(:empty){display:inline-block;min-width:20px;padding:0 6px;margin-left:4px;border-radius:99px;background:var(--line);color:var(--ink);font-size:.75rem;line-height:20px}

/* appli */
.app{position:relative;height:100%}
#map{position:absolute;inset:0}
.leaflet-container{font-family:var(--font);background:#efefec}
.leaflet-control-zoom{display:none}
@media (hover:hover){.leaflet-control-zoom{display:block;margin-bottom:96px!important;border:0!important;box-shadow:var(--shadow)!important;border-radius:12px!important;overflow:hidden}}
.leaflet-control-attribution{font-size:9px;background:rgba(255,255,255,.6)!important}
.top-right{position:absolute;z-index:1000;top:calc(12px + env(safe-area-inset-top,0px));right:14px;background:var(--accent-fill);color:#fff;font-size:1rem}
.fab{position:absolute;z-index:999;right:14px;bottom:calc(92px + env(safe-area-inset-bottom,0px));color:var(--accent)}
.fab.on{background:var(--accent-fill);color:#fff}
.fab.on .i{fill:currentColor}
.pill{position:absolute;z-index:1000;left:14px;right:14px;bottom:calc(16px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;gap:12px;background:var(--surface);color:var(--muted);border:0;border-radius:18px;padding:0 16px;height:60px;box-shadow:var(--shadow);font:600 1.08rem var(--font);cursor:pointer;text-align:left}
.pill .i{color:var(--ink);width:22px;height:22px}
.pill-t{flex:1}
.pill-n{font-size:.82rem;font-weight:600;color:var(--muted);background:var(--surface-2);border-radius:99px;padding:4px 10px}
.pill-n:empty{display:none}

/* navigation */
.nav{position:absolute;z-index:1001;left:10px;right:10px;top:calc(8px + env(safe-area-inset-top,0px));background:#1d6f42;color:#fff;border-radius:20px;padding:14px 16px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow)}
.nav-ico{width:48px;height:48px;border-radius:12px;background:rgba(255,255,255,.16);display:grid;place-items:center;flex:none}
.nav-ico .i{width:30px;height:30px;stroke-width:2.5}
.nav-main{display:flex;flex-direction:column;min-width:0}
.nav-step{font-size:1.2rem;font-weight:700;line-height:1.25}
.nav-meta{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.nav-meta:empty{display:none}
.navbar{position:absolute;z-index:1001;left:0;right:0;bottom:0;background:var(--surface);border-radius:22px 22px 0 0;padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:var(--shadow);font-weight:600}
.app:has(#navBar:not([hidden])) .pill{display:none}
.app:has(#navBar:not([hidden])) .fab{bottom:calc(90px + env(safe-area-inset-bottom,0px))}
.app:has(#nav:not([hidden])) .top-right{display:none}
.hintbar{position:absolute;z-index:1001;left:10px;right:10px;top:calc(10px + env(safe-area-inset-top,0px));background:var(--accent-fill);color:#fff;border-radius:16px;padding:12px 14px;display:flex;align-items:center;gap:10px;font-weight:600;box-shadow:var(--shadow)}
.hintbar span{flex:1}

/* panneaux */
.sheet{position:absolute;z-index:1002;left:0;right:0;bottom:0;max-height:78%;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--surface);border-radius:24px 24px 0 0;box-shadow:0 -10px 40px rgba(0,0,0,.18);padding:6px 18px calc(22px + env(safe-area-inset-bottom,0px))}
.grab{width:38px;height:5px;border-radius:5px;background:var(--line);margin:4px auto 12px}
.stack{display:flex;flex-direction:column;gap:16px;max-width:560px;margin:0 auto}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.head h2{word-break:break-word}
.head p{margin-top:3px}

/* fiche logement */
.go{width:100%;min-height:56px;font-size:1.1rem;border-radius:16px}
.go .i{width:22px;height:22px}
.go-d{font-weight:500;opacity:.85}
.go-d:not(:empty)::before{content:"· "}
.fact{display:flex;gap:12px;align-items:flex-start;background:var(--accent-soft);border-radius:14px;padding:12px 14px}
.fact .i{color:var(--accent);margin-top:2px}
.fact b{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--accent)}
.pane{display:flex;flex-direction:column;gap:12px}
.cons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;background:var(--surface-2);border-radius:14px;overflow:hidden}
.con{display:flex;align-items:flex-start;gap:12px;padding:12px 14px}
.con+.con{border-top:1px solid var(--line)}
.con .dot{width:10px;height:10px;border-radius:50%;margin-top:7px;flex:none;background:var(--muted)}
.con .txt{flex:1;min-width:0}
.con .cat{display:block;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.con.important{background:var(--granite-soft)}
.dot.important{background:var(--granite)} .dot.menage{background:var(--accent)} .dot.linge{background:var(--warn)} .dot.acces{background:var(--ok)} .dot.info{background:var(--muted)}
.con .x{border:0;background:none;color:var(--muted);font:600 .85rem var(--font);padding:4px;cursor:pointer;min-width:28px}
.empty{color:var(--muted);text-align:center;padding:18px 10px;background:var(--surface-2);border-radius:14px;font-size:.95rem}
.cats{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.cats::-webkit-scrollbar{display:none}
.cats button{flex:none;font:600 .85rem var(--font);border:0;background:var(--soft-fill);color:var(--ink);border-radius:99px;padding:7px 13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.cats button .dot{width:8px;height:8px;border-radius:50%}
.cats button[aria-checked="true"]{background:var(--ink);color:var(--surface)}
.composer{gap:10px}
.send{display:flex;gap:8px;align-items:center}
.send-b{width:46px;height:46px;flex:none;background:var(--accent-fill);color:#fff;box-shadow:none}
.notes{display:flex;flex-direction:column;gap:12px}
.note{display:flex;gap:10px;align-items:flex-start}
.note .bub{flex:1;min-width:0;background:var(--note);border-radius:4px 16px 16px 16px;padding:10px 14px}
.note .by{font-size:.8rem;color:var(--muted);display:flex;justify-content:space-between;gap:8px;align-items:center;margin-bottom:2px}
.note .by b{color:var(--ink)}
.note p{white-space:pre-wrap}
.note .del{border:0;background:none;color:var(--muted);font:600 .8rem var(--font);cursor:pointer;padding:0}
.avatar{width:34px;height:34px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-weight:700;font-size:.85rem}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:8px;border-top:1px solid var(--line);padding-top:16px}
.duo .btn{font-size:.92rem;padding:10px}

/* liste */
.searchbox{flex-direction:row;align-items:center;gap:8px;background:var(--surface-2);border-radius:12px;padding:0 12px;color:var(--muted)}
.searchbox input{background:transparent;border:0;padding:12px 0}
.searchbox input:focus{background:transparent}
.list{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:12px;padding:12px 2px;border:0;border-bottom:1px solid var(--line);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer;width:100%}
.row:last-child{border-bottom:0}
.row .ic{width:40px;height:40px;border-radius:12px;background:var(--granite-soft);color:var(--granite-ink);display:grid;place-items:center;flex:none}
.row .tx{flex:1;min-width:0}
.row .n{font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .c{color:var(--muted);font-size:.88rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .m{font-size:.85rem;color:var(--muted);white-space:nowrap;text-align:right}
.row .m b{display:block;color:var(--ink);font-weight:600}
.row select{width:auto;padding:8px 10px;font-size:.9rem}
.suggest{list-style:none;margin:-6px 0 0;padding:4px;border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}
.suggest li{padding:10px 12px;border-radius:8px;cursor:pointer}
.suggest li:hover,.suggest li:focus{background:var(--surface-2)}

/* menu */
.me{display:flex;align-items:center;gap:14px;background:var(--surface-2);border-radius:16px;padding:14px}
.me .avatar{width:48px;height:48px;font-size:1.1rem;background:var(--accent-fill);color:#fff}
.chip{display:inline-block;margin-top:4px;font-size:.75rem;font-weight:700;padding:2px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent)}
.group{display:flex;flex-direction:column;gap:12px}
.card-in{background:var(--surface-2);border-radius:14px;padding:12px 14px}
.card-in input{background:var(--surface)}
.card-in .row{border-color:var(--line)}

/* repères */
.pin{display:block;width:30px;height:38px}
.pin svg{display:block;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3))}
.pin.sel svg{transform:scale(1.3);transform-origin:50% 100%}
.me-dot{width:20px;height:20px;border-radius:50%;background:var(--me);border:3px solid #fff;box-shadow:0 0 0 8px rgba(10,132,255,.22),0 2px 6px rgba(0,0,0,.3)}
.leaflet-div-icon{background:none;border:0}
.toast{position:fixed;z-index:2000;left:50%;bottom:calc(92px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:rgba(28,28,30,.92);color:#fff;padding:12px 18px;border-radius:14px;font-weight:600;font-size:.95rem;max-width:90vw;text-align:center;backdrop-filter:blur(8px)}
.stack .stack{max-width:none;margin:0}

/* conciergerie, minuteur, heures */
.chipbtn{position:absolute;z-index:1000;display:inline-flex;align-items:center;gap:8px;border:0;border-radius:99px;background:var(--surface);color:var(--ink);padding:0 16px;height:46px;font:600 .95rem var(--font);box-shadow:var(--shadow);cursor:pointer}
.chipbtn .i{color:var(--accent)}
.top-left{top:calc(12px + env(safe-area-inset-top,0px));left:14px}
.timer{top:calc(68px + env(safe-area-inset-top,0px));left:14px;background:var(--ok);color:#fff}
.timer .i{color:#fff}
.app:has(#nav:not([hidden])) .top-left,.app:has(#navBar:not([hidden])) .top-left,.app:has(#placeHint:not([hidden])) .top-left{display:none}
.app:has(#nav:not([hidden])) .timer{top:calc(110px + env(safe-area-inset-top,0px))}
.seg3{grid-template-columns:repeat(3,1fr)}
.seg3 .tab{padding:9px 2px;font-size:.85rem}
.totaux{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px}
.totaux>div{background:var(--surface-2);border-radius:14px;padding:12px;text-align:center}
.totaux b{display:block;font-size:1.2rem;font-variant-numeric:tabular-nums}
.totaux span{font-size:.78rem;color:var(--muted)}
.live{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#e3f6ec;color:#14532d;border-radius:14px;padding:12px 14px}
@media (prefers-color-scheme:dark){.live{background:#12301f;color:#bdf0d1}}
.live span{display:block;font-size:.88rem;opacity:.85}
.prow .m b{font-variant-numeric:tabular-nums}
.periode{display:flex;align-items:center;justify-content:space-between;gap:12px}
.periode b{font-size:1rem}
.periode .round.sm{font-size:1.3rem;line-height:1}
.periode .round:disabled{opacity:.3}
.duo2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 14px) 50%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:34px}
.row select{background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%}

.grow{flex:1;min-width:0}

/* écrans modaux (heures) : sobres, presque sans couleur */
.modal{position:fixed;inset:0;z-index:3000;background:var(--bg);display:flex;flex-direction:column}
.mbar{flex:none;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;background:var(--surface);border-bottom:1px solid var(--line)}
.mbar>b{font-size:1rem;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56vw}
.mbar .tx{border:0;background:none;font:inherit;font-size:1rem;color:var(--accent);padding:8px 0;cursor:pointer;justify-self:start}
.mbar .tx:last-child{justify-self:end}
.mbar .tx.strong{font-weight:600}
.mbody{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px calc(28px + env(safe-area-inset-bottom,0px));width:100%;max-width:560px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.mbody form{display:flex;flex-direction:column;gap:14px}
.mbody h3{margin:6px 16px -8px}
.sub{color:var(--muted);font-size:.9rem;text-align:center;margin-top:-4px}
.periode{display:flex;align-items:center;justify-content:space-between}
.periode b{font-size:1.15rem;font-weight:700}
.periode .arrow{border:0;background:none;color:var(--ink);font-size:2rem;line-height:1;width:44px;height:44px;cursor:pointer}
.periode .arrow:disabled{opacity:.25}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);text-align:center;padding:4px 0 2px}
.kpis>div+div{border-left:1px solid var(--line)}
.kpis b{display:block;font-size:1.35rem;font-weight:700;font-variant-numeric:tabular-nums}
.kpis span{font-size:.78rem;color:var(--muted)}
.btn.dark{background:var(--ink);color:var(--surface);border:0}
.lnk{border:0;background:none;font:inherit;font-size:.95rem;color:var(--accent);padding:10px;cursor:pointer;text-align:center}
.lnk.danger-t{color:var(--granite-ink)}
.foot{display:flex;justify-content:center;gap:24px}
.grp{background:var(--surface);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.ln{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:6px 16px;position:relative}
.ln+.ln,.ln+.lnk{border-top:1px solid var(--line)}
.ln>span:first-child{flex:none;font-size:1rem}
.ln input,.ln select{flex:1;min-width:0;width:auto;border:0;background:transparent;box-shadow:none;border-radius:0;padding:8px 0;text-align:right;font:inherit;font-size:1.05rem;font-variant-numeric:tabular-nums;color:var(--ink);outline:0}
.ln select{background-image:none;padding-right:0;direction:rtl}
.ln input[type=time],.ln input[type=date]{max-width:9rem}
.ln .nowb{flex:none;border:0;background:none;color:var(--muted);font:inherit;font-size:.85rem;padding:8px 0 8px 6px;cursor:pointer}
.ln .total{font-size:1.25rem;font-variant-numeric:tabular-nums}
.stepper{display:flex;align-items:center;gap:4px;flex:1;justify-content:flex-end}
.stepper button{flex:none;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);font:500 1.4rem var(--font);line-height:1;cursor:pointer}
.stepper input{flex:none;width:5rem;text-align:center;font-size:1.15rem}
.grp .save{border-top:1px solid var(--line)}

.days{background:var(--surface);border-radius:12px;overflow:hidden}
.wk{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 16px;background:var(--bg);font-size:.76rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.wk b{font-weight:600;font-variant-numeric:tabular-nums;text-transform:none;letter-spacing:0}
.day{display:flex;align-items:center;gap:14px;width:100%;border:0;border-top:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;text-align:left;padding:10px 16px;min-height:56px;cursor:pointer}
.wk+.day{border-top:0}
.day.we:not(.ok){color:var(--muted)}
.dn{display:flex;flex-direction:column;align-items:center;width:34px;line-height:1.05}
.dn b{font-size:1.2rem;font-weight:600}
.dn i{font-style:normal;font-size:.7rem;text-transform:uppercase;color:var(--muted)}
.day.today .dn b{color:var(--accent)}
.dt{flex:1;min-width:0;display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}
.dt>span{line-height:1.3}
.dt .ph{color:var(--muted);font-size:.9rem}
.dt em{font-style:normal;font-size:.72rem;color:var(--muted)}
.dm{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2;font-variant-numeric:tabular-nums}
.dm b{font-size:1rem;font-weight:600}
.dm i{font-style:normal;font-size:.8rem;color:var(--muted)}
#dayPassWrap{display:flex;flex-direction:column;gap:10px}
#dayPassWrap .list{background:var(--surface);border-radius:12px;overflow:hidden}
#dayPassWrap .row{padding:12px 16px}#dayPassWrap .row:last-child{border-bottom:0}
.stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper input{-moz-appearance:textfield}
label.ln{flex-direction:row;align-items:center;gap:12px;font-size:1rem;font-weight:400;color:var(--ink)}
label.ln>span{color:var(--ink);font-size:1rem;font-weight:400}
label.ln input,label.ln select{margin:0;padding:8px 0;border:0;background:transparent;box-shadow:none;border-radius:0;text-align:right}
/* un menu dans une ligne montre qu'il se touche : petit chevron haut / bas après la valeur, comme les menus de l'iPhone */
.ln select:not([multiple]),label.ln select:not([multiple]){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 16'%3E%3Cpath d='M2 6l3-3 3 3M2 10l3 3 3-3' fill='none' stroke='%238e8e93' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right center;background-size:10px 16px;padding-right:18px}
input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none}

/* photos, loueur, statut */
.thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.thumbs:empty{display:none}
.th{width:64px;height:64px;object-fit:cover;border-radius:10px;background:var(--surface-2);cursor:zoom-in;display:block}
.thw{position:relative}.thw .th{cursor:default}
.thx{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border-radius:50%;border:0;background:var(--ink);color:var(--surface);font-size:.7rem;cursor:pointer;line-height:1}
.photobtn{display:inline-flex;flex-direction:row;align-items:center;gap:8px;align-self:flex-start;color:var(--accent);font-size:.95rem;font-weight:500;cursor:pointer;padding:6px 0}
.lightbox{position:fixed;inset:0;z-index:4000;background:rgba(0,0,0,.88);display:grid;place-items:center;padding:16px}
.lightbox img{max-width:100%;max-height:100%;border-radius:8px}
.fact a{color:inherit;font-weight:600}
.trow{border-bottom:1px solid var(--line);padding-bottom:8px}.trow .row{border-bottom:0}
.stl{flex-direction:row;align-items:center;justify-content:space-between;font-weight:500;font-size:.85rem;padding:0 2px}
.stl select{width:auto;padding:6px 28px 6px 10px;font-size:.85rem}

/* heures : heures à gauche, quarts d'heure à droite */
.tsel{display:flex;align-items:center;gap:6px;margin-left:auto}
.tsel b{color:var(--muted);font-weight:500}
.ln .tsel select{flex:none;width:auto;direction:ltr;text-align:center;text-align-last:center;font-size:1.25rem;font-weight:600;padding:8px 12px;background:var(--surface-2);border-radius:10px;min-width:3.6rem}
.kmin{font-size:1.25rem!important;font-weight:600}
.unit{color:var(--muted);font-weight:500;margin-left:6px}
.ln .nowb{margin-left:4px}

/* missions */
.mission{top:calc(68px + env(safe-area-inset-top,0px));left:14px;background:var(--warn);color:#1c1c1e}
.mission .i{color:#1c1c1e}
.app:has(#misChip:not([hidden])) .timer{top:calc(122px + env(safe-area-inset-top,0px))}
.app:has(#nav:not([hidden])) .mission,.app:has(#navBar:not([hidden])) .mission,.app:has(#placeHint:not([hidden])) .mission{display:none}
.mis{display:flex;align-items:center;gap:12px;padding:12px 16px}.mis+.mis{border-top:1px solid var(--line)}
.mis .tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}.mis .tx span{font-size:.85rem;color:var(--muted)}.mis .tx em{font-style:normal;font-size:.85rem}
.mis.done .tx b{text-decoration:line-through;color:var(--muted)}
.chk{flex:none;width:30px;height:30px;border-radius:50%;border:2px solid var(--line);background:var(--surface);color:#fff;font-size:1rem;line-height:1;cursor:pointer}
.mis.done .chk{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.go-s{flex:none;border:0;border-radius:99px;background:var(--ink);color:var(--surface);padding:8px 16px;font:600 .9rem var(--font);cursor:pointer}
.mrow .x{border:0;background:none;color:var(--muted);font-size:1rem;padding:8px;cursor:pointer}
.addl{color:var(--accent)}
.ln .addl+select{flex:none;width:7rem;opacity:.0001}
.ln:has(.addl){position:relative}.ln:has(.addl) select{position:absolute;inset:0;width:100%;height:100%;opacity:.0001}
#misBody,#jourBody{display:flex;flex-direction:column;gap:14px}

/* réglages en page, équipe, formulaire logement */
.sheet{padding-bottom:calc(34px + env(safe-area-inset-bottom,0px))}
.me{background:var(--surface);border-radius:12px;padding:16px;gap:14px}
.me>div{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0}
.me b{font-size:1.15rem}.me .chip{margin-top:0}
.ln.nr{width:100%;border:0;background:transparent;color:var(--ink);font:inherit;font-size:1rem;text-align:left;cursor:pointer;gap:12px;justify-content:flex-start;min-height:54px}
.ln.nr+.ln.nr{border-top:1px solid var(--line)}
.ln.nr .ri{flex:none;width:32px;height:32px;border-radius:8px;background:var(--ink);color:var(--surface);display:grid;place-items:center}
.ln.nr .ri .i{width:18px;height:18px}
.ln.nr .rt{flex:1}
.ln.nr .chev{width:18px;height:18px;color:var(--muted);flex:none}
.ln.nr.out .ri{background:var(--granite)}.ln.nr.out .rt{color:var(--granite-ink)}
.badge{flex:none;min-width:22px;height:22px;border-radius:11px;background:var(--granite-fill);color:#fff;font-size:.8rem;font-weight:700;display:grid;place-items:center;padding:0 6px}
.ln.addr{color:var(--muted);font-size:.95rem;min-height:48px;margin:0}
#team{display:flex;flex-direction:column;gap:14px}
.person .who{gap:12px;justify-content:flex-start;min-height:60px}
.person .who .tx{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.person .who .tx i{font-style:normal;font-size:.8rem;color:var(--muted)}
.ln select{background-image:none}
.dz{margin-top:18px;padding:14px}
#houseForm .suggest{margin:-6px 0 0}
.col{display:flex;flex-direction:column;gap:14px}.ln.addr{padding:12px 16px;align-items:center}

.mrow select.dur{width:auto;min-width:88px;margin-left:auto;padding:6px 8px;font-size:.85rem;border:1px solid var(--line);border-radius:8px;background:var(--surface)}

.mdet{display:flex;flex-direction:column;gap:6px;align-items:stretch;padding:0 16px 12px;border-top:0}.mdet input{width:100%;padding:8px 10px;font-size:.85rem;border:1px solid var(--line);border-radius:8px;background:var(--surface)}
.taches{padding:0 16px 12px 52px;display:flex;flex-direction:column;gap:8px}.tk{display:flex;align-items:center;gap:10px;font-size:.92rem;color:var(--ink)}.tk input{width:20px;height:20px;accent-color:var(--ink)}
textarea#fTach{width:100%;border:0;background:none;font:inherit;resize:vertical;padding:6px 0}
.ast{padding:12px 16px;margin-bottom:12px}.ast b{display:block}.ast p{margin:6px 0;white-space:pre-wrap}.ast .muted{font-size:.8rem}#astForm{padding:4px 0 12px;margin-bottom:16px}#astForm .btn{margin:8px 16px 12px;width:calc(100% - 32px)}#aTexte{width:100%;border:0;background:none;font:inherit;resize:vertical;padding:6px 0}
.acc{padding:16px;line-height:1.5}#accTxt{width:100%;border:0;background:none;font:inherit;resize:vertical;padding:6px 0}#accOk{margin-top:16px;width:100%}
.btn.hero{width:100%;flex-direction:column;gap:2px;padding:16px}.btn small{font-weight:400;opacity:.8;font-size:.85rem}#jourHero{margin:4px 0 16px}
.allok{text-align:center;font-weight:600;margin:8px 0}.misrow{width:100%;text-align:left;background:none;border:0;font:inherit;color:inherit}.misrow .tx{flex:1;display:flex;flex-direction:column;line-height:1.3}.misrow .tx span{font-size:.85rem;color:var(--muted)}.misrow.done b{text-decoration:line-through;color:var(--muted)}
.st{font-size:.75rem;font-weight:600;color:var(--muted);margin-right:6px}.st.run{color:var(--warn)}.st.ok{color:var(--ink)}
.detact{display:flex;flex-direction:column;gap:10px;margin-top:8px}.finish{display:flex;flex-direction:column;gap:12px;padding-top:24px}
#detBody .acc b{font-weight:600}#detBody ul.cons{list-style:none;padding:0;margin:0}

html,body{touch-action:manipulation;-webkit-text-size-adjust:100%}button,a,.ln,summary{touch-action:manipulation}
.person summary{list-style:none;cursor:pointer}.person summary::-webkit-details-marker{display:none}.person summary .chev{width:18px;height:18px;color:var(--muted);flex:none;transition:transform .2s}.person[open] summary .chev{transform:rotate(90deg)}.person[open] summary{border-bottom:1px solid var(--line)}.person .who .tx b i{font-weight:400;color:var(--muted)}
.acchead{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding:8px 8px 4px}.acchead b{font-size:1.4rem;letter-spacing:-.02em}.acchead p{margin:0;color:var(--muted);font-size:.95rem}.shield{width:52px;height:52px;border-radius:16px;background:var(--ink);color:var(--surface);display:grid;place-items:center}.shield .i{width:28px;height:28px}
ol.rules{list-style:none;margin:0;padding:0;background:var(--surface);border-radius:12px;overflow:hidden}.rules li{display:flex;gap:14px;align-items:flex-start;padding:14px 16px;line-height:1.4;font-size:1rem}.rules li+li{border-top:1px solid var(--line)}.rules .n{flex:none;width:24px;height:24px;border-radius:50%;background:var(--ink);color:var(--surface);display:grid;place-items:center;font-size:.8rem;font-weight:700;margin-top:1px}.rules li.none{color:var(--muted);justify-content:center}
.ln.fld{flex-direction:column;align-items:stretch;justify-content:center;gap:2px;padding:10px 16px}.ln.fld>span{font-size:.75rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.ln.fld input,.ln.fld textarea{text-align:left;padding:2px 0;width:100%;min-height:28px;font-size:1.05rem}.ln.fld textarea{border:0;background:none;font:inherit;resize:vertical;outline:0}
#houseForm .btn.dark{position:sticky;bottom:0}

/* ============ Refonte : matières translucides, pages en feuille, appui immédiat ============ */
/* Le mouvement des pages (ressorts, glisser pour fermer) est piloté dans app.js. */
:root{
  --glass:rgba(255,255,255,.74); --bar:rgba(250,248,244,.78); --sheet:rgba(255,255,255,.86); --sheet-hi:rgba(255,255,255,.96);
  --hair:rgba(70,55,30,.16); --press:rgba(120,100,70,.14); --scrim:rgba(0,0,0,.32);
  --blur:saturate(180%) blur(22px); --blur-lg:saturate(180%) blur(30px); --bar-h:54px;
}
@media (prefers-color-scheme:dark){:root{
  --glass:rgba(44,44,46,.72); --bar:rgba(28,28,30,.74); --sheet:rgba(28,28,30,.86); --sheet-hi:rgba(28,28,30,.96);
  --hair:rgba(255,255,255,.16); --press:rgba(120,120,128,.3); --scrim:rgba(0,0,0,.5)}}

/* typographie : plus le titre est gros, plus il est serré */
h1{font-size:1.75rem;line-height:1.08;letter-spacing:-.032em}
h2{font-size:1.5rem;line-height:1.12;letter-spacing:-.026em}
.acchead b{font-size:1.6rem;line-height:1.1;letter-spacing:-.03em}
.kpis b{font-size:1.4rem;line-height:1.15;letter-spacing:-.025em}
.nav-meta{letter-spacing:-.03em}.nav-step{letter-spacing:-.015em}
.periode b,.totaux b,.ln .total,.me b{letter-spacing:-.02em}
.mbar>b,.btn.big,.go,.pill,.btn.hero,.linge b{letter-spacing:-.01em}

/* commandes flottantes sur la carte : verre clair, contenu visible dessous */
.round,.chipbtn,.pill{background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:.5px solid var(--hair)}
.top-right,.fab.on,.send-b{background:var(--accent);border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.timer{background:var(--ok);border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.mission{background:var(--warn);border-color:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.round.sm{position:relative;background:var(--press);border:0;-webkit-backdrop-filter:none;backdrop-filter:none}
.round.sm::after{content:"";position:absolute;inset:-6px}
.navbar{background:var(--bar);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);border-top:.5px solid var(--hair)}
.toast{z-index:9000;background:rgba(40,40,42,.84);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur)}
.lightbox{z-index:9500}

/* panneaux du bas : surface épaisse, la carte reste lisible derrière */
.sheet{background:var(--sheet-hi);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);border-radius:28px 28px 0 0;border-top:.5px solid var(--hair);overscroll-behavior:none;will-change:transform;box-shadow:0 -10px 40px rgba(0,0,0,.18),0 80px 0 0 var(--surface)}
.grab{width:36px;background:var(--hair);margin:6px auto 12px}
.sheet .searchbox,.sheet .seg,.sheet .cons,.sheet .empty,.sheet .btn.soft{background:var(--press)}
.row{border-bottom:.5px solid var(--hair);padding:12px 8px;margin:0 -8px;width:calc(100% + 16px)}
.mrow select.dur{direction:ltr;text-align:right}

/* pages : feuille qui monte du bas, barre translucide, voile derrière */
.scrim{position:fixed;inset:0;background:var(--scrim);will-change:opacity}
.modal{top:calc(10px + env(safe-area-inset-top,0px));border-radius:16px 16px 0 0;overflow:hidden;will-change:transform;box-shadow:0 -8px 40px rgba(0,0,0,.22),0 80px 0 0 var(--bg)}
.mbar{position:absolute;z-index:2;top:0;left:0;right:0;height:var(--bar-h);padding:8px 16px 0;background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:.5px solid var(--hair);touch-action:none;user-select:none;-webkit-user-select:none}
.mbar::before{content:"";position:absolute;top:6px;left:50%;width:36px;height:5px;margin-left:-18px;border-radius:3px;background:var(--hair)}
.mbar .tx{min-height:44px;padding:8px 2px}
.mbody{padding-top:calc(var(--bar-h) + 16px);overscroll-behavior:none}
.grp,.days,ol.rules,#dayPassWrap .list{border-radius:14px}
.ln+.ln,.ln+.lnk,.ln.nr+.ln.nr,.tstat+.ln,.day,.con+.con,.rules li+li,.mis+.mis{border-top-width:.5px}

/* appui : immédiat au contact (classe posée dès pointerdown), retour souple au relâchement */
button,a,summary,.photobtn,.tk{transition:transform .34s cubic-bezier(.2,.9,.3,1),background-color .3s ease,opacity .3s ease,filter .3s ease}
.pressed{transition-duration:0s!important}
.btn.pressed,.round.pressed,.chipbtn.pressed,.pill.pressed,.go-s.pressed,.chk.pressed,.cats button.pressed,.stp button.pressed,.stepper button.pressed{transform:scale(.96);filter:brightness(.9)}
.row.pressed,.day.pressed,.ln.nr.pressed,summary.pressed,.suggest li.pressed,.tab.pressed:not([aria-selected="true"]),.tk.pressed{background-color:var(--press)}
.tx.pressed,.lnk.pressed,.nowb.pressed,.arrow.pressed,.x.pressed,.del.pressed,.photobtn.pressed,.thx.pressed{opacity:.35}
.tab{transition:background-color .25s ease,color .25s ease,box-shadow .25s ease}
.con .x,.mrow .x{min-width:44px;min-height:44px}

/* linge : sacs par mission et total de la journée */
.grp.linge{flex-direction:row;align-items:center;gap:12px;padding:14px 16px}
.linge .ri{flex:none;width:38px;height:38px;border-radius:10px;background:var(--warn);color:#1c1c1e;display:grid;place-items:center}
.linge>div{display:flex;flex-direction:column;line-height:1.3;min-width:0}
.linge>div span{font-size:.88rem;color:var(--muted)}
.sacs{display:flex;flex-wrap:wrap;gap:8px 16px}
.sac{flex:1;min-width:136px;display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.9rem;color:var(--muted)}
.stp{display:inline-flex;align-items:center;background:var(--soft-fill);border-radius:10px;overflow:hidden}
.stp button{width:44px;height:40px;border:0;background:none;color:var(--ink);font:500 1.3rem var(--font);line-height:1;cursor:pointer}
.stp button:disabled{opacity:.3}
.stp b{min-width:24px;text-align:center;font-size:1rem;font-variant-numeric:tabular-nums;color:var(--ink)}
.mbody h3{line-height:1.35}

/* taux horaire et import */
.hint.est{margin:-6px 16px 0;font-variant-numeric:tabular-nums}.hint.est:empty{display:none}
.sub b{color:var(--ink);font-weight:600}
#impRes p+p{margin-top:10px}#impRes p{overflow-wrap:anywhere}
.sheet .duo2 .btn{min-height:50px}

/* préférences du système */
@media (prefers-reduced-transparency:reduce){:root{--glass:var(--surface);--bar:var(--surface);--sheet:var(--surface);--sheet-hi:var(--surface);--blur:none;--blur-lg:none}
  .toast{background:#1c1c1e}}
@media (prefers-contrast:more){:root{--glass:var(--surface);--bar:var(--surface);--sheet:var(--surface);--sheet-hi:var(--surface);--blur:none;--blur-lg:none;--hair:var(--ink);--line:#8e8e93;--muted:#3a3a3c;--scrim:rgba(0,0,0,.6)}
  .round,.chipbtn,.pill,.sheet,.modal,.grp,.days,.card,.btn.soft,.stp{border:1.5px solid var(--ink)}
  .toast{background:#000;border:1.5px solid #fff}}
@media (prefers-contrast:more) and (prefers-color-scheme:dark){:root{--muted:#d1d1d6;--line:#aeaeb2}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}
  .pressed{transform:none!important}}

#dayPassWrap .row{margin:0;width:100%;border-radius:0}

.picks{display:flex;flex-wrap:wrap;gap:8px}.pickbtn{border:1.5px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;font-size:.95rem;padding:8px 14px;border-radius:999px;cursor:pointer}.pickbtn.on{background:var(--ink);border-color:var(--ink);color:var(--surface)}
.pickbtn.model{display:inline-flex;gap:6px;padding:0 4px 0 0;overflow:hidden}.pickbtn.model>button{border:0;background:none;font:inherit;color:inherit;padding:8px 6px 8px 14px;cursor:pointer}.pickbtn.model>button.x{padding:8px 10px 8px 4px;color:var(--muted)}
#asgHouses .ln{cursor:pointer}#asgHouses .tx{flex:1;display:flex;flex-direction:column;line-height:1.3}#asgHouses .tx span{font-size:.85rem;color:var(--muted)}#asgHouses input[type=checkbox]{flex:none;width:22px;height:22px;accent-color:var(--ink)}
#asgGo{position:sticky;bottom:0}#asgGo:disabled{opacity:.4}
.addrow .rt{color:var(--accent);font-weight:500}

.grp.alert{background:var(--ink);color:var(--surface);border:0;font:inherit;text-align:left;padding:14px 16px;cursor:pointer;gap:2px}.grp.alert span{opacity:.75;font-size:.85rem}
.hmp .tx{flex:1;display:flex;flex-direction:column;line-height:1.3}.hmp .tx span{font-size:.85rem;color:var(--muted)}

/* accueil : cartes plates en grille, ardoise / jaune du logo, grande typographie */
.home{position:fixed;inset:0;z-index:1500;background:var(--bg);overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;--ease:cubic-bezier(.2,.9,.3,1);--hk:#2b2e32;--hy:#F7C531}
.hm{max-width:560px;margin:0 auto;padding:calc(20px + env(safe-area-inset-top,0px)) 16px calc(48px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:12px}
.hprev{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:env(safe-area-inset-top,0px) 4px 0 16px;background:var(--hk);color:#fff;font-size:.9375rem;letter-spacing:-.01em}
.hprev span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hprev button{flex:none;min-height:44px;padding:0 12px;border:0;background:none;color:var(--hy);font:inherit;font-weight:600;cursor:pointer}
.hh{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:0 4px 8px}
.hh>div{min-width:0}
.hh p{font-size:.9375rem;line-height:1.35;color:var(--muted);letter-spacing:-.01em}
/* essai gratuit : une ligne discrète sous l'en-tête de l'accueil du patron */
.essl{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 4px;font-size:.8125rem;line-height:1.35;color:var(--muted)}
.essl b{font-weight:600;color:var(--ink);text-align:right}
.hh h1{margin-top:2px;font-size:2.125rem;font-weight:700;line-height:1.2;letter-spacing:-.022em;overflow-wrap:anywhere}
.home .hav{flex:none;width:36px;height:36px;border:0;border-radius:50%;background:var(--hk);color:var(--hy);display:grid;place-items:center;font:600 .8125rem/1 var(--font)}
#hmMe{position:relative;margin-bottom:3px;cursor:pointer}#hmMe::after{content:"";position:absolute;inset:-4px}
.home button{font:inherit;color:inherit;text-align:left;border:0;cursor:pointer;transition:transform .5s var(--ease),opacity .35s ease}
.bh{display:flex;flex-direction:column;gap:6px;width:100%;padding:22px 22px 20px;border-radius:24px;line-height:1.25}
.bh.ink{background:var(--hk);color:#fff}.bh.yel{background:var(--hy);color:#1a1c1f}
.bk{font-size:.8125rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;opacity:.65}
.bt1{font-size:1.75rem;font-weight:700;letter-spacing:-.025em;line-height:1.15;overflow-wrap:anywhere}
.big{font-size:4.5rem;font-weight:700;letter-spacing:-.04em;line-height:1;font-variant-numeric:tabular-nums}
.big em,.bn em{font-style:normal;font-weight:600;opacity:.45}.big em{font-size:1.75rem;letter-spacing:-.02em}
.bs{font-size:1rem;letter-spacing:-.01em;opacity:.8}.bs.dim{opacity:.55;font-size:.9375rem}
.bh .hbar{margin-top:10px;background:rgba(255,255,255,.16)}.bh .hbar i{background:var(--hy)}
.bw{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:16px 20px;border-radius:18px;background:var(--hy);color:#1a1c1f;font-size:1.0625rem;letter-spacing:-.02em}.bw .chev{width:16px;height:16px;stroke-width:2.5}
.b2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bt{display:flex;flex-direction:column;justify-content:space-between;gap:24px;min-height:124px;padding:18px;border-radius:22px;background:var(--surface);color:var(--ink)}
.bt .i{width:26px;height:26px;stroke-width:1.7}
.bb{display:flex;flex-direction:column;gap:2px}
.bn{font-size:2.5rem;font-weight:700;letter-spacing:-.035em;line-height:1;font-variant-numeric:tabular-nums}.bn em{font-size:1.25rem}
.bl{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em}
.bt small,.pc small{font-size:.875rem;color:var(--muted);letter-spacing:-.01em;line-height:1.3}
.bt.stat{gap:10px;justify-content:flex-start}.bt.stat .bl{font-size:.9375rem;font-weight:500;color:var(--muted)}.bt.stat .hbar{margin-top:auto}
.hbar{display:block;height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.hbar i{display:block;height:100%;border-radius:3px;background:var(--hy);transition:transform .7s var(--ease)}
.bt.stat .hbar i{background:var(--hk)}
.home h3{margin:12px 4px 0;font-size:.8125rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--muted)}
.pscroll{display:flex;gap:12px;overflow-x:auto;margin:0 -16px;padding:0 16px;scroll-snap-type:x proximity;scrollbar-width:none;-webkit-overflow-scrolling:touch}.pscroll::-webkit-scrollbar{display:none}
.pc{flex:none;scroll-snap-align:start;display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:150px;min-height:150px;padding:16px;border-radius:22px;background:var(--surface);color:var(--ink)}
.pc .pn{font-size:2rem;font-weight:700;letter-spacing:-.03em;line-height:1;margin-bottom:auto;font-variant-numeric:tabular-nums}.pc .pn .i{width:28px;height:28px;stroke-width:2.2}
.pc .hav{margin-bottom:auto}
.pt{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pc.done{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line)}.pc.done .pt{color:var(--muted)}
.pc.add{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line)}.pc.add .pn{color:var(--muted)}
.pf{position:absolute;right:16px;top:16px;font-size:.9375rem;color:var(--muted);font-variant-numeric:tabular-nums}.pc{position:relative}
.home button:active,.home button.pressed{transform:scale(.97);opacity:.88}
.home button:focus-visible{outline:2px solid var(--hy);outline-offset:2px}
@supports (transition-timing-function:linear(0,1)){.home{--ease:linear(0,.228,.537,.751,.874,.939,.971,.987,.994,.997,1)}}
@media (prefers-reduced-motion:reduce){.home button:active,.home button.pressed{transform:none}}
@media (prefers-contrast:more){.bt,.pc{box-shadow:inset 0 0 0 1.5px var(--ink)}}
.searchbar{display:flex;align-items:center;gap:8px;background:var(--surface);border-radius:12px;padding:0 12px;height:44px}.searchbar .i{width:18px;height:18px;color:var(--muted)}.searchbar input{flex:1;border:0;background:none;font:inherit;font-size:1rem;outline:0;min-width:0}

label.searchbar{flex-direction:row;align-items:center;gap:8px;font-size:1rem;color:var(--ink)}
.phead{display:flex;align-items:center;gap:12px;margin:8px 4px -4px}.phead .avatar{width:40px;height:40px}.phead .tx{flex:1;display:flex;flex-direction:column;line-height:1.25}.phead .tx b{font-size:1.1rem}.phead .tx span{font-size:.85rem;color:var(--muted)}
.pickbtn.who{display:inline-flex;align-items:center;gap:8px;padding:6px 16px 6px 6px;font-weight:600}.pickbtn.who .avatar{width:30px;height:30px;font-size:.75rem}.pickbtn.who.on .avatar{background:rgba(255,255,255,.2);color:var(--surface)}
#asgHouses input[type=checkbox]{appearance:none;-webkit-appearance:none;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line);background:transparent;display:grid;place-items:center;transition:background .15s,border-color .15s}
#asgHouses input[type=checkbox]:checked{background:var(--ink);border-color:var(--ink)}#asgHouses input[type=checkbox]:checked::after{content:"";width:6px;height:11px;border:solid var(--surface);border-width:0 2.5px 2.5px 0;transform:rotate(45deg) translate(-1px,-1px)}

/* accueil : mini-carte et verre, comme la vue carte */
.mini{position:relative;height:210px;border-radius:24px;overflow:hidden;background:var(--surface-2);isolation:isolate}
.minimap{position:absolute;inset:0;pointer-events:none;z-index:0}
.minimap .leaflet-control-attribution{display:none}
.glass{position:absolute;z-index:500;bottom:12px;display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 14px;border-radius:18px;background:var(--glass,rgba(255,255,255,.78));-webkit-backdrop-filter:var(--blur,blur(20px) saturate(1.8));backdrop-filter:var(--blur,blur(20px) saturate(1.8));color:var(--ink);font-size:.9375rem;font-weight:600;letter-spacing:-.02em;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.glass.lab{left:12px}.glass.go2{right:12px;border:0;cursor:pointer}.glass .chev{width:14px;height:14px;stroke-width:2.5}
.hh{position:sticky;top:0;z-index:5;margin:calc(-20px - env(safe-area-inset-top,0px)) -16px 0;padding:calc(20px + env(safe-area-inset-top,0px)) 20px 10px;background:var(--bar,var(--bg));-webkit-backdrop-filter:var(--blur,none);backdrop-filter:var(--blur,none)}
.hprev+.hm .hh{margin-top:-20px;padding-top:20px;top:44px}
.bt,.pc{box-shadow:0 1px 2px rgba(0,0,0,.05)}
.bt{border-radius:20px}.pc{border-radius:20px}.bh{border-radius:22px}

/* accueil v3 : même langage que la carte (bleu d'accent, verre, relief) ; tout ce qui s'ouvre porte une flèche */
.home{--hy:#6cb4ff}
.bh{box-shadow:0 8px 24px rgba(0,0,0,.14),0 1px 3px rgba(0,0,0,.1)}
button.bh{display:flex;width:100%}
.bh .cta{margin-top:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:14px 18px;border-radius:14px;background:var(--accent-fill);color:#fff;font-size:1.0625rem;font-weight:600;letter-spacing:-.02em}
.bh .cta .chev{width:16px;height:16px;stroke-width:2.5;color:#fff}
.bh .hbar i{background:#fff}
.bw{background:var(--accent-fill);color:#fff;box-shadow:0 4px 14px rgba(10,132,255,.3)}
.bt{position:relative;box-shadow:0 2px 10px rgba(0,0,0,.07),0 0 0 .5px var(--hair,rgba(0,0,0,.08))}
.bt .tic{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--accent-soft);color:var(--accent)}.bt .tic .i{width:22px;height:22px}
.bt .tg{position:absolute;top:18px;right:16px;width:16px;height:16px;stroke-width:2.5;color:var(--muted);opacity:.6}
.bt.stat{box-shadow:0 2px 10px rgba(0,0,0,.07)}
.bt.stat .hbar i{background:var(--accent)}
.hcard{background:var(--surface);border-radius:20px;overflow:hidden;box-shadow:0 2px 10px rgba(0,0,0,.07),0 0 0 .5px var(--hair,rgba(0,0,0,.08))}
.hrw{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:10px 16px;background:none;color:var(--ink)}
.hrw+.hrw::before{content:"";position:absolute;top:0;left:60px;right:0;height:.5px;background:var(--line)}
.rt2{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.rt2 b{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rt2 small{font-size:.875rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hrw .chev{flex:none;width:14px;height:14px;stroke-width:2.5;color:var(--muted);opacity:.55}
.hrw .hav{flex:none;width:36px;height:36px;font-size:.8125rem}
.hnum{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-weight:700;font-variant-numeric:tabular-nums}.hnum .i{width:18px;height:18px;stroke-width:2.6}
.hnum.plus{font-size:1.5rem;font-weight:500}
.hrw.done .hnum{background:var(--amber-soft);color:var(--amber-ink)}.hrw.done .rt2 b{color:var(--muted)}
.hrw.act .rt2 b{color:var(--accent)}
.hcnt{flex:none;color:var(--muted);font-variant-numeric:tabular-nums}
.htag{flex:none;font-style:normal;font-size:.8125rem;font-weight:600;color:var(--accent);background:var(--accent-soft);padding:3px 8px;border-radius:8px}
.hrw.pressed,.hrw:active{background:var(--surface-2)}
.b2>.bt:last-child:nth-child(odd){grid-column:span 2;min-height:96px;flex-direction:row;align-items:center;justify-content:flex-start;gap:14px}.b2>.bt:last-child:nth-child(odd) .bb{margin-left:0}

#navOk{display:none}
.navbar.arr{flex-direction:column;align-items:stretch;gap:10px;text-align:center}.navbar.arr #navStop{display:none}
.navbar.arr #navOk{display:block;width:100%;min-height:64px;border:0;border-radius:18px;background:#1d6f42;color:#fff;font:inherit;font-size:1.3rem;font-weight:700;letter-spacing:-.02em;cursor:pointer}
.navbar.arr #navOk:active{transform:scale(.98)}

/* accueil v4 : transition, barre d'onglets en verre, bouton d'attribution, note vocale */
.home{opacity:0;transform:scale(1.025);transition:opacity .38s cubic-bezier(.2,.7,.2,1),transform .38s cubic-bezier(.2,.7,.2,1)}
.home.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.home{transition:opacity .2s;transform:none}}
.hm{padding-bottom:calc(112px + env(safe-area-inset-bottom,0px))}
button.mini{display:block;width:100%;height:240px;padding:0;border:0;text-align:left;box-shadow:0 8px 24px rgba(0,0,0,.14),0 1px 3px rgba(0,0,0,.1)}
.glass.lab{max-width:calc(100% - 130px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:36px}
.glass.go2{pointer-events:none}
.dock{position:fixed;z-index:6;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom,0px));max-width:536px;margin:0 auto;display:flex;padding:6px 4px;border-radius:26px;background:var(--glass);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);box-shadow:0 8px 28px rgba(0,0,0,.18),0 0 0 .5px var(--hair)}
.home .dk{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0;border-radius:18px;background:none;font-size:.6875rem;font-weight:500;letter-spacing:-.01em;text-align:center;color:var(--ink)}
.dki{position:relative;display:grid;place-items:center;width:30px;height:30px;color:var(--accent)}.dki .i{width:25px;height:25px;stroke-width:1.7}
.home .dk:active{background:var(--surface-2)}
.home .bbtn{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:64px;padding:0 22px;border-radius:20px;background:var(--accent-fill);color:#fff;font-size:1.1875rem;font-weight:600;letter-spacing:-.02em;box-shadow:0 6px 18px rgba(10,132,255,.35)}
.bbtn .i{width:26px;height:26px;stroke-width:2.2}
.hmsg{padding:16px 18px;border-radius:20px;background:var(--accent-soft)}
.hmsg .bk{color:var(--accent);opacity:1}
.hmsg p{margin:6px 0 10px;font-size:1.0625rem;line-height:1.35;letter-spacing:-.01em}
.home .hmsg .mact{display:flex;gap:8px;flex-wrap:wrap}.hmsg .mb{height:36px;padding:0 16px;border-radius:12px;border:0;background:var(--bg-alt,rgba(10,132,255,.14));color:var(--accent);font:600 .9375rem var(--font);display:inline-flex;align-items:center;text-decoration:none;cursor:pointer}.hmsg .mb.pri{background:var(--accent-fill);color:#fff}.hmsg.canc{background:var(--granite-soft)}.hmsg.canc .bk{color:var(--granite-ink)}
.undo{position:fixed;z-index:4000;left:12px;right:12px;bottom:calc(96px + env(safe-area-inset-bottom,0px));max-width:420px;margin:0 auto;border-radius:18px;overflow:hidden;background:var(--ink);color:var(--bg);box-shadow:0 10px 30px rgba(0,0,0,.3);transform:translateY(140%);opacity:0;transition:transform .45s cubic-bezier(.2,.9,.3,1),opacity .25s;pointer-events:none}
.undo.show{transform:none;opacity:1;pointer-events:auto}
.undo .ub{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 12px;font-size:1rem}
.undo button{border:0;background:none;color:#6cb6ff;font:inherit;font-weight:700;padding:6px 4px;cursor:pointer}
.undo i{display:block;height:3px;background:#6cb6ff;transform-origin:0 50%}
#voiceBtn{bottom:calc(150px + env(safe-area-inset-bottom,0px))}
.app:has(#nav:not([hidden])) #voiceBtn,.app:has(#navBar:not([hidden])) #voiceBtn{display:none}
.vc{display:flex;flex-direction:column;gap:16px}
.vcm{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 0 4px}.vcm[hidden]{display:none}
#vcMic{width:96px;height:96px;border:0;border-radius:50%;background:var(--accent-fill);color:#fff;display:grid;place-items:center;cursor:pointer;box-shadow:0 8px 22px rgba(10,132,255,.4);transition:transform .3s}
#vcMic .i{width:40px;height:40px;stroke-width:1.8}
#vcMic.rec{background:#e5484d;box-shadow:0 0 0 0 rgba(229,72,77,.5);animation:vcp 1.4s infinite}
@keyframes vcp{70%{box-shadow:0 0 0 22px rgba(229,72,77,0)}100%{box-shadow:0 0 0 0 rgba(229,72,77,0)}}
#vcMic:active{transform:scale(.94)}
#vcState{color:var(--muted);font-size:.9375rem}
#vcTxt{width:100%;border:0;border-radius:16px;background:var(--surface);color:var(--ink);font:inherit;font-size:1.0625rem;line-height:1.4;padding:14px 16px;resize:none;outline:0}
#asgSheet .mbody{display:flex;flex-direction:column;gap:12px}#asgSheet h3{margin:8px 4px 0}
#asgHouses{background:var(--surface);border-radius:20px;overflow:hidden}
#asgGo{position:sticky;bottom:0;min-height:56px;border-radius:18px;font-size:1.0625rem;box-shadow:0 8px 22px rgba(0,0,0,.2)}
.home .bw{color:#fff}

/* barre d'onglets façon iOS : pleine largeur, verre, filet fin, icônes alignées */
.dock{left:0;right:0;bottom:0;max-width:none;margin:0;padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));border-radius:0;box-shadow:none;border-top:.5px solid var(--hair);background:var(--bar);justify-content:space-around}
.home .dk{flex:0 1 96px;gap:2px;padding:4px 0;font-size:.625rem;font-weight:500;letter-spacing:.01em;color:var(--muted);border-radius:12px}
.dki{width:28px;height:28px;color:var(--ink)}.dki .i{width:24px;height:24px;stroke-width:1.5}
.home .dk:active{background:none;opacity:.5}
/* pied de page (v183) : barre flottante vitrée, icônes nues à l'encre (plus de pastilles bleues), libellés gris ; à l'appui l'icône rétrécit et devient bleue */
.dock{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom,0px));max-width:520px;margin:0 auto;padding:8px 6px 7px;border-radius:30px;border:0;background:var(--glass);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);box-shadow:0 0 0 .5px var(--hair);justify-content:space-between}
.home .dk{flex:1;gap:2px;padding:2px 0;font-size:.625rem;font-weight:500;letter-spacing:.01em;color:var(--muted);-webkit-tap-highlight-color:transparent}
.dki{width:44px;height:32px;border-radius:0;background:none;color:var(--muted);transition:color .18s}.dki .i{width:26px;height:26px;stroke-width:1.5}
/* pied de page (v187, « comme celui de MyLife ») : trait fin gris, filet net autour de la barre, et à l'appui une pastille neutre (gris, jamais bleu) derrière l'icône et le libellé ; le libellé ne déborde jamais de son bouton */
.dock{box-shadow:0 0 0 1px var(--line)}
.home .dk{padding:6px 0 5px;border-radius:16px;transition:background .18s}
.home .dk>span:last-child{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home .dk:active{opacity:1;background:var(--soft-fill)}.home .dk:active .dki{color:var(--ink)}
@media (prefers-reduced-motion:reduce){.dki,.home .dk{transition:none}}
.hm{padding-bottom:calc(96px + env(safe-area-inset-bottom,0px))}
.undo{bottom:calc(84px + env(safe-area-inset-bottom,0px))}
/* un message pendant la barre « Annuler » : il passe au-dessus d'elle au lieu de la recouvrir */
body:has(.undo.show) .toast{bottom:calc(158px + env(safe-area-inset-bottom,0px))}
/* pastille de navigation façon Dynamic Island */
#navPill{position:fixed;z-index:2500;top:calc(8px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);width:min(calc(100% - 24px),420px);display:flex;align-items:center;gap:12px;padding:10px 16px 10px 14px;border:0;border-radius:26px;background:#000;color:#fff;text-align:left;font:inherit;box-shadow:0 8px 24px rgba(0,0,0,.35);cursor:pointer}
#navPill[hidden]{display:none}
#navPill .npd{flex:none;width:10px;height:10px;border-radius:50%;background:#30d158;box-shadow:0 0 0 0 rgba(48,209,88,.6);animation:npp 1.8s infinite}
@keyframes npp{70%{box-shadow:0 0 0 9px rgba(48,209,88,0)}100%{box-shadow:0 0 0 0 rgba(48,209,88,0)}}
#navPill .npt{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
#navPill b{font-size:.9375rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#navPill small{font-size:.8125rem;color:#aeaeb2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#navPill .chev{flex:none;width:14px;height:14px;stroke-width:2.5;opacity:.6}
.hprev{top:0}.app:has(#navPill:not([hidden])) .hh{padding-top:56px}

/* plus sobre : pas de halos ni de lueurs, relief minimal */
.bh,.bt,.bt.stat,.hcard,button.mini,.bw,.home .bbtn,.glass,.undo,#navPill,#vcMic,#vcMic.rec,.hav,#asgGo{box-shadow:none}
.bt,.hcard,.pc{box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
.glass{box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
#vcMic.rec,#navPill .npd{animation:none}
.me-dot{box-shadow:0 1px 3px rgba(0,0,0,.35)}
.rcd{margin:0;color:var(--muted);font-size:.9375rem}.rch{margin:2px 0 16px;font-size:2rem;font-weight:700;letter-spacing:-.022em}
.rcs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border-radius:18px;overflow:hidden;margin-bottom:8px}
.rcs>div{background:var(--surface);padding:14px 8px;text-align:center;display:flex;flex-direction:column;gap:2px}
.rcs b{font-size:1.5rem;font-weight:700;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.rcs span{font-size:.8125rem;color:var(--muted)}
#recapSheet h3{margin:20px 4px 8px}#rcGo{margin-top:20px;min-height:56px;border-radius:18px;font-size:1.0625rem}

/* carte : une seule rangée de commandes, retour accueil en haut à gauche, boutons ronds en colonne à droite, recherche en bas */
.top-right{display:none}
.mission{top:calc(12px + env(safe-area-inset-top,0px));left:14px;background:var(--glass);color:var(--ink);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:.5px solid var(--hair);padding:0 16px 0 10px}
.mission .i{color:var(--accent);width:22px;height:22px}
.timer,.app:has(#misChip:not([hidden])) .timer{top:calc(66px + env(safe-area-inset-top,0px))}
.rail{position:absolute;z-index:999;right:14px;bottom:calc(92px + env(safe-area-inset-bottom,0px));display:flex;flex-direction:column;gap:10px}
.rail .fab,.rail .chipbtn{position:static}
.rail #voiceBtn[hidden]{display:none}
#baseBtn{width:48px;height:48px;padding:0;justify-content:center;border-radius:50%;color:var(--accent)}
.app:has(#navBar:not([hidden])) .rail{bottom:calc(90px + env(safe-area-inset-bottom,0px))}
.app:has(#navBar:not([hidden])) #baseBtn,.app:has(#placeHint:not([hidden])) .rail{display:none}
.leaflet-control-zoom{display:none}
.vcfor{margin:-4px 4px 0;color:var(--muted);font-size:.9375rem;text-align:center}
/* message mis en forme : ce qui part vraiment, sous le texte dicté */
.vcprev{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:16px;background:var(--accent-soft)}.vcprev[hidden]{display:none}.vcprev small{font-size:.8125rem;font-weight:600;color:var(--accent)}.vcprev p{margin:0;font-size:1rem;line-height:1.4;color:var(--ink)}.vcprev .btn{align-self:flex-start;min-height:36px;padding:0 14px;font-size:.9375rem}

/* accueil : en-tête fixe, plus de rebond de page */
html,body{overscroll-behavior:none}
.home{overscroll-behavior:none}
.hh{position:fixed;top:0;left:0;right:0;z-index:5;margin:0;padding:calc(18px + env(safe-area-inset-top,0px)) 20px 10px;max-width:none}
.hh>div{max-width:560px;margin:0 auto}
.hm{padding-top:calc(92px + env(safe-area-inset-top,0px))}
.hprev{position:fixed;top:0;left:0;right:0;z-index:6;height:calc(44px + env(safe-area-inset-top,0px))}
.home.prev .hh{top:calc(44px + env(safe-area-inset-top,0px));padding-top:12px}
.home.prev .hm{padding-top:calc(136px + env(safe-area-inset-top,0px))}
.hprev+.hm .hh{margin:0}
.hm{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}
.hh{display:block;padding-left:16px;padding-right:16px}.hh>div{padding:0 4px}

/* description du logement, heures et km, bouton conciergerie lisible */
.fld textarea{width:100%;border:0;background:none;font:inherit;font-size:1.0625rem;line-height:1.4;color:var(--ink);resize:none;outline:0;padding:0}
.ln.fld:has(textarea){flex-direction:column;align-items:stretch}
#baseBtn{width:auto;height:46px;padding:0 16px 0 12px;gap:8px;border-radius:99px;justify-content:center}
.rail{align-items:flex-end}
.ln.chk{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;margin-top:12px}
.ln.chk input{width:24px;height:24px;accent-color:var(--accent)}
.hm{padding-top:calc(108px + env(safe-area-inset-top,0px))}
.home.prev .hm{padding-top:calc(148px + env(safe-area-inset-top,0px))}
#hrsSheet .btn,#dayChkSheet .btn{margin-top:20px;min-height:56px;border-radius:18px;font-size:1.0625rem}
#dayChkSheet h3{margin:20px 4px 8px}

/* repères numérotés, fiche logement */
.pin{position:relative}.pnum{position:absolute;top:7px;left:0;right:0;text-align:center;color:#fff;font:700 14px/1 var(--font);font-variant-numeric:tabular-nums}
.acts{display:flex;gap:10px;align-items:stretch}.acts .go{flex:1}
.callb{flex:none;width:52px;height:auto;min-height:52px;display:grid;place-items:center;color:var(--accent);border-radius:16px}
#hFacts.facts{display:flex;flex-direction:column;background:var(--press);border-radius:16px;overflow:hidden}
.fr{display:flex;gap:12px;align-items:flex-start;padding:12px 14px}.fr+.fr{border-top:.5px solid var(--line)}
.fr .i{flex:none;width:22px;height:22px;color:var(--accent);margin-top:1px}
.fr b{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:2px}
.fr span{display:block;font-size:1rem;line-height:1.35;letter-spacing:-.01em}.fr a{color:inherit;font-weight:600}
.con .rk{flex:none;width:24px;height:24px;border-radius:50%;background:var(--surface);display:grid;place-items:center;font-size:.8125rem;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums;margin-top:1px}
.con.important .rk{background:var(--granite-fill);color:#fff}
.cmv{display:flex;gap:0;flex:none;margin:-4px -6px -4px 0}.cmv .x{width:32px;height:32px}.cmv .x:disabled{opacity:.25}
.fr{padding:10px 14px}.fr span{line-height:1.3}

/* roue heures / quarts d'heure */
.wheelbox{display:flex;flex-direction:column;gap:8px}.wlab{font-size:.9375rem;color:var(--muted);padding:0 4px}
.wheel{position:relative;display:flex;justify-content:center;align-items:center;gap:4px;height:200px;background:var(--surface);border-radius:16px;overflow:hidden}
.wband{position:absolute;left:12px;right:12px;top:80px;height:40px;border-radius:10px;background:var(--surface-2);pointer-events:none}
.wcol{position:relative;z-index:1;width:84px;height:200px;overflow-y:scroll;scroll-snap-type:y mandatory;padding:80px 0;scrollbar-width:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.wcol::-webkit-scrollbar{display:none}
.wcol div{height:40px;line-height:40px;text-align:center;scroll-snap-align:center;font-size:1.5rem;font-variant-numeric:tabular-nums;color:var(--ink);cursor:pointer;transition:opacity .15s,transform .15s}
.wcol div[data-d="0"]{font-weight:600}.wcol div[data-d="1"]{opacity:.5;transform:scale(.88)}.wcol div[data-d="2"]{opacity:.28;transform:scale(.78)}.wcol div[data-d="3"]{opacity:.14;transform:scale(.7)}
.wsep{position:relative;z-index:1;font-size:1.0625rem;font-weight:600;width:34px;text-align:left;margin-right:10px}
.wlab{padding:8px 4px 0}#hrsSheet .mbody{display:flex;flex-direction:column;gap:14px}

/* confirmation, aide patron, mission en cours, mode test, tâches */
.dlgb{position:fixed;inset:0;z-index:5000;display:grid;place-items:center;padding:24px;background:rgba(0,0,0,.35);opacity:0;transition:opacity .2s}.dlgb.in{opacity:1}
.dlg{width:100%;max-width:320px;border-radius:20px;background:var(--sheet,var(--surface));-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);overflow:hidden;text-align:center;transform:scale(.94);transition:transform .25s cubic-bezier(.2,.9,.3,1)}.dlgb.in .dlg{transform:none}
.dlg>b{display:block;padding:20px 20px 4px;font-size:1.0625rem;letter-spacing:-.02em}.dlg p{margin:0;padding:0 20px 18px;font-size:.9375rem;color:var(--muted);line-height:1.35}
/* fenêtres : fond plein (le contenu derrière ne se lit plus à travers) ; champ de saisie avec ses marges */
.dlg{background:var(--surface)}
.dlgi{padding:6px 20px 18px}.dlgi input{box-sizing:border-box;min-height:46px;padding:0 12px;border:1px solid var(--line);background:var(--surface-2);text-align:left;font-size:1.0625rem}.dlgi input:focus{border-color:var(--accent)}
.dlga{display:flex;border-top:.5px solid var(--line)}.dlga button{flex:1;min-height:48px;border:0;background:none;font:inherit;font-size:1.0625rem;color:var(--accent);cursor:pointer}.dlga button+button{border-left:.5px solid var(--line)}.dlga .pri{font-weight:600}
.helpc{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:20px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
.helpc .hav{flex:none;width:40px;height:40px}.home .hbtn{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.hbtn .i{width:22px;height:22px}
.ctr{text-align:center}
.runmode .mbody{padding-bottom:110px}
.run .runh{display:flex;flex-direction:column;gap:2px;padding:6px 4px 14px}.run .bk{color:var(--accent);opacity:1}
.run .runc{font-size:3.5rem;font-weight:700;letter-spacing:-.04em;line-height:1.05;font-variant-numeric:tabular-nums}.run .runs{color:var(--muted);font-size:.9375rem}
.run h3{margin:18px 4px 8px}.run .btn.soft{margin-top:8px}
.runn{margin-top:14px}.runn p{margin:0 0 10px;font-size:.9375rem;line-height:1.35}.runn b{display:block;font-size:.8125rem;color:var(--muted);font-weight:600}
.runbar{position:fixed;left:0;right:0;bottom:0;z-index:5;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));background:var(--bar);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);border-top:.5px solid var(--hair)}
.runbar .btn{width:100%;min-height:64px;border-radius:20px;font-size:1.25rem;font-weight:700}
.tbar{display:none}.tbar button{flex:1;min-height:44px;border:0;border-radius:14px;background:var(--soft-fill);color:var(--ink);font:inherit;font-weight:600}
.navbar:has(.tbar:not([hidden])){flex-wrap:wrap}.tbar:not([hidden]){display:flex;gap:8px;width:100%}
.navbar.arr .tbar{display:none!important}
.tkg{padding:0}.tkr{display:flex;align-items:center;gap:12px;padding:11px 14px;border-bottom:.5px solid var(--line)}
.tkn{flex:none;width:24px;height:24px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-size:.8125rem;font-weight:700}
.tkt{flex:1;min-width:0;font-size:1.0625rem}.tkr button{flex:none;width:30px;height:30px;border:0;background:none;color:var(--muted);display:grid;place-items:center}.tkr .i{width:16px;height:16px}
.tkadd{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 14px}.tkadd input{flex:1;border:0;background:none;font:inherit;font-size:1.0625rem;min-height:40px;outline:0;color:var(--ink)}
.tkadd button{flex:none;width:36px;height:36px;border:0;border-radius:50%;background:var(--accent-fill);color:#fff;display:grid;place-items:center}.tkadd .i{width:18px;height:18px;stroke-width:2.4}
.tksug{margin-top:10px}.tksug .pickbtn{font-size:.9rem;padding:6px 12px}
#houseForm .btn.dark{display:none}
.hrsplan{margin:0 4px;color:var(--muted);font-size:.9375rem}

/* annulations et états des repères */
.dlgl{display:flex;flex-direction:column;border-top:.5px solid var(--line)}.dlgl button{min-height:46px;border:0;border-bottom:.5px solid var(--line);background:none;font:inherit;font-size:1.0625rem;color:var(--accent);cursor:pointer}
.hrw.canc,.misrow.canc{opacity:.55}.hrw.canc b,.misrow.canc b{text-decoration:line-through}
.pin.s-off{opacity:.45}.pin.s-cancel{opacity:.8}
.legend{position:fixed;left:12px;top:calc(env(safe-area-inset-top) + 64px);z-index:450;display:flex;flex-wrap:wrap;gap:4px 10px;max-width:calc(100vw - 24px);padding:7px 11px;border-radius:12px;background:var(--glass);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);font-size:.75rem;color:var(--ink)}
.legend[hidden]{display:none}.legend span{display:inline-flex;align-items:center;gap:5px}.legend i{width:9px;height:9px;border-radius:50%;display:inline-block}

.hh{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.hh .hcall{flex:none;width:40px;height:40px;border:0;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:4px;cursor:pointer}
.dayline{margin:2px 4px 0;font-size:.9375rem;color:var(--muted)}
.hh>div{flex:1;margin:0}

/* écran d'une mission avant le départ */
.dv{display:flex;flex-direction:column;gap:14px}
.dph{display:block;width:100%;height:210px;object-fit:cover;border-radius:20px;background:var(--surface-2);cursor:zoom-in}
.dhd{display:flex;flex-direction:column;gap:3px;padding:0 4px}.dhd b{font-size:1.75rem;line-height:1.1;letter-spacing:-.03em}.dhd span{font-size:.9375rem;color:var(--muted)}
.dact{display:flex;flex-direction:column;gap:8px}
.dfacts{display:flex;gap:0;border-radius:16px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
.dfa{flex:1;display:flex;flex-direction:column;align-items:center;gap:1px;padding:12px 6px}.dfa+.dfa{border-left:.5px solid var(--line)}.dfa b{font-size:1.0625rem;letter-spacing:-.02em}.dfa small{font-size:.75rem;color:var(--muted)}
.ddesc{margin:0;padding:0 4px;font-size:.9688rem;line-height:1.45;color:var(--ink)}
#detBody .cons .thumbs{display:flex;gap:6px;margin-top:6px}
.fph{display:flex;flex-direction:column;gap:10px;padding:12px}.fph img{width:100%;height:160px;object-fit:cover;border-radius:12px}.fph .photobtn{align-self:flex-start}

.hrstot{margin:-4px 4px 0;font-size:.9375rem;color:var(--muted);text-align:center;min-height:1.2em}
.dact .btn.dark+.btn.dark{background:var(--accent-soft);color:var(--accent)}

.hh .hcall.off{opacity:.5}
.fh{display:block;width:100%;padding:0;border:0;overflow:hidden;border-radius:22px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1));text-align:left;font:inherit;color:var(--ink);cursor:pointer}
.fhp{display:block;width:100%;height:170px;object-fit:cover;background:var(--surface-2)}
.fhb{display:flex;flex-direction:column;gap:4px;padding:16px 18px 18px}.fhb .bk{color:var(--accent);font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.fht{font-size:1.625rem;line-height:1.1;letter-spacing:-.03em}.fhs{font-size:.9375rem;color:var(--muted);line-height:1.35}
.fhc{margin-top:12px;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-radius:14px;background:var(--accent-fill);color:#fff;font-size:1.0625rem;font-weight:600}.fhc .chev{width:16px;height:16px;stroke-width:2.5;color:#fff}
#hmAbs{margin:6px 0 40px}
#suSiW h3{margin-top:18px}

/* préremplissage du navigateur : pas de surlignage jaune */
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,textarea:-webkit-autofill,select:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--surface) inset!important;box-shadow:0 0 0 1000px var(--surface) inset!important;-webkit-text-fill-color:var(--ink)!important;caret-color:var(--ink);border-color:transparent;transition:background-color 99999s ease-out 0s}
.ln input,.ln textarea,.ln select{background:none}

/* logo : vectoriel, suit le thème clair et sombre */
.brand{display:flex;flex-direction:column;align-items:center;gap:8px;width:100%;color:var(--ink)}
.brand .brt{display:flex;align-items:flex-end;gap:12px;width:100%}.brand .brt i{flex:1;height:2px;background:var(--accent)}
.brand .bico{width:46px;height:46px;flex:none}
/* pictogramme : la maison et sa serrure, à la couleur du texte */
.brand b{font-family:var(--font);font-weight:700;font-size:1.65rem;line-height:1.15;letter-spacing:-.025em;text-align:center}
.brand .brl{width:100%;height:2px;background:var(--accent)}
.bsub{text-align:center;margin:-4px 0 0}
.hbrand{display:flex;align-items:center;gap:8px;margin-bottom:8px;color:var(--ink);font:600 1rem/1 var(--font)}
.hbrand .bico{width:24px;height:24px;flex:none}

/* entête façon site de la conciergerie : fond crème, logo centré */
:root{--hdr:#f7f5f2}@media (prefers-color-scheme:dark){:root{--hdr:#1c1c1e}}
.hh{position:fixed;display:block;padding:calc(14px + env(safe-area-inset-top,0px)) 56px 10px;background:var(--hdr);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:.5px solid var(--hair)}
.hh>div{padding:0}
.hh .brand{gap:5px}.hh .brand .brt{gap:9px}.hh .brand .bico{width:32px;height:32px}.hh .brand b{font-size:1.2rem}.hh .brand .brl,.hh .brand .brt i{height:1.5px}
.hh .hcall{position:absolute;right:12px;top:calc(14px + env(safe-area-inset-top,0px));margin:0}
.hm{padding-top:calc(100px + env(safe-area-inset-top,0px))}
.home.prev .hm{padding-top:calc(144px + env(safe-area-inset-top,0px))}

/* entête : le nom en texte, centré, comme une barre de titre iOS */
.hh{background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);padding:calc(10px + env(safe-area-inset-top,0px)) 56px 10px;display:flex;align-items:center;justify-content:center;min-height:calc(48px + env(safe-area-inset-top,0px))}
.hh .hbrand{display:block;margin:0;font:600 1.0625rem/1.2 var(--font);letter-spacing:-.022em;color:var(--ink);text-align:center}
.hh .hcall{top:calc(5px + env(safe-area-inset-top,0px));width:38px;height:38px}
.hm{padding-top:calc(68px + env(safe-area-inset-top,0px))}
.home.prev .hm{padding-top:calc(112px + env(safe-area-inset-top,0px))}
#hmAbs{align-self:center}

/* entête typographique */
.hh{background:var(--hdr);-webkit-backdrop-filter:none;backdrop-filter:none;border-bottom:1.5px solid #c09040;padding:calc(12px + env(safe-area-inset-top,0px)) 56px 12px;min-height:0}
.hh .hbrand{display:flex;flex-direction:column;align-items:center;gap:0;font:inherit;letter-spacing:0}
.hh .hbrand small{font:600 .6875rem/1 var(--font);letter-spacing:.34em;text-transform:uppercase;color:#b08530;padding-left:.34em}
.hh .hbrand b{font:700 2.125rem/1.1 var(--font);letter-spacing:-.025em;color:var(--ink);margin-top:3px}
.hh .hcall{top:calc(24px + env(safe-area-inset-top,0px))}
.hm{padding-top:calc(104px + env(safe-area-inset-top,0px))}
.home.prev .hm{padding-top:calc(148px + env(safe-area-inset-top,0px))}

/* attribuer une mission : même langage que l'accueil (fond gris, groupes blancs arrondis, accent bleu) */
#asgSheet{background:var(--bg)}
#asgSheet .mbody{gap:0;padding:calc(var(--bar-h) + 8px) 16px calc(150px + env(safe-area-inset-bottom,0px))}
#asgSheet h3{margin:20px 4px 8px;font-size:.8125rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--muted)}
#asgSheet h3:first-child{margin-top:4px}
#asgSheet .hcard{margin:0}
#asgSheet .hrw{border:0;font:inherit;text-align:left;cursor:pointer;min-height:56px}
.asgck{flex:none;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--line);display:grid;place-items:center;font-size:.8125rem;font-weight:700;color:#fff}
.hrw.on .asgck{background:var(--accent);border-color:var(--accent)}
.hrw.dis{opacity:.5}
.hrw .rt2 small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hrw .asgtag{font-size:.75rem;color:var(--muted)}
#asgSheet .asec{margin:14px 4px 6px;font-size:.75rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;color:var(--muted);background:none;padding:0}
.aday{display:grid;grid-template-columns:1fr 1fr 1fr;padding:2px;border-radius:10px;background:var(--soft-fill)}
.aday>button,.adate{min-height:38px;border:0;border-radius:8px;background:none;box-shadow:none;font:inherit;font-size:.875rem;font-weight:500;color:var(--ink);display:grid;place-items:center;position:relative;overflow:hidden;cursor:pointer}
.aday .on{background:var(--surface);box-shadow:0 0 0 .5px var(--hair),0 1px 2px rgba(0,0,0,.1)}
.adate input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer}
.amod{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.amod>span:not(.amd){display:none}.amod>div{display:flex;flex-wrap:wrap;gap:8px}
.amd{display:inline-flex;align-items:center;border-radius:99px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair)}.amd button{border:0;background:none;padding:8px 6px 8px 14px;font:inherit;font-size:.875rem;font-weight:600;color:var(--accent);cursor:pointer}.amd em{font-style:normal;color:var(--muted);font-weight:400}.amd .x{padding:8px 12px 8px 4px;color:var(--muted);font-weight:400}
label.asrch{display:flex;flex-direction:row;align-items:center;gap:8px;padding:0 14px;border-radius:12px;background:var(--surface-2);min-height:44px;margin-top:10px;border:0}
label.asrch .i{width:18px;height:18px;color:var(--muted);flex:none}
label.asrch input{flex:1;width:auto;min-width:0;border:0;background:none;border-radius:0;padding:10px 0;font-size:1rem}
.asgbar{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;gap:8px;padding:10px 16px calc(12px + env(safe-area-inset-bottom,0px));background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-top:.5px solid var(--hair)}
.asum{text-align:center;font-size:.875rem;color:var(--muted)}
#asgGo{width:100%;min-height:54px;border-radius:16px;font-size:1.0625rem;background:var(--accent-fill);color:#fff;box-shadow:none;margin:0;position:static}
#asgGo:disabled{background:var(--surface-2);color:var(--muted);opacity:1}
#asgHouses{background:none;border-radius:0;overflow:visible}
#asgSheet .hav{flex:none;width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font:600 .8125rem/1 var(--font)}
.hrw.on .hav{background:var(--accent-fill);color:#fff}
label.asrch{background:var(--surface);box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}

/* entête d'appli : icône, grand titre, actions à droite */
.hh{display:flex;align-items:center;justify-content:flex-start;gap:12px;padding:calc(12px + env(safe-area-inset-top,0px)) 16px 12px;min-height:0;background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:.5px solid var(--hair)}
.hh .hic{flex:none;width:44px;height:44px;border-radius:50%}
.hh .htt{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.hh .htt small{font:500 .75rem/1.2 var(--font);color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hh .htt b{font:700 1.5rem/1.15 var(--font);letter-spacing:-.03em;color:var(--ink)}
.hh .hcall{position:static;flex:none;width:42px;height:42px;margin:0;top:auto;right:auto}
.hm{padding-top:calc(88px + env(safe-area-inset-top,0px))}
.home.prev .hm{padding-top:calc(132px + env(safe-area-inset-top,0px))}

/* saisie d'heure : le sélecteur d'heure natif de l'iPhone */
.ln .tin{flex:none;width:auto;min-width:7.5rem;margin-left:auto;text-align:center;font-size:1.25rem;font-weight:600;padding:8px 12px;background:var(--surface-2);border-radius:10px}
.ln .tin{min-width:9rem;font-size:1.125rem}

/* boutons sur la carte : verre sombre, texte et icônes blancs */
.app .fab,.app .chipbtn,.app .hintbar .btn.light{background:rgba(44,44,46,.72);color:#fff;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-color:rgba(255,255,255,.14)}
.app .fab.on{background:var(--accent-fill);color:#fff}
.app .chipbtn .i,.app .fab .i{color:#fff}

.legend i{width:16px;height:16px}.legend i svg{width:100%;height:100%;display:block}
.legend{gap:4px 12px}

/* bouton Conciergerie : en haut à droite de la carte */
.rail #baseBtn{position:fixed;top:calc(12px + env(safe-area-inset-top,0px));right:14px;z-index:1000;color:#fff}
.app:has(#nav:not([hidden])) #baseBtn,.app:has(#placeHint:not([hidden])) #baseBtn{display:none}

/* mission en cours : gros titre, liste de tâches, note */
.run .runh{padding:4px 4px 18px}
.run .runc{font-size:2.75rem;font-weight:800;letter-spacing:-.035em;line-height:1.05;color:var(--accent);font-variant-numeric:normal}
.run .taches{padding:0;gap:0}
.run .tk{padding:14px 16px;gap:14px;font-size:1.0625rem;border-top:.5px solid var(--hair);min-height:52px}
.run .tk:first-child{border-top:0}
.tk input{-webkit-appearance:none;appearance:none;flex:none;width:26px;height:26px;border-radius:50%;border:2px solid var(--muted);background:transparent center/16px no-repeat;margin:0}
.tk input:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E")}
.tk input:checked+span{color:var(--muted);text-decoration:line-through}
.run .rn{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.run .rn textarea{width:100%;border:0;background:transparent;font:inherit;font-size:1.0625rem;resize:none;outline:0;color:var(--ink)}
.run .rnb{display:flex;align-items:center;justify-content:space-between;border-top:.5px solid var(--hair);padding-top:10px}
.run .rnb .btn{min-height:40px;padding:0 20px;border-radius:12px;font-size:1rem}

/* appel d'un membre de l'équipe */
.pcall{flex:none;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-right:8px;cursor:pointer}
.pcall.off{opacity:.45}.pcall svg{width:18px;height:18px}
.vccall{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;margin-top:12px;border-radius:14px;background:var(--accent-soft);color:var(--accent);font-weight:600;text-decoration:none}
.vccall[hidden]{display:none}.vccall svg{width:20px;height:20px}

/* pendant le guidage, le bouton « en cours » se place sous le bandeau, quelle que soit sa hauteur */
.app:has(#nav:not([hidden])) .timer{top:calc(var(--navh,96px) + 16px + env(safe-area-inset-top,0px))}

/* liste « À faire » (mission en cours) */
.run .tkh{display:flex;align-items:baseline;justify-content:space-between;margin:20px 4px 8px}.run .tkh h3{margin:0}.run .tkh span{font-size:.875rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.run .tkp{height:6px;border-radius:3px;background:var(--hair);margin:0 4px 12px;overflow:hidden}.run .tkp i{display:block;height:100%;border-radius:3px;background:var(--ok);transition:width .35s ease}
.run .taches .tk{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:14px;padding:15px 16px;font-size:1.0625rem;font-weight:500;cursor:pointer}
.run .taches .tk span{flex:1;text-align:left}
.tk input:checked{background-color:var(--ok);border-color:var(--ok)}
.run .dnote{padding:14px 16px;font-size:1.0625rem;line-height:1.35}.run .dnote small{display:block;margin-bottom:4px;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.run .rn textarea{padding:2px 4px;min-height:64px;margin:0}
.tk input[type=checkbox]{padding:0;width:26px;height:26px;min-width:26px;min-height:26px;aspect-ratio:1;border-radius:50%;box-sizing:border-box}
.mbody>*{flex-shrink:0}

/* équipe : heures du mois et documents */
.tmonth{display:flex;gap:6px;padding:12px 16px;border-top:.5px solid var(--hair)}
.tmonth span{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.tmonth b{font-size:1.0625rem;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}.tmonth small{font-size:.75rem;color:var(--muted)}
.tdoc .i{color:var(--accent);flex:none}.tdoc .rt{flex:1}
/* fiche d'un employé : heures, validation et documents regroupés (la visite guidée les entoure ensemble) */
.tstat+.ln,.tstat+.lnk{border-top:1px solid var(--line)}
.tcon{display:flex;gap:6px;padding:12px 16px;border-top:.5px solid var(--hair)}.tcon div{flex:1;display:flex;flex-direction:column;gap:2px}.tcon span{font-size:.75rem;color:var(--muted)}.tcon b{font-size:1.0625rem;font-weight:700;font-variant-numeric:tabular-nums}.tcon .neg b{color:var(--granite-ink)}.tcon .pos b{color:var(--ok)}
.person .ln .tin[data-hsem]{width:6.5rem;min-width:0;flex:none;margin-left:auto}

/* bandeau hors ligne */
#offBar{position:fixed;z-index:3000;left:50%;transform:translateX(-50%);top:calc(env(safe-area-inset-top,0px) + 4px);padding:5px 12px;border-radius:99px;background:rgba(44,44,46,.88);color:#fff;font-size:.75rem;font-weight:600;white-space:nowrap;pointer-events:none}
#offBar[hidden]{display:none}

/* ordinateur : fenêtres centrées, colonne un peu plus large, survol */
@media (min-width:900px) and (pointer:fine){
  .modal{left:calc(50% - 380px);right:calc(50% - 380px);top:4vh;bottom:4vh;border-radius:18px;box-shadow:0 30px 90px rgba(0,0,0,.35),0 0 0 .5px var(--hair)}
  .mbody{max-width:640px}
  .hm{max-width:640px}
  .dock{max-width:640px}
  .ln.nr:hover,.hrw:hover,.row:hover,.day:hover{background:var(--press);cursor:pointer}
  .btn:hover,.hcall:hover,.pcall:hover,.chipbtn:hover,.fab:hover{filter:brightness(.96)}
}
@media (min-width:900px) and (pointer:fine){
  .dock{left:calc(50% - 320px);right:calc(50% - 320px);bottom:14px;border-radius:26px;border:.5px solid var(--hair);padding:6px 8px;background:var(--glass)}
}

/* répétition chaque semaine */
#asgRepW{margin-top:12px}#asgRepW .hrw{cursor:pointer}
input.sw{-webkit-appearance:none;appearance:none;flex:none;width:51px;height:31px;border-radius:99px;background:var(--hair);position:relative;transition:background .25s ease;margin:0;padding:0;border:0}
input.sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.25);transition:transform .25s cubic-bezier(.2,.9,.3,1)}
input.sw:checked{background:var(--ok)}input.sw:checked::after{transform:translateX(20px)}
.trec{padding:8px 0 4px;border-top:.5px solid var(--hair)}.trec>b{display:block;padding:10px 16px 2px;font-size:.75rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.trec .x{flex:none;width:32px;height:32px;border:0;background:transparent;font-size:1.4rem;color:var(--muted);cursor:pointer}
#asgRepW{margin-top:14px}#asgRepW .hrw{display:flex;flex-direction:row;align-items:center;gap:12px;padding:12px 16px}#asgRepW .rt2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}#asgRepW b{font-size:1.0625rem;font-weight:600}#asgRepW small{font-size:.8125rem;color:var(--muted)}
#asgRepW{margin-top:20px}

/* planning de la semaine */
.pday{margin-bottom:10px}.pdh{display:flex;align-items:baseline;gap:10px;padding:10px 4px 6px}
.pdn{display:flex;align-items:baseline;gap:8px;flex:1;min-width:0}.pdn b{font-size:1.0625rem;font-weight:700;letter-spacing:-.02em}.pdn i{font-style:normal;font-size:.875rem;color:var(--muted)}
.pdc{font-size:.8125rem;color:var(--muted)}
.pday.today .pdn b{color:var(--accent)}.pday.today .pdc{color:var(--accent);font-weight:600}
.pday.past{opacity:.6}
.padd{flex:none;align-self:center;width:30px;height:30px;border-radius:50%;border:0;background:var(--accent-soft);color:var(--accent);font-size:1.25rem;line-height:1;cursor:pointer}
.pst{flex:none;font-size:.75rem;font-weight:600;color:var(--muted);margin-left:auto}

/* planning façon agenda */
#planSheet .seg{margin-bottom:10px}
.pwd{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font:600 .72rem var(--font);color:var(--muted);padding:2px 0 6px}
.pcells{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.pcell{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-height:58px;padding:5px 3px;border:0;background:var(--surface);font:inherit;color:var(--ink);cursor:pointer;text-align:center;min-width:0}
.pgrid.week .pcell{min-height:150px}
.pcell>b{align-self:center;font:600 .85rem var(--font);width:26px;height:26px;line-height:26px;border-radius:50%}
.pcell.today>b{background:var(--accent-fill);color:#fff}
.pcell.sel:not(.today)>b{background:var(--line)}
.pcell.sel{box-shadow:inset 0 0 0 2px var(--accent)}
/* cases d'angle : même arrondi que le cadre (14 px moins son trait), pour que le cadre bleu de la case choisie épouse le coin */
.pcell:first-child{border-top-left-radius:13px}.pcell:nth-child(7){border-top-right-radius:13px}.pcell:nth-last-child(7){border-bottom-left-radius:13px}.pcell:last-child{border-bottom-right-radius:13px}
.pcell.out{background:var(--surface-2);color:var(--muted)}
.pcell.past:not(.sel){opacity:.7}
.pchips{display:flex;flex-direction:column;gap:2px;min-width:0}
.pchip{display:block;border-radius:5px;background:var(--c);height:6px;overflow:hidden;min-width:0}
.pchip.ok{opacity:.45}
.pchip em{display:none;font-style:normal}
.pgrid.week .pchip{height:auto;padding:2px 3px;text-align:left}
.pgrid.week .pchip em{display:block;font:600 .62rem/1.2 var(--font);color:#111;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pchips small{font:600 .65rem var(--font);color:var(--muted)}
.plegend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:10px 4px 2px;font:.8rem var(--font);color:var(--muted)}
.pdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px;vertical-align:baseline}
.plegend .pdot{margin-right:5px}
.pagenda{margin-top:12px}
@media (min-width:900px) and (pointer:fine){
  .pgrid.month .pcell{min-height:96px}
  .pgrid.month .pchip{height:auto;padding:2px 5px;text-align:left}
  .pgrid.month .pchip em{display:block;font:600 .68rem/1.25 var(--font);color:#111;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
/* écran d'ouverture, sans texte : le logo s'assemble (le disque, puis la maison et sa serrure qui se balancent), se serre, puis s'ouvre en rond sur l'appli.
   Tout doit être joué par la puce graphique, pas par la page, qui est occupée à charger l'appli pendant ce temps. D'où quatre règles (tests/splash.test.mjs) :
   seulement transform et opacity ; une seule animation de transform par élément (chaque pièce a ses enveloppes : .spk / .spf pour la sortie, .spw pour le balancement d'attente, .spr pour l'entrée, le svg pour l'apparition) ;
   pas de courbe linear(…) ni steps (l'iPhone les calcule dans la page) : le ressort est écrit en étapes, d'un extrême du balancement au suivant ; première et dernière étapes toujours écrites.
   La sortie (.out) est décidée par splash.js ; html.spq = rechargement dans la même session : logo posé, sans assemblage. */
#splash{--sp:clamp(128px,42vmin,208px);--spz:9;--spg:11;position:fixed;inset:0;z-index:2147483600;overflow:hidden;background:var(--bg);touch-action:none}
#splash i,#splash svg{position:absolute;inset:0;display:block}
#splash svg{width:100%;height:100%;fill:#fff}
#splash .spf svg{fill:var(--accent)}
.sps{position:absolute;left:50%;top:50%;width:var(--sp);height:var(--sp);margin:calc(var(--sp)/-2) 0 0 calc(var(--sp)/-2)}
.spd .spr{border-radius:50%;background:var(--accent)}
/* la maison et sa serrure tournent autour du centre du logo (50 ; 49 sur un cadre de 160, de -30 à 130) */
.spk,.spf,.spk i,.spf i,.spk svg,.spf svg{transform-origin:50% 49.375%}
:root:not(.spq) .spd .spr{animation:spd .6s cubic-bezier(.25,0,.44,1) both}
:root:not(.spq) .spk .spr{animation:spk 1s cubic-bezier(.29,0,.52,1) .1s both}
:root:not(.spq) .spf .spr{animation:spf 1.12s cubic-bezier(.29,0,.52,1) .19s both}
:root:not(.spq) .spk svg{animation:spp .34s cubic-bezier(.23,1,.32,1) .1s both}
:root:not(.spq) .spf svg{animation:spp .34s cubic-bezier(.23,1,.32,1) .19s both}
:root:not(.spq) .spk .spw{animation:spi 2.3s ease-in-out 1.6s infinite}
:root:not(.spq) .spf .spw{animation:spi 2.9s ease-in-out 1.6s infinite reverse}
/* ressorts amortis : chaque étape est un extrême du balancement (dépassements de 30 %, 9 %, 3 %), la courbe entre deux extrêmes est celle du ressort à moins de 1 % près */
@keyframes spd{0%{transform:scale(.4);opacity:0}48%{transform:scale(1.076);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes spk{0%{transform:rotate(-80deg)}25%{transform:rotate(23.8deg)}50%{transform:rotate(-7.08deg)}75%{transform:rotate(2.1deg)}100%{transform:rotate(0deg)}}
@keyframes spf{0%{transform:rotate(56deg)}25%{transform:rotate(-16.66deg)}50%{transform:rotate(4.96deg)}75%{transform:rotate(-1.47deg)}100%{transform:rotate(0deg)}}
@keyframes spp{0%{transform:scale(.55);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes spi{0%{transform:rotate(0deg)}25%{transform:rotate(2.4deg)}75%{transform:rotate(-2.4deg)}100%{transform:rotate(0deg)}} /* l'appli tarde : les pièces se balancent doucement */
/* sortie : tout se serre (élan), puis le logo vient vers nous et son disque s'ouvre en rond sur l'appli ; la clé et la maison s'écartent, un peu en avant du disque (--spg) */
#splash .spv{display:none;inset:-14%;background:radial-gradient(circle at 50% 50%,transparent calc(var(--sp)/2 - 4px),var(--accent) calc(var(--sp)/2 - 3.5px),var(--accent) calc(var(--sp)/2 - .5px),var(--bg) calc(var(--sp)/2))}
#splash.out{background:none;pointer-events:none}
#splash.out .spv{display:block;animation:spo .62s both}
#splash.out .spd{animation:spo .62s both,spod .62s both}
#splash.out .spg{animation:spog .62s both,spoh .62s both}
#splash.out .spk{animation:spok .62s both}
#splash.out .spf{animation:spof .62s both}
@keyframes spo{0%{transform:scale(1);animation-timing-function:cubic-bezier(.3,0,.3,1)}26%{transform:scale(.86);animation-timing-function:cubic-bezier(.6,0,.4,1)}100%{transform:scale(var(--spz))}}
@keyframes spog{0%{transform:scale(1);animation-timing-function:cubic-bezier(.3,0,.3,1)}26%{transform:scale(.86);animation-timing-function:cubic-bezier(.6,0,.4,1)}100%{transform:scale(var(--spg))}}
@keyframes spod{0%,26%{opacity:1}66%,100%{opacity:0}}
@keyframes spoh{0%,26%{opacity:1}54%,100%{opacity:0}}
@keyframes spok{0%{transform:rotate(0deg);animation-timing-function:cubic-bezier(.3,0,.3,1)}26%{transform:rotate(9deg);animation-timing-function:cubic-bezier(.6,0,.4,1)}60%,100%{transform:rotate(-26deg)}}
@keyframes spof{0%{transform:rotate(0deg);animation-timing-function:cubic-bezier(.3,0,.3,1)}26%{transform:rotate(-9deg);animation-timing-function:cubic-bezier(.6,0,.4,1)}60%,100%{transform:rotate(26deg)}}
@keyframes spfd{0%{opacity:1}100%{opacity:0}}
/* mouvement réduit : le logo est posé, puis un simple fondu */
@media (prefers-reduced-motion:reduce){
  #splash .sps i,#splash .sps svg{animation:none!important}
  #splash.out{background:var(--bg);animation:spfd .2s linear both;animation-duration:.2s!important}
  #splash.out .spv{display:none}}
#houseSeg:has(#tabSuivi:not([hidden])){grid-template-columns:1fr 1fr 1fr}
.hwarn{margin:4px 0 0;font:600 .8rem var(--font);color:var(--danger,#d6372c)}
.manqw{margin-bottom:10px;color:var(--danger,#d6372c)}
#manqForm select,#manqForm input,#manqForm textarea{font:inherit;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);width:100%;box-sizing:border-box}

/* liste « À faire » : même rendu partout, grandes zones à toucher */
.tkh{display:flex;align-items:baseline;justify-content:space-between;margin:20px 4px 8px}.tkh h3{margin:0}.tkh span{font-size:.875rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.tkp{height:6px;border-radius:3px;background:var(--hair);margin:0 4px 12px;overflow:hidden}.tkp i{display:block;height:100%;border-radius:3px;background:var(--ok);transition:width .35s ease}
.taches.seq{padding:0;gap:0;counter-reset:tk;overflow:hidden}
.taches.seq .tk{counter-increment:tk;display:flex;flex-direction:row;align-items:center;gap:14px;min-height:60px;padding:12px 16px;font-size:1.0625rem;font-weight:500;border-top:.5px solid var(--hair);cursor:pointer;position:relative;-webkit-tap-highlight-color:transparent}
.taches.seq .tk:first-child{border-top:0}
.taches.seq .tk span{flex:1;text-align:left}
.taches.seq .tk input{position:static;display:grid;place-items:center;width:34px;height:34px;min-width:34px;min-height:34px;margin:0;border:2px solid var(--hair);border-radius:50%;background:var(--surface-2);color:var(--muted);font:600 .95rem var(--font);pointer-events:none}
.taches.seq .tk input::before{content:counter(tk)}
.taches.seq .tk input:checked{background:var(--ok) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7'/%3E%3C/svg%3E") center/18px no-repeat;border-color:var(--ok)}
.taches.seq .tk input:checked::before{content:""}
.taches.seq .tk.next{background:var(--accent-soft)}
.taches.seq .tk.next input{border-color:var(--accent);color:var(--accent);background:var(--surface)}
.taches.seq .tk input:disabled{opacity:.6}

/* harmonisation */
.ln select{direction:ltr;text-align:right;text-align-last:right}
.home .bw{background:var(--surface);color:var(--ink);font-size:1rem;padding:14px 18px}
.home .bw .chev{color:var(--muted);opacity:1}
.home .bw::before{content:"";flex:none;width:8px;height:8px;border-radius:50%;background:var(--accent);margin-right:-2px}
.mbar .tx{min-height:44px}
.home .bw{justify-content:flex-start;gap:12px}.home .bw>span,.home .bw>b{flex:1;text-align:left}
.ln.sacs{flex-direction:column;align-items:stretch;gap:10px}.ln.sacs .sac{width:100%;font-size:1rem;color:var(--ink)}
.dlga .pri.del{color:var(--danger,#d6372c)}
/* ordre manuel d'une mission */
.ln.ordl{justify-content:space-between}
.ordc{display:inline-flex;align-items:center;gap:6px}
.ordc b{min-width:38px;text-align:center;font-variant-numeric:tabular-nums}
.ordc button{width:40px;height:40px;border-radius:12px;border:0;background:var(--soft-fill);color:var(--ink);display:grid;place-items:center;cursor:pointer}
.ordc button:disabled{opacity:.35;cursor:default}
.ordc .i{width:20px;height:20px}
/* ordinateur : accueil à gauche, carte à droite */
@media (min-width:1100px) and (pointer:fine){
  .app{margin-left:440px}
  .home{right:auto;width:440px;z-index:900;border-right:1px solid var(--hair)}
  .home:not([hidden]){opacity:1;transform:none}
  #navPill,#misChip,.home .mini{display:none!important}
  .home .dock{left:12px;right:auto;width:416px;max-width:none;margin:0;bottom:14px}
  .home .hh,.home .hprev{right:auto;width:440px}
}

/* fiche mission : accès et loueur lisibles, appel en un appui */
#detBody .acc p{margin:0}#detBody .acc p+.lou{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
#detBody .lou{display:flex;align-items:center;justify-content:space-between;gap:12px}
#detBody .lou small{display:block;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
#detBody .loucall{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-weight:600;text-decoration:none;white-space:nowrap}

/* suivi terrain : problèmes signalés, photos avant / après, produits, clés */
#houseSeg:has(#tabOps:not([hidden])){grid-template-columns:repeat(4,1fr)}
#houseSeg:has(#tabOps:not([hidden])) .tab{padding:9px 0;font-size:.8rem;white-space:nowrap;letter-spacing:-.01em}
#hOps h3{margin:14px 4px 6px}#hOps h3:first-child{margin-top:4px}
.sgpick .pickbtn,.besp .pickbtn{min-height:44px}
.sgf{padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.sgf textarea{width:100%;border:0;background:transparent;font:inherit;font-size:1.0625rem;resize:none;outline:0;color:var(--ink);padding:2px 0;min-height:96px}
.sgf .photobtn{min-height:44px;border-top:.5px solid var(--hair);padding-top:8px;align-self:stretch}
.sgr{padding:12px 16px;display:flex;flex-direction:column;gap:2px}
.sgr+.sgr{border-top:.5px solid var(--line)}
.sgh{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.sgh b{font-size:1.0625rem;font-weight:600}
.sgst{flex:none;font-size:.8125rem;font-weight:600;color:var(--muted)}.sgst.ouvert{color:var(--accent)}
.sgr small{font-size:.875rem;color:var(--muted)}.sgr p{margin-top:4px}.sgr .thumbs{margin-top:6px}
.sgr.done .sgh b{color:var(--muted)}
.sga{display:flex;justify-content:flex-end;gap:8px;margin-top:10px}
.sga .go-s,.kr .go-s{min-height:44px;padding:0 18px}
.go-s.soft{background:var(--soft-fill);color:var(--ink)}
.sgbtn{width:100%;min-height:54px;background:var(--surface);color:var(--ink);border-radius:14px}.sgbtn .i{color:var(--granite-ink)}.run .sgbtn{margin-top:18px}.run .sgl{margin-top:10px}
#houseSeg:has(#tabOps:not([hidden])) .tab .n:not(:empty){margin-left:2px;padding:0 5px;min-width:18px}
.phm .phr{padding:10px 16px 12px}.phm .phr+.phr{border-top:.5px solid var(--line)}
.phh{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px}.phh b{font-size:1.0625rem;font-weight:600}
.phh .photobtn{min-height:44px;align-self:center}
.phh0 b{font-size:.9375rem;font-weight:600;color:var(--muted)}
.phm .phr small{color:var(--muted);font-size:.875rem}
.phm .thumbs{margin-top:4px}.phm .thx::after,.sgf .thx::after{content:"";position:absolute;inset:-11px}
#hOps .phm+.phm{margin-top:10px}
.phm:not(.ed) .phh{min-height:30px}.phm:not(.ed) .phh b{font-size:1rem}
.run .besg{margin-top:18px}.besg>summary{list-style:none}.besg>summary::-webkit-details-marker{display:none}.besg>summary .hv{font-size:.875rem;color:var(--muted)}.besg[open]>summary .chev{transform:rotate(90deg)}
.besin{padding:4px 14px 14px;display:flex;flex-direction:column;gap:10px}.besin>small{font-size:.875rem;color:var(--muted)}
.besp .pickbtn small{font-size:.8125rem;opacity:.75}
.ln.besr{min-height:60px}.ln.besr .rt2 b{font-size:1rem}.ln.besr.done .rt2 b{color:var(--muted);text-decoration:line-through}
.ln.besr .lnk{min-height:44px;padding:0 4px}
.ln.besr>.rt2,.ln.kr>.rt2{flex:1;min-width:0}
.ln.kr{min-height:60px;gap:8px}.ln.kr .rt2 b{font-size:1rem}
.kx{flex:none;width:44px;height:44px;border:0;border-radius:12px;background:none;color:var(--muted);display:grid;place-items:center;cursor:pointer}.kx.del{color:var(--granite-ink)}
.ln.kr .pcall{margin-right:0;width:44px;height:44px}
.ln.kr .rt2 b,.ln.kr .rt2 small{white-space:normal}
.ln.kr .go-s{padding:0 14px}.ln.kr+.addrow{border-top:.5px solid var(--line)}
#paneSuivi .reph{margin:18px 4px 6px}
.besg>summary .rt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}

/* invitation par code, mission ouverte, messages de l'employé, codes d'accès */
.invtxt{margin:-4px 0 0;font-size:.95rem;line-height:1.4}
.codein{text-transform:uppercase;letter-spacing:.14em;font-variant-numeric:tabular-nums}
#tabInvite{min-height:44px;margin-top:-8px}
.invnew{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:60px;margin:4px 0 0;padding:0 20px;border:0;border-radius:18px;background:var(--accent-fill);color:#fff;font:600 1.0625rem var(--font);letter-spacing:-.01em;cursor:pointer}
.invnew .i{width:24px;height:24px;stroke-width:2.2}
.invnew.alt{margin-top:12px;background:var(--surface);color:var(--ink)}
.invh{color:var(--muted);font-size:.875rem;line-height:1.4;margin:2px 6px 6px}
#team .invh{margin:8px 6px 4px}
.invr.done .invc{color:var(--muted)}
.invc{font-variant-numeric:tabular-nums;letter-spacing:.08em}
.invr .go-s{min-height:44px;padding:0 16px}
.qrw{align-self:center;width:min(240px,70vw);aspect-ratio:1;border-radius:18px;background:#fff;padding:6px;box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.12))}
.qrw svg{display:block;width:100%;height:100%}
.invbox{align-items:center;text-align:center;padding:14px 16px;gap:4px}
.invbox small{color:var(--muted);font-size:.8125rem}
.invcode{font-size:1.75rem;font-weight:700;letter-spacing:.14em;font-variant-numeric:tabular-nums}
.invurl{word-break:break-all;user-select:all;-webkit-user-select:all}
#invBody .btn{width:100%}
#offSend:disabled,#invShare2:disabled{opacity:.35;cursor:default}
.offhd .ln{min-height:62px}.offhd .rt2 b,.offhd .rt2 small{white-space:normal}
.offtop{display:flex;align-items:center;justify-content:space-between;margin:4px 0 -6px}.offtop h3{margin:6px 4px}.offtop .lnk{min-height:44px;padding:0 6px}
#offBody .hcard{margin:0}
.offst .ln.kr .rt2 small{white-space:normal}
#medBody .offst{margin-top:2px}
.hmsg.offc{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--accent)}
.hmsg .offt{display:block;margin-top:4px;font-size:1.1875rem;font-weight:600;letter-spacing:-.02em}
.hmsg.offc p{margin:2px 0 12px;font-size:.9375rem;color:var(--muted)}
.hmsg.offc .mb.pri{flex:1;justify-content:center}
.hmsg.offc.gone{box-shadow:inset 0 0 0 .5px var(--hair,rgba(0,0,0,.12))}.hmsg.offc.gone .bk{color:var(--muted)}.hmsg.offc.gone .offt{color:var(--muted)}
.home .hmsg .mb{height:44px}
.hwrite{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;padding:10px 14px;border:0;border-radius:20px;background:var(--surface);color:var(--ink);text-align:left;font:inherit;cursor:pointer;box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
.hwrite .hav{width:40px;height:40px}
.hwrite .rt2 small{white-space:normal}
.dcode{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.dcode span{display:flex;flex-direction:column}
.dcode small{color:var(--muted);font-size:.8125rem}
.dcode b{font-size:1.5rem;font-weight:700;letter-spacing:.1em;font-variant-numeric:tabular-nums;line-height:1.2}
.dcode>small{text-align:right}
.acc p+.dcode,.acc .dcode+.lou{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.ln.kr .rt2 b.codev{font-size:1.375rem;letter-spacing:.1em;font-variant-numeric:tabular-nums}
.ln.kr.old .rt2 b{color:var(--muted);text-decoration:line-through;font-weight:500}
#offSheet .hrw{border:0;font:inherit;text-align:left;cursor:pointer;min-height:56px}
#offSheet .hav{flex:none;width:36px;height:36px;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font:600 .8125rem/1 var(--font)}
.offhd .ln>.rt2{flex:1;min-width:0}
/* calendrier Airbnb (iCal) : option */
#hCal h3{margin:4px 4px 6px}#hCal h3~h3{margin-top:14px}
#hCal .grp+.invh{margin-top:8px}
.icpromo{padding:14px 16px 4px;gap:8px}
.icph{display:flex;align-items:center;gap:12px}.icph b{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em}
#hCal.promo{order:2;margin-top:6px}
.icpi{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent)}.icpi .i{width:22px;height:22px}
.icpromo p{margin:0;color:var(--ink);font-size:.95rem;line-height:1.45}
.icpromo .btn.icmore{margin:6px 0 12px;width:100%;text-decoration:none;min-height:46px}
.ln.icerr span{white-space:normal}.ln.icerr{display:block;color:var(--granite-ink);background:var(--granite-soft);font-size:.9rem;line-height:1.35;padding:10px 16px;cursor:default}
.icwhen{font-size:1rem}
.icdeps .hrw{align-items:center;flex-wrap:wrap;row-gap:8px}
.icdeps .rt2 small,.icdeps .rt2 b{white-space:normal}
.icday{flex:none;width:40px;height:44px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);line-height:1}
.icday b{font-size:1.05rem;font-weight:700;font-variant-numeric:tabular-nums}.icday small{font-size:.7rem;font-weight:600;margin-top:2px}
.icdep.done .icday{background:var(--surface-2);color:var(--muted)}
.icsame{align-self:flex-start;white-space:nowrap;margin-top:2px;font-style:normal;font-size:.8125rem;font-weight:600;color:var(--amber-ink)}.iclate{color:var(--granite-ink);font-weight:600} /* un simple repère écrit, pas une pastille qui ressemble à un bouton */
.icdeps .rt2{flex:1 1 calc(100% - 52px)}
.home .icdeps .go-s.icmk{min-height:44px;padding:0 18px;font-size:.9375rem;color:var(--surface);background:var(--ink);text-align:center;margin:0 0 4px 52px}
.icdeps .go-s.icmk:disabled{opacity:.6}
.icok{color:var(--muted);font-size:.875rem;margin:6px 6px 0}
.pcell{position:relative}
/* départs de clients : une petite pastille ambre avec le nombre (avant : un carré vide qui ressemblait à une case à cocher) */
.pdep{display:inline-grid;place-items:center;min-width:16px;height:16px;padding:0 4px;border-radius:99px;background:var(--amber-soft);color:var(--amber-ink);font:700 .6875rem/1 var(--font);font-style:normal;box-sizing:border-box}
.pcell .pdep{position:absolute;top:3px;right:3px;min-width:14px;height:14px;padding:0 3px;font-size:.625rem}
.pdeps{margin:0 4px 8px;color:var(--muted);font-size:.8125rem;line-height:1.4}.pdeps .pdep{margin-right:6px;vertical-align:-1px}.pdeps em{font-style:normal;color:var(--ink)}

/* langue de l'interface : sélecteur sur la connexion et dans Réglages */
.langsel{flex-direction:row;align-items:center;justify-content:center;gap:8px;font-weight:500;font-size:.9rem;color:var(--muted);margin-top:-6px}
.langsel .i{width:18px;height:18px}
.langsel select{width:auto;min-height:44px;padding:8px 34px 8px 12px;font-size:.95rem}
.ln.lnsel select{direction:ltr;text-align:right;text-align-last:right;max-width:60%;min-height:44px;cursor:pointer}
.ln.lnsel .rt2{flex:1;min-width:0;display:flex;flex-direction:column}
.ln.lnsel .rt2 small{color:var(--muted);font-size:.8125rem}

/* version simplifiée (employés débutants) : une mission à la fois, très gros boutons, grands pictogrammes */
.hm.simple{display:flex;flex-direction:column;gap:16px;padding-top:calc(12px + env(safe-area-inset-top,0px));padding-bottom:calc(120px + env(safe-area-inset-bottom,0px))}
.home.prev .hm.simple{padding-top:calc(64px + env(safe-area-inset-top,0px))}
.sh{display:flex;flex-direction:column;gap:2px;padding:8px 4px 0}
.sh small{color:var(--muted);font-size:1rem}
.sh b{font-size:2rem;line-height:1.1;letter-spacing:-.03em}
.scard{display:flex;flex-direction:column;gap:10px;padding:22px 20px;border-radius:24px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair)}
.scard.run{box-shadow:0 0 0 2.5px var(--accent)}
.scard .sk,.srun .sk{color:var(--accent);font-size:.9375rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.scard .sn{font-size:1.875rem;line-height:1.1;letter-spacing:-.03em}
.scard .sl{display:flex;align-items:flex-start;gap:10px;font-size:1.1875rem;line-height:1.35;color:var(--ink)}
.scard .sl .i{width:26px;height:26px;color:var(--muted);margin-top:1px}
.snote{padding:12px 14px;border-radius:14px;background:var(--note);font-size:1.0625rem}
.sacts{display:flex;flex-direction:column;gap:12px;margin-top:8px}
.home .sbtn{display:flex;align-items:center;justify-content:center;gap:14px;width:100%;min-height:76px;padding:0 20px;border:0;border-radius:20px;background:var(--surface-2);color:var(--ink);font:700 1.375rem var(--font);letter-spacing:-.02em;cursor:pointer;text-decoration:none}
.home .sbtn .i{width:32px;height:32px;stroke-width:2.2}
.home .sbtn.ok{background:var(--accent-fill);color:#fff}
.home .sbtn:active{transform:scale(.98)}
.home .sbtn.on{box-shadow:0 0 0 3px var(--accent)}
.sprog{text-align:center;color:var(--muted);font-size:1.0625rem}
.stiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.home .stile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:120px;padding:14px 8px;border:0;border-radius:22px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:700 1.1875rem var(--font);text-align:center;cursor:pointer}
.home .stile .sti{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--accent-soft);color:var(--accent)}
.home .stile .sti .i{width:34px;height:34px;stroke-width:2}
.home .stile.warn .sti{background:var(--granite-soft);color:var(--granite-ink)}
.home .stile:active{transform:scale(.97)}
.home .sfull{align-self:center;min-height:48px;font-size:1.0625rem;color:var(--accent);text-align:center}
.sbar{position:fixed;z-index:6;left:0;right:0;bottom:0;padding:10px 16px calc(10px + env(safe-area-inset-bottom,0px));background:var(--bar);-webkit-backdrop-filter:var(--blur-lg);backdrop-filter:var(--blur-lg);border-top:.5px solid var(--hair)}
.home .scall{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;max-width:536px;margin:0 auto;min-height:68px;border:0;border-radius:20px;background:var(--ok);color:#fff;font:700 1.3125rem var(--font);text-decoration:none;cursor:pointer}
.home .scall .i{width:28px;height:28px}
.home .scall.off{background:var(--surface-2);color:var(--muted)}
.srun .srh{display:flex;flex-direction:column;gap:4px;padding:4px 4px 6px}
.srun .srh b{font-size:2rem;line-height:1.1;letter-spacing:-.03em}
.srun .srh small{color:var(--muted);font-size:1.0625rem}
.srun .taches.seq.stk .tk{min-height:76px;font-size:1.3125rem;font-weight:600;padding:14px 18px}
.srun .taches.seq.stk .tk input{width:44px;height:44px;min-width:44px;min-height:44px;font-size:1.0625rem}
#detBody .srun .slinge{display:flex;flex-direction:row;align-items:center;gap:12px;font-size:1.125rem}
#detBody .srun .slinge .i{width:28px;height:28px;flex:none}
.srun .stiles{margin-top:6px}
.btn.sbig{width:100%;min-height:72px;border-radius:20px;font-size:1.375rem;font-weight:700;gap:12px}
.btn.sbig .i{width:28px;height:28px}
.spl{display:flex;flex-direction:column;gap:10px}
.spb{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:68px;padding:0 20px;border:0;border-radius:18px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:600 1.25rem var(--font);text-align:left;cursor:pointer}
.spb.on{background:var(--accent-soft);color:var(--accent)}
.spb small{font-size:.9375rem;font-weight:500}
#spBody .kr{min-height:76px;font-size:1.125rem}
#spBody .kr .go-s{min-height:52px;padding:0 18px;font-size:1.0625rem}
.gd{gap:14px;padding-top:6px}
.gdots{display:flex;justify-content:center;gap:8px}
.gdots i{width:12px;height:12px;border-radius:50%;background:var(--hair)}
.gdots i.on{background:var(--accent);transform:scale(1.25)}
.gdots i.ok{background:var(--ok)}
.gstep{text-align:center;color:var(--muted);font-size:1rem}
.gq{text-align:center;font-size:1.75rem;line-height:1.2;margin:4px 0}
.gd .sub{text-align:center;font-size:1.0625rem}
.gctl{display:flex;flex-direction:column;align-items:stretch;gap:12px;margin:8px 0}
.gsel{min-height:84px;font-size:2.25rem;font-weight:700;text-align:center;text-align-last:center;border-radius:20px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);font-variant-numeric:tabular-nums}
.gnow{align-self:center;min-height:48px;padding:0 20px;border:0;border-radius:14px;background:var(--soft-fill);color:var(--accent);font:600 1.0625rem var(--font);cursor:pointer}
.gkm{display:flex;align-items:center;gap:12px}
.gkm input{flex:1;min-width:0;min-height:84px;font-size:2.25rem;font-weight:700;text-align:center;border-radius:20px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair)}
.gkm b{font-size:1.375rem;color:var(--muted)}
.gpm{flex:none;width:68px;height:68px;border:0;border-radius:50%;background:var(--soft-fill);color:var(--ink);font:600 2rem var(--font);cursor:pointer}
.gchips{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.gchips button{min-height:48px;padding:0 16px;border:0;border-radius:14px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:600 1.0625rem var(--font);cursor:pointer}
.gyes{display:flex;flex-direction:column;gap:12px}
.gyes .sbtn{display:flex;align-items:center;justify-content:center;gap:14px;width:100%;min-height:76px;padding:0 20px;border:0;border-radius:20px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:700 1.375rem var(--font);cursor:pointer}
.gyes .sbtn.ok{background:var(--accent-fill);color:#fff;box-shadow:none}
.gyes .sbtn .i{width:32px;height:32px}
.gyes .sbtn.on{box-shadow:0 0 0 3px var(--accent)}
#detBody .stile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:120px;padding:14px 8px;border:0;border-radius:22px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:700 1.1875rem var(--font);text-align:center;cursor:pointer}
#detBody .stile .sti{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--accent-soft);color:var(--accent)}
#detBody .stile .sti .i{width:34px;height:34px;stroke-width:2}
#detBody .stile.warn .sti{background:var(--granite-soft);color:var(--granite-ink)}
.gd .lnk{align-self:center;min-height:48px;font-size:1.0625rem}
#detSheet.smode .finish .btn{min-height:76px;font-size:1.25rem;border-radius:20px}
#detSheet.smode .finish .allok{font-size:1.375rem}

/* mise en route du patron */
.wizc{overflow:hidden}
.wizh{display:flex;flex-direction:column;gap:10px;padding:16px 18px 12px}
.wizh b{font-size:1.1875rem;letter-spacing:-.02em}
.wizc .hbar{display:block;height:6px;border-radius:3px;background:var(--surface-2);overflow:hidden}
.wizc .hbar i{display:block;height:100%;background:var(--ok);border-radius:3px}
.wz .sub{text-align:left;font-size:1rem}
.wz .grp .ln input,.wz .grp .ln textarea{font-size:1.0625rem}
.wztk .wzck{min-height:56px}
.wztk .wzck span{flex:1;font-size:1.0625rem}
.wzadd input{text-align:left}
.wzadd .go-s{flex:none;min-height:44px}
.wzok{display:flex;flex-direction:row;align-items:center;gap:12px;font-size:1.0625rem}
.wzok .i{width:26px;height:26px;color:var(--ok);flex:none}
.wz .wzinv{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:68px;padding:0 22px;border:0;border-radius:20px;background:var(--accent-fill);color:#fff;font:600 1.1875rem var(--font);cursor:pointer}
.wz .wzinv .i{width:26px;height:26px}
.wzend{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:12px 0 4px}
.wzend .i{width:64px;height:64px;padding:14px;border-radius:50%;background:var(--ok);color:#fff;stroke-width:3}
.wzend .sub{text-align:center}
.wzchips{display:flex;flex-wrap:wrap;gap:8px}
.wzchips .pickbtn{min-height:44px}

/* à prendre avant de partir */
.aph{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:12px 4px 0}.aph h3{margin:0}.aph span{font-size:.875rem;font-weight:600;color:var(--muted);font-variant-numeric:tabular-nums}
.apc .apsub{padding:12px 16px 2px;font-size:.8125rem;font-weight:600;color:var(--muted)}
.hrw.apr{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;cursor:pointer;min-height:56px}
.hrw.apr .rt2 b,.hrw.apr .rt2 small{white-space:normal}
.apq{font-size:.9375rem}
.apck{flex:none;display:flex;align-items:center;gap:8px;min-height:44px}
.apck small{font-size:.8125rem;color:var(--muted)}
.apck input{-webkit-appearance:none;appearance:none;flex:none;width:28px;height:28px;border-radius:50%;border:2px solid var(--muted);background:transparent center/16px no-repeat;margin:0;cursor:pointer}
.apck input:checked{background-color:var(--ok);border-color:var(--ok);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12.5 4.5 4.5L19 7.5'/%3E%3C/svg%3E")}
.hrw.apr.done .rt2 b{text-decoration:line-through}
.ln.apsum>span{flex:1;min-width:0;white-space:normal;overflow-wrap:anywhere;display:flex;flex-direction:column;gap:2px;padding:6px 0;line-height:1.35}.ln.apsum small{color:var(--muted);font-size:.8125rem}
.ln.apel{min-height:56px}.ln.apel .rt{flex:1;min-width:0}
.ln.ltr{gap:4px 8px;padding:6px 6px 8px 16px;flex-wrap:wrap}.ln.ltr input{text-align:left;flex:1 1 0}.ln.ltr .ltsac{flex:1 1 100%;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:8px;padding-right:10px;color:var(--muted);font-size:.9375rem;font-weight:400}.ln.ltr select{flex:0 1 auto;max-width:70%;font-size:.9375rem}
.spb.apb>span{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.spb.apb b{margin-right:4px}.spb.apb>span small{color:var(--muted);font-weight:500}
.spb.apb.on>span>span{text-decoration:line-through}
.scard .spl{margin-top:4px}

/* linge récupéré */
#hrsLg h3{margin:18px 4px 6px}#hrsLg .lgsub{text-align:left;margin:0 4px 10px}
.grp.lgg+.grp.lgg{margin-top:12px}
.ln.lgh{min-height:44px;background:var(--surface-2)}.ln.lgh b{font-size:.9375rem}.ln.lgh span{font-weight:700;font-variant-numeric:tabular-nums;color:var(--muted)}
.lgv{font-variant-numeric:tabular-nums}
.lgnav{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0}.lgnav b{font-size:1.0625rem;text-align:center}.lgnav .kx{color:var(--accent)}.lgnav .kx:disabled{opacity:.3}
.ln.kr .rt2 small+small{margin-top:1px}
.glg{display:flex;flex-direction:column;gap:2px;background:var(--surface);border-radius:20px;padding:10px 16px;box-shadow:0 0 0 .5px var(--hair)}.glg+.glg{margin-top:12px}
.glgh{font-size:.9375rem;color:var(--accent);text-transform:uppercase;letter-spacing:.04em;padding:4px 0}
.glr{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px;font-size:1.1875rem;font-weight:600}.glr+.glr{border-top:.5px solid var(--line)}
.glst{display:flex;align-items:center;gap:10px;flex:none}.glst b{min-width:28px;text-align:center;font-size:1.375rem;font-variant-numeric:tabular-nums}
.glst .gpm{width:56px;height:56px;font-size:1.75rem}.glst .gpm:disabled{opacity:.3}
/* case « sacs de linge rangés » : la règle ronde .chk (cases des missions) ne doit pas s'appliquer à la ligne entière */
label.grp.ln.chk{width:auto;height:auto;border-radius:14px;border:0;color:var(--ink);font-size:1rem;line-height:1.3}

/* fin de journée */
.fjg{display:flex;flex-direction:column;gap:6px;padding:4px 16px 14px}
.fjs{display:flex;flex-direction:column;gap:1px;font-size:.9375rem;line-height:1.35}.fjs span{color:var(--muted)}
.fjg.fjgb{padding:4px 2px 0;gap:10px}.fjg.fjgb .fjs{font-size:1.125rem}.fjg.fjgb .fjt{font-size:.9375rem;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}
#fjGo.bbtn{margin-top:4px}
.home .bbtn.fjb{margin-bottom:18px}
.ln.kr .go-s:disabled{opacity:.5}

/* objets rapportés */
.objok{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:8px 0 4px}
.objok .i{width:56px;height:56px;padding:12px;border-radius:50%;background:var(--ok);color:#fff;stroke-width:3}
.objok b{font-size:1.25rem}.objok p{margin:0;color:var(--muted);line-height:1.4}
.objlab{padding:22px 18px;border-radius:18px;background:var(--surface);border:2px dashed var(--line);font-size:1.375rem;font-weight:700;line-height:1.35;text-align:center;letter-spacing:-.01em;user-select:all;-webkit-user-select:all}
#objBody .btn{min-height:56px;border-radius:18px}
.sgr .objl{display:block;margin-top:6px}
.sgr .sga{flex-wrap:wrap;justify-content:flex-end}
.ln.tmode{min-height:0;padding-top:0;padding-bottom:10px}.ln.tmode small{color:var(--muted);font-size:.8125rem;line-height:1.35}

/* didacticiel : visite guidée (bulles qui pointent l'écran réel) */
.tour{position:fixed;inset:0;z-index:100000;pointer-events:none}.tdim,.tbub,.tblk,.tring{pointer-events:auto}
.tdim{position:absolute;inset:0;background:transparent;transition:background .35s ease}
.tour.tcenter .tdim{background:rgba(0,0,0,.88)}
.tring{position:fixed;border-radius:18px;box-shadow:0 0 0 3px var(--accent),0 0 0 200vmax rgba(0,0,0,.88);cursor:pointer;-webkit-tap-highlight-color:transparent}
.tbub{position:fixed;left:50%;transform:translateX(-50%);width:min(420px,calc(100vw - 32px));max-height:calc(100vh - 32px);overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:8px 18px 8px;border-radius:22px;background:var(--surface);color:var(--ink)}
.tbub:focus,.tbub:focus-visible{outline:0}
.tour.tcenter .tbub{top:50%;transform:translate(-50%,-50%)}
/* en attendant que la cible soit immobile : l'écran reste normal, sans voile, anneau ni bulle ; puis l'anneau se pose d'un coup, sans glisser, et le voile revient autour */
.tour.twait .tdim{background:transparent}.tour.twait .tring,.tour.twait .tbub{visibility:hidden}
/* changement d'étape : le voile, l'anneau et la bulle s'effacent, l'écran redevient normal */
.tour.tout .tdim{background:transparent}.tour.tout .tring,.tour.tout .tbub{opacity:0;transition:opacity .22s ease}
/* la bulle arrive un peu après le voile : le temps de voir ce qui est entouré */
.tour.tlate .tbub{visibility:hidden}
/* cible touchable directement (écran d'entraînement, « Bien arrivé ») : un trou dans le calque, quatre caches autour ; pendant les transitions, le calque entier bloque */
.tblk{position:fixed;display:none}
.tour.thole:not(.twait):not(.tout) .tdim{pointer-events:none}.tour.thole:not(.twait):not(.tout) .tblk{display:block}.tour.thole .tring{pointer-events:none}
/* pas de sélection de texte pendant la visite (défilement au doigt dans la liste des tâches) */
html.touring body{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* écran d'entraînement pendant la visite : de la place en bas, pour faire remonter les dernières tâches au-dessus de la bulle */
html.touring #trSheet .mbody,html.touring #asgSheet .mbody,html.touring #teamSheet .mbody{padding-bottom:60vh}
@media (prefers-reduced-motion:no-preference){.tring.tpop{animation:tpop .45s ease-out both}}
@keyframes tpop{from{transform:scale(1.05);opacity:0}to{transform:none;opacity:1}}
/* ce qui est entouré se touche : petit enfoncement de l'anneau, puis l'étape suivante */
@media (prefers-reduced-motion:no-preference){.tring.tpress{animation:tpress .16s ease-out both}}
@keyframes tpress{50%{transform:scale(.96)}}
.ttap{font-size:.9375rem;font-weight:600;color:var(--accent)}
.tsimple .ttap{text-align:center;font-size:1.125rem}
.ttop{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px}
.tdots{display:flex;gap:6px;flex:1 1 auto;min-width:0}.tdots i{flex:0 1 8px;min-width:4px;height:8px;border-radius:50%;background:var(--line)}.ttop .tlnk{flex:none}
/* visite longue sur petit écran : les points se resserrent, « Passer » reste visible */
@media (max-width:360px){.tdots{gap:4px}.tdots i{height:6px;flex-basis:6px}}.tdots i.on{background:var(--accent)}.tdots i.ok{background:var(--muted)}
.tlnk{min-height:44px;min-width:44px;padding:0 6px;border:0;background:none;color:var(--accent);font:inherit;font-size:1rem;cursor:pointer}
.tlater{align-self:center;color:var(--muted)}
.tic{display:grid;place-items:center;width:52px;height:52px;border-radius:16px;background:var(--accent-soft);color:var(--accent);flex:none}
.tic .i{width:30px;height:30px}
.tstep{font-size:.8125rem;color:var(--muted)}
.tbub h2{font-size:1.25rem;letter-spacing:-.02em}
.tp{font-size:1rem;line-height:1.4}
.tact{display:flex;gap:8px;margin-top:6px}.tact .btn{flex:1;min-height:48px}.tact:empty{display:none}
.ttrain{min-height:48px}
.tsimple .tbub{gap:12px;padding:10px 20px 10px}
.tsimple .tic{width:88px;height:88px;border-radius:26px;align-self:center}.tsimple .tic .i{width:54px;height:54px}
.tsimple .tstep{text-align:center;font-size:1rem}
.tsimple .tbub h2{font-size:1.625rem;text-align:center}.tsimple .tp{font-size:1.25rem;text-align:center}
.tsimple .tact{flex-direction:column-reverse}.tsimple .tact .btn{min-height:72px;font-size:1.25rem;border-radius:20px}
.tsimple .ttrain{min-height:60px;font-size:1.125rem}
.tban{display:flex;align-items:center;border-radius:16px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair,rgba(0,0,0,.1))}
.tbgo{flex:1;display:flex;align-items:center;gap:12px;min-height:56px;padding:8px 4px 8px 14px;border:0;background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}
.tbgo .i{color:var(--accent);width:24px;height:24px}.tbgo b{display:block;font-size:1rem}.tbgo small{display:block;color:var(--muted);font-size:.8125rem}
.tbx{flex:none;width:44px;height:44px;margin-right:4px;border:0;background:none;color:var(--muted);font-size:1.5rem;line-height:1;cursor:pointer}

/* mission d'entraînement : mêmes écrans, marqués « Entraînement » */
.trtag{align-self:flex-start;padding:5px 12px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.8125rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.trhint{margin:0;padding:12px 14px;border-radius:14px;border-left:3px solid var(--accent);background:var(--surface);font-size:.9688rem;line-height:1.4}
.trnav{display:flex;flex-direction:column;align-items:center;gap:12px;padding:28px 20px;border-radius:22px;background:var(--surface);text-align:center}
.trnav>b{font-size:1.375rem;letter-spacing:-.02em}.trnav p{color:var(--muted)}.trnav .btn{width:100%;min-height:52px}
.trbravo{display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;padding:32px 8px}
.trbravo .tic{width:88px;height:88px;border-radius:26px;background:var(--amber);color:#fff}.trbravo .tic .i{width:52px;height:52px;stroke-width:2.4}
.trbravo p{color:var(--muted);font-size:1.0625rem;line-height:1.4}.trbravo .btn{width:100%;min-height:52px}
#trBody .run h3{margin:18px 4px 8px}
#trBody .sbtn{display:flex;align-items:center;justify-content:center;gap:14px;width:100%;min-height:76px;padding:0 20px;border:0;border-radius:20px;background:var(--surface-2);color:var(--ink);font:700 1.375rem var(--font);letter-spacing:-.02em;cursor:pointer}
#trBody .sbtn.ok{background:var(--accent-fill);color:#fff}#trBody .sbtn .i{width:32px;height:32px;stroke-width:2.2}#trBody .sbtn:disabled{opacity:.45}
#trBody .trnav .sbtn,#trBody .trbravo .sbtn{width:100%}
#trBody .stile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:120px;padding:14px 8px;border:0;border-radius:22px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);color:var(--ink);font:700 1.1875rem var(--font);text-align:center;cursor:pointer}
#trBody .stile .sti{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--accent-soft);color:var(--accent)}
#trBody .stile .sti .i{width:34px;height:34px;stroke-width:2}#trBody .stile.warn .sti{background:var(--granite-soft);color:var(--granite-ink)}
#trSheet.smode .btn.sbig{min-height:76px;font-size:1.25rem;border-radius:20px}
#trSheet.smode .trhint{font-size:1.1875rem}
.lnk.demogo{color:var(--muted);font-size:.8125rem;padding:2px 10px 6px}

/* fiche mission avant le départ : la liste des tâches se lit, elle ne se coche pas (les cases arrivent une fois la mission commencée) */
.taches.pre{padding:0}.tk.pre{padding:14px 16px;gap:14px;font-size:1.0625rem;min-height:52px;border-top:.5px solid var(--hair,var(--line));color:var(--ink)}.tk.pre:first-child{border-top:0}
.tk.pre .tkn{flex:none!important;width:26px!important;height:26px!important;min-width:26px;border-radius:50%;background:var(--surface-2);color:var(--muted);display:grid;place-items:center}.tk.pre>span:last-child{flex:1;min-width:0}.tkpre{margin:-2px 4px 8px}

/* ronds de la liste de tâches : fins et sobres (anneau gris clair, bleu pour la tâche en cours, bleu plein une fois faite) */
:root{--ring:#c7c7cc}@media (prefers-color-scheme:dark){:root{--ring:#545458}}
.taches.seq .tk input{width:28px;height:28px;min-width:28px;min-height:28px;border:1.5px solid var(--ring);background:transparent;color:var(--muted);font:600 .8125rem var(--font)}
.taches.seq .tk.next input{border:2px solid var(--accent);background:transparent;color:var(--accent)}
.taches.seq .tk input:checked{background-color:var(--accent);border-color:var(--accent);background-size:15px}
.tk.pre .tkn{border:1.5px solid var(--ring)!important;background:transparent!important;font-weight:600;font-size:.8125rem;width:28px!important;height:28px!important;min-width:28px!important}
.srun .taches.seq.stk .tk input{width:40px;height:40px;min-width:40px;min-height:40px;font-size:1rem;border-width:2px}

/* accueil simplifié : accès discret à la visite guidée et à la mission d'entraînement */
/* connexion sans mot de passe */
.mlk{display:flex;flex-direction:column;gap:10px;margin-top:6px}.mlk[hidden]{display:none}
.mlkor{display:flex;align-items:center;gap:10px;margin:4px 0 0;font-size:.875rem;color:var(--muted)}.mlkor::before,.mlkor::after{content:"";flex:1;height:1px;background:var(--line)}
.mlks{margin:0;padding:12px 14px 12px 34px;border-radius:14px;background:var(--surface-2);font-size:1rem;line-height:1.4;display:flex;flex-direction:column;gap:6px;text-align:left}
.mlkc{display:flex;flex-direction:column;gap:10px}.mlkc[hidden]{display:none}
.shh{margin:14px 16px -6px;font:600 .8125rem var(--font);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.shelp{margin:0}.shelp .ln.nr{min-height:68px;padding:10px 14px;gap:14px}
.shelp .ln.nr .ri{width:40px;height:40px;border-radius:11px;background:var(--accent-soft);color:var(--accent)}.shelp .ln.nr .ri .i{width:22px;height:22px}
.shelp .rt{display:flex;flex-direction:column;gap:2px;min-width:0}.shelp .rt b{font-size:1.0625rem;font-weight:600;line-height:1.25}.shelp .rt small{font-size:.9375rem;line-height:1.3;color:var(--muted)}.shelp .lnk{min-height:44px}

/* visite guidée : aperçu fixe de ce qu'explique l'étape, et animation d'entrée rejouée à chaque étape */
.tmock{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:16px;background:var(--bg);pointer-events:none;user-select:none}
.tmr{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:0 14px;border-radius:12px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);font-weight:600}
.tmr.on{background:var(--accent-soft);color:var(--accent)}.tmr small{font-weight:500;color:var(--muted)}.tmr.on small{color:var(--accent)}
.tmb{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:14px;background:var(--ink);color:var(--surface);font-weight:700}
.tmb.ok{background:var(--accent)}.tmb .i{width:20px;height:20px}
.tmb.hot,.tmt.warn{box-shadow:0 0 0 3px var(--accent)}
.tmc{display:flex;flex-direction:column;gap:6px;padding:12px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair)}.tmc small{color:var(--muted)}.tmc b{font-size:1.125rem}
.tmg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.tmt{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:14px;background:var(--surface);box-shadow:0 0 0 .5px var(--hair);font-size:.8125rem;font-weight:600;text-align:center}
.tmt .sti .i{width:22px;height:22px}
@media (prefers-reduced-motion:no-preference){
.tbub.tin{animation:tin .5s ease both}
.tbub.tin .tmock>*{animation:tmin .4s ease both}.tbub.tin .tmock>*:nth-child(2){animation-delay:.08s}.tbub.tin .tmock>*:nth-child(3){animation-delay:.16s}.tbub.tin .tmock>*:nth-child(4){animation-delay:.24s}
.tbub.tin .tmb.hot,.tbub.tin .tmt.warn{animation:tpulse 1.4s ease-in-out .4s 2}
@keyframes tin{from{opacity:0;margin-top:12px}to{opacity:1;margin-top:0}}
@keyframes tmin{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes tpulse{50%{box-shadow:0 0 0 6px var(--accent-soft)}}
}
/* mission en cours : le dernier contenu reste visible au-dessus de la barre « Terminer » (gros bouton, encoche, bandeau démo) */
.runmode .mbody{padding-bottom:calc(140px + env(safe-area-inset-bottom,0px))}
.runmode.smode .mbody{padding-bottom:calc(160px + env(safe-area-inset-bottom,0px))}
/* interrupteurs dans une ligne de liste : la règle des champs (.ln input) ne doit pas les rendre carrés ni sans fond */
.ln input.sw,label.ln input.sw{flex:none;width:51px;height:31px;margin:0;padding:0;border:0;border-radius:99px;background:var(--hair);box-shadow:none}
.ln input.sw:checked,label.ln input.sw:checked{background:var(--ok)}
/* attribuer une mission sans équipe : une action au lieu d'une impasse */
.asgnone{display:flex;flex-direction:column;gap:10px;padding:16px}.asgnone p{margin:0;color:var(--muted);font-size:.9375rem;line-height:1.4}.asgnone .btn{min-height:46px}
#asgSheet #asgRepW{margin-top:14px}
#asgSheet #asgHouses{margin-top:10px}
/* connexion par code (employés) : un grand champ, puis le nom et le statut en gros boutons */
.codef{gap:14px}
.codef .cfbig{font-size:1.5rem;font-weight:700;text-align:center;letter-spacing:.18em;padding:16px 14px;min-height:60px}
.cftxt{margin:-6px 0 0;text-align:center;font-size:.9375rem}
.cfwhere{margin-top:-10px;font-size:.875rem}
.cfmore{display:flex;flex-direction:column;gap:14px}
.cfst{display:flex;flex-direction:column;gap:8px}
.cfstl{font-size:.85rem;font-weight:600;color:var(--muted)}
.cfst button{min-height:52px;border:1.5px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);font:600 1.0625rem var(--font);cursor:pointer;text-align:center}
.cfst button[aria-checked="true"]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.cfios{margin:0;font-size:.875rem;line-height:1.4;text-align:center}
/* installation obligatoire sur téléphone (install.js) : icône de l'appli, étapes numérotées, code à retaper */
#install{overflow-y:auto;align-items:start}
#install .card{margin:auto 0;gap:16px;text-align:center}
.insapp{display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8125rem;color:var(--muted)}
.insapp img{border-radius:22.4%}
.insh h1+p{margin-top:6px}
.insb{display:flex;flex-direction:column;gap:12px}
.insb a.btn{text-decoration:none}
.insl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-radius:14px;background:var(--surface-2);text-align:left}
.insl li{display:flex;align-items:center;gap:12px;padding:13px 14px;font-size:1.0625rem;font-weight:500;line-height:1.3}
.insl li+li{border-top:.5px solid var(--hair,rgba(0,0,0,.12))}
.insl .n{flex:none;display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--ink);color:var(--surface);font-size:.875rem;font-weight:700}
.insl .tx{flex:1}
.insl .i{width:24px;height:24px;color:var(--accent)}
.inss{margin:0;font-size:.875rem;line-height:1.4}
.insp{margin:0;font-size:1.0625rem;line-height:1.4}
.inslost{margin-top:10px;font-weight:600}
.insok{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-size:1.25rem;color:var(--ok)}
.insok .i{width:26px;height:26px;stroke-width:2.6}
.inscode{display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 14px;border-radius:14px;background:var(--surface-2)}
.inscode small{color:var(--muted);font-size:.8125rem}
#install[data-os="android"] .insapp img{border-radius:50%}
#install:has(.insarrow){height:calc(100% - 52px)}
.insarrow{position:fixed;z-index:2;left:50%;bottom:calc(6px + env(safe-area-inset-bottom,0px));margin-left:-16px;display:grid;place-items:center;width:32px;height:32px;color:var(--accent);pointer-events:none;animation:insbob 1.3s ease-in-out infinite}
.insarrow.droite{left:auto;right:22px;margin-left:0}
.insarrow .i{width:30px;height:30px;stroke-width:2.4}
@keyframes insbob{0%,100%{transform:translateY(-7px)}50%{transform:translateY(1px)}}
@media (prefers-reduced-motion:reduce){.insarrow{animation:none}}
.mailbox{display:flex;flex-direction:column;gap:18px}
.cxh{display:block;font-size:.8125rem;font-weight:400;color:var(--muted);margin-top:2px}
/* version complète, plus simple : tuiles « Un souci ? » compactes sur la mission en cours, liste « À prendre » repliée */
#detBody .stiles.cmp{gap:10px}
#detBody .stiles.cmp .stile{min-height:92px;gap:6px;padding:12px 6px;border-radius:18px;font-size:.9375rem;font-weight:600}
#detBody .stiles.cmp .stile .sti{width:44px;height:44px;border-radius:14px}
#detBody .stiles.cmp .stile .sti .i{width:24px;height:24px}
.stile .stn{display:block;font-size:.75rem;font-weight:500;color:var(--muted);margin-top:-2px}
.apmini{display:flex;flex-direction:row;align-items:center;gap:12px;width:100%;padding:14px 16px;border:0;text-align:left;font:inherit;color:var(--ink);cursor:pointer;margin-top:12px}
.apmini .rt2{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.apmini b{font-size:1.0625rem;font-weight:600}.apmini small{font-size:.8125rem;color:var(--muted)}
.aph .apless{margin-left:auto;padding:4px 8px;font-size:.875rem;min-height:0}
#detBody .stiles.cmp .stile:last-child:nth-child(odd){grid-column:1/-1;flex-direction:row;min-height:64px;gap:12px}
/* planning sur téléphone : initiales (ou numéro) dans les pastilles de la semaine ; terminé ≠ annulé ; absents du jour */
.pchip .pini{display:none}
@media (max-width:899px){.pgrid.week .pchip em{display:none}.pgrid.week .pchip .pini{display:block;font:700 .66rem/1.25 var(--font);color:#111;text-align:center;letter-spacing:.02em}}
.pagenda .misrow.done b{text-decoration:none;color:var(--ink)}
.pabs{margin:6px 4px 8px;font-size:.875rem;color:var(--granite-ink)}
.absl{color:var(--granite-ink)!important;font-weight:600}
/* absences prévues (fiche d'un employé, Équipe) */
.abshd{display:flex;align-items:center;justify-content:space-between}
.absf{display:flex;flex-direction:column}.absf .ln input,.absf .ln select{max-width:11rem}
.absact{display:flex;gap:8px;padding:10px 16px}.absact .btn{flex:1;min-height:44px}
.logonly{display:flex;align-items:center;justify-content:space-between;margin:4px 4px 8px;font-weight:600;color:var(--granite-ink)}.logonly .lnk{padding:6px}
/* accueil patron : alertes regroupées dans une seule liste « À traiter » */
.home .bwg{padding:0;overflow:hidden}
.home .bwg .bw{border-radius:0;box-shadow:none;margin:0;background:transparent;padding:13px 16px;font-size:.9875rem}
.home .bwg .bw+.bw{border-top:.5px solid var(--hair)}
/* « Vérifie ta journée » : lignes comme sur l'accueil ; fin de mission : le nom de la mission suivante sous le bouton ; titres de fenêtre sur une ligne */
#dcBody .hcard{margin:0}#dcBody .hrw{border:0;font:inherit;text-align:left;cursor:pointer}#dcBody .hrw+.hrw::before{left:16px}
#dcBody .hrw b{font-size:1.0625rem;font-weight:600}#dcBody .hrw small{font-size:.8125rem;color:var(--muted)}
.finish .btn.dark{display:flex;flex-direction:column;align-items:center;gap:2px}.finish .btn.dark small{display:block;font-size:.8125rem;font-weight:500;opacity:.8}
.mbar .tx{white-space:nowrap}
/* page Confidentialité : blocs de texte */
.conft{background:var(--surface);border-radius:14px;padding:14px 16px;line-height:1.45}.conft p{margin:0}.conft p+p{margin-top:10px}.conft .btn{margin-top:10px}

/* fin d'accès d'un employé (v141) : fenêtre de date, boutons de la fiche Équipe, liste des missions à réattribuer, rappel sur l'accueil simplifié */
.dlgd{padding:0 20px 18px}
.dlgd input{width:100%;min-height:46px;padding:0 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-size:1.0625rem;text-align:center}
.ln.finact{justify-content:flex-end;gap:8px;flex-wrap:wrap}
.farow select{max-width:100%}
.sfin{margin:4px 0 0;text-align:center;color:var(--muted);font-size:.9375rem}

/* aperçu d'un document avant envoi : la page A4 à la largeur de l'écran, agrandie d'un appui */
.docb{max-width:900px}
.docv{overflow:auto;-webkit-overflow-scrolling:touch;border-radius:12px;background:var(--line);cursor:zoom-in}
.docv.zoom{cursor:zoom-out;max-height:70vh}
#docPage{width:210mm;background:#fff;color:#222;text-align:left;-webkit-text-size-adjust:none;text-size-adjust:none}
#docPage .pg{border-bottom:6px solid var(--line)}#docPage .pg:last-child{border-bottom:0}

/* « Avant de commencer » : une carte par réglage du téléphone, avec son état */
.prer{padding:4px 0 0}.prer .ln.nr{cursor:default;align-items:flex-start;padding-top:12px;padding-bottom:12px}
.prer .rt{display:flex;flex-direction:column;gap:2px}.prer .rt small{color:var(--muted);font-size:.875rem;line-height:1.35}
.prer .hv{flex:none;font-size:.875rem;color:var(--muted);white-space:nowrap}
.prer[data-st="ok"] .hv{color:var(--ok);font-weight:600}.prer[data-st="non"] .hv{color:var(--granite-ink);font-weight:600}
.prer>.btn{margin:0 12px 12px;width:auto;align-self:stretch}.preh{margin:0 16px 12px;font-size:.9375rem;line-height:1.4}
#preGo:disabled{opacity:.35}

/* saisie d'une journée d'un seul trait (début, fin) : les cases du milieu ne reviennent qu'avec « Journée avec coupure » */
#dayForm.one .mid,#dayForm.one #dH2{display:none}
#dayForm.one .g1{border-radius:12px 12px 0 0}#dayForm.one .g2{margin-top:-14px;border-radius:0 0 12px 12px;border-top:1px solid var(--line)}
#dcBody{gap:14px}#dcBody .sub{margin-top:0}

/* installation sur iPhone : les trois étapes épinglées en haut de l'écran, au-dessus de la fenêtre de partage */
.inspin{position:fixed;z-index:3;top:calc(8px + env(safe-area-inset-top,0px));left:10px;right:10px;max-width:460px;margin:0 auto;padding:8px;border-radius:16px;background:var(--surface);box-shadow:0 6px 28px rgba(0,0,0,.28);text-align:left}
.inspinh{margin:2px 6px 8px;font-size:.8125rem;line-height:1.3;color:var(--muted);text-align:center}
.inspin .insl li{padding:9px 12px;font-size:1rem;gap:10px}
.inspin[data-step="1"] .insl li:first-child{opacity:.45}.inspin[data-step="1"] .insl li:not(:first-child){background:var(--accent-soft,rgba(10,132,255,.14))}
.inspin[data-step="1"] .insl li:last-child{border-radius:0 0 14px 14px}
#install:has(.inspin){padding-top:calc(264px + env(safe-area-inset-top,0px))}
.insmore{display:flex;flex-direction:column;gap:12px;text-align:center}.insmore summary{list-style:none;cursor:pointer;color:var(--accent);min-height:48px;display:grid;place-items:center;font-size:1rem;font-weight:600;border-radius:14px;background:var(--accent-soft)}
.insmore summary::-webkit-details-marker{display:none}.insmore[open]{gap:12px}.insmore[open]>*+*{margin-top:12px}
/* Instagram : la flèche montre le menu ••• de la fenêtre, en haut à droite */
.insarrow.haut{bottom:auto;top:calc(6px + env(safe-area-inset-top,0px));animation-name:insbobh}.insarrow.haut .i{transform:rotate(180deg)}
#install:has(.insarrow.haut){height:100%;padding-top:52px}
@keyframes insbobh{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
/* Plus aucune simple ligne de texte cliquable (décidé le 11/10/2026, v161) : liens et boutons « fantômes » deviennent de vrais boutons teintés,
   pleine largeur quand ils sont seuls, compacts dans une ligne de liste, un en-tête ou un pied de page. Les boutons du haut des fenêtres (« Annuler », « Fermer ») restent ceux de la barre. */
.lnk,.btn.ghost{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 18px;border:0;border-radius:14px;background:var(--accent-soft);color:var(--accent);font:inherit;font-size:1rem;font-weight:600;line-height:1.25;text-align:center;text-decoration:none;cursor:pointer}
.lnk{width:100%}
.lnk.danger-t{background:var(--granite-soft);color:var(--granite-ink)}
.lnk[hidden],.btn.ghost[hidden]{display:none}
.lnk:active,.btn.ghost:active{filter:brightness(.95)}
/* compacts : dans une ligne de liste, un titre de section, le haut de la visite guidée, les pieds de page */
.ln .lnk,.offtop .lnk,.logonly .lnk,.lnk.apless,.ln.besr .lnk,.foot .lnk,.lnk.demogo,.lfoot .lnk{width:auto;min-height:36px;padding:0 14px;border-radius:12px;font-size:.9375rem;flex:none}
.lnk.demogo{align-self:center;margin:2px auto 6px;color:var(--accent)}
.tlnk{min-height:36px;min-width:0;padding:0 14px;border-radius:12px;background:var(--accent-soft);color:var(--accent);font-weight:600;font-size:.9375rem}
.tlnk.tlater{align-self:center;color:var(--accent)}
.tsimple .tlnk{min-height:44px;font-size:1.0625rem}
.foot,.lfoot{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.fact a[href^="tel:"]{display:inline-flex;align-items:center;min-height:32px;margin-top:4px;padding:0 12px;border-radius:99px;background:var(--surface);color:var(--accent);font-weight:600;text-decoration:none}

/* Accueil : le contenu ne défile plus derrière la barre du bas. Un voile de la couleur du fond, collé en bas de l'écran,
   le fait disparaître en fondu juste au-dessus de la barre ; la barre garde son aspect flottant. */
.dockbg{position:sticky;z-index:5;bottom:0;left:0;right:0;height:calc(104px + env(safe-area-inset-bottom,0px));margin-top:calc(-104px - env(safe-area-inset-bottom,0px));pointer-events:none;background:linear-gradient(to top,var(--bg) 0,var(--bg) 74%,transparent)}
.home .hm:not(.simple){padding-bottom:calc(112px + env(safe-area-inset-bottom,0px))}
.home .lnk,.home .btn.ghost{font-weight:600;text-align:center;justify-content:center}

/* suite d'un signalement : action proposée au patron, puis ce qui a été fait */
.sgsu{margin:8px 0 0;padding:8px 12px;border-radius:10px;background:var(--surface-2);font-size:.9375rem;font-weight:600;line-height:1.35}
.sgp{display:flex;margin-top:10px}.sgp .go-s{display:inline-flex;align-items:center;text-decoration:none}
.sged{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}.sged input{flex:1 1 100%;min-height:46px}.sged .go-s{flex:1 1 0;min-height:44px}

/* Équipe : suppression d'un compte (action rouge, comme les autres suppressions) */
.mbdel .rt{color:var(--granite-ink)}.mbdel .cxh{color:var(--muted)}

/* message : présentation de l'option « Réécriture des messages » quand elle n'est pas souscrite */
.vcpromo{display:flex;flex-direction:column;gap:6px;padding:12px 14px;border-radius:14px;background:var(--surface);text-align:left}.vcpromo[hidden]{display:none}
.vcpromo b{font-size:.9375rem}.vcpromo p{margin:0;font-size:.9rem;line-height:1.4;color:var(--muted)}.vcpromo .btn{align-self:flex-start;min-height:40px;text-decoration:none}

/* Connexion, attente, installation : l'écran défile quand son contenu dépasse la hauteur du téléphone (petit écran, clavier ouvert,
   lien de connexion déplié). La carte reste centrée quand elle tient, et commence en haut quand elle est plus haute que l'écran. */
.screen{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;align-items:start;padding-top:calc(20px + env(safe-area-inset-top,0px));padding-bottom:calc(20px + env(safe-area-inset-bottom,0px))}
.screen>.card{margin-top:auto;margin-bottom:auto}

/* Moins froid (décidé le 12/10/2026, v176) : fond sable chaud au lieu du gris bleuté, ambre du logo pour ce qui est réussi
   (mission faite, fin de journée validée, « Bravo »), police de l'appli (plus Playfair Display, v185) sur les grands titres, petit rebond quand on coche. */
.hh .htt b,.fht,.scard .sn,.sh b,.dhd b{font-family:var(--font);font-weight:700;letter-spacing:-.025em}
.hh .htt b{font-size:1.75rem;line-height:1.1}
.fht{font-size:1.75rem}.scard .sn{font-size:2rem}.sh b{font-size:2.25rem}.dhd b{font-size:1.875rem}
/* la coche grandit avec un léger rebond quand on coche (une transition : rien ne rejoue quand la liste est redessinée) */
@media (prefers-reduced-motion:no-preference){
  .tk input[type=checkbox],.apck input{transition:background-color .2s ease,border-color .2s ease,background-size .32s cubic-bezier(.2,.9,.3,1.6)}
  .tk input[type=checkbox]:not(:checked),.apck input:not(:checked){background-size:0}
}

/* missions à réattribuer : le menu est un vrai bouton teinté, sur sa propre ligne (avant : texte coupé « Réattribuer à ») */
label.ln.farow{flex-wrap:wrap;gap:8px;padding-top:10px;padding-bottom:12px}
label.ln.farow select:not([multiple]){flex:1 1 100%;direction:ltr;text-align:left;min-height:44px;padding:0 34px 0 14px;border-radius:12px;background-color:var(--accent-soft);color:var(--accent);font-weight:600;font-size:1rem;background-position:calc(100% - 12px) center}
/* « Mission impossible à faire » : détaché de ce qui précède (il était collé à la carte du dessus) */
.lnk.danger-t[data-cancel]{margin-top:18px}
/* « Maintenant » : un vrai petit bouton teinté (avant : texte gris) */
.ln .nowb{flex:none;min-height:36px;padding:0 12px;margin-left:6px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-size:.875rem;font-weight:600}
/* « Supprimer » d'une note : bouton rouge clair, comme toutes les suppressions (v161) */
.note .del{min-height:32px;padding:0 12px;border-radius:99px;background:var(--granite-soft);color:var(--granite-ink)}
/* « Terminer la journée » paraît grisé tant qu'un point n'est pas coché (il reste touchable : il dit quoi faire) */
#fjGo.off{opacity:.45}
/* en-tête « À prendre » : le titre prend la place, le compteur ne se coupe jamais, « Replier » à la fin */
.aph{align-items:center}.aph h3{flex:1 1 auto;min-width:0}.aph span{white-space:nowrap;flex:none}.aph .apless{margin-left:0;flex:none}
/* fiche logement : les catégories passent à la ligne (« Accès » et « Info » ne sont plus coupés) ; « Retirer ? » tient sur une ligne */
.cats{flex-wrap:wrap;overflow:visible}
[data-rm].conf{width:auto;min-width:0;padding:0 12px;white-space:nowrap;border-radius:99px;background:var(--granite-soft);color:var(--granite-ink);font:600 .8125rem var(--font)}
/* l'exemple du champ de code tient sur un petit écran (320 px) : lettres moins espacées pour le texte d'exemple */
.codef .cfbig::placeholder{letter-spacing:.04em;text-transform:none;font-weight:600}
@media (max-width:360px){.codef .cfbig{font-size:1.3rem;letter-spacing:.12em}}
/* petit téléphone (iPhone SE…) : photo de la mission suivante plus basse, pour que son bouton reste au-dessus de la barre du bas */
@media (max-height:700px){.fhp{height:108px}}
/* visite : seul, « Précédent » reste un petit bouton (il ne doit pas ressembler à l'action principale) */
.tact .btn[data-tv="prev"]:only-child{flex:0 0 auto;min-height:40px;padding:0 18px;font-size:.9375rem}
.tsimple .tact .btn[data-tv="prev"]:only-child{min-height:48px;font-size:1rem;align-self:flex-start}
/* mode sombre : la bulle de la visite se détache du voile noir (fond un ton plus clair et un filet) */
@media (prefers-color-scheme:dark){.tbub{background:#2c2c2e;box-shadow:0 0 0 .5px rgba(255,255,255,.18)}}
/* réglages (v184) : des sections nommées (Mon compte, Gestion, Réglages de la conciergerie, Aide, Application) au lieu d'un empilement de blocs */
.sech{margin:22px 4px -4px;font-size:1.3125rem;font-weight:700;letter-spacing:-.02em;color:var(--ink);line-height:1.2}
.mbody .me+.sech{margin-top:6px}
#menuSheet .col>.sech{margin-top:22px}
#menuSheet .col>h3{margin-top:10px}
/* réglages de la conciergerie (v185) : lignes repliées avec leur valeur, le formulaire et l'aide ne s'ouvrent qu'au toucher */
.setg>summary{list-style:none;cursor:pointer}.setg>summary::-webkit-details-marker{display:none}
.setg+.setg{border-top:1px solid var(--line)}
.setg>summary .hv{min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-left:auto;color:var(--muted);font-size:.9375rem}
.setg>summary .chev{transition:transform .2s}.setg[open]>summary .chev{transform:rotate(90deg)}
.setg[open]>summary{border-bottom:1px solid var(--line)}
.setb{background:var(--surface-2)}
.setb .ln+.ln{border-top:1px solid var(--line)}
.setb .sub{text-align:left;margin:0;padding:10px 16px 14px;font-size:.875rem}
@media (prefers-reduced-motion:reduce){.setg>summary .chev{transition:none}}
/* alertes urgentes (v187) : carte rouge en haut de l'accueil, bien plus visible qu'une alerte ordinaire */
.urgc{display:flex;flex-direction:column;gap:4px;padding:16px 18px;border-radius:20px;background:var(--granite-fill);color:#fff}
.urgc .bk{font-size:.75rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;opacity:.92}
.urgc b{font-size:1.25rem;line-height:1.25;letter-spacing:-.01em}
.urgc .us{font-size:1rem;line-height:1.35}
.urgc small{font-size:.875rem;opacity:.92}
.urga{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.urga .btn{flex:1;min-width:104px;min-height:46px;display:grid;place-items:center;text-align:center;text-decoration:none}
.urgc .btn.dark{background:#fff;color:var(--granite-fill)}
.urgc .btn.soft{background:rgba(255,255,255,.22);color:#fff}
