
/* Dizéo – feuille de style.
   Layout : appli plein écran, barre de phrase en haut, grille fixe (vocabulaire de base) puis dossiers de frange */
:root{
  --bg:#e9eef2; --surface:#f6f8fa; --ink:#18232d; --muted:#53636f; --line:#c3cdd5; --accent:#1f6f8b; --accent-ink:#ffffff; --focus:#e8590c; --danger:#b42318;
  --pers-bg:#fff1a8; --pers-bd:#c9a400;
  --verbe-bg:#cdeec0; --verbe-bd:#3f8f2a;
  --nom-bg:#ffd9b3; --nom-bd:#d0731c;
  --adj-bg:#cfe3ff; --adj-bd:#2f6dc4;
  --petit-bg:#ffd0d0; --petit-bd:#c43c3c;
  --question-bg:#e6d6ff; --question-bd:#7a4cc4;
  --social-bg:#ffd6ee; --social-bd:#c2418d;
  --dossier-bg:#e3e8ec; --dossier-bd:#6b7a86;
  --font-ui:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;
  --font-display:"Lexend", "Atkinson Hyperlegible", system-ui, sans-serif;
  --cell-font:13px; --emoji:28px; --gap:6px;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  --bg:#121a21; --surface:#1b252e; --ink:#eef3f6; --muted:#a3b2bd; --line:#34444f; --accent:#5fb3d0; --accent-ink:#0d171d; --focus:#ff9f5a; --danger:#ff8a80;
  --pers-bg:#4a4110; --pers-bd:#e3c43a; --verbe-bg:#22401b; --verbe-bd:#7fcf63; --nom-bg:#4a2f14; --nom-bd:#f0a050;
  --adj-bg:#1c3354; --adj-bd:#7fb0f5; --petit-bg:#4a1f1f; --petit-bd:#f08080; --question-bg:#33244f; --question-bd:#b894f5;
  --social-bg:#4a1d38; --social-bd:#f08cc4; --dossier-bg:#26323b; --dossier-bd:#8fa2b0; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#121a21; --surface:#1b252e; --ink:#eef3f6; --muted:#a3b2bd; --line:#34444f; --accent:#5fb3d0; --accent-ink:#0d171d; --focus:#ff9f5a; --danger:#ff8a80;
  --pers-bg:#4a4110; --pers-bd:#e3c43a; --verbe-bg:#22401b; --verbe-bd:#7fcf63; --nom-bg:#4a2f14; --nom-bd:#f0a050;
  --adj-bg:#1c3354; --adj-bd:#7fb0f5; --petit-bg:#4a1f1f; --petit-bd:#f08080; --question-bg:#33244f; --question-bd:#b894f5;
  --social-bg:#4a1d38; --social-bd:#f08cc4; --dossier-bg:#26323b; --dossier-bd:#8fa2b0; color-scheme:dark}
body.contrast{--bg:#000;--surface:#000;--ink:#fff;--muted:#fff;--line:#fff;--accent:#ffd400;--accent-ink:#000}
body.contrast .cell{background:#000!important;color:#fff;border-width:4px}

html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);font-size:15px;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:10px;box-sizing:border-box}
*{box-sizing:border-box}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.app{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:10px;min-height:100%}

.topbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.brand{font-family:var(--font-display);font-weight:700;font-size:20px;letter-spacing:-.01em;margin-right:auto;display:flex;align-items:baseline;gap:8px}
.brand small{font-family:var(--font-ui);font-weight:400;font-size:12px;color:var(--muted)}
.tbtn{border:1.5px solid var(--line);background:var(--surface);border-radius:10px;padding:7px 12px;font-weight:700;font-size:14px}
.tbtn[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.editbanner{background:var(--focus);color:#111;font-weight:700;padding:6px 12px;border-radius:8px;font-size:14px}

.sentence{display:flex;gap:8px;align-items:stretch;background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:8px;min-height:84px}
.chips{flex:1;display:flex;gap:6px;flex-wrap:wrap;align-content:flex-start;min-width:0}
.chip{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:54px;padding:4px 6px;border-radius:8px;border:2px solid var(--line);background:var(--bg)}
.chip .e{font-size:22px;line-height:1}
.chip .l{font-size:13px;font-weight:700}
.chip.pending{border-style:dashed}
.placeholder{color:var(--muted);align-self:center;padding-left:6px}
.sactions{display:flex;gap:6px}
.sbtn{width:68px;border-radius:10px;border:2px solid var(--line);background:var(--bg);font-weight:700;font-size:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.sbtn svg{width:26px;height:26px}
.sbtn.speak{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);width:84px}

.quick{display:grid;grid-template-columns:repeat(var(--qn,5),minmax(0,1fr));gap:var(--gap)}
.qbtn{border-radius:10px;border:2px solid var(--line);background:var(--surface);padding:8px 4px;font-weight:700;font-size:15px}
.qbtn.yes{border-color:var(--verbe-bd)} .qbtn.no{border-color:var(--petit-bd)} .qbtn.urg{border-color:var(--danger);color:var(--danger)}

.board{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:var(--gap)}
.cell{position:relative;aspect-ratio:1/0.92;max-width:100%;border-radius:12px;border:3px solid var(--line);background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:4px;user-select:none;-webkit-user-select:none;touch-action:manipulation;transition:transform .08s}
.cell .e{font-size:var(--emoji);line-height:1}
.cell .l{font-size:var(--cell-font);font-weight:700;text-align:center;line-height:1.1;overflow-wrap:break-word;hyphens:auto;-webkit-hyphens:auto}
.cell.pressing{transform:scale(.95)}
.cell.hide{visibility:hidden}
body.editing .cell.hide{visibility:visible;opacity:.45;border-style:dashed}
body.editing .cell{cursor:pointer}
body.editing .cell::after{content:"modifier";position:absolute;top:3px;right:6px;font-size:10px;color:var(--muted)}
.empty{visibility:hidden}
.c-pers{background:var(--pers-bg);border-color:var(--pers-bd)}
.c-verbe{background:var(--verbe-bg);border-color:var(--verbe-bd)}
.c-nom{background:var(--nom-bg);border-color:var(--nom-bd)}
.c-adj{background:var(--adj-bg);border-color:var(--adj-bd)}
.c-petit{background:var(--petit-bg);border-color:var(--petit-bd)}
.c-question{background:var(--question-bg);border-color:var(--question-bd)}
.c-social{background:var(--social-bg);border-color:var(--social-bd)}

.tabs{display:grid;grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:var(--gap)}
.tab{border-radius:10px 10px 4px 4px;border:2px solid var(--dossier-bd);background:var(--dossier-bg);padding:7px 4px;font-weight:700;font-size:14px}
.tab[aria-selected="true"]{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}

.kbd{display:flex;flex-direction:column;gap:var(--gap)}
.krow{display:grid;gap:var(--gap)}
.key{border-radius:10px;border:2px solid var(--line);background:var(--surface);font-weight:700;font-size:20px;padding:12px 0;text-transform:uppercase}
.key.wide{text-transform:none;font-size:15px}
.pred{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
.pred .key{text-transform:none;font-size:16px;background:var(--adj-bg);border-color:var(--adj-bd)}

.scan-row{outline:4px solid var(--focus);outline-offset:3px;border-radius:12px}
.scan-cell{outline:5px solid var(--focus)!important;outline-offset:1px;transform:scale(1.04);z-index:2}
.switch{position:fixed;right:max(16px,env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));width:96px;height:96px;border-radius:50%;border:4px solid var(--focus);background:var(--surface);font-weight:700;font-size:13px;z-index:20;box-shadow:0 4px 14px rgba(0,0,0,.25)}

.legend{display:flex;gap:10px 14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:5px}
.legend i{width:12px;height:12px;border-radius:3px;border:2px solid}
.note{font-size:12px;color:var(--muted);line-height:1.45;max-width:75ch}

.panel{position:fixed;inset:0 0 0 auto;width:min(420px,100%);background:var(--surface);border-left:2px solid var(--line);z-index:30;overflow:auto;
  padding:calc(16px + env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) 18px;box-shadow:-8px 0 24px rgba(0,0,0,.18)}
.panel h2{font-family:var(--font-display);font-size:19px;margin:0 0 4px}
.panel h3{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 8px}
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.field label{font-weight:700;font-size:14px}
.field .hint{font-size:12px;color:var(--muted)}
.field input[type=text],.field select{border:2px solid var(--line);border-radius:8px;padding:8px;background:var(--bg)}
.check{display:flex;gap:8px;align-items:center;margin-bottom:10px;font-weight:700;font-size:14px}
.check input{width:20px;height:20px}
.row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.pbtn{border-radius:10px;border:2px solid var(--line);background:var(--bg);padding:9px 14px;font-weight:700}
.pbtn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.pbtn.danger{color:var(--danger);border-color:var(--danger)}
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:25}
.modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(340px,calc(100% - 32px));background:var(--surface);border:2px solid var(--line);border-radius:14px;padding:18px;z-index:31}
.pin{font-size:28px;letter-spacing:.4em;text-align:center;width:100%;border:2px solid var(--line);border-radius:8px;padding:8px;background:var(--bg)}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:10px;font-weight:700;z-index:40;max-width:calc(100% - 32px)}

