/* EviSupport — feuille de style partagée (tokens + composants + icônes)
   Base 4 px · thème sombre par défaut, clair via [data-theme="light"] */

/* ───────── 1. Tokens ───────── */
:root,[data-theme="dark"]{
  --f-title:"Instrument Sans",ui-sans-serif,system-ui,sans-serif;
  --f-body:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"Geist Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --bg-0:#0C0D12;   /* fond application */
  --bg-1:#12131A;   /* surface : cartes, sidebar */
  --bg-2:#181A23;   /* surface élevée : popovers, modales */
  --bg-3:#20232E;   /* survol, pastilles */
  --bg-inset:#0A0B10; /* champs */
  --line:#232633;
  --line-2:#2F3344;
  --line-3:#3D4257;
  --fg-1:#ECEDF4;
  --fg-2:#AEB2C5;
  --fg-3:#868BA3;
  --focus:#9AA2FF;

  --accent:#5865F2;
  --accent-hover:#6873F4;
  --accent-press:#4A55D6;
  --accent-fg:#A1A8FF;
  --accent-soft:rgba(88,101,242,.16);
  --accent-line:rgba(120,131,255,.42);

  --ok:#4CC790;     --ok-soft:rgba(76,199,144,.13);   --ok-line:rgba(76,199,144,.35);
  --warn:#F2B55A;   --warn-soft:rgba(242,181,90,.13); --warn-line:rgba(242,181,90,.38);
  --danger:#F4747E; --danger-soft:rgba(244,116,126,.13); --danger-line:rgba(244,116,126,.4);
  --danger-solid:#D13345;
  --info:#62B4F2;   --info-soft:rgba(98,180,242,.13); --info-line:rgba(98,180,242,.38);

  --scrim:rgba(5,6,9,.66);
  --sh-1:0 1px 0 rgba(255,255,255,.025) inset,0 1px 2px rgba(0,0,0,.35);
  --sh-2:0 12px 32px -8px rgba(0,0,0,.6),0 2px 6px rgba(0,0,0,.3);
  --sh-3:0 28px 72px -16px rgba(0,0,0,.75),0 6px 16px rgba(0,0,0,.35);

  --dp-bg:#1B1C22; --dp-embed:#23242B; --dp-fg:#DBDEE3; --dp-name:#F3F4F6; --dp-mention-bg:rgba(88,101,242,.3); --dp-mention:#CDD1FF; --dp-gray:#4A4C55;

  --r-1:6px; --r-2:8px; --r-3:12px; --r-4:16px; --r-full:999px;
  --e-out:cubic-bezier(.2,.8,.2,1); --e-io:cubic-bezier(.65,0,.35,1); --e-spring:cubic-bezier(.3,1.35,.5,1);
  --d-1:120ms; --d-2:200ms; --d-3:320ms;
  color-scheme:dark;
}
[data-theme="light"]{
  --bg-0:#F3F3F8; --bg-1:#FFFFFF; --bg-2:#FFFFFF; --bg-3:#ECEDF4; --bg-inset:#F7F7FB;
  --line:#E3E4EC; --line-2:#D3D5E1; --line-3:#B9BCCD;
  --fg-1:#14151D; --fg-2:#454A5E; --fg-3:#5F6479; --focus:#4450D9;
  --accent-fg:#3F4BD1; --accent-soft:rgba(88,101,242,.10); --accent-line:rgba(88,101,242,.4);
  --accent-hover:#4E5BE6; --accent-press:#414CCB;
  --ok:#157347;   --ok-soft:rgba(21,115,71,.09);  --ok-line:rgba(21,115,71,.3);
  --warn:#8F5300; --warn-soft:rgba(191,118,0,.1); --warn-line:rgba(191,118,0,.35);
  --danger:#BF2536; --danger-soft:rgba(191,37,54,.08); --danger-line:rgba(191,37,54,.32);
  --danger-solid:#C62D3E;
  --info:#17639E; --info-soft:rgba(23,99,158,.08); --info-line:rgba(23,99,158,.3);
  --scrim:rgba(20,22,35,.38);
  --sh-1:0 1px 2px rgba(20,22,40,.06),0 0 0 0 transparent;
  --sh-2:0 12px 32px -10px rgba(20,22,40,.2),0 2px 6px rgba(20,22,40,.06);
  --sh-3:0 28px 72px -18px rgba(20,22,40,.3),0 6px 16px rgba(20,22,40,.08);
  --dp-bg:#FFFFFF; --dp-embed:#F2F3F5; --dp-fg:#2E3035; --dp-name:#060607; --dp-mention-bg:rgba(88,101,242,.15); --dp-mention:#3F4BD1; --dp-gray:#6D6F78;
  color-scheme:light;
}

/* ───────── 2. Base ───────── */
.app,.app *,.app *::before,.app *::after{box-sizing:border-box}
.app{font-family:var(--f-body);font-size:14px;line-height:20px;color:var(--fg-1);background:var(--bg-0);-webkit-font-smoothing:antialiased;position:relative;overflow:hidden}
:where(.app) h1,:where(.app) h2,:where(.app) h3,:where(.app) h4,:where(.app) p,:where(.app) ul,:where(.app) ol,:where(.app) figure{margin:0;padding:0}
:where(.app) ul,:where(.app) ol{list-style:none}
.app a{color:var(--accent-fg);text-decoration:none}
.app a:hover{text-decoration:underline;text-underline-offset:3px}
.app button{font:inherit;color:inherit}
.app :focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.is-focus{outline:2px solid var(--focus)!important;outline-offset:2px}

