/* ---------------------------------------------------------------------------
   Cadran, Atelier. Warm paper, hairlines, one copper accent, two typefaces.
   Day is a printed page, never white. Night is the same page under a lamp.
   --------------------------------------------------------------------------- */
:root[data-theme="day"]{
  --paper:#EFE9DE; --raised:#F6F2E9; --sunk:#E7E0D2;
  --ink:#1D1A16; --ink-2:#5B564C; --ink-3:#8B8477;
  --line:#D8D0C0; --line-2:#E3DCCD;
  --accent:#A8571F; --accent-soft:rgba(168,87,31,.09);
  --pos:#2D6B4F; --neg:#A63A2C; --warn:#8A6214; --info:#39557A;
  --pos-soft:rgba(45,107,79,.12); --neg-soft:rgba(166,58,44,.1);
  --shadow:0 1px 0 rgba(255,255,255,.7) inset, 0 18px 34px -30px rgba(29,26,22,.55);
  --grain:rgba(29,26,22,.03);
  color-scheme:light;
}
:root[data-theme="night"]{
  --paper:#1A1714; --raised:#221E1A; --sunk:#14110F;
  --ink:#EDE5D6; --ink-2:#A79E8E; --ink-3:#7A7366;
  --line:#332D26; --line-2:#2A251F;
  --accent:#D08A4F; --accent-soft:rgba(208,138,79,.12);
  --pos:#5DB58C; --neg:#E0796A; --warn:#D0A150; --info:#8CA6CC;
  --pos-soft:rgba(93,181,140,.14); --neg-soft:rgba(224,121,106,.14);
  --shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 20px 40px -30px rgba(0,0,0,.9);
  --grain:rgba(255,255,255,.028);
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  background:var(--paper); color:var(--ink);
  font-family:"Inter",system-ui,sans-serif; font-size:14px; -webkit-font-smoothing:antialiased;
  background-image:radial-gradient(var(--grain) .5px, transparent .5px);
  background-size:4px 4px;
  transition:background-color .45s ease, color .45s ease;
  --serif:"Instrument Serif",Georgia,serif;
  --mono:"JetBrains Mono",ui-monospace,monospace;
  --ease:cubic-bezier(.2,.75,.2,1);
}
a{color:inherit}
.num{font-family:var(--mono); font-variant-numeric:tabular-nums; letter-spacing:-.01em}
.caps{font-size:10px; letter-spacing:.19em; text-transform:uppercase; color:var(--ink-3)}
.pos{color:var(--pos)} .neg{color:var(--neg)} .warn{color:var(--warn)} .acc{color:var(--accent)}
.muted{color:var(--ink-3)}
.serif{font-family:var(--serif); font-weight:400}

/* ---------- shell ---------- */
.app{display:grid; grid-template-columns:230px 1fr; min-height:100vh}
.rail{position:sticky; top:0; height:100vh; display:flex; flex-direction:column;
  padding:24px 18px 18px; border-right:1px solid var(--line); background:var(--raised);
  transition:background-color .45s ease, border-color .45s ease}
.brand{display:flex; align-items:center; gap:10px}
.brand .logo{flex:none; color:var(--ink); display:block}
.wordmark{font-family:var(--serif); font-size:25px; line-height:1; letter-spacing:.01em}
.wordmark span{color:var(--accent)}
.wordmark + p{margin:6px 0 0; font-size:9.5px; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-3)}
.demo-flag{display:inline-block; margin-top:12px; padding:4px 9px; border:1px solid var(--accent);
  border-radius:99px; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--accent)}
.rail nav{margin-top:16px; overflow-y:auto; flex:1; margin-right:-6px; padding-right:6px}
.rail nav h3{margin:17px 0 6px; font-size:9px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--ink-3); font-weight:400}
.rail nav h3:first-child{margin-top:0}
.rail nav a{display:flex; align-items:baseline; gap:8px; padding:6px 8px; margin:0 -8px;
  color:var(--ink-2); text-decoration:none; font-size:12.5px; border-radius:3px; transition:.16s var(--ease)}
.rail nav a:hover{background:var(--accent-soft); color:var(--ink)}
.rail nav a.on{color:var(--ink); background:var(--sunk); box-shadow:inset 2px 0 0 var(--accent)}
.rail nav a b{margin-left:auto; font-family:var(--mono); font-size:10px; font-weight:400; color:var(--ink-3)}
.rail-foot{border-top:1px solid var(--line); padding-top:12px; margin-top:12px; font-size:10.5px;
  color:var(--ink-3); line-height:1.7}
