/* ——— V2 ——— */
/* DIMAGIN OS · V2 visual layer. Change palette here; business logic remains in app.js. */
:root,[data-theme="dark"]{
 color-scheme:dark;--bg:#0a1020;--nav:#0c1324;--surface:#151d32;--surface2:#1e2941;--surface3:#263450;--line:#2c3854;--line2:#384967;--text:#f8f9ff;--muted:#a5b1ca;--subtle:#7785a3;
 --lime:#a78bfa;--lime2:#8158eb;--violet:#b6a0ff;--blue:#69b9ff;--orange:#ffaf78;--pink:#ffa9c9;--red:#a77df0;--shadow:0 22px 68px #03081260;
 --accent:#8759f5;--accent2:#4d8fff;--green:#5ad762;--grad:linear-gradient(100deg,#9759f9,#6d6bff);--card-glow:#7253df19;--panel-bg:linear-gradient(140deg,#18213a,#131b30);
}
[data-theme="light"]{
 color-scheme:light;--bg:#f5f7fd;--nav:#fff;--surface:#fff;--surface2:#f1f4fc;--surface3:#e9edf9;--line:#e4e9f4;--line2:#d8dfee;--text:#18213b;--muted:#66748f;--subtle:#8b97aa;
 --lime:#7956e9;--lime2:#6146c3;--violet:#7854ed;--blue:#346cf6;--orange:#bd753e;--pink:#d66ba1;--red:#692aa7;--shadow:0 18px 55px #33487913;
 --accent:#8156ea;--accent2:#4981fa;--green:#2e9a36;--grad:linear-gradient(100deg,#925df3,#627bf8);--card-glow:#a19bed10;--panel-bg:linear-gradient(145deg,#fff,#f8faff);
}
html,body{background:var(--bg);color:var(--text)}
/* 2.30.16 (Pierre : « en mobile quand j'appuie sur un bouton du menu, j'ai un carré bleu qui apparaît ») : pas de surlignage du navigateur
   au toucher ; chaque bouton garde son propre retour (survol, appui) et le contour du clavier (focus-visible) reste. */