.t-hero{font:600 48px/52px var(--f-title);letter-spacing:-.025em}
.t-h1{font:600 28px/34px var(--f-title);letter-spacing:-.02em}
.t-h2{font:600 20px/28px var(--f-title);letter-spacing:-.01em}
.t-h3{font:600 16px/24px var(--f-title);letter-spacing:-.005em}
.t-lg{font-size:16px;line-height:24px}
.t-sm{font-size:13px;line-height:18px}
.t-xs{font-size:12px;line-height:16px}
.t-over{font-size:11px;line-height:16px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.fw5{font-weight:500}.fw6{font-weight:600}
.fg-1{color:var(--fg-1)}.fg-2{color:var(--fg-2)}.fg-3{color:var(--fg-3)}
.fg-accent{color:var(--accent-fg)}.fg-ok{color:var(--ok)}.fg-warn{color:var(--warn)}.fg-danger{color:var(--danger)}.fg-info{color:var(--info)}
.num{font-variant-numeric:tabular-nums}
.mono{font-family:var(--f-mono);font-size:12.5px}
.wrap{text-wrap:pretty}
.row{display:flex;align-items:center}
.col{display:flex;flex-direction:column}
.g-2{gap:2px}.g-4{gap:4px}.g-6{gap:6px}.g-8{gap:8px}.g-12{gap:12px}.g-16{gap:16px}.g-20{gap:20px}.g-24{gap:24px}.g-32{gap:32px}.g-40{gap:40px}
.grow{flex:1 1 0;min-width:0}
.between{justify-content:space-between}
.sep{height:1px;background:var(--line);border:0;margin:0}
.vsep{width:1px;align-self:stretch;background:var(--line)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ───────── 3. Icônes (style Lucide, trait 2 px) ───────── */
.ic{display:inline-block;flex:none;width:16px;height:16px;background:currentColor;-webkit-mask:var(--i) center/contain no-repeat;mask:var(--i) center/contain no-repeat}
.ic-14{width:14px;height:14px}.ic-18{width:18px;height:18px}.ic-20{width:20px;height:20px}.ic-24{width:24px;height:24px}.ic-32{width:32px;height:32px}
.ic-dashboard{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='9' rx='1'/%3E%3Crect x='14' y='3' width='7' height='5' rx='1'/%3E%3Crect x='14' y='12' width='7' height='9' rx='1'/%3E%3Crect x='3' y='16' width='7' height='5' rx='1'/%3E%3C/svg%3E")}
.ic-ticket{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z'/%3E%3Cpath d='M13 5v2M13 17v2M13 11v2'/%3E%3C/svg%3E")}
.ic-message{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z'/%3E%3C/svg%3E")}
.ic-smile-plus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11v1a10 10 0 1 1-9-10'/%3E%3Cpath d='M8 14s1.5 2 4 2 4-2 4-2M9 9h.01M15 9h.01M16 5h6M19 2v6'/%3E%3C/svg%3E")}
.ic-award{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpath d='M15.48 12.89 17 22l-5-3-5 3 1.52-9.11'/%3E%3C/svg%3E")}
.ic-shield{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3C/svg%3E")}
.ic-shield-check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E")}
.ic-history{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8'/%3E%3Cpath d='M3 3v5h5M12 7v5l4 2'/%3E%3C/svg%3E")}
.ic-file{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z'/%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4M16 13H8M16 17H8M10 9H8'/%3E%3C/svg%3E")}
.ic-globe{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20M2 12h20'/%3E%3C/svg%3E")}
.ic-sliders{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 4h-7M10 4H3M21 12h-9M8 12H3M21 20h-5M12 20H3M14 2v4M8 10v4M16 18v4'/%3E%3C/svg%3E")}
.ic-search{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}
.ic-chev-down{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E")}
.ic-chev-right{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}
.ic-chev-left{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'/%3E%3C/svg%3E")}
.ic-chevs{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 15 5 5 5-5M7 9l5-5 5 5'/%3E%3C/svg%3E")}
.ic-arrow-right{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}
.ic-arrow-left{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m12 19-7-7 7-7M19 12H5'/%3E%3C/svg%3E")}
.ic-up-right{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7 7h10v10M7 17 17 7'/%3E%3C/svg%3E")}
.ic-down-right{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m7 7 10 10M17 7v10H7'/%3E%3C/svg%3E")}
.ic-menu{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6h16M4 12h16M4 18h16'/%3E%3C/svg%3E")}
.ic-x{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18M6 6l12 12'/%3E%3C/svg%3E")}
.ic-check{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E")}
.ic-plus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}
.ic-minus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'/%3E%3C/svg%3E")}
.ic-sun{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}
.ic-moon{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}
.ic-logout{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4M16 17l5-5-5-5M21 12H9'/%3E%3C/svg%3E")}
.ic-login{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4M10 17l5-5-5-5M15 12H3'/%3E%3C/svg%3E")}
.ic-users{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E")}
.ic-user{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E")}
.ic-user-plus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M19 8v6M22 11h-6'/%3E%3C/svg%3E")}
.ic-user-minus{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 11h-6'/%3E%3C/svg%3E")}
.ic-clock{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 6v6l4 2'/%3E%3C/svg%3E")}
.ic-timer{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 2h4M12 14l3-3'/%3E%3Ccircle cx='12' cy='14' r='8'/%3E%3C/svg%3E")}
.ic-hash{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 9h16M4 15h16M10 3 8 21M16 3l-2 18'/%3E%3C/svg%3E")}
.ic-folder{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z'/%3E%3C/svg%3E")}
.ic-image{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='9' cy='9' r='2'/%3E%3Cpath d='m21 15-3.09-3.09a2 2 0 0 0-2.82 0L6 21'/%3E%3C/svg%3E")}
.ic-trash{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2M10 11v6M14 11v6'/%3E%3C/svg%3E")}
.ic-pencil{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21.17 6.81a1 1 0 0 0-3.99-3.99L3.84 16.17a2 2 0 0 0-.5.83l-1.32 4.35a.5.5 0 0 0 .62.62l4.35-1.32a2 2 0 0 0 .83-.5zM15 5l4 4'/%3E%3C/svg%3E")}
.ic-send{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.54 21.69a.5.5 0 0 0 .94-.03l6.5-19a.5.5 0 0 0-.64-.64l-19 6.5a.5.5 0 0 0-.03.94l7.93 3.18a2 2 0 0 1 1.11 1.11zM21.85 2.15 10.91 13.09'/%3E%3C/svg%3E")}
.ic-refresh{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8M21 3v5h-5M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16M8 16H3v5'/%3E%3C/svg%3E")}
.ic-eye{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2.06 12.35a1 1 0 0 1 0-.7 10.75 10.75 0 0 1 19.88 0 1 1 0 0 1 0 .7 10.75 10.75 0 0 1-19.88 0'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E")}
.ic-external{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6M10 14 21 3M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E")}
.ic-alert{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3M12 9v4M12 17h.01'/%3E%3C/svg%3E")}
.ic-alert-circle{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 8v4M12 16h.01'/%3E%3C/svg%3E")}
.ic-info{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4M12 8h.01'/%3E%3C/svg%3E")}
.ic-check-circle{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m9 12 2 2 4-4'/%3E%3C/svg%3E")}
.ic-lock{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E")}
.ic-bot{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 8V4H8'/%3E%3Crect x='4' y='8' width='16' height='12' rx='2'/%3E%3Cpath d='M2 14h2M20 14h2M15 13v2M9 13v2'/%3E%3C/svg%3E")}
.ic-server{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='2' width='20' height='8' rx='2'/%3E%3Crect x='2' y='14' width='20' height='8' rx='2'/%3E%3Cpath d='M6 6h.01M6 18h.01'/%3E%3C/svg%3E")}
.ic-bell{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10.27 21a2 2 0 0 0 3.46 0M3.26 15.33A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.67C19.41 13.96 18 12.5 18 8A6 6 0 0 0 6 8c0 4.5-1.41 5.96-2.74 7.33'/%3E%3C/svg%3E")}
.ic-copy{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='8' width='14' height='14' rx='2'/%3E%3Cpath d='M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2'/%3E%3C/svg%3E")}
.ic-filter{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h18M7 12h10M10 18h4'/%3E%3C/svg%3E")}
.ic-more{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}
.ic-calendar{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2'/%3E%3Cpath d='M16 2v4M8 2v4M3 10h18'/%3E%3C/svg%3E")}
.ic-zap{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z'/%3E%3C/svg%3E")}
.ic-languages{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}
.ic-bulb{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5M9 18h6M10 22h4'/%3E%3C/svg%3E")}
.ic-ban{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='m4.9 4.9 14.2 14.2'/%3E%3C/svg%3E")}
.ic-door{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M13 4h3a2 2 0 0 1 2 2v14M2 20h3M13 20h9M10 12v.01M13 4.56v16.16a.5.5 0 0 1-.63.49L6.5 19.5V5.25a1 1 0 0 1 .77-.97l4.5-1.12A1 1 0 0 1 13 4.56Z'/%3E%3C/svg%3E")}
.ic-upload{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12'/%3E%3C/svg%3E")}
.ic-download{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3'/%3E%3C/svg%3E")}
.ic-sparkles{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9.94 15.5A2 2 0 0 0 8.5 14.06l-6.13-1.58a.5.5 0 0 1 0-.96L8.5 9.94A2 2 0 0 0 9.94 8.5l1.58-6.13a.5.5 0 0 1 .96 0L14.06 8.5A2 2 0 0 0 15.5 9.94l6.13 1.58a.5.5 0 0 1 0 .96L15.5 14.06a2 2 0 0 0-1.44 1.44l-1.58 6.13a.5.5 0 0 1-.96 0z'/%3E%3C/svg%3E")}
.ic-star{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11.53 2.3a.53.53 0 0 1 .95 0l2.31 4.68a2.12 2.12 0 0 0 1.6 1.16l5.16.76a.53.53 0 0 1 .3.9l-3.74 3.64a2.12 2.12 0 0 0-.61 1.88l.88 5.14a.53.53 0 0 1-.77.56l-4.62-2.43a2.12 2.12 0 0 0-1.97 0L6.4 21.01a.53.53 0 0 1-.77-.56l.88-5.14a2.12 2.12 0 0 0-.61-1.88L2.16 9.8a.53.53 0 0 1 .3-.91l5.16-.75a2.12 2.12 0 0 0 1.6-1.16z'/%3E%3C/svg%3E")}
.ic-activity{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 12h-4l-3 9L9 3l-3 9H2'/%3E%3C/svg%3E")}
.ic-list-checks{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m3 17 2 2 4-4M3 7l2 2 4-4M13 6h8M13 12h8M13 18h8'/%3E%3C/svg%3E")}
.ic-link{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E")}
.ic-undo{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7v6h6M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13'/%3E%3C/svg%3E")}
.ic-grip{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5h.01M9 12h.01M9 19h.01M15 5h.01M15 12h.01M15 19h.01'/%3E%3C/svg%3E")}
.ic-at{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-4 8'/%3E%3C/svg%3E")}
.ic-help{--i:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3M12 17h.01'/%3E%3C/svg%3E")}

/* ───────── 4. Marque ───────── */
.logo{display:inline-block;flex:none;width:28px;height:28px;border-radius:8px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 28 28'%3E%3Crect width='28' height='28' rx='8' fill='%235865F2'/%3E%3Cpath d='M8.5 9h11M8.5 14h7M8.5 19h11' stroke='white' stroke-width='2.4' stroke-linecap='round'/%3E%3Ccircle cx='20' cy='14' r='1.6' fill='white'/%3E%3C/svg%3E") center/cover no-repeat}
.logo-lg{width:40px;height:40px;border-radius:11px}
.wordmark{font:600 16px/20px var(--f-title);letter-spacing:-.01em;color:var(--fg-1)}

/* ───────── 5. Boutons ───────── */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:var(--r-2);border:1px solid transparent;font:500 14px/20px var(--f-body);cursor:pointer;white-space:nowrap;text-decoration:none!important;color:var(--fg-1);background:transparent;transition:background-color var(--d-1) var(--e-out),border-color var(--d-1) var(--e-out),color var(--d-1) var(--e-out),transform var(--d-1) var(--e-out)}
.btn::after{content:"";position:absolute;inset:-2px}
.btn:active{transform:translateY(1px)}
.btn-sm{height:32px;padding:0 12px;font-size:13px;gap:6px}.btn-sm::after{inset:-6px -2px}
.btn-lg{height:48px;padding:0 22px;font-size:15px;border-radius:10px}
.btn-block{width:100%}
.btn-primary{background:var(--accent);color:#fff!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 1px 2px rgba(0,0,0,.25)}
.btn-primary:hover,.btn-primary.is-hover{background:var(--accent-hover)}
.btn-primary:active,.btn-primary.is-press{background:var(--accent-press)}
.btn-secondary{background:var(--bg-2);border-color:var(--line-2);color:var(--fg-1)}
.btn-secondary:hover,.btn-secondary.is-hover{background:var(--bg-3);border-color:var(--line-3)}
.btn-ghost{color:var(--fg-2)}
.btn-ghost:hover,.btn-ghost.is-hover{background:var(--bg-3);color:var(--fg-1)}
.btn-danger{background:var(--danger-solid);color:#fff!important}
.btn-danger:hover,.btn-danger.is-hover{background:#BA2839}
.btn-danger-ghost{color:var(--danger)}
.btn-danger-ghost:hover,.btn-danger-ghost.is-hover{background:var(--danger-soft)}
.btn[disabled],.btn.is-disabled{opacity:.42;cursor:not-allowed;box-shadow:none;transform:none}
.btn.is-loading{cursor:progress}
.icon-btn{width:40px;padding:0}.icon-btn.btn-sm{width:32px}
.spin{display:inline-block;flex:none;width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:evi-spin .7s linear infinite}
@keyframes evi-spin{to{transform:rotate(360deg)}}
.kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:5px;border:1px solid var(--line-2);border-bottom-width:2px;font:500 11px/1 var(--f-mono);color:var(--fg-3)}

/* ───────── 6. Formulaires ───────── */
.field{display:flex;flex-direction:column;gap:6px;min-width:0}
.label{font-size:13px;line-height:18px;font-weight:500;color:var(--fg-1)}
.label .opt{color:var(--fg-3);font-weight:400}
.help{font-size:12px;line-height:17px;color:var(--fg-3);text-wrap:pretty}
.err{display:flex;gap:6px;align-items:flex-start;font-size:12px;line-height:17px;color:var(--danger)}
.err .ic{margin-top:1px}
.input{position:relative;display:flex;align-items:center;gap:8px;width:100%;min-height:40px;padding:0 12px;border-radius:var(--r-2);background:var(--bg-inset);border:1px solid var(--line-2);color:var(--fg-1);transition:border-color var(--d-1) var(--e-out),box-shadow var(--d-2) var(--e-out)}
.input:hover,.input.is-hover{border-color:var(--line-3)}
.input:focus-within,.input.is-focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none!important}
.input.is-error{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}
.input.is-disabled{opacity:.5;cursor:not-allowed}
.input input,.input textarea{flex:1 1 auto;min-width:0;width:100%;border:0;outline:0;background:transparent;color:inherit;font:inherit;padding:0;margin:0}
.input input::placeholder,.input textarea::placeholder{color:var(--fg-3)}
.input .ic{color:var(--fg-3)}
.input .unit{display:flex;align-items:center;height:24px;padding-left:10px;border-left:1px solid var(--line-2);color:var(--fg-3);font-size:13px;white-space:nowrap}
.input-num{width:128px}
.input-num input{font-variant-numeric:tabular-nums;font-weight:500}
.textarea{align-items:flex-start;padding:10px 12px;line-height:22px}
.select{cursor:pointer;text-align:left;justify-content:flex-start}
.select .chev{margin-left:auto}
.select .ph{color:var(--fg-3)}
.inline-num{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 6px 0 10px;border-radius:var(--r-2);background:var(--bg-inset);border:1px solid var(--line-2);vertical-align:middle}
.inline-num input{width:32px;border:0;outline:0;background:transparent;color:var(--fg-1);font:600 14px var(--f-body);font-variant-numeric:tabular-nums;text-align:right}
.inline-num .unit{font-size:13px;color:var(--fg-3)}

/* Interrupteur */
.switch{position:relative;flex:none;width:40px;height:24px;border-radius:var(--r-full);background:var(--bg-3);border:1px solid var(--line-3);padding:0;margin:0;cursor:pointer;transition:background-color var(--d-2) var(--e-out),border-color var(--d-2) var(--e-out)}
.switch::before{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--fg-3);transition:transform var(--d-2) var(--e-spring),background-color var(--d-2) var(--e-out)}
.switch::after{content:"";position:absolute;inset:-11px -4px}
.switch[aria-checked="true"]{background:var(--accent);border-color:var(--accent)}
.switch[aria-checked="true"]::before{transform:translateX(16px);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235865F2' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/10px no-repeat}
.switch.is-hover{border-color:var(--fg-3)}
.switch[disabled],.switch.is-disabled{opacity:.42;cursor:not-allowed}
.switch.is-loading::before{background:transparent;border:2px solid #fff;border-right-color:transparent;animation:evi-spin .7s linear infinite}
.switch-lab{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--fg-2)}

/* Case / radio */
.check{appearance:none;flex:none;width:18px;height:18px;margin:0;border-radius:5px;border:1.5px solid var(--line-3);background:var(--bg-inset);display:grid;place-items:center;cursor:pointer}
.check:checked{background:var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/12px no-repeat;border-color:var(--accent)}
.radio{appearance:none;flex:none;width:18px;height:18px;margin:0;border-radius:50%;border:1.5px solid var(--line-3);background:var(--bg-inset);cursor:pointer}
.radio:checked{border:5px solid var(--accent);background:#fff}

/* Pastilles rôle / salon */
.chip{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border-radius:var(--r-full);background:var(--bg-3);border:1px solid var(--line-2);font-size:13px;line-height:18px;color:var(--fg-1);white-space:nowrap}
.chip .dot{width:10px;height:10px;border-radius:50%;background:var(--c,#99AAB5);flex:none;box-shadow:0 0 0 2px rgba(0,0,0,.18)}
.chip-x{position:relative;display:grid;place-items:center;width:18px;height:18px;margin-right:-4px;border:0;border-radius:50%;background:transparent;color:var(--fg-3);cursor:pointer;padding:0}
.chip-x::after{content:"";position:absolute;inset:-10px -6px}
.chip-x:hover{background:var(--bg-2);color:var(--fg-1)}
.chip-channel{border-radius:var(--r-1);padding:0 8px}
.chip-channel .ic{color:var(--fg-3)}
.chip-add{border-style:dashed;background:transparent;color:var(--fg-2);cursor:pointer}
.chip.is-error{border-color:var(--danger-line);background:var(--danger-soft)}
.multi{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;padding:7px 8px;height:auto}

/* Éditeur de tags */
.tags{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:44px;padding:7px 8px;height:auto}
.tag{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 6px 0 10px;border-radius:var(--r-1);background:var(--bg-3);border:1px solid var(--line-2);font:500 12.5px/1 var(--f-mono);color:var(--fg-1)}
.tag.is-dup{border-color:var(--warn-line);background:var(--warn-soft)}
.tags input{flex:1 1 180px;min-width:140px;height:28px}
.var{display:inline-flex;align-items:center;height:22px;padding:0 6px;border-radius:5px;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-fg);font:500 12.5px/1 var(--f-mono);white-space:nowrap;vertical-align:1px}
button.var{cursor:pointer;height:28px}

/* Segmenté / onglets */
.seg{display:inline-flex;gap:2px;padding:3px;border-radius:10px;background:var(--bg-inset);border:1px solid var(--line)}
.seg button{position:relative;height:30px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--fg-2);font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}
.seg button::after{content:"";position:absolute;inset:-7px 0}
.seg button[aria-pressed="true"]{background:var(--bg-3);color:var(--fg-1);box-shadow:0 1px 2px rgba(0,0,0,.25),inset 0 0 0 1px var(--line-2)}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line)}
.tab{position:relative;display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 12px;border:0;background:transparent;color:var(--fg-2);font-weight:500;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;text-decoration:none!important}
.tab:hover{color:var(--fg-1)}
.tab[aria-selected="true"],.tab.is-active{color:var(--fg-1);border-bottom-color:var(--accent)}
.tab .count{font-size:12px;color:var(--fg-3);font-variant-numeric:tabular-nums}

/* ───────── 7. Surfaces ───────── */
.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-3);box-shadow:var(--sh-1);min-width:0}
.card-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 24px}
.card-h + .card-b{padding-top:0}
.card-b{padding:20px 24px}
.card-f{display:flex;align-items:center;gap:12px;padding:14px 24px;border-top:1px solid var(--line)}
.card-title{font:600 15px/22px var(--f-title);letter-spacing:-.005em}
.card-desc{font-size:13px;line-height:19px;color:var(--fg-3);margin-top:2px;text-wrap:pretty}
.set-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:16px 24px;border-top:1px solid var(--line)}
.set-row .set-t{font-weight:500}
.set-row .set-d{font-size:13px;line-height:19px;color:var(--fg-3);margin-top:2px}
.elev-1{box-shadow:var(--sh-1)}.elev-2{box-shadow:var(--sh-2)}.elev-3{box-shadow:var(--sh-3)}
.pop{background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-3);box-shadow:var(--sh-2);padding:6px}
.opt{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;border-radius:var(--r-2);color:var(--fg-1);font-size:14px}
.opt.is-hl{background:var(--bg-3)}
.opt .meta{margin-left:auto;font-size:12px;color:var(--fg-3)}
.opt-group{padding:8px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.opt.is-disabled{color:var(--fg-3)}
.sentence{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:10px;background:var(--bg-inset);border:1px solid var(--line);font-size:14px;line-height:22px;color:var(--fg-2)}
.sentence strong{color:var(--fg-1);font-weight:600;font-variant-numeric:tabular-nums}

/* ───────── 8. Statuts ───────── */
.badge{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 8px;border-radius:var(--r-1);font-size:12px;line-height:1;font-weight:500;background:var(--bg-3);color:var(--fg-2);white-space:nowrap;border:1px solid transparent}
.badge .ic{width:12px;height:12px}
.b-ok{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-line)}
.b-warn{background:var(--warn-soft);color:var(--warn);border-color:var(--warn-line)}
.b-danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger-line)}
.b-info{background:var(--info-soft);color:var(--info);border-color:var(--info-line)}
.b-accent{background:var(--accent-soft);color:var(--accent-fg);border-color:var(--accent-line)}
.dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%;background:var(--c,var(--fg-3))}
.dot-ok{--c:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}
.dot-warn{--c:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}
.dot-danger{--c:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}
.banner{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;border-radius:10px;border:1px solid var(--line-2);background:var(--bg-2);font-size:13px;line-height:19px;color:var(--fg-2)}
.banner strong{color:var(--fg-1);font-weight:600}
.bn-warn{background:var(--warn-soft);border-color:var(--warn-line)}.bn-warn>.ic{color:var(--warn)}
.bn-danger{background:var(--danger-soft);border-color:var(--danger-line)}.bn-danger>.ic{color:var(--danger)}
.bn-info{background:var(--info-soft);border-color:var(--info-line)}.bn-info>.ic{color:var(--info)}
.bn-ok{background:var(--ok-soft);border-color:var(--ok-line)}.bn-ok>.ic{color:var(--ok)}
.banner>.ic{margin-top:2px}
.progress{height:6px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.progress>span{display:block;height:100%;border-radius:inherit;background:var(--accent)}
.xpbar{height:4px;border-radius:var(--r-full);background:var(--bg-3);overflow:hidden}
.xpbar>span{display:block;height:100%;background:var(--accent-fg);border-radius:inherit}

/* Retour / toasts / savebar */
.toast{display:flex;align-items:flex-start;gap:12px;width:380px;padding:14px 12px 14px 16px;border-radius:12px;background:var(--bg-2);border:1px solid var(--line-2);box-shadow:var(--sh-3);animation:evi-in var(--d-3) var(--e-out) both}
.toast .t-ic{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;flex:none}
.toast .t-ic.ok{background:var(--ok-soft);color:var(--ok)}
.toast .t-ic.danger{background:var(--danger-soft);color:var(--danger)}
.toast .t-ic.info{background:var(--info-soft);color:var(--info)}
.toast-t{font-weight:600;font-size:14px}
.toast-d{font-size:13px;line-height:19px;color:var(--fg-2);margin-top:2px;text-wrap:pretty}
.savebar{display:flex;align-items:center;gap:16px;padding:8px 8px 8px 18px;border-radius:14px;background:var(--bg-2);border:1px solid var(--line-3);box-shadow:var(--sh-3);animation:evi-rise var(--d-3) var(--e-out) both}
.savebar .dot{--c:var(--warn)}
@keyframes evi-in{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}
@keyframes evi-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

/* Modale / drawer */
.scrim{position:absolute;inset:0;background:var(--scrim);backdrop-filter:blur(2px)}
.modal{position:relative;width:480px;background:var(--bg-2);border:1px solid var(--line-2);border-radius:var(--r-4);box-shadow:var(--sh-3)}
.modal-b{padding:24px}
.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--line);background:var(--bg-1);border-radius:0 0 var(--r-4) var(--r-4)}
.drawer{background:var(--bg-2);border-left:1px solid var(--line-2);box-shadow:var(--sh-3);display:flex;flex-direction:column}
.sheet{background:var(--bg-2);border-top:1px solid var(--line-2);border-radius:20px 20px 0 0;box-shadow:var(--sh-3)}
.grabber{width:40px;height:4px;border-radius:4px;background:var(--line-3);margin:8px auto 0}

/* Squelettes */
.skel{border-radius:6px;background:linear-gradient(90deg,var(--bg-2) 0%,var(--bg-3) 40%,var(--bg-2) 80%);background-size:250% 100%;animation:evi-shimmer 1.6s var(--e-io) infinite}
@keyframes evi-shimmer{from{background-position:100% 0}to{background-position:-150% 0}}

/* État vide */
.empty{display:flex;flex-direction:column;align-items:center;text-align:center;gap:12px;padding:40px 24px}
.empty .t-h3{margin-top:8px}
.empty p{max-width:380px;color:var(--fg-3);font-size:13px;line-height:20px;text-wrap:pretty}
.il-0{fill:var(--bg-2)}.il-1{fill:var(--bg-3)}.il-2{fill:var(--accent-soft)}.il-3{fill:var(--accent)}
.il-s{stroke:var(--line-3);fill:none;stroke-width:1.5}
.il-a{stroke:var(--accent-fg);fill:none;stroke-width:1.5}
.il-d{stroke:var(--line-3);fill:none;stroke-width:1.5;stroke-dasharray:4 4}

/* ───────── 9. Données ───────── */
.table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}
.table th{height:40px;padding:0 16px;text-align:left;font-size:12px;font-weight:500;color:var(--fg-3);border-bottom:1px solid var(--line);white-space:nowrap;background:var(--bg-1)}
.table td{height:56px;padding:0 16px;border-bottom:1px solid var(--line);color:var(--fg-2);vertical-align:middle}
.table tr:last-child td{border-bottom:0}
.table tbody tr:hover td,.table tr.is-hover td{background:var(--bg-2)}
.table .strong{color:var(--fg-1);font-weight:500}
.table th.r,.table td.r{text-align:right}
.av{display:inline-grid;place-items:center;flex:none;width:32px;height:32px;border-radius:50%;background:var(--c,#4B55C8);color:#fff;font-size:12px;font-weight:600;letter-spacing:.02em}
.av-24{width:24px;height:24px;font-size:10px}.av-40{width:40px;height:40px;font-size:14px}.av-48{width:48px;height:48px;font-size:16px}
.srv{display:inline-grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;background:var(--c,#4B55C8);color:#fff;font:600 14px var(--f-title)}
.srv-24{width:24px;height:24px;border-radius:7px;font-size:10px}.srv-28{width:28px;height:28px;border-radius:8px;font-size:11px}.srv-56{width:56px;height:56px;border-radius:16px;font-size:19px}
.kpi-v{font:600 32px/36px var(--f-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.kpi-u{font:500 16px var(--f-title);color:var(--fg-3);margin-left:4px}
.delta{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums}
.delta .ic{width:12px;height:12px}
.d-good{color:var(--ok)}.d-bad{color:var(--danger)}.d-flat{color:var(--fg-3)}
.feed-i{display:grid;grid-template-columns:32px 1fr auto;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.feed-ic{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--bg-3);color:var(--fg-2)}
.rank{display:inline-grid;place-items:center;width:24px;font:600 13px var(--f-title);color:var(--fg-3);font-variant-numeric:tabular-nums}
.emo{display:inline-grid;place-items:center;flex:none;width:32px;height:32px;border-radius:8px;background:var(--bg-3);border:1px solid var(--line-2)}

/* ───────── 10. Shell ───────── */
.shell{display:grid;grid-template-columns:248px 1fr;align-items:stretch}
.shell-side{background:var(--bg-1);border-right:1px solid var(--line);min-height:100%}
.shell-main{display:flex;flex-direction:column;min-width:0}
.page{display:flex;flex-direction:column;gap:24px;padding:32px 40px 140px;max-width:1192px}
.page-h{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.page-d{color:var(--fg-3);font-size:14px;line-height:21px;margin-top:6px;max-width:640px;text-wrap:pretty}
.crumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--fg-3)}
.grid-12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:start}
.nav-gt{padding:0 10px 6px;font-size:11px;line-height:16px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--fg-3)}
.nav-i{position:relative;display:flex;align-items:center;gap:10px;min-height:36px;padding:8px 10px;border-radius:var(--r-2);color:var(--fg-2)!important;font-weight:500;text-decoration:none!important;transition:background-color var(--d-1) var(--e-out)}
.nav-i::after{content:"";position:absolute;inset:-4px 0}
.nav-i:hover{background:var(--bg-2);color:var(--fg-1)!important}
.nav-i.is-active{background:var(--accent-soft);color:var(--fg-1)!important}
.nav-i.is-active .ic{color:var(--accent-fg)}
.nav-i .count{margin-left:auto;min-width:22px;height:20px;padding:0 6px;border-radius:10px;background:var(--bg-3);font-size:11px;font-weight:600;display:grid;place-items:center;color:var(--fg-2);font-variant-numeric:tabular-nums}
.nav-i.is-active .count{background:var(--accent);color:#fff}
.m-page{display:flex;flex-direction:column;gap:16px;padding:20px 16px 120px}
.m-savebar{position:absolute;left:12px;right:12px;bottom:16px;display:flex;align-items:center;gap:8px;padding:8px 8px 8px 14px;border-radius:14px;background:var(--bg-2);border:1px solid var(--line-3);box-shadow:var(--sh-3)}

/* ───────── 11. Aperçu Discord (composant signature) ───────── */
.dp{background:var(--dp-bg);border:1px solid var(--line);border-radius:var(--r-3);overflow:hidden}
.dp-bar{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px 0 16px;border-bottom:1px solid var(--line);font-size:13px;color:var(--fg-2);background:var(--bg-1)}
.dp-bar .ch{display:flex;align-items:center;gap:4px;color:var(--fg-1);font-weight:600}
.dp-body{padding:16px 16px 20px}
.dp-msg{display:grid;grid-template-columns:40px 1fr;column-gap:14px}
.dp-av{width:40px;height:40px;border-radius:50%}
.dp-av.logo{border-radius:50%;width:40px;height:40px}
.dp-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.dp-name{font-weight:600;color:var(--dp-name);font-size:15px}
.dp-bot{display:inline-flex;align-items:center;gap:3px;height:16px;padding:0 5px;border-radius:4px;background:var(--accent);color:#fff;font-size:10px;font-weight:700;letter-spacing:.02em}
.dp-time{font-size:12px;color:var(--fg-3)}
.dp-text{color:var(--dp-fg);font-size:15px;line-height:22px;margin-top:2px;text-wrap:pretty}
.dp-text strong{color:var(--dp-name)}
.dp-mention{background:var(--dp-mention-bg);color:var(--dp-mention);border-radius:3px;padding:0 2px;font-weight:500}
.dp-chan{background:var(--dp-mention-bg);color:var(--dp-mention);border-radius:3px;padding:0 2px;font-weight:500}
.dp-embed{margin-top:8px;max-width:440px;padding:12px 16px 16px;border-radius:4px;background:var(--dp-embed);box-shadow:inset 4px 0 0 var(--c,var(--accent));display:flex;flex-direction:column;gap:8px}
.dp-embed-a{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--dp-name)}
.dp-embed-t{font-weight:700;color:var(--dp-name);font-size:15px;line-height:20px}
.dp-embed-d{color:var(--dp-fg);font-size:14px;line-height:20px;text-wrap:pretty}
.dp-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px}
.dp-f-n{font-size:13px;font-weight:700;color:var(--dp-name)}
.dp-f-v{font-size:14px;color:var(--dp-fg)}
.dp-foot{font-size:12px;color:var(--fg-3)}
.dp-btns{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.dp-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 16px;border-radius:6px;background:var(--accent);color:#fff;font-size:14px;font-weight:500}
.dp-btn.gray{background:var(--dp-gray)}
.dp-btn.red{background:#C93C47}
.dp-img{margin-top:8px;border-radius:8px;overflow:hidden;max-width:440px}
.dp-react{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 8px;border-radius:8px;background:var(--dp-embed);border:1px solid var(--line-2);font-size:13px;color:var(--dp-fg);font-variant-numeric:tabular-nums}
.dp-react.is-mine{background:var(--accent-soft);border-color:var(--accent)}

/* Documentation (planches) */
.doc{padding:80px;display:flex;flex-direction:column;gap:64px}
.doc-h{display:flex;flex-direction:column;gap:8px;max-width:760px}
.doc-sec{display:flex;flex-direction:column;gap:24px}
.doc-st{font:600 22px/28px var(--f-title);letter-spacing:-.01em;display:flex;align-items:baseline;gap:12px}
.doc-st .n{font:500 13px var(--f-mono);color:var(--fg-3)}
.doc-k{font:500 11px/16px var(--f-mono);color:var(--fg-3);letter-spacing:.02em}
.doc-tile{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-3);padding:24px;display:flex;flex-direction:column;gap:16px}
.sw{height:64px;border-radius:10px;border:1px solid rgba(255,255,255,.06)}
.state-l{font:500 11px/16px var(--f-mono);color:var(--fg-3)}

@media (prefers-reduced-motion:reduce){
  .app *,.app *::before,.app *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .skel{background:var(--bg-3)}
}