.rail-foot .state{display:flex; align-items:center; gap:7px; color:var(--ink-2); margin-bottom:5px}
.tick{width:14px; height:14px; flex:none; color:var(--pos)}

.sheet{min-width:0; padding:0 42px 80px; max-width:1240px}
.topline{display:flex; align-items:center; gap:16px; padding:18px 0 11px; border-bottom:1px solid var(--ink);
  position:sticky; top:0; background:var(--paper); z-index:6; transition:background-color .45s ease}
.topline h1{font-family:var(--serif); font-weight:400; font-size:20px; margin:0}
.topline .crumb{font-size:11px; color:var(--ink-3)}
.tools{margin-left:auto; display:flex; align-items:center; gap:6px}
.btn{font:inherit; font-size:11.5px; color:var(--ink-2); background:none; border:1px solid var(--line);
  border-radius:3px; padding:5px 10px; cursor:pointer; transition:.18s var(--ease)}
.btn:hover{border-color:var(--accent); color:var(--ink)}
.btn.on{background:var(--sunk); color:var(--ink)}
.btn.icon{width:31px; height:29px; display:grid; place-items:center; padding:0}
.btn.primary{border-color:var(--accent); color:var(--accent)}
.btn.primary:hover{background:var(--accent-soft)}
.dateline{display:flex; flex-wrap:wrap; gap:16px; justify-content:space-between; padding:8px 0;
  border-bottom:1px solid var(--line)}

/* ---------- blocks ---------- */
section{padding:34px 0; border-bottom:1px solid var(--line)}
section:last-child{border-bottom:0}
.sec-head{display:flex; align-items:baseline; gap:13px; margin-bottom:8px; flex-wrap:wrap}
.sec-head h2{font-family:var(--serif); font-weight:400; font-size:22px; margin:0}
.sec-head p{margin:0; font-size:11.5px; color:var(--ink-3)}
.sec-head .right{margin-left:auto; display:flex; gap:6px; align-items:center}
.reading{margin:0 0 22px; font-size:13px; line-height:1.7; color:var(--ink-2); max-width:80ch}
.reading b{font-weight:500; color:var(--ink)}
.two{display:grid; grid-template-columns:1fr 1fr; gap:44px}
.side{display:grid; grid-template-columns:1.15fr 1fr; gap:38px; align-items:start}

h2.head{font-family:var(--serif); font-weight:400; font-size:clamp(32px,4.2vw,54px); line-height:1.05;
  margin:0; letter-spacing:-.015em; max-width:16ch}
h2.head em{font-style:italic; color:var(--accent)}
.lede{margin:18px 0 0; max-width:56ch; font-size:15px; line-height:1.7; color:var(--ink-2); font-weight:300}
.hero{display:grid; grid-template-columns:1fr 360px; gap:34px; align-items:center;
  padding:38px 0 30px; border-bottom:1px solid var(--line)}
.chips{display:flex; flex-wrap:wrap; gap:8px 9px; margin-top:20px}
.chip{display:inline-flex; align-items:baseline; gap:7px; padding:6px 11px; border:1px solid var(--line);
  border-radius:99px; font-size:11.5px; color:var(--ink-2); background:var(--raised)}
.chip b{font-family:var(--mono); font-weight:400; color:var(--ink); font-size:11.5px}

.figs{display:grid; grid-template-columns:repeat(4,1fr); border-bottom:1px solid var(--line)}
.fig{padding:22px 22px 24px; border-left:1px solid var(--line-2)}
.fig:first-child{border-left:0; padding-left:0}
.fig .v{font-family:var(--serif); font-size:36px; line-height:1; margin-top:10px; letter-spacing:-.015em;
  font-variant-numeric:tabular-nums}
.fig .n{margin-top:8px; font-size:11px; color:var(--ink-3); line-height:1.55}
.fig .spark{display:block; width:100%; height:24px; margin-top:10px; overflow:visible}

/* ---------- 3d ---------- */
.scene{width:100%; height:320px; position:relative}
.scene canvas{display:block}
.lab{position:absolute; inset:0; pointer-events:none; overflow:hidden}
.lab span{position:absolute; top:0; left:0; transform:translate(-50%,-50%); text-align:center; white-space:nowrap; will-change:transform;
  font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3); line-height:1.5}