html{-webkit-tap-highlight-color:transparent}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI','DM Sans',sans-serif;letter-spacing:-.012em}
button,select,input,textarea{font-family:inherit}button{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--accent2);outline-offset:2px}
.layout{grid-template-columns:248px minmax(0,1fr)}
.sidebar{width:auto;background:var(--nav);border-right:1px solid var(--line);padding:30px 15px}
.brand{padding:7px 8px 26px;gap:12px}
/* Logo TrackR : depuis la 2.33.2, la marque de son identité (fond et crochet : base-7.css et LOGO_MARK). */
.brand-icon{display:grid;place-items:center}
.brand-icon,.mobile-logo{place-items:center;padding:0;overflow:hidden;background:linear-gradient(150deg,#2f2670,#120f26)!important;color:#fff!important;box-shadow:0 6px 16px #120f262e,inset 0 0 0 1px #ffffff1f!important;border:0!important;border-radius:12px!important}
.v2-logo{display:block;width:100%;height:100%}
.boot-mark{width:88px;height:88px;padding:0;border-radius:26px;color:#fff;background:linear-gradient(150deg,#2f2670,#120f26);box-shadow:0 18px 40px #120f2640}
.brand-title{font-size:21px;letter-spacing:-.07em;font-weight:800}
.brand-sub{font-size:10px;letter-spacing:.17em;color:var(--muted)}
.sidebar .nav-section-label{color:var(--subtle);letter-spacing:.12em}
.nav-link{border-radius:13px;color:var(--muted);transition:.18s}
.nav-link.active{background:linear-gradient(98deg,#865ced21,#826cdb10);color:var(--text)}
.nav-link.active .i,.nav-link.active span{color:var(--lime)}
.nav-link:hover{background:var(--surface2);color:var(--text)}
.main{padding:0 38px 52px;min-width:0;background:radial-gradient(circle at 90% -7%,#765ad913,transparent 24%),var(--bg)}
.topbar{height:85px;margin-bottom:10px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}
.topbar-title{font-size:20px;letter-spacing:-.04em}.topbar-kicker{color:var(--subtle)}
.header-date{color:var(--muted)}
.btn,.form-input,.form-textarea,.form-select,.filter-select,.field-search{border-radius:13px}
.btn-primary{background:var(--grad)!important;color:#fff!important;border-color:transparent!important;box-shadow:0 8px 21px #7446de30}
.btn-primary:hover{filter:brightness(1.06)}.btn-outline,.btn-ghost,.icon-btn{color:var(--text);background:var(--surface);border-color:var(--line)}
.btn-outline:hover,.btn-ghost:hover{background:var(--surface2)}
.card,.metric,.settings-block{background:var(--surface);border:1px solid var(--line);box-shadow:0 8px 38px #080c2310;border-radius:22px;color:var(--text)}
.card p,.section-sub,.small.muted{color:var(--muted)}
.pill-lime{color:var(--green);background:color-mix(in srgb,var(--green) 11%,transparent)}
.pill-blue{color:var(--blue)}.pill-violet{color:var(--violet)}
.pill-orange{color:var(--orange)}.pill-muted{color:var(--muted)}
.highlight{color:var(--lime)}.progress-fill,.mini-track span{background:var(--grad)}
.progress-track,.mini-track{background:var(--surface3)}
.avatar{position:relative;overflow:hidden;background:linear-gradient(135deg,#f0adba,#7e64ce);color:#fff;font-weight:750;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border:2px solid color-mix(in srgb,var(--lime) 35%,transparent)}
.avatar img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 39%}
.avatar-initials{background:linear-gradient(145deg,#6878d6,#af7bff)}
.theme-switch{display:inline-flex;align-items:center;gap:8px;border-radius:100px;padding:9px 12px;min-height:40px;border:1px solid var(--line2);background:var(--surface);color:var(--text);font-weight:750;font-size:12px;white-space:nowrap;transition:.2s}
.theme-switch:hover{border-color:var(--accent);box-shadow:0 0 0 4px var(--card-glow)}.theme-switch .i{width:17px;height:17px;color:var(--lime)}
[data-theme="light"] .modal,[data-theme="light"] .drawer,[data-theme="light"] .drawer-top,[data-theme="light"] .modal-footer{background:var(--surface)}
.modal,.drawer,.drawer-top,.modal-footer{background:var(--surface)!important;color:var(--text);border-color:var(--line)!important}
.form-input,.form-textarea,.form-select{background:var(--surface2);border:1px solid var(--line2);color:var(--text)}
.form-input::placeholder{color:var(--subtle)}.check-tag,.setting-row{border-color:var(--line);color:var(--text)}
.field-search,.filter-select,.toolbar .form-input{background:var(--surface);color:var(--text);border-color:var(--line2)}
.board{color:var(--text)}
.m-stage-chip{background:var(--surface2);color:var(--text);border-color:var(--line)}
.m-stage-chip.active{background:var(--grad);color:#fff;border-color:transparent}.m-stage-chip.active b{color:#fff}
.m-pipeline-header h2,.page-heading h2{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.055em}
.m-pipeline-header p,.m-list-header span{color:var(--muted)}
.ocr-entry,.lead-advanced{background:var(--surface2);border-color:var(--line)}.lead-advanced>summary{color:var(--lime)}
[data-theme="light"] .login-shell,[data-theme="light"] .login-form-area{background:var(--bg)}
[data-theme="light"] .login-showcase{background:linear-gradient(130deg,#d9d9ff,#e7ecff);color:#202641}
[data-theme="light"] .m-more-item,[data-theme="light"] .m-add-choice{background:var(--surface2);color:var(--text)}
[data-theme="light"] .toast{background:var(--surface);color:var(--text)}
/* Founder home: one responsive component, both phone and desktop */
.v2-eyebrow{color:var(--subtle);font-size:10px;font-weight:780;letter-spacing:.115em;text-transform:uppercase}
.v2-hero-copy h2{font-size:clamp(31px,3.8vw,54px);line-height:1.13;letter-spacing:-.06em;margin:10px 0 12px;font-weight:800}
.v2-hero-copy h2 em{font-style:normal;color:var(--lime)}
.v2-hero-copy p{color:var(--muted);font-size:14px;line-height:1.55;max-width:360px;margin:0}
.v2-founder-photo>.avatar{height:65px;width:65px;border-radius:17px}.v2-founder-crown .i{width:13px;height:13px}
.v2-founder-meta strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v2-founder-meta>span{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v2-mini-progress i,.v2-meter>span{display:block;height:100%;background:var(--grad);border-radius:50px}
.v2-kicker .i{color:var(--lime);width:16px;height:16px}
.v2-mission-copy h3{font-size:clamp(20px,2vw,28px);letter-spacing:-.047em;line-height:1.2;margin:0 0 7px}.v2-mission-copy p{font-size:12px;color:var(--muted);margin:0 0 17px;line-height:1.55}.v2-meter-bottom button{display:flex;align-items:center;gap:4px;border:0;background:transparent;color:var(--lime);font-size:11px;font-weight:800}.v2-meter-bottom .i{width:14px;height:14px}
.v2-kpi-icon .i{height:22px;width:22px}
.v2-mini-kpi>strong{font-size:28px;letter-spacing:-.045em;line-height:1}.v2-mini-kpi>strong>span{font-size:16px;color:var(--muted)}.v2-mini-kpi>small{color:var(--muted);font-size:12px}.kpi-green .v2-meter-sm>i{background:linear-gradient(90deg,#11b877,#37e5a7)}.kpi-blue .v2-meter-sm>i{background:linear-gradient(90deg,#3184f5,#69b7ff)}.kpi-orange .v2-meter-sm>i{background:linear-gradient(90deg,#d38d43,#ffb57a)}
.v2-panel-head h3{margin:0;display:flex;align-items:center;gap:9px;font-size:16px;letter-spacing:-.03em}.v2-panel-head h3 .i{width:18px;height:18px;color:var(--lime)}.v2-quiet-link{display:inline-flex;align-items:center;gap:4px;background:var(--surface2);border:1px solid var(--line);border-radius:30px;color:var(--muted);font-size:10px;font-weight:750;padding:7px 10px}.v2-quiet-link .i{width:12px;height:12px}
.v2-check{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;border:2px solid var(--subtle);flex:0 0 auto}.v2-check .i{width:16px;height:16px}.v2-quest-text strong{font-size:12px;line-height:1.4}.v2-quest-text small{font-size:10px;color:var(--muted)}
.v2-xp-card>strong{font-size:23px;letter-spacing:-.055em}.v2-xp-card>p{font-size:12px;color:var(--muted);margin:8px 0 15px}.v2-streak .i{color:var(--orange);width:18px;height:18px}.v2-streak small{margin-left:auto}.v2-action-card>strong{display:block;font-size:17px;margin-top:15px;line-height:1.4}.v2-action-card button,.v2-duel-shortcut button{background:var(--grad);color:white;border:0;border-radius:13px;padding:12px 15px;display:inline-flex;gap:10px;align-items:center;font-size:11px;font-weight:800}.v2-action-card button .i{height:15px;width:15px}
.v2-duel-shortcut>div{display:flex;flex-direction:column;gap:5px;flex:1}.v2-duel-shortcut strong{font-size:13px}.v2-duel-shortcut small{color:var(--muted);font-size:11px}
.v2-avatar-upload .avatar{width:76px;height:76px;border-radius:18px}.v2-avatar-upload input{font-size:12px;max-width:100%;margin-top:5px}
/* V1.3 components re-themed with V2 tokens: the legacy sheet hardcodes dark/lime colours that broke light mode */
.page{animation:none}.page.page-enter{animation:enter .28s ease}
.overlay.no-anim,.overlay.no-anim .drawer{animation:none}
.brand-icon,.mobile-logo,.bottom-quick{color:#fff}
.btn:hover{background:var(--surface2);border-color:var(--line2)}
.btn-danger{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,transparent);background:color-mix(in srgb,var(--red) 8%,transparent)}
.pill-blue{background:color-mix(in srgb,var(--blue) 12%,transparent)}.pill-violet{background:color-mix(in srgb,var(--violet) 13%,transparent)}.pill-orange{background:color-mix(in srgb,var(--orange) 13%,transparent)}.pill-muted{color:var(--muted);background:var(--surface2)}.pill-lime{border-color:transparent}.pill{white-space:nowrap}
.tag{color:var(--muted);background:var(--surface2);border:1px solid var(--line)}
.pipeline-tab.active{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 45%,transparent);color:var(--text)}
.pipeline-tab-manage small{font-size:11px;color:var(--subtle)}
.kanban-col.dragover{background:color-mix(in srgb,var(--accent) 9%,var(--surface2))}
.task-check{border-color:var(--line2)}.task-check:checked{background:var(--accent);border-color:var(--accent)}.task-check:checked:after{color:#fff}
.form-label{color:var(--muted)}
.check-tag input:checked+span{background:color-mix(in srgb,var(--accent) 12%,transparent);border-color:color-mix(in srgb,var(--accent) 55%,transparent);color:var(--text)}
.timeline-entry{border-left-color:var(--line2)}.timeline-entry:before{background:var(--accent)}.v2-timeline-text{white-space:pre-wrap;color:var(--muted);line-height:1.55;margin:6px 0 0}
.toast{background:var(--surface);border:1px solid color-mix(in srgb,var(--green) 40%,var(--line));color:var(--text);box-shadow:var(--shadow)}.toast.error{background:var(--surface);border-color:color-mix(in srgb,var(--red) 55%,var(--line));color:var(--red)}
.demo-ribbon{display:inline-block;margin-left:6px;padding:1px 7px;font-size:8px;line-height:1.5;vertical-align:1px;color:var(--lime);border-color:color-mix(in srgb,var(--lime) 45%,transparent)}
.topbar{background:color-mix(in srgb,var(--bg) 94%,transparent);border-bottom-color:var(--line)}
.modal-head:before{background:var(--line2)}
.ocr-entry{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:linear-gradient(105deg,color-mix(in srgb,var(--accent) 10%,var(--surface2)),var(--surface2))}
.ocr-entry-icon,.m-add-choice>span,.m-quick-symbol{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--lime)}
.ocr-entry-text small{color:var(--muted)}.ocr-start-btn{background:var(--grad);color:#fff}.ocr-gallery-btn{border-color:var(--line2);color:var(--text);background:var(--surface);display:inline-flex;align-items:center;justify-content:center;gap:7px}
.ocr-review{border-top-color:var(--line)}.ocr-preview{background:var(--surface3)}.ocr-progress-track{background:var(--surface3)}.ocr-status{color:var(--muted)}.ocr-filled{border-color:var(--green)!important}.ocr-result{color:var(--text)}
.m-stage-chip b{color:var(--muted)}.bottom-link.active{background:color-mix(in srgb,var(--accent) 10%,transparent)}
.m-more-item>.i:first-child{color:var(--lime)}
.v2-drawer-title{font:800 clamp(24px,5vw,30px)/1.12 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.05em;margin:12px 0;overflow-wrap:anywhere}
.v2-drawer-actions{margin-top:20px;gap:8px}
.v2-team-card{background:radial-gradient(circle at 100% 0,color-mix(in srgb,var(--accent) 18%,transparent),transparent 55%),var(--panel-bg)}.v2-team-card h3{font:800 20px/1.25 Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:-.04em;margin:12px 0 8px}
.v2-xp-rules{display:grid;gap:2px}.v2-xp-rules>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12px}.v2-xp-rules span{display:flex;align-items:center;gap:8px;color:var(--text)}.v2-xp-rules .i{color:var(--lime)}.v2-xp-rules strong{color:var(--green);font-size:12px;white-space:nowrap}
.v2-form-hint{display:flex;gap:8px;align-items:flex-start;font-size:11px;line-height:1.5;color:var(--muted);background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.v2-form-hint .i{color:var(--green);margin-top:1px}
.v2-readonly{min-height:44px;display:flex;align-items:center;padding:0 13px;border-radius:13px;background:var(--surface3);border:1px solid var(--line);color:var(--text);font-size:13px;font-weight:650}
.v2-swatches{display:flex;flex-wrap:wrap;gap:10px}.v2-swatch{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;cursor:pointer}.v2-swatch input{position:absolute;opacity:0;pointer-events:none}.v2-swatch span{width:34px;height:34px;border-radius:12px;background:var(--swatch);box-shadow:inset 0 0 0 2px color-mix(in srgb,#fff 25%,transparent)}.v2-swatch small{font-size:10px;color:var(--muted)}.v2-swatch input:checked+span{outline:3px solid var(--swatch);outline-offset:3px}.v2-swatch input:focus-visible+span{outline:3px solid var(--accent2);outline-offset:3px}
.avatar-initials{background:linear-gradient(145deg,color-mix(in srgb,var(--avatar,#8b5cf6) 82%,#fff),color-mix(in srgb,var(--avatar,#8b5cf6) 78%,#000));text-shadow:0 1px 2px #0003}
.v2-priority{color:var(--orange);font-weight:750}.v2-overdue{color:var(--red)!important}.v2-ellipsis{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
/* Founder duel: same component readable in both themes */
.duel-person .avatar{border-color:color-mix(in srgb,var(--accent) 50%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 8%,transparent)}.duel-person-b .avatar{border-color:color-mix(in srgb,var(--accent2) 50%,transparent);box-shadow:0 0 0 5px color-mix(in srgb,var(--accent2) 8%,transparent)}
.duel-name .i{color:var(--subtle)}
/* Login / install screens */
.login-showcase{background:radial-gradient(ellipse at 75% 50%,#7c5cf033,transparent 45%),linear-gradient(140deg,#151c34,#0a1020);color:#f8f9ff}
.login-showcase:after{border-color:#a78bfa30;box-shadow:0 0 0 70px #a78bfa08,0 0 0 150px #a78bfa05}
.login-copy p{color:#b8c2dc}.login-copy h1 em,.login-logo span,.login-copy .eyebrow{color:#a78bfa}
[data-theme="light"] .login-copy p{color:#4c5776}[data-theme="light"] .login-copy h1 em,[data-theme="light"] .login-logo span,[data-theme="light"] .login-copy .eyebrow{color:#7956e9}
[data-theme="light"] .login-showcase:after{border-color:#7956e926}
.install-steps .eyebrow{display:block}
/* Carte de visite numérique : le QR reste noir sur blanc dans les deux thèmes, sinon les appareils photo le lisent mal. */
.v2-card-switch{margin:-4px 0 16px}
.v2-vcard{display:grid;gap:14px;justify-items:center;text-align:center}
.v2-vcard-qr{width:min(100%,290px);aspect-ratio:1;display:grid;place-items:center;background:#fff;color:#4a5068;border-radius:20px;padding:8px;box-shadow:0 14px 34px color-mix(in srgb,var(--accent) 18%,transparent)}
.v2-vcard-qr svg{display:block;width:100%;height:100%}
.v2-vcard-hint{margin:0;max-width:36ch;font-size:12px;line-height:1.55;color:var(--muted)}
.v2-vcard-rows{list-style:none;margin:0;padding:0;justify-self:stretch;display:grid;gap:7px;text-align:left}
.v2-vcard-rows li{display:flex;align-items:center;gap:10px;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--surface2);font-size:13px;color:var(--text)}
.v2-vcard-rows li .i{color:var(--accent);flex:0 0 auto}.v2-vcard-rows span{min-width:0;overflow-wrap:anywhere;user-select:text}.v2-vcard-rows small{font-size:11px;color:var(--muted);margin-right:3px}
.v2-extras{display:grid;gap:8px}.v2-extras:empty{display:none}.v2-extra-row{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1fr) minmax(0,1.5fr) 34px;gap:7px;align-items:center}.v2-extra-row .icon-btn{width:34px;height:34px}
.v2-extra-add{display:flex;flex-wrap:wrap;gap:7px}
@media(max-width:600px){.v2-extra-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 34px;padding:8px;border:1px solid var(--line);border-radius:13px;background:var(--surface2)}.v2-extra-row [data-extra-value]{grid-column:1/-1;grid-row:2}}
.v2-vcard .v2-form-hint{margin:0;justify-self:stretch;text-align:left}
.v2-vcard>.v2-bizcard-stage{justify-self:center}
/* Carte virtuelle : un objet « physique », même rendu en clair et en sombre (couleurs propres à la carte, --card = couleur de l'avatar). */
.v2-bizcard-brand b{flex:0 0 auto;width:28px;height:28px;display:grid;place-items:center;border-radius:9px;background:#ffffff24}
.v2-bizcard-who small{font-size:9.5px;font-weight:800;letter-spacing:.15em;text-transform:uppercase;opacity:.75}
.v2-bizcard-who strong{font-size:22px;line-height:1.08;letter-spacing:-.025em;overflow-wrap:anywhere}
.v2-bizcard-who span{font-size:11px;opacity:.82;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.v2-bizcard-info strong{font-size:16px;line-height:1.15;letter-spacing:-.015em;overflow-wrap:anywhere}
.v2-bizcard-info span{font-size:10.5px;color:#5b5878;overflow-wrap:anywhere}
.v2-bizcard-info p{margin:4px 0 0;font-size:10.5px;line-height:1.35;color:#5b5878}
.v2-bizcard-turn .i{color:var(--accent)}
@keyframes bizFloat{0%,100%{transform:rotateX(6deg) rotateY(-7deg) translateY(0)}50%{transform:rotateX(-5deg) rotateY(7deg) translateY(-6px)}}
@keyframes bizFloatSoft{0%,100%{transform:rotateX(2deg) rotateY(-3deg) translateY(0)}50%{transform:rotateX(-1.5deg) rotateY(3deg) translateY(-3px)}}
@keyframes bizSheen{0%{transform:translate(-28%,-12%)}55%,100%{transform:translate(28%,12%)}}
@keyframes bizIn{from{opacity:0;transform:translateY(26px) scale(.94)}}
.v2-field-note{display:block;margin-top:6px;font-size:11px;color:var(--muted)}
.form-label .i{width:13px;height:13px;vertical-align:-2px;color:var(--accent)}
.m-lead-place .i{flex:0 0 auto;color:var(--accent)}.m-lead-place span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-day-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.v2-day-head strong{font-size:30px;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.v2-day-head strong span{font-size:15px;color:var(--muted)}.v2-day-head small{font-size:12px;color:var(--muted);text-align:right}
.v2-day-meter{margin-bottom:16px}
.v2-day-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.v2-day-list li{display:flex;align-items:flex-start;gap:12px;padding:12px;border:1px solid var(--line);border-radius:14px;background:var(--surface2)}
.v2-day-time{min-width:40px;padding-top:1px;font-size:12px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.v2-day-list li>div{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px}
.v2-day-list li strong{font-size:13px}.v2-day-list li strong a{color:var(--text);text-decoration:none}
.v2-day-list li small{flex-basis:100%;font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.v2-day-xp{font-size:10px;font-weight:800;color:var(--accent);white-space:nowrap}
.board{grid-auto-flow:column}
.v2-stage-list{display:grid;gap:7px}
.v2-stage-row{display:flex;align-items:center;gap:11px;padding:10px 11px;border:1px solid var(--line);border-radius:13px;background:var(--surface2)}.v2-stage-row .dot{width:10px;height:10px;flex:0 0 auto}
.v2-stage-name{flex:1;min-width:0;display:grid;gap:2px}.v2-stage-name strong{font-size:13px;overflow-wrap:anywhere}.v2-stage-name small{font-size:10.5px;color:var(--muted)}
.v2-stage-actions{display:flex;gap:5px;flex:0 0 auto}.v2-stage-actions .icon-btn{width:30px;height:30px}.v2-stage-actions .icon-btn:disabled{opacity:.35}
.v2-stage-row.is-hidden{border-style:dashed;background:transparent}.v2-stage-row.is-hidden .dot,.v2-stage-row.is-hidden strong{opacity:.55}.v2-stage-actions .icon-btn.is-off{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.v2-check-row input{width:18px;height:18px;accent-color:var(--accent);flex:0 0 auto}
.v2-push-row span{flex:1;min-width:150px}
.v2-field-note code{font-size:10.5px;overflow-wrap:anywhere;background:var(--surface2);padding:1px 4px;border-radius:5px}
.m-more-card{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))!important}
@media(max-width:860px){
 .two-cols{grid-template-columns:minmax(0,1fr)}
 .layout{display:block}.sidebar{display:none}.main{padding:0 17px calc(94px + env(safe-area-inset-bottom))}.topbar{height:73px;margin:0 -17px 12px;padding:0 17px;background:var(--bg)}
 .topbar-kicker{font-size:9px;letter-spacing:.15em}.topbar-title{font-size:17px}.top-actions{gap:7px}.top-actions .theme-switch{padding:9px;width:40px;height:40px;justify-content:center}.top-actions .theme-switch span{display:none}
 .topbar .top-new-prospect{display:none}.mobile-logo{width:35px;height:35px}.mobile-profile{display:grid}
 .bottom-nav{background:color-mix(in srgb,var(--surface) 89%,transparent)!important;border-top:1px solid var(--line);box-shadow:0 -16px 38px #030b2c15;height:calc(74px + env(safe-area-inset-bottom));padding-inline:4px}
 .bottom-link{color:var(--muted);gap:4px;font-size:10px}.bottom-link .i{height:22px;width:22px}.bottom-link.active{color:var(--lime)}
 .bottom-quick{background:var(--grad)!important;box-shadow:0 8px 25px #834dd451;color:white!important;border-radius:50%!important;width:50px;height:50px;justify-self:center;align-self:center;margin:0}.bottom-quick .i{width:24px;height:24px}.bottom-quick span{display:none}
.v2-hero-copy h2{font-size:clamp(27px,7vw,35px);margin:7px 0}.v2-hero-copy p{font-size:12px;line-height:1.6}
.v2-founder-photo>.avatar{width:56px;height:56px;border-radius:15px}.v2-founder-meta strong{font-size:13px}.v2-founder-meta>span{font-size:10px}
.v2-mission-copy h3{font-size:20px}.v2-mission-copy p{font-size:11px;margin-bottom:11px}
.v2-kpi-icon .i{height:19px;width:19px}.v2-mini-kpi>strong{font-size:22px}.v2-mini-kpi>strong>span{font-size:13px}.v2-mini-kpi>small{font-size:10px}
.v2-xp-card>strong{font-size:18px}.v2-action-card>strong{font-size:14px}.v2-action-card button{padding:10px 11px}.v2-duel-shortcut button{font-size:10px;padding:10px}
 .modal,.drawer,.drawer-top{background:var(--surface)!important}.modal-footer{background:var(--surface)!important}.overlay{background:#020618b8}
 .m-stage-chip.active{background:var(--grad)}
 #toast-stack{left:13px;right:13px;bottom:calc(88px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center}.toast{max-width:100%}
}
@media(max-width:430px){
 .main{padding-left:13px;padding-right:13px}.topbar,.m-pipeline-tabs{margin-inline:-13px;padding-inline:13px}.v2-hero-copy h2{font-size:31px}.v2-founder-photo>.avatar{width:48px;height:48px;border-radius:13px}.v2-founder-meta>span{font-size:9px}.v2-mission-copy h3{font-size:17px}.v2-mission-copy p{font-size:10px;line-height:1.4;margin-bottom:7px}.v2-meter-bottom button{font-size:9px}.v2-mini-kpi>strong{font-size:22px}.v2-mini-kpi>small{font-size:10px}
 .m-stage-chip{background:var(--surface2);color:var(--text)}
}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important}}
/* Accueil mobile compact : salutation sur une ligne, mission du jour en bandeau (moins de hauteur avant les actions). */
@media(max-width:860px){.v2-hero-copy h2{font-size:26px;line-height:1.15;margin:5px 0 0}.v2-hero-copy p{display:none}
.v2-mission-copy h3{font-size:15px;letter-spacing:-.02em;margin:0 0 7px}.v2-mission-copy p{display:none}}
/* Mission du jour en bandeau sur ordinateur aussi (2.12) : image, titre, jauge et compteur sur une seule bande (≈ 90 px au lieu de 170). */
@media(min-width:861px){
 .v2-mission-copy h3{grid-area:title;align-self:start;margin:0;font-size:19px;letter-spacing:-.03em;white-space:nowrap}.v2-mission-copy p{display:none}
}
/* Google Tasks & Agenda : cases « Ajouter à », adresses à copier, étapes de configuration. */
.v2-gtargets{display:flex;flex-wrap:wrap;align-items:center;gap:7px 8px;padding:10px 12px;border:1px dashed var(--line2);border-radius:12px;background:var(--surface2)}
.v2-gtargets-title{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:750;color:var(--muted);margin-right:2px}
.v2-chip-check{position:relative;cursor:pointer}.v2-chip-check input{position:absolute;opacity:0;pointer-events:none}
.v2-chip-check span{display:block;padding:7px 11px;border-radius:999px;border:1px solid var(--line2);background:var(--surface);color:var(--muted);font-size:11px;font-weight:750;transition:background .15s,color .15s,border-color .15s}
.v2-chip-check input:checked+span{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 55%,transparent);background:color-mix(in srgb,var(--accent) 12%,transparent)}
.v2-chip-check input:checked+span::before{content:'✓ '}
.v2-chip-check input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}
[data-g-event][hidden]{display:none!important}
.v2-gbadge{font-size:9.5px;padding:3px 7px}
.v2-copy{margin:9px 0;min-width:0}.v2-copy small{display:block;font-size:10.5px;font-weight:750;color:var(--muted);margin-bottom:4px}
.v2-copy div{display:flex;align-items:center;gap:6px;min-width:0}.v2-copy code{flex:1;min-width:0;font-size:11px;overflow-wrap:anywhere;background:var(--surface2);border:1px solid var(--line);padding:7px 9px;border-radius:9px;color:var(--text)}
.v2-steps{margin:4px 0 14px;padding-left:19px;font-size:12px;line-height:1.6;color:var(--text)}.v2-steps li{margin-bottom:8px}.v2-steps li::marker{color:var(--accent);font-weight:800}
.v2-details{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}.v2-details summary{cursor:pointer;font-size:11.5px;font-weight:750;color:var(--muted)}.v2-details[open] summary{margin-bottom:8px}
@media(max-width:600px){#google-settings .form-grid{grid-template-columns:minmax(0,1fr)}}
/* V2.5 — outils CRM : prospects sans contact, tri/actions groupées, doublons, WhatsApp, recherche rapide */
.filter-chip b{font-size:11px;padding:2px 7px;border-radius:99px;background:var(--surface2);color:var(--text)}
.filter-chip.active{color:var(--text);border-color:color-mix(in srgb,var(--orange) 55%,transparent);background:color-mix(in srgb,var(--orange) 12%,var(--surface))}.filter-chip.active b{background:var(--orange);color:#1b1206}
.v2-sleep{color:var(--orange)!important;font-weight:600}
.pill-wa{color:var(--green);background:color-mix(in srgb,var(--green) 13%,transparent)}
.v2-bulk strong{font-size:13px;margin-right:4px}
.v2-pick input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer}
.v2-dup{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border-radius:12px;border:1px solid color-mix(in srgb,var(--orange) 45%,transparent);background:color-mix(in srgb,var(--orange) 10%,transparent);font-size:12.5px;line-height:1.5}.v2-dup[hidden]{display:none}.v2-dup .i{color:var(--orange);flex:0 0 auto;margin-top:2px}.v2-dup a{color:var(--text);font-weight:700;text-decoration:underline}.v2-dup small{color:var(--muted)}
.v2-search-btn kbd{font:600 10.5px/1 inherit;padding:3px 6px;border-radius:6px;border:1px solid var(--line2);background:var(--surface2);color:var(--muted)}
.v2-cmdk-field{max-width:none;min-height:46px;margin-bottom:10px}.v2-cmdk-field input{font-size:15px}
.v2-cmdk-list{display:grid;gap:3px;max-height:min(52vh,440px);overflow-y:auto}
.v2-cmdk-group{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--subtle);padding:9px 10px 4px}
.v2-cmdk-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 10px;border:1px solid transparent;border-radius:11px;background:transparent;color:var(--text);font:inherit;cursor:pointer}.v2-cmdk-item .i{color:var(--muted);flex:0 0 auto}
.v2-cmdk-item span{display:grid;min-width:0}.v2-cmdk-item strong{font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.v2-cmdk-item small{font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-cmdk-item:hover,.v2-cmdk-item.active{background:color-mix(in srgb,var(--accent) 11%,transparent);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}.v2-cmdk-item.active .i{color:var(--accent)}
.v2-cmdk-empty{padding:18px 10px;color:var(--muted);font-size:13px;text-align:center}
.v2-cmdk-hint{margin:10px 0 0;font-size:11px;color:var(--subtle);text-align:center}
@media(max-width:900px){.v2-cmdk-hint{display:none}}
/* Cartes du Kanban compactes : avatar réduit, température + service sur une ligne, montants seulement s'ils existent, contact et bouton côte à côte. */
.kanban-card .kc-top .avatar{width:28px;height:28px;border-radius:9px;border-width:1.5px;box-shadow:none;font-size:10px;flex:0 0 28px}
.kc-meta .temperature{padding:0}
.touch-btn-mini .i{width:13px;height:13px}
/* Colonnes du Kanban masquables : œil discret sur l'en-tête, bandeau pour les réafficher. */
.v2-hidden-cols{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:-6px 0 14px;font-size:12px;color:var(--muted)}.v2-hidden-cols>.i{color:var(--subtle)}
.v2-hidden-col{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px dashed var(--line2);border-radius:99px;background:transparent;color:var(--text);font:inherit;font-size:12px;font-weight:600}button.v2-hidden-col{cursor:pointer}button.v2-hidden-col:hover{border-style:solid;border-color:var(--accent)}.v2-hidden-col b{font-size:11px;color:var(--muted)}.v2-hidden-col .i{color:var(--accent)}
/* Lien public de la fiche contact, sous la carte de visite. */
.v2-card-link{justify-self:stretch;text-align:left}.v2-card-link .v2-copy{margin:4px 0 0}
.v2-link-btn{border:0;background:none;padding:4px 0;color:var(--muted);font:inherit;font-size:11.5px;text-decoration:underline;cursor:pointer}.v2-link-btn:hover{color:var(--text)}
/* Barre du bas : colonnes latérales strictement égales, le « + » (50 px, sans décalage) au centre exact. */
@media(max-width:860px){.bottom-nav{grid-template-columns:repeat(2,minmax(0,1fr)) 68px repeat(2,minmax(0,1fr));align-items:center}
 /* Garde-fou : rien ne doit dépasser la largeur de l'écran, sinon le téléphone rétrécit la page et la barre du bas saute d'un onglet à l'autre. */
 .main{overflow-x:clip}}
@media(max-width:480px){.v2-btn-compact span{display:none}.v2-btn-compact{padding-inline:13px;flex:0 0 auto}.v2-btn-grow{flex:1 1 auto;min-width:0}}
/* Menu « + » : grille 2 × 2, hauteurs égales. Gauche : prospect puis carte de visite ; droite : action faite au-dessus de l’action à planifier. */
.m-add-actions{grid-auto-rows:1fr}
/* Listes déroulantes : chevron dessiné par l'app (le natif d'iOS colle au bord), décalé du bord sur tous les navigateurs. */
:root,[data-theme="dark"]{--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a5b1ca' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}
[data-theme="light"]{--chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2366748f' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}
select.form-select,select.filter-select{-webkit-appearance:none;appearance:none;background-image:var(--chevron);background-repeat:no-repeat;background-position:right 14px center;background-size:16px 16px;padding-right:40px}
@media(max-width:600px){#lead-sort{max-width:none}}
select.filter-select{padding-left:14px}
/* « Contacté aujourd'hui » reste cliquable : un appui annule le marquage du jour. */
.toast{display:flex;align-items:center;gap:14px}
.toast-action{margin-left:auto;flex:0 0 auto;border:0;background:none;padding:2px 0;color:var(--accent);font:inherit;font-weight:800;cursor:pointer}
.toast-action:hover{text-decoration:underline}
/* Sélecteur date / heure maison (V2.8.4) : champ-bouton + panneau (ancré sous le champ sur ordinateur, panneau du bas sur mobile). */
.v2-dt-field{display:flex;align-items:center;gap:10px;text-align:left;cursor:pointer;font:inherit;font-size:inherit;color:var(--text)}
.v2-dt-field .i{color:var(--accent);flex:0 0 auto}
.v2-dt-field span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-dt-field .is-empty{color:var(--subtle)}
.v2-dt-field:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line2))}
.v2-dtp{position:fixed;inset:0;z-index:150}
.v2-dtp-panel{position:fixed;width:330px;max-width:calc(100vw - 20px);max-height:calc(100dvh - 20px);overflow-y:auto;background:var(--surface);border:1px solid var(--line2);border-radius:18px;box-shadow:var(--shadow);padding:15px;color:var(--text);animation:fade .14s ease}
.v2-dtp-head{display:flex;flex-direction:column;gap:3px;margin-bottom:12px}
.v2-dtp-head small{font-size:11px;font-weight:700;color:var(--muted)}
.v2-dtp-head strong{font-size:15px;font-weight:800}
.v2-dtp-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.v2-dtp-chip{border:1px solid var(--line2);background:var(--surface2);color:var(--text);border-radius:999px;padding:6px 11px;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
.v2-dtp-chip:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line2))}
.v2-dtp-chip.is-on{background:var(--accent);border-color:var(--accent);color:#fff}
.v2-dtp-month{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.v2-dtp-month strong{font-size:14px;font-weight:800;text-transform:capitalize}
.v2-dtp-nav{width:34px;height:34px;border-radius:10px;border:1px solid var(--line2);background:var(--surface2);color:var(--text);display:grid;place-items:center}
.v2-dtp-nav:hover{color:var(--accent)}
.v2-dtp-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}
.v2-dtp-dow{text-align:center;font-size:10.5px;font-weight:800;color:var(--subtle);padding:7px 0 5px}
.v2-dtp-day{height:38px;border:0;border-radius:10px;background:none;color:var(--text);font-size:13px;font-weight:650;font-variant-numeric:tabular-nums}
.v2-dtp-day:hover{background:var(--surface2)}
.v2-dtp-day.is-out{color:var(--subtle);opacity:.6}
.v2-dtp-day.is-today{color:var(--accent);box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--accent) 55%,transparent)}
.v2-dtp-day.is-selected,.v2-dtp-day.is-selected:hover{background:var(--accent);color:#fff;box-shadow:none;opacity:1}
.v2-dtp-time{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}
.v2-dtp-time:first-child{border-top:0;margin-top:0;padding-top:0}
.v2-dtp-sub{font-size:11px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.v2-dtp-hm{display:flex;align-items:center;gap:8px;font-weight:800}
.v2-dtp-hm select.form-select{width:auto;min-width:88px;min-height:40px}
.v2-dtp-foot{display:flex;align-items:center;gap:8px;margin-top:14px}
@media(max-width:600px){
 .v2-dtp{background:#020618a6;backdrop-filter:blur(3px)}
 .v2-dtp-panel{left:0;right:0;bottom:0;top:auto;width:auto;max-width:none;max-height:92dvh;border-radius:22px 22px 0 0;border-bottom:0;padding:18px 16px calc(14px + env(safe-area-inset-bottom));animation:sheet-up .22s ease-out}
 .v2-dtp-day{height:42px;font-size:15px}
 .v2-dtp-chips{flex-wrap:nowrap;overflow-x:auto;margin-inline:-16px;padding-inline:16px;scrollbar-width:none}.v2-dtp-chips::-webkit-scrollbar{display:none}
 .v2-dtp-chip{flex:0 0 auto;padding:8px 12px;font-size:13px}
 .v2-dtp-foot .btn{min-height:46px;flex:1;justify-content:center}
 .v2-dtp-foot .spacer{display:none}
}
/* Corbeille d'une activité (Relances du jour, historique de la fiche) : discrète, rouge au survol. */
.icon-btn.v2-act-drop{width:30px;height:30px;border-radius:9px;flex:0 0 auto;color:var(--subtle);background:transparent;border-color:transparent}
.icon-btn.v2-act-drop:hover,.icon-btn.v2-act-drop:focus-visible{color:var(--red);background:color-mix(in srgb,var(--red) 10%,transparent);border-color:color-mix(in srgb,var(--red) 30%,transparent)}
.v2-day-list li .v2-act-drop{margin:-5px -5px -5px 0}
.timeline-entry:has(.v2-act-drop){padding-right:38px}.timeline-entry .v2-act-drop{position:absolute;top:-6px;right:0}
/* Actions (V2.9) : « Déjà faite / À planifier » en tête du formulaire, page Actions « À faire / Faites ». */
.v2-seg{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;border-radius:14px;background:var(--surface2);border:1px solid var(--line2)}
.v2-seg button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:40px;border:0;border-radius:10px;background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:750}
.v2-seg button.is-on{background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--text);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 45%,transparent)}
.v2-seg button.is-on .i{color:var(--accent)}
.v2-tab-count{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:6px;padding:0 6px;border-radius:999px;background:var(--surface3);color:var(--text);font-size:11px;font-variant-numeric:tabular-nums}
.v2-done-day h4{margin:0 0 9px 2px;font-size:12px;font-weight:800;letter-spacing:.04em;color:var(--muted)}
.v2-day-list li strong{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;max-width:100%;min-width:0;overflow-wrap:anywhere}
.v2-day-list li strong .i{color:var(--accent)}
/* 2.30.9 · Fiche prospect, « Faites » : un long « Quoi ? » ou une note sans espace (une adresse web…) passe à la ligne au lieu de sortir du tiroir. */
.timeline-entry strong,.v2-timeline-text{overflow-wrap:anywhere}
@media(max-width:600px){.v2-seg button{min-height:44px;font-size:14px}}
/* Filtres actifs (V2.9) : bandeau « N filtres actifs · Tout effacer » + pastille sur le bouton filtre mobile. */
.v2-active-filters{flex-basis:100%;display:flex;align-items:center;gap:8px;margin:2px 0 12px;padding:8px 12px;border-radius:12px;font-size:12px;font-weight:700;color:var(--text);background:color-mix(in srgb,var(--accent) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line))}
.v2-active-filters .i{color:var(--accent)}
.v2-active-filters button{margin-left:auto;border:0;background:none;padding:2px 0;color:var(--accent);font:inherit;font-weight:800;cursor:pointer}
.v2-filter-dot{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;display:grid;place-items:center;background:var(--accent);color:#fff;font-size:10px;font-weight:800}
/* Choix du prospect avec recherche (V2.9.1) : la liste s'ouvre dans le formulaire, sous le champ (jamais coupée par la fenêtre). */
.v2-lp-box{display:flex;align-items:center;gap:9px;padding-top:0;padding-bottom:0;cursor:text}
.v2-lp-box>.i{color:var(--subtle);flex:0 0 auto}
.v2-lp-box:focus-within{border-color:var(--accent)}
.v2-lp-input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--text);font:inherit;font-size:inherit;padding:11px 0;min-height:40px}
.v2-lp-input::placeholder{color:var(--subtle)}
.v2-lp-clear{flex:0 0 auto;width:28px;height:28px;border:0;border-radius:8px;background:transparent;color:var(--muted);display:grid;place-items:center;cursor:pointer}
.v2-lp-clear:hover{color:var(--text);background:var(--surface3)}
.v2-lp-list{margin-top:6px;padding:5px;border:1px solid var(--line2);border-radius:13px;background:var(--surface);box-shadow:var(--shadow);display:grid;gap:2px}
.v2-lp-list[hidden],.v2-lp-clear[hidden]{display:none}
.v2-lp-head{padding:5px 9px 3px;font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--subtle)}
.v2-lp-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;padding:9px 10px;border:0;border-radius:9px;background:transparent;color:var(--text);font:inherit;cursor:pointer}
.v2-lp-opt strong{font-size:13px;font-weight:750}
.v2-lp-opt small{font-size:11px;color:var(--muted)}
.v2-lp-opt.is-active,.v2-lp-opt:hover{background:color-mix(in srgb,var(--accent) 12%,var(--surface2))}
.v2-lp-opt[aria-selected="true"] strong{color:var(--accent)}
.v2-lp-empty{padding:10px;font-size:12px;color:var(--muted)}
@media(max-width:600px){.v2-lp-input{font-size:16px;min-height:46px}.v2-lp-opt{padding:11px 10px}.v2-lp-opt strong{font-size:15px}}
/* Origine du contact (V2.9.1) : choix rapides + « où / par qui » ; icône en ligne dans les libellés. */
.form-label .i{display:inline-block}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.v2-origin .checkbox-tags{margin-bottom:10px}
/* D'où viennent nos prospects : tableau classé, barre d'une seule teinte pour le volume, chiffres en clair à côté. */
.v2-origin-insight .i{color:var(--accent);margin-top:2px}
.v2-origin-row small{color:var(--muted);font-size:11px}
.v2-origin-headrow>span{color:var(--subtle)}
.v2-origin-name strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v2-origin-bar>span{display:block;height:100%;min-width:4px;border-radius:4px;background:var(--accent)}
.v2-origin-row.is-unknown strong{color:var(--muted);font-weight:650}
@media(max-width:600px){
 .v2-origins .section-head{flex-wrap:wrap}
}

/* ---------- V2.10.1 · Dashboard (admin) — DA de base de l'app : cartes .card, tuiles .metric, titres et chiffres Space Grotesk, jetons du thème ---------- */
.v2-dash{--d-soft:color-mix(in srgb,var(--accent) 12%,transparent);max-width:1420px;margin:0 auto 50px}
.v2-dash-status{display:flex;align-items:center;gap:8px;min-width:0;max-width:100%}
.v2-dash-status .pill{min-height:30px;padding:6px 11px;max-width:100%}
.v2-dash-status .icon-btn.is-busy .i{animation:v2-dash-spin 1s linear infinite}
@keyframes v2-dash-spin{to{transform:rotate(360deg)}}
.v2-live{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 20%,transparent)}
.v2-dash .stats-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (min-width:1800px){.v2-dash .stats-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.v2-dash .metric-val{font-size:28px}}
.v2-dash .metric-top .label{color:var(--text);font-weight:700}
.v2-dash .metric-val{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v2-dash .metric-val small{margin-left:2px;font-size:.45em;letter-spacing:0;color:var(--muted)}
.v2-dash .metric-foot{color:var(--muted);font-size:11px;line-height:1.4}
.v2-dash .metric.is-warn .metric-foot{color:var(--orange);font-weight:700}
/* Liens d'action soulignés : une seule taille dans toute l'app (en-têtes et pieds de carte, tuiles, formulaires) ; dans une phrase,
   ils gardent la taille du texte qui les entoure (2.12). */
.v2-dk-link{padding:0;border:0;background:none;color:var(--accent);font:inherit;font-size:13px;line-height:1.35;font-weight:700;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
:where(p,strong,.v2-meet-meta,.v2-ck-meta) .v2-dk-link{font-size:inherit;line-height:inherit}
.v2-dd{display:inline-flex;align-items:baseline;flex-wrap:wrap;gap:3px 6px;font-size:11px;font-weight:800;color:var(--muted)}
.v2-dd small{font-size:11px;font-weight:500;color:var(--muted)}
.v2-dd-up{color:var(--green)}.v2-dd-down{color:var(--red)}
.v2-skel{display:block;width:70%;height:26px;margin:4px 0;border-radius:8px;background:linear-gradient(90deg,var(--surface2),var(--surface3),var(--surface2));background-size:200% 100%;animation:v2-dash-skel 1.2s ease-in-out infinite}
@keyframes v2-dash-skel{to{background-position:-200% 0}}
.v2-dash-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:18px}
.v2-dc .section-head{align-items:flex-start;flex-wrap:nowrap}
.v2-dc-empty{margin:auto 0;padding:24px 16px;border:1px dashed var(--line2);border-radius:16px;color:var(--muted);font-size:13px;line-height:1.55;text-align:center}
.v2-legend span{display:inline-flex;align-items:center;gap:6px}
.v2-chart-y span{position:absolute;right:9px;transform:translateY(-50%);font-size:10px;color:var(--subtle);font-variant-numeric:tabular-nums}
.v2-chart-plot svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.v2-tip strong{font-weight:800}
/* À traiter (V2.10.4) : deux blocs, actions du jour (à cocher ici) puis devis à faire */
.v2-todo-list{gap:6px}
.v2-todo-list li{align-items:center;padding:9px 10px}
.v2-todo-list li>div{gap:2px 8px}
.v2-todo-amount{font:700 14px 'Space Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}
.v2-unpaid-row>strong small{font-size:10px;color:var(--muted)}
.v2-remind{min-height:30px;padding:5px 11px;gap:6px;white-space:nowrap}
.v2-diag{list-style:none;margin:10px 0 0;padding:0;display:grid}
.v2-diag li{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--line);font-size:12px}
.v2-diag li span{color:var(--muted)}
.v2-diag li strong{text-align:right;overflow-wrap:anywhere}
.v2-bill small{margin-top:8px;font-size:11px;font-weight:700;color:var(--muted)}
.v2-bill strong{font:700 19px 'Space Grotesk',system-ui,sans-serif;letter-spacing:-.05em;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v2-bill em{font-style:normal;font-size:11px;line-height:1.35;color:var(--muted)}
.v2-bill.good strong{color:var(--green)}.v2-bill.bad strong{color:var(--red)}
.v2-unpaid{display:grid;margin-top:16px;padding-top:12px;border-top:1px solid var(--line)}
.v2-unpaid-title{margin-bottom:4px;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.v2-unpaid-row small{color:var(--muted)}
.v2-unpaid-days{font-size:11px;font-weight:800;color:var(--red);white-space:nowrap}
.v2-unpaid-row>strong{font-family:'Space Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap}
@media (max-width:1100px){.v2-dash-grid{grid-template-columns:minmax(0,1fr)}}
@media (max-width:760px){.v2-dash .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.v2-dash .metric-val{font-size:22px;letter-spacing:-.05em}.v2-dash .metric{padding:14px}.v2-dash-grid{gap:13px}.v2-unpaid-days{grid-row:2}.v2-unpaid-row>.v2-remind{grid-row:1/3;grid-column:3}.v2-remind span{display:none}.v2-dash-status{width:100%}}

/* ---------- V2.10 · Actions du jour : aujourd'hui, bande des 14 prochains jours, puis jour par jour ---------- */
.v2-who{display:inline-flex;gap:4px;padding:4px;border:1px solid var(--line2);border-radius:999px;background:var(--surface2)}
/* Sélecteur unique de l'app (périodes, onglets de carte, vues) : même hauteur et même corps partout. */
.v2-who button{min-height:30px;padding:0 12px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.v2-who button.is-on{background:var(--surface);color:var(--text);box-shadow:0 1px 4px #0b10301a,inset 0 0 0 1px var(--line2)}
/* 2.28.1 · Un bouton à icône (Tickets / Historique du SAV d'un projet…) : l'icône à gauche du mot, pas au-dessus. */
.v2-who button:has(>svg){display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}
.v2-plan-free{display:flex;align-items:center;gap:8px;margin:2px 0 0;color:var(--muted);font-size:13px}
.v2-plan-free .i{color:var(--green)}
.v2-plan-row{align-items:center!important}
/* R1 (2.17) : ligne bloquée pendant qu'on coche l'action. */
.is-task-busy{opacity:.55;pointer-events:none}
.v2-plan-row .task-check{flex:0 0 auto;margin:0}
.v2-plan-row .v2-day-time{min-width:46px;padding-top:0;line-height:1.25}
.v2-plan-row .v2-day-time.v2-overdue{color:var(--red)}
.v2-plan-row .icon-btn{flex:0 0 auto}
.v2-strip-day small{font-size:11px;font-weight:700;text-transform:capitalize}
.v2-strip-day strong{font-size:17px;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.v2-strip-day i{align-self:end;width:6px;height:24px;border-radius:3px;background:var(--surface3);position:relative;overflow:hidden}
.v2-strip-day i::after{content:"";position:absolute;left:0;right:0;bottom:0;height:var(--h);border-radius:3px;background:var(--accent)}
.v2-strip-day b{min-height:14px;font-size:11px;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.v2-undo-btn{flex:0 0 auto;min-height:32px;padding:0 10px;gap:6px;font-size:12px;margin:-4px 0}
@media (max-width:600px){.v2-undo-btn span{display:none}.v2-undo-btn{width:34px;padding:0;justify-content:center}}
/* V2.10 : une page courte (Actions avec une seule ligne) restait centrée verticalement à côté du menu (margin:auto de style.css) → grand vide en haut. */
.main{margin-block:0}
.topbar-left{min-width:0}.topbar-title,.topbar-kicker{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:1240px){.header-date{display:none}}
/* V2.10 · Modules (Paramètres) : interrupteur, et gamification masquée (classe no-game sur <html>). */
.v2-switch{position:relative;flex:0 0 auto;width:46px;height:28px;padding:0;border:1px solid var(--line2);border-radius:999px;background:var(--surface3);cursor:pointer;transition:background .2s,border-color .2s}
.v2-switch i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0003;transition:transform .2s}
.v2-switch.is-on{background:var(--accent);border-color:transparent}
.v2-switch.is-on i{transform:translateX(18px)}
.no-game .v2-game-only,.no-game .v2-day-xp,.no-game .timeline .pill-lime{display:none!important}
/* V2.10.2 · Actions du jour : colonne « Toutes les programmées » (par mois, même lointaines), collée à droite ; en dessous sur téléphone. */
.v2-plan-main{min-width:0}
.v2-all-date b{font:700 17px 'Space Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums}
.v2-all-date small{font-size:10px;font-weight:700;color:var(--muted);text-transform:capitalize}
.v2-all-date.v2-overdue small{color:var(--red)}
.v2-all-row>div{min-width:0;display:grid;gap:2px}
.v2-all-row strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v2-all-row small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* V2.10.2 · Modifier à tout moment : crayon à côté de la corbeille (actions faites, historique de la fiche). */
.icon-btn.v2-act-edit{width:30px;height:30px;border-radius:9px;flex:0 0 auto;color:var(--subtle);background:transparent;border-color:transparent}
.icon-btn.v2-act-edit:hover,.icon-btn.v2-act-edit:focus-visible{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);border-color:color-mix(in srgb,var(--accent) 30%,transparent)}
.v2-day-list li .v2-act-edit{margin:-5px -2px -5px 0}
.timeline-entry:has(.v2-entry-tools){padding-right:72px}
.v2-entry-tools{position:absolute;top:-6px;right:0;display:flex;gap:2px}
.timeline-entry .v2-entry-tools .v2-act-drop{position:static}
.v2-all-row .icon-btn{flex:0 0 auto;width:30px;height:30px;margin-left:auto}
.v2-plan-row .icon-btn+.icon-btn{margin-left:-6px}
/* V2.10.2 : sur grand écran, .main est limitée à 1710 px et centrée ; son halo de fond s'arrêtait à ses bords (« bandeau coupé »).
   Le fond passe sur toute la mise en page (hauteur d'un écran), la zone principale devient transparente. */
.layout{background:radial-gradient(circle at 90% -7%,#765ad913,transparent 24%) top/100% 100vh no-repeat,var(--bg)}
.main{background:transparent}
/* V2.10.4 : entre tablette et petit portable (menu affiché), 2 tuiles par ligne pour ne pas couper les montants */
@media (min-width:761px) and (max-width:1100px){.v2-dash .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Coûts fixes (V2.10.5) : total par mois, barres par catégorie à gauche, liste modifiable à droite, suggestions Billit dessous */
.v2-fixed-list{list-style:none;margin:0;padding:0;display:grid}
.v2-fixed-list li{display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:13px}
.v2-fixed-list li:last-child{border-bottom:0}
.v2-fixed-list li>span{display:grid;gap:2px}
.v2-fixed-list small{font-size:11px;color:var(--muted);white-space:normal}
.v2-fixed-list b{font-family:'Space Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums;white-space:nowrap;margin-right:4px}
.v2-fixed-list .icon-btn+.icon-btn{margin-left:-6px}
/* Factures récurrentes (V2.10.6) : liste du détail */
.v2-rc-list li{grid-template-columns:minmax(0,1fr) auto auto}
.v2-rc-list li>small{min-width:84px;text-align:right;white-space:nowrap}
.v2-rc-total{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;padding:12px 14px;border-radius:14px;background:var(--surface2);font-size:13px}
.v2-rc-total strong{font-family:'Space Grotesk',system-ui,sans-serif;font-variant-numeric:tabular-nums}
/* V2.10.7 : Dashboard plus compact. « Évolution du CA » et « À traiter » à la même hauteur (celle du graphique : la liste
   défile dans la carte) ; cases de la Facturation plus basses.
   V2.10.8 : cases du haut sur une seule ligne, autant de colonnes que de cases affichées (masquables dans Paramètres).
   Le montant suit la largeur de la case et l'icône disparaît dans une case étroite ; 6 ou 7 cases sur un écran plus étroit : 2 lignes. */
.v2-todo-card .section-head{align-items:center;flex-wrap:wrap;gap:10px}
.v2-tab-count.is-warn{color:var(--orange)}
.v2-todo-empty{display:flex;align-items:center;gap:8px;margin:6px 0;color:var(--muted);font-size:13px}
.v2-warn-text{color:var(--orange);font-weight:700}
.v2-bill .v2-bill-head{display:flex;align-items:center;gap:6px;margin:0 0 2px}
.v2-bill-head .i{color:var(--lime)}
.v2-bill.bad .v2-bill-head .i{color:var(--red)}
.v2-bill.good .v2-bill-head .i{color:var(--green)}

/* V2.10.8 : cases du haut déplaçables (glisser-déposer à la souris, flèches dans Paramètres → Cases du Dashboard) */
.v2-dash-set .goal-inline{gap:6px}
.v2-dash-set .goal-inline .v2-switch{margin-left:6px}
.v2-dash-set.is-off .flex{opacity:.55}
/* V2.10.8 : couleur des cases du haut selon leur fonction (même couleur dans Paramètres → Cases du Dashboard).
   Chiffre d'affaires bleu, marge violet, trésorerie vert, charges orange ; les textes restent dans les couleurs de texte. */
.v2-k-rev{--k:var(--blue)}.v2-k-margin{--k:var(--violet)}.v2-k-cash{--k:var(--green)}.v2-k-cost{--k:var(--orange)}
.v2-dash-ico{display:grid;place-items:center;flex:0 0 auto;width:34px;height:34px;border-radius:10px;background:color-mix(in srgb,var(--k) 15%,transparent);color:var(--k)}
