html{-webkit-text-size-adjust:100%}
body{margin:0}
.demobar .ds{display:none}
:root{
  --bg:#EEF3F2; --surface:#FFFFFF; --surface-2:#F6F9F8; --line:#D5E0DE;
  --ink:#15302E; --ink-2:#4A625F; --ink-3:#7A8F8C;
  --accent:#0F5C63; --accent-ink:#FFFFFF; --accent-soft:#DCEDEC;
  --ok:#23804F; --ok-soft:#DDF1E5; --warn:#A86A00; --warn-soft:#FBEFD6;
  --bad:#B3392F; --bad-soft:#F8E0DD; --night:#3E4C9A; --night-soft:#E3E6F7;
  --phone:#0E2322; --appbar:#0A4247; --appbar-ink:#FFFFFF;
  --display:ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --body:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#0D1716; --surface:#15211F; --surface-2:#1B2927; --line:#2A3B39;
    --ink:#E4EEEC; --ink-2:#A9BCB9; --ink-3:#7C908D;
    --accent:#5BB8B8; --accent-ink:#06201F; --accent-soft:#1D3A39;
    --ok:#5CC98C; --ok-soft:#173326; --warn:#E3A93A; --warn-soft:#352914;
    --bad:#EE7D72; --bad-soft:#3A1E1B; --night:#9AA6F0; --night-soft:#23284A;
    --phone:#050B0B; --appbar:#163D3D; --appbar-ink:#E4EEEC;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0D1716; --surface:#15211F; --surface-2:#1B2927; --line:#2A3B39;
  --ink:#E4EEEC; --ink-2:#A9BCB9; --ink-3:#7C908D;
  --accent:#5BB8B8; --accent-ink:#06201F; --accent-soft:#1D3A39;
  --ok:#5CC98C; --ok-soft:#173326; --warn:#E3A93A; --warn-soft:#352914;
  --bad:#EE7D72; --bad-soft:#3A1E1B; --night:#9AA6F0; --night-soft:#23284A;
  --phone:#050B0B; --appbar:#163D3D; --appbar-ink:#E4EEEC;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:15px;line-height:1.45;padding-inline:16px;padding-block:20px 40px}
h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;letter-spacing:-.01em}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.wrap{max-width:1240px;margin:0 auto;display:flex;flex-direction:column;gap:18px}
/* ---------- Back-office : panneau « Tests » à droite ---------- */
.adtools{display:none}
@media (min-width: 1024px){
  body[data-role="admin"] .adtools{display:block;position:fixed;top:96px;right:0;z-index:900}
  .adtab{position:absolute;right:0;top:0;writing-mode:vertical-rl;padding:14px 8px;border:1px solid var(--line);border-right:0;border-radius:10px 0 0 10px;background:var(--surface);color:var(--accent);font:inherit;font-weight:700;font-size:13.5px;letter-spacing:.02em;cursor:pointer;box-shadow:0 6px 18px -10px rgba(0,0,0,.35)}
  .adtab:hover{background:var(--accent-soft)}
  .adpanel{display:none;width:272px;max-height:calc(100vh - 120px);overflow:auto;margin-right:16px;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 14px 34px -14px rgba(0,0,0,.4);flex-direction:column;gap:16px}
  .adtools.open .adpanel{display:flex}
  .adtools.open .adtab{display:none}
}
@media (min-width: 1024px) and (max-width: 1839px){
  body[data-role="admin"].at-open{padding-right:316px}
  body[data-role="admin"] .adtools.open{top:0;bottom:0;right:0}
  .adtools.open .adpanel{width:300px;height:100%;max-height:none;margin:0;border-radius:0;border-width:0 0 0 1px;box-shadow:none;box-sizing:border-box}
}
@media (min-width: 1840px){
  body[data-role="admin"] .adtools{left:calc((100vw + 1240px) / 2 + 24px);right:16px;top:20px;bottom:20px}
  .adtab,.adx{display:none!important}
  .adpanel{display:flex;width:auto;height:100%;max-height:none;margin-right:0;box-shadow:none;box-sizing:border-box}
}
.adhead{display:flex;align-items:center;justify-content:space-between}
.adhead h2{margin:0;font-size:16px}
.adx{border:0;background:none;color:var(--ink-2);font-size:22px;line-height:1;padding:2px 6px;border-radius:8px;cursor:pointer}
.adx:hover{background:var(--surface-2)}
.adsec{display:flex;flex-direction:column;gap:8px;padding-top:14px;border-top:1px solid var(--line)}
.adsec h3{margin:0;font-size:14px;color:var(--ink)}
.adtgl{all:unset;box-sizing:border-box;width:100%;display:flex;align-items:center;gap:7px;cursor:pointer;font-weight:700;padding:4px 6px;margin:-4px -6px;border-radius:8px}
.adtgl:hover{background:var(--surface-2)}
.adtgl:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.adtgl span{flex:1}
.adtgl i{font-style:normal;color:var(--ink-3);font-size:18px;line-height:1;transition:transform .15s}
.adsec.on .adtgl i{transform:rotate(90deg)}
.adsec:not(.on) > :not(h3){display:none!important}
.adsec h3 svg{color:var(--accent)}
.adst{margin:0;font-size:13.5px;color:var(--ink-2)}
.adst .ok{color:var(--accent);font-weight:700}
.adrow{display:flex;gap:8px}
.adrow button{flex:1}
.adsec .field{margin:0}
.adres{margin:0;font-size:12.5px;color:var(--accent);font-weight:600}
.adsec .adst{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.adsec textarea.input{resize:vertical}
.adres.ko{color:var(--bad)}
.top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
.brand{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.brand h1{font-size:28px;font-weight:700}
.brand h1 span{color:var(--accent)}
.demo{font-size:13px;color:var(--ink-2)}
.seg{display:none;background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:3px}
.seg button{border:0;background:transparent;padding:7px 14px;border-radius:999px;font-weight:600;font-size:14px;color:var(--ink-2)}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.stage{display:grid;grid-template-columns:400px 1fr;gap:24px;align-items:start}
.note{font-size:13px;color:var(--ink-2);background:var(--surface);border:1px dashed var(--line);border-radius:10px;padding:10px 14px}
@media (max-width:980px){
  .seg{display:inline-flex}
  .stage{grid-template-columns:1fr}
  .stage[data-view="nurse"] .office{display:none}
  .stage[data-view="office"] .phone{display:none}
  .phone{margin:0 auto}
}
/* ---------- Téléphone ---------- */
.phone{width:100%;max-width:400px;background:var(--phone);border-radius:34px;padding:10px;box-shadow:0 18px 40px -18px rgba(8,40,38,.45)}
.screen{background:var(--bg);border-radius:26px;overflow:hidden;display:flex;flex-direction:column;height:760px;max-height:calc(100vh - 140px);min-height:560px}
.appbar{background:var(--appbar,var(--accent));color:var(--appbar-ink,var(--accent-ink));padding:14px 16px 12px;display:flex;flex-direction:column;gap:8px}
.appbar .row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.appbar h2{font-size:20px}
.daynav{display:flex;align-items:center;gap:6px}
.daynav button{border:0;background:rgba(255,255,255,.18);color:inherit;width:30px;height:30px;border-radius:8px;font-size:16px;line-height:1}
.daylabel{font-weight:600;font-size:14px;text-transform:capitalize}
.progress{height:8px;background:rgba(255,255,255,.22);border-radius:99px;overflow:hidden}
.progress i{display:block;height:100%;background:var(--appbar-ink,var(--accent-ink));border-radius:99px;transition:width .35s ease}
.progtxt{font-size:12.5px;opacity:.9}
.scroll{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:10px}
.tabbar{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);background:var(--surface)}
.tabbar button{border:0;background:transparent;padding:10px 4px 12px;font-size:12.5px;font-weight:600;color:var(--ink-3);display:flex;flex-direction:column;align-items:center;gap:3px}
.tabbar button svg{width:22px;height:22px}
.tabbar button[aria-current="page"]{color:var(--accent)}
.moment{font-size:11.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3);font-weight:700;margin-top:4px}
.visit{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}
.visit.rx{position:relative}
.visit.rx .pname{padding-right:24px}
.visit .rxwarn.tip{position:absolute;top:8px;right:8px;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:0;border-bottom:0;cursor:pointer;line-height:0}
.visit.done{background:var(--ok-soft);border-color:transparent}
.visit .head{display:flex;align-items:center;gap:10px}
.time{font-family:var(--mono);font-size:13px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;padding:3px 5px;width:100px}
.pname{font-weight:700;flex:1;min-width:0}
.pname small{display:block;font-weight:500;color:var(--ink-2);font-size:12.5px}
.tcol{position:relative;flex:none;display:flex}
.tcol .vdur{position:absolute;left:3px;bottom:100%;margin-bottom:1px;font-size:11px;color:var(--ink-3);line-height:1.15;white-space:nowrap;pointer-events:none}
.vleg{position:relative;font-size:12px;color:var(--ink-3);padding:0 0 0 26px;margin:-3px 0}
.vleg::before{content:"";position:absolute;left:12px;top:-7px;bottom:-7px;border-left:2px dotted var(--line)}
.order{display:flex;flex-direction:column;gap:2px}
.order button{border:1px solid var(--line);background:var(--surface-2);width:26px;height:20px;border-radius:6px;font-size:11px;line-height:1;color:var(--ink-2)}
.soins{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:2px;font-size:14px}
.soins li::before{content:"• ";color:var(--accent)}
.badges{display:flex;flex-wrap:wrap;gap:5px}
.b{font-size:11.5px;font-weight:700;padding:2px 7px;border-radius:99px;background:var(--accent-soft);color:var(--accent);font-family:var(--mono)}
.b.f{background:var(--warn-soft);color:var(--warn)}
.b.n{background:var(--night-soft);color:var(--night)}
.b.u{background:var(--bad-soft);color:var(--bad)}
.b.x{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--line)}
.donebtn{border:0;border-radius:10px;padding:10px;font-weight:700;background:var(--accent);color:var(--accent-ink)}
.visit.done .donebtn{background:transparent;color:var(--ok);border:1px solid var(--ok)}
.addbtn{border:1.5px dashed var(--line);background:transparent;border-radius:14px;padding:12px;font-weight:600;color:var(--ink-2)}
.empty{color:var(--ink-2);text-align:center;padding:30px 10px;font-size:14px}
.cheer{background:var(--ok-soft);color:var(--ok);border-radius:14px;padding:12px;text-align:center;font-weight:700}
/* Formulaires */
.field{display:flex;flex-direction:column;gap:5px}
.field > label,.lbl{font-size:12.5px;font-weight:700;color:var(--ink-2)}
.input{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:9px 10px;width:100%}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:10px}
.card h3{font-size:16px}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{position:relative}
.chip input{position:absolute;opacity:0;inset:0;cursor:pointer}
.chip span{display:inline-block;border:1px solid var(--line);background:var(--surface-2);border-radius:99px;padding:5px 11px;font-size:13px;font-weight:600;color:var(--ink-2)}
.chip input:checked + span{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.chip input:disabled + span{opacity:.4}
.chip input:focus-visible + span{outline:2px solid var(--accent);outline-offset:2px}
.check{display:flex;gap:8px;align-items:flex-start;font-size:14px}
.check input{margin-top:3px;accent-color:var(--accent);width:17px;height:17px;flex:none}
.check small{display:block;color:var(--ink-3);font-size:12px}
.check.disabled{opacity:.45}
.soinblock{border:1px solid var(--line);border-radius:12px;padding:10px;display:flex;flex-direction:column;gap:9px;background:var(--surface-2)}
.soinblock .x{align-self:flex-end;border:0;background:transparent;color:var(--bad);font-size:13px;font-weight:600}
.primary{border:0;border-radius:12px;padding:12px;font-weight:700;background:var(--accent);color:var(--accent-ink)}
.ghost{border:1px solid var(--line);border-radius:12px;padding:10px;font-weight:600;background:var(--surface);color:var(--ink)}
.photo{border:1.5px dashed var(--line);border-radius:12px;padding:12px;text-align:center;color:var(--ink-2);font-size:13.5px;position:relative}
.photo input{position:absolute;inset:0;opacity:0;cursor:pointer}
.photo img{max-height:140px;border-radius:8px;display:block;margin:0 auto 6px}
.stat{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.stat div{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:12px}
.stat b{display:block;font-family:var(--display);font-size:26px;font-variant-numeric:tabular-nums}
.stat span{font-size:12.5px;color:var(--ink-2)}
.list{display:flex;flex-direction:column;gap:6px;font-size:14px}
.list .it{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}
.list .it:last-child{border-bottom:0}
.muted{color:var(--ink-2);font-size:13px}
/* Modale */
.modal{position:absolute;inset:0;background:rgba(5,20,19,.45);display:flex;align-items:flex-end}
.sheet{background:var(--surface);width:100%;border-radius:20px 20px 0 0;padding:16px;display:flex;flex-direction:column;gap:10px;max-height:90%;overflow-y:auto}
.screen{position:relative}
/* ---------- Back-office ---------- */
.office{display:flex;flex-direction:column;gap:16px;min-width:0}
.ohead{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:10px}
.ohead h2{font-size:24px}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
@media (max-width:640px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}
.kpi b{display:block;font-family:var(--display);font-size:24px;font-variant-numeric:tabular-nums}
.kpi span{font-size:12.5px;color:var(--ink-2)}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px;min-width:0}
.panel > .ph{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.panel h3{font-size:17px}
.tbl{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:13.5px;min-width:640px}
th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:700;padding:6px 8px;border-bottom:1px solid var(--line)}
td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:top}
tr.saisi td{color:var(--ink-3)}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.cot{font-family:var(--mono);font-size:12.5px;line-height:1.6}
.alert{display:block;margin-top:4px;font-size:12px;color:var(--bad);font-weight:600}
.info{display:block;margin-top:4px;font-size:12px;color:var(--ink-3)}
.sbtn{border:1px solid var(--accent);color:var(--accent);background:transparent;border-radius:8px;padding:5px 9px;font-weight:700;font-size:12.5px;white-space:nowrap}
tr.saisi .sbtn{border-color:var(--ok);color:var(--ok)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:760px){.two{grid-template-columns:1fr}}
.sms{font-size:13px;background:var(--surface-2);border:1px solid var(--line);border-radius:12px 12px 12px 3px;padding:9px 11px;color:var(--ink)}
.legend{font-size:12.5px;color:var(--ink-2);display:grid;grid-template-columns:auto 1fr;gap:4px 10px;align-items:baseline}
.ocard{display:grid;grid-template-columns:150px 1fr;gap:14px;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--surface-2)}
.ocard.is-done{opacity:.75}
@media (max-width:640px){.ocard{grid-template-columns:1fr}}
.thumb{border:1px solid var(--line);background:var(--surface);border-radius:10px;padding:6px;display:flex;flex-direction:column;gap:4px;align-items:center;align-self:start;font-size:12px;font-weight:600;color:var(--accent)}
.thumb img{border-radius:6px;display:block;width:100%}
.odetail{display:flex;flex-direction:column;gap:9px;min-width:0}
.otop{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.otop h4{margin:0;font-family:var(--display);font-size:17px}
.state{font-size:12px;font-weight:700;padding:3px 9px;border-radius:99px;white-space:nowrap}
.state.todo{background:var(--accent-soft);color:var(--accent)}
.state.ok{background:var(--ok-soft);color:var(--ok)}
.meta{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0}
.meta dt{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);font-weight:700}
.meta dd{margin:0;font-weight:600}
table.stbl{min-width:520px}
.mentions{display:flex;flex-wrap:wrap;gap:6px}
.majl{margin:0;font-size:13.5px}
.oact{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.sm{padding:8px 12px;font-size:13.5px}
details summary{cursor:pointer;font-weight:700;color:var(--ink-2);padding:4px 0}
.olist{display:flex;flex-direction:column;gap:10px;margin-top:10px}
.light{position:fixed;inset:0;background:rgba(5,20,19,.8);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px;z-index:8}
.light img{max-height:80vh;max-width:100%;border-radius:10px;background:#fff}
.vstate{font-size:12.5px;font-weight:600;color:var(--ink-2);text-align:center}
.vstate.ok{color:var(--ok);border:1px solid var(--ok);border-radius:10px;padding:9px}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:600;font-size:14px;z-index:9}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- Ajouts v2 : connexion, fiche patient, prises en charge ---------- */
.kpis{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.who{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px;color:var(--ink-2)}
.who b{color:var(--ink)}
.linkbtn{border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:6px 12px;font-weight:600;font-size:13px}
body[data-role="idel"] .seg{display:none!important}
.stage[data-role="idel"]{grid-template-columns:1fr}
.stage[data-role="idel"] .office{display:none!important}
.stage[data-role="idel"] .phone{display:block!important;margin:0 auto}
.login{position:fixed;inset:0;z-index:7;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:calc(16px + env(safe-area-inset-top,0px)) 16px calc(16px + env(safe-area-inset-bottom,0px));overflow-y:auto}
.lcard{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:22px;display:flex;flex-direction:column;gap:12px;margin:auto}
.lcard h1{font-size:30px;font-weight:700}
.lcard h1 span{color:var(--accent)}
.lerr{background:var(--bad-soft);color:var(--bad);border-radius:10px;padding:8px 10px;font-size:13.5px;font-weight:600}
.demoacc{display:flex;flex-direction:column;gap:6px}
.demoacc button{text-align:left;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;padding:8px 10px;font-size:13.5px;font-weight:600}
.demoacc button small{display:block;color:var(--ink-3);font-size:12px;font-weight:500}
.ptoggle{display:grid;grid-template-columns:1fr 1fr;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:3px;gap:3px;flex:none}
.ptoggle button{border:0;background:transparent;border-radius:9px;padding:8px;font-weight:700;font-size:14px;color:var(--ink-2)}
.ptoggle button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.req{color:var(--bad);font-weight:700}
.input.err,.photo.err{border-color:var(--bad);background:var(--bad-soft)}
.pinfo{font-size:13px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.warnbox{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:10px;font-size:13.5px;font-weight:600;display:flex;flex-direction:column;gap:8px}
.warnbox button{align-self:flex-start}
.b.cv{background:var(--ok-soft);color:var(--ok)}
.b.cvx{background:var(--bad-soft);color:var(--bad)}
.asbar{background:var(--night-soft);color:var(--night);font-size:12.5px;font-weight:600;padding:8px 12px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.asbar select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:8px;padding:3px 6px;font-size:12.5px}
.thumbs{display:flex;flex-direction:column;gap:8px;align-self:start}
.thumb.none{color:var(--ink-3);padding:14px 8px;text-align:center}
.meta.wide{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px 18px}
.store{font-size:12px;color:var(--ink-3);font-family:var(--mono);word-break:break-all}
.ofilter{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2);font-weight:600}
.ofilter select{width:auto}
.obipw{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.obip{display:inline-flex;align-items:center;gap:6px}
.obip:disabled{opacity:.45;cursor:not-allowed}
.bpq{border:0;background:none;padding:0;cursor:pointer}
.bpq span{font-weight:600}
.bipnote{position:absolute;left:10px;right:10px;top:10px;z-index:2000;display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border-radius:16px;background:rgba(250,250,250,.97);color:#111;box-shadow:0 8px 24px -8px rgba(0,0,0,.45);transform:translateY(-130%);transition:transform .25s ease;cursor:pointer}
.bipnote.on{transform:none}
.bipnote .bipic{flex:none;width:30px;height:30px;border-radius:8px;background:var(--accent);color:var(--accent-ink);display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.bipnote b{display:block;font-size:14px}
.bipnote .bipapp{display:block;font-size:11.5px;color:#666;margin-bottom:1px}
.bipnote p{margin:2px 0 0;font-size:14px;line-height:1.3}
.state.off{background:var(--bad-soft);color:var(--bad)}
.acts{display:flex;flex-wrap:wrap;gap:6px}
.drow{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}
.drow:last-child{border-bottom:0}
.dinfo{flex:1;min-width:220px;font-size:14px;line-height:1.55}
.thumb.mini{width:84px;padding:4px}
.omodal{position:fixed;inset:0;background:rgba(5,20,19,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:8}
.omodal .sheet{max-width:440px;border-radius:16px;max-height:90vh}
.alert.inl{display:block}
.linfo{background:var(--ok-soft);color:var(--ok);border-radius:10px;padding:8px 10px;font-size:13.5px;font-weight:600}
.omodal .sheet.wide{max-width:760px}
.prev{font-size:12.5px;min-width:620px}
.prev td{padding:6px 6px}
.prev tr.bad td{background:var(--bad-soft)}
.dev{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line)}
.dev:last-child{border-bottom:0}
.hint{font-size:12px;color:var(--ink-3)}

/* ---------- Ajouts version serveur ---------- */
[hidden]{display:none!important}
.demobar{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:8px 12px;font-size:13px;font-weight:600}
.democode{background:var(--warn-soft);color:var(--warn);border-radius:10px;padding:8px 10px;font-size:13.5px;font-weight:600}
.democode b{font-family:var(--mono);font-size:16px;letter-spacing:.15em}
.linkbox{font-family:var(--mono);font-size:12px;word-break:break-all;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;padding:8px}
.busy{opacity:.6;pointer-events:none}
.photo.none{color:var(--ink-3)}

/* ---------- Horaires imposés ---------- */
.hbtn{flex:none;width:30px;height:30px;border:1px solid var(--line);background:var(--surface-2);border-radius:8px;color:var(--ink-3);display:inline-flex;align-items:center;justify-content:center;padding:0}
.hbtn.on{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.pname small.hchip{color:var(--accent);font-weight:600}
.pname small.hchip.tip{display:inline-block;align-self:flex-start;cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.pname small.hchip.ko{color:var(--bad)}
.rstop em .hreq{display:block;font-style:normal;font-size:11px;font-family:var(--body);color:var(--accent);text-align:right}
.rstop em .hreq.ko{color:var(--bad)}

/* ---------- Trajet optimisé ---------- */
.rcard{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:10px 12px;font-size:14px}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:38px;padding:0;color:var(--accent)}
.rgain{display:flex;flex-direction:column;gap:2px;background:var(--ok-soft);color:var(--ok);border-radius:12px;padding:10px 12px}
.rgain span{font-size:12.5px;opacity:.9}
.rmap{display:block;flex:none;width:100%;height:auto;aspect-ratio:300/170;background:var(--surface-2);border:1px solid var(--line);border-radius:12px}
.rmap .rl{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.rmap .rl.m0{stroke:var(--accent)} .rmap .rl.m1{stroke:var(--warn)} .rmap .rl.m2{stroke:var(--night)} .rmap .rl.m3{stroke:var(--ink-3)}
.rmap .rp rect{stroke:var(--surface);stroke-width:2}
.rmap .rp.m0 rect{fill:var(--accent)} .rmap .rp.m1 rect{fill:var(--warn)} .rmap .rp.m2 rect{fill:var(--night)} .rmap .rp.m3 rect{fill:var(--ink-3)}
.rmap .rp text{fill:#fff;font-size:10px;font-weight:700;text-anchor:middle;font-family:var(--body)}
.rmap .rc{fill:var(--ink);stroke:var(--surface);stroke-width:2}
.rleg{display:flex;flex-wrap:wrap;gap:12px;font-size:12.5px;color:var(--ink-2);margin-top:-4px}
.rleg i{display:inline-block;width:10px;height:10px;border-radius:99px;margin-right:5px;vertical-align:-1px}
.rleg i.k{border-radius:2px;background:var(--ink)} .rleg i.m0{background:var(--accent)} .rleg i.m1{background:var(--warn)} .rleg i.m2{background:var(--night)} .rleg i.m3{background:var(--ink-3)}
.rlist{display:flex;flex-direction:column;gap:4px}
.rstop{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--line);font-size:14px}
.rstop b{width:22px;height:22px;border-radius:99px;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-size:12px;flex:none}
.rstop span{flex:1;min-width:0}
.rstop small{display:block;color:var(--ink-3);font-size:12px}
.rstop em{font-style:normal;font-family:var(--mono);font-size:13px;color:var(--ink-2)}

/* Badges avec infobulle : pas de soulignement */
.b.tip{border-bottom:0;cursor:help}

/* Avertissement (jaune) : information manquante à compléter, pas une erreur de facturation */
.alert.warn{color:var(--warn)}
.b.w{background:var(--warn-soft);color:var(--warn)}
.thsel.on.al.warn{background:var(--warn-soft);color:var(--warn)}

/* ---------- Niveau BSI ---------- */
.bsisel{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;font-weight:600;color:var(--ink-2)}
.bsisel select{width:auto}

/* ---------- Infobulles ---------- */
.tip{cursor:help;border-bottom:1px dotted currentColor;border-radius:2px;white-space:nowrap}
.tip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.lrow{display:flex;align-items:center;gap:7px}
.tipbox b:empty{display:none}
.tip.tipi{flex:none;display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:0;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:12px;font-weight:800;line-height:1}
.tip.tipi:hover{background:var(--accent);color:var(--accent-ink)}
.tipbox{position:fixed;z-index:20;max-width:min(320px,calc(100vw - 16px));background:var(--ink);color:var(--bg);border-radius:10px;padding:9px 11px;font-family:var(--body);font-size:12.5px;line-height:1.4;box-shadow:0 8px 24px -8px rgba(0,0,0,.35);display:flex;flex-direction:column;gap:3px;pointer-events:none}
.tipbox b{font-family:var(--mono);font-size:13px}
.tipbox em{font-style:normal;font-weight:700;color:var(--accent-soft)}

/* ---------- En-têtes cliquables du tableau des soins ---------- */
th:has(.thsel),th:has(.thbtn){white-space:nowrap}
.thbtn{white-space:nowrap;border:0;background:transparent;padding:0;font:inherit;color:var(--accent);text-transform:inherit;letter-spacing:inherit;cursor:pointer;font-weight:700}
.thsel{position:relative;display:inline-block;color:var(--accent);cursor:pointer;white-space:nowrap}
.thsel select{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer;font-size:16px}
.thsel.on{background:var(--accent-soft);border-radius:6px;padding:2px 6px;text-transform:none;letter-spacing:0;font-size:12.5px}
.thsel.on.al{background:var(--bad-soft);color:var(--bad)}
.thx{border:0;background:transparent;color:var(--ink-3);cursor:pointer;margin-left:4px;font-size:13px;padding:2px 4px}

/* ---------- Calendrier de la tournée ---------- */
.dayline{display:flex;gap:0;align-items:stretch;background:rgba(255,255,255,.18);border-radius:12px;overflow:hidden}
.dnav{flex:none;width:44px;border:0;border-radius:0;background:transparent;color:inherit;font-size:22px;line-height:1;cursor:pointer}
.dnav:active,.dnav:hover{background:rgba(255,255,255,.12)}
@media (max-width:360px){.dnav{width:38px}}
.daypick{flex:1;min-width:0;width:auto;display:flex;align-items:center;gap:9px;border:0;background:transparent;color:inherit;border-radius:0;padding:10px 12px;text-align:left;cursor:pointer}
.daypick svg{flex:none}
.daypick .daylabel{flex:1;min-width:0}
.daypick:active,.daypick:hover{background:rgba(255,255,255,.12)}
.sheet.cal{gap:12px}
.calh{display:flex;align-items:center;justify-content:space-between;gap:8px}
.calh h3{font-size:17px}
.cgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cw{text-align:center;font-size:11.5px;font-weight:700;color:var(--ink-3);padding-bottom:2px}
.cday{border:1px solid var(--line);background:var(--surface);border-radius:10px;min-height:46px;padding:4px 2px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--ink)}
.cday b{font-size:14px;font-variant-numeric:tabular-nums}
.cday i{font-style:normal;font-size:11px;font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:99px;padding:0 6px;line-height:16px}
.cday i.ok{color:var(--ok);background:var(--ok-soft)}
.cday.vide{color:var(--ink-3);background:var(--surface-2)}
.cday.we b{color:var(--warn)}
.cday.today{border:2px solid var(--accent)}
.cday.sel{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.cday.sel b{color:var(--accent-ink)}
.cday.sel i{background:rgba(255,255,255,.25);color:var(--accent-ink)}

/* ---------- Compteurs cliquables du back-office (filtre) ---------- */
button.kpi{font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
button.kpi:hover{border-color:var(--accent)}
button.kpi[aria-pressed="true"]{border:2px solid var(--accent);background:var(--accent-soft);padding:11px}
.kfbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin-top:-6px}
.two.one{grid-template-columns:1fr}

/* ---------- Vrai téléphone : l'appli prend tout l'écran (plus de cadre de téléphone) ---------- */
@media (max-width: 600px){
  body{padding:0}
  .wrap{gap:0}
  .note{display:none}
  .top{padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;gap:8px}
  .brand h1{font-size:20px}
  .brand .demo{display:none}
  .demobar{border-radius:0;padding:5px 12px;font-size:11.5px;font-weight:600}
  .demobar .dl{display:none}
  .demobar .ds{display:inline}
  .stage{gap:0}
  .phone{max-width:none;width:100%;border-radius:0;padding:0;box-shadow:none;background:transparent}
  .screen{border-radius:0;height:calc(100vh - 110px);height:calc(100dvh - 110px);max-height:none;min-height:420px}
  .tabbar button{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}
  .office{padding:12px}
  .toast{bottom:calc(84px + env(safe-area-inset-bottom,0px));max-width:calc(100% - 32px)}
  /* iPhone : pas de zoom automatique quand on touche un champ */
  input,select,textarea,.input{font-size:16px}

  /* Infirmière : appli plein écran, la barre du haut est remplacée par l'en-tête de l'appli */
  body[data-role="idel"] .wrap{display:flex;flex-direction:column;height:100vh;height:100dvh}
  body[data-role="idel"] .top{display:none}
  body[data-role="idel"] .stage{display:flex;flex-direction:column;align-items:stretch;flex:1;min-height:0}
  body[data-role="idel"] .stage[data-role="idel"] .phone{display:flex!important;flex:1;min-height:0;margin:0}
  body[data-role="idel"] .screen{flex:1;height:auto;min-height:0}
  body[data-role="idel"] .appbar{padding-top:calc(14px + env(safe-area-inset-top,0px))}
  body[data-role="idel"] .demobar{padding-top:calc(5px + env(safe-area-inset-top,0px))}
  body[data-role="idel"] .demobar + .stage .appbar{padding-top:14px}
}

/* ---------- Compteurs cliquables du back-office (filtre) ---------- */
button.kpi{font:inherit;color:inherit;text-align:left;cursor:pointer;transition:border-color .15s,background .15s}
button.kpi:hover{border-color:var(--accent)}
button.kpi[aria-pressed="true"]{border:2px solid var(--accent);background:var(--accent-soft);padding:11px}
.kfbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--ink-2);margin-top:-6px}
.two.one{grid-template-columns:1fr}

/* ---------- Vraie carte de la tournée ---------- */
.rmapbox{flex:none;width:100%}
.rmapbox.live{aspect-ratio:300/210;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface-2);z-index:0}
.rmapbox.live.rfull{position:absolute !important;inset:0;z-index:1000;width:auto;height:auto;aspect-ratio:auto;border:0;border-radius:0}
.leaflet-bar a.rfs{display:flex;align-items:center;justify-content:center;color:#333}
.rmapnote{display:block;font-size:11.5px;color:var(--ink-3);margin-top:-6px}
.rmapnote:empty{display:none}
.rpinw{background:none;border:0}
.rpin{position:absolute;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center;height:20px;min-width:20px;padding:0 6px;box-sizing:border-box;border-radius:99px;color:#fff;font:700 11px/1 var(--body);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.35);white-space:nowrap}
.rpin.m0{background:var(--accent)} .rpin.m1{background:var(--warn)} .rpin.m2{background:var(--night)} .rpin.m3{background:var(--ink-3)}
.rpin.cab{width:14px;height:14px;min-width:0;padding:0;border-radius:3px;background:var(--ink)}
.leaflet-container{font-family:var(--body)}
.leaflet-control-attribution{font-size:10px}

/* ---------- « Y aller » ---------- */
.vrow{display:flex;gap:8px}
.vrow .donebtn{flex:1}
.navbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:10px;padding:0 12px;font-weight:700;font-size:14px}
.navlist{display:flex;flex-direction:column;gap:8px}
#oSec{display:none}
.sheet.subs #oSec{display:flex;flex-direction:column;gap:14px}
.sheet.subs .optacc,.sheet.subs #oGoTour,.sheet.subs #oGoRap,.sheet.subs #oGoSec,.sheet.subs #oInst,.sheet.subs #oOut{display:none}
.sheet.sub #oGoSec,.sheet.subr #oGoSec{display:none}
body[data-role="admin"] #oGoSec{display:none}
.pkbtn{display:inline-flex;align-items:center;justify-content:center;gap:8px}
.lsep{display:flex;align-items:center;gap:10px;color:var(--ink-3);font-size:12.5px}
.lsep::before,.lsep::after{content:"";flex:1;border-top:1px solid var(--line)}
.sheet.pushask{align-items:stretch;text-align:center}
.pushask .pushbell{font-size:34px;line-height:1;align-self:center}
.pushask h3{margin:0}
.sheet.sub #oInst,.sheet.subr #oInst{display:none}
button.primary:disabled,button.ghost:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.6);box-shadow:none}
.instos{display:flex;background:var(--surface-2);border:1px solid var(--line);border-radius:99px;padding:3px;align-self:flex-start}
.instos button{border:0;background:transparent;border-radius:99px;padding:6px 16px;font-weight:700;font-size:13.5px;color:var(--ink-2);cursor:pointer}
.instos button[aria-selected="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.inststeps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.inststeps li{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface-2)}
.instn{flex:none;width:22px;height:22px;border-radius:99px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:12px;display:inline-flex;align-items:center;justify-content:center}
.instic{flex:none;width:36px;height:36px;border-radius:10px;background:var(--surface);border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;color:#0A84FF}
.instt{display:block;font-weight:500;font-size:14.5px}
.instt b{font-weight:700}
.inststeps small{display:block;color:var(--ink-3);font-size:12.5px;margin-top:2px}
.instapp{width:22px;height:22px;border-radius:6px;background:var(--accent);color:var(--accent-ink);font-weight:800;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.visit.labstop{border-style:dashed;background:var(--surface-2)}
.visit.labstop.done{border-style:solid}
.labtime{display:inline-flex;align-items:center;min-height:28px;box-sizing:border-box;font-weight:600;color:var(--ink)}
.labic{flex:none;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;font-size:18px}
.navapp.main{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.navapp.main i{color:inherit}
.navmore summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--ink-2);padding:4px 0}
.navmore .navlist{margin-top:8px}
.navkeep small{display:block;font-weight:500;color:var(--ink-3);font-size:12px}
.navapp{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font-weight:700;text-decoration:none}
.navapp i{margin-left:auto;font-style:normal;color:var(--ink-3)}
.navapp .nicon{width:22px;height:22px;border-radius:6px;flex:none}
.navapp.waze .nicon{background:#33CCFF} .navapp.gmaps .nicon{background:#34A853} .navapp.apple .nicon{background:#8E8E93}
.rmom{display:flex;align-items:center;justify-content:space-between;gap:8px}
.gmlink{font-size:12px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--accent);text-decoration:none}

/* ---------- Tournée optimisée : ordre modifiable ---------- */
.rstop .grip{flex:none;width:28px;height:32px;margin-left:-6px;border:0;background:none;color:var(--ink-3);font-size:16px;letter-spacing:-3px;line-height:1;cursor:grab;touch-action:none;padding:0;border-radius:6px}
.rstop .grip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.rstop .grip.off{cursor:default}
.rstop.drag{background:var(--surface);transition:transform .12s ease}
.rstop.dragging{transition:none;position:relative;z-index:2;box-shadow:0 6px 18px -6px rgba(0,0,0,.35);border-radius:10px}
.rstop.dragging .grip{cursor:grabbing}
.rgain.alt{background:var(--warn-soft);color:var(--warn)}
.linkbtn{border:0;background:none;padding:0;font:inherit;font-weight:700;color:inherit;text-decoration:underline;cursor:pointer}
/* ---------- Mes cotations ---------- */
.cotday{border-top:1px solid var(--line);padding-top:8px}
.cotdh{display:flex;justify-content:space-between;gap:8px;font-size:14px}
.cotdh b:first-child::first-letter{text-transform:uppercase}
.cotrow{display:flex;justify-content:space-between;gap:10px;padding:7px 0;font-size:14px}
.cotrow + .cotrow{border-top:1px dashed var(--line)}
.cotc{font-family:var(--mono);font-size:12.5px;color:var(--ink-2);margin-top:3px;line-height:1.6}
.cotal{display:block;font-size:12px;color:var(--bad);margin-top:3px}
.cotv{display:flex;flex-direction:column;align-items:flex-end;gap:2px;white-space:nowrap}
.cotv span{font-size:12.5px}
.cotv .ok{color:var(--ok);font-weight:600}

/* ---------- Options et horaires « justes » ---------- */
.optbtn{flex:none;width:38px;height:38px;border:0;border-radius:10px;background:rgba(255,255,255,.12);color:var(--appbar-ink,#fff);display:inline-flex;align-items:center;justify-content:center;padding:0;cursor:pointer}
.optbtn:hover{background:rgba(255,255,255,.2)}
.optbtn:focus-visible{outline:2px solid var(--appbar-ink,#fff);outline-offset:2px}
.optacc{display:flex;align-items:center;gap:12px;font-size:14px}
.optacc .avatar{width:40px;height:40px;border-radius:99px;background:var(--accent-soft);color:var(--accent);display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;flex:none}
.opth{margin:4px 0 -4px;font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
button.danger{color:var(--bad);border-color:var(--bad)}
.pname small.hchip.juste{color:var(--warn)}
.rstop em .hreq.juste{color:var(--warn)}
.warnbox.soft{background:transparent;border:1px solid var(--warn);font-weight:500}

/* ---------- Placer un nouveau passage ---------- */
.insopt{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);cursor:pointer;font-size:14px}
.insopt.on{border:2px solid var(--accent);padding:9px 11px}
.insopt input{margin-top:3px;accent-color:var(--accent)}
.insopt small{display:block;color:var(--ink-3);font-size:12.5px;margin-top:2px}
.insopt small .ko{color:var(--bad);font-weight:600}
.impacts{margin:6px 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--ink-2)}
.impacts li.warn{color:var(--warn);font-weight:600}
.lockbtn{border:1px solid var(--line);background:var(--surface-2);border-radius:99px;padding:2px 8px;font-size:11.5px;font-weight:700;color:var(--ink-2);cursor:pointer;margin-left:4px}
.lockbtn.on{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}

/* ---------- Départ du soir depuis la maison ---------- */
.moment .dep{margin-left:8px;font-size:11.5px;font-weight:600;letter-spacing:0;text-transform:none;color:var(--night)}
.rpin.home{background:var(--night);border-radius:6px;font-size:13px;min-width:22px;height:22px}
.rleg i.h{border-radius:3px;background:var(--night)}

/* ---------- Points de départ et position du téléphone ---------- */
.startgrid{display:grid;grid-template-columns:auto 1fr;gap:6px 10px;align-items:center;font-size:13.5px;font-weight:600;color:var(--ink-2)}
.livebox{background:var(--night-soft);color:var(--night);border-radius:10px;padding:9px 11px;font-size:13px;font-weight:600}
.livebox small{display:block;font-weight:500;opacity:.85;margin-top:2px}
.livebox.off{background:var(--surface-2);color:var(--ink-2);font-weight:500}
.rpin.live{background:#fff;border-color:var(--night);font-size:13px;min-width:24px;height:24px}

/* ---------- Options : sous-page « Ma tournée » ---------- */
#oTour{display:none}
.sheet.sub #oTour{display:flex;flex-direction:column;gap:14px}
.sheet.sub .optacc,.sheet.sub #oGoTour,.sheet.sub #oOut{display:none}
.sheet.sub #oGoRap{display:none}
#oRap{display:none}
.sheet.subr #oRap{display:flex;flex-direction:column;gap:14px}
.rxin{display:flex;align-items:center;gap:10px}
.rxin .input{width:90px;text-align:center}
.rxin span{color:var(--ink-2);font-size:14px}
.pushst{margin:0;font-size:14px;color:var(--ink-2)}
.sheet.subr .optacc,.sheet.subr #oGoTour,.sheet.subr #oGoRap,.sheet.subr #oOut{display:none}
.optnav{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--ink);font:inherit;font-weight:700;cursor:pointer}
.optnav small{display:block;font-weight:500;color:var(--ink-3);font-size:12.5px}
.optnav .oi{width:34px;height:34px;border-radius:10px;background:var(--accent-soft);display:inline-flex;align-items:center;justify-content:center;font-size:17px;flex:none}
.optnav i{margin-left:auto;font-style:normal;font-size:20px;color:var(--ink-3)}
.oback{align-self:flex-start;text-decoration:none;color:var(--accent)}

.rstop b.cab{background:var(--surface-2);color:var(--ink-2);border:1px dashed var(--ink-3)}

/* ---------- Durée de mes soins ---------- */
.durlist{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.durlist > div{display:grid;grid-template-columns:1fr auto;gap:0 10px;padding:8px 12px;border-top:1px solid var(--line);font-size:13.5px}
.durlist > div:first-child{border-top:0}
.durlist b{font-family:var(--mono);color:var(--accent);text-align:right}
.durlist small{grid-column:1 / -1;color:var(--ink-3);font-size:12px}

/* ---------- Options : page « Durée estimée de mes soins » ---------- */
#oDur{display:none}
.sheet.sub.sub2 #oTour{display:none}
.sheet.sub.sub2 #oDur{display:flex;flex-direction:column;gap:14px}

.durlist > div.off{background:var(--surface-2);color:var(--ink-2);font-size:12.5px}
.durlist > div.reg b{color:var(--ink-3)}

/* ---------- Ligne 0 : point de départ ---------- */
.rstop.rstart{width:100%;text-align:left;background:var(--surface-2);border:1px dashed var(--line);border-radius:10px;padding:8px 10px;margin:2px 0 4px;font:inherit;color:inherit;cursor:pointer}
.rstop.rstart:hover{border-color:var(--accent)}
.rstop b.dep0{background:var(--night-soft);color:var(--night)}
.rstop.rstart em{font-family:var(--mono)}
.navapp small{display:block;font-weight:500;color:var(--ink-3);font-size:12px;margin-left:6px}
.navapp.other{gap:8px}
.navapp.other .input{flex:1;min-width:0}
.nicon.st{background:var(--surface-2);display:inline-flex;align-items:center;justify-content:center;font-size:13px}
button.navapp{font:inherit;font-weight:700;width:100%;text-align:left;cursor:pointer}

/* ---------- Recherche du type de soin ---------- */
.spick{display:flex;flex-direction:column;gap:4px}
.spcode{font-size:12px;color:var(--ink-3);font-family:var(--mono)}
.spick.open .spcode{display:none}
.splist{display:flex;flex-direction:column;max-height:300px;overflow-y:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface);overscroll-behavior:contain}
.splist[hidden]{display:none}
.spopt{display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;padding:9px 12px;border:0;border-top:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:14px;cursor:pointer;width:100%}
.spopt:first-child{border-top:0}
.spopt small{font-size:12px;color:var(--ink-3);font-family:var(--mono)}
.spopt:hover,.spopt:focus-visible{background:var(--surface-2);outline:none}
.spopt.on{background:var(--accent-soft, var(--surface-2))}
.spopt.on span{font-weight:700}
.spgrp{margin:0;padding:8px 12px 4px;font-size:11.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);background:var(--surface-2);position:sticky;top:0}
.sphint{margin:0;padding:10px 12px;font-size:13px;color:var(--ink-3)}
.spall{margin:8px 12px 10px;align-self:flex-start}