.lab span b{display:block; font-family:var(--mono); font-size:11.5px; letter-spacing:0; text-transform:none; color:var(--ink)}
.scene-note{text-align:center; font-size:11px; color:var(--ink-3); margin:4px 0 0}
.tip{position:fixed; z-index:40; pointer-events:none; padding:9px 12px; border:1px solid var(--line);
  background:var(--raised); box-shadow:var(--shadow); font-size:11.5px; white-space:nowrap; opacity:0;
  transition:opacity .15s; border-radius:3px; line-height:1.6}
.tip b{display:block; font-weight:500; margin-bottom:3px}
.tip span{color:var(--ink-3); font-size:10.5px}

/* ---------- charts ---------- */
.chart{width:100%; display:block}
.chart text{font-family:"Inter",sans-serif; font-size:10px; fill:var(--ink-3); letter-spacing:.04em}
.legend{display:flex; gap:20px; margin-top:14px; font-size:10.5px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--ink-2); flex-wrap:wrap}
.legend i{display:inline-block; width:17px; border-top-width:2px; border-top-style:solid; margin-right:8px; vertical-align:4px}
.legend i.sq{width:10px; height:10px; border:0; border-radius:2px; vertical-align:-1px}

/* ---------- tables ---------- */
.table-wrap{max-width:100%; overflow-x:auto}
table{width:100%; border-collapse:collapse; font-size:12.5px}
thead th{font-size:9.5px; letter-spacing:.15em; text-transform:uppercase; color:var(--ink-3); font-weight:400;
  text-align:left; padding:0 9px 9px; border-bottom:1px solid var(--ink); white-space:nowrap}
thead th:first-child{padding-left:0} thead th:last-child{padding-right:0}
td{padding:11px 9px; border-bottom:1px solid var(--line-2); vertical-align:top}
td:first-child{padding-left:0} td:last-child{padding-right:0}
th.n,td.n{text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums; font-size:12px}
th.c,td.c{font-family:var(--mono); font-size:11.5px}
tbody tr{transition:background-color .16s var(--ease)}
tbody tr:hover td{background:var(--accent-soft)}
tbody tr.clickable{cursor:pointer}
td small{display:block; color:var(--ink-3); font-size:10.5px; margin-top:3px}
tfoot td{border-top:1px solid var(--ink); border-bottom:0; padding-top:11px; font-weight:500}
tr.total td{border-top:1px solid var(--ink); font-weight:500}
tr.sub td{color:var(--ink-3)}
tr.head-row td{padding-top:20px; font-family:var(--serif); font-size:15px}

/* ---------- filters and tabs ---------- */
.filters{display:flex; flex-wrap:wrap; gap:7px; align-items:center; margin-bottom:16px}
.filters input, .filters select{font:inherit; font-size:12px; color:var(--ink); background:var(--raised);
  border:1px solid var(--line); border-radius:3px; padding:6px 9px; min-width:120px}
.filters input:focus, .filters select:focus{outline:none; border-color:var(--accent)}
.count{margin-left:auto; font-size:11px; color:var(--ink-3)}

/* ---------- entry sheet ---------- */
.entry-sheet{border:1px solid var(--line); background:var(--raised); padding:20px 22px; box-shadow:var(--shadow)}
.entry-top{display:flex; flex-wrap:wrap; gap:8px 18px; align-items:baseline; padding-bottom:12px;
  border-bottom:1px solid var(--line)}
.entry-top .ref{font-family:var(--mono); font-size:12.5px}
.entry-top .memo{font-size:12.5px; color:var(--ink-2)}
.stamp{margin-left:auto; display:inline-flex; align-items:center; gap:6px; font-size:9.5px; letter-spacing:.15em;
  text-transform:uppercase; color:var(--pos)}

/* ---------- bars ---------- */
.bars{display:flex; flex-direction:column; gap:14px}
.brow{display:grid; grid-template-columns:150px 1fr 92px; align-items:center; gap:12px; font-size:12px}
.brow .t{position:relative; height:6px; border-radius:99px; background:var(--sunk)}
.brow .t i{position:absolute; inset:0 auto 0 0; width:0; border-radius:99px; transition:width 1.1s var(--ease)}
.brow .a{text-align:right; font-family:var(--mono); font-size:11.5px}
.track{position:relative; height:1px; background:var(--line); margin-top:4px}
.track .fill{position:absolute; left:0; top:-1px; height:3px; width:0; transition:width 1.4s var(--ease)}
.track .mark{position:absolute; top:-5px; height:11px; width:1px; background:var(--line)}
.track .mark b{position:absolute; top:13px; left:50%; transform:translateX(-50%); font-size:9.5px;
  font-weight:400; color:var(--ink-3); white-space:nowrap}
