:root{
  --font:"Bricolage Grotesque",system-ui,-apple-system,"Segoe UI",sans-serif;
  --list:#e9ecf2; --card:#ffffff; --text:#1c2230; --muted:#5d6678; --line:#d3d8e2;
  --hover:#dde2ea; --focus:#2f5bff; --danger:#c93a3a; --ok:#2f9a5e; --overlay:rgba(12,16,26,.55);
  --shadow:0 1px 0 rgba(20,28,45,.18); --panel:#f6f7fa;
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --list:#1f242e; --card:#2b313d; --text:#e8ebf1; --muted:#9aa3b5; --line:#3a4150;
    --hover:#343b49; --focus:#7d98ff; --danger:#ff7676; --ok:#5fcf8e; --overlay:rgba(0,0,0,.65);
    --shadow:0 1px 0 rgba(0,0,0,.4); --panel:#181c24;
  }
}
:root[data-theme="dark"]{
  --list:#1f242e; --card:#2b313d; --text:#e8ebf1; --muted:#9aa3b5; --line:#3a4150;
  --hover:#343b49; --focus:#7d98ff; --danger:#ff7676; --ok:#5fcf8e; --overlay:rgba(0,0,0,.65);
  --shadow:0 1px 0 rgba(0,0,0,.4); --panel:#181c24;
}
*,*::before,*::after{box-sizing:inherit}
html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;height:100%;font-family:var(--font);color:var(--text);background-color:var(--bg,#2946d6);transition:background-color .25s;overflow:hidden;font-size:15px;line-height:1.4}
body.has-img{background-size:cover;background-position:center;background-attachment:fixed}
button,input,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
a{color:var(--focus)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
svg{flex:none}
#app{height:100%;display:flex;flex-direction:column}
body.loading #app main{opacity:.6;pointer-events:none}

/* Barre du haut */
.top{display:flex;align-items:center;gap:6px;padding:8px 12px;background:rgba(0,0,0,.24);color:#fff;flex-wrap:wrap}
.tbtn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:6px;background:rgba(255,255,255,.16);color:#fff;font-weight:500;white-space:nowrap;min-height:32px}
.tbtn:hover{background:rgba(255,255,255,.28)}
.tbtn.on{background:#fff;color:#1c2230}
.tbtn .n{background:rgba(255,255,255,.3);border-radius:10px;padding:0 6px;font-size:12px}
.tbtn.on .n{background:var(--focus);color:#fff}
.brand{font-weight:700;letter-spacing:-.02em}
.board-title{font-size:18px;font-weight:700;padding:4px 8px;border-radius:6px;background:transparent;border:0;color:#fff;min-width:60px;max-width:300px;letter-spacing:-.01em}
.board-title:hover{background:rgba(255,255,255,.16)}
.board-title:focus{background:#fff;color:#1c2230;outline:none}
.tabs{display:flex;gap:2px;background:rgba(0,0,0,.2);padding:3px;border-radius:8px}
.tab{padding:5px 10px;border-radius:6px;color:#fff;font-weight:500;display:inline-flex;gap:6px;align-items:center;white-space:nowrap}
.tab:hover{background:rgba(255,255,255,.16)}
.tab[aria-selected="true"]{background:#fff;color:#1c2230}
.spacer{flex:1}
.search{padding:6px 10px;border-radius:6px;border:0;background:rgba(255,255,255,.2);color:#fff;width:170px;min-height:32px}
@media (max-width:1560px) and (min-width:641px){.tab[aria-selected="false"] .tlb{display:none}}
.search::placeholder{color:rgba(255,255,255,.75)}
.search:focus{background:#fff;color:#1c2230;outline:none}
.status{font-size:12px;opacity:.9;white-space:nowrap;display:inline-flex;align-items:center;gap:5px}
.sdot{width:8px;height:8px;border-radius:50%;background:#6fdc9a;display:inline-block}
.status.busy .sdot{background:#ffd166}
.status.err .sdot{background:#ff8a8a}
@media (max-width:1450px){.top .st-t{display:none}}
.avs{display:flex;align-items:center;padding:2px 4px;border-radius:6px}
.avs:hover{background:rgba(255,255,255,.16)}
.avs .av{margin-left:-6px;box-shadow:0 0 0 2px rgba(0,0,0,.25)}
.avs .av:first-child{margin-left:0}
.av{width:26px;height:26px;border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-size:11px;font-weight:700;flex:none;letter-spacing:0}
.av.sm{width:22px;height:22px;font-size:10px}
.av.plus{background:rgba(255,255,255,.25)}
.fbar{display:flex;gap:6px;flex-wrap:wrap;align-items:center;padding:6px 12px;background:rgba(0,0,0,.14);color:#fff;font-size:13px}
.fchip{background:rgba(255,255,255,.2);padding:3px 8px;border-radius:12px;display:inline-flex;gap:4px;align-items:center;color:#fff}
.fchip:hover{background:rgba(255,255,255,.32)}

/* Vue Kanban */
.view{flex:1;min-height:0}
.board{display:flex;align-items:flex-start;gap:12px;padding:14px;overflow-x:auto;overflow-y:hidden;height:100%}
.list{flex:0 0 284px;max-height:100%;display:flex;flex-direction:column;background:var(--list);border-radius:10px;padding:8px}
.list.over{box-shadow:inset 0 0 0 2px var(--danger)}
.list-head{display:flex;align-items:center;gap:4px;padding:2px 2px 6px}
.count{font-size:12px;color:var(--muted);padding:0 4px;white-space:nowrap}
.list.over .count{color:var(--danger);font-weight:700}
.icon-btn{width:30px;height:30px;border-radius:6px;display:inline-grid;place-items:center;color:var(--muted);flex:none}
.icon-btn:hover{background:var(--hover);color:var(--text)}
.cards{overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:2px;min-height:6px}
.card{position:relative;background:var(--card);border-radius:8px;box-shadow:var(--shadow);cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overflow:hidden}
.card:hover,.card:focus-visible{outline:2px solid var(--focus);outline-offset:-2px}
.card-body{padding:8px 10px}
.card .cover{height:32px}
.card .cover.img{height:120px;background-size:cover;background-position:center}
.card.done .c-title{text-decoration:line-through;color:var(--muted)}
.c-labels{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.c-label{font-size:11px;font-weight:600;color:#fff;padding:1px 7px;border-radius:4px;line-height:16px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-title{word-wrap:break-word;white-space:pre-wrap;padding-right:18px}
.c-foot{display:flex;align-items:flex-end;gap:6px;margin-top:6px}
.badges{display:flex;flex-wrap:wrap;gap:6px;font-size:12px;color:var(--muted);flex:1;align-items:center}
.badge{display:inline-flex;align-items:center;gap:3px;padding:1px 5px;border-radius:4px;white-space:nowrap}
.badge.late{background:#d64545;color:#fff}
.badge.soon{background:#e3b505;color:#1c2230}
.badge.ok{background:#2f9a5e;color:#fff}
.badge.block{background:#3b4453;color:#fff}
.badge.run{background:var(--focus);color:#fff}
.prio{font-weight:600}
.c-avs{display:flex;gap:2px}
.quick-done{position:absolute;top:7px;right:7px;width:20px;height:20px;border-radius:50%;border:2px solid var(--line);background:var(--card);display:grid;place-items:center;color:#fff;opacity:0;transition:opacity .12s}
.card:hover .quick-done,.quick-done.is-done,.card:focus-within .quick-done{opacity:1}
.quick-done.is-done{background:var(--ok);border-color:var(--ok)}
@media (hover:none){.quick-done{opacity:1}}
.placeholder{background:rgba(0,0,0,.12);border-radius:8px;flex:none}
.ghost{position:fixed;z-index:50;pointer-events:none;transform:rotate(3deg);box-shadow:0 12px 28px rgba(0,0,0,.35);opacity:.95}
.add-card{width:100%;text-align:left;padding:7px 8px;border-radius:6px;color:var(--muted);margin-top:6px}
.add-card:hover{background:var(--hover);color:var(--text)}
.composer textarea,.composer input{width:100%;border:0;border-radius:8px;padding:8px 10px;background:var(--card);box-shadow:var(--shadow);resize:none;outline:2px solid var(--focus)}
.composer .row{display:flex;gap:6px;margin-top:6px;align-items:center}
.new-list{flex:0 0 284px;border-radius:10px;background:rgba(255,255,255,.2);color:#fff;padding:10px 12px;text-align:left;font-weight:500}
.new-list:hover{background:rgba(255,255,255,.3)}
.new-list-form{flex:0 0 284px;background:var(--list);border-radius:10px;padding:8px}
.hint{color:#fff;opacity:.9;padding:20px;font-weight:500}

/* Boutons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:6px;background:var(--focus);color:#fff;font-weight:600;min-height:34px}
.btn:hover{filter:brightness(1.08)}
.btn:disabled{opacity:.5;cursor:default}
.btn.ghosty{background:transparent;color:var(--text)}
.btn.ghosty:hover{background:var(--hover)}
.btn.soft{background:var(--hover);color:var(--text)}
.btn.soft:hover{filter:brightness(.97)}
.btn.danger{background:var(--danger)}
.btn.ai{background:linear-gradient(135deg,#6a4cff,#2f7ee0)}
.btn.block{width:100%;justify-content:flex-start}

/* Vue calendrier */
.cal{height:100%;display:flex;flex-direction:column;padding:12px 14px 14px;gap:10px}
.cal-head{display:flex;align-items:center;gap:8px;color:#fff;flex-wrap:wrap}
.cal-head h2{margin:0 8px 0 0;font-size:20px;letter-spacing:-.01em;text-transform:capitalize}
.cal-grid{flex:1;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto;grid-auto-rows:minmax(92px,1fr);gap:1px;background:var(--line);border-radius:10px;overflow:auto;border:1px solid var(--line)}
.cal-dow{background:var(--panel);font-size:12px;color:var(--muted);padding:6px 8px;font-weight:600;position:sticky;top:0;z-index:1}
.cal-grid .dow-row{display:contents}
.cal-day{background:var(--card);padding:4px;display:flex;flex-direction:column;gap:3px;min-width:0;overflow:hidden}
.cal-day.out{background:var(--panel)}
.cal-day.out .dnum{opacity:.5}
.cal-day.today .dnum{background:var(--focus);color:#fff}
.cal-day.dragover{outline:2px dashed var(--focus);outline-offset:-3px}
.dnum{font-size:12px;font-weight:600;width:22px;height:22px;border-radius:50%;display:grid;place-items:center}
.cal-chip{font-size:12px;text-align:left;padding:2px 6px;border-radius:4px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%}
.cal-chip.done{opacity:.55;text-decoration:line-through}
.cal-more{font-size:11px;color:var(--muted);text-align:left;padding:0 4px}

/* Vue liste (tableau) */
.tablewrap{height:100%;overflow:auto;padding:14px}
.tbl{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border-radius:10px;overflow:hidden;min-width:880px;font-size:14px}
.tbl th{background:var(--panel);text-align:left;font-weight:600;font-size:13px;color:var(--muted);padding:9px 10px;position:sticky;top:0;white-space:nowrap;border-bottom:1px solid var(--line)}
.tbl th button{display:inline-flex;gap:4px;align-items:center;color:inherit;font-weight:600}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
.tbl tr.row{cursor:pointer}
.tbl tr.row:hover td{background:var(--hover)}
.tbl tr.done td.t{text-decoration:line-through;color:var(--muted)}
.tbl .chips{flex-wrap:nowrap}

/* Stats */
.stats{height:100%;overflow:auto;padding:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;align-content:start}
.panel{background:var(--card);border-radius:10px;padding:14px 16px}
.panel h3{margin:0 0 10px;font-size:15px}
.kpis{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}
.kpi{background:var(--card);border-radius:10px;padding:12px 16px}
.kpi b{display:block;font-size:30px;letter-spacing:-.03em;line-height:1.1}
.kpi span{color:var(--muted);font-size:13px}
.bar-row{display:grid;grid-template-columns:minmax(80px,38%) 1fr 34px;gap:8px;align-items:center;font-size:13px;margin-bottom:6px}
.bar-row .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar{height:10px;border-radius:5px;background:var(--hover);overflow:hidden}
.bar>div{height:100%;border-radius:5px}
.bar-row .v{text-align:right;color:var(--muted)}
.cols{display:flex;align-items:flex-end;gap:8px;height:130px;padding-top:6px}
.cols .col{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end;font-size:10px;color:var(--muted);white-space:nowrap;min-width:0}
.cols .col div{width:100%;background:var(--focus);border-radius:4px 4px 0 0;min-height:2px}
.cols .col b{color:var(--text);font-size:12px}
.ring{--p:0;width:110px;height:110px;border-radius:50%;background:conic-gradient(var(--ok) calc(var(--p)*1%),var(--hover) 0);display:grid;place-items:center;margin:4px auto 8px}
.ring span{width:84px;height:84px;border-radius:50%;background:var(--card);display:grid;place-items:center;font-size:22px;font-weight:700}
.muted{color:var(--muted);font-size:13px}

/* Vide */
.empty{height:100%;display:grid;place-items:center;padding:20px;overflow:auto}
.empty .panel{max-width:560px;width:100%}
.empty h2{margin:0 0 6px;font-size:24px;letter-spacing:-.02em}

/* Popovers & dialogues */
.pop{position:fixed;z-index:70;background:var(--card);color:var(--text);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.3);padding:8px;min-width:230px;max-width:calc(100vw - 16px);max-height:calc(100vh - 80px);overflow:auto}
.pop h4{margin:6px 8px 6px;font-size:12px;color:var(--muted);font-weight:600}
.pop .item{display:flex;align-items:center;gap:8px;width:100%;text-align:left;padding:8px 10px;border-radius:6px}
.pop .item:hover{background:var(--hover)}
.pop .item.active{font-weight:700}
.pop .item.danger{color:var(--danger)}
.pop .sep{height:1px;background:var(--line);margin:6px 4px}
.pop .kbd{margin-left:auto;font-size:11px;color:var(--muted)}
.swatches{display:flex;flex-wrap:wrap;gap:6px;padding:4px 6px 8px}
.swatch{width:36px;height:28px;border-radius:6px}
.swatch.sel{outline:3px solid var(--text);outline-offset:2px}
.dot{width:12px;height:12px;border-radius:3px;display:inline-block;flex:none}
.overlay{position:fixed;inset:0;z-index:60;background:var(--overlay);display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;padding:max(24px,env(safe-area-inset-top,0px)) 10px 24px}
.modal{background:var(--list);color:var(--text);width:100%;max-width:820px;border-radius:12px;padding:18px 18px 20px;position:relative;margin:auto 0}
.modal.narrow{max-width:520px}
.modal.dialog{max-width:400px}
.modal .close{position:absolute;top:10px;right:10px}
.modal h2{margin:0 36px 12px 0;font-size:20px;letter-spacing:-.01em}
.m-cover{height:90px;border-radius:8px;margin:-4px 0 12px;background-size:cover;background-position:center}
.m-title{width:calc(100% - 40px);font-size:21px;font-weight:700;border:0;background:transparent;padding:4px 6px;border-radius:6px;resize:none;letter-spacing:-.01em;display:block}
.m-title:focus{background:var(--card);outline:2px solid var(--focus)}
.m-sub{font-size:13px;color:var(--muted);margin:2px 6px 10px}
.m-sub select{border:0;background:transparent;text-decoration:underline;padding:0;color:var(--text);max-width:180px}
.m-grid{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:18px}
.side{display:flex;flex-direction:column;gap:6px}
.side h4{margin:10px 0 2px;font-size:12px;color:var(--muted);font-weight:600}
.side h4:first-child{margin-top:0}
.meta{display:flex;flex-wrap:wrap;gap:14px 20px}
.meta .grp h5{margin:0 0 5px;font-size:12px;color:var(--muted);font-weight:600}
.sec{margin-top:18px}
.sec-h{font-weight:600;margin-bottom:8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sec-h .link{margin-left:auto;font-weight:400;font-size:13px;color:var(--muted);text-decoration:underline}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{padding:4px 10px;border-radius:6px;color:#fff;font-weight:500;font-size:13px;opacity:.4;min-height:28px}
.chip.on{opacity:1;box-shadow:inset 0 0 0 2px rgba(0,0,0,.25)}
.mchip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px 3px 3px;border-radius:16px;background:var(--card);opacity:.55;font-size:13px;min-height:30px}
.mchip.on{opacity:1;box-shadow:inset 0 0 0 2px var(--focus)}
.field{padding:6px 8px;border-radius:6px;border:1px solid var(--line);background:var(--card);min-height:34px;max-width:100%}
.fields{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.check-row{display:inline-flex;align-items:center;gap:6px;cursor:pointer}
textarea.desc,textarea.big{width:100%;min-height:110px;border:1px solid var(--line);border-radius:8px;background:var(--card);padding:10px;resize:vertical;line-height:1.5}
.progress{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-bottom:8px}
.progress>div{height:100%;background:var(--ok);transition:width .2s}
.ck{display:flex;align-items:center;gap:8px;padding:2px 0}
.ck input[type=checkbox]{width:18px;height:18px;flex:none}
.ck input[type=text]{flex:1;border:0;background:transparent;padding:4px 6px;border-radius:5px;min-width:0}
.ck input[type=text]:focus{background:var(--card);outline:2px solid var(--focus)}
.ck.done input[type=text]{text-decoration:line-through;color:var(--muted)}
.lbl-row{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.lbl-row input[type=text]{flex:1}
.lbl-row .sw{width:30px;height:30px;border-radius:6px;flex:none}
.att{display:flex;gap:10px;align-items:center;padding:6px;border-radius:8px;background:var(--card);margin-bottom:6px}
.att .th{width:64px;height:48px;border-radius:6px;background:var(--hover);display:grid;place-items:center;background-size:cover;background-position:center;flex:none;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase}
.att .info{flex:1;min-width:0}
.att .info a{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.att .acts{display:flex;gap:4px;flex-wrap:wrap}
.linkish{font-size:12px;color:var(--muted);text-decoration:underline}
.cmt{display:flex;gap:8px;margin-bottom:10px}
.cmt .bubble{flex:1;min-width:0}
.cmt .who{font-size:13px}
.cmt .who b{margin-right:6px}
.cmt .txt{background:var(--card);border-radius:8px;padding:8px 10px;margin-top:3px;white-space:pre-wrap;word-wrap:break-word}
.act-item{font-size:13px;color:var(--muted);padding:3px 0}
.timer{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.m-foot{display:flex;justify-content:flex-end;margin-top:18px;gap:8px;flex-wrap:wrap}
.dialog p{margin:0 0 16px}
.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}
.tpl{background:var(--card);border-radius:8px;padding:10px;text-align:left;border:2px solid transparent}
.tpl.sel{border-color:var(--focus)}
.tpl b{display:block;margin-bottom:2px}
.tpl span{font-size:12px;color:var(--muted)}
.ai-out{background:var(--card);border-radius:8px;padding:12px;white-space:pre-wrap;line-height:1.5;min-height:60px;max-height:50vh;overflow:auto}
.gen-item{display:flex;gap:8px;align-items:flex-start;background:var(--card);border-radius:8px;padding:8px 10px;margin-bottom:6px}
.gen-item input{margin-top:4px;width:18px;height:18px;flex:none}
.gen-item small{color:var(--muted);display:block}
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:sp .8s linear infinite;vertical-align:-2px}
@keyframes sp{to{transform:rotate(360deg)}}
.toast{position:fixed;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:#1c2233;color:#fff;border-radius:10px;padding:10px 12px 10px 16px;display:flex;gap:12px;align-items:center;z-index:90;box-shadow:0 8px 24px rgba(0,0,0,.35);max-width:calc(100vw - 24px)}
.toast button{color:#9fb4ff;font-weight:700;padding:4px 6px}
.kbd-list{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px}
.kbd-list kbd{background:var(--card);border:1px solid var(--line);border-radius:4px;padding:1px 7px;font-family:inherit;font-weight:600;text-align:center}
.row-flex{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hide{display:none!important}

@media (max-width:760px){
  .m-grid{grid-template-columns:1fr}
  .side{flex-direction:row;flex-wrap:wrap}
  .side h4{width:100%}
  .side .btn.block{width:auto}
}
@media (max-width:640px){
  .top{gap:6px}
  .top>.tbtn:first-child{order:0}
  .board-title{order:1;flex:1;min-width:0;max-width:none}
  .top>[data-act="boardmenu"]{order:2}
  .tabs{order:3;width:100%;overflow-x:auto}
  .search{order:4;flex:1;width:auto;min-width:0}
  .top>[data-act="filters"],.avs,.top>[data-act="ai"]{order:5}
  .status,.top .spacer{display:none}
  .top .lbl{display:none}
  .tab{flex:1;justify-content:center}
  .tab .tlb{display:none}
  .list,.new-list,.new-list-form{flex-basis:84vw}
  .board{scroll-snap-type:x proximity}
  .list{scroll-snap-align:start}
  .cal-grid{grid-auto-rows:minmax(70px,1fr)}
  .cal-chip{font-size:10px;padding:1px 3px}
  .modal{padding:14px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation-duration:0s!important}}

/* ===================== v3 ===================== */
.tbtn.icon{padding:6px 8px}
.tbtn.starred{color:#ffd166}
.tbtn:disabled,.tab:disabled{opacity:.45;cursor:default}
.board-title.static{display:inline-block;cursor:default}
.tabs .tsep{width:1px;background:rgba(255,255,255,.3);margin:4px 3px}
.online{display:flex;gap:2px;align-items:center}
.av.live{box-shadow:0 0 0 2px #6fdc9a}
.bell{position:relative}
.badge-n{position:absolute;top:-4px;right:-4px;background:#ff5a5a;color:#fff;border-radius:9px;font-size:10px;font-weight:700;min-width:17px;height:17px;display:grid;place-items:center;padding:0 4px;box-shadow:0 0 0 2px rgba(0,0,0,.2)}
.fchip.on{background:#fff;color:#1c2233}
.grow{flex:1;min-width:0}
.nowrap{flex-wrap:nowrap}
.tiny{font-size:12px}
.field.wide{width:100%}
.field.grow{flex:1;min-width:120px}
.field.num{width:80px}
.btn.sm{min-height:28px;padding:4px 10px;font-size:13px}
.linkish{font-size:13px;color:var(--muted);text-decoration:underline;cursor:pointer}
.linkish.light{color:#fff}
.icon-btn.light{color:#fff}
.icon-btn.light:hover{background:rgba(255,255,255,.2);color:#fff}
.mini{font-size:11px;padding:1px 6px;border-radius:4px;background:var(--hover);color:var(--text);margin-left:4px}
.tag{font-size:11px;padding:2px 7px;border-radius:10px;background:var(--hover);color:var(--muted);white-space:nowrap}
.spacer{flex:1}

/* Listes */
.list-head{cursor:grab;touch-action:pan-y}
.list-title{flex:1;font-weight:600;padding:5px 7px;border-radius:5px;margin:0;font-size:15px;min-width:0;overflow-wrap:anywhere;cursor:pointer}
.list-title:hover{background:rgba(0,0,0,.05)}
.list-title-in{flex:1;font-weight:600;padding:5px 7px;border-radius:5px;border:0;background:var(--card);outline:2px solid var(--focus);min-width:0}
.list.tinted{background:color-mix(in srgb,var(--lc) 20%,var(--list));box-shadow:inset 0 4px 0 var(--lc)}
.list.collapsed{flex:0 0 44px;padding:0}
.col-btn{width:100%;height:100%;min-height:160px;display:flex;flex-direction:column;align-items:center;gap:8px;padding:10px 0;border-radius:10px}
.col-btn:hover{background:rgba(0,0,0,.05)}
.col-btn .vt{writing-mode:vertical-rl;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-height:70vh}
.lsums{display:flex;flex-wrap:wrap;gap:6px;padding:0 6px 6px}
.lsum{font-size:12px;font-weight:600;background:var(--card);border-radius:10px;padding:1px 8px;color:var(--muted)}
.add-row{display:flex;align-items:center;gap:4px;margin-top:6px}
.add-row .add-card{margin-top:0;flex:1}
.placeholder.lph{flex:none;border-radius:10px;background:rgba(0,0,0,.18)}
.ghost.list{overflow:hidden}

/* Cartes : types et états */
.card.selected{outline:3px solid #ffd166!important;outline-offset:-3px}
.card.sep{background:transparent;box-shadow:none;padding:8px 4px;cursor:pointer}
.card.sep span{display:block;height:2px;background:var(--muted);opacity:.45;border-radius:1px}
.card.sep:hover span{opacity:.8}
.card.blink .card-body{display:flex;align-items:center;gap:6px}
.card.blink .cover{height:44px}
.card.missing .card-body{display:flex;gap:6px;align-items:center}
.card.is-mirror{box-shadow:var(--shadow),inset 3px 0 0 #8a5cd6}
.board.aging .card.age1{opacity:.85}
.board.aging .card.age2{opacity:.65;filter:saturate(.6)}
.board.aging .card.age3{opacity:.45;filter:saturate(.2) sepia(.25)}
.c-title.linkc{display:flex;gap:6px;align-items:center;color:var(--focus);font-weight:500}
.c-title.linkc span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.c-fields{display:flex;flex-wrap:wrap;gap:4px 8px;margin-top:6px;font-size:12px}
.fchipc{color:#fff;border-radius:4px;padding:0 6px;font-weight:600;font-size:11px;line-height:18px}
.fval{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.badge.mirror{background:#8a5cd6;color:#fff}
.badge.tplb{background:var(--hover);color:var(--text)}
.badge.voted{color:var(--focus);font-weight:700}
.viewing{position:absolute;top:8px;left:8px;width:8px;height:8px;border-radius:50%;background:#6fdc9a;box-shadow:0 0 0 2px var(--card)}
.quick-edit{position:absolute;top:6px;right:32px;width:22px;height:22px;border-radius:6px;background:var(--card);color:var(--muted);display:grid;place-items:center;opacity:0;transition:opacity .12s;box-shadow:var(--shadow)}
.card:hover .quick-edit,.card:focus-within .quick-edit{opacity:1}
.quick-edit:hover{color:var(--text);background:var(--hover)}
@media (hover:none){.quick-edit{display:none}}
.card .c-title{padding-right:44px}
.qhint{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;min-height:0}
.qchip{display:inline-flex;align-items:center;gap:4px;font-size:12px;background:var(--card);border-radius:10px;padding:2px 8px;box-shadow:var(--shadow)}

/* Barre de sélection multiple */
.bulk{position:fixed;left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:55;display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:#1c2233;color:#fff;border-radius:12px;padding:8px 10px;box-shadow:0 10px 30px rgba(0,0,0,.4);max-width:calc(100vw - 20px)}
.bulk .field{min-height:32px;padding:4px 6px;background:#2b3345;color:#fff;border-color:#3d465a}
.bulk .datef{display:inline-flex;align-items:center;gap:6px;font-size:13px}
.bulk .datef input{background:transparent;border:0;color:#fff;color-scheme:dark}
.bulk .btn.soft{background:#2b3345;color:#fff}

/* Segmented control */
.seg{display:inline-flex;background:var(--hover);border-radius:8px;padding:3px;gap:2px}
.seg.wrap{flex-wrap:wrap}
.seg button{padding:5px 11px;border-radius:6px;font-weight:500;font-size:13px;display:inline-flex;align-items:center;gap:4px;color:var(--text)}
.seg button.on{background:var(--card);box-shadow:var(--shadow);font-weight:600}
.seg .n{background:var(--focus);color:#fff;border-radius:9px;font-size:11px;padding:0 6px}
.tbtn.chk{gap:6px;cursor:pointer}
.tbtn.chk input{accent-color:#fff}
.tbtn.light{background:var(--card);color:var(--text)}
.tsel{background:transparent;border:0;color:inherit;font-weight:600;cursor:pointer}
.tsel option{color:#1c2230}

/* Calendrier */
.dtop{display:flex;align-items:center;justify-content:space-between}
.dadd{width:22px;height:22px;border-radius:6px;color:var(--muted);opacity:0;font-weight:700}
.cal-day:hover .dadd,.dadd:focus-visible{opacity:1}
.dadd:hover{background:var(--hover);color:var(--text)}
@media (hover:none){.dadd{opacity:.6}}

/* Chronologie */
.tlwrap{height:100%;display:flex;flex-direction:column;padding:10px 14px 14px;gap:8px}
.tl-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;color:#fff}
.tl-tools .seg{background:rgba(0,0,0,.25)}
.tl-tools .seg button{color:#fff}
.tl-tools .seg button.on{color:var(--text)}
.tl{flex:1;overflow:auto;background:var(--card);border-radius:10px;position:relative;overscroll-behavior:contain}
.tl-hd{position:sticky;top:0;z-index:3;display:flex;background:var(--panel);border-bottom:1px solid var(--line)}
.tl-corner{position:sticky;left:0;z-index:4;background:var(--panel);flex:none;padding:8px 10px;font-size:12px;color:var(--muted);border-right:1px solid var(--line);display:flex;align-items:flex-end}
.tl-scale{position:relative;height:50px;flex:none}
.tl-mos,.tl-tks{position:absolute;left:0;right:0}
.tl-mos{top:0;height:24px}
.tl-tks{top:24px;height:26px}
.tl-mo{position:absolute;top:4px;font-size:12px;font-weight:600;padding-left:6px;border-left:1px solid var(--line);white-space:nowrap;text-transform:capitalize;height:20px}
.tl-tk{position:absolute;top:0;height:26px;font-size:11px;color:var(--muted);border-left:1px solid var(--line);padding:4px 0 0 4px;white-space:nowrap;overflow:hidden;display:flex;gap:2px;align-items:baseline}
.tl-tk small{font-size:9px;opacity:.8}
.tl-tk.we{background:rgba(0,0,0,.03)}
.tl-body{position:relative}
.tl-bg{position:absolute;top:0;bottom:0;pointer-events:none}
.tl-we{position:absolute;top:0;bottom:0;background:rgba(0,0,0,.035)}
.tl-today{position:absolute;top:0;bottom:0;width:2px;background:#ff5a5a;z-index:1}
.tl-grp{height:30px;display:flex;background:var(--panel);border-top:1px solid var(--line)}
.tl-glab{position:sticky;left:0;z-index:2;background:var(--panel);display:flex;align-items:center;gap:6px;padding:0 10px;font-weight:600;font-size:13px;flex:none;border-right:1px solid var(--line)}
.tl-row{height:36px;display:flex;border-top:1px solid color-mix(in srgb,var(--line) 50%,transparent)}
.tl-lab{position:sticky;left:0;z-index:2;background:var(--card);flex:none;display:flex;align-items:center;gap:6px;padding:0 10px;text-align:left;border-right:1px solid var(--line);min-width:0}
.tl-lab:hover{background:var(--hover)}
.tl-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
.tl-t.done{text-decoration:line-through;color:var(--muted)}
.tl-track{position:relative;flex:none}
.tl-bar{position:absolute;top:6px;height:24px;border-radius:6px;color:#fff;font-size:12px;font-weight:600;display:flex;align-items:center;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.25);z-index:2;touch-action:none;user-select:none;-webkit-user-select:none;min-width:8px}
.tl-bar.done{opacity:.6}
.tl-bar.late{box-shadow:0 0 0 2px #ff5a5a}
.tl-bar.dragging{cursor:grabbing;opacity:.85}
.tl-bt{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;padding:0 8px;pointer-events:none}
.tl-h{width:8px;align-self:stretch;cursor:ew-resize;flex:none}
.tl-h.l{border-radius:6px 0 0 6px}
.tl-h.r{border-radius:0 6px 6px 0}
.tl-bar:hover .tl-h{background:rgba(255,255,255,.35)}
.tl-deps{position:absolute;top:0;pointer-events:none;z-index:1;overflow:visible;color:#7a8599}
.tl-deps .dep{fill:none;stroke:currentColor;stroke-width:1.6}
.tl-deps .dep.bad{stroke:#d64545;color:#d64545;stroke-dasharray:4 3}
.tl-empty{padding:30px;color:var(--muted)}
.tl-und{background:var(--card);border-radius:10px;padding:8px 12px;display:flex;flex-wrap:wrap;gap:6px 12px;align-items:center;font-size:13px;max-height:110px;overflow:auto}
.tl-uc{display:inline-flex;align-items:center}

/* Liste (tableau) */
.tbl-tools{display:flex;gap:10px;align-items:center;margin-bottom:10px;color:#fff;flex-wrap:wrap}
.cell{border:1px solid transparent;background:transparent;border-radius:6px;padding:3px 4px;max-width:160px;font-size:13px}
.cell:hover,.cell:focus{border-color:var(--line);background:var(--card)}
.cell.late{color:#d64545;font-weight:600}
.quick-done.static{position:static;opacity:1}
.chips.nowrap{flex-wrap:nowrap}

/* Mon travail */
.mywork{height:100%;overflow:auto;padding:16px;max-width:980px;margin:0 auto}
.mw-head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;color:#fff;margin-bottom:12px}
.mw-head h2{margin:0;font-size:26px;letter-spacing:-.02em}
.muted.light{color:rgba(255,255,255,.85)}
.mw-sec{background:var(--card);border-radius:12px;padding:10px 12px;margin-bottom:12px}
.mw-sec h3{margin:2px 4px 8px;font-size:15px}
.mw-sec.late h3{color:#d64545}
.mw-row{display:flex;align-items:center;gap:10px;padding:6px 4px;border-top:1px solid var(--line)}
.mw-row:first-of-type{border-top:0}
.mw-row input{width:18px;height:18px;flex:none}
.mw-main{flex:1;min-width:0;text-align:left;display:flex;flex-direction:column;border-radius:6px;padding:2px 4px}
.mw-main:hover{background:var(--hover)}
.mw-t{font-weight:500}
.mw-row.done .mw-t{text-decoration:line-through;color:var(--muted)}
.mw-sub{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;flex-wrap:wrap}

/* Ma journée */
.myday{height:100%;display:grid;grid-template-columns:minmax(240px,1fr) minmax(320px,1.4fr) minmax(240px,1fr);gap:12px;padding:12px 14px 14px}
.md-col{background:var(--list);border-radius:12px;padding:10px;display:flex;flex-direction:column;min-height:0}
.md-h{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.md-h h3{margin:0;font-size:15px;display:flex;align-items:center;gap:6px}
.md-date::first-letter{text-transform:uppercase}
.md-list{overflow-y:auto;display:flex;flex-direction:column;gap:6px;flex:1;min-height:40px;padding:2px}
.ib-item{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:8px;padding:6px 8px;box-shadow:var(--shadow);cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.ib-item input{width:17px;height:17px;flex:none}
.ib-main{flex:1;min-width:0;text-align:left;display:flex;flex-direction:column}
.ib-main>span:first-child{overflow-wrap:anywhere}
.card-src.planned{opacity:.6}
.pl{flex:1;overflow-y:auto;background:var(--card);border-radius:10px;min-height:200px}
.pl-grid{position:relative;margin:12px 6px 12px 52px}
.pl-h{position:absolute;left:-52px;right:0;border-top:1px solid var(--line);height:0}
.pl-h span{position:absolute;left:4px;top:-8px;font-size:11px;color:var(--muted);background:var(--card);padding:0 3px}
.pl-now{position:absolute;left:-6px;right:0;height:2px;background:#ff5a5a;z-index:3}
.pl-now::before{content:"";position:absolute;left:-4px;top:-4px;width:10px;height:10px;border-radius:50%;background:#ff5a5a}
.pl-b{position:absolute;left:4px;right:4px;border-radius:8px;color:#fff;padding:4px 26px 4px 8px;display:flex;gap:6px;align-items:flex-start;overflow:hidden;cursor:grab;box-shadow:0 1px 3px rgba(0,0,0,.25);z-index:2;touch-action:none;user-select:none;-webkit-user-select:none}
.pl-b.done{opacity:.55}
.pl-b.done b{text-decoration:line-through}
.pl-b input{margin-top:2px;flex:none;accent-color:#fff}
.pl-bt{display:flex;flex-direction:column;min-width:0;font-size:12px;line-height:1.3}
.pl-bt b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-bt span{opacity:.9}
.pl-x{position:absolute;top:3px;right:3px;width:20px;height:20px;border-radius:5px;color:#fff;display:grid;place-items:center;opacity:.7}
.pl-x:hover{background:rgba(255,255,255,.25);opacity:1}
.pl-rs{position:absolute;left:0;right:0;bottom:0;height:7px;cursor:ns-resize}
.pl-rs:hover{background:rgba(255,255,255,.3)}
.pl-hint{position:absolute;left:4px;right:4px;border:2px dashed var(--focus);border-radius:8px;background:color-mix(in srgb,var(--focus) 12%,transparent);font-size:12px;font-weight:700;color:var(--focus);padding:2px 6px;pointer-events:none;z-index:4}
.btn.ai.sm{min-height:28px}

/* Détail : champs, checklists, commentaires */
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.fcell h5{margin:0 0 4px;font-size:12px;color:var(--muted);font-weight:600}
.fcell .field{width:100%}
.fcell .row-flex .field{flex:1}
.ckl{background:color-mix(in srgb,var(--card) 50%,transparent);border-radius:10px;padding:8px;margin-bottom:10px}
.ckl-h{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.ckl-t{flex:1;font-weight:600;border:0;background:transparent;padding:4px 6px;border-radius:5px;min-width:0}
.ckl-t:focus{background:var(--card);outline:2px solid var(--focus)}
.ckl.dropb{outline:2px dashed var(--focus)}
.ck{border-radius:6px}
.ck.dropb{box-shadow:inset 0 2px 0 var(--focus)}
.ck.dragging{opacity:.4}
.grip{color:var(--muted);cursor:grab;display:grid;place-items:center;opacity:.5;flex:none}
.ck:hover .grip{opacity:1}
.ck-m{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:var(--muted);flex:none}
.ck-m:hover{background:var(--hover)}
.ck-d{position:relative;display:inline-flex;align-items:center;gap:3px;font-size:12px;color:var(--muted);padding:3px 6px;border-radius:6px;cursor:pointer;flex:none;white-space:nowrap}
.ck-d:hover{background:var(--hover)}
.ck-d.set{background:var(--hover);color:var(--text)}
.ck-d.late{background:#d64545;color:#fff}
.ck-d input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%}
.mdv{line-height:1.55;overflow-wrap:anywhere;cursor:text}
.mdv p{margin:0 0 8px}
.mdv h3,.mdv h4,.mdv h5{margin:10px 0 6px}
.mdv ul,.mdv ol{margin:0 0 8px;padding-left:22px}
.mdv ul.tasks{list-style:none;padding-left:4px}
.mdv .tbox{display:inline-block;width:13px;height:13px;border:2px solid var(--muted);border-radius:3px;margin-right:6px;vertical-align:-2px}
.mdv .tbox.on{background:var(--ok);border-color:var(--ok)}
.mdv code{background:var(--hover);border-radius:4px;padding:0 4px;font-size:.92em}
.mdv pre{background:var(--hover);border-radius:8px;padding:10px;overflow:auto}
.mdv blockquote{margin:0 0 8px;padding-left:10px;border-left:3px solid var(--line);color:var(--muted)}
.mdv hr{border:0;border-top:1px solid var(--line)}
.mdv:not(.txt){background:var(--card);border-radius:8px;padding:10px 12px}
.mention{background:color-mix(in srgb,var(--focus) 18%,transparent);color:var(--focus);border-radius:4px;padding:0 3px;font-weight:600}
.cmt-box{position:relative}
.mention-pop{position:absolute;left:8px;top:100%;z-index:5;background:var(--card);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.25);padding:4px;min-width:200px}
.mention-pop .item{display:flex;gap:8px;align-items:center;width:100%;padding:6px 8px;border-radius:6px;text-align:left}
.mention-pop .item:hover,.mention-pop .item:first-child{background:var(--hover)}
.reacts{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.react{font-size:12px;padding:1px 7px;border-radius:10px;background:var(--card);border:1px solid var(--line);min-height:24px}
.react.on{border-color:var(--focus);background:color-mix(in srgb,var(--focus) 12%,var(--card))}
.react.add{color:var(--muted);opacity:0}
.cmt:hover .react.add,.react.add:focus-visible{opacity:1}
@media (hover:none){.react.add{opacity:1}}
.react.big{font-size:20px;padding:4px 6px;border:0;background:transparent}
.react.big:hover{background:var(--hover)}
.live-txt{color:#2f9a5e;font-weight:600}
.att.tight{padding:6px 10px;gap:8px}
.chip.sm{padding:2px 8px;min-height:24px;font-size:12px}
.chips.pad,.fields.pad,.pad{padding:0 8px 6px}

/* Popovers : notifications, types */
.pop.notifs{width:380px;padding:6px}
.np-h{display:flex;align-items:center;justify-content:space-between;padding-right:6px}
.np{display:flex;flex-direction:column;gap:2px;max-height:min(520px,calc(100vh - 120px));overflow:auto}
.np-i{display:flex;gap:10px;text-align:left;padding:8px;border-radius:8px;align-items:flex-start}
.np-i:hover{background:var(--hover)}
.np-i.unread{background:color-mix(in srgb,var(--focus) 10%,transparent)}
.np-ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;color:#fff;flex:none}
.np-ic.late{background:#d64545}.np-ic.soon{background:#e3b505;color:#1c2233}
.np-t{display:flex;flex-direction:column;gap:2px;font-size:13px;min-width:0}
.np-ex{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.swatch.sm{width:24px;height:20px}
.swatch.lg{width:54px;height:40px}
.swatch.none{background:var(--hover);display:grid;place-items:center;color:var(--muted)}
.swatch.custom{background:conic-gradient(red,yellow,lime,cyan,blue,magenta,red);position:relative;overflow:hidden;cursor:pointer}
.swatch.custom input{position:absolute;inset:0;opacity:0;cursor:pointer}
.bgprev{height:120px;border-radius:10px;background-size:cover;background-position:center;margin-top:10px}

/* Mes tableaux */
.modal.wide{max-width:1000px}
.bsec{display:flex;align-items:center;gap:6px;margin:18px 0 8px;font-size:15px}
.bgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.btile{position:relative;height:96px;border-radius:10px;overflow:hidden;background-size:cover;background-position:center;color:#fff}
.btile::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.05),rgba(0,0,0,.45))}
.btile.cur{box-shadow:0 0 0 3px var(--focus)}
.bt-main{position:absolute;inset:0;padding:10px 12px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;color:#fff}
.bt-main b{font-size:16px;letter-spacing:-.01em;text-shadow:0 1px 2px rgba(0,0,0,.3)}
.bt-main span{font-size:12px;opacity:.95}
.bt-main .lt{background:#d64545;border-radius:4px;padding:0 5px}
.bt-star{position:absolute;right:6px;top:6px;width:28px;height:28px;border-radius:6px;display:grid;place-items:center;color:#fff;opacity:0}
.btile:hover .bt-star,.bt-star.on,.bt-star:focus-visible{opacity:1}
.bt-star.on{color:#ffd166}
.bt-star:hover{background:rgba(255,255,255,.2)}
@media (hover:none){.bt-star{opacity:1}}
.btile.new{background:var(--hover);color:var(--text);display:flex;align-items:center;justify-content:center;gap:6px;font-weight:600}
.btile.new::before{display:none}
.closed-list{margin-top:8px}

/* Automatisations */
.ai-rule{display:flex;gap:8px;align-items:stretch;margin-bottom:4px}
.ai-rule textarea{resize:vertical;min-height:52px}
.auto-it{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:10px;padding:10px 12px;margin-bottom:8px}
.auto-it .grow{display:flex;flex-direction:column;gap:2px}
.auto-it .grow b{display:flex;align-items:center;gap:6px}
.auto-it .grow .muted{font-size:13px}
.auto-it.off{opacity:.55}
.auto-it.sug{background:color-mix(in srgb,var(--card) 60%,transparent);border:1px dashed var(--line)}
.switch{position:relative;width:38px;height:22px;flex:none;cursor:pointer}
.switch input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.switch span{position:absolute;inset:0;background:var(--line);border-radius:11px;transition:background .15s;pointer-events:none}
.switch span::after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s}
.switch input:checked+span{background:var(--ok)}
.switch input:checked+span::after{transform:translateX(16px)}
.switch input:focus-visible+span{outline:2px solid var(--focus);outline-offset:2px}
.aed{display:flex;flex-direction:column;gap:8px}
.arow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;background:var(--card);border-radius:8px;padding:8px}
.anum{width:22px;height:22px;border-radius:50%;background:var(--focus);color:#fff;font-size:12px;font-weight:700;display:grid;place-items:center;flex:none}
.trow .fields{gap:6px}
.fdef{background:var(--card);border-radius:10px;padding:10px;margin-bottom:8px}
.opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;align-items:center}
.opt{display:inline-flex;align-items:center;gap:4px}
.opt .field{width:130px;min-height:30px;padding:3px 6px}
.sw.sm{width:22px;height:22px;border-radius:5px;flex:none}
.gs-res .gen-item{align-items:center}

@media (max-width:1100px){
  .myday{grid-template-columns:1fr 1.3fr;grid-template-rows:auto}
  .myday .todo{grid-column:1/-1;max-height:320px}
}
@media (max-width:760px){
  .myday{grid-template-columns:1fr;overflow-y:auto;height:auto;min-height:100%}
  .myday .md-col{max-height:none}
  .myday .agenda .pl{max-height:60vh}
  .view{overflow:auto}
  .pop.notifs{width:calc(100vw - 16px)}
  .ai-rule{flex-direction:column}
}
@media (max-width:640px){
  .tabs .tsep{display:none}
  .online{display:none}
  .tl-tools .status,.cal-head .status{display:none}
  .bulk{left:8px;right:8px;transform:none;bottom:8px}
  .bulk .field{flex:1;min-width:120px}
}

/* Impression */
.print-card{display:none}
@media print{
  html,body{height:auto;overflow:visible;background:#fff!important;color:#000}
  body{background-image:none!important}
  .top,.fbar,.bulk,.toast,.pop,.overlay,.quick-done,.quick-edit,.add-row,.new-list,.composer,.tl-tools,.cal-head button,.tbl-tools{display:none!important}
  .view,.board,.stats,.tablewrap,.tl,.mywork{overflow:visible!important;height:auto!important}
  .board{flex-wrap:wrap;align-items:flex-start}
  .list{break-inside:avoid;max-height:none;border:1px solid #ccc;background:#fff}
  .cards{overflow:visible}
  .card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}
  body.printing-card #app,body.printing-card .overlay,body.printing-card .toast{display:none!important}
  body.printing-card .print-card{display:block;padding:10mm;font-size:12pt}
}

body:has(.bulk) .toast{bottom:calc(96px + env(safe-area-inset-bottom,0px))}
@media (max-width:1500px) and (min-width:641px){.top .lbl{display:none}}

/* ================= v4 ================= */
.badge .tm,.cal-chip .tm{font-weight:700}
.cal-chip .tm{opacity:.9;margin-right:2px}
.mtools{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.mtools .mt{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:72px;padding:9px 8px;border-radius:10px;background:var(--card);box-shadow:var(--shadow);font-size:12px;font-weight:600;color:var(--text);cursor:pointer}
.mtools .mt:hover{background:var(--hover)}
.mtools .mt svg{width:20px;height:20px;color:var(--focus)}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:6px;margin-bottom:8px}
.gthumb{position:relative;aspect-ratio:1;border-radius:8px;background:#20242e center/cover no-repeat;overflow:hidden;display:grid;place-items:center;color:#fff}
.gthumb:hover{filter:brightness(.92)}
.gthumb.aud{background:linear-gradient(135deg,#5b3fd1,#1f9c9c);display:flex;flex-direction:column;gap:4px;padding:6px}
.gic{width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.45);display:grid;place-items:center}
.gic svg{width:18px;height:18px}
.gname{font-size:10.5px;line-height:1.2;text-align:center;word-break:break-word}
.gpins{position:absolute;top:4px;right:4px;background:#ff5a5a;color:#fff;font-size:10px;font-weight:700;border-radius:9px;min-width:18px;height:18px;display:grid;place-items:center}
.gcover{position:absolute;left:4px;bottom:4px;background:rgba(0,0,0,.6);color:#fff;font-size:10px;padding:1px 5px;border-radius:4px}
.att.slink .th.prov{color:#fff;font-size:20px;font-weight:800}
.linkish.strong{font-weight:600;text-align:left;color:var(--focus);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.link.on,.btn.on,[data-c="dictdesc"].on,[data-c="dictcmt"].on{color:#fff!important;background:#d64545!important;border-radius:6px;animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.65}}
.appr{border-left:4px solid var(--ac);background:var(--card);border-radius:8px;padding:10px 12px}
.appr-note{margin:8px 0 4px;white-space:pre-wrap}
.appr .act-item{font-size:13px;margin-top:6px}
.tlog{display:flex;flex-direction:column;gap:3px;margin:4px 0 6px}
.tlog-i{display:flex;gap:8px;align-items:center;font-size:12.5px;color:var(--muted)}
.tlog-i b{color:var(--text)}
.tag{font-size:10.5px;background:var(--hover);border-radius:4px;padding:0 5px;color:var(--text)}
.kpi-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.kpi-row>div{flex:1;min-width:90px;background:var(--panel);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column}
.kpi-row b{font-size:16px;white-space:nowrap}
.tbl.mini{width:100%;border-collapse:collapse;font-size:13px}
.tbl.mini th,.tbl.mini td{padding:5px 6px;border-bottom:1px solid var(--line);text-align:left}
/* Visionneuse */
.overlay.viewer{background:#0b0e15;padding:0;align-items:stretch;z-index:80}
.vw{display:flex;flex-direction:column;width:100%;height:100%;color:#fff}
.vw-top{display:flex;align-items:center;gap:8px;padding:10px 12px;padding-top:max(10px,env(safe-area-inset-top,0px));flex-wrap:wrap}
.vw-top .muted,.muted.light{color:rgba(255,255,255,.65)}
.vw-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:50vw}
.vw-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;position:relative;padding:8px 52px}
.vw-stage video,.vw-stage iframe{max-width:100%;max-height:100%;border:0;border-radius:6px}
.vw-stage iframe{width:100%;height:100%;background:#fff}
.vw-img{position:relative;max-width:100%;max-height:100%;display:inline-block}
.vw-img img{display:block;max-width:calc(100vw - 110px);max-height:calc(100vh - 170px);border-radius:4px;user-select:none}
.vw-img.annot img{cursor:crosshair;outline:2px dashed #ffd24a;outline-offset:3px}
.pin{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;border-radius:50%;background:#ff5a5a;color:#fff;font-size:12px;font-weight:800;display:grid;place-items:center;box-shadow:0 0 0 2px #fff,0 2px 6px rgba(0,0,0,.5);pointer-events:none}
.pin.static{position:static;transform:none;flex:none}
.vw-nav{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center}
.vw-nav:hover{background:rgba(255,255,255,.28)}
.vw-nav.l{left:6px}.vw-nav.r{right:6px}
.vw-pins{max-height:26vh;overflow:auto;padding:8px 14px 14px;display:flex;flex-direction:column;gap:6px;background:rgba(255,255,255,.05)}
.vw-pin{display:flex;gap:8px;align-items:center}
.vw-aud{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:560px;width:100%;text-align:center}
.vw-aud>svg{width:48px;height:48px;opacity:.8}
.vw-aud audio{width:100%}
.vw-tr{background:rgba(255,255,255,.08);border-radius:10px;padding:10px 14px;text-align:left;width:100%;max-height:40vh;overflow:auto}
.vw-tr h4{margin:0 0 6px}
.vw .tbtn{background:rgba(255,255,255,.14)}
.icon-btn.light{color:#fff}
.linkish.light{color:#fff}
@media (max-width:640px){.lbl2{display:none}.vw-stage{padding:8px}.vw-nav{width:36px;height:36px}.vw-img img{max-width:calc(100vw - 16px)}}
/* Scanner de document */
.ds-pages{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.ds-pg{position:relative;width:110px;height:150px;border-radius:6px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}
.ds-pg img{width:100%;height:100%;object-fit:contain}
.ds-pg span{position:absolute;left:4px;bottom:4px;background:rgba(0,0,0,.6);color:#fff;font-size:11px;padding:0 6px;border-radius:4px}
.ds-pg .icon-btn{position:absolute;top:2px;right:2px;background:rgba(0,0,0,.55);color:#fff}
.ds-add{width:110px;height:150px;border:2px dashed var(--line);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--muted);font-size:12.5px;font-weight:600;padding:6px;text-align:center}
.ds-add:hover{border-color:var(--focus);color:var(--focus)}
.ds-edit{display:flex;justify-content:center;background:#20242e;border-radius:8px;padding:12px}
.ds-canvas{position:relative;display:inline-block;touch-action:none}
.ds-canvas canvas{display:block;max-width:100%;max-height:58vh}
.ds-crop{position:absolute;border:2px solid #4f7bff;box-shadow:0 0 0 9999px rgba(0,0,0,.45);pointer-events:none}
.ds-crop i{position:absolute;width:24px;height:24px;border-radius:50%;background:#4f7bff;border:3px solid #fff;pointer-events:auto;touch-action:none;cursor:grab}
.ds-crop i[data-h="tl"]{left:-12px;top:-12px}.ds-crop i[data-h="tr"]{right:-12px;top:-12px}.ds-crop i[data-h="bl"]{left:-12px;bottom:-12px}.ds-crop i[data-h="br"]{right:-12px;bottom:-12px}
.ds-canvas{overflow:hidden}
/* Mémo vocal */
.vm{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.vm-rec{width:76px;height:76px;border-radius:50%;background:#d64545;color:#fff;display:grid;place-items:center;box-shadow:0 4px 14px rgba(214,69,69,.4)}
.vm-rec svg{width:32px;height:32px}
.vm-rec.on{animation:pulse 1.2s infinite;box-shadow:0 0 0 8px rgba(214,69,69,.25)}
.vm-t{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}
.vm textarea{width:100%}
/* QR */
.qr-box{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.qr-box svg{width:170px;height:170px;background:#fff;border-radius:8px;padding:4px;flex:none}
.qr-box>div{flex:1;min-width:180px}
.scan-wrap{position:relative;border-radius:10px;overflow:hidden;background:#000;aspect-ratio:4/3;margin-bottom:8px}
.scan-wrap video{width:100%;height:100%;object-fit:cover;display:block}
.scan-frame{position:absolute;inset:18% 22%;border:3px solid rgba(255,255,255,.9);border-radius:14px;box-shadow:0 0 0 9999px rgba(0,0,0,.35)}
.scan-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.scan-opts{display:flex;flex-direction:column;gap:6px;margin-top:10px}
/* Signature */
.sig-pad{position:relative;height:190px;margin:12px 0;border:2px dashed var(--line);border-radius:10px;background:#fff;touch-action:none}
.sig-pad canvas{width:100%;height:100%;display:block;cursor:crosshair}
.sig-hint{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#9aa3b5;pointer-events:none;font-size:18px}
/* Formulaires */
.overlay.form-view{background:var(--panel);padding:0;z-index:75;align-items:flex-start}
.fv{width:100%;min-height:100%;display:flex;flex-direction:column;align-items:center}
.fv-head{width:100%;display:flex;justify-content:space-between;align-items:center;padding:12px 16px;color:#fff;font-weight:700;padding-top:max(12px,env(safe-area-inset-top,0px))}
.fv-body{width:100%;max-width:620px;padding:20px 16px 40px;display:flex;flex-direction:column;gap:12px}
.fv-body h1{margin:0;font-size:26px;letter-spacing:-.02em}
.fv-body label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:14px}
.fv-body .field,.fv-body .desc{font-size:16px}
.fv-photos{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-weight:400}
.fv-send{align-self:flex-start;padding:10px 26px;font-size:16px}
.fv-thanks{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:40px 0}
.fv-thanks>svg{width:56px;height:56px;color:var(--ok)}
.kiosk .fv-body{max-width:760px}
.kiosk .fv-body h1{font-size:32px}
/* Vue client */
.clientbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 14px;background:rgba(255,255,255,.92);color:#1c2230;font-size:13.5px}
.clientbar b{display:inline-flex;align-items:center;gap:6px}
.cb-prog{width:140px;height:8px;border-radius:4px;background:#dfe3ea;overflow:hidden}
.cb-prog span{display:block;height:100%;background:#2f9a5e}
.clientbar .fchip{background:#1c2230;color:#fff}
/* Étiquettes QR */
.print-labels{display:none}
@media print{
  body.printing-labels #app,body.printing-labels .overlay,body.printing-labels .toast{display:none!important}
  body.printing-labels .print-labels{display:grid!important;grid-template-columns:repeat(2,1fr);gap:6mm;padding:4mm}
  .print-labels .lbl{display:flex;gap:4mm;align-items:center;border:1px dashed #999;border-radius:3mm;padding:3mm;break-inside:avoid;color:#000;font-family:system-ui,sans-serif}
  .print-labels .lbl svg{width:32mm;height:32mm;flex:none}
  .print-labels .lbl div{display:flex;flex-direction:column;gap:1mm;font-size:10pt}
  .print-labels .lbl b{font-size:12pt}
}
.cards>*{flex-shrink:0}
.fv-body .field,.fv-body .desc,.fv-body select{font-weight:400}
.gitem{position:relative}
.gitem .gthumb{width:100%}
.gdel{position:absolute;top:4px;left:4px;width:28px;height:28px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;display:grid;place-items:center;opacity:0;transition:opacity .15s}
.gdel svg{width:15px;height:15px}
.gitem:hover .gdel,.gdel:focus-visible{opacity:1}
.gdel:hover{background:#d64545}
@media (hover:none){.gdel{opacity:1}}

/* ===== Déclic : écrans de connexion, bandeau, panneau compte ===== */
body{display:flex;flex-direction:column}
#app{height:auto;flex:1;min-height:0}
#app[hidden],#dc-root[hidden],#dc-bar[hidden]{display:none!important}
#dc-root{flex:1;overflow:auto;background:linear-gradient(135deg,#2946d6 0%,#6a3fd1 55%,#1f9c9c 100%)}
.dc-screen{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top)) 16px 24px}
.dc-card{width:100%;max-width:420px;background:var(--list);color:var(--text);border-radius:16px;padding:26px 24px 22px;box-shadow:0 20px 60px rgba(10,14,40,.35)}
.dc-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:22px;letter-spacing:-.03em;margin-bottom:14px}
.dc-card h1{font-size:22px;margin:0 0 14px;letter-spacing:-.02em}
.dc-card form{display:flex;flex-direction:column;gap:12px}
.dc-card label,.dc-panel label{display:flex;flex-direction:column;gap:5px;font-weight:600;font-size:13.5px}
.dc-card input,.dc-panel input,.dc-panel select{font:inherit;font-weight:400;font-size:16px;padding:10px 12px;border-radius:9px;border:1px solid var(--line);background:var(--card);color:var(--text);min-width:0}
.dc-card input:focus,.dc-panel input:focus,.dc-panel select:focus{outline:2px solid var(--focus);outline-offset:0;border-color:transparent}
.dc-btn{background:var(--focus);color:#fff;border-radius:9px;padding:11px 16px;font-weight:700;font-size:15px;cursor:pointer;border:0;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.dc-btn:hover{filter:brightness(1.07)}
.dc-btn:disabled{opacity:.6;cursor:default}
.dc-btn.is-busy::before{content:"";width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:dcspin .8s linear infinite}
.dc-btn.sm{padding:8px 13px;font-size:14px}
.dc-btn.dc-ghost{background:var(--hover);color:var(--text)}
.dc-btn.danger{background:var(--danger)}
.dc-link{background:none;border:0;color:var(--focus);font-weight:600;cursor:pointer;padding:4px 0;font-size:13.5px;text-align:left;text-decoration:underline;text-underline-offset:2px}
.dc-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:6px}
.dc-tabs{display:flex;background:var(--hover);border-radius:10px;padding:3px;margin-bottom:14px}
.dc-tabs button{flex:1;padding:8px;border-radius:8px;font-weight:600;color:var(--muted);border:0;background:none;cursor:pointer}
.dc-tabs button.on{background:var(--card);color:var(--text);box-shadow:var(--shadow)}
.dc-small{font-size:13px;color:var(--muted);margin:0}
.dc-small a,.dc-foot a{color:inherit}
.dc-err{color:var(--danger);font-weight:600;font-size:14px;min-height:0}
.dc-err:empty{display:none}
.dc-note{background:var(--card);border-left:4px solid var(--focus);border-radius:8px;padding:10px 12px;font-size:14px;margin-bottom:12px}
.dc-note.ok{border-left-color:var(--ok)}
.dc-foot{color:rgba(255,255,255,.85);font-size:13px;margin-top:16px;text-align:center}
.dc-loading{display:flex;align-items:center;gap:10px;color:var(--muted);padding:10px 0}
.dc-spin{width:18px;height:18px;border:2px solid var(--line);border-top-color:var(--focus);border-radius:50%;animation:dcspin .8s linear infinite}
@keyframes dcspin{to{transform:rotate(360deg)}}
.dc-toast{position:fixed;left:50%;bottom:calc(18px + env(safe-area-inset-bottom));transform:translateX(-50%);background:#1c2233;color:#fff;border-radius:10px;padding:10px 16px;z-index:200;box-shadow:0 8px 24px rgba(0,0,0,.35);max-width:calc(100vw - 24px);font-size:14px}
/* Bandeau */
#dc-bar{flex:none;padding:7px 14px;font-size:13.5px;display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;text-align:center}
#dc-bar.warn{background:#ffe9a8;color:#3d2e00}
#dc-bar.bad{background:#d64545;color:#fff}
#dc-bar button{background:rgba(0,0,0,.14);color:inherit;border:0;border-radius:6px;padding:4px 10px;font-weight:700;cursor:pointer}
/* Panneau */
.dc-overlay{position:fixed;inset:0;z-index:120;background:var(--overlay);display:flex;justify-content:center;align-items:flex-start;overflow-y:auto;padding:max(24px,env(safe-area-inset-top)) 10px 24px}
.dc-panel{position:relative;background:var(--list);color:var(--text);width:100%;max-width:640px;border-radius:14px;padding:18px 18px 22px;margin:auto 0}
.dc-x{position:absolute;top:10px;right:12px;font-size:24px;line-height:1;background:none;border:0;color:var(--muted);cursor:pointer;width:32px;height:32px;border-radius:8px}
.dc-x:hover{background:var(--hover)}
.dc-ptabs{display:flex;gap:4px;flex-wrap:wrap;margin:0 36px 12px 0}
.dc-ptabs button{padding:7px 11px;border-radius:8px;font-weight:600;color:var(--muted);background:none;border:0;cursor:pointer;font-size:14px}
.dc-ptabs button.on{background:var(--card);color:var(--text);box-shadow:var(--shadow)}
.dc-pbody{display:flex;flex-direction:column;gap:10px}
.dc-pbody h2{margin:4px 0 4px;font-size:19px}
.dc-pbody h3{margin:12px 0 0;font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.dc-pbody h3.danger{color:var(--danger)}
.dc-pbody .dc-btn{align-self:flex-start}
.dc-row{display:flex;gap:12px;align-items:center}
.dc-av{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;flex:none}
.dc-av.sm{width:32px;height:32px;font-size:12.5px}
.dc-av.sq{border-radius:8px;background:var(--focus)}
.dc-muted{color:var(--muted);font-size:13px}
.dc-sw{display:flex;gap:6px;flex-wrap:wrap}
.dc-sw button{width:28px;height:28px;border-radius:50%;border:0;cursor:pointer}
.dc-sw button.on{box-shadow:0 0 0 2px var(--list),0 0 0 4px var(--text)}
.dc-list{display:flex;flex-direction:column;gap:6px}
.dc-mrow{display:flex;align-items:center;gap:10px;background:var(--card);border-radius:10px;padding:8px 10px;flex-wrap:wrap}
.dc-grow{flex:1;min-width:140px}
.dc-mrow select{font-size:14px;padding:6px 8px}
.dc-icon{background:none;border:0;color:var(--muted);font-size:20px;width:30px;height:30px;border-radius:8px;cursor:pointer}
.dc-icon:hover{background:var(--hover);color:var(--danger)}
.dc-pill{font-size:12.5px;font-weight:700;border-radius:20px;padding:3px 10px;background:var(--hover);white-space:nowrap}
.dc-pill.ok{background:#d8f3e3;color:#17603a}
.dc-pill.warn{background:#ffe9a8;color:#5a4300}
.dc-pill.bad{background:#fbdada;color:#8e1f1f}
.dc-kpis{display:flex;gap:8px;flex-wrap:wrap}
.dc-kpis>div{flex:1;min-width:150px;background:var(--card);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px;justify-content:center}
.dc-kpis b{font-size:18px}
.dc-inv{display:flex;gap:6px;flex-wrap:wrap}
.dc-inv input{flex:1;min-width:180px}
.dc-linkbox{display:flex;gap:6px;margin:8px 0}
.dc-linkbox input{flex:1;font-size:13px!important}
.acct-av{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12px;font-weight:700}
@media (max-width:520px){.dc-card{padding:22px 18px}.dc-ptabs button{padding:6px 8px;font-size:13px}}