@media (max-width:640px){
  :root{--cell-font:10px;--emoji:20px;--gap:4px}
  .cell{border-width:2px;border-radius:8px;padding:2px}
  .sbtn{width:54px;font-size:11px} .sbtn.speak{width:62px}
  .qbtn{font-size:12px;padding:7px 2px} .tab{font-size:11px}
  .brand small{display:none}
  .switch{width:76px;height:76px}
}
body.scanning .app{padding-bottom:110px}
@media (prefers-reduced-motion:reduce){.cell{transition:none}}

/* --- ajouts version finale --- */
.cell img,.chip img{width:var(--emoji-img,62%);max-height:58%;object-fit:contain;pointer-events:none}
.chip img{width:30px;height:30px}
body.big{--emoji-img:74%}
.said{font-size:13px;color:var(--muted);padding:0 4px;min-height:18px}
.said b{color:var(--ink)}
.tab.add{border-style:dashed;background:transparent}
.picker{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}
.picker button{aspect-ratio:1;border:2px solid var(--line);border-radius:8px;background:#fff;padding:4px}
.picker button img{width:100%;height:100%;object-fit:contain}
.picker button[aria-pressed="true"]{border-color:var(--focus);border-width:4px}
.preview{display:flex;align-items:center;gap:10px;margin:6px 0 12px}
.preview .box{width:72px;height:72px;border:2px solid var(--line);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:36px;background:#fff;overflow:hidden}
.preview .box img{width:100%;height:100%;object-fit:contain}
.stats{font-size:14px;line-height:1.6}
.stats ol{margin:4px 0 0;padding-left:22px}
.status{font-size:13px;color:var(--muted)}
.offline{background:var(--petit-bg);border:1.5px solid var(--petit-bd);border-radius:8px;padding:4px 10px;font-size:13px;font-weight:700}


/* --- v1.1 : phrases rapides modifiables, temps d'arrêt, 2 contacteurs --- */
.qbtn.hide{visibility:hidden}
body.editing .qbtn.hide{visibility:visible;opacity:.45;border-style:dashed}
.qbtn.add{border-style:dashed;background:transparent}
.dwelling{position:relative}
.dwelling::before{content:"";position:absolute;left:6px;right:6px;bottom:4px;height:6px;border-radius:3px;background:var(--focus);transform-origin:left;animation:dwellfill var(--dwell-ms,1000ms) linear forwards;pointer-events:none;z-index:3}
@keyframes dwellfill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.switch2{right:calc(max(16px,env(safe-area-inset-right,0px)) + 112px);border-color:var(--verbe-bd)}
@media (max-width:640px){.switch2{right:calc(max(16px,env(safe-area-inset-right,0px)) + 88px)}}

/* --- v2 : modélisation, statistiques par semaine, impression A4 --- */
.modelbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;background:var(--surface);border:2px dashed var(--accent);border-radius:12px;padding:8px 10px}
.modelbar[hidden]{display:none}
.modelbar label[for]{font-weight:700;font-size:14px}
.modelbar input[type=text]{flex:1;min-width:180px;border:2px solid var(--line);border-radius:8px;padding:8px;background:var(--bg)}
.modelbar .check{margin:0}
@keyframes modelflash{0%,100%{box-shadow:0 0 0 0 transparent}25%,75%{box-shadow:0 0 0 6px var(--focus)}50%{box-shadow:0 0 0 2px var(--focus)}}
.cell.model-flash{animation:modelflash 1.2s ease-in-out;outline:5px solid var(--focus);outline-offset:2px;z-index:2}
@media (prefers-reduced-motion:reduce){.cell.model-flash{animation:none}}
.wtable{border-collapse:collapse;margin-top:10px;font-size:13px;width:100%}
.wtable caption{text-align:left;font-weight:700;margin-bottom:4px}
.wtable th,.wtable td{border:1px solid var(--line);padding:4px 6px;text-align:left}
#printArea{display:none}
@page{size:A4 landscape;margin:10mm}
@media print{
  body{background:#fff;color:#000;padding:0}
  .app,.switch,#layer,.toast{display:none!important}
  #printArea{display:block;color:#000;--pers-bg:#fff1a8;--pers-bd:#c9a400;--verbe-bg:#cdeec0;--verbe-bd:#3f8f2a;--nom-bg:#ffd9b3;--nom-bd:#d0731c;--adj-bg:#cfe3ff;--adj-bd:#2f6dc4;--petit-bg:#ffd0d0;--petit-bd:#c43c3c;--question-bg:#e6d6ff;--question-bd:#7a4cc4;--social-bg:#ffd6ee;--social-bd:#c2418d}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sheet{height:188mm;display:flex;flex-direction:column;gap:3mm;break-after:page;page-break-after:always;font-family:var(--font-ui)}
  .sheet:last-child{break-after:auto;page-break-after:auto}
  .sheet header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #000;padding-bottom:2mm}
  .sheet h1{font-family:var(--font-display);font-size:18pt;margin:0}
  .sheet header span{font-size:10pt}
  .pgrid{flex:1;display:grid;gap:3mm;min-height:0}
  .pgrid.core{grid-template-columns:repeat(8,1fr);grid-template-rows:repeat(4,1fr)}
  .pgrid.fold{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(2,1fr)}
  .pcell{border:2px solid #555;border-radius:3mm;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1mm;padding:2mm;min-height:0;overflow:hidden;break-inside:avoid}
  .pcell img{max-width:85%;max-height:72%;object-fit:contain}
  .pcell .e{font-size:28pt}
  .pcell .l{font-weight:700;font-size:12pt;text-align:center}
  .pgrid.fold .pcell .l{font-size:18pt}
  .pcell.hide{visibility:hidden}
  .sheet footer{font-size:8pt}
  .sheet footer p{margin:1mm 0 0}
  .plegend{display:flex;flex-wrap:wrap;gap:2mm 5mm}
  .plegend span{display:inline-flex;align-items:center;gap:1.5mm}
  .plegend i{width:4mm;height:4mm;border:1.5px solid;border-radius:1mm;display:inline-block}
}

/* --- v2.1 : Ma journée (cadran, Maintenant / Ensuite, minuteur, séquentiel) --- */
body.dayview .quick,body.dayview .legend{display:none}
.day{display:flex;flex-direction:column;gap:10px}
.daytabs{grid-template-columns:repeat(7,minmax(0,1fr))}
.daytabs .tab.today{border-width:3px}
.daymain{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;align-items:start}
@media (max-width:760px){.daymain{grid-template-columns:1fr}}
.dialwrap{position:relative;width:100%;max-width:520px;margin:0 auto;aspect-ratio:1}
.dial{width:100%;height:100%;display:block}
.dial-ring{fill:var(--surface);stroke:var(--line);stroke-width:60}
.arc{fill:none;stroke-width:52;opacity:.55}
.arc.on{opacity:1;stroke-width:60}
.tick{stroke:var(--muted);stroke-width:2}
.hour{fill:var(--ink);font:700 15px var(--font-ui);text-anchor:middle;dominant-baseline:central}
.evline{stroke:var(--ink);stroke-width:3;stroke-dasharray:4 3}
.hand{stroke:var(--danger);stroke-width:6;stroke-linecap:round}
.hub{fill:var(--danger)}
.dial-day{fill:var(--muted);font:700 16px var(--font-display);text-anchor:middle}
.dial-time{fill:var(--ink);font:700 34px var(--font-display);text-anchor:middle}
.dpic{position:absolute;transform:translate(-50%,-50%);width:12%;aspect-ratio:1;border-radius:50%;border:3px solid var(--line);background:#fff;padding:3px;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:manipulation}
.dpic img{width:100%;height:100%;object-fit:contain;pointer-events:none}
.dpic .e{font-size:22px}
.dpic.on{width:17%;border-color:var(--focus);border-width:4px;z-index:2;box-shadow:0 0 0 4px var(--surface)}
.dpic.ev{width:9.5%;border-style:dashed}
body.big .dpic{width:15%} body.big .dpic.on{width:20%} body.big .dpic.ev{width:12%}
.dayside{display:flex;flex-direction:column;gap:10px}
.cards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.dcard{display:flex;flex-direction:column;align-items:center;gap:4px;border:4px solid var(--line);border-radius:14px;background:var(--surface);padding:10px;min-height:170px;touch-action:manipulation}
.dcard img{width:64%;max-height:110px;object-fit:contain;pointer-events:none}
.dcard .e{font-size:48px}
.dcard .dk{font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.dcard .dl{font:700 20px var(--font-display);text-align:center}
.dcard .dt{font-size:14px;color:var(--muted)}
.dcard.empty{justify-content:center;border-style:dashed}
.cards .dcard:first-child:not(.empty){border-width:5px}
.seq{border:2px solid var(--line);border-radius:12px;padding:10px;background:var(--surface)}
.seqhead{display:flex;justify-content:space-between;margin-bottom:8px}
.seqrow{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}
.step{position:relative;display:flex;flex-direction:column;align-items:center;gap:3px;border:3px solid var(--line);border-radius:12px;background:#fff;color:#18232d;padding:6px;touch-action:manipulation}
.step img{width:70%;aspect-ratio:1;object-fit:contain;pointer-events:none}
.step .sl{font-weight:700;font-size:13px;text-align:center}
.step .sn{position:absolute;top:4px;left:6px;font-weight:700;font-size:12px}
.step.done{opacity:.5;border-color:var(--verbe-bd)}
.step.done::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:56px;color:var(--verbe-bd);font-weight:700}
.timer{display:flex;gap:12px;align-items:center;border:2px solid var(--line);border-radius:12px;padding:10px;background:var(--surface);flex-wrap:wrap}
.tdisc{width:150px;height:150px;flex:none}
.tbg{fill:#fff;stroke:var(--line);stroke-width:4}
.tpie{fill:var(--danger)}
.tinfo{flex:1;min-width:200px}
.tleft{font:700 26px var(--font-display)}
.timer.done{border-color:var(--verbe-bd);box-shadow:0 0 0 4px var(--verbe-bg)}
.dayedit{border:2px dashed var(--focus);border-radius:12px;padding:10px 12px}
.dayedit h3{margin:0 0 8px;font-size:15px}
.dlist{display:flex;flex-direction:column;gap:6px}
.ditem{display:flex;gap:8px;align-items:center;text-align:left;border:2px solid var(--line);border-radius:8px;background:var(--surface);padding:8px}
.ditem i{width:14px;height:14px;border-radius:50%;flex:none}
body.contrast .dial-ring{fill:#000;stroke:#fff} body.contrast .arc{opacity:.85} body.contrast .dcard,body.contrast .timer,body.contrast .seq{background:#000}
body.contrast .hour,body.contrast .dial-time{fill:#fff}
.panel textarea{width:100%}

/* --- v2.2 : Mon journal --- */
body.jnlview .quick,body.jnlview .legend{display:none}
.jnl{display:flex;flex-direction:column;gap:10px}
.jnav{align-items:center;margin:0}
.jdate{font:700 20px var(--font-display);margin:0 6px;flex:1;min-width:160px;text-align:center}
.jdate::first-letter,.calhead b::first-letter{text-transform:uppercase}
.pbtn.big{font-size:18px;padding:12px 20px}
.cal{border:2px solid var(--line);border-radius:12px;padding:8px;background:var(--surface);max-width:520px}
.calhead{justify-content:space-between;align-items:center;margin:0 0 6px}
.cweek{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px}
.cweek.names span{text-align:center;font-size:12px;color:var(--muted);font-weight:700}
.cday{position:relative;aspect-ratio:1;border:2px solid var(--line);border-radius:8px;background:var(--bg);font-weight:700}
.cday.today{border-color:var(--accent);border-width:3px}
.cday[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.cday.has::after{content:"";position:absolute;left:50%;bottom:4px;width:8px;height:8px;margin-left:-4px;border-radius:50%;background:var(--focus)}
.jq{font:700 24px var(--font-display);margin:4px 0 8px}
.jq.small{font-size:16px}
.jgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.jgrid.moods{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:640px){.jgrid{grid-template-columns:repeat(3,minmax(0,1fr))}.jgrid.moods{grid-template-columns:repeat(3,minmax(0,1fr))}}
.jchoice{display:flex;flex-direction:column;align-items:center;gap:4px;border:3px solid var(--line);border-radius:14px;background:#fff;color:#18232d;padding:8px;font-weight:700;touch-action:manipulation}
.jchoice img{width:80%;aspect-ratio:1;object-fit:contain;pointer-events:none}
.jchoice .e{font-size:48px}
.jchoice.fait{border-color:var(--verbe-bd)}
.jchoice em{font-style:normal;font-size:13px;color:#2c6b1e}
body.big .jgrid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}
.wzbig .pbtn{font-size:20px;padding:16px 22px}
.jlist{display:flex;flex-direction:column;gap:8px}
.jentry{display:flex;align-items:center;gap:10px;text-align:left;border:2px solid var(--line);border-radius:12px;background:var(--surface);padding:8px;touch-action:manipulation}
.jtime{font-weight:700;font-size:16px;min-width:48px}
.jpic{width:64px;height:64px;flex:none;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:8px}
.jpic img{max-width:100%;max-height:100%;object-fit:contain}
.jpic .e{font-size:34px}
.jtxt{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.jcom{font-size:14px}
.jby{font-size:12px;color:var(--muted)}
.jmood{width:48px;height:48px;flex:none}
.jmood img{width:100%;height:100%;object-fit:contain}
.jphotos{display:flex;gap:4px;align-items:center}
.jphotos img{width:56px;height:56px;object-fit:cover;border-radius:6px}
.jphotos.big img{width:110px;height:110px}
.jphotos .ph{position:relative}
.jphotos .ph button{position:absolute;top:2px;right:2px;padding:2px 8px}
@media (max-width:640px){.jentry{flex-wrap:wrap}.jphotos{width:100%}}
.story{position:fixed;inset:0;z-index:35;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px}
.sbig{width:min(78vw,60vh);height:min(78vw,60vh);display:flex;align-items:center;justify-content:center;background:#fff;border-radius:18px;overflow:hidden;border:3px solid var(--line)}
.sbig img{width:100%;height:100%;object-fit:contain}
.sbig .e{font-size:120px}
.stxt{font:700 26px var(--font-display);text-align:center;max-width:40ch;margin:0}
body.contrast .jentry,body.contrast .cal{background:#000}
@page journal{size:A4 portrait;margin:12mm}
@media print{
  .jsheet{page:journal;font-family:var(--font-ui);color:#000}
  .jsheet header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:2px solid #000;padding-bottom:2mm;margin-bottom:3mm}
  .jsheet h1{font-family:var(--font-display);font-size:18pt;margin:0}
  .jday{break-inside:auto;margin-bottom:4mm}
  .jday h2{font-size:13pt;margin:3mm 0 2mm;border-bottom:1px solid #999}
  .jday h2::first-letter{text-transform:uppercase}
  .jprow{display:flex;gap:3mm;align-items:flex-start;break-inside:avoid;padding:2mm 0;border-bottom:1px dotted #bbb}
  .jprow .jtime{min-width:14mm}
  .jprow .jpic{width:18mm;height:18mm;background:none}
  .jprow .jtxt{font-size:10.5pt;display:block}
  .jpp{display:flex;gap:2mm;flex-wrap:wrap;max-width:80mm}
  .jpp img{width:38mm;height:38mm;object-fit:cover;border-radius:2mm}
  .jsheet footer{font-size:8pt;margin-top:4mm}
}

/* --- v3 : regard (expérimental) et voix --- */
.gazedot{position:fixed;left:0;top:0;width:28px;height:28px;border-radius:50%;border:4px solid var(--focus);background:rgba(232,89,12,.25);z-index:50;pointer-events:none;transition:transform .05s linear}
.calib{position:fixed;inset:0;z-index:60;background:var(--bg)}
.calhelp{position:absolute;left:50%;top:22%;transform:translateX(-50%);max-width:520px;text-align:center;font-size:16px;background:var(--surface);border:2px solid var(--line);border-radius:12px;padding:12px}
.cpt{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;border:4px solid var(--danger);background:#fff;color:#000;font-weight:700}
.cpt.ok{border-color:var(--verbe-bd);background:var(--verbe-bg)}
.calbar{position:absolute;left:50%;top:64%;transform:translateX(-50%)}
.vguide{margin:0 0 12px}.vguide summary{cursor:pointer;font-weight:700;font-size:14px;margin-bottom:6px}
/* --- v3 : accueil par intention, mots en séquences, formes dans la barre, versions --- */
.intents{display:flex;flex-direction:column;gap:10px}
.igrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:640px){.igrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.ibtn{display:flex;flex-direction:column;align-items:center;gap:6px;border:3px solid var(--accent);border-radius:16px;background:#fff;color:#18232d;padding:12px;font:700 18px var(--font-display);touch-action:manipulation;min-height:150px}
.ibtn img{width:56%;aspect-ratio:1;object-fit:contain;pointer-events:none}
.ibtn .e{font-size:56px}
.ihead{align-items:center;margin:0}
.ihead h2{font:700 22px var(--font-display);margin:0}
.ipic{width:56px;height:56px;background:#fff;border-radius:10px;display:flex;align-items:center;justify-content:center}
.ipic img{width:100%;height:100%;object-fit:contain}
.iphr{border:3px solid var(--line);border-radius:14px;background:var(--surface);padding:16px 10px;font-weight:700;font-size:17px;touch-action:manipulation}
.ilink{border:3px solid var(--dossier-bd);border-radius:14px;background:var(--dossier-bg);padding:16px 10px;font-weight:700;font-size:17px;touch-action:manipulation}
.homebtn{position:fixed;left:max(16px,env(safe-area-inset-left,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:21;border:4px solid var(--accent);background:var(--surface);border-radius:14px;padding:12px 18px;font:700 18px var(--font-display);box-shadow:0 4px 14px rgba(0,0,0,.25)}
.homebtn[hidden]{display:none}
body:has(.homebtn:not([hidden])) .app{padding-bottom:84px}
.cell.linked::before{content:"›";position:absolute;top:2px;right:6px;font-size:22px;font-weight:700;color:var(--accent)}
.motortop{display:flex;align-items:center;gap:12px;margin-bottom:8px}
.motortop .mkey{width:12%;min-width:70px;aspect-ratio:1/0.92}
.mpath{flex:1;font:700 20px var(--font-display)}
.chip{font:inherit;color:inherit;cursor:pointer;position:relative}
.chip.formed{border-color:var(--accent);border-width:3px}
.chip .fm{font-style:normal;font-size:10px;color:var(--accent);font-weight:700}
.fopts{display:flex;flex-direction:column;gap:8px}
.fopts .pbtn{text-align:left;font-size:16px;padding:12px}
.vlist{display:flex;flex-direction:column;gap:6px}
.vrow,.voicerow{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;border-bottom:1px solid var(--line);padding:4px 0}
body.contrast .ibtn,body.contrast .iphr{background:#000;color:#fff}