.track .mark.end b{transform:translateX(-100%)}

/* ---------- callouts ---------- */
.callout{border-left:2px solid var(--accent); padding:2px 0 2px 18px; margin:22px 0 0; max-width:62ch}
.callout p{margin:0; font-size:13px; line-height:1.7; color:var(--ink-2)}
.callout .k{font-family:var(--serif); font-size:19px; color:var(--ink); display:block; margin-bottom:5px}
.pull{font-family:var(--serif); font-style:italic; font-size:18px; line-height:1.6; color:var(--ink-2);
  max-width:46ch; margin:22px 0 0; padding-left:18px; border-left:2px solid var(--accent)}
.badge{display:inline-block; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase;
  padding:3px 8px; border-radius:99px; border:1px solid var(--line); color:var(--ink-3)}
.badge.ok{color:var(--pos); border-color:var(--pos)}
.badge.late{color:var(--neg); border-color:var(--neg)}

/* ---------- tutorial ---------- */
.steps{counter-reset:step; display:flex; flex-direction:column; gap:0}
.step{display:grid; grid-template-columns:44px 1fr; gap:20px; padding:26px 0; border-bottom:1px solid var(--line-2)}
.step:last-child{border-bottom:0}
.step .no{counter-increment:step; font-family:var(--serif); font-size:26px; color:var(--accent); line-height:1}
.step .no::before{content:counter(step,decimal-leading-zero)}
.step h3{font-family:var(--serif); font-weight:400; font-size:20px; margin:0 0 8px}
.step p{margin:0 0 10px; font-size:13.5px; line-height:1.75; color:var(--ink-2); max-width:72ch}
.step p b{color:var(--ink); font-weight:500}
.step .demo{margin-top:14px; border:1px solid var(--line); background:var(--raised); padding:16px 18px}
.step .demo .caps{margin-bottom:9px; display:block}
.ledger-mini{display:grid; grid-template-columns:70px 1fr 100px 100px; gap:6px 12px; font-size:12px; align-items:baseline}
.ledger-mini .h{font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-3);
  border-bottom:1px solid var(--line); padding-bottom:6px}
.ledger-mini .n{text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums}
.ledger-mini .tot{border-top:1px solid var(--ink); padding-top:6px; font-weight:500}

/* ---------- sandbox ---------- */
.sandbox{border:1px solid var(--line); background:var(--raised); padding:22px 24px; box-shadow:var(--shadow)}
.sandbox .prompt{display:flex; gap:9px; align-items:center}
.sandbox input{flex:1; font:inherit; font-size:14px; color:var(--ink); background:var(--paper);
  border:1px solid var(--line); border-radius:3px; padding:11px 13px}
.sandbox input:focus{outline:none; border-color:var(--accent)}
.examples{display:flex; flex-wrap:wrap; gap:7px; margin-top:12px}
.examples button{font:inherit; font-size:11.5px; color:var(--ink-2); background:var(--paper);
  border:1px solid var(--line); border-radius:99px; padding:5px 11px; cursor:pointer; transition:.16s var(--ease)}
.examples button:hover{border-color:var(--accent); color:var(--ink)}
.result{margin-top:20px; border-top:1px solid var(--line); padding-top:18px}
.readonly{margin-top:16px; font-size:11.5px; color:var(--ink-3); display:flex; align-items:center; gap:8px}

.reveal{opacity:0; transform:translateY(12px); transition:opacity .7s var(--ease), transform .7s var(--ease)}
.reveal.in{opacity:1; transform:none}
.foot{padding:24px 0 0; font-size:10px; letter-spacing:.15em; text-transform:uppercase; color:var(--ink-3); text-align:center}
.foot a{color:var(--accent); text-decoration:none}

@media (max-width:1150px){
  .hero{grid-template-columns:1fr} .side, .two{grid-template-columns:1fr; gap:30px}
  .figs{grid-template-columns:repeat(2,1fr)}
  .fig{border-left:0; padding-left:0; border-top:1px solid var(--line-2)}
  .fig:nth-child(2n){border-left:1px solid var(--line-2); padding-left:22px}
  .sheet{padding:0 26px 60px}
}
@media (max-width:820px){
  .app{grid-template-columns:1fr}
  .rail{position:static; height:auto; border-right:0; border-bottom:1px solid var(--line)}
  .rail nav{display:grid; grid-template-columns:repeat(2,1fr); gap:0 20px; overflow:visible}
  .figs{grid-template-columns:1fr}
  .fig{border-left:0 !important; padding-left:0 !important}
  .sheet{padding:0 16px 50px}
  .brow{grid-template-columns:110px 1fr 80px}
  .table-wrap{overflow-x:auto}
}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1; transform:none; transition:none}
  .track .fill, .brow .t i{transition:none}
}

