/* styles/jetons.css */
/* Apiviz — jetons : couleurs, durées, courbes, ombre, rayon, bandeau (IT-03, AP-FEAT-015).
   Charte Apiviz (docs/CHARTE_GRAPHIQUE.md) : sapin, miel, miel doux, cire, prairie. Noms d'usage en commentaire.
   Les trois blocs :root d'index.html, fusionnés : un jeton se change ici et nulle part ailleurs. */
:root{
  --ink:#1B2420; /* encre */
  --muted:#55605A; /* lichen : texte secondaire */
  --ground:#F4F6F0; /* prairie : fond */
  --card:#fff;
  --line:#DEE2D8;
  --line2:#C4CABD;
  --pine:#1E2B24; /* sapin : marque, actions */
  --pine2:#2C3D33;
  --honey:#E3A008; /* miel : alvéoles, API, à surveiller */
  --honeysoft:#FBEFC9; /* miel doux : bandeau */
  --honey-light:#F6C453; /* miel clair : texte miel sur sapin uniquement */
  --cire:#FFF8E7; /* cire : reflet de l'œil, logo sur sapin */
  --good:#2F6B4F;
  --watch:#7D5200;
  --crit:#A61B1B;
  --duree-rapide:.15s;
  --duree:.24s;
  --duree-lente:.42s;
  --sortie:cubic-bezier(.22,1,.36,1);
  --ressort:cubic-bezier(.34,1.56,.64,1);
  --shadow:0 1px 2px rgba(30,43,36,.05),0 10px 28px -20px rgba(30,43,36,.28);
  --radius:14px;
  --goodbg:#DFEDE4;
  --watchbg:#FBEFC9;
  --critbg:#F8E3E0;
  --bandeau:#FBEFC9;
  --bandeau-texte:#1B2420;
  --bandeau-lien:#3F4A44;
  --bandeau-actif:#fff;
  --bandeau-survol:rgba(255,255,255,.55);
}
/* styles/01-base.css */
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--ground);color:var(--ink);font-family:'Instrument Sans',system-ui,sans-serif;font-size:15px;line-height:1.4}
h1,.brand,.big{font-family:'Bricolage Grotesque',system-ui,sans-serif}
h1{margin:0;font-size:30px;line-height:1.1;letter-spacing:-.01em}
h2{margin:0 0 10px;font-size:16px}
p{margin:0}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{width:100%;min-height:46px;padding:10px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-size:16px}
textarea{min-height:76px;resize:vertical}
label{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--pine);outline-offset:3px;box-shadow:0 0 0 3px var(--honey)}
.btn{min-height:46px;padding:0 16px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-weight:600}
.btn.main{background:var(--pine);border-color:var(--pine);color:#fff}
.btn.block{width:100%}
.btn.danger{color:var(--crit);border-color:var(--crit)}
.btn:disabled{opacity:.55;cursor:default}
.link{background:none;border:0;padding:6px 0;color:#245640;font-weight:600;text-decoration:underline;min-height:32px;text-align:left}
.shell{display:flex;min-height:100vh}
.side{flex:none;width:232px;background:var(--pine);color:#fff;padding:24px 14px;display:flex;flex-direction:column;gap:4px}
.brand{display:flex;align-items:center;gap:10px;font-size:22px;font-weight:700;padding:0 8px 20px}
.nav{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border:0;border-radius:8px;background:none;color:#fff;font-weight:500;text-align:left;width:100%}
.nav:hover{background:var(--pine2)}
.nav.on{background:var(--honey);color:var(--ink)}
.side .me{margin-top:auto;font-size:12px;color:#C9D2CB;padding:12px 8px 0;word-break:break-all}
.side .link{color:#F3D27A}
main{flex:1;min-width:0;padding:28px 32px 48px}
.wrap{max-width:1040px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
.head{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;justify-content:space-between}
.sub{color:var(--muted);margin-top:3px}
.actions{display:flex;flex-wrap:wrap;gap:8px}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px;align-items:start}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;min-width:0}
.card.tbl{padding:12px 6px 8px;overflow-x:auto}
.card.tbl h2{margin:0 10px 6px}
.kpi .l{font-size:13px;font-weight:600;color:var(--muted)}
.kpi .big{font-size:31px;font-weight:700;font-variant-numeric:tabular-nums}
.kpi .s{font-size:13px;color:var(--muted)}
table{width:100%;border-collapse:collapse}
th{font-size:12px;font-weight:600;color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line2);white-space:nowrap}
td{padding:10px;border-bottom:1px solid #EDEFE7;vertical-align:middle}
tr:last-child td{border-bottom:0}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.hexes{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:10px 6px}
.hexbtn{background:none;border:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;min-height:44px}
.hexbtn:hover{transform:translateY(-2px)}
.hex{width:82px;height:71px;display:flex;align-items:center;justify-content:center;text-align:center;padding:0 10px;clip-path:polygon(25% 2%,75% 2%,100% 50%,75% 98%,25% 98%,0 50%);color:#fff;font-weight:700;font-size:13px;line-height:1.1}
.pick{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:6px}
.pick button{min-height:46px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-weight:600;font-size:14px;padding:0 4px}
.pick button.on{background:var(--honey);border-color:var(--honey)}
.tag{font-size:12px;font-weight:600}
.good{color:var(--good)}.bg-good{background:var(--good)}
.watch{color:var(--watch)}.bg-watch{background:var(--honey);color:var(--ink)}
.crit{color:var(--crit)}.bg-crit{background:var(--crit)}
.todo{display:flex;gap:10px;padding:10px 0;background:none;border:0;border-top:1px solid #EDEFE7;width:100%;text-align:left;min-height:44px}
.todo:first-of-type{border-top:0}
.todo b{flex:none;min-width:82px;font-size:12px;padding-top:2px}
.bars{display:flex;flex-direction:column;gap:9px}
.bar{display:flex;align-items:center;gap:8px;font-size:13px}
.bar span:first-child{width:80px;flex:none;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar i{display:block;height:15px;background:var(--honey);border-radius:0 4px 4px 0;min-width:2px}
.bar .t{flex:1}
.bar span:last-child{width:62px;flex:none;text-align:right;font-weight:600;font-variant-numeric:tabular-nums}
.track{height:10px;background:#E8EAE2;border-radius:5px;overflow:hidden;margin:8px 0}
.track i{display:block;height:100%;background:var(--honey)}
.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.seg button{min-height:46px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-weight:600;font-size:14px;padding:0 3px}
.seg button.on{background:var(--pine);border-color:var(--pine);color:#fff}
.field{display:flex;flex-direction:column;gap:7px}
.field>.t{font-size:14px;font-weight:700}
.stepper{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 0;border-top:1px solid #EDEFE7}
.stepper:first-of-type{border-top:0}
.stepper .ctl{display:flex;align-items:center;gap:6px;flex:none}
.stepper .ctl button{width:44px;height:44px;border:1px solid var(--line2);border-radius:8px;background:#fff;font-size:20px}
.stepper .ctl span{min-width:48px;text-align:center;font-weight:700}
.small{font-size:13px;color:var(--muted)}
.empty{color:var(--muted);padding:6px 10px}
.notice{background:var(--honeysoft);border-radius:10px;padding:12px 14px}
.toast{position:fixed;left:50%;bottom:88px;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);background:var(--pine);color:#fff;padding:10px 16px;border-radius:8px;z-index:50;font-weight:600}
.toast.err{background:var(--crit)}
.auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px;background:var(--pine)}
.auth form{width:min(400px,100%);display:flex;flex-direction:column;gap:12px;padding:24px;background:#fff;border-radius:12px}
.auth .brand{padding:0}
.sep{height:1px;background:#33453A;margin:8px 10px}
.side{overflow-y:auto}
.btn.sm{min-height:38px;padding:0 10px;font-size:13px}
.stack{display:flex;flex-direction:column;gap:12px}
.form{display:flex;flex-direction:column;gap:14px;max-width:560px;width:100%}
.two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.pad{padding:0 10px 8px}
.scroll{overflow-x:auto}
.subtabs{display:inline-flex;gap:4px;background:#E6E8DF;border-radius:10px;padding:4px;align-self:flex-start;max-width:100%}
.subtabs button{min-height:40px;border:0;border-radius:7px;background:none;padding:0 16px;font-weight:600;color:var(--muted)}
.subtabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(0,0,0,.1)}
.hero{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:28px}
.hero h2{font-size:21px;margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif}
.hexdeco{width:64px;height:56px;background:var(--honey);clip-path:polygon(25% 2%,75% 2%,100% 50%,75% 98%,25% 98%,0 50%)}
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 16px;margin-top:6px}
.step{display:flex;align-items:center;gap:10px;background:none;border:0;min-height:44px;text-align:left;font-weight:600;padding:0}
.step .dot{flex:none;width:24px;height:24px;border-radius:50%;border:2px solid var(--line2);display:flex;align-items:center;justify-content:center;font-size:13px}
.step.ok{color:var(--muted);font-weight:500;opacity:1}
.step.ok .dot{background:var(--good);border-color:var(--good);color:#fff}
.rlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px}
.rcard{display:flex;align-items:center;gap:12px;background:var(--ground);border:0;border-radius:8px;padding:10px 12px;text-align:left;min-height:60px}
.rcard:hover{background:#ECEEE5}
.rmain{flex:1;min-width:0;display:flex;flex-direction:column}
.rcard .num{display:flex;flex-direction:column;align-items:flex-end}
.small-hex{flex:none;width:30px;height:26px;padding:0}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:10px}
.chips button{min-height:38px;border:1px dashed var(--line2);border-radius:999px;background:none;padding:0 12px;font-size:13px;font-weight:600}
.chips button:hover{background:var(--ground)}
.menu{display:flex;flex-direction:column;padding:6px 14px}
.menu button{display:flex;align-items:center;gap:12px;min-height:54px;background:none;border:0;border-top:1px solid #EDEFE7;text-align:left;font-weight:600}
.menu button:first-child{border-top:0}
.task{display:flex;align-items:center;gap:12px;border-top:1px solid #EDEFE7;padding:6px 0}
.task:first-of-type{border-top:0}
.check{flex:none;width:30px;height:30px;border-radius:8px;border:2px solid var(--line2);background:#fff;font-weight:700;color:#fff}
.task.done .check{background:var(--good);border-color:var(--good)}
.task.done b{text-decoration:line-through;color:var(--muted);font-weight:500}
.tmain{flex:1;min-width:0;background:none;border:0;text-align:left;padding:6px 0;display:flex;flex-direction:column;min-height:44px}
.simgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-top:10px}
.yr{flex-direction:row;align-items:center;gap:8px}
.yr select{width:auto;min-height:44px}
.chart{display:block;width:100%;height:auto;touch-action:pan-y}
.chart .gl{stroke:#E8EAE2;stroke-width:1}
.chart .gl.zero{stroke:#9AA39C}
.chart .at{font-size:11px;fill:var(--muted);font-variant-numeric:tabular-nums}
.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;margin-bottom:6px}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:12px;height:12px;border-radius:3px}
.dt{margin-top:8px;font-size:13px}
.dt summary{cursor:pointer;color:#245640;font-weight:600;min-height:28px}
.dt td,.dt th{padding:5px 8px;font-size:13px}
.tip{position:fixed;z-index:60;background:var(--pine);color:#fff;font-size:12px;padding:7px 10px;border-radius:7px;white-space:pre-line;pointer-events:none;max-width:220px}
.fab{display:none;position:fixed;right:16px;bottom:78px;width:56px;height:56px;border-radius:16px;border:0;background:var(--honey);color:var(--ink);font-size:28px;line-height:1;box-shadow:0 4px 12px rgba(0,0,0,.25);z-index:21}
.quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
a{color:#245640}
.bottom{display:none}
@media (max-width:800px){
  .side{display:none}
  main{padding:18px 16px 96px}
  h1{font-size:26px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid2{grid-template-columns:minmax(0,1fr)}
  .kpi .big{font-size:24px}
  .bottom{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;background:var(--pine);padding:4px 2px calc(4px + env(safe-area-inset-bottom));z-index:20}
  .bottom button{background:none;border:0;color:#fff;font-size:11px;font-weight:600;min-height:54px;border-radius:8px;padding:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
  .fab{display:block}
  .simgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  td .link{white-space:nowrap}
  .form{max-width:none}
  .subtabs{display:flex}
  .subtabs button{flex:1}
  .bottom button.on{color:var(--honey)}
}
/* styles/02-identite-et-confort-d.css */
/* Identité et confort d'usage */
html{-webkit-text-size-adjust:100%}
body{-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
h1{font-size:34px;font-weight:700;letter-spacing:-.02em}
h2{font-size:16px;font-weight:700;letter-spacing:-.005em}
.card{border:0;border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}
.btn{border-radius:10px;transition:transform .12s ease,background .15s ease,box-shadow .15s ease}
.btn:hover{box-shadow:0 2px 8px rgba(30,43,36,.12)}
.btn:active,.pick button:active,.seg button:active,.chips button:active{transform:scale(.97)}
.btn.main{background:var(--pine)}
.btn.main:hover{background:var(--pine2)}
.btn.honey{background:var(--honey);border-color:var(--honey);color:var(--ink)}
.btn.honey:hover{background:#F0B021}
.btn.ghost{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.28);color:#fff}
.btn.ghost:hover{background:rgba(255,255,255,.18)}
input,select,textarea{border-radius:10px;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--honey);box-shadow:0 0 0 3px rgba(227,160,8,.22)}
.side{background:var(--pine);padding:22px 12px;position:sticky;top:0;height:100vh}
.brand{padding:2px 10px 22px;display:block}
.brand img{display:block}
.nav{border-radius:10px;color:#D5DDD7;font-weight:500;transition:background .15s ease,color .15s ease}
.nav:hover{background:rgba(255,255,255,.07);color:#fff}
.nav.on{background:rgba(227,160,8,.16);color:#F6C453;font-weight:600}
.sep{background:rgba(255,255,255,.09)}
.side .me{display:flex;gap:10px;align-items:center;padding:12px 6px 0;word-break:normal}
.me .mail{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me .link{padding:0;min-height:24px;font-size:12px}
.avatar{flex:none;width:34px;height:34px;border-radius:50%;background:var(--honey);color:var(--ink);border:0;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}
.topbar{display:none}
.wrap.enter{animation:rise .24s ease both}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.eyebrow{margin:0 0 6px;font-size:13px;font-weight:600;color:#F6C453}
.eyebrow::first-letter{text-transform:uppercase}
.head.hero-head{position:relative;overflow:hidden;background:var(--pine);color:#fff;border-radius:18px;padding:26px 28px;align-items:center}
.head.hero-head::after{content:"";position:absolute;right:-30px;top:-34px;width:260px;height:200px;background:url(../symbole-apiviz.svg) center/contain no-repeat;opacity:.1;filter:brightness(4) saturate(0);pointer-events:none}
.head.hero-head>*{position:relative;z-index:1}
.head.hero-head h1{color:#fff;font-size:36px}
.head.hero-head .sub{color:#C9D2CB}
.kpi{padding:16px 18px}
.kpi .big{letter-spacing:-.02em}
.tag{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;background:#ECEEE6}
.tag::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.tag.good{background:var(--goodbg)}.tag.watch{background:var(--watchbg)}.tag.crit{background:var(--critbg)}
.comb{display:flex;flex-direction:column;align-items:flex-start;width:fit-content;margin:0 auto;padding:4px 0 2px}
.comb-row{display:flex;gap:6px;margin-top:-16px}
.comb-row:first-child{margin-top:0}
.comb-row:nth-child(even){margin-left:49px}
.cell{width:92px;height:80px;border:0;padding:0 12px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);color:#fff;font-weight:700;font-size:12.500px;line-height:1.15;transition:transform .15s ease,filter .15s ease;display:flex;align-items:center;justify-content:center}
.cell span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cell:hover{transform:scale(1.05);filter:brightness(1.08)}
.comb-legend{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px;justify-content:center}
.todo{border-radius:0;transition:opacity .15s ease}
.todo:hover{opacity:.75}
.subtabs{background:#E9EAE2;border-radius:12px}
.subtabs button{border-radius:9px;transition:background .15s ease,color .15s ease}
.rcard{border-radius:12px;transition:transform .12s ease,background .15s ease}
.rcard:active{transform:scale(.99)}
.hero{border-radius:18px;padding:32px;align-items:center;text-align:center}
.hero .sub{max-width:420px}
.hexdeco{width:120px;height:72px;background:url(../symbole-apiviz.svg) center/contain no-repeat;clip-path:none}
.track{height:8px;background:#ECEEE6}
.track i{border-radius:5px;transition:width .3s ease}
.step{border-radius:8px}
table{font-variant-numeric:tabular-nums}
th{border-bottom:1px solid var(--line)}
tbody tr{transition:background .12s ease}
tbody tr:hover{background:#FAFAF6}
.toast{top:18px;bottom:auto;border-radius:12px;box-shadow:0 10px 26px rgba(20,28,24,.3);animation:drop .2s ease both}
@keyframes drop{from{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translateX(-50%)}}
.tip{border-radius:9px;box-shadow:0 6px 16px rgba(20,28,24,.25)}
.loader{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--pine)}
.loader img{width:112px;animation:breathe 1.2s ease-in-out infinite}
@keyframes breathe{50%{opacity:.45;transform:scale(.94)}}
.auth{background:var(--pine) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='84' height='146' viewBox='0 0 84 146'%3E%3Cpath d='M42 0l42 24v49L42 97 0 73V24zM42 97v49M0 24L-42 0M84 24l42-24' fill='none' stroke='%23fff' stroke-opacity='.05' stroke-width='2'/%3E%3C/svg%3E")}
.auth form{border-radius:20px;padding:28px;box-shadow:0 24px 60px rgba(0,0,0,.3)}
.auth .brand{padding:0}
.auth .sub{margin:-6px 0 6px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (max-width:800px){
  h1{font-size:27px}
  .topbar{display:flex;position:sticky;top:0;z-index:15;align-items:center;justify-content:space-between;background:var(--pine);padding:calc(10px + env(safe-area-inset-top)) 16px 10px}
  .shell{display:block}
  .head.hero-head{padding:20px;margin-top:-2px;border-radius:16px}
  .head.hero-head h1{font-size:30px}
  .head.hero-head .actions{width:100%}
  .head.hero-head .btn{flex:1}
  .bottom{background:#fff;box-shadow:0 -6px 20px rgba(30,43,36,.1);padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
  .bottom button{color:var(--muted);font-weight:600;transition:color .15s ease}
  .bottom button.on{color:var(--pine)}
  .bottom button svg{width:40px;height:26px;padding:3px 0;border-radius:13px;transition:background .15s ease}
  .bottom button.on svg{background:#FBEBC4}
  .fab{right:16px;bottom:84px;border-radius:18px;font-weight:500;box-shadow:0 8px 20px rgba(160,110,0,.4);transition:transform .12s ease}
  .fab:active{transform:scale(.92)}
  .cell{width:88px;height:76px;font-size:12px}
  .comb-row{margin-top:-15px;gap:5px}
  .comb-row:nth-child(even){margin-left:46px}
  .toast{top:64px}
}
/* styles/03-photos-de-visite.css */
/* Photos de visite */
.ph-grid{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 10px}
.ph-th{position:relative;width:76px;height:76px;padding:0;border:0;border-radius:8px;overflow:hidden;background:var(--line);flex:none}
.ph-th img{width:100%;height:100%;object-fit:cover;display:block}
.ph-mini{margin:8px 0 2px}.ph-mini .ph-th{width:56px;height:56px}
.ph-x{position:absolute;top:3px;right:3px;width:26px;height:26px;border:0;border-radius:50%;background:rgba(20,28,24,.72);color:#fff;font-size:18px;line-height:1}
.ph-wait{position:absolute;left:0;right:0;bottom:0;background:rgba(20,28,24,.7);color:#fff;font-size:10px;padding:2px 0;text-align:center}
.ph-add{display:flex;gap:8px;flex-wrap:wrap}.ph-add .btn{display:flex;align-items:center;justify-content:center;cursor:pointer}
#photoView{padding:0;border:0;border-radius:var(--radius);max-width:min(96vw,900px);width:auto;background:var(--card)}
#photoView::backdrop{background:rgba(10,14,12,.8)}
#photoView figure{margin:0}
#photoView img{display:block;max-width:100%;max-height:72vh;margin:0 auto}
#photoView figcaption{padding:10px 14px 0;font-size:13px;color:var(--muted)}
#photoView .ph-bar{display:flex;gap:8px;padding:12px 14px 14px}
/* styles/04-hors-ligne.css */
/* Hors ligne */
.hl-band{display:flex;align-items:center;gap:10px;margin:-28px -32px 20px;padding:10px 32px;font-size:13px;font-weight:600}
.hl-band svg{flex:none}
.hl-band.off{background:var(--watchbg);color:#7D5200}
.hl-band.sync{background:var(--goodbg);color:#145238}
.hl-band.corr{background:var(--critbg);color:var(--crit)}
.hl-band>span{flex:1;min-width:0}
.hl-pastille{flex:none;min-height:32px;padding:0 12px;border:0;border-radius:999px;background:var(--crit);color:#fff;font-weight:700;font-size:13px}
.hl-corr{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-top:1px solid #EDEFE7}
.hl-corr:first-of-type{border-top:0}
.hl-motif{margin:4px 0;padding:8px 10px;border-radius:8px;background:var(--critbg);color:var(--crit);font-size:13px}
.hl-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #EDEFE7}
.hl-row:first-of-type{border-top:0}
.hl-row>span:first-child{display:flex;flex-direction:column;min-width:0}
.hl-tag{margin-top:4px}
@media (max-width:800px){.hl-band{margin:-18px -16px 14px;padding:10px 16px}}
/* styles/05-exploitations-et-membres.css */
/* Exploitations et membres */
.ex-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid #EDEFE7}
.ex-row:first-of-type{border-top:0}
.ex-row .actions{flex-wrap:nowrap}
.ex-ajout{align-items:end;grid-template-columns:minmax(0,1fr) auto}
.ex-lien{display:flex;flex-direction:column;gap:8px}
.ex-lien input{font-size:13px}
/* Invitations maîtrisées, lecture seule (IT-04) */
.ex-sous{margin:14px 0 2px;font-size:14px}
.ex-lienactif .small{display:inline-block;margin-top:2px}
.ex-lecture{margin:6px 0 0;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.head.hero-head .ex-lecture{color:#C9D2CB}
/* Activité : supprimé récemment */
.au-ligne{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #EDEFE7}
.au-ligne:first-of-type{border-top:0}
.au-ligne .u-todo-t{min-width:0}
.au-fait{font-size:12px;color:var(--good);font-weight:600;white-space:nowrap}
/* styles/06-version-2-de-l.css */
/* Version 2 de l'interface */
.fab{display:none!important}
.u-entete{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.u-entete h2{margin:0}
.u-entete .subtabs{margin:0}
.u-titre{margin:6px 0 -4px;font-size:16px}
.u-liste{padding-bottom:6px}
.u-liste h2{margin-bottom:4px}
.u-vide{padding:6px 0 10px}
.u-todo{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:10px 0;border:0;border-top:1px solid #EDEFE7;background:none;text-align:left;font:inherit;color:inherit}
.u-entete+.u-todo,.u-liste h2+.u-todo{border-top:0}
.u-dot{flex:none;width:10px;height:10px;border-radius:50%}
.u-todo-t{flex:1;min-width:0;display:flex;flex-direction:column}
.u-chev{flex:none;color:var(--muted);font-size:20px;line-height:1;transition:transform .15s ease}
.u-rucher{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-top:1px solid #EDEFE7}
.u-entete+.u-rucher{border-top:0;margin-top:6px}
.u-hexes{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}
.u-hex{width:38px;height:34px;border:0;padding:0;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);color:#fff;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.u-trois{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));text-align:center;gap:6px;margin-top:8px}
.card.u-trois{margin-top:0;padding:12px 6px}
.u-trois>div{display:flex;flex-direction:column;gap:2px}
.u-trois>div+div{border-left:1px solid #EDEFE7}
.u-trois b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:21px}
.u-trois b.watch{color:#7D5200}
.u-trois span{font-size:12px;color:var(--muted)}
.u-meteo{display:flex;align-items:center;gap:10px;margin:10px 0 0;font-size:13px;color:#C9D2CB}
.u-meteo:empty{display:none}
.u-meteo-t{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:26px;font-weight:700;color:#fff}
.u-meteo b{color:#fff}.u-meteo b.u-ok{color:#F6C453}
.u-meteo-lien{color:#F6C453!important;padding:0}
.u-chips{display:flex;flex-wrap:wrap;gap:6px}
.u-chip{display:inline-block;font-size:12px;font-weight:600;background:#ECEEE6;color:var(--ink);border-radius:999px;padding:4px 9px;white-space:nowrap}
.u-chip.good{background:var(--goodbg);color:#145238}
.u-chip.watch{background:var(--watchbg);color:#7D5200}
.u-chip.crit{background:var(--critbg);color:#7A1414}
.u-ruche-tete{display:flex;flex-direction:column;gap:10px}
.u-retour{align-self:flex-start;padding:0}
.u-ruche-id{display:flex;align-items:center;gap:12px}
.u-gros-hex{flex:none;width:52px;height:45px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.u-visite{display:flex;flex-direction:column;gap:8px}
.u-visite-h{display:flex;justify-content:space-between;align-items:baseline}
.u-note{margin:0;font-size:14px}
.u-visite-f{display:flex;justify-content:space-between;align-items:center}
.u-discret{color:var(--muted)!important;font-weight:500;font-size:13px;min-height:36px}
.u-pli summary{display:flex;justify-content:space-between;align-items:center;cursor:pointer;list-style:none}
.u-pli summary::-webkit-details-marker{display:none}
.u-pli summary h2{margin:0}
.u-pli[open] summary .u-chev,.u-sec[open] summary .u-chev{transform:rotate(90deg)}
.u-pli[open] summary{margin-bottom:10px}
.u-visite-form{gap:12px}
.u-haut{display:flex;flex-direction:column;gap:10px}
.u-visite-form .pick{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}
.u-visite-form .pick button{flex:none;min-height:44px;padding:0 16px;border-radius:999px}
.u-date{flex-direction:row;align-items:center;gap:10px}
.u-date input{width:auto;min-height:42px;padding:6px 10px;border-radius:999px}
.u-essentiel{padding:4px 14px}
.u-ligne{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid #EDEFE7}
.u-ligne:first-child{border-top:0}
.u-lab{flex:none;width:72px;font-size:13px;font-weight:700}
.u-ligne .seg{flex:1}
.u-ligne .seg button{min-height:44px;font-size:13px;padding:0 2px;line-height:1.15}
.u-filtre .subtabs{display:flex;width:100%}
.u-filtre .subtabs button{flex:1}
.wrap>.u-retour{margin-bottom:-8px}
.seg button.on.u-good{background:var(--good);border-color:var(--good)}
.seg button.on.u-watch{background:var(--honey);border-color:var(--honey);color:var(--ink)}
.seg button.on.u-crit{background:var(--crit);border-color:var(--crit)}
.u-secs{padding:0 14px}
.u-sec{border-top:1px solid #EDEFE7}
.u-sec:first-child{border-top:0}
.u-sec summary{display:flex;align-items:center;gap:10px;min-height:54px;cursor:pointer;list-style:none}
.u-sec summary::-webkit-details-marker{display:none}
.u-sec-t{flex:1;font-weight:600}
.u-sec-r{font-size:13px;color:var(--muted);max-width:55%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.u-sec-r.on{color:var(--ink);font-weight:600;background:#FBEBC4;border-radius:999px;padding:2px 9px}
.u-sec-c{padding:0 0 14px;display:flex;flex-direction:column;gap:12px}
.u-sec-c .u-ligne{border-top:0;padding:0}
.u-sec-c>.card{box-shadow:none;padding:0;background:none;border-radius:0}
.u-sec-c>.card>h2{display:none}
.u-barre{position:sticky;bottom:0;z-index:5;margin:0 -16px;padding:10px 16px calc(12px + env(safe-area-inset-bottom));background:var(--ground);box-shadow:0 -8px 16px -8px rgba(30,43,36,.18)}
.u-barre .btn{min-height:52px;font-size:16px}
body[data-route=visite] .bottom{display:none}
body[data-route=visite] main{padding-bottom:0}
.u-du{display:flex;justify-content:space-between;align-items:center;gap:12px;background:var(--watchbg)}
.u-du>div{display:flex;flex-direction:column}
.u-du b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:24px;color:#7D5200}
.u-du span{font-size:13px;color:#7D5200}
.u-du .btn{background:#7D5200;border-color:#7D5200;color:#fff}
.u-vente,.u-client{display:flex;flex-direction:column;gap:10px}
.u-client{flex-direction:row;justify-content:space-between;align-items:center}
.u-vente-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.u-vente-c{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1;min-width:0;border:0;background:none;padding:0;text-align:left;font:inherit;color:inherit;min-height:44px}
.u-vente-m{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:none}
.u-vente-m b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:19px}
.u-deux{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.u-deux .btn{min-height:44px;padding:0 8px}
.u-trois-b{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.u-lot{display:flex;justify-content:space-between;gap:10px;padding:6px 0}
.u-total{border-top:1px solid var(--line2);font-size:16px}
.u-lienbtn{display:flex;align-items:center;justify-content:center;text-decoration:none}
.btn.main.u-lienbtn{color:#fff}
.u-carte{position:relative;z-index:0;height:min(58vh,460px);border-radius:var(--radius);overflow:hidden;background:#E7EBDD;box-shadow:var(--shadow)}
.u-carte-msg{padding:16px}
.u-pin{background:none;border:0}
.u-pin-l{position:absolute;left:50%;top:0;transform:translateX(-50%);white-space:nowrap;background:#fff;border-radius:999px;padding:2px 9px;font:700 12px 'Instrument Sans',system-ui,sans-serif;color:#1B2420;box-shadow:0 2px 6px rgba(0,0,0,.2)}
.u-pin-h{position:absolute;left:50%;bottom:4px;transform:translateX(-50%);width:34px;height:30px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.u-panneau{display:flex;flex-direction:column;gap:12px}
.u-panneau .u-hexes{justify-content:flex-start}
.u-carte.u-visee::after{content:"";position:absolute;left:50%;top:50%;width:44px;height:44px;margin:-22px 0 0 -22px;z-index:1000;pointer-events:none;border:3px solid #1E2B24;border-radius:50%;box-shadow:0 0 0 3px #fff,0 4px 12px rgba(0,0,0,.3);background:radial-gradient(circle,#E3A008 0 5px,transparent 6px);box-sizing:border-box}
.u-carte.u-visee::before{content:"Faites glisser la carte";position:absolute;left:50%;top:12px;transform:translateX(-50%);z-index:1000;pointer-events:none;background:#1E2B24;color:#fff;font:600 13px 'Instrument Sans',system-ui,sans-serif;padding:6px 12px;border-radius:999px;white-space:nowrap}
.u-cmp{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"lab val ecart" "lab avant ecart";column-gap:12px;align-items:center;padding:10px 0;border-top:1px solid #EDEFE7}
.u-cmp:first-of-type{border-top:0}
.u-cmp>span:first-child{grid-area:lab;font-weight:600}
.u-cmp>b{grid-area:val;text-align:right;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:18px}
.u-cmp>.small{grid-area:avant;text-align:right}
.u-cmp>.u-chip{grid-area:ecart;min-width:58px;text-align:center}
@media screen and (max-width:800px){
  .card.tbl{padding:6px 0;overflow:visible}
  .card.tbl h2{margin:10px 16px 2px}
  .card.tbl table,.card.tbl tbody,.card.tbl tr,.card.tbl td{display:block;width:auto}
  .card.tbl thead{display:none}
  .card.tbl tbody tr{padding:12px 16px;border-top:1px solid #EDEFE7}
  .card.tbl tbody tr:first-child{border-top:0}
  .card.tbl tbody tr:hover{background:none}
  .card.tbl td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:3px 0;border:0;text-align:right;white-space:normal;min-height:28px}
  .card.tbl td::before{content:attr(data-label);flex:none;max-width:48%;color:var(--muted);font-size:13px;font-weight:500;text-align:left}
  .card.tbl td:first-child{font-size:16px;font-weight:700;padding-bottom:6px;justify-content:flex-start;text-align:left}
  .card.tbl td:first-child::before,.card.tbl td[data-label=""]::before{display:none}
  .card.tbl td[data-label=""]{justify-content:flex-end;padding-top:6px}
  .card.tbl td .link{white-space:normal}
  .card.tbl .empty{padding:10px 16px}
}
@media (max-width:800px){
  .bottom{grid-template-columns:repeat(5,minmax(0,1fr));align-items:end}
  .bottom button[data-v=saisir]{color:var(--ink);font-weight:700}
  .bottom button[data-v=saisir] svg{width:52px;height:52px;margin-top:-24px;padding:13px;border-radius:16px;background:var(--honey);box-shadow:0 6px 16px rgba(160,110,0,.35);box-sizing:border-box}
  .bottom button.on[data-v=saisir] svg{background:var(--honey)}
}
/* styles/07-visite-de-plusieurs-ruches.css */
/* Visite de plusieurs ruches */
.vr-chips{padding:2px 0 0}
/* styles/08-etiquettes-de-pots.css */
/* Étiquettes de pots */
#etiqPrint{display:none}
@page etiq{size:A4;margin:0}
@media print{
  body.print-etiq #app,body.print-etiq #sheet,body.print-etiq #photoView,body.print-etiq .toast,body.print-etiq .tip{display:none!important}
  body.print-etiq{background:#fff}
  body.print-etiq #etiqPrint{display:block}
}
.et-planche{page:etiq;width:210mm;height:297mm;box-sizing:border-box;padding:15.15mm 7.21mm 0;display:grid;grid-template-columns:repeat(3,63.5mm);grid-auto-rows:38.1mm;column-gap:2.54mm;break-after:page;overflow:hidden}
.et{box-sizing:border-box;padding:2mm 3mm;font:7.5pt/1.25 'Instrument Sans',system-ui,sans-serif;color:#000;display:flex;flex-direction:column;justify-content:center;overflow:hidden}
.et-nom{font:700 11pt/1.1 'Bricolage Grotesque',system-ui,sans-serif}
.et-poids{font-weight:700;font-size:16pt;line-height:1.1;margin:.5mm 0}
.et-pied{font-size:6.5pt;margin-top:.5mm}
/* styles/09-registre-d-elevage.css */
/* Registre d'élevage */
.rg-check{flex-direction:row;align-items:center;gap:10px;font-size:14px}
.rg-check input{width:22px;height:22px;min-height:0;flex:none}
.rg-ident{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}
.rg-ident p{margin:2px 0}
@media print{
  .side,.topbar,.bottom,.fab,.head .actions,.hl-band,.toast,.tip{display:none!important}
  body{background:#fff}
  .shell{display:block}
  main{padding:0}
  .wrap{max-width:none}
  .head.hero-head{background:none;color:inherit;padding:0}
  .card{box-shadow:none;border:1px solid #C9CDC1;break-inside:avoid}
  .card.tbl{overflow:visible}
  th,td{font-size:10pt;padding:5px 6px}
  *{animation:none!important}
}
/* styles/10-version-3-colonie-varroa.css */
/* ---------- Version 3 : colonie, varroa, récolte, livraisons, tournée, plein soleil ---------- */
.u-jours{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px;width:100%}
.u-jour{font-size:12px;background:rgba(255,255,255,.12);border-radius:8px;padding:3px 7px}
.u-jour b{margin-right:4px;text-transform:capitalize}
.u-jour.on{background:var(--honey);color:var(--ink)}
.u-meilleur{display:block;width:100%;margin-top:4px}
.u-meteo .u-meilleur{color:#DDE3DE}
.u-meteo{flex-wrap:wrap}
.u-rucher .u-entete{margin-bottom:6px}
.u-notecarte textarea{width:100%;box-sizing:border-box}
.u-notecarte .u-entete{margin-bottom:6px}
.u-taux{margin:6px 0 0}
.u-tbarre{display:grid;grid-template-columns:1fr 2fr;gap:8px}
.u-livr,.v3-livr{background:#ECEEE6;border-radius:10px;padding:8px 10px;margin:8px 0 0}
.v3-cherche{background:none;border:0;color:#fff;width:40px;height:40px;display:flex;align-items:center;justify-content:center;margin-left:auto;margin-right:6px;cursor:pointer}
.v3-cherche svg{width:22px;height:22px}
.topbar .v3-cherche + .avatar{margin-left:0}
.v3-reine-l{display:flex;gap:12px;align-items:center}
.v3-reine-l .small{display:block}
.v3-pastille{width:30px;height:30px;border-radius:50%;border:2px solid #1B2420;flex:none}
.v3-ligne{display:flex;justify-content:space-between;align-items:center;gap:10px}
.v3-ligne .small{display:block}
.v3-ligne .ctl,.stepper .ctl{display:flex;align-items:center;gap:10px}
.v3-ligne .ctl button{min-width:44px;min-height:44px;border-radius:10px;border:1px solid var(--line);background:#fff;font:inherit;font-size:20px}
.v3-sous{font-size:15px;margin:14px 0 6px}
.v3-equip button.on{background:var(--pine);color:#fff;border-color:var(--pine)}
.v3-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.v3-evt{display:grid;grid-template-columns:64px 1fr auto;gap:10px;align-items:start;padding:9px 0;border-top:1px solid var(--line)}
.v3-evt .small{display:block}
.v3-droite{display:flex;align-items:center;gap:10px}
.v3-pots{display:grid;grid-template-columns:56px 1fr 1fr;gap:8px;align-items:end;margin-bottom:6px}
.v3-pots b{padding-bottom:12px}
.v3-trace{background:var(--honeysoft);border-radius:10px;padding:8px 10px}
.v3-tournee .track{margin:0 0 10px}
.v3-points{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.v3-points span{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;background:#ECEEE6;color:var(--muted)}
.v3-points .fait{background:var(--good);color:#fff}
.v3-points .ici{background:var(--honey);color:var(--ink)}
.v3-rappel{font-style:italic}
.v3-micro{display:inline-flex;align-items:center;gap:6px}
.v3-micro.on{background:var(--crit);color:#fff;border-color:var(--crit)}
.v3-decla{background:var(--pine);color:#fff}
.v3-decla .u-trois span,.v3-decla .small{color:#C9D2CB}
.v3-eyebrow{font-size:13px;color:#F6C453;font-weight:600}
.card label.v3-coche{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;text-align:left;gap:12px;font-weight:600;padding:8px 0;margin:0}
.card label.v3-coche input{width:22px;height:22px;flex:none;margin:0}
.v3-rang{display:flex;gap:8px;margin-top:6px}
.v3-rang input{flex:1;min-width:0}
.v3-rang .btn{flex:none}
.v3-droite{flex:none;white-space:nowrap}
.v3-deux-chiffres{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:6px 0}
.v3-deux-chiffres b{display:block;font-family:"Bricolage Grotesque",sans-serif;font-size:30px}
.v3-deux-chiffres span{font-size:13px;color:#C9D2CB}
.v3-decla .link{color:#F6C453}
.u-lot b{white-space:nowrap}
.v3-fil .u-titre{margin:14px 0 4px;font-size:14px;color:var(--muted)}
body.soleil{--ink:#000;--muted:#262C28;--ground:#fff;--line:#7D847B;--line2:#7D847B;--card:#fff;font-size:17px}
body.soleil .card{border:1.5px solid #7D847B;box-shadow:none}
body.soleil .small,body.soleil .sub{color:#262C28}
body.soleil .btn{border-width:2px}
body.soleil .seg button.on{outline:2px solid #000}
/* styles/11-version-4-navigation-accueil.css */
/* ---------- Version 4 : navigation Accueil · Ruchers · + · Miel · Gestion ---------- */
.bottom button{position:relative}
.bottom button[data-v=saisir]{color:var(--ink);font-weight:700}
.bottom button[data-v=saisir] svg{width:56px;height:56px;padding:15px;box-sizing:border-box;border-radius:18px;background:var(--honey)!important;margin-top:-26px;box-shadow:0 6px 16px -6px rgba(30,43,36,.55);stroke-width:2.4}
.n4-badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 4px;box-sizing:border-box;border-radius:9px;background:var(--crit);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.side .nav .n4-badge{display:none}
.n4-prochaine{display:flex;flex-direction:column;gap:3px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.16)}
.n4-prochaine b{font-size:18px}
.n4-prochaine .small{color:#DDE3DE}
.n4-eyebrow{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#F6C453}
.n4-deux{display:grid;grid-template-columns:2fr 1fr;gap:8px;margin-top:8px}
.n4-deux .btn{min-height:46px}
.n4-deux .btn.ghost{background:none;border:1px solid rgba(255,255,255,.35);color:#fff}
.u-puces{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 4px}
.u-puces button{min-height:36px;padding:0 12px;border-radius:99px;border:1px solid #D5D8CE;background:#fff;font:inherit;font-size:13px;font-weight:600;color:var(--ink)}
.u-puces button.on{background:var(--pine);border-color:var(--pine);color:#fff}
.u-plus{margin-top:6px;align-self:flex-start}
.u-quatre{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.u-quatre b{font-size:18px}
.u-alerte b,.u-alerte span{color:var(--crit)!important}
.n4-rnav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.n4-rnav .u-retour{margin:0}
.n4-fleches{display:flex;align-items:center;gap:8px}
.n4-fleches .btn{min-width:44px;min-height:44px;padding:0;font-size:20px}
.n4-rbarre{position:sticky;bottom:calc(76px + env(safe-area-inset-bottom));z-index:5;display:grid;grid-template-columns:2fr 1fr;gap:8px;margin:0 -16px;padding:10px 16px;background:var(--ground);box-shadow:0 -8px 16px -8px rgba(30,43,36,.18)}
.n4-rbarre .btn{min-height:50px;font-size:16px}
@media (min-width:801px){.n4-rbarre{bottom:0;margin:0}}
.u-tuiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.u-tuile{min-height:72px;border-radius:14px;border:2px solid transparent;background:#fff;font:inherit;text-align:left;padding:9px 11px;color:var(--ink);box-shadow:var(--shadow)}
.u-tuile b{display:block;font-family:"Bricolage Grotesque",sans-serif;font-size:22px}
.u-tuile span{font-size:12px;color:var(--muted)}
.u-tuile.on{border-color:var(--pine)}
.u-tuile.on.watch{border-color:var(--watch);background:var(--watchbg)}
.u-tuile.on.watch b,.u-tuile.on.watch span{color:#7D5200}
.u-filtre-t{font-weight:600;color:#7D5200}
.u-deux-l{display:flex;gap:14px}
.n4-tuiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:4px 0 10px}
.n4-tuile{min-height:92px;border-radius:14px;border:1px solid var(--line);background:#fff;font:inherit;font-weight:700;color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.n4-tuile.main{background:var(--pine);border-color:var(--pine);color:#fff}
.n4-reprendre{display:flex;align-items:center;gap:12px;width:100%;background:var(--honeysoft);border:0;border-radius:14px;padding:12px 14px;font:inherit;text-align:left;color:var(--ink);margin:6px 0}
.n4-reprendre .small{display:block}
.n4-reprendre>span:nth-child(2){flex:1}
.n4-ic{width:40px;height:40px;border-radius:12px;background:var(--honey);display:flex;align-items:center;justify-content:center;flex:none}
.n4-ic svg{width:22px;height:22px}
.n4-liste{display:flex;flex-direction:column;gap:8px;margin:8px 0}
.n4-ruches{display:flex;flex-direction:column}
.n4-ruche{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:8px 0;border:0;border-top:1px solid var(--line);background:none;font:inherit;text-align:left;color:var(--ink)}
.n4-hex{width:28px;height:32px;flex:none;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.n4-taux{font-size:13px;font-weight:700;color:var(--muted)}
.n4-taux.crit{color:var(--crit)}
.n4-sect{margin:10px 0 0;font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.n4-grille{display:grid;gap:8px}
.n4-grille.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.n4-grille.c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.n4-g{min-height:64px;border-radius:14px;border:0;background:#fff;box-shadow:var(--shadow);font:inherit;text-align:left;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;gap:2px;color:var(--ink)}
.n4-g.large{grid-column:1/-1}
.n4-g .small.watch{color:#7D5200;font-weight:700}
.n4-g .small.crit{color:var(--crit);font-weight:700}
.n4-g .small.good{color:var(--good);font-weight:700}
.n4-moi{display:flex;align-items:center;gap:12px;margin-bottom:10px}
.n4-moi .avatar{width:44px;height:44px;border-radius:50%;background:var(--honey);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;flex:none}
.n4-moi .u-todo-t{flex:1}
.n4-bloc{background:#fff;border-radius:14px;padding:2px 14px;margin-bottom:10px;border:1px solid var(--line)}
.n4-installer{padding-bottom:6px}.n4-installer ol{margin:8px 0;padding-left:20px}.n4-installer li{margin:8px 0}
.n4-bloc h3{margin:10px 0 2px;font-size:12px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}
.n4-ligne{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;border:0;border-top:1px solid var(--line);background:none;font:inherit;text-align:left;color:var(--ink);padding:6px 0}
.n4-bloc .n4-ligne:first-child,.n4-bloc h3+.n4-ligne{border-top:0}
.n4-ligne .u-todo-t{flex:1}
.n4-radio{width:20px;height:20px;border-radius:50%;border:2px solid #8A928B;box-sizing:border-box;flex:none}
.n4-radio.on{border:6px solid var(--pine)}
.n4-inter{width:44px;height:26px;border-radius:13px;background:#C9CDC1;position:relative;flex:none}
.n4-inter::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left .15s}
.n4-inter.on{background:var(--pine)}
.n4-inter.on::after{left:21px}
.n4-sortir{width:100%;color:var(--crit)}
.n4-annuler{display:flex;align-items:center;gap:16px}
.n4-annuler .link{color:#F6C453;font-weight:700}
.n4-gris{border-radius:16px;background:linear-gradient(90deg,#E6E8DF 0%,#EFF0EA 50%,#E6E8DF 100%);background-size:200% 100%;animation:n4gris 1.2s ease-in-out infinite}
@keyframes n4gris{from{background-position:100% 0}to{background-position:-100% 0}}
.n4-squelette main{padding-top:18px}
.wrap>.subtabs{display:flex;width:100%;align-self:stretch}
.wrap>.subtabs button{flex:1;padding:0 6px}
html.recette body::before{content:"RECETTE";position:fixed;top:0;left:50%;transform:translateX(-50%);z-index:60;background:#E3A008;color:#1B2420;font:700 11px/1 sans-serif;letter-spacing:.1em;padding:4px 10px;border-radius:0 0 8px 8px;pointer-events:none}
a.n4-ligne{text-decoration:none}
/* styles/12-interface-alveoles-compagnon-api.css */
/* ---------- Interface Alvéoles : compagnon API, écrans allégés ---------- */
@media (max-width:800px){
  .topbar{background:var(--bandeau);color:var(--bandeau-texte)}
  .topbar .v3-cherche{color:var(--bandeau-texte)}
  .bottom{background:#fff;border-top:1px solid var(--line);box-shadow:none}
}
.bottom button[data-v=saisir] api-compagnon{margin-top:-30px}
.bottom button[data-v=saisir] api-compagnon svg{width:100%;height:100%;padding:0;margin:0;border-radius:0;background:none!important;box-shadow:none}
.bottom button.on[data-v=saisir] api-compagnon svg{background:none!important}
.side .nav api-compagnon svg{display:block!important;width:100%;height:100%;fill:initial}
.al-api{display:block;flex:none}
.al-tete{justify-content:flex-start;align-items:center;gap:10px}
.al-tete h2{flex:1;margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:24px;letter-spacing:-.015em}
.al-cherche{width:100%;min-height:50px;padding:0 16px;margin:6px 0 8px;border:1px solid var(--line2);border-radius:25px;background:#fff;font:inherit;color:var(--muted);text-align:left}
.al-bientot{margin-top:6px}
/* styles/13-ecrans-sans-cartes-empilees.css */
/* Écrans sans cartes empilées */
body[data-route=dash] .card,body[data-route=ruches] .card,body[data-route=plus] .card{background:none;border:0;box-shadow:none;padding:0}
body[data-route=dash] .wrap,body[data-route=ruches] .wrap{gap:24px}
.head.hero-head{display:block;padding:0;background:none;color:var(--ink);border-radius:0;overflow:visible}
.head.hero-head::after{display:none}
.head.hero-head h1{color:var(--ink);font-size:27px;line-height:1.14;letter-spacing:-.018em;margin-top:4px;max-width:640px}
.head.hero-head .eyebrow{color:var(--muted);font-size:14px;font-weight:500;letter-spacing:0;text-transform:none}
.u-meteo{color:var(--muted)}
.u-meteo .link,.head.hero-head .link{color:var(--good)}
.u-jour{background:#E7EAE1}
.u-meteo .u-meilleur{color:var(--muted)}
.n4-prochaine{margin-top:10px;padding-top:0;border-top:0;max-width:520px}
.n4-prochaine b{font-size:15px;font-weight:600}
.n4-prochaine .small{color:var(--muted)}
.n4-deux .btn.honey{background:var(--pine);border-color:var(--pine);color:#fff}
.n4-deux .btn.ghost{background:#fff;border-color:var(--line2);color:var(--ink)}
/* styles/14-carte-des-ruches-en.css */
/* Carte des ruches en alvéoles */
.al-carte{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px 12px;align-items:start}
.al-carte>.u-entete,.al-carte>.al-cle,.al-lentilles{grid-column:1/-1}
@property --niv{syntax:'<percentage>';inherits:false;initial-value:0%}
.al-lentilles{display:flex;gap:6px;width:100%;max-width:420px}
.lent{flex:1;min-height:44px;padding:0 6px;border:1px solid var(--line2);border-radius:999px;background:#fff;font:inherit;font-size:14px;font-weight:500;color:var(--ink);transition:background var(--duree) ease,color var(--duree) ease,border-color var(--duree) ease}
.lent.on{background:var(--pine);border-color:var(--pine);color:#fff;font-weight:600}
.al-carte .u-hex{transition:background-color .34s ease,color .34s ease,--niv .62s var(--sortie);transition-delay:calc(var(--i,0)*26ms)}
.al-carte .u-hex.bg-niv{background:linear-gradient(to top,var(--honey) var(--niv),#E9ECE4 var(--niv));color:var(--ink)}
.al-carte .u-hex.bg-vide{background:#E9ECE4;color:#3F4A44}
.al-carte .u-hex.al-txt{font-size:16px}
.al-carte .u-hex.al-txt.bg-crit span::after{content:""}
.al-carte .u-hex.bg-good{color:#fff}
.al-cle i.al-niv{background:linear-gradient(to top,var(--honey) var(--niv),#E9ECE4 var(--niv))}
.al-entree .u-hex{animation:al-hx .46s var(--sortie) backwards;animation-delay:calc(var(--i,0)*34ms)}
@keyframes al-hx{from{opacity:0;scale:.55}}
/* styles/15-miel.css */
/* Miel */
.al-pots{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:14px}
.al-pot{padding:14px 10px 12px;border:1px solid var(--line);border-radius:18px;background:#fff;font:inherit;color:var(--ink);display:flex;flex-direction:column;align-items:center;gap:8px}
.al-couv{width:62px;height:11px;margin-bottom:-11px;border-radius:5px;background:var(--pine);position:relative;z-index:1}
.al-bocal{position:relative;width:72px;height:88px;margin-top:6px;border:3px solid var(--pine);border-radius:11px 11px 15px 15px;overflow:hidden;background:var(--ground)}
.al-bocal i{position:absolute;left:0;right:0;bottom:0;background:var(--honey);transition:height .7s var(--sortie)}
.al-pot b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:26px;line-height:1;font-variant-numeric:tabular-nums}
.al-recents{display:flex;flex-wrap:wrap;gap:8px}
.chip{min-height:44px;padding:0 14px;border:1px solid var(--line2);border-radius:22px;background:#fff;font:inherit;font-size:14px;font-weight:500;color:var(--ink)}
.chip.on{background:var(--pine);border-color:var(--pine);color:#fff;font-weight:600}
@media (prefers-reduced-motion:reduce){.al-bocal i{transition:none}}
/* styles/16-visite-a-la-voix.css */
/* Visite à la voix */
.vx{width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:#fff;color:var(--ink);overflow:hidden}
.vx[open]{display:flex;flex-direction:column;animation:none}
.vx-haut{flex:none;min-height:60px;padding:6px 16px 6px 6px;display:flex;align-items:center;gap:6px}
.vx-haut div{display:flex;flex-direction:column;line-height:1.2}
.vx-haut b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:18px}
.vx-haut .vx-api{flex-direction:row;align-items:center;gap:8px;font-weight:700}
.vx-x{width:44px;height:44px;border:0;background:none;font-size:28px;line-height:1;color:var(--ink)}
.vx-scene{flex:none;height:176px;display:flex;align-items:center;justify-content:center}
.vx-dit{flex:none;min-height:96px;margin:0;padding:0 24px;text-align:center;text-wrap:balance;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:21px;font-weight:700;line-height:1.26}
.vx-dit.vide{font-family:inherit;font-size:15px;font-weight:400;color:var(--muted)}
.vx-champs{flex:1;min-height:0;padding:0 24px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:min-content;gap:8px;justify-items:center}
.vx-c{width:100%;min-height:96px;border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:4px;font:inherit;font-size:13px;color:var(--muted)}
.vx-c:nth-child(3n+2){transform:translateY(14px)}
.vx-hex{position:relative;width:86px;height:75px;display:flex;align-items:center;justify-content:center;background:var(--line2);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.vx-hex::before{content:"";position:absolute;inset:2px;background:#fff;clip-path:inherit}
.vx-hex::after{content:"";position:absolute;inset:0;background:var(--honey);clip-path:inherit;scale:0;transition:scale var(--duree-lente) var(--sortie)}
.vx-hex b{position:relative;z-index:1;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:15px;color:var(--ink)}
.vx-c.on{color:var(--ink);font-weight:600}
.vx-c.on .vx-hex::after{scale:1}
.vx-pied{flex:none;padding:10px 20px calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px}
.vx-pause{min-height:68px;border:0;border-radius:18px;background:var(--pine);color:#fff;font:inherit;font-size:17px;font-weight:600;transition:background var(--duree) ease}
.vx-pause.pause{background:var(--honey);color:var(--ink)}
.vx-aide{margin:0;text-align:center;font-size:14px;color:var(--muted)}
.vx-relire{flex:1;min-height:0;overflow-y:auto;padding:4px 20px 20px;display:flex;flex-direction:column;gap:14px}
.vx-relire h2{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:24px;line-height:1.14;letter-spacing:-.018em}
.vx-relire .vx-t{border:1px solid var(--line);border-radius:14px;overflow:hidden}
.vx-l{display:flex;justify-content:space-between;gap:12px;align-items:center;min-height:46px;padding:6px 12px;border-bottom:1px solid var(--line)}
.vx-l:last-child{border-bottom:0}
.vx-l.alerte{background:var(--honeysoft)}
.vx-l span:first-child{color:var(--muted);font-size:14px}
.vx-l>span:last-child{font-weight:600;text-align:right}
.vx-relire em{display:block;font-style:normal;font-size:13px;font-weight:600;color:var(--watch)}
.vx-note{display:flex;flex-direction:column;gap:5px;font-size:13px;font-weight:600}
.vx-deux{display:grid;grid-template-columns:2fr 1fr;gap:10px}
.vx-entree{margin-bottom:10px}
.u-gros-hex{width:72px;height:62px;display:flex;align-items:center;justify-content:center;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-weight:700;font-size:24px;color:#fff;font-variant-numeric:tabular-nums}
.u-gros-hex.bg-watch{color:var(--ink)}
.al-trace{stroke-dasharray:1;stroke-dashoffset:1;animation:al-trace 1s var(--sortie) .2s forwards}
@keyframes al-trace{to{stroke-dashoffset:0}}
::view-transition-group(al-hex){animation-duration:.44s;animation-timing-function:var(--sortie)}
::view-transition-old(root){animation:.16s ease both al-sort}
::view-transition-new(root){animation:.3s var(--sortie) .05s both al-ent}
@keyframes al-sort{to{opacity:0}}
@keyframes al-ent{from{opacity:0;transform:translateY(10px)}}
@media (prefers-reduced-motion:reduce){.al-trace{animation:none;stroke-dasharray:none;stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){.al-entree .u-hex{animation:none}.al-carte .u-hex,.lent{transition:none}}
.al-carte .u-rucher .u-entete{margin:0;flex-wrap:wrap;gap:0 8px}
.al-carte .u-hexes{display:flex;flex-wrap:wrap;padding:4px 0 34px;gap:0}
.al-carte .u-hex{width:62px;height:54px;margin:0 -11px 0 0;padding:0;border:0;border-radius:0;display:flex;align-items:center;justify-content:center;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);color:#fff;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:19px;font-weight:700}
.al-carte .u-hex:nth-child(even){transform:translateY(31px)}
.al-carte .u-hex.bg-watch{background:var(--honey);color:var(--ink)}
.al-carte .u-hex.bg-crit span::after{content:"!"}
.al-cle{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;font-size:13px;color:var(--muted)}
.al-cle span{display:inline-flex;align-items:center;gap:6px}
.al-cle i{width:12px;height:11px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.al-cle i.bg-watch{background:var(--honey)}
/* styles/17-listes.css */
/* Listes */
.n4-hex{width:30px;height:26px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.n4-hex.bg-watch{background:linear-gradient(0deg,var(--honey) 50%,#EBD9A6 50%)}
.al-kg{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.u-dot.bg-watch{background:var(--honey)}
body[data-route=ruches] .u-deux{margin-top:6px}
/* styles/18-miel-chiffres-en-ligne.css */
/* Miel : chiffres en ligne */
.u-tuiles{gap:0}
.u-tuile,.u-tuile.on,.u-tuile.on.watch{min-height:56px;padding:0 0 0 12px;border:0;border-left:1px solid var(--line);border-radius:0;background:none;box-shadow:none}
.u-tuile:first-child{padding-left:0;border-left:0}
.u-tuile.on b,.u-tuile.on span{color:var(--ink)}
.u-tuile.on.watch b,.u-tuile.on.watch span{color:#7D5200}
.u-tuile span{font-size:13px}
/* styles/19-gestion-une-liste-plutot.css */
/* Gestion : une liste plutôt que des tuiles */
.n4-sect{margin:16px 0 0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:16px;font-weight:700;letter-spacing:-.01em;text-transform:none;color:var(--ink)}
.n4-grille,.n4-grille.c2,.n4-grille.c3{grid-template-columns:minmax(0,1fr);gap:0}
.n4-g,.n4-g.large{grid-column:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:46px;padding:6px 0;border:0;border-top:1px solid var(--line);border-radius:0;background:none;box-shadow:none;text-align:left}
.n4-grille .n4-g:first-child{border-top:0}
.n4-g b{font-weight:600}
.n4-g .small{text-align:right}

.al-carte .u-rucher{display:block;margin:0;padding:0;border:0}
.al-carte .u-rucher .u-entete{justify-content:flex-start;gap:0 10px;margin-bottom:2px}
.al-carte .u-hexes{flex-wrap:wrap;width:auto}
.head.hero-head .u-meteo,.head.hero-head .u-meteo a,.head.hero-head .u-meteo button{color:var(--good)}
.n4-grille .n4-g,.n4-grille .n4-g.large{flex-direction:row;text-align:left}
.n4-grille .n4-g b{flex:1;text-align:left}
.subtabs{display:flex;gap:22px;padding:0;background:none;border-radius:0;border-bottom:1px solid var(--line);box-shadow:none}
.subtabs button{flex:none;min-height:44px;padding:0;background:none;border:0;border-bottom:3px solid transparent;border-radius:0;box-shadow:none;color:var(--muted);font-weight:500;margin-bottom:-1px}
.subtabs button.on{background:none;box-shadow:none;color:var(--ink);font-weight:700;border-bottom-color:var(--honey)}
.head.hero-head .u-meteo-lien{color:var(--good)!important}
.al-carte .u-hexes{justify-content:flex-start}
/* styles/20-bandeau-une-seule-couleur.css */
/* ---------- Bandeau : une seule couleur à changer, prête pour la personnalisation ---------- */
/* styles/21-piste-a-barre-du.css */
/* ---------- Piste A : barre du haut sur ordinateur, ruchers en colonnes, météo par rucher ---------- */
@media (min-width:801px){
  .shell{flex-direction:column}
  .side{position:sticky;top:0;z-index:20;flex-direction:row;align-items:center;gap:6px;width:auto;height:auto;min-height:68px;padding:8px 32px;overflow:visible;background:var(--bandeau);color:var(--bandeau-texte)}
  .side .brand{padding:0 22px 0 0}
  .side .nav{width:auto;min-height:44px;padding:0 14px;gap:0;border-radius:11px;color:var(--bandeau-lien)}
  .side .nav svg{display:none}
  .side .nav:hover{background:var(--bandeau-survol)}
  .side .nav.on{background:var(--bandeau-actif);color:var(--bandeau-actif-texte,var(--bandeau-texte));font-weight:700}
  .side .nav[data-v=saisir]{margin-left:auto;gap:8px;color:var(--bandeau-texte);font-weight:600}
  .side .nav[data-v=saisir] svg{display:block}
  .side .me{margin:0 0 0 8px;padding:0}
  .side .me .mail,.side .me .link{display:none}
  main{padding:30px 32px 40px}
  .wrap{max-width:1240px}
  .al-grille{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}
}
.head.hero-head{display:block}
.head.hero-head h1{max-width:760px}
@media (min-width:801px){.head.hero-head h1{font-size:34px}}
.al-carte{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.al-carte>.al-cle{grid-column:1/-1}
.al-col{display:flex;flex-direction:column;gap:12px;min-width:0;padding:16px;background:#fff;border:1px solid var(--line);border-radius:18px}
.al-col.alerte{border-color:var(--crit)}
.al-col h2{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:18px;letter-spacing:-.01em}
.al-carte .al-col .u-entete{margin:0;justify-content:space-between}
.al-carte .u-hexes{padding:0 0 32px;row-gap:34px}
.al-wx{display:flex;flex-direction:column;gap:9px}
.al-temps{display:flex;align-items:center;gap:10px}
.al-temps svg,.al-jour svg{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.al-temps svg{width:30px;height:30px;flex:none}
.al-temps>b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:26px;line-height:1;font-variant-numeric:tabular-nums}
.al-temps span{display:flex;flex-direction:column;font-size:13px;line-height:1.25;color:var(--muted)}
.al-temps strong{font-size:14px;font-weight:600;color:var(--ink)}
.al-jours{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.al-jours.n5{grid-template-columns:repeat(5,minmax(0,1fr))}
.al-jour{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 2px;border-radius:11px;background:#EDF0E8;font-size:13px;font-variant-numeric:tabular-nums;text-transform:capitalize}
.al-jour svg{width:20px;height:20px}
.al-jour.ok{background:#DFEDE4;color:#1F5239;font-weight:600}
.al-creneau{margin:0;font-size:14px;color:var(--muted)}
.al-creneau b{font-weight:600;color:#1F5239}
.al-deux{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px 36px;align-items:start}
.al-grille{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}
.al-grille .card{display:flex;flex-direction:column;gap:10px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:18px}
body[data-route=ruches] .al-grille .card{background:#fff;border:1px solid var(--line);padding:16px}
.al-titre{padding:0;border:0;background:none;font:inherit;font-weight:700;color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--line2);min-height:32px}
.al-liens{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:8px}
.al-liens button{display:flex;flex-direction:column;gap:1px;min-height:60px;padding:9px 14px;border:1px solid var(--line);border-radius:14px;background:#fff;font:inherit;color:var(--ink);text-align:left}
.al-fiche{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:18px;align-items:start}
.al-ruches h2{margin:0 0 6px;font-size:18px;font-family:'Bricolage Grotesque',system-ui,sans-serif}
.al-ligne{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:0 10px;width:100%;min-height:58px;padding:8px 0;border:0;border-top:1px solid var(--line);background:none;font:inherit;color:var(--ink);text-align:left}
.al-ligne .n4-hex{grid-row:1/3}
.al-ligne .al-kg{grid-row:1/3;grid-column:3}
.al-opt{display:none}
@media (min-width:801px){
  .al-ligne{grid-template-columns:34px 1.2fr 1fr 1fr 1fr 1fr 1fr}
  .al-ligne .n4-hex,.al-ligne .al-kg{grid-row:auto;grid-column:auto}
  .al-opt{display:block;font-size:14px}
}
@media (max-width:800px){
  .al-carte .al-jours{display:none}
  .al-carte{gap:12px}
}
.al-carte{display:flex;flex-wrap:wrap;gap:16px}
.al-carte>.al-col{flex:1 1 300px;display:flex;padding:16px;border:1px solid var(--line)}
.al-carte>.al-col.alerte{border-color:var(--crit)}
.al-carte>.al-cle{flex:0 0 100%}
.al-col>.btn{width:100%}
.subtabs button{flex:0 0 auto!important;padding:0 2px}
@media (min-width:801px){
  .al-grille{grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
}
.al-carte>.al-col{align-items:stretch;text-align:left}
.al-carte>.al-col>.u-entete{display:flex;width:100%;justify-content:space-between;align-items:center}
.al-carte>.al-col>.u-hexes{justify-content:flex-start}
.al-carte>.al-col .al-temps{justify-content:flex-start}
/* styles/22-accueil-sur-ordinateur-vue.css */
/* ---------- Accueil sur ordinateur : vue d'ensemble ---------- */
@media (min-width:801px){
  .head.hero-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 32px}
  .head.hero-head>div:first-child{flex:1 1 480px;min-width:0}
  .ab-actions{display:flex;flex-wrap:wrap;gap:10px}
  .ab-actions .btn{min-height:48px;white-space:nowrap}
}
.ab{display:flex;flex-direction:column;gap:26px;min-width:0}
.ab-chiffres{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}
.ab-chiffre{display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:0;padding:16px 20px;border:0;border-left:1px solid var(--line);background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:background var(--duree-rapide,.15s) ease}
.ab-chiffre:first-child{border-left:0}
.ab-chiffre:hover{background:var(--ground)}
.ab-chiffre b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:28px;font-weight:700;line-height:1.1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.ab-chiffre b.watch{color:#7D5200}
.ab-chiffre b.good{color:var(--good)}
.ab-minis{display:flex;flex:none;gap:2px}
.ab-mini{display:block;width:22px;height:19px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:var(--good)}
.ab-mini.watch{background:linear-gradient(0deg,#E3A008 50%,#EBD9A6 50%)}
.ab-mini.crit{background:var(--crit)}
.ab-grille{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:stretch}
body[data-route=dash] .ab-grille>.card{display:flex;flex-direction:column;gap:6px;min-width:0;margin:0;padding:18px 20px;background:#fff;border:1px solid var(--line);border-radius:18px}
.ab-grille h2{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:18px;letter-spacing:-.01em}
.ab-grille .u-entete{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ab-rucher{display:flex;flex-direction:column;gap:6px;padding:12px 0;border-top:1px solid var(--line)}
.u-entete+.ab-rucher{border-top:0;padding-top:4px}
.ab-rucher-t{display:flex;align-items:center;gap:12px;width:100%;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.al-temps.court{gap:7px;font-size:14px;color:var(--muted)}
.al-temps.court svg{width:22px;height:22px}
.al-temps.court>b{font-family:inherit;font-size:14px;font-weight:600;color:var(--ink)}
.al-temps.court strong{font-weight:400;color:var(--muted)}
.ab-ruchers .al-wx{gap:4px}
@media (max-width:1100px){.ab-grille{grid-template-columns:minmax(0,1fr)}.ab-chiffres{grid-template-columns:repeat(2,minmax(0,1fr))}.ab-chiffre:nth-child(3){border-left:0}.ab-chiffre:nth-child(n+3){border-top:1px solid var(--line)}}
/* styles/23-gestion-en-blocs.css */
/* ---------- Gestion en blocs ---------- */
.n4-grille.g-blocs{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.n4-grille.g-blocs .n4-g.g-bloc{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px;min-height:232px;padding:18px 20px;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:none;cursor:pointer;color:var(--ink);transition:border-color var(--duree-rapide,.15s) ease,transform var(--duree-rapide,.15s) ease}
.n4-grille.g-blocs .n4-g.g-bloc:hover{border-color:var(--pine);transform:translateY(-1px)}
.n4-g.g-bloc .small{display:block;max-width:none;margin:0;text-align:left;font-weight:400;color:var(--muted);white-space:normal}
.n4-g.g-bloc>*{width:100%}
.g-t{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;font-weight:600;color:var(--muted)}
.g-chev{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.n4-g .g-val{flex:none;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:32px;font-weight:700;line-height:1.1;letter-spacing:-.012em;font-variant-numeric:tabular-nums}
.n4-g .g-val.good{color:var(--good)}
.n4-grille.g-blocs .n4-g .g-val{flex:none}
.g-bas{margin-top:auto;display:flex;flex-direction:column;align-items:stretch;gap:6px}
.g-bas .u-chip{align-self:flex-start}
.g-jauge{display:block;height:9px;border-radius:5px;background:#E3E6DC;overflow:hidden}
.g-jauge i{display:block;height:100%;border-radius:5px;background:var(--honey)}
.g-jauge i.vert{background:var(--good)}
.g-barres{display:flex;align-items:flex-end;gap:5px;height:44px}
.g-barres i{flex:1;min-width:0;border-radius:3px 3px 0 0;background:#C4CABD}
.g-barres i.on{background:var(--pine)}
.g-av{display:flex}
.g-av i{width:34px;height:34px;margin-right:-6px;border-radius:50%;border:2px solid #fff;display:inline-flex;align-items:center;justify-content:center;font-style:normal;font-weight:600;font-size:14px;background:var(--pine);color:#fff}
.g-av i+i{background:var(--honey);color:var(--ink)}
.head.g-tete h1{font-size:34px;line-height:1.14;max-width:760px}
@media (max-width:1100px){.n4-grille.g-blocs{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:800px){.n4-grille.g-blocs{grid-template-columns:minmax(0,1fr);gap:12px}.n4-grille.g-blocs .n4-g.g-bloc{min-height:0;padding:14px 16px}.n4-g .g-val{font-size:26px}.head.g-tete h1{font-size:27px}}
.er-c2,.er-c3{margin-bottom:14px}
.ab-chiffres.er-c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.ab-chiffres.er-c3{grid-template-columns:repeat(3,minmax(0,1fr))}
.ab-chiffres .ab-chiffre:not(button){cursor:default}
.ab-chiffres .ab-chiffre:not(button):hover{background:none}
.er-puces{margin-bottom:14px}
/* styles/24-barre-de-recherche.css */
/* ---------- Barre de recherche ---------- */
.er-barre{position:relative;flex:1 1 280px;max-width:420px;min-width:0;margin-left:auto}
.side .nav[data-v=saisir]{margin-left:8px}
.er-cherche{display:flex;flex-direction:row;align-items:center;gap:8px;min-height:44px;margin:0;padding:0 8px 0 12px;background:#fff;border:1px solid #EBD9A6;border-radius:13px;color:var(--muted);font-weight:400}
.er-cherche:hover{border-color:#7D5200}
.er-cherche:focus-within{border-color:var(--pine);box-shadow:0 0 0 3px var(--honey)}
.er-cherche svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;display:block!important}
.er-cherche input{flex:1;min-width:0;width:auto;min-height:0;margin:0;padding:0;border:0;outline:0;box-shadow:none;background:none;font:inherit;font-size:15px;color:var(--ink)}
.er-cherche input::-webkit-search-cancel-button{display:none}
.er-cherche input::placeholder{color:var(--muted);opacity:1}
kbd{font-family:inherit;font-size:12px;font-weight:600;color:#3F4A44;background:#E9ECE4;border-radius:6px;padding:2px 6px;white-space:nowrap}
#erRes{position:absolute;right:0;top:calc(100% + 8px);width:min(560px,calc(100vw - 48px));max-height:calc(100vh - 100px);display:flex;flex-direction:column;background:#fff;border-radius:14px;box-shadow:0 24px 60px rgba(20,28,24,.35);color:var(--ink);overflow:hidden;z-index:30}
#erRes[hidden]{display:none}
.er-liste{overflow:auto;padding-bottom:6px}
.er-liste h3{margin:0;padding:12px 16px 4px;font-size:13px;font-weight:600;color:var(--muted)}
.er-aide{padding:14px 16px 8px}
.er-r{display:flex;flex-direction:column;justify-content:center;width:100%;min-height:48px;padding:6px 16px;border:0;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.er-r b{font-weight:600}
.er-r:hover,.er-r.sel{background:var(--honeysoft)}
.er-r mark{background:#EBD9A6;color:inherit;border-radius:3px;padding:0 1px}
.er-pied{display:flex;flex-wrap:wrap;gap:14px;margin:0;padding:10px 16px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.er-pied span{display:inline-flex;align-items:center;gap:5px}
body.er-ouvert::after{content:"";position:fixed;inset:0;z-index:15;background:rgba(27,36,32,.28)}
@media (max-width:800px){.er-barre{display:none}}
@media (max-width:1100px){.er-barre kbd{display:none}}
/* styles/composants/feuille.css */
/* Apiviz — composant Feuille : fenêtre de saisie (#sheet) et visionneuse (IT-03, AP-FEAT-015).
   Toutes ses règles sont ici (elles étaient en cinq endroits d'index.html) ; valeurs finales inchangées. */
dialog{border:0;padding:0;width:min(460px,calc(100vw - 24px));max-height:calc(100vh - 40px);color:var(--ink);border-radius:18px;box-shadow:0 24px 60px rgba(20,28,24,.35);overflow:auto}
dialog::backdrop{background:rgba(20,28,24,.45);backdrop-filter:blur(2px)}
dialog form{display:flex;flex-direction:column;gap:12px;padding:18px}
dialog h2{font-size:19px;margin:0}
dialog[open]{animation:pop .2s ease both}
#sheet{position:fixed}
#sheet h2{padding-right:40px}
@keyframes pop{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media (max-width:800px){
  dialog{margin:auto 0 0;width:100vw;max-width:100vw;border-radius:20px 20px 0 0;max-height:88vh}
  dialog[open]{animation:sheet .22s ease both}
  dialog form{padding:20px 16px calc(20px + env(safe-area-inset-bottom))}
  dialog form::before{content:"";display:block;width:40px;height:4px;border-radius:2px;background:#D5D8CE;margin:-8px auto 4px}
  @keyframes sheet{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
}
/* styles/25-fenetres-croix-brouillon-ajouter.css */
/* ---------- Fenêtres : croix, brouillon, ajouter une autre ---------- */
.er-croix{position:absolute;top:8px;right:8px;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:none;color:var(--ink);cursor:pointer}
.er-croix:hover{background:var(--ground)}
.er-croix svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round}
.er-autre{align-self:center}
.er-brouillon{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:50;display:flex;align-items:center;gap:14px;padding:8px 8px 8px 16px;background:var(--pine);color:#fff;border-radius:14px;box-shadow:0 10px 26px rgba(20,28,24,.3);white-space:nowrap}
.er-brouillon .link{color:#F6C453;font-weight:700;text-decoration:none}
.er-oubli{width:36px;height:36px;border:0;border-radius:50%;background:none;color:#C5D0C8;font-size:20px;line-height:1;cursor:pointer}
@media (max-width:800px){.er-brouillon{bottom:calc(92px + env(safe-area-inset-bottom));max-width:calc(100vw - 24px)}}
/* styles/26-petits-gestes.css */
/* ---------- Petits gestes ---------- */
.er-ariane{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:14px;color:var(--muted)}
.er-ariane .u-retour{margin:0;padding:0;min-height:32px;font-weight:600}
.er-vide{align-self:flex-start;margin:8px 10px 12px;min-height:44px}
tbody tr:has([data-act]){cursor:pointer}
tbody tr:has([data-act]):hover{background:var(--ground)}
tbody tr[hidden]{display:none}
.btn[aria-busy=true]{opacity:.7}
/* styles/27-meteo-heure-par-heure.css */
/* ---------- Météo heure par heure ---------- */
.al-heures{align-self:flex-start;min-height:32px;font-size:14px}
.eh-jours{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.eh-jours button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:60px;padding:6px;border:1px solid var(--line);border-radius:13px;background:#fff;font:inherit;font-size:14px;color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums}
.eh-jours svg,.eh-table svg,.eh-h svg{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.eh-jours b{font-weight:600}
.eh-jours button.bon{background:#DFEDE4;border-color:#DFEDE4;color:#1F5239}
.eh-jours button.on{border:2px solid var(--pine)}
.eh-table{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:18px}
.eh-table table{width:100%;min-width:1040px;border-collapse:collapse;font-variant-numeric:tabular-nums}
.eh-table th,.eh-table td{padding:10px 4px;text-align:center;font-size:14px;font-weight:400;border-bottom:1px solid var(--line);box-shadow:none}
.eh-table tr:last-child th,.eh-table tr:last-child td{border-bottom:0}
.eh-table tbody th{padding-left:20px;width:150px;text-align:left;color:var(--muted);font-size:13px;font-weight:600}
.eh-table thead th{font-weight:600;color:var(--ink)}
.eh-table thead th:first-child{padding-left:20px;text-align:left;color:var(--muted);font-size:13px}
.eh-table td.ok{background:#DFEDE4;color:#1F5239}
.eh-table td.court{background:var(--honeysoft);color:#7D5200}
.eh-table td.fort{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:20px;font-weight:700}
.eh-table td svg{display:block;margin:0 auto}
.eh-etat{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:13px;font-weight:600}
.ab-mini.w{background:linear-gradient(0deg,#E3A008 50%,#EBD9A6 50%)}
.ab-mini.non{background:#C4CABD}
.eh-liste{display:none;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
.eh-h{display:grid;grid-template-columns:44px 24px 40px 1fr auto;align-items:center;gap:8px;min-height:50px;padding:0 12px;border-top:1px solid var(--line);font-size:14px;font-variant-numeric:tabular-nums}
.eh-h:first-child{border-top:0}
.eh-h b{font-weight:600}
.eh-h.ok{background:#DFEDE4}
.eh-h.ok .small{color:#1F5239}
.eh-h.court{background:var(--honeysoft)}
@media (max-width:800px){.eh-table{display:none}.eh-liste{display:block}.eh-jours{display:flex;overflow-x:auto}.eh-jours button{flex:none;min-height:48px;padding:0 12px}}
/* styles/28-rappels.css */
/* ---------- Rappels ---------- */
.er-cloche{position:relative;flex:none;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:none;color:inherit;cursor:pointer}
.er-cloche svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.er-cloche em{position:absolute;top:3px;right:2px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--crit);color:#fff;font-style:normal;font-size:12px;font-weight:700;line-height:18px;text-align:center}
.side .er-cloche{margin-left:8px}
.side .er-cloche+.nav[data-v=saisir]{margin-left:0}
.topbar .er-cloche{margin-left:auto}
.topbar .er-cloche+.avatar{margin-left:0}
.er-deux{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:18px;align-items:start}
.er-pile{display:flex;flex-direction:column;gap:18px;min-width:0}
body[data-route=rappels] .card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:none;padding:18px 20px}
.er-rang{display:flex;align-items:center;gap:12px;min-height:56px;padding:6px 0;border-top:1px solid var(--line)}
.card h2+.er-rang{border-top:0}
.er-bascule{flex:none;position:relative;width:44px;height:26px;padding:0;border:0;border-radius:13px;background:#C4CABD;cursor:pointer}
.er-bascule::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:left var(--duree-rapide,.15s) ease}
.er-bascule.on{background:var(--good)}
.er-bascule.on::after{left:21px}
.u-todo.er-vu b{font-weight:400}
.er-pastilles{display:flex;gap:8px}
.er-pastilles i{width:28px;height:28px;border-radius:50%;border:2px solid #C4CABD}
.er-pastilles i.on{border-color:var(--pine);box-shadow:0 0 0 2px var(--honey)}
@media (max-width:1100px){.er-deux{grid-template-columns:minmax(0,1fr)}}
/* styles/29-registre-lot-facture-saison.css */
/* ---------- Registre, lot, facture, saison ---------- */
.er-onglets{display:inline-flex;flex-wrap:wrap;gap:6px;align-self:flex-start;background:#E7EAE1;border-radius:13px;padding:3px}
.er-onglets button{min-height:42px;padding:0 14px;border:0;border-radius:10px;background:none;font:inherit;font-size:14px;font-weight:500;color:var(--ink);cursor:pointer}
.er-onglets button.on{background:var(--pine);color:#fff;font-weight:600}
.er-act{margin:0}
.er-dl{display:grid;grid-template-columns:120px 1fr;gap:8px 16px;margin:0 0 14px}
.er-dl dt{color:var(--muted);font-size:14px}.er-dl dd{margin:0}
.er-fiche{margin-left:6px;font-size:13px}
.er-fil{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.er-etape{display:flex;flex-direction:column;gap:4px;min-width:0;padding:16px 18px;background:#fff;border:1px solid var(--line);border-radius:18px}
.er-etape b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:22px;letter-spacing:-.01em}
.er-deux2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
body[data-route=lot] .card,body[data-route=saison] .card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:none;padding:18px 20px}
.er-feuille{display:flex;flex-direction:column;gap:16px;max-width:760px;width:100%;padding:32px 34px;background:#fff;border:1px solid var(--line);border-radius:4px;box-shadow:0 10px 26px rgba(20,28,24,.12);font-size:14px}
.er-feuille h2{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:20px}
.er-f-t{display:flex;justify-content:space-between;gap:24px}
.er-f-t p{margin:0}.er-f-t>div{text-align:right}.er-d{text-align:right}
.er-feuille table{width:100%;border-collapse:collapse}
.er-feuille th{padding:7px 0;text-align:left;font-size:13px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line)}
.er-feuille td{padding:8px 0;border-bottom:1px solid var(--line)}
.er-feuille .m{text-align:right;font-variant-numeric:tabular-nums}
.er-f-total{display:flex;justify-content:flex-end;gap:24px;margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:20px;font-weight:700}
.er-manque{color:#7D5200;font-weight:600}
.er-mois{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:4px}
.er-mois button{min-height:44px;border:0;border-radius:10px;background:#EDF0E8;font:inherit;font-size:13px;font-weight:500;color:var(--ink);cursor:pointer}
.er-mois button.on{background:var(--pine);color:#fff;font-weight:700}
@media print{
  body.print-facture #sheet,body.print-facture .side,body.print-facture .topbar,body.print-facture .bottom,body.print-facture .head,body.print-facture .er-ariane,body.print-facture .toast,body.print-facture .er-brouillon{display:none!important}
  body.print-facture{background:#fff}
  body.print-facture .er-feuille{max-width:none;border:0;box-shadow:none;padding:0}
}
@media (max-width:800px){.er-fil,.er-deux2{grid-template-columns:minmax(0,1fr)}.er-mois{grid-template-columns:repeat(6,minmax(0,1fr))}.er-feuille{padding:18px}.er-f-t{flex-direction:column;gap:8px}.er-f-t>div,.er-d{text-align:left}}
/* styles/30-tournee-en-parcours-l.css */
/* Tournée en parcours : l'écran est rempli, la barre d'action reste en bas */
.tn-ico{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}
.tn-app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--ground)}
.tn-haut{flex:none;display:flex;align-items:center;gap:10px;min-height:60px;padding:8px 8px calc(8px) 20px;padding-top:max(8px,env(safe-area-inset-top));background:var(--bandeau);color:var(--bandeau-texte)}
.tn-haut h1{flex:1;min-width:0;margin:0;font-size:20px;font-weight:700;letter-spacing:-.01em;line-height:1.15}
.tn-haut .small{color:inherit}
.tn-logo{display:none}
.tn-x{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border:0;background:none;color:inherit;border-radius:50%;cursor:pointer}
.tn-grille{flex:1;min-height:0;display:flex;flex-direction:column}
.tn-cote{display:none}
.tn-m{flex:1;min-height:0;display:flex;flex-direction:column}
.tn-corps{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:14px 20px}
.tn-pied{position:sticky;bottom:0;z-index:5;flex:none;display:flex;flex-direction:column;gap:6px;padding:10px 20px calc(14px + env(safe-area-inset-bottom));background:var(--card);border-top:1px solid var(--line)}
.tn-suivi{flex:none;display:flex;align-items:center;gap:4px;padding:8px 20px;background:var(--bandeau);color:var(--bandeau-texte);overflow:hidden}
.tn-suivi i{flex:none;width:30px;height:26px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:#EBD9A6;display:flex;align-items:center;justify-content:center;font:700 13px 'Bricolage Grotesque',system-ui,sans-serif;color:var(--ink)}
.tn-suivi i.fait{background:var(--good);color:#fff}
.tn-suivi i.ici{background:var(--pine);color:#fff}
.tn-suivi span{margin-left:auto;font-size:13px;font-weight:600;white-space:nowrap}
.tn-say{margin:0;font:700 25px/1.14 'Bricolage Grotesque',system-ui,sans-serif;letter-spacing:-.018em}
.tn-say.tn-c{text-align:center}
.tn-h2,.tn-carte h2{margin:0;font:700 16px 'Bricolage Grotesque',system-ui,sans-serif}
.tn-meteo{margin:0;font-size:14px}
.tn-rappel{margin:0;font-size:13px;color:var(--muted)}
.tn-lanote{color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tn-alerte{margin:0;padding:9px 12px;border-radius:11px;background:var(--honeysoft);color:var(--watch);font-size:14px;font-weight:500}
.tn-carte{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}
.tn-liste{padding-top:4px;padding-bottom:4px;gap:0}
.tn-remplit{flex:1}
.tn-remplit .tn-l{flex:1}
.tn-l{display:flex;align-items:center;gap:10px;min-height:46px;padding:6px 0;border-top:1px solid var(--line)}
.tn-l:first-child,.tn-carte h2+.tn-l{border-top:0}
.tn-l>span{flex:1;min-width:0;display:flex;flex-direction:column}
.tn-l b{font-weight:600}
.tn-l small,.tn-mode small{font-size:13px;color:var(--muted)}
.tn-hex{flex:none;width:30px;height:26px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:var(--good);color:#fff;display:flex;align-items:center;justify-content:center;font:700 13px 'Bricolage Grotesque',system-ui,sans-serif}
.tn-hex.watch{background:var(--honey);color:var(--ink)}
.tn-hex.crit{background:var(--crit)}
.tn-tag{flex:none;display:inline-flex;align-items:center;min-height:26px;padding:0 9px;border-radius:8px;font-size:13px;font-weight:600;font-style:normal}
.tn-tag.g{background:#DFEDE4;color:#1F5239}.tn-tag.w{background:var(--honeysoft);color:var(--watch)}.tn-tag.c{background:#F8E3E0;color:#8A1414}.tn-tag.n{background:#E9ECE4;color:#3F4A44}
.tn-modes{flex:1;display:flex;flex-direction:column;gap:8px}
.tn-modes .tn-mode{flex:1}
.tn-mode{display:flex;align-items:center;gap:12px;min-height:72px;padding:9px 14px;width:100%;text-align:left;background:var(--card);border:1px solid var(--line);border-radius:14px;color:var(--ink);font:inherit;cursor:pointer}
.tn-mode.on{outline:2px solid var(--pine);outline-offset:-2px;background:var(--honeysoft)}
.tn-mode>span:last-child{flex:1;min-width:0;display:flex;flex-direction:column}
.tn-mode b{font-weight:700}
.tn-mi{flex:none;width:44px;height:44px;display:flex;align-items:center;justify-content:center}
.tn-b{min-height:52px;width:100%;padding:0 16px;border:1px solid var(--line2);border-radius:13px;background:var(--card);color:var(--ink);font:600 15px 'Instrument Sans',system-ui,sans-serif;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
.tn-b.main{background:var(--pine);border-color:var(--pine);color:#fff}
.tn-b.miel{background:var(--honey);border-color:var(--honey);color:var(--ink);min-height:60px;font-size:17px}
.tn-deux .tn-b.miel{min-height:52px;font-size:15px}
.tn-b:disabled{opacity:.5;cursor:default}
.tn-deux{display:grid;grid-template-columns:1fr 2fr;gap:10px}
.tn-lien{min-height:44px;padding:0 4px;border:0;background:none;color:var(--good);font:600 14px 'Instrument Sans',system-ui,sans-serif;cursor:pointer}
/* styles/31-dictee.css */
/* Dictée */
.tn-haut.sombre,.tn-m.sombre,.tn-m.sombre .tn-suivi,.tn-m.sombre .tn-pied{background:var(--pine);color:#fff}
.tn-m.sombre .tn-pied{border-top-color:var(--pine2)}
.tn-m.sombre .tn-suivi i{background:var(--pine2);color:#fff}
.tn-m.sombre .tn-suivi i.fait{background:var(--good)}
.tn-m.sombre .tn-suivi i.ici{background:var(--honey);color:var(--ink)}
.tn-m.sombre .tn-b:not(.miel){background:none;border-color:#3D5146;color:#fff}
.tn-ecoute{flex:none;display:flex;align-items:center;gap:12px}
.tn-ondes{flex:1;display:flex;align-items:center;gap:4px;height:40px;opacity:.35}
.tn-ondes.actif{opacity:1}
.tn-ondes i{width:5px;border-radius:3px;background:var(--honey)}
.tn-ondes.actif i{animation:tnonde 1.1s ease-in-out infinite alternate}
.tn-ondes i:nth-child(3n){animation-delay:.2s}.tn-ondes i:nth-child(3n+1){animation-delay:.4s}
@keyframes tnonde{to{transform:scaleY(.45)}}
@media (prefers-reduced-motion:reduce){.tn-ondes.actif i{animation:none}}
.tn-dicte{flex:none;width:100%;min-height:118px;padding:12px 14px;border:0;border-radius:14px;background:var(--pine2);color:#fff;font:400 16px/1.42 'Instrument Sans',system-ui,sans-serif;resize:none}
.tn-dicte::placeholder{color:#C5D0C8}
.tn-compris{flex:1;min-height:0;background:var(--pine2);border-radius:14px;padding:4px 14px;display:flex;flex-direction:column;overflow:auto}
.tn-compris>div{flex:1;display:flex;flex-direction:column;justify-content:center;gap:6px;padding:8px 0;border-top:1px solid #3D5146}
.tn-compris>div:first-child{border-top:0}
.tn-lus{display:flex;flex-wrap:wrap;gap:6px}
.tn-lus span{min-height:30px;padding:0 10px;display:inline-flex;align-items:center;border-radius:15px;background:var(--pine);font-size:13px;font-weight:600;color:#fff}
.tn-lus span.manque{background:none;border:1px dashed #C5D0C8;color:#C5D0C8}
/* styles/32-questions.css */
/* Questions */
.tn-bulle{flex:none;background:var(--honeysoft);border-radius:14px 14px 14px 5px;padding:12px 14px;display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.tn-bulle b{font:700 22px/1.16 'Bricolage Grotesque',system-ui,sans-serif;letter-spacing:-.012em}
.tn-bulle small{font-size:13px;color:var(--muted)}
.tn-reps{flex:1;min-height:0;display:grid;grid-auto-rows:minmax(56px,1fr);gap:8px}
.tn-reps button{border:1px solid var(--line2);border-radius:13px;background:var(--card);color:var(--ink);font:700 20px 'Bricolage Grotesque',system-ui,sans-serif;cursor:pointer}
.tn-seul{flex:1;display:flex;flex-direction:column;justify-content:center;gap:12px}
.tn-note{flex:none}
.tn-note small{font-size:13px;color:var(--muted)}
.tn-tags{display:flex;flex-wrap:wrap;gap:6px}
.tn-tags button{min-height:30px;padding:0 9px;border:0;border-radius:8px;background:#E9ECE4;color:#3F4A44;font:600 13px 'Instrument Sans',system-ui,sans-serif;cursor:pointer}
.tn-tags span{font-size:13px;color:var(--muted)}
/* styles/33-manuel.css */
/* Manuel */
.tn-e-manuel .tn-corps{gap:8px}
.tn-lab{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:-4px}
.tn-rang{flex:1;display:grid;grid-template-columns:repeat(var(--nb,3),minmax(0,1fr));gap:6px;min-height:46px}
.tn-rang button{border:1px solid var(--line2);border-radius:11px;background:var(--card);color:var(--ink);font:500 14px 'Instrument Sans',system-ui,sans-serif;cursor:pointer;padding:0 2px}
.tn-rang button.on{background:var(--pine);border-color:var(--pine);color:#fff;font-weight:600}
.tn-pas{flex:1;display:grid;grid-template-columns:52px 1fr 52px;gap:6px;min-height:46px}
.tn-pas button{border:1px solid var(--line2);border-radius:11px;background:var(--card);color:var(--ink);font-size:20px;font-weight:700;cursor:pointer}
.tn-pas label{display:flex;align-items:center;justify-content:center;gap:4px;margin:0;flex-direction:row;font:700 20px 'Bricolage Grotesque',system-ui,sans-serif}
.tn-pas input{width:96px;min-height:0;height:100%;border:0;background:none;text-align:right;font:inherit;color:inherit;padding:0}
.tn-pas input::placeholder{font:500 14px 'Instrument Sans',system-ui,sans-serif;color:var(--muted)}
.tn-outils{flex:1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-height:56px}
.tn-outils button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px solid var(--line);border-radius:11px;background:var(--card);color:var(--ink);font:600 13px 'Instrument Sans',system-ui,sans-serif;cursor:pointer}
/* styles/34-verification-et-bilan.css */
/* Vérification et bilan */
.tn-verifs{flex:1;display:flex;flex-direction:column;gap:12px}
.tn-verifs .tn-l{border:0;padding:0;min-height:0}
.tn-dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:3px 12px;font-size:14px}
.tn-dl dt{color:var(--muted)}
.tn-dl dd{margin:0;font-weight:600;text-align:right}
.tn-dl dd.doute{color:var(--watch)}
.tn-dl dd.doute::after{content:" ?"}
.tn-prop{display:flex;align-items:center;gap:10px;min-height:52px;padding:8px 12px;background:var(--honeysoft);border-radius:14px;font-size:14px}
.tn-prop>span{flex:1}
.tn-fin{display:flex;justify-content:center}
.tn-chiffres{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--card);border:1px solid var(--line);border-radius:14px}
.tn-chiffres div{display:flex;flex-direction:column;padding:10px 12px;border-left:1px solid var(--line)}
.tn-chiffres div:first-child{border-left:0}
.tn-chiffres b{font:700 24px/1.1 'Bricolage Grotesque',system-ui,sans-serif}
.tn-chiffres small{font-size:13px;color:var(--muted)}
.tn-onglets{display:none}
@media (max-height:740px){.tn-mode{min-height:60px;padding-top:6px;padding-bottom:6px}.tn-say{font-size:22px}}
/* styles/35-ordinateur-trois-colonnes-rien.css */
/* Ordinateur : trois colonnes, rien de vide */
@media (min-width:1100px){
  .tn-haut{padding:10px 32px;min-height:68px}
  .tn-logo{display:block}
  .tn-grille{flex-direction:row;display:grid;grid-template-columns:280px minmax(0,1fr) 320px;gap:18px;padding:18px 32px 32px;align-items:stretch}
  .tn-grille.seule{grid-template-columns:minmax(0,720px);justify-content:center}
  .tn-cote{display:flex;flex-direction:column;gap:12px;min-width:0}
  .tn-cote .tn-carte{border-radius:18px;padding:16px 18px}
  .tn-m{gap:12px}
  .tn-m.sombre{border-radius:18px;padding-top:12px;overflow:hidden}
  .tn-haut.sombre{background:var(--bandeau);color:var(--bandeau-texte)}
  .tn-onglets{flex:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:3px;background:#E7EAE1;border-radius:13px}
  .tn-m.sombre .tn-onglets{margin:0 16px;background:var(--pine2)}
  .tn-onglets button{min-height:44px;border:0;border-radius:10px;background:none;color:inherit;font:500 14px 'Instrument Sans',system-ui,sans-serif;cursor:pointer}
  .tn-onglets button.on{background:var(--pine);color:#fff;font-weight:600}
  .tn-m.sombre .tn-onglets button.on{background:var(--honey);color:var(--ink)}
  .tn-suivi{background:none;padding:0 2px;display:none}
  .tn-corps{background:var(--card);border:1px solid var(--line);border-radius:18px 18px 0 0;border-bottom:0;padding:18px}
  .tn-m.sombre .tn-corps{background:none;border:0;padding:12px 16px}
  .tn-pied{position:static;border:1px solid var(--line);border-top:0;border-radius:0 0 18px 18px;padding:10px 18px 18px}
  .tn-m.sombre .tn-pied{border:0;border-radius:0}
  .tn-ruches{flex:1}
  .tn-ruches button{flex:1;display:flex;align-items:center;gap:10px;width:100%;min-height:60px;padding:8px 10px;border:0;border-radius:12px;background:none;color:inherit;text-align:left;font:inherit;cursor:pointer}
  .tn-ruches button.on{background:var(--honeysoft)}
  .tn-ruches span{display:flex;flex-direction:column}
  .tn-ruches b{font-weight:600}.tn-ruches small{font-size:13px;color:var(--muted)}
  .tn-heures{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}
  .tn-heures span{display:flex;flex-direction:column;align-items:center;padding:6px 0;background:var(--ground);border-radius:9px;font-size:13px}
  .tn-heures b{font:700 16px 'Bricolage Grotesque',system-ui,sans-serif}
  .tn-barres{display:flex;align-items:flex-end;gap:6px;height:64px}
  .tn-barres i{flex:1;background:var(--line2);border-radius:3px 3px 0 0}
  .tn-barres i.on{background:var(--pine)}
  .tn-e-manuel .tn-corps{gap:10px}
  /* Formulaire complet de visite sur toute la largeur */
  .u-visite-form{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}
  .u-visite-form>.v3-tournee,.u-visite-form>.u-haut,.u-visite-form>.vx-entree,.u-visite-form>.u-barre{grid-column:1/-1}
}
/* styles/36-ruchers.css */
/* Ruchers (IT-05) : fiche rucher, section Infos repliée. */
.rc-infos summary > span:first-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.rc-infos summary h2{margin:0}
.rc-apercu{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.rc-liste{margin:8px 0 4px;display:grid;gap:10px}
.rc-info{display:grid;grid-template-columns:minmax(120px,190px) minmax(0,1fr);gap:4px 12px}
.rc-info dt{font-size:13px;font-weight:600;color:var(--muted)}
.rc-info dd{margin:0;white-space:pre-line;overflow-wrap:anywhere}
.rc-gestion .u-deux{margin-top:4px}
@media (max-width:800px){
  .rc-info{grid-template-columns:minmax(0,1fr);gap:2px}
}

/* Emplacements, déplacements, ruches physiques (IT-06). */
.dp-rucher .u-entete h2{margin:0}
.dp-pick{margin-top:8px}
.dp-pick button{min-height:48px}
.dp-resume{margin:4px 0 0}
.cl-ou{margin-left:auto}
.cl-statut .u-entete,.cl-contenant .u-entete,.cl-emplacements .u-entete{align-items:center}
.cl-statut .u-deux,.cl-statut p{margin-top:8px}
.ct-liste .u-entete h2{margin:0}
.cl-ligne{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid #EDEFE7}
.cl-ligne:first-of-type{border-top:0}
.cl-ligne > span:first-child{display:flex;flex-direction:column;min-width:0}
.cl-emplacements > .small:last-child{margin-top:6px}
/* styles/37-meteo-lisible.css */
/* ---------- Météo lisible (v5.22) : verdict, jours, frise de la journée, détail d'une heure, créneaux ----------
   Couleurs d'état de la charte : vert prairie = on peut ouvrir, miel doux = visite rapide, gris = attendre.
   Les entrées sont courtes (--duree-lente au plus) et coupées par « moins d'animations » (02-identite…). */
.mt{display:flex;flex-direction:column;gap:14px;--mt-bon:#2F6B4F;--mt-bonbg:#DFEDE4;--mt-rap:#E3A008;--mt-rapbg:#FBEFC9;--mt-non:#C4CABD;--mt-nonbg:#EEF0EA}

/* 1. Maintenant */
.mt-hero{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;align-items:center;padding:18px 18px 16px;border-radius:20px;background:var(--mt-nonbg);color:var(--ink);animation:mt-monte var(--duree-lente) var(--sortie) both}
.mt-hero.bon{background:var(--mt-bonbg)}
.mt-hero.rapide{background:var(--mt-rapbg)}
.mt-hero-ciel{display:flex;align-items:center;gap:8px}
.mt-hero-ciel svg{width:44px;height:44px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.mt-hero.bon .mt-hero-ciel svg{color:var(--mt-bon)}
.mt-hero.rapide .mt-hero-ciel svg{color:#9A6500}
.mt-hero-ciel b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:44px;line-height:1;font-weight:700;font-variant-numeric:tabular-nums}
.mt-hero-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.mt-hero-txt small{font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.mt-hero-txt strong{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:21px;line-height:1.15;font-weight:700}
.mt-hero.bon .mt-hero-txt strong{color:#1F5239}
.mt-hero.rapide .mt-hero-txt strong{color:var(--watch)}
.mt-hero-txt span{font-size:14px;color:var(--muted)}
.mt-hero-suite{grid-column:1/-1;margin:6px 0 0;padding-top:10px;border-top:1px solid rgba(30,43,36,.1);font-size:14px;color:var(--ink)}
.mt-hero-suite b{font-weight:600}

/* 2. Jours : la jauge dit combien d'heures permettent d'ouvrir */
.mt-jours{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.mt-jour{display:flex;flex-direction:column;align-items:center;gap:4px;min-height:44px;padding:10px 6px 9px;border:1px solid var(--line);border-radius:16px;background:var(--card);font:inherit;color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums;transition:transform var(--duree-rapide) var(--sortie),border-color var(--duree-rapide);animation:mt-monte var(--duree) var(--sortie) both;animation-delay:calc(var(--i) * 40ms)}
.mt-jour:active{transform:scale(.96)}
.mt-jour svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mt-jour-nom{font-size:13px;font-weight:600;text-transform:capitalize}
.mt-jour b{font-size:17px;font-weight:700}
.mt-jour small{font-size:11.5px;line-height:1.2;color:var(--muted);text-align:center}
.mt-jour.bon small{color:#1F5239;font-weight:600}
.mt-jour.rapide small{color:var(--watch);font-weight:600}
.mt-jour.on{border:2px solid var(--pine);padding:9px 5px 8px;box-shadow:var(--shadow)}
.mt-jauge{display:flex;width:100%;max-width:64px;height:5px;border-radius:3px;background:var(--mt-nonbg);overflow:hidden}
.mt-jauge i{display:block;height:100%;background:var(--mt-bon);transform-origin:left;animation:mt-pousse var(--duree-lente) var(--sortie) both;animation-delay:calc(var(--i) * 40ms + 120ms)}
.mt-jauge i.r{background:var(--mt-rap)}

/* 3. Frise de la journée */
.mt-frise{padding:14px 12px 10px;border:1px solid var(--line);border-radius:20px;background:var(--card)}
.mt-legende{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0 4px 10px;font-size:12px;color:var(--muted)}
.mt-legende span::before{content:"";display:inline-block;width:10px;height:10px;margin-right:5px;border-radius:3px;vertical-align:-1px;background:var(--mt-non)}
.mt-legende .bon::before{background:var(--mt-bon)}
.mt-legende .rapide::before{background:var(--mt-rap)}
.mt-legende .hors::before{background:repeating-linear-gradient(135deg,var(--mt-nonbg) 0 3px,#fff 3px 6px);border:1px solid var(--line)}
.mt-grille{position:relative;display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr))}
.mt-courbe{position:absolute;left:0;right:0;top:0;width:100%;height:56px;pointer-events:none;overflow:visible;animation:mt-trace .7s var(--sortie) .15s both}
.mt-courbe polyline{fill:none;stroke:var(--pine);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.mt-h{position:relative;display:grid;grid-template-rows:60px 28px 30px 18px 26px;justify-items:center;align-items:center;min-width:0;padding:0;border:0;background:none;font:inherit;color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums;border-radius:10px}
.mt-h:focus-visible{outline:2px solid var(--pine);outline-offset:-2px}
.mt-t{position:absolute;top:calc(var(--y) * 1px - 19px);font-size:12px;font-weight:600;color:var(--ink);background:var(--card);padding:0 2px;border-radius:4px;line-height:1.2}
.mt-h.on .mt-t{background:none}
.mt-bande{grid-row:2}.mt-pluie{grid-row:3}.mt-vent{grid-row:4}.mt-heure{grid-row:5;align-self:start;padding-top:2px}
@media (max-width:700px){.mt-h:nth-child(odd):not(.now):not(.on) .mt-t{visibility:hidden}.mt-hu{display:none}.mt-heure,.mt-vent{font-size:11.5px}}
.mt-bande{width:calc(100% - 3px);height:24px;border-radius:7px;background:var(--mt-non);transform-origin:bottom;animation:mt-pousse-y var(--duree) var(--ressort) both;animation-delay:calc(var(--i) * 25ms + 80ms)}
.mt-h.bon .mt-bande{background:var(--mt-bon)}
.mt-h.rapide .mt-bande{background:var(--mt-rap)}
.mt-h.hors .mt-bande{background:repeating-linear-gradient(135deg,var(--mt-nonbg) 0 3px,#fff 3px 6px);box-shadow:inset 0 0 0 1px var(--line)}
.mt-h.passee .mt-bande{opacity:.35}
.mt-h.now .mt-bande{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--pine)}
.mt-h.now .mt-heure{color:var(--pine);font-weight:700}
.mt-h.now .mt-heure::after{content:"";display:block;width:5px;height:5px;margin:2px auto 0;border-radius:50%;background:var(--pine)}
.mt-h.on{background:rgba(30,43,36,.06)}
.mt-h.on .mt-heure{color:var(--ink);font-weight:700}
.mt-pluie{display:flex;align-items:flex-end;width:8px;height:26px;border-radius:3px;background:var(--mt-nonbg);overflow:hidden}
.mt-pluie i{display:block;width:100%;height:calc(var(--p) * 1%);background:#5B88A6;border-radius:3px}
.mt-vent{font-size:12px;color:var(--muted)}
.mt-vent.fort{color:var(--crit);font-weight:700}
.mt-heure{font-size:12px;color:var(--muted);white-space:nowrap}
.mt-axe{display:flex;gap:14px;margin:6px 4px 0;font-size:11px;color:var(--muted)}

/* Détail d'une heure, sous la frise */
.mt-detail{display:flex;flex-direction:column;gap:8px;padding:14px 16px;border-radius:16px;background:var(--mt-nonbg);animation:mt-fond var(--duree) var(--sortie) both}
.mt-detail.bon{background:var(--mt-bonbg)}
.mt-detail.rapide{background:var(--mt-rapbg)}
.mt-detail.hors{background:var(--ground);border:1px dashed var(--line2)}
.mt-detail-h{display:flex;align-items:center;gap:10px}
.mt-detail-h svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mt-detail-h b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:20px;font-weight:700}
.mt-detail-h strong{font-size:15px;font-weight:600}
.mt-detail.bon .mt-detail-h strong{color:#1F5239}
.mt-detail.rapide .mt-detail-h strong{color:var(--watch)}
.mt-detail p{margin:0;font-size:14px;color:var(--ink)}
.mt-detail-v{display:grid;grid-template-columns:repeat(auto-fit,minmax(88px,1fr));gap:8px}
.mt-detail-v span{display:flex;flex-direction:column;padding:8px 10px;border-radius:11px;background:rgba(255,255,255,.7);font-variant-numeric:tabular-nums}
.mt-detail-v small{font-size:11.5px;color:var(--muted)}
.mt-detail-v b{font-size:15px;font-weight:600}
.mt-prevoir{align-self:flex-start}

/* 4. Créneaux du jour */
.mt-plages{display:flex;flex-direction:column;gap:8px}
.mt-plages h2{margin:4px 0 2px;font-size:16px}
.mt-plage{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:8px 8px 8px 14px;border-radius:14px;background:var(--card);border:1px solid var(--line);border-left:6px solid var(--mt-bon);animation:mt-monte var(--duree) var(--sortie) both}
.mt-plage.rapide{border-left-color:var(--mt-rap)}
.mt-plage-h{display:flex;flex-direction:column;min-width:0}
.mt-plage-h b{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}
.mt-plage-h small{font-size:13px;color:var(--muted)}
.mt-rien{margin:0;padding:14px 16px;border-radius:14px;background:var(--mt-nonbg);font-size:14px}

/* Tableau complet, replié */
.mt-tout summary{min-height:44px;display:flex;align-items:center;font-weight:600;cursor:pointer;color:var(--pine)}
.mt-tout[open] .eh-table{display:block}
.mt-tout .eh-liste{display:none}
.mt-seuils{margin:0}

/* Chargement : trois alvéoles qui respirent */
.mt-attente{display:flex;align-items:center;gap:6px}
.mt-attente i{width:14px;height:16px;background:var(--honey);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);animation:mt-respire 1s ease-in-out infinite}
.mt-attente i:nth-child(2){animation-delay:.15s}.mt-attente i:nth-child(3){animation-delay:.3s}
.mt-attente p{margin:0 0 0 8px}

/* Frise courte sur la carte du rucher */
.mt-frise-c{display:grid;grid-template-columns:repeat(var(--n,6),minmax(0,1fr));gap:3px;margin:2px 0;font-size:11px;color:var(--muted)}
.mt-frise-c i{height:10px;border-radius:3px;background:var(--line2)}
.mt-frise-c i.n2{background:#2F6B4F}
.mt-frise-c i.n1{background:#E3A008}
.mt-frise-c i.passee{opacity:.35}
.mt-frise-c i.now{box-shadow:0 0 0 1.5px #fff,0 0 0 3px var(--pine)}
.mt-frise-c span{grid-row:2;font-variant-numeric:tabular-nums}
.mt-frise-c span:first-of-type{grid-column:1/3;justify-self:start}
.mt-frise-c span:last-of-type{grid-column:-3/-1;justify-self:end}

@keyframes mt-monte{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes mt-pousse{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes mt-pousse-y{from{transform:scaleY(.2);opacity:0}to{transform:none;opacity:1}}
@keyframes mt-trace{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
@keyframes mt-fond{from{opacity:.4}to{opacity:1}}
@keyframes mt-respire{0%,100%{transform:scale(.8);opacity:.5}50%{transform:scale(1);opacity:1}}
@media (prefers-reduced-motion:reduce){.mt *{animation:none!important;transition:none!important}.mt-courbe{clip-path:none}}

/* Téléphone : jours en ruban défilant, frise sur toute la largeur */
@media (max-width:560px){
  .mt-jours{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -16px;padding:2px 16px 4px;scrollbar-width:none}
  .mt-jours::-webkit-scrollbar{display:none}
  .mt-jour{flex:0 0 92px;scroll-snap-align:start}
  .mt-frise{margin:0 -4px;padding:14px 6px 10px}
  .mt-hero-ciel b{font-size:38px}
  .mt-hero-txt strong{font-size:19px}
}
@media (min-width:900px){.mt-tout .eh-table{overflow-x:auto}}
.mt-axe-pluie{display:inline-block;width:6px;height:10px;margin-right:5px;border-radius:2px;background:#5B88A6;vertical-align:-1px}
/* styles/38-mouvement.css */
/* ---------- Mouvement : du logo à API (v5.23, mouvement.js) ---------- */
/* Au repos, chaque élément est lisible sans animation : « moins d'animations » (règle générale) fige tout. */

/* Écran de chargement : l'œil-alvéole se réveille en API, une alvéole par ruche se remplit. */
mv-eveil{display:flex;flex-direction:column;align-items:center;gap:18px;padding:24px}
.mv-ev{display:block;width:112px;height:112px;overflow:visible}
.loader img.mv-ev-logo{width:auto;height:32px;animation:none}
.mv-ev-corps{fill:var(--honey);stroke:var(--honey);stroke-width:10;stroke-linejoin:round}
.mv-ev-tige{fill:none;stroke:var(--cire);stroke-width:5;stroke-linecap:round;stroke-dasharray:1 2;stroke-dashoffset:1.5;animation:mv-ev-tige 5.6s ease-in-out infinite}
.mv-ev-bout{fill:var(--cire);transform-box:fill-box;transform-origin:center;transform:scale(0);animation:mv-ev-bout 5.6s ease-in-out infinite}
.mv-ev-pup{fill:var(--pine)}
.mv-ev-ref{fill:var(--cire)}
.mv-ev-g{transform:translate(60px,68px) scale(2.7);animation:mv-ev-g 5.6s ease-in-out infinite}
.mv-ev-d{transform:translate(60px,68px) scale(2.7);animation:mv-ev-d 5.6s ease-in-out infinite}
.mv-ev-pau{animation:mv-ev-cligne 5.6s linear infinite}
.mv-ev-tout{transform-origin:60px 110px;animation:mv-ev-salut 5.6s ease-in-out infinite}
@keyframes mv-ev-g{0%,6%{transform:translate(60px,68px) scale(2.7)}18%,80%{transform:translate(48px,64px) scale(1)}94%,100%{transform:translate(60px,68px) scale(2.7)}}
@keyframes mv-ev-d{0%,6%{transform:translate(60px,68px) scale(2.7)}18%,80%{transform:translate(72px,64px) scale(1)}94%,100%{transform:translate(60px,68px) scale(2.7)}}
@keyframes mv-ev-tige{0%,12%{stroke-dashoffset:1.5}26%,78%{stroke-dashoffset:0}90%,100%{stroke-dashoffset:1.5}}
@keyframes mv-ev-bout{0%,22%{transform:scale(0)}27%{transform:scale(1.4)}31%,78%{transform:scale(1)}84%,100%{transform:scale(0)}}
@keyframes mv-ev-cligne{0%,42%{transform:scale(1,1)}44%{transform:scale(1,.08)}46%,100%{transform:scale(1,1)}}
@keyframes mv-ev-salut{0%,50%{transform:rotate(0deg)}53%{transform:rotate(-7deg)}57%{transform:rotate(7deg)}61%{transform:rotate(-4deg)}65%,100%{transform:rotate(0deg)}}
.mv-ev-cells{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:210px}
.mv-ev-cells i{width:18px;height:16px;background:var(--honey);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);animation:mv-ev-cell 3.2s ease-in-out infinite backwards;animation-delay:calc(var(--i)*.3s)}
@keyframes mv-ev-cell{0%{background:#3D5146;scale:1}8%{background:var(--honey);scale:1.4}16%,78%{background:var(--honey);scale:1}90%,100%{background:#3D5146;scale:1}}
.mv-ev-texte{font-size:14px;color:#C5D0C8;margin-top:-6px}

/* Connexion : les deux points du logo s'envolent, forment API, reviennent. */
mv-logo{display:inline-block;position:relative;line-height:0;vertical-align:top}
mv-logo svg{display:block;overflow:visible}
.mv-pt{transform-box:fill-box;transform-origin:center}
.mv-pt-g{--mv-dx:2239px}
.mv-pt-d{--mv-dx:1499px}
mv-logo.joue .mv-pt{animation:mv-pt 3.4s ease-in-out both}
@keyframes mv-pt{
  0%{transform:translate(0,0) rotate(0deg) scale(1,1);opacity:1}
  8%{transform:translate(0,-160px) rotate(0deg) scale(.9,1.15);opacity:1}
  26%{transform:translate(var(--mv-dx),329px) rotate(360deg) scale(2.2,2.2);opacity:1}
  28%,78%{transform:translate(var(--mv-dx),329px) rotate(360deg) scale(2.2,2.2);opacity:0}
  80%{transform:translate(var(--mv-dx),329px) rotate(360deg) scale(2.2,2.2);opacity:1}
  100%{transform:translate(0,0) rotate(0deg) scale(1,1);opacity:1}}
/* API se pose à droite du mot, dans la carte blanche : ses antennes sapin ne se liraient pas sur le fond sapin. */
.mv-envol{position:absolute;left:100%;top:50%;width:46px;height:46px;margin:-25px 0 0 12px;transform:scale(0);pointer-events:none}
mv-logo.joue .mv-envol{animation:mv-envol 3.4s ease-in-out both}
@keyframes mv-envol{0%,26%{transform:scale(0)}32%{transform:scale(1.15)}36%,74%{transform:scale(1)}80%,100%{transform:scale(0)}}

/* Écrans vides : le symbole suit le doigt ou la souris, et cligne. */
mv-oeil{display:block}
mv-oeil.hexdeco:defined{background:none;clip-path:none}
mv-oeil svg{display:block;width:100%;height:100%;overflow:visible}
.mv-o-suit{transition:transform .18s var(--sortie)}
.mv-o-erre{animation:mv-o-erre 9s ease-in-out infinite}
mv-oeil[data-suit] .mv-o-erre{animation-play-state:paused}
.mv-o-pau{transform-origin:100px 90px;animation:mv-o-cligne 4.6s linear infinite}
@keyframes mv-o-erre{0%,12%{transform:translate(0,0)}20%,38%{transform:translate(20px,-7px)}46%,62%{transform:translate(-22px,5px)}70%,84%{transform:translate(7px,12px)}92%,100%{transform:translate(0,0)}}
@keyframes mv-o-cligne{0%,90%{transform:scale(1,1)}94%{transform:scale(1,.06)}98%,100%{transform:scale(1,1)}}

/* Saisie réussie : la coche se trace, quelques alvéoles jaillissent. */
.toast.mv-ok{display:flex;align-items:center;gap:8px}
.mv-coche{flex:none;width:18px;height:18px;fill:none;stroke:var(--honey-light);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 2;animation:mv-coche .35s .15s var(--sortie) both}
@keyframes mv-coche{from{stroke-dashoffset:1.5}to{stroke-dashoffset:0}}
.mv-eclats{position:absolute;left:25px;top:50%;width:0;height:0;pointer-events:none}
.mv-eclats i{position:absolute;width:10px;height:9px;margin:-4px 0 0 -5px;background:var(--c);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);opacity:0;animation:mv-eclat .7s .2s var(--sortie) both}
@keyframes mv-eclat{0%{opacity:0;transform:rotate(var(--a)) translateY(0) scale(.3)}20%{opacity:1}100%{opacity:0;transform:rotate(var(--a)) translateY(-44px) scale(1)}}

/* Barre du bas : le bouton API s'enfonce, passe dans la feuille « Que veux-tu faire ? », revient à sa place. */
.bottom button[data-v=saisir] api-compagnon{transition:scale var(--duree) var(--ressort)}
.bottom button[data-v=saisir]:active api-compagnon{scale:.86}
.mv-api-sorti .bottom button[data-v=saisir] api-compagnon{scale:0;transition:scale .18s ease-in}
.mv-api-retour .bottom button[data-v=saisir] api-compagnon{animation:mv-retour .5s var(--ressort) both}
@keyframes mv-retour{from{scale:0}to{scale:1}}
api-compagnon.mv-monte .api[data-etat="bonjour"] .api-tout{animation:mv-monte .62s ease-out both}
@keyframes mv-monte{0%{opacity:0;transform:translateY(46px) scale(.5)}55%{opacity:1;transform:translateY(-5px) scale(1.06,.96)}100%{transform:none}}
/* styles/39-connexion.css */
/* Page de connexion (v5.24) : dans l'air de l'application.
   Téléphone : bandeau miel doux avec un rayon d'alvéoles, feuille blanche qui monte du bas, API par-dessus la feuille.
   Ordinateur (801 px et plus) : à gauche la signature et ce que fait Apiviz, à droite le formulaire dans une carte.
   Le balisage est dans authView() d'app.js. .cx-tel : téléphone seulement ; .cx-ordi : ordinateur seulement. */
.auth.cx{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;min-height:100vh;min-height:100dvh;padding:0;background:var(--honeysoft);color:var(--ink)}
.cx .cx-ordi,.cx .cx-vitrine{display:none}

/* Bandeau */
.cx-tete{position:relative;overflow:hidden;flex:1 0 auto;min-height:280px;box-sizing:border-box;display:flex;flex-direction:column;padding:calc(24px + env(safe-area-inset-top)) 20px 26px}
.cx-rayon{position:absolute;top:0;right:0;width:0;height:0;transform-origin:100% 0}
.cx-rayon i{position:absolute;width:62px;height:54px;background:#fff;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.cx-rayon i.cx-demi{background:#EBD9A6}
.cx-rayon img{position:absolute;right:51px;top:29px;width:64px;height:58px;max-width:none}
.cx .brand{position:relative;align-self:flex-start;padding:0;line-height:0}
.cx .brand img,.cx mv-logo svg{height:38px;width:auto}
.cx-phrase{position:relative;display:flex;flex-direction:column;gap:8px}
.cx-tete .cx-phrase{margin-top:auto;padding-top:24px;max-width:calc(100% - 134px)}
.cx-say{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:27px;line-height:1.14;font-weight:700;letter-spacing:-.018em}
.cx .sub{margin:0;font-size:14px;color:#3F4A44}

/* API regarde le formulaire par-dessus la feuille. À la première ouverture il monte après l'envol du logo. */
.cx-corps{flex:none}
.cx-carte{position:relative}
.cx-api{position:absolute;right:40px;top:-58px;width:84px;height:84px;line-height:0}
.cx .cx-api .api .api-regard{transform:translate(-3px,3px)}
.cx-premiere .cx-api{animation:cx-monte .6s cubic-bezier(.34,1.56,.64,1) 3.7s both}
@keyframes cx-monte{from{transform:translateY(62px)}to{transform:none}}

/* Feuille */
.auth.cx form{position:relative;z-index:1;box-sizing:border-box;width:auto;display:flex;flex-direction:column;gap:0;padding:28px 20px calc(16px + env(safe-area-inset-bottom));background:var(--card);border-radius:26px 26px 0 0;box-shadow:none}
.cx form label{gap:6px;margin-top:14px;font-size:13px;font-weight:600}
.cx form label:first-of-type{margin-top:0}
.cx form input{min-height:50px;padding:0 14px;border-radius:13px;font-weight:400}
.cx form input::placeholder{color:var(--muted);opacity:1}
.cx-mdp{position:relative;display:block}
.cx-mdp input{padding-right:100px}
.cx-voir{position:absolute;right:4px;top:3px;min-height:44px;padding:0 12px;border:0;border-radius:10px;background:none;color:var(--good);font-size:14px;font-weight:600}
.cx .cx-aide{margin:8px 0 0}
.cx .cx-oubli{align-self:flex-end;min-height:44px;padding:0;font-size:14px;color:var(--good)}
.cx form .btn.main{min-height:52px;margin-top:18px;border-radius:13px;font-size:16px}
.cx form .cx-oubli + .btn.main{margin-top:0}
.cx form .btn.block:not(.main){min-height:48px;border-radius:13px}
.cx-ou{display:flex;align-items:center;gap:12px;margin:18px 0;font-size:13px;color:var(--muted)}
.cx-ou::before,.cx-ou::after{content:"";flex:1;height:1px;background:var(--line)}
.cx .cx-lien{align-self:center;min-height:44px;margin-top:4px;padding:0;color:var(--good);text-align:center}
.cx .notice{margin:0 0 14px;border-radius:14px;font-size:14px}
.cx .cx-info{display:flex;align-items:center;gap:12px}
.cx .cx-info::before{content:"";flex:none;width:23px;height:20px;background:var(--honey);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.cx form .btn.main + .cx-info{margin:16px 0 0}
.cx .cx-erreur{background:var(--critbg);color:#8A1414;font-weight:600}
.cx-confid{display:flex;align-items:center;justify-content:center;min-height:40px;font-size:13px;font-weight:500;color:#3F4A44}
.cx form .cx-confid{margin-top:12px}

@media (min-width:801px){
  .auth.cx{flex-direction:row;background:var(--ground)}
  .cx .cx-tel{display:none}
  .cx .cx-ordi,.cx .cx-vitrine{display:flex}
  .cx-tete{flex:1 1 50%;min-width:0;min-height:100vh;min-height:100dvh;padding:40px clamp(32px,5vw,64px);background:var(--honeysoft)}
  .cx .brand img,.cx mv-logo svg{height:44px}
  .cx-vitrine{position:relative;flex-direction:column;gap:22px;margin-top:auto;padding-top:150px;max-width:520px}
  .cx-signature{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:clamp(34px,4vw,48px);line-height:1.08;font-weight:700;letter-spacing:-.02em}
  .cx-intro{margin:0;max-width:440px;font-size:17px;line-height:1.45;color:#3F4A44}
  .cx-promesses{margin:6px 0 0;padding:0;list-style:none}
  .cx-promesses li{display:grid;grid-template-columns:23px minmax(0,1fr);column-gap:14px;row-gap:2px;padding:14px 0;border-top:1px solid #EBD9A6}
  .cx-promesses li:last-child{border-bottom:1px solid #EBD9A6}
  .cx-promesses li::before{content:"";grid-row:1 / span 2;width:23px;height:20px;margin-top:2px;background:var(--honey);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
  .cx-promesses b{font-size:16px;font-weight:600}
  .cx-promesses span{font-size:14px;color:#3F4A44}
  .cx-tete .cx-confid{position:relative;align-self:flex-start;justify-content:flex-start;min-height:44px;margin-top:auto;padding-top:16px}
  .cx-corps{flex:1 1 50%;min-width:0;box-sizing:border-box;display:flex;align-items:center;justify-content:center;padding:40px clamp(24px,4vw,48px)}
  .cx-carte{width:100%;max-width:440px;margin-top:58px}
  .auth.cx form{padding:36px;border:1px solid var(--line);border-radius:18px}
  .cx form .cx-phrase{margin-bottom:24px}
  .cx form .sub{color:var(--muted)}
}
/* Grand écran : le rayon grossit avec le panneau. */
@media (min-width:1200px){.cx-rayon{right:52px;transform:scale(1.5)}}
/* styles/38-transitions.css */
/* ---------- Transitions entre écrans (v5.23, transitions.js) ----------
   L'écran change tout de suite ; le contenu neuf (.wrap) entre selon le sens posé sur <html data-vt> :
   aller, de la droite ; retour, de la gauche ; rubrique, en fondu qui monte. Barres du haut, du bas et de côté fixes. */
html[data-vt=aller] .wrap{animation:vt-droite var(--duree-lente) var(--sortie) both}
html[data-vt=retour] .wrap{animation:vt-gauche var(--duree-lente) var(--sortie) both}
html[data-vt=onglet] .wrap{animation:vt-monte var(--duree) var(--sortie) both}
html[data-vt] body{overflow-x:clip}
@keyframes vt-droite{from{opacity:0;transform:translateX(28px)}}
@keyframes vt-gauche{from{opacity:0;transform:translateX(-28px)}}
@keyframes vt-monte{from{opacity:0;transform:translateY(8px)}}
/* Fiche ruche (alveoles.js) : la vue entière ne fait plus qu'un fondu, l'alvéole et le contenu font le mouvement. */
::view-transition-new(root){animation-name:vt-rien}
@keyframes vt-rien{from{opacity:.6}}
@media (prefers-reduced-motion:reduce){html[data-vt] .wrap{animation:none}}
/* styles/39-accueil.css */
/* ---------- Accueil sur téléphone d'après les maquettes (v5.24, accueil.js) ----------
   Bonjour sur fond sapin, priorité d'API sur fond miel clair, quatre chiffres, état des ruches, créneau, À faire,
   dernières actions. Tout est sous .wrap.ac, posé seulement sur téléphone. */
.wrap.ac{display:flex;flex-direction:column;gap:14px}
.wrap.ac>*{margin-top:0;margin-bottom:0}

/* 1. Bonjour */
.wrap.ac .head.hero-head.ac-hero{display:block;background:#1E2B24;color:#fff;border-radius:20px;padding:20px 20px 18px;margin:0}
.wrap.ac .head.hero-head.ac-hero::after{width:170px;height:150px;right:-46px;top:auto;bottom:-40px;opacity:.5}
.ac-oeil{margin:0 0 4px;font-size:13px;font-weight:600;color:var(--honey);letter-spacing:.01em}
.ac-oeil::first-letter{text-transform:uppercase}
.wrap.ac .ac-hero h1{margin:0;font-size:30px;line-height:1.1;color:#fff}
.ac-resume{margin:6px 0 16px;font-size:14px;color:#C9D2CB}
.ac-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ac-actions .btn{min-height:48px;justify-content:center}
.ac-ghost{background:rgba(255,255,255,.08)!important;color:#fff!important;border:1px solid rgba(255,255,255,.28)!important}

/* 2. Priorité d'API */
.ac-api{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:18px;border-radius:20px;background:#FBEFC9;animation:ac-monte var(--duree-lente) var(--sortie) both}
.ac-api.calme{background:var(--card);border:1px solid var(--line)}
.ac-api-t{display:flex;flex-direction:column;gap:6px;min-width:0}
.ac-api-t b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:19px;line-height:1.25;font-weight:700;color:var(--ink)}
.ac-api-t .small{color:var(--muted)}
.ac-api-a{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.ac-api-a .btn{min-height:44px}
.ac-plustard{min-height:44px;padding:0 6px}
.wrap.ac .ac-hero .ex-lecture{margin:6px 0 0;color:#C9D2CB}

/* 3. Quatre chiffres */
.ac-chiffres{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ac-chiffre{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:96px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--card);font:inherit;color:var(--ink);text-align:left;cursor:pointer;font-variant-numeric:tabular-nums;animation:ac-monte var(--duree) var(--sortie) both;transition:transform var(--duree-rapide) var(--sortie)}
.ac-chiffre:nth-child(2){animation-delay:40ms}.ac-chiffre:nth-child(3){animation-delay:80ms}.ac-chiffre:nth-child(4){animation-delay:120ms}
.ac-chiffre:active{transform:scale(.97)}
.ac-chiffre span{font-size:13px;color:var(--muted)}
.ac-chiffre b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:24px;line-height:1.15;font-weight:700}
.ac-chiffre b.good{color:#2F6B4F}.ac-chiffre b.crit{color:var(--crit)}
.ac-chiffre small{font-size:12.5px;line-height:1.3;color:var(--muted)}
.ac-chiffre small.watch{color:var(--watch);font-weight:600}

/* 4. État des ruches : la carte des alvéoles devient une carte blanche avec son titre */
.wrap.ac .al-carte{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px}
.ac-etat{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.ac-etat h2{margin:0;font-size:17px}

/* Blocs de liste en cartes blanches, comme dans les maquettes */
.wrap.ac .u-liste,.wrap.ac .ac-creneau,.wrap.ac .ac-dernieres{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:16px 16px 10px;box-shadow:none}

/* 5. Créneau */
.ac-creneau h2{margin:0}
.ac-creneau>p.small{margin:4px 0 12px}
.ac-jours{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:8px}
.ac-jour{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:44px;padding:9px 2px;border:1px solid transparent;border-radius:12px;background:var(--ground);font:inherit;color:var(--ink);cursor:pointer;font-variant-numeric:tabular-nums;animation:ac-monte var(--duree) var(--sortie) both;animation-delay:calc(var(--i) * 35ms)}
.ac-jour span{font-size:12px;font-weight:600}
.ac-jour b{font-size:17px;font-weight:700}
.ac-jour small{font-size:11.5px;color:var(--muted)}
.ac-jour.bon small{color:#1F5239;font-weight:600}
.ac-jour.rapide small{color:var(--watch);font-weight:600}
.ac-jour.on{border:2px solid #2F6B4F;background:#DFEDE4;padding:8px 1px}
.ac-jour.on b{color:#1F5239}

/* 6. À faire étiqueté */
.ac-liste .ac-todo{display:grid;grid-template-columns:96px 1fr auto;gap:10px;align-items:center;width:100%;min-height:52px;padding:10px 0;border:0;border-top:1px solid var(--line);background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}
.ac-liste .u-entete+.ac-todo{border-top:0}
.ac-tag{justify-self:start;max-width:100%;padding:4px 9px;border-radius:7px;font-size:12.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;background:var(--ground);color:var(--ink)}
.ac-tag.crit{background:#F7DEDA;color:#8E1F14}
.ac-tag.watch{background:#FBEFC9;color:#7A5200}
.ac-tag.good{background:#DFEDE4;color:#1F5239}
.ac-todo-t{font-size:14.5px;line-height:1.35}

/* 7. Dernières actions */
.ac-dernieres .ac-fil{display:flex;gap:12px;align-items:flex-start;width:100%;padding:10px 0;border:0;border-top:1px solid var(--line);background:none;font:inherit;color:var(--ink);text-align:left;cursor:pointer}
.ac-dernieres .u-entete+.ac-fil{border-top:0}
.ac-fil:disabled{cursor:default;opacity:1}
.ac-avatar{flex:0 0 30px;height:30px;border-radius:50%;display:grid;place-items:center;background:#1E2B24;color:#fff;font-size:13px;font-weight:700}
.ac-dernieres .ac-fil:nth-of-type(even) .ac-avatar:not(.vide){background:var(--honey);color:#1E2B24}
.ac-avatar.vide{flex-basis:22px;height:24px;margin:2px 4px 0;border-radius:0;background:var(--line2);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}
.ac-fil>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}
.ac-fil-t{font-size:14.5px;line-height:1.35}
.ac-fil small{font-size:12.5px;color:var(--muted)}

@keyframes ac-monte{from{opacity:0;transform:translateY(8px)}}
@media (prefers-reduced-motion:reduce){.wrap.ac *{animation:none!important;transition:none!important}}

/* Ordinateur (v5.25) : bonjour et priorité côte à côte, quatre chiffres en ligne, puis deux colonnes. */
@media (min-width:801px){
  .wrap.ac{gap:18px}
  .ac-haut{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:18px;align-items:stretch}
  .ac-haut .ac-hero,.ac-haut .ac-api{margin:0}
  .wrap.ac .head.hero-head.ac-hero{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;text-align:left;padding:26px 28px}
  .wrap.ac .ac-hero h1{font-size:36px}
  .ac-actions{max-width:440px}
  .ac-api{align-content:center;padding:24px}
  .ac-api-t b{font-size:21px}
  .ac-chiffres{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
  .ac-chiffre{min-height:110px;padding:18px}
  .ac-chiffre b{font-size:28px}
  .ac-cols{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:18px;align-items:start}
  .ac-col{display:flex;flex-direction:column;gap:18px;min-width:0}
  .ac-col>*{margin:0}
  .wrap.ac .al-carte .al-col{min-width:0}
}
/* styles/40-fiche-ruche.css */
/* ---------- Fiche ruche d'après les maquettes (v5.25, src/domaines/colonies/apercu.js) ----------
   Ce qu'en dit API sous l'en-tête, courbe de poids resserrée tracée puis pointée, journal qui entre carte après carte. */
.fr-api{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:16px;border-radius:16px;background:var(--honeysoft);animation:vt-monte var(--duree-lente) var(--sortie) .08s both}
.fr-api-t{display:flex;flex-direction:column;gap:6px;min-width:0}
.fr-api-t p{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:18px;line-height:1.25;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.fr-api-t .small{color:var(--muted)}

.u-pli .fr-ecart{margin:-6px 0 0;font-variant-numeric:tabular-nums}
.fr-courbe{margin-top:4px}
.fr-ligne{fill:none;stroke:#C78A00;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.fr-point{fill:#C78A00;stroke:var(--card);stroke-width:2}
.fr-trace .fr-ligne{stroke-dasharray:1;stroke-dashoffset:1;animation:al-trace 1s var(--sortie) .2s forwards}
.fr-trace .fr-point{opacity:0;transform-box:fill-box;transform-origin:center;animation:fr-point .32s var(--sortie) both;animation-delay:calc(.35s + var(--i) * .12s)}
@keyframes fr-point{from{opacity:0;transform:scale(.3)}to{opacity:1;transform:none}}

.u-visite.fr-entre{animation:vt-monte var(--duree-lente) var(--sortie) both;animation-delay:calc(.12s + var(--i) * .07s)}
.u-visite.fr-neuve{background:var(--honeysoft);border-color:transparent}
.fr-neuve-t{margin-left:auto}

@media (prefers-reduced-motion:reduce){
  .fr-api,.u-visite.fr-entre{animation:none}
  .fr-trace .fr-ligne{animation:none;stroke-dasharray:none;stroke-dashoffset:0}
  .fr-trace .fr-point{animation:none;opacity:1}
}
/* styles/41-saisies.css */
/* ---------- Saisies de visite et de vente d'après les maquettes (v5.26, src/domaines/ventes/saisie.js) ----------
   Vente : barre d'enregistrement fixe, comme la visite (.u-barre, styles/06), avec le total ; barre du bas masquée.
   Compteurs : le chiffre qui vient de changer rebondit. */
body[data-route=vente] .bottom{display:none}
body[data-route=vente] main{padding-bottom:0}
.sv-barre{display:flex;align-items:center;gap:14px}
.sv-total{flex:none;display:flex;flex-direction:column;line-height:1.1;min-width:84px}
.sv-total b{display:inline-block;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;transform-origin:left center}
.sv-barre .sv-envoyer{flex:1;width:auto}
.stepper .ctl span{display:inline-block;font-variant-numeric:tabular-nums}
.sv-rebond{animation:sv-rebond .26s var(--sortie)}
@keyframes sv-rebond{40%{transform:scale(1.22)}}
@media (prefers-reduced-motion:reduce){.sv-rebond{animation:none}}
/* styles/42-feuille-api.css */
/* ---------- Feuille d'API d'après les maquettes (v5.27, src/domaines/accueil/feuille-api.js) ----------
   Les saisies rapides entrent l'une après l'autre ; la suggestion du jour, sur fond miel, suit. */
.fa-tuiles .n4-tuile{animation:vt-monte var(--duree-lente) var(--sortie) both;animation-delay:calc(.06s + var(--i, 0) * .04s);transition:transform var(--duree-rapide)}
.fa-tuiles .n4-tuile:active{transform:scale(.96)}
.fa-sugg{display:flex;flex-direction:column;gap:6px;margin:2px 0 12px;padding:14px 16px;border-radius:14px;background:var(--honeysoft);animation:vt-monte var(--duree-lente) var(--sortie) .26s both}
.fa-sugg p{margin:0;font-size:15px;font-weight:600;color:var(--ink)}
.fa-sugg .small{color:var(--muted)}
.fa-gestes{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.fa-gestes .btn{min-height:44px}
@media (prefers-reduced-motion:reduce){.fa-tuiles .n4-tuile,.fa-sugg{animation:none}}
/* styles/43-reglages.css */
/* ---------- Réglages d'après les maquettes (v5.28, src/domaines/compte/apparence.js) ----------
   Aperçu du bandeau dans la feuille, couleurs en alvéoles. */
.rg-apercu{display:flex;align-items:center;justify-content:space-between;height:56px;padding:0 14px 0 18px;border-radius:14px;background:var(--bandeau,#FBEFC9);color:var(--bandeau-texte,var(--ink));transition:background var(--duree) var(--sortie),color var(--duree) var(--sortie)}
.rg-logo{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-weight:800;font-size:22px;letter-spacing:-.03em}
.rg-avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--honey);color:var(--ink);font-weight:700}
.rg-pastilles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:4px 0 6px}
.rg-pastille{display:flex;flex-direction:column;align-items:center;gap:6px;min-height:76px;padding:6px 0;border:0;border-radius:12px;background:none;font:inherit;font-size:13px;color:var(--ink);transition:transform var(--duree-rapide)}
.rg-pastille:active{transform:scale(.95)}
.rg-pastille span{width:48px;height:42px;background:var(--fond);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);transition:transform var(--duree) var(--sortie)}
.rg-pastille.on span{transform:scale(1.1);outline:0}
.rg-pastille.on b{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}
.rg-pastille b{font-weight:600}
@media (prefers-reduced-motion:reduce){.rg-apercu,.rg-pastille span{transition:none}}
/* styles/44-associes.css */
/* ---------- Entre associés (v5.29, src/domaines/finances/entre-associes.js) ----------
   Carte sapin en tête de Gestion, comme les maquettes ; détail dans une feuille. */
.ea-carte{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:18px;background:var(--pine);color:#fff;animation:vt-monte var(--duree-lente) var(--sortie) both}
.ea-oeil{margin:0;font-size:13px;font-weight:600;color:var(--honey-light,#F6C453)}
.ea-phrase{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:21px;line-height:1.2;font-weight:700;letter-spacing:-.01em}
.ea-ghost{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.32);color:#fff;min-height:44px}
.ea-phrase-f{margin:0 0 6px;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:19px;font-weight:700}
.ea-ligne{display:flex;flex-direction:column;gap:3px;padding:12px 0;border-top:1px solid var(--line);font-size:14px}
.ea-ligne:first-of-type{border-top:0}
.ea-ligne .good{color:var(--good)}
.ea-ligne .watch{color:#7D5200}
.ea-aide{margin:0}
@media (prefers-reduced-motion:reduce){.ea-carte{animation:none}}

/* ---------- Écran « Entre associés » (v5.32, maquettes du 12 nov. 2026) ---------- */
.ea-ecran{display:flex;flex-direction:column;gap:14px;max-width:620px}
.ea-solde{display:flex;flex-direction:column;align-items:center;gap:6px;padding:20px 18px;border-radius:18px;background:var(--pine);color:#fff;text-align:center;animation:vt-monte var(--duree-lente) var(--sortie) both}
.ea-solde .ea-oeil{align-self:stretch}
.ea-montant{margin:0;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:42px;line-height:1;font-weight:700}
.ea-qui{margin:0;font-size:15px;color:#C9D2CC}
.ea-miel{margin-top:8px;align-self:stretch;min-height:48px;border:0;background:var(--honey);color:var(--ink);font-weight:700}
.ea-tuiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.ea-tuile{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:14px;background:var(--card);border:1px solid var(--line)}
.ea-tuile b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:22px;font-weight:700}
.ea-verser{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:var(--honeysoft)}
.ea-verser p{flex:1 1 200px;margin:0;font-size:14px;line-height:1.35}
.ea-mvts{margin:0;padding:0;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:16px}
.ea-mvts li{display:flex;align-items:center;gap:12px;padding:12px 14px;border-top:1px solid var(--line)}
.ea-mvts li:first-child{border-top:0}
.ea-mvt-t{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ea-mvt-m{flex:none}
.ea-mvt-m.good{color:var(--good)}
.ea-regle{margin:0}
@media (prefers-reduced-motion:reduce){.ea-solde{animation:none}}
/* styles/45-stock.css */
/* ---------- Stock : catalogue, achat, mise en pots, histoire du lot (v5.30, migration 018) ----------
   src/domaines/materiel/catalogue.js, src/domaines/finances/achat.js, src/domaines/production/mise-en-pots.js et lot.js. */
.st-filtre{margin:0 0 14px}
.st-famille .u-entete h2 .small{font-weight:500}
.st-art{min-height:52px}
.st-art .small{color:var(--muted)}
.st-q{display:flex;align-items:center;gap:8px;flex:none;font-variant-numeric:tabular-nums;white-space:nowrap}
.st-q b{font-size:15px}
.st-bas{margin:0 -16px;padding-left:16px;padding-right:16px;width:calc(100% + 32px);background:var(--watchbg)}
.u-chip.st-chip-watch{background:none;color:var(--watch);padding:0}
.u-chip.st-capex{background:var(--pine);color:#fff}
.u-chip.good{background:var(--goodbg);color:#1F5239}
.st-sugg .chips{padding:6px 0 0}
.st-vide p{margin:6px 0 0}
#sheet label[hidden]{display:none}

/* Historique d'un article, dans sa fiche */
.st-histo{border-top:1px solid var(--line);margin-top:6px;padding-top:10px}
.st-histo h3{margin:0;font-size:15px}
.st-histo ul{list-style:none;margin:6px 0 0;padding:0}
.st-histo li{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:44px;border-top:1px solid #EDEFE7}
.st-histo li:first-child{border-top:0}
.st-histo li>span{display:flex;flex-direction:column;min-width:0}
.st-plus{color:var(--good)}
.st-moins{color:var(--crit)}

/* Feuille d'achat */
.st-achat-corps{display:flex;flex-direction:column;gap:12px}
.st-choix{display:flex;flex-direction:column;gap:6px}
.st-puces{display:flex;flex-wrap:wrap;gap:6px}
.st-puces button{min-height:40px;padding:0 13px;border:1px solid var(--line2);border-radius:999px;background:#fff;font:inherit;font-size:14px;font-weight:600;color:var(--ink)}
.st-puces button.on{background:var(--pine);border-color:var(--pine);color:#fff}
.st-puces button.st-tiret{border-style:dashed}
.st-lignes{border:1px solid var(--line);border-radius:14px;padding:0 12px}
.st-ligne{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-top:1px solid var(--line)}
.st-ligne:first-child{border-top:0}
.st-ligne-t{display:flex;align-items:center;justify-content:space-between;gap:8px}
.st-ligne-t b{font-size:15px}
.st-ligne-t input{flex:1;min-width:0}
.st-ote{flex:none;width:44px;height:44px;margin-right:-10px;border:0;background:none;font-size:22px;color:var(--muted)}
.st-nature{grid-template-columns:repeat(2,minmax(0,1fr))}
.st-nature button{min-height:40px}
.st-tags{display:flex;gap:6px;flex-wrap:wrap}
.st-info{margin:0;padding:10px 12px;border-radius:14px;background:var(--honeysoft);font-size:13px}
.st-total{display:flex;justify-content:space-between;align-items:baseline;margin:0}
.st-total b{font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:24px;font-variant-numeric:tabular-nums}
.st-erreur{margin:0;color:var(--crit);min-height:0}
.st-astuce{margin:0}

/* Mise en pots */
.st-mp .card h2{margin-bottom:8px}
.st-limite{margin:-6px 0 12px}
.st-formats{grid-template-columns:repeat(auto-fit,minmax(70px,1fr))}
.st-pas{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:600}
.st-pas-c{display:flex;align-items:center;gap:6px}
.st-pas-b{width:48px;height:48px;border:1px solid var(--line2);border-radius:13px;background:#fff;font-size:22px;color:var(--ink)}
.st-pas-c input{width:72px;text-align:center;font-family:'Bricolage Grotesque',system-ui,sans-serif;font-size:22px;font-weight:700}
.st-sortie{display:flex;justify-content:space-between;align-items:center;gap:10px;min-height:48px;border-top:1px solid #EDEFE7;padding:6px 0}
.st-mp h2+.st-sortie{border-top:0}
.st-sortie-l{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
label.st-sortie-l{flex-direction:column;align-items:stretch;gap:2px;font-size:13px;color:var(--muted)}
label.st-sortie-l select{color:var(--ink)}
.st-sortie .st-q{flex-direction:column;align-items:flex-end;gap:0}
.st-aa{font-size:13px;color:var(--muted)}
.st-aa b{font-weight:500}
.st-aa b.st-moins{font-weight:700}
.st-alerte{margin:8px 0 0;padding:8px 10px;border-radius:10px;background:var(--critbg);color:#8A1414;font-size:13px;font-weight:600}
.st-alerte-douce{background:var(--honeysoft);color:var(--watch)}
.st-hex{width:16px;height:14px;flex:none;background:var(--honey);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.st-deja{display:block;margin:12px auto 0;text-align:center}

/* Fiche de lot : d'où vient ce pot */
.st-histoire ol{list-style:none;margin:8px 0 0;padding:0}
.st-et{display:flex;gap:12px;position:relative;padding-bottom:14px}
.st-et:last-child{padding-bottom:0}
.st-et:not(:last-child)::before{content:"";position:absolute;left:8px;top:16px;bottom:0;width:2px;background:var(--line)}
.st-hexa{width:18px;height:16px;flex:none;margin-top:2px;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background:var(--line2)}
.st-good .st-hexa{background:var(--good)}
.st-pine .st-hexa{background:var(--pine)}
.st-honey .st-hexa{background:var(--honey)}
.st-et div{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.st-et .small{color:var(--muted)}
.st-et .link{margin-top:2px}
/* styles/46-reines.css */
/* ---------- Reines et lignée, fiche colonie complète (IT-07, src/domaines/colonies/lignee.js, ux.js) ----------
   En-tête de la colonie, onglets Santé et Reine & lignée, événements dans le journal. */
/* Cinq onglets sur la fiche : ruban qui défile sur téléphone plutôt que des libellés coupés. */
.wrap>.subtabs{overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.wrap>.subtabs::-webkit-scrollbar{display:none}
.wrap>.subtabs button{white-space:nowrap}

.rn-entete{display:flex;flex-wrap:wrap;gap:6px}
.rn-entete .u-chip{display:inline-flex;align-items:center;gap:6px;min-height:28px}
.rn-chip{border:0;font:inherit;font-size:12px;font-weight:600;cursor:pointer}
.rn-chip .v3-pastille{width:12px;height:12px;flex:none}
.v3-pastille.rn-sans{background:none;border:2px dashed var(--line2)}

.rn-en-place .u-entete,.rn-varroa .u-entete{align-items:center}
.rn-reine{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-top:1px solid #EDEFE7}
.rn-reine:first-of-type{border-top:0}
.rn-en-place .rn-reine{padding-bottom:0}
.rn-reine .v3-reine-l{min-width:0}
.rn-notes{font-style:italic}
.rn-lignee .cl-ligne .link,.rn-reine .link{flex:none}
.rn-suite{display:block;margin-top:10px;text-align:left}

/* Événement de la colonie dans le journal, entre deux visites. */
.cl-evt{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:10px 14px;border-left:3px solid var(--honey);border-radius:10px;background:var(--card)}
.cl-evt-d{font-size:12px;font-weight:600;color:var(--muted);min-width:52px}
.cl-evt-t{display:flex;flex-direction:column;min-width:0}
.rn-chip .v3-pastille{border-width:1.5px}
/* styles/47-visite-express.css */
/* ---------- Visite express (v5.32, src/domaines/visites/express.js) ----------
   Maquettes du 12 nov. 2026 : message d'API, une ligne par point (repris, pareil, changé), un geste pour enregistrer. */
.ve{display:flex;flex-direction:column;gap:14px;max-width:560px}
.ve-api{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border-radius:16px;background:var(--card);border:1px solid var(--line)}
.ve-api p{margin:0;font-size:15px;line-height:1.4}
.ve-api-i{flex:none;width:28px;height:24px;background:var(--honey);clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%)}
.ve-liste{margin:0;padding:0;list-style:none;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.ve-ligne{border-top:1px solid var(--line)}
.ve-ligne:first-child{border-top:0}
.ve-tete{display:flex;align-items:center;gap:12px;width:100%;min-height:52px;padding:12px 14px;border:0;background:none;text-align:left;font:inherit;color:inherit;cursor:pointer}
.ve-nom{flex:none;width:96px;font-size:14px;color:var(--muted)}
.ve-val{flex:1;font-size:16px;font-weight:600}
.ve-val s{font-weight:400;color:var(--muted)}
.ve-etat{flex:none;font-size:12px;color:var(--muted)}
.ve-modifie{background:var(--honeysoft)}
.ve-etat.ve-change{font-weight:700;color:var(--watch)}
.ve-vu .ve-etat,.ve-etat.ve-vu{color:var(--good);font-weight:600}
.ve-ouvert .ve-tete{padding-bottom:6px}
.ve-choix,.ve-poids{padding:0 14px 14px}
.ve-poids{display:flex;gap:8px;align-items:center}
.ve-poids-i{flex:1;min-height:48px;font-size:18px;text-align:center}
.ve-pas{flex:none;width:52px;height:48px;border:1px solid var(--line2);border-radius:10px;background:#fff;font-size:22px;font-weight:700;color:var(--pine)}
.ve-note{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}
.ve-note textarea{font-size:16px}
.ve-resume{margin:0;font-size:14px;color:var(--muted)}
.ve-ok{min-height:56px;font-size:17px}
.ve-seul{align-self:center;min-height:44px}
.ve-journal{margin:0;color:var(--muted)}
/* styles/47-navigation.css */
/* ---------- Navigation par catégories (v5.32, navigation.js) ---------- */

/* Ordinateur : menu latéral permanent, rangé par catégorie, sans compteur. Annule la barre du haut (21-piste-a-barre-du). */
@media (min-width:801px){
  .shell{flex-direction:row}
  .side{position:sticky;top:0;z-index:20;flex:none;flex-direction:column;align-items:stretch;gap:2px;width:252px;height:100vh;min-height:0;padding:18px 12px 16px;overflow-y:auto;background:#fff;color:var(--ink);border-right:1px solid var(--line)}
  .side .brand{padding:2px 10px 14px}
  .side .nav{display:flex;align-items:center;justify-content:flex-start;gap:11px;width:100%;min-height:40px;padding:0 12px;border-radius:10px;color:var(--ink);font-weight:500;font-size:14.5px;text-align:left}
  .side .nav svg{display:block;flex:none;width:18px;height:18px}
  .side .nav:hover{background:var(--ground)}
  .side .nav.on{background:var(--honeysoft);color:var(--ink);font-weight:600}
  .side .nav[data-v=saisir]{margin:0 0 6px;min-height:48px;border-radius:14px;background:var(--pine);color:#fff;font-weight:600}
  .side .nav[data-v=saisir]:hover{background:var(--pine2)}
  .side .nav[data-v=saisir] api-compagnon{flex:none;width:30px;height:30px}
  .side .nl-titre{margin:14px 12px 4px;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
  .side .me{margin:auto 0 0;padding:14px 10px 0;border-top:1px solid var(--line);display:flex;align-items:center;gap:10px;color:var(--muted);font-size:13px}
  .side .me .mail{display:block;color:var(--ink);word-break:break-all}
  .side .me .link{display:inline;color:var(--good)}
  .side .er-barre,.side .er-cloche{display:none}
  main{flex:1;min-width:0}
  /* Bandeau du contenu : la recherche, à la couleur du bandeau choisie dans les réglages. */
  .nl-entete{position:sticky;top:0;z-index:12;display:flex;align-items:center;gap:16px;min-height:66px;margin:-30px -32px 24px;padding:11px 32px;box-sizing:border-box;background:var(--bandeau);color:var(--bandeau-texte)}
  .nl-entete .er-barre{display:block;flex:1 1 320px;max-width:520px;margin:0}
  .nl-volet{display:none}
}
@media (max-width:800px){.nl-entete{display:none}}

/* Téléphone : touche Menu et volet par la droite. */
.nl-volet{position:fixed;inset:0 0 0 auto;width:min(340px,88vw);max-width:none;height:100%;max-height:none;margin:0;padding:0;border:0;border-radius:24px 0 0 24px;background:#fff;color:var(--ink);box-shadow:-12px 0 32px -12px rgba(30,43,36,.35);overflow:hidden}
.nl-volet[open]{display:flex;flex-direction:column;animation:nl-entre var(--duree,.24s) var(--sortie,ease) both}
.nl-volet::backdrop{background:rgba(27,36,32,.45)}
@keyframes nl-entre{from{transform:translateX(100%)}to{transform:none}}
@media (prefers-reduced-motion:reduce){.nl-volet[open]{animation:none}}
.nl-tete{display:flex;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top)) 14px 12px 18px;border-bottom:1px solid var(--line)}
.nl-tete .avatar{flex:none;width:42px;height:42px;border-radius:50%;background:var(--pine);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600}
.nl-qui{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13px;color:var(--muted)}
.nl-qui b{font-size:15.5px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nl-fermer{flex:none;width:44px;height:44px;border-radius:12px;border:1px solid var(--line);background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer}
.nl-corps{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:12px 16px calc(20px + env(safe-area-inset-bottom))}
.nl-corps h2{margin:0 0 6px;font-family:'Instrument Sans',system-ui,sans-serif;font-size:11.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.nl-tuiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.nl-tuiles button{display:flex;align-items:center;gap:9px;min-height:44px;padding:0 10px;border:0;border-radius:11px;background:var(--ground);color:var(--ink);font:500 14px 'Instrument Sans',system-ui,sans-serif;text-align:left;cursor:pointer}
.nl-tuiles button svg{flex:none;width:18px;height:18px}
.nl-tuiles button.on{background:var(--honeysoft);font-weight:600}
.nl-tuiles button span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bottom [data-v=menu].on svg{color:inherit}

/* Fil d'Ariane : la catégorie (ouvre le volet sur téléphone ; simple repère sur ordinateur). */
.er-ariane .nl-categorie{margin:0;padding:0;min-height:32px;font-weight:600}
@media (min-width:801px){.er-ariane [data-act=nlmenu]{pointer-events:none;color:var(--muted);text-decoration:none}}
/* L'écran « Entre associés » a ses styles dans 44-associes.css (v5.32, visite express et comptes entre associés). */