/* ---------- facture ---------- */
.invoice{border:1px solid var(--line); background:var(--raised); padding:26px 28px; box-shadow:var(--shadow)}
.fac-head{display:flex; justify-content:space-between; gap:30px; flex-wrap:wrap;
  padding-bottom:18px; border-bottom:1px solid var(--ink)}
.fac-head p{margin:0}
.fac-strong{font-family:var(--serif); font-size:19px; margin:6px 0 5px !important}
.fac-small{font-size:11.5px; color:var(--ink-3); line-height:1.75}
.fac-meta{text-align:right}
.fac-ref{font-family:var(--mono); font-size:17px; margin:6px 0 5px !important}
.fac-to{padding:16px 0 18px; border-bottom:1px solid var(--line-2)}
.fac-to p{margin:0}
.fac-totals{margin:16px 0 0 auto; width:min(340px,100%)}
.fac-row{display:flex; justify-content:space-between; gap:20px; padding:7px 0; font-size:13px;
  border-bottom:1px solid var(--line-2)}
.fac-row .n{font-family:var(--mono); font-variant-numeric:tabular-nums}
.fac-row .n.tot{font-weight:500}
.fac-row:last-child{border-bottom:0; border-top:1px solid var(--ink); margin-top:2px; padding-top:9px}
.fac-legal{margin-top:24px; padding-top:16px; border-top:1px solid var(--line);
  font-size:11.5px; color:var(--ink-2); line-height:1.75; max-width:82ch}
.fac-legal p{margin:0 0 8px}

/* ---------- lettre de relance ---------- */
.letter{border:1px solid var(--line); background:var(--raised); padding:26px 28px; max-width:76ch;
  box-shadow:var(--shadow)}
.letter-body{font-family:inherit; font-size:13px; line-height:1.9; white-space:pre-wrap;
  margin:20px 0 0; color:var(--ink)}

/* ---------- impression : on ne sort que le document ---------- */
@media print{
  .rail, .topline, .dateline, .foot, .no-print, .sec-head, .reading, .list-table,
  .scene, .scene-note, .legend{display:none !important}
  body{background:#fff; color:#000}
  .app{display:block}
  .sheet{padding:0; max-width:none}
  section{padding:0; border:0}
  .invoice, .letter{border:0; box-shadow:none; padding:0}
  a[href]:after{content:""}
}

/* ---------- barre mobile et tiroir de navigation ---------- */
.mobile-bar{display:none; position:sticky; top:0; z-index:35; align-items:center; gap:12px;
  padding:9px 16px; background:var(--raised); border-bottom:1px solid var(--line)}
.mobile-bar .wordmark{font-size:19px}
.mobile-bar .here{margin-left:auto; font-size:11px; color:var(--ink-3)}
.burger{width:40px; height:36px; display:grid; place-content:center; gap:4px; border:1px solid var(--line);
  border-radius:4px; background:var(--paper); cursor:pointer; padding:0}
.burger i{display:block; width:17px; height:1.5px; background:var(--ink)}
.scrim{position:fixed; inset:0; background:rgba(0,0,0,.42); z-index:38; opacity:0;
  pointer-events:none; transition:opacity .28s var(--ease)}
.scrim.on{opacity:1; pointer-events:auto}

@media (max-width:820px){
  .app{display:block}
  .mobile-bar{display:flex}
  .rail{position:fixed; top:0; bottom:0; left:0; width:min(86vw,310px); height:100vh;
    transform:translateX(-103%); transition:transform .28s var(--ease); z-index:40;
    overflow-y:auto; border-right:1px solid var(--line); border-bottom:0;
    box-shadow:0 0 44px rgba(0,0,0,.3)}
  .rail.open{transform:none}
  .rail nav{display:block; margin-top:14px}
  .rail nav a{padding:13px 8px; font-size:14px}       /* cible tactile de 44 px */
  .rail nav h3{margin-top:16px}
  .topline{top:54px; padding:8px 0 9px}
  .topline .crumb, .topline h1{display:none}   /* la barre mobile nomme deja la page */
  .topline .tools{margin-left:0; width:100%; justify-content:flex-end}
  .sheet{padding:0 16px 56px}
  .scene{height:250px}
  .fac-head{flex-direction:column; gap:18px}
  .fac-meta{text-align:left}
  .fac-totals{width:100%}
  .step{grid-template-columns:1fr; gap:6px}
  .step .no{font-size:20px}
  .filters input, .filters select{min-width:0; width:100%}
  .filters{gap:8px}
  .count{margin-left:0}
}

@media (max-width:560px){
  .hm{display:none}                                    /* colonnes secondaires */
  th.n, td.n, td.c, th.c{white-space:nowrap}           /* un montant ne se coupe pas */
  table{font-size:12px}
  td{padding:10px 7px}
  thead th{padding:0 7px 8px; font-size:9px; letter-spacing:.1em}
  th.n,td.n{font-size:11.5px}
  h2.head{font-size:30px}
  .lede{font-size:14.5px}
  .fig .v{font-size:32px}
  .sec-head h2{font-size:20px}
  .dateline{gap:6px 14px; font-size:9.5px}
  .invoice, .letter, .entry-sheet, .sandbox{padding:18px 16px}
  .scene{height:220px}
  .lab span{font-size:9px}
  .brow{grid-template-columns:96px 1fr 72px; gap:8px}
  .topline h1{font-size:18px}
  .chip{font-size:11px; padding:5px 9px}
}

/* ---------- suivi des activites ---------- */
.acts{display:flex; flex-direction:column; gap:0; margin-top:8px}
.act{padding:24px 0; border-bottom:1px solid var(--line-2)}
.act:last-child{border-bottom:0}
.act-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; margin-bottom:14px}
.act-head h3{font-family:var(--serif); font-weight:400; font-size:19px; margin:0}
.act-meta{margin-left:auto}
.act-line{list-style:none; margin:0; padding:0 0 0 18px; border-left:1px solid var(--line)}
.act-line li{display:grid; grid-template-columns:104px 1fr auto; gap:16px; align-items:baseline;
  padding:9px 0; position:relative}
.act-line li::before{content:""; position:absolute; left:-23px; top:15px; width:9px; height:9px;
  border-radius:50%; background:var(--paper); border:1.5px solid var(--line)}
.act-line li:last-child::before{border-color:var(--accent); background:var(--accent)}
.act-date{white-space:nowrap}
.act-text{font-size:13px; line-height:1.65; color:var(--ink-2)}
.act-entry{font-family:var(--mono); font-size:11px; color:var(--accent); text-decoration:none;
  border:1px solid var(--accent); border-radius:99px; padding:3px 9px; white-space:nowrap}
.act-none{font-size:9.5px; white-space:nowrap; opacity:.7}
@media (max-width:560px){
  .act-line li{grid-template-columns:1fr; gap:4px}
  .act-line li::before{top:12px}
  .act-meta{margin-left:0; width:100%}
}

/* ---------- pastille de rappel ---------- */
.btn.bell{display:inline-flex; align-items:center; gap:6px; color:var(--neg); border-color:var(--neg);
  font-family:var(--mono); font-size:11.5px; text-decoration:none}
.btn.bell:hover{background:var(--neg-soft); color:var(--neg)}
.filters .caps{white-space:nowrap}
.filters input[type=number]{max-width:110px}

/* ---------- saisie : les questions qui n'apparaissent qu'au bon moment ---------- */
.controls{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:18px}
.ctl{padding:14px 16px; border:1px solid var(--line); border-left:2px solid var(--accent);
  background:var(--paper); min-width:0}
.ctl > .caps{display:block; margin-bottom:8px}
.ctl input[type=date], .ctl select{width:100%; max-width:100%; font:inherit; font-size:13px;
  color:var(--ink); background:var(--raised); border:1px solid var(--line);
  border-radius:2px; padding:7px 9px}
.ctl input[type=date]:focus, .ctl select:focus{outline:none; border-color:var(--accent)}
.ctl small, .due-line{display:block; margin-top:9px; font-size:11.5px; line-height:1.6;
  color:var(--ink-3)}
.ctl.off{border-left-color:var(--line-2); opacity:.62}
.ctl.off select{cursor:not-allowed}
@media (max-width:620px){ .controls{grid-template-columns:1fr; gap:12px} }
.no-entry{margin-top:18px; padding:18px 20px; border:1px solid var(--line);
  border-left:2px solid var(--warn); background:var(--paper)}
.chip small.from-text{display:inline; margin-left:8px; font-family:var(--mono);
  font-size:9.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent)}
