  /* ══════════════════════════════════════════════════
     BUREAU v7 — bento arrondi (d'après les inspis de Mathis :
     Globe Reppel, Project 02, grille de features arrondie)
     Reprend la palette froide ardoise de la v6 (le retour sur "kraft"
     tenait au beige, pas au fond froid) mais réintroduit ce que la v6
     avait supprimé : coins généreusement arrondis, ombres douces et
     diffuses (pas de décalage net), puces/badges en pilule. Numéro de
     colonne agrandi en filigrane (façon "02" géant de Project 02) et
     un bloc plein corail parmi les chips de stats (façon carte lime
     unique au milieu de cartes neutres, ref. grille de features).
  ══════════════════════════════════════════════════ */
  :root {
    --radius-card: 18px;
    --sidebar-w: 250px;
  }

  :root[data-theme="light"] {
    --bg: #EBEEF0; --bg-elev: #FFFFFF; --bg-sunken: #E2E7EA;
    --border: rgba(46,64,87,.14); --border-strong: rgba(46,64,87,.26);
    --text: #171B1F; --text-soft: #5B6570; --text-faint: #B7C0C7;
    --accent: #FF6A45; --accent-soft: rgba(255,106,69,.13);
    --accent-a: var(--accent); --accent-b: var(--accent); --accent-grad: var(--accent);
    --ink: #171612; --ink-text: #FFFFFF;
    --mine: #2E4057; --stamp: #B23A2E;
    --red: #E14F4F; --orange: #FF9142; --yellow: #F0B429; --green: #2FAE72; --gray: #A7A398; --blue: #4C8DFF; --purple: #9B7EDE; --pink: #E8749A;
    --col-a_traiter-text: var(--accent);
    --col-en_cours-text: var(--orange);
    --col-boucle-text: var(--green);
    --shadow: 0 1px 3px rgba(23,27,31,.05), 0 10px 24px -12px rgba(23,27,31,.12);
    --shadow-lift: 0 14px 32px -12px rgba(255,106,69,.30);
    --sidebar-bg: var(--bg);
    color-scheme: light;
  }
  :root[data-theme="dark"] {
    --bg: #14171B; --bg-elev: #1C2024; --bg-sunken: #191C20;
    --border: rgba(158,181,204,.16); --border-strong: rgba(158,181,204,.28);
    --text: #EDF0F2; --text-soft: #94A0AB; --text-faint: #4C555E;
    --accent: #FF7D5C; --accent-soft: rgba(255,125,92,.20);
    --accent-a: var(--accent); --accent-b: var(--accent); --accent-grad: var(--accent);
    --ink: #EDF0F2; --ink-text: #14171B;
    --mine: #7C97B8; --stamp: #E2604C;
    --red: #FF6E6E; --orange: #FFA35E; --yellow: #FFD166; --green: #3FC28A; --gray: #716D77; --blue: #6FA8FF; --purple: #B49CE8; --pink: #F08FB0;
    --col-a_traiter-text: var(--accent);
    --col-en_cours-text: var(--orange);
    --col-boucle-text: var(--green);
    --shadow: 0 4px 16px rgba(0,0,0,.34);
    --shadow-lift: 0 16px 34px -12px rgba(255,125,92,.32);
    --sidebar-bg: var(--bg);
    color-scheme: dark;
  }

  *{ box-sizing: border-box; }
  html, body { margin: 0; padding: 0; height: 100%; }
  /* Fond posé sur html, pas sur body : body est position:fixed (ci-dessous), et
     Safari 26/iOS 26+ échantillonne le fond des éléments position:fixed proches
     des bords d'écran pour teinter sa propre interface (barre de statut, barre du
     bas) — html reste en position statique normale, hors de cet échantillonnage. */
  html { background: var(--bg); }
  body {
    color: var(--text);
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    /* position:fixed, pas juste overflow:hidden : sur iOS Safari, overflow:hidden
       seul n'empêche pas la page de "se balader"/rebondir au doigt (bug WebKit
       connu). En sortant body du flux normal, il n'y a plus DE page à faire
       défiler — seuls .view/.sidebar/.drawer/etc défilent, chacun pour soi. */
    overflow: hidden; position: fixed; inset: 0; touch-action: manipulation;
  }
  button, a, .task-card, .nav-item, .rubrique-item, .pill-btn, .mini-btn, .icon-round { touch-action: manipulation; }
  button, input, select, textarea { font-family: inherit; }
  a { color: var(--accent); }
  ::selection { background: var(--accent); color: #fff; }
  * { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; }
  *::-webkit-scrollbar { width: 6px; height: 6px; }
  *::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 6px; }

  .aurora { display: none; }

  .app-shell { position: relative; z-index: 1; display: flex; height: 100vh; padding: 16px; gap: 16px; }

  /* ════════════════ SIDEBAR ════════════════ */
  .sidebar {
    /* Fond direct, PAS un ::before absolute : ça a été tenté (théorie Liquid Glass,
       voir mémoire) et ça a rendu les choses PIRES — le fond ne suivait plus le
       contenu au-delà d'un écran de défilement, laissant tout le bas du menu
       fantôme, sans fond, par-dessus le tableau derrière. Retour à la version
       simple qui marchait mieux (seul un léger artefact près du tout premier item
       restait, contre tout le bas du menu illisible avec le ::before). */
    width: var(--sidebar-w); flex: 0 0 var(--sidebar-w);
    background: var(--sidebar-bg);
    border: 1px solid var(--border); border-radius: 20px; box-shadow: var(--shadow);
    display: flex; flex-direction: column; padding: 18px 14px;
    overflow-y: auto; overflow-x: hidden; overscroll-behavior: contain;
  }
  .brand { display: flex; align-items: center; gap: 10px; padding: 4px 6px 22px; }
  .logo-mark {
    width: 34px; height: 34px; border-radius: 10px; flex-shrink: 0;
    background: var(--ink); box-shadow: 0 6px 14px -6px color-mix(in srgb, var(--ink) 60%, transparent);
    display: flex; align-items: center; justify-content: center;
  }
  .logo-mark svg { width: 18px; height: 18px; stroke: var(--ink-text); }
  .brand-name { font-family: 'Space Grotesk', sans-serif; font-weight: 700; font-size: 16px; letter-spacing: -.01em; color: var(--text); }

  .sidebar-title {
    font-size: 10.5px; font-weight: 700; color: var(--text-faint);
    text-transform: uppercase; letter-spacing: .1em; padding: 4px 10px 8px;
  }
  /* Grille bento plutôt qu'une liste : même vocabulaire que le tableau de bord
     (tuile large + tuiles carrées, une seule remplie à la fois — l'état "actif",
     pas de couleur décorative fixe par destination). */
  .nav-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 6px; }
  /* Même espacement que .nav-grid (8px), mais sur une seule colonne — pour les
     boutons "IA" qui ne sont pas dans une grille 2 colonnes. Sans ce conteneur,
     ils s'empilaient avec quasi aucun espace (signalé le 27/08 : "trop peu espacé
     par rapport aux cartes de Vues"). */
  .nav-list { display: flex; flex-direction: column; gap: 8px; margin-bottom: 6px; }
  .nav-item {
    display: flex; flex-direction: column; align-items: flex-start; gap: 14px; text-align: left;
    background: var(--bg-elev); border: 1px solid var(--border); color: var(--text-soft);
    font-size: 12px; font-weight: 600;
    padding: 12px 12px 11px; border-radius: 16px; cursor: pointer; position: relative;
    box-shadow: var(--shadow);
    transition: background .18s ease, color .15s ease, transform .12s ease, box-shadow .15s ease, border-color .15s ease;
  }
  .nav-item[data-view="board"] { grid-column: span 2; flex-direction: row; align-items: center; gap: 11px; font-size: 13.5px; }
  .nav-icon { width: 18px; height: 18px; flex-shrink: 0; opacity: .6; transition: opacity .15s ease, transform .18s ease; }
  .nav-item[data-view="board"] .nav-icon { width: 20px; height: 20px; }
  .nav-item:hover { transform: translateY(-2px); box-shadow: var(--shadow-lift); border-color: var(--accent-a); color: var(--text); }
  .nav-item:hover .nav-icon { opacity: .95; }
  .nav-item.active {
    background: var(--ink); color: var(--ink-text); border-color: transparent; font-weight: 700;
  }
  .nav-item.active .nav-icon { opacity: 1; color: var(--ink-text); }
  .nav-item:active { transform: scale(.97); }
  .nav-item .badge {
    margin-left: auto; font-size: 10.5px; font-weight: 700; background: var(--bg-sunken); color: var(--text-soft);
    padding: 1px 8px; border-radius: 999px; font-family: 'JetBrains Mono', monospace;
    transition: background .15s ease, color .15s ease;
  }
  .nav-item[data-view="board"].active .badge { background: rgba(255,255,255,.18); color: var(--ink-text); }
  .nav-item:not([data-view="board"]) .badge {
    position: absolute; top: 10px; right: 10px; margin-left: 0; padding: 0 6px; font-size: 9.5px;
  }
  .nav-item:not([data-view="board"]).active .badge { background: rgba(255,255,255,.18); color: var(--ink-text); }

  /* min-content empêche la liste des rubriques d'être écrasée à 0 px quand la fenêtre
     est courte : c'est la sidebar entière qui défile, pas cette zone qui se replie.
     flex-grow garde le profil et le pied de menu collés en bas sur grand écran. */
  .sidebar-section { margin-top: 4px; flex: 1 1 auto; min-height: min-content; overflow-y: visible; }
  /* position:static plutôt que sticky : le même sticky+scroll dans un conteneur
     arrondi (.sidebar a border-radius + overflow-y:auto) causait déjà un artefact
     de rendu fantôme sur mobile (voir le média-query plus bas) — signalé le 27/08
     comme un petit décroché visuel au défilement sur desktop aussi. Même cause,
     même remède : la marque défile avec le reste du menu au lieu de rester collée. */
  .brand { position: static; background: var(--sidebar-bg); z-index: 2; }
  .rubrique-item {
    display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
    background: none; border: none; color: var(--text-soft); font-size: 12.5px; padding: 7px 12px;
    border-radius: 10px; cursor: pointer; margin-bottom: 1px; transition: background .15s ease, color .15s ease;
  }
  .rubrique-item:hover { background: var(--bg-sunken); color: var(--text); }
  .rubrique-item.active { background: var(--accent-soft); color: var(--accent-a); font-weight: 700; }
  .rubrique-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--accent-grad); flex-shrink: 0; }

  .sidebar-profile {
    display: flex; align-items: center; gap: 10px; padding: 9px 10px; border-radius: 13px;
    background: var(--bg-sunken); margin-bottom: 8px; border: 1px solid var(--border);
  }
  .sidebar-profile[hidden] { display: none; }
  .sidebar-avatar {
    width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; background: var(--accent-grad); color: #fff;
    display: flex; align-items: center; justify-content: center; font-size: 12.5px; font-weight: 700;
    font-family: 'Space Grotesk', sans-serif;
  }
  .sidebar-profile-info { min-width: 0; flex: 1; }
  .sidebar-profile-name { font-size: 12.5px; font-weight: 700; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .sidebar-profile-email { font-size: 10.5px; color: var(--text-faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

  .sidebar-footer { border-top: 1px solid var(--border); padding-top: 10px; display: flex; flex-direction: column; gap: 2px; }
  .sidebar-btn {
    display: flex; align-items: center; gap: 10px; background: none; border: none; color: var(--text-soft);
    font-size: 12.5px; font-weight: 500; padding: 8px 12px; border-radius: 10px; cursor: pointer; text-align: left; width: 100%;
    transition: background .15s ease, color .15s ease;
  }
  .sidebar-btn:hover { background: var(--bg-sunken); color: var(--text); }

  /* ════════════════ CONTENT AREA ════════════════ */
  .content {
    flex: 1; display: flex; flex-direction: column; min-width: 0;
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 20px;
    box-shadow: var(--shadow); overflow: hidden;
  }
  .content-header {
    display: flex; align-items: center; gap: 12px; padding: 20px 28px 8px; flex-wrap: wrap;
  }
  .header-titles { margin-right: auto; }
  .content-title { font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 700; margin: 0; letter-spacing: -.01em; }
  .content-subtitle { font-size: 12.5px; color: var(--text-soft); margin-top: 2px; }
  .search-field { position: relative; flex: 0 1 240px; }
  .search-field input {
    width: 100%; background: var(--bg-elev); border: 1px solid var(--border); color: var(--text);
    padding: 9px 12px 9px 34px; border-radius: 12px; font-size: 13px; box-shadow: var(--shadow);
    transition: border-color .15s ease, box-shadow .15s ease;
  }
  .search-field input:focus { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); outline: none; }
  .search-field::before { content: "⌕"; position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--text-faint); font-size: 15px; }
  .search-field::after {
    content: "⌘K"; position: absolute; right: 10px; top: 50%; transform: translateY(-50%);
    font-size: 10px; font-family: 'JetBrains Mono', monospace; color: var(--text-faint);
    background: var(--bg-sunken); padding: 2px 6px; border-radius: 6px; pointer-events: none;
  }
  .quick-capture {
    display: flex; align-items: center; gap: 10px; margin: 0 0 14px; padding: 10px 12px;
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 15px; box-shadow: var(--shadow);
  }
  .quick-capture:focus-within { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); }
  .quick-capture-mark {
    width: 28px; height: 28px; border-radius: 9px; flex: 0 0 28px; display: flex; align-items: center; justify-content: center;
    background: var(--ink); color: var(--ink-text); font-size: 17px; font-weight: 600;
  }
  .quick-capture-main { flex: 1; min-width: 0; }
  .quick-capture input {
    width: 100%; border: 0; outline: 0; background: transparent; color: var(--text); font: inherit;
    font-size: 13.5px; padding: 1px 0;
  }
  .quick-capture-hint { margin-top: 3px; color: var(--text-faint); font-size: 10.5px; line-height: 1.3; }
  .quick-capture kbd { font: inherit; font-family: 'JetBrains Mono', monospace; color: var(--text-soft); }
  .quick-capture button { flex-shrink: 0; }
  .pill-select, .pill-btn {
    background: var(--bg-elev); border: 1px solid var(--border); color: var(--text);
    padding: 9px 15px; border-radius: 12px; font-size: 12.5px; font-weight: 600; cursor: pointer;
    box-shadow: var(--shadow); transition: background .15s ease, border-color .15s ease, transform .1s ease, box-shadow .15s ease;
  }
  .pill-btn:hover { border-color: var(--accent-a); transform: translateY(-1px); box-shadow: var(--shadow-lift); }
  .pill-btn:active { transform: scale(.96); }
  .pill-btn.primary {
    background: var(--accent); border-color: transparent; color: #fff; font-weight: 700;
    box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--accent) 65%, transparent);
  }
  .pill-btn.primary:hover { filter: brightness(1.06); box-shadow: 0 10px 24px -6px color-mix(in srgb, var(--accent) 70%, transparent); transform: translateY(-1px); }
  .pill-btn.ink { background: var(--ink); color: var(--ink-text); border-color: transparent; font-weight: 700; }
  .pill-btn.ink:hover { filter: brightness(1.1); }
  .pill-btn.active { background: var(--accent-soft); border-color: var(--accent-a); color: var(--accent-a); }
  :focus-visible { outline: 2px solid var(--accent-a); outline-offset: 2px; }

  .icon-round {
    width: 38px; height: 38px; display: flex; align-items: center; justify-content: center;
    border-radius: 12px; background: var(--bg-elev); border: 1px solid var(--border); cursor: pointer;
    font-size: 16px; color: var(--text-soft); box-shadow: var(--shadow); transition: background .15s ease, color .15s ease, transform .15s ease;
  }
  .icon-round:hover { color: var(--accent-a); border-color: var(--accent-a); transform: translateY(-1px); }

  .stats-strip { display: flex; gap: 10px; padding: 14px 28px 6px; flex-wrap: wrap; }
  .stats-strip[hidden] { display: none; }
  .search-hint {
    display: flex; align-items: center; gap: 10px; margin: 4px 28px 0; padding: 9px 14px;
    border-radius: 12px; background: var(--accent-soft); font-size: 12.5px; color: var(--text);
  }
  .search-hint[hidden] { display: none; }
  .storage-chip {
    margin-left: auto; font-size: 11px; font-family: 'JetBrains Mono', monospace;
    color: var(--text-faint); white-space: nowrap; display: flex; align-items: center; gap: 6px;
  }
  .storage-chip .bar { width: 54px; height: 5px; border-radius: 3px; background: var(--bg-sunken); overflow: hidden; }
  .storage-chip .bar i { display: block; height: 100%; background: var(--green); border-radius: 3px; }
  .storage-chip.warn .bar i { background: var(--orange); }
  .storage-chip.danger .bar i { background: var(--red); }
  .storage-chip.danger { color: var(--red); }
  .search-hint button {
    background: none; border: none; color: var(--accent-a); font-weight: 700; font-size: 12.5px;
    cursor: pointer; padding: 0; text-decoration: underline; font-family: inherit;
  }
  .stat-chip {
    display: flex; align-items: center; gap: 8px; background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: 14px; padding: 8px 14px; box-shadow: var(--shadow); font-size: 11.5px; color: var(--text-soft); font-weight: 600;
  }
  .stat-chip .dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
  .stat-chip b { font-family: 'JetBrains Mono', monospace; color: var(--text); font-weight: 700; font-size: 14px; }
  /* Un bloc plein parmi des cartes neutres — le chip le plus utile (les tâches
     actives) porte la couleur de marque, les autres restent en retrait. */
  .stat-chip.hero {
    background: var(--accent); border-color: transparent; color: var(--ink-text);
    box-shadow: 0 8px 20px -10px color-mix(in srgb, var(--accent) 60%, transparent);
  }
  .stat-chip.hero .dot { background: var(--ink-text) !important; opacity: .7; }
  .stat-chip.hero b { color: var(--ink-text); }

  /* ════════════════ TABLEAU DE BORD (vue Tableau uniquement) ════════════════
     Composition reprise des 3 inspirations de Mathis : chiffre géant qui domine
     (pas un détail), panneau plein en aplats de couleur (pas de dégradé — règle
     de la marque), carte qui déborde par-dessus, grille bento à tailles mêlées. */
  /* Pas de padding horizontal ici : l'élément vit maintenant DANS .view, qui a
     déjà le sien — un padding en plus désaligne le bloc par rapport au board. */
  .dashboard-hero { margin-bottom: 20px; }
  .dashboard-hero[hidden] { display: none; }
  .hero-row { display: grid; grid-template-columns: 1.15fr .85fr; gap: 14px; margin-bottom: 14px; }
  .hero-panel { border-radius: 22px; padding: 20px 24px 18px; position: relative; overflow: hidden; }
  .hero-panel.left { background: var(--bg-elev); border: 1px solid var(--border); box-shadow: var(--shadow); }
  .hero-eyebrow { font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--mine); margin-bottom: 8px; }
  .hero-number {
    font-family: 'Space Grotesk', sans-serif; font-weight: 800; font-size: 62px; line-height: .82;
    letter-spacing: -.03em; color: var(--text); margin: 0 0 2px;
  }
  .hero-panel.left h2 { font-family: 'Space Grotesk', sans-serif; font-size: 16px; font-weight: 700; margin: 6px 0 6px; letter-spacing: -.01em; }
  .hero-panel.left p { font-size: 12.5px; color: var(--text-soft); line-height: 1.45; margin: 0 0 14px; max-width: 420px; }
  .hero-link {
    display: inline-flex; align-items: center; gap: 8px; background: var(--ink); color: var(--ink-text); font-weight: 700;
    font-size: 12px; border-radius: 999px; padding: 8px 6px 8px 16px; border: none; cursor: pointer;
  }
  .hero-link .arr { width: 20px; height: 20px; border-radius: 50%; background: rgba(255,255,255,.16); display: flex; align-items: center; justify-content: center; font-size: 11px; }

  .hero-panel.right { background: var(--accent); color: #fff; display: flex; flex-direction: column; justify-content: space-between; min-height: 150px; }
  /* Masse abstraite en aplats superposés, opacités variables — pas de gradient. */
  .hero-panel.right .blob { position: absolute; border-radius: 50%; pointer-events: none; }
  .hero-panel.right .blob.b1 { width: 220px; height: 220px; background: rgba(255,255,255,.10); top: -70px; right: -80px; }
  .hero-panel.right .blob.b2 { width: 140px; height: 140px; background: rgba(23,22,18,.14); bottom: -60px; right: 20px; }
  .hero-top { position: relative; z-index: 1; }
  .hero-top .tag { font-size: 10.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; opacity: .82; margin-bottom: 8px; }
  .hero-top h3 { font-family: 'Space Grotesk', sans-serif; font-size: 17px; font-weight: 700; line-height: 1.25; margin: 0; max-width: 260px; }
  .hero-float-card {
    position: relative; z-index: 1; align-self: flex-start; background: var(--bg-elev); color: var(--text);
    border-radius: 13px; padding: 10px 14px; box-shadow: 0 14px 28px -14px rgba(0,0,0,.35);
    display: flex; align-items: center; gap: 10px; margin-top: 12px; max-width: 100%;
  }
  .hero-float-card b { font-family: 'JetBrains Mono', monospace; font-size: 15px; flex-shrink: 0; }
  .hero-float-card span { font-size: 10.5px; color: var(--text-soft); line-height: 1.3; }
  .hero-float-card[hidden] { display: none; }

  .bento-tiles { display: grid; grid-template-columns: repeat(6, 1fr); grid-auto-rows: 68px; gap: 12px; }
  .btile {
    border-radius: 16px; padding: 11px 16px; background: var(--bg-elev); border: 1px solid var(--border);
    display: flex; flex-direction: column; justify-content: space-between; position: relative; box-shadow: var(--shadow);
  }
  .btile .b-icon {
    width: 26px; height: 26px; border-radius: 9px; background: var(--bg-sunken);
    display: flex; align-items: center; justify-content: center; font-size: 12px;
  }
  .btile .b-label { font-size: 10.5px; color: var(--text-soft); font-weight: 700; letter-spacing: .03em; text-transform: uppercase; }
  .btile .b-value { font-family: 'JetBrains Mono', monospace; font-weight: 700; font-size: 18px; }
  .btile.wide { grid-column: span 4; }
  .btile.sq { grid-column: span 1; }
  .btile.accent { background: var(--mine); color: #fff; border-color: transparent; }
  .btile.accent .b-icon { background: rgba(255,255,255,.16); }
  .btile.accent .b-label { color: rgba(255,255,255,.72); }
  .week-strip { display: flex; gap: 7px; align-items: center; }
  .week-strip .wd {
    flex: 1; text-align: center; padding: 6px 0; border-radius: 10px; background: var(--bg-sunken);
    font-size: 10px; font-weight: 700; color: var(--text-soft);
  }
  .week-strip .wd.today { background: var(--accent); color: #fff; }
  .week-strip .wd .wdot { width: 4px; height: 4px; border-radius: 50%; background: var(--text-faint); margin: 4px auto 0; }
  .week-strip .wd.has .wdot { background: var(--accent); }
  .week-strip .wd.today .wdot { background: #fff; }
  @media (max-width: 900px) { .dashboard-hero { display: none; } }

  .view { flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 14px 28px 44px; background: var(--bg-sunken); }
  .view[hidden] { display: none; }

  /* ════════════════ BOARD ════════════════ */
  .board { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; align-items: start; }
  .column { background: transparent; border: none; border-radius: 0; padding: 0; position: relative; }
  .column.dragover .cards { outline: 2px dashed var(--accent-a); outline-offset: 4px; border-radius: 16px; }
  /* Le chiffre géant en filigrane (01/02/03) a été essayé puis retiré : quelle que
     soit la position, il rendait mal / se lisait comme un bug plutôt qu'une
     décoration (retours de Mathis). Le titre de colonne se suffit à lui-même. */
  .column h2 {
    font-family: 'Space Grotesk', sans-serif; font-size: 13px; font-weight: 700; color: var(--text);
    text-transform: uppercase; letter-spacing: .04em; position: relative; z-index: 1;
    margin: 0 0 14px 2px; padding-bottom: 10px; border-bottom: 1px solid var(--border);
    display: flex; align-items: baseline; gap: 9px;
  }
  .col-dot { display: none; }
  .column h2 .count {
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 999px;
    padding: 1px 9px; font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--text-soft); font-weight: 600;
  }
  .col-add {
    margin-left: auto; width: 22px; height: 22px; border-radius: 7px; border: 1px solid var(--border);
    background: var(--bg-elev); color: var(--text-soft); cursor: pointer; font-size: 14px; line-height: 1;
    display: flex; align-items: center; justify-content: center; transition: background .15s ease, color .15s ease, border-color .15s ease;
  }
  .col-add:hover { background: var(--accent-a); color: #fff; border-color: var(--accent-a); }
  .prio-time, .prio-duration { font-size: 12.5px; }
  .cards { display: flex; flex-direction: column; gap: 12px; min-height: 60px; border-radius: 16px; transition: outline .15s ease; position: relative; z-index: 1; }
  .empty-note { font-size: 13px; color: var(--text-faint); padding: 24px 8px; font-style: italic; text-align: center; }

  /* ════════════════ TASK CARDS ════════════════ */
  .task-card {
    background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: var(--radius-card); padding: 16px 16px 15px;
    box-shadow: var(--shadow); position: relative; cursor: grab; overflow: hidden;
    animation: card-in .4s cubic-bezier(.16,1,.3,1) both;
    transition: transform .2s cubic-bezier(.16,1,.3,1), box-shadow .2s ease, border-color .2s ease, background .2s ease;
  }
  /* Teinte de fond à peine perceptible selon la priorité — une ambiance, pas une pastille */
  .task-card[data-priority="haute"]   { background: color-mix(in srgb, var(--red) 5%, var(--bg-elev)); }
  .task-card[data-priority="moyenne"] { background: color-mix(in srgb, var(--orange) 4%, var(--bg-elev)); }
  .task-card[data-priority="basse"]   { background: var(--bg-elev); }
  .task-card:hover { transform: translateY(-4px) scale(1.012); box-shadow: var(--shadow-lift); border-color: var(--accent-a); }
  .task-card:active { cursor: grabbing; transform: scale(.99); }
  .task-card.selectable { cursor: pointer; }
  .task-card.selected { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); }
  .task-card.dragging { opacity: .45; }
  @keyframes card-in { from { opacity: 0; transform: translateY(12px) scale(.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
  @media (prefers-reduced-motion: reduce) { .task-card { animation: none; } }

  .select-box {
    position: absolute; top: 14px; left: 14px; width: 19px; height: 19px; z-index: 2; cursor: pointer;
    appearance: none; -webkit-appearance: none; margin: 0; border: 1.5px solid var(--border-strong); border-radius: 7px;
    background: var(--bg-elev); box-shadow: var(--shadow); transition: background .15s ease, border-color .15s ease, transform .12s ease;
  }
  .select-box:hover { border-color: var(--accent); transform: scale(1.06); }
  .select-box:checked {
    background-color: var(--accent); border-color: var(--accent);
    background-image: 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' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
    background-size: 12px; background-repeat: no-repeat; background-position: center;
  }
  .card-top { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; margin-top: 2px; }
  .priority-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
  .card-tag {
    font-size: 10.5px; font-weight: 700; letter-spacing: .01em;
    padding: 3px 10px; border-radius: 999px; line-height: 1.3;
  }
  .badge-pill { font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: 2px 8px; border-radius: 999px; margin-left: auto; }
  .badge-late { background: color-mix(in srgb, var(--red) 16%, var(--bg-elev)); color: var(--red); }
  /* Tampon encreur, pas un badge de couleur comme les autres : c'est le seul endroit
     de l'app où --stamp apparaît. Fond transparent, cadre + texte de la même teinte
     (comme une vraie encre), légère rotation pour l'aspect « pressé à la main »,
     police mono pour renforcer l'idée de fiche technique tamponnée. */
  .badge-done {
    background: transparent; color: var(--stamp); border: 1.5px solid var(--stamp);
    border-radius: 4px; font-family: 'JetBrains Mono', monospace; letter-spacing: .06em;
    transform: rotate(-3deg); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--stamp) 35%, transparent);
  }
  /* Moment signature de l'app : au passage en "bouclé" (jamais au chargement, voir
     justStampedIds côté JS), le tampon "s'imprime" sur la carte avec un seul
     mouvement net — pas d'animation ailleurs dans l'interface. */
  @keyframes stamp-impact {
    0%   { opacity: 0; transform: rotate(-18deg) scale(2.4); }
    55%  { opacity: 1; transform: rotate(-3deg) scale(.92); }
    75%  { transform: rotate(-3deg) scale(1.06); }
    100% { opacity: 1; transform: rotate(-3deg) scale(1); }
  }
  .task-card.stamp-in .badge-done { animation: stamp-impact .42s cubic-bezier(.2,.9,.3,1.2) both; }
  .recur-pill { font-size: 10px; color: var(--purple); border: 1px solid var(--purple); border-radius: 999px; padding: 1px 7px; font-family: 'JetBrains Mono', monospace; }

  .task-card h3 {
    font-size: 14.5px; font-weight: 700; margin: 0 0 6px; line-height: 1.35; letter-spacing: -.01em; color: var(--text);
    display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere;
  }
  /* Aperçu tronqué sur la carte : la note complète reste lisible dans le tiroir de
     consultation. Sans ça une note de 20 lignes faisait une carte de 20 lignes. */
  .task-notes {
    font-size: 12px; color: var(--text-soft); margin: 0 0 10px; line-height: 1.5; white-space: pre-line;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
  }

  .due-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
  .due-chip {
    display: inline-flex; align-items: center; gap: 4px; font-size: 10.5px; font-weight: 600;
    background: var(--bg-elev); border: 1px solid var(--border); color: var(--text-soft);
    padding: 3px 9px 3px 7px; border-radius: 999px; font-family: 'JetBrains Mono', monospace;
  }
  .due-chip.late { color: var(--red); border-color: color-mix(in srgb, var(--red) 40%, transparent); background: color-mix(in srgb, var(--red) 10%, var(--bg-elev)); }

  .progress-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 7px; }
  .progress-label { font-size: 10.5px; font-weight: 700; color: var(--text-faint); text-transform: uppercase; letter-spacing: .06em; }
  .progress-pct { font-size: 11.5px; font-weight: 700; color: var(--text-soft); font-family: 'JetBrains Mono', monospace; }
  .progress-dots { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; }
  .progress-dot {
    width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; background: var(--border);
    transition: background .2s ease, transform .2s ease;
  }
  .progress-dot.filled { background: var(--accent-grad); transform: scale(1.05); }

  .checklist { list-style: none; margin: 0 0 9px; padding: 0; }
  .checklist li { display: flex; align-items: flex-start; gap: 7px; font-size: 12px; margin-bottom: 5px; }
  .checklist input[type="checkbox"] { margin-top: 2px; accent-color: var(--accent-a); cursor: pointer; }
  .checklist li.done label { text-decoration: line-through; opacity: .5; }

  .link-row { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
  .link-chip {
    font-size: 10.5px; font-weight: 600; text-decoration: none; color: var(--accent-a); border: 1px solid transparent;
    border-radius: 999px; padding: 3px 10px; background: var(--bg-elev); cursor: pointer; font-family: inherit;
    transition: background .15s ease, color .15s ease;
  }
  .link-chip:hover { background: var(--accent-a); color: #fff; }

  .card-meta-icons { display: flex; align-items: center; gap: 12px; }
  .meta-icon { display: flex; align-items: center; gap: 4px; font-size: 11px; color: var(--text-faint); font-weight: 600; font-family: 'JetBrains Mono', monospace; }
  .meta-icon svg { width: 13px; height: 13px; opacity: .7; }

  .card-actions { display: flex; justify-content: space-between; align-items: center; border-top: 1px solid var(--border); padding-top: 9px; margin-top: 4px; }
  .mini-btn { background: none; border: none; cursor: pointer; font-size: 13px; color: var(--text-faint); padding: 4px 7px; transition: color .12s ease, background .12s ease; border-radius: 8px; }
  .mini-btn:hover { color: var(--accent-a); background: var(--accent-soft); }

  /* ════════════════ ARCHIVE ════════════════ */
  .archive-toolbar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 20px; }
  .archive-toolbar input[type="date"] { background: var(--bg-elev); border: 1px solid var(--border); color: var(--text); padding: 8px 12px; border-radius: 11px; font-size: 12.5px; box-shadow: var(--shadow); }
  .week-group { margin-bottom: 24px; animation: card-in .4s cubic-bezier(.16,1,.3,1) both; }
  .week-title { font-size: 11.5px; font-weight: 700; color: var(--text-faint); margin: 0 0 10px; text-transform: uppercase; letter-spacing: .07em; }
  .archive-row {
    display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--bg-elev);
    border: 1px solid var(--border); border-radius: 13px; margin-bottom: 8px; font-size: 13px; box-shadow: var(--shadow);
    transition: border-color .15s ease, transform .15s ease;
  }
  .archive-row:hover { border-color: var(--accent-a); transform: translateY(-1px); box-shadow: var(--shadow-lift); }
  .archive-row .a-title { flex: 1; font-weight: 700; }
  .archive-row .a-meta { color: var(--text-soft); font-size: 11.5px; white-space: nowrap; font-family: 'JetBrains Mono', monospace; }

  /* ════════════════ DRAWER ════════════════ */
  .overlay { position: fixed; inset: 0; background: rgba(20,16,40,.35); backdrop-filter: blur(3px); opacity: 0; pointer-events: none; transition: opacity .22s ease; z-index: 55; }
  .overlay.open { opacity: 1; pointer-events: auto; }
  .drawer {
    position: fixed; top: 0; right: 0; height: 100%; width: min(430px, 92vw); background: var(--bg-elev);
    border-left: 1px solid var(--border); transform: translateX(100%); transition: transform .35s cubic-bezier(.16,1,.3,1); z-index: 56;
    padding: 28px 24px; overflow-y: auto; overscroll-behavior: contain; box-shadow: -20px 0 50px -10px rgba(20,16,40,.15);
  }
  .drawer.open { transform: translateX(0); }
  .drawer h2 { font-family: 'Space Grotesk', sans-serif; font-size: 21px; font-weight: 700; margin: 0 0 20px; }
  .field { margin-bottom: 16px; }
  .field label { display: block; font-size: 11px; font-weight: 700; color: var(--text-soft); margin-bottom: 6px; text-transform: uppercase; letter-spacing: .07em; }
  .field label.checkbox-label { display: flex; align-items: center; gap: 8px; cursor: pointer; text-transform: none; letter-spacing: 0; font-weight: 500; }
  .field label.checkbox-label input { width: auto; }
  .field small { display: block; color: var(--text-faint); margin-top: 5px; font-size: 11px; text-transform: none; letter-spacing: 0; }
  .field input, .field select, .field textarea {
    width: 100%; background: var(--bg-sunken); border: 1px solid var(--border); color: var(--text);
    padding: 10px 12px; border-radius: 11px; font-size: 13px; transition: border-color .15s ease, box-shadow .15s ease;
  }
  .field input:focus, .field select:focus, .field textarea:focus { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); outline: none; }
  .field textarea { resize: vertical; min-height: 54px; }
  .field-row { display: flex; gap: 10px; }
  .field-row .field { flex: 1; }
  .field-row .field.field-narrow { flex: 0 0 100px; }
  .drawer-actions { display: flex; justify-content: space-between; margin-top: 24px; gap: 10px; flex-wrap: wrap; }

  /* ---------- Consult (read-only) view ---------- */
  .view-top-bar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; }
  .view-tagrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .view-top-actions { display: flex; gap: 8px; }
  #view-title { font-family: 'Space Grotesk', sans-serif; font-size: 22px; font-weight: 700; margin: 0 0 16px; line-height: 1.3; }

  .status-switcher {
    display: flex; gap: 4px; background: var(--bg-sunken); border-radius: 13px; padding: 4px;
    margin-bottom: 22px;
  }
  .status-switcher button {
    flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px;
    background: none; border: none; border-radius: 10px; padding: 9px 8px; cursor: pointer;
    font-size: 12.5px; font-weight: 700; color: var(--text-soft);
    transition: background .2s cubic-bezier(.16,1,.3,1), color .2s ease, transform .12s ease;
  }
  .status-switcher button:hover:not(.active) { background: var(--border); color: var(--text); }
  .status-switcher button:active { transform: scale(.96); }
  .status-switcher button .ss-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; background: currentColor; opacity: .6; }
  .status-switcher button.active { color: #fff; box-shadow: var(--shadow); }
  .status-switcher button.active .ss-dot { opacity: 1; background: #fff; }
  .status-switcher button.active[data-status="a_traiter"] { background: var(--col-a_traiter-text); }
  .status-switcher button.active[data-status="en_cours"] { background: var(--col-en_cours-text); }
  .status-switcher button.active[data-status="boucle"] { background: var(--col-boucle-text); }
  .view-meta-grid { display: flex; flex-direction: column; gap: 10px; margin-bottom: 22px; }
  .view-meta-item {
    display: flex; align-items: center; gap: 10px; font-size: 13px; padding: 10px 13px;
    background: var(--bg-sunken); border-radius: 12px;
  }
  .view-meta-item svg { width: 15px; height: 15px; color: var(--text-soft); flex-shrink: 0; }
  .view-meta-item .vm-label { color: var(--text-soft); font-weight: 600; min-width: 100px; }
  .view-meta-item .vm-value { color: var(--text); font-weight: 700; }
  .view-meta-item.vm-late .vm-value { color: var(--red); }
  .view-section { margin-bottom: 22px; }
  .view-section-label {
    font-size: 11px; font-weight: 700; color: var(--text-faint); text-transform: uppercase;
    letter-spacing: .08em; margin-bottom: 10px;
  }
  .view-notes-box {
    background: var(--bg-sunken); border-radius: 13px; padding: 14px 16px; font-size: 13.5px;
    line-height: 1.65; color: var(--text); white-space: pre-line;
  }
  .view-drawer .checklist li { font-size: 13px; padding: 2px 0; }

  /* ════════════════ BULK BAR ════════════════ */
  .bulk-bar {
    position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); background: var(--bg-elev);
    border: 1px solid var(--accent-a); border-radius: 15px; padding: 10px 16px; display: flex; align-items: center;
    gap: 14px; z-index: 25; box-shadow: var(--shadow-lift); flex-wrap: wrap; max-width: calc(100vw - 260px);
    animation: card-in .3s cubic-bezier(.16,1,.3,1) both;
  }
  .bulk-bar[hidden] { display: none; }
  .bulk-bar .count { font-size: 12px; font-weight: 700; font-family: 'JetBrains Mono', monospace; color: var(--accent-a); }
  .bulk-actions { display: flex; gap: 8px; flex-wrap: wrap; }

  /* ════════════════ LOCK SCREEN ════════════════ */
  .lock-screen { position: fixed; inset: 0; z-index: 100; background: var(--bg); display: flex; align-items: center; justify-content: center; }
  .lock-box {
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 22px;
    padding: 38px 32px; width: min(340px, 90vw); box-shadow: var(--shadow-lift);
  }
  .lock-brand { display: flex; align-items: center; justify-content: center; gap: 9px; margin-bottom: 18px; }
  .lock-box h2 { margin: 0; font-family: 'Space Grotesk', sans-serif; font-size: 21px; font-weight: 700; text-align: center; }
  .lock-box input {
    width: 100%; background: var(--bg-sunken); border: 1px solid var(--border); color: var(--text);
    padding: 11px 13px; border-radius: 12px; margin-bottom: 11px; font-size: 13.5px; transition: border-color .15s ease, box-shadow .15s ease;
  }
  .lock-box input:focus { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); outline: none; }
  .lock-box .pill-btn { width: 100%; margin-top: 2px; text-align: center; justify-content: center; }
  .lock-error { color: var(--red); font-size: 12px; margin-top: 10px; text-align: center; }
  .lock-secondary {
    background: none; border: none; color: var(--text-faint); font-size: 11.5px;
    text-decoration: underline; cursor: pointer; font-family: inherit; padding: 6px; margin-top: 2px;
  }
  .lock-secondary:hover { color: var(--text-soft); }
  .lock-box [hidden] { display: none; }

  /* ════════════════ TOASTS ════════════════ */
  .toast-stack { position: fixed; bottom: 22px; right: 22px; z-index: 200; display: flex; flex-direction: column; gap: 10px; align-items: flex-end; }
  .toast {
    background: var(--bg-elev); border: 1px solid var(--border); color: var(--text); font-size: 13px;
    padding: 12px 16px; border-radius: 13px; box-shadow: var(--shadow-lift); display: flex; align-items: center; gap: 9px;
    animation: card-in .32s cubic-bezier(.16,1,.3,1) both; max-width: 320px;
  }
  .toast.success { border-color: var(--green); }
  .toast.error { border-color: var(--red); }
  .toast.leaving { animation: toast-out .22s ease forwards; }
  .toast.update-toast { border-color: var(--accent-a); gap: 14px; }
  .toast.update-toast button {
    background: var(--accent); color: #fff; border: none; font-weight: 700; font-size: 12px;
    padding: 7px 13px; border-radius: 9px; cursor: pointer; font-family: inherit; flex-shrink: 0;
  }

  /* ════════════════ ÉTAT DE SYNCHRONISATION ════════════════ */
  .sync-pill {
    position: fixed; top: calc(12px + env(safe-area-inset-top)); left: 50%; transform: translateX(-50%);
    z-index: 210; display: flex; align-items: center; gap: 9px;
    background: var(--bg-elev); border: 1px solid var(--border-strong); color: var(--text);
    font-size: 12px; font-weight: 600; padding: 8px 15px; border-radius: 999px;
    box-shadow: var(--shadow-lift); max-width: calc(100vw - 28px);
    animation: card-in .3s cubic-bezier(.16,1,.3,1) both;
  }
  .sync-pill[hidden] { display: none; }
  .sync-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; background: var(--gray); }
  .sync-pill.offline { border-color: var(--orange); }
  .sync-pill.offline .sync-dot { background: var(--orange); }
  .sync-pill.pending { border-color: var(--blue); }
  .sync-pill.pending .sync-dot { background: var(--blue); animation: sync-pulse 1.1s ease-in-out infinite; }
  .sync-pill.error { border-color: var(--red); }
  .sync-pill.error .sync-dot { background: var(--red); }
  .sync-pill.saved { border-color: var(--green); }
  .sync-pill.saved .sync-dot { background: var(--green); }
  @keyframes sync-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }

  /* ════════════════ RACCOURCIS CLAVIER ════════════════ */
  /* ════════════════ PIÈCES JOINTES IA ════════════════ */
  .att-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
  .att-hint { font-size: 11.5px; color: var(--text-faint); }
  .att-list { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 9px; }
  .att-chip {
    display: inline-flex; align-items: center; gap: 8px; max-width: 100%;
    background: var(--bg-sunken); border: 1px solid var(--border); border-radius: 10px;
    padding: 6px 8px 6px 11px; font-size: 12px;
  }
  .att-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 190px; }
  .att-size { font-family: 'JetBrains Mono', monospace; font-size: 10.5px; color: var(--text-faint); flex-shrink: 0; }
  .att-chip button {
    background: none; border: none; color: var(--text-faint); cursor: pointer;
    font-size: 13px; padding: 0 2px; line-height: 1; flex-shrink: 0;
  }
  .att-chip button:hover { color: var(--red); }
  .att-over { font-size: 11.5px; color: var(--red); font-weight: 600; align-self: center; }

  /* Glisser-déposer : surbrillance du modal pendant le survol d'un fichier. */
  .modal-box.drop-active { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft), var(--shadow-lift); }
  .modal-box.drop-active::after {
    content: "Lâche pour ajouter";
    position: absolute; inset: auto 0 0 0; padding: 7px;
    background: var(--accent-a); color: #fff; font-size: 11.5px; font-weight: 700;
    text-align: center; border-radius: 0 0 18px 18px; pointer-events: none;
  }
  .modal-box { position: relative; }
  .drop-hint { font-size: 11.5px; color: var(--text-faint); margin-top: 6px; }

  .ai-notes {
    display: flex; gap: 9px; margin-top: 12px; padding: 10px 13px; border-radius: 11px;
    background: var(--accent-soft); font-size: 12px; color: var(--text); line-height: 1.5;
  }

  .meeting-quote {
    margin-top: 7px; padding-left: 10px; border-left: 2px solid var(--border-strong);
    font-style: italic; color: var(--text-faint); font-size: 11px; line-height: 1.45;
  }
  .meeting-decisions {
    margin-top: 4px; padding: 12px 14px; border-radius: 12px;
    background: var(--bg-sunken); border: 1px solid var(--border);
  }
  .meeting-decisions-title {
    font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
    color: var(--text-faint); margin-bottom: 8px;
  }
  .meeting-decisions ul { margin: 0; padding-left: 18px; }
  .meeting-decisions li { font-size: 12.5px; color: var(--text); line-height: 1.6; }

  /* ---------- Anticipation / disponibilités ----------
     Même vocabulaire visuel que les cartes de réunion (pastille de date + contenu).
     Aucune couleur hors palette : le corail est réservé au vrai signal (un blocage
     réel), tout le reste vit en neutres chauds. */
  .anticip-block {
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius-card);
    padding: 20px 22px; margin-bottom: 14px;
  }
  .anticip-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
  .anticip-title { font-weight: 700; font-size: 15px; letter-spacing: -.01em; }
  .anticip-sub { font-size: 12.5px; color: var(--text-soft); margin-top: 4px; max-width: 62ch; line-height: 1.55; }

  /* Carte de vigilance : structure identique aux réunions pour l'unité de l'app. */
  .conflict-row {
    display: flex; align-items: flex-start; gap: 15px;
    padding: 15px 17px; border-radius: var(--radius-card);
    border: 1px solid var(--border); background: var(--bg-elev); margin-bottom: 10px;
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
    animation: card-in .3s cubic-bezier(.16,1,.3,1) both;
  }
  .conflict-row:hover { border-color: var(--border-strong); transform: translateY(-1px); box-shadow: var(--shadow-lift); }
  .conflict-datebox {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    flex-shrink: 0; width: 50px; padding: 8px 0; border-radius: 13px;
    background: var(--bg-sunken); border: 1px solid var(--border); line-height: 1.1;
  }
  .conflict-day { font-size: 18px; font-weight: 700; }
  .conflict-month { font-size: 9.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--text-soft); margin-top: 1px; }
  /* Seul un blocage réel prend l'accent : c'est le seul cas qui demande une action. */
  .conflict-row.haute { border-color: color-mix(in srgb, var(--accent) 35%, var(--border)); }
  .conflict-row.haute .conflict-datebox { background: var(--accent-soft); border-color: transparent; }
  .conflict-row.haute .conflict-day, .conflict-row.haute .conflict-month { color: var(--accent-a); }
  .conflict-main { flex: 1; min-width: 0; }
  .conflict-task { font-weight: 650; font-size: 14px; letter-spacing: -.01em; }
  .conflict-tag {
    display: inline-block; font-size: 9.5px; font-weight: 700; text-transform: uppercase;
    letter-spacing: .06em; padding: 2px 7px; border-radius: 999px; margin-left: 8px;
    vertical-align: 2px; background: var(--bg-sunken); color: var(--text-soft);
  }
  .conflict-row.haute .conflict-tag { background: var(--accent-soft); color: var(--accent-a); }
  .conflict-why { font-size: 12.5px; color: var(--text-soft); margin-top: 5px; line-height: 1.55; }
  .conflict-why b { color: var(--text); font-weight: 650; }
  .conflict-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 11px; }

  /* Bloc repliable : la liste des périodes est secondaire (77 lignes après import). */
  .anticip-details summary { cursor: pointer; list-style: none; display: flex; flex-direction: column; gap: 3px; }
  .anticip-details summary::-webkit-details-marker { display: none; }
  .anticip-details summary::after {
    content: "Voir le détail"; font-size: 11.5px; color: var(--accent-a); font-weight: 650; margin-top: 7px;
  }
  .anticip-details[open] summary::after { content: "Masquer le détail"; }
  .unavail-month { margin-bottom: 14px; }
  .unavail-month-name {
    font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
    color: var(--text-faint); margin-bottom: 7px;
  }
  .unavail-chips { display: flex; flex-wrap: wrap; gap: 6px; }
  .unavail-chip {
    display: inline-flex; align-items: center; gap: 7px; font-size: 11.5px;
    background: var(--bg-sunken); border: 1px solid var(--border); border-radius: 999px;
    padding: 5px 7px 5px 11px; white-space: nowrap; transition: border-color .15s ease;
  }
  .unavail-chip:hover { border-color: var(--border-strong); }
  .unavail-chip button {
    background: none; border: none; color: var(--text-faint); cursor: pointer;
    font-size: 12px; padding: 0 3px; line-height: 1;
  }
  .unavail-chip button:hover { color: var(--accent-a); }

  /* Conseils IA */
  .advice-row {
    padding: 15px 17px; border-radius: var(--radius-card); background: var(--bg-elev);
    border: 1px solid var(--border); margin-bottom: 10px;
  }
  .advice-task { font-weight: 650; font-size: 14px; margin-bottom: 5px; letter-spacing: -.01em; }
  .advice-action {
    display: inline-block; font-size: 9.5px; font-weight: 700; text-transform: uppercase;
    letter-spacing: .06em; padding: 3px 9px; border-radius: 999px;
    background: var(--accent-soft); color: var(--accent-a); margin-bottom: 8px;
  }
  .advice-text { font-size: 13px; color: var(--text); line-height: 1.6; }
  .advice-message {
    margin-top: 11px; padding: 12px 14px; border-radius: 12px; background: var(--bg-sunken);
    border: 1px solid var(--border); font-size: 12.5px; color: var(--text-soft); line-height: 1.6;
    white-space: pre-wrap;
  }
  @media (max-width: 560px){
    .anticip-block { padding: 16px 15px; }
    .conflict-row { gap: 12px; padding: 13px 14px; }
    .conflict-datebox { width: 44px; }
    .conflict-task { white-space: normal; }
  }

  /* ---------- Historique des réunions ---------- */
  .meetings-toolbar {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    flex-wrap: wrap; margin-bottom: 16px;
  }
  .meeting-row {
    display: flex; align-items: flex-start; gap: 15px;
    width: 100%; text-align: left; background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: 16px; padding: 15px 17px; margin-bottom: 10px; cursor: pointer;
    font: inherit; color: inherit;
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
    animation: card-in .3s cubic-bezier(.16,1,.3,1) both;
  }
  .meeting-row:hover { border-color: var(--accent-a); transform: translateY(-1px); box-shadow: var(--shadow-lift); }
  .meeting-row:active { transform: scale(.995); }
  /* Pastille de date facon page d'agenda : repere visuel fort sans ajouter de couleur
     (le fond reste neutre, l'accent est reserve au survol). */
  .meeting-row-datebox {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    flex-shrink: 0; width: 48px; padding: 7px 0; border-radius: 12px;
    background: var(--bg-sunken); border: 1px solid var(--border); line-height: 1.1;
  }
  .meeting-row-day { font-size: 18px; font-weight: 700; }
  .meeting-row-month { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-soft); }
  .meeting-row-year { font-size: 9.5px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; margin-top: 1px; }
  .meeting-row:hover .meeting-row-datebox { border-color: var(--accent-a); }
  .meeting-row:hover .meeting-row-day { color: var(--accent-a); }
  .meeting-row-main { display: flex; flex-direction: column; gap: 5px; min-width: 0; flex: 1; }
  .meeting-row-title { font-weight: 650; font-size: 14.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .meeting-row-preview {
    font-size: 12.5px; color: var(--text-soft); line-height: 1.5;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  }
  .meeting-row-meta { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 2px; }
  .meeting-row .badge-pill { margin-left: 0; background: var(--bg-sunken); color: var(--text-soft); }
  @media (max-width: 560px){
    .meeting-row { gap: 12px; padding: 13px 14px; }
    .meeting-row-datebox { width: 42px; }
    .meeting-row-title { white-space: normal; }
  }

  /* Rendu du .md généré par l'IA : gabarit maison, pas de lib externe (fichier
     unique sans dépendance) — on ne rend que le sous-ensemble qu'on génère nous-mêmes. */
  .meeting-md { font-size: 13.5px; line-height: 1.6; }
  .meeting-md h1 { font-size: 18px; margin: 0 0 4px; }
  .meeting-md h2 {
    font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
    color: var(--accent-a); margin: 20px 0 8px;
  }
  .meeting-md h2:first-of-type { margin-top: 14px; }
  .meeting-md p.md-meta { color: var(--text-faint); font-size: 12px; margin: 0 0 4px; }
  .meeting-md p { margin: 0 0 10px; }
  .meeting-md ul { margin: 0; padding-left: 19px; }
  .meeting-md li { margin-bottom: 7px; color: var(--text); }
  .meeting-md li i { color: var(--text-faint); }
  .meeting-md b { font-weight: 700; }

  /* ════════════════ POMODORO ════════════════ */
  .pomo-widget {
    position: fixed; left: 22px; bottom: 22px; z-index: 120;
    display: flex; align-items: center; gap: 13px;
    background: var(--bg-elev); border: 1px solid var(--border-strong); border-radius: 16px;
    padding: 11px 13px; box-shadow: var(--shadow-lift); max-width: 300px;
    animation: card-in .3s cubic-bezier(.16,1,.3,1) both;
  }
  .pomo-widget[hidden] { display: none; }
  .pomo-widget.pause { border-color: var(--green); }
  .pomo-ring { position: relative; width: 44px; height: 44px; flex-shrink: 0; }
  .pomo-ring svg { width: 44px; height: 44px; transform: rotate(-90deg); }
  .pomo-ring circle { fill: none; stroke-width: 3.5; }
  .pomo-ring-bg { stroke: var(--bg-sunken); }
  .pomo-ring-fg {
    stroke: var(--accent); stroke-linecap: round;
    stroke-dasharray: 119.4; transition: stroke-dashoffset .5s linear;
  }
  .pomo-widget.pause .pomo-ring-fg { stroke: var(--green); }
  .pomo-time {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    font-family: 'JetBrains Mono', monospace; font-size: 10.5px; font-weight: 700; color: var(--text);
  }
  .pomo-body { min-width: 0; flex: 1; }
  .pomo-phase {
    font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .09em;
    color: var(--accent-a);
  }
  .pomo-widget.pause .pomo-phase { color: var(--green); }
  .pomo-task {
    font-size: 12.5px; font-weight: 600; color: var(--text);
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  }
  .pomo-actions { display: flex; gap: 3px; flex-shrink: 0; }
  .pomo-btn {
    background: none; border: none; color: var(--text-soft); cursor: pointer;
    font-size: 14px; padding: 5px 7px; border-radius: 9px; line-height: 1; font-family: inherit;
  }
  .pomo-btn:hover { background: var(--bg-sunken); color: var(--text); }
  .pomo-count { font-family: 'JetBrains Mono', monospace; }

  /* ════════════════ RANGEMENT DES RUBRIQUES ════════════════ */
  .tidy-move {
    display: flex; align-items: center; gap: 9px; padding-left: 25px; flex-wrap: wrap;
    font-size: 12px; font-weight: 600;
  }
  .tidy-from { color: var(--text-faint); text-decoration: line-through; }
  .tidy-arrow { color: var(--text-faint); }
  .tidy-to { color: var(--accent-a); }
  .conf-pill {
    font-size: 10px; font-weight: 700; padding: 3px 8px; border-radius: 8px;
    text-transform: uppercase; letter-spacing: .05em; flex-shrink: 0;
  }
  .conf-haute { background: color-mix(in srgb, var(--green) 18%, var(--bg-elev)); color: var(--green); }
  .conf-moyenne { background: color-mix(in srgb, var(--orange) 18%, var(--bg-elev)); color: var(--orange); }
  .conf-basse { background: var(--bg-sunken); color: var(--text-faint); }
  .tidy-spinner {
    width: 26px; height: 26px; margin: 22px auto 6px; border-radius: 50%;
    border: 3px solid var(--border); border-top-color: var(--accent);
    animation: tidy-spin .8s linear infinite;
  }
  @keyframes tidy-spin { to { transform: rotate(360deg); } }

  .shortcut-list { display: flex; flex-direction: column; gap: 2px; }
  .shortcut-row {
    display: flex; align-items: center; gap: 12px; padding: 8px 4px;
    font-size: 13px; color: var(--text-soft); border-bottom: 1px solid var(--border);
  }
  .shortcut-row:last-child { border-bottom: none; }
  .shortcut-keys { display: flex; gap: 4px; flex: 0 0 108px; }
  kbd {
    display: inline-flex; align-items: center; justify-content: center; min-width: 24px;
    padding: 3px 7px; border-radius: 7px; background: var(--bg-sunken);
    border: 1px solid var(--border-strong); border-bottom-width: 2px;
    font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 600; color: var(--text);
  }
  body.is-not-mac .search-field::after { content: "Ctrl K"; }
  /* toast-in fusionnee avec card-in (memes valeurs a peu de choses pres, ecrite deux fois a des moments differents) */
  @keyframes toast-out { to { opacity: 0; transform: translateX(20px) scale(.95); } }

  /* ════════════════ MODALS ════════════════ */
  .modal-overlay {
    position: fixed; inset: 0; background: rgba(20,16,40,.4); backdrop-filter: blur(5px);
    display: flex; align-items: center; justify-content: center; z-index: 150;
    opacity: 0; pointer-events: none; transition: opacity .2s ease;
  }
  .modal-overlay.open { opacity: 1; pointer-events: auto; }
  .modal-box {
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 19px; padding: 26px;
    width: min(360px, 90vw); box-shadow: var(--shadow-lift); transform: scale(.94); transition: transform .2s cubic-bezier(.16,1,.3,1);
  }
  .modal-overlay.open .modal-box { transform: scale(1); }
  .modal-box p { margin: 0 0 18px; font-size: 14px; line-height: 1.55; }
  .modal-actions { display: flex; justify-content: flex-end; gap: 9px; flex-wrap: wrap; }
  .modal-box.wide { width: min(520px, 92vw); max-height: 82vh; overflow-y: auto; overscroll-behavior: contain; }
  .modal-box.xwide { width: min(680px, 94vw); max-height: 85vh; overflow-y: auto; overscroll-behavior: contain; }
  .manage-row { display: flex; align-items: center; gap: 9px; }
  .manage-name-input {
    flex: 1; min-width: 0; background: var(--bg-sunken); border: 1px solid var(--border); color: var(--text);
    padding: 8px 11px; border-radius: 10px; font-size: 13.5px; font-family: inherit;
  }
  .manage-name-input:focus { outline: 2px solid var(--accent-a); outline-offset: 1px; }
  .manage-row input[type="text"] {
    flex: 1; background: var(--bg-sunken); border: 1px solid var(--border); color: var(--text);
    padding: 9px 11px; border-radius: 10px; font-size: 13px;
  }
  .manage-row input[type="text"]:focus { border-color: var(--accent-a); box-shadow: 0 0 0 3px var(--accent-soft); outline: none; }
  .picker-row {
    display: flex; align-items: center; gap: 9px; font-size: 13px; padding: 9px 11px;
    background: var(--bg-sunken); border: 1px solid var(--border); border-radius: 10px; cursor: pointer;
  }
  .picker-row input { accent-color: var(--accent-a); }

  /* ════════════════ CALENDAR ════════════════ */
  .cal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 18px; gap: 12px; flex-wrap: wrap; }
  .cal-nav { display: flex; align-items: center; gap: 8px; }
  .cal-nav .pill-btn { padding: 8px 15px; font-size: 13px; }
  .cal-month-label { font-family: 'Space Grotesk', sans-serif; font-size: 18px; font-weight: 700; min-width: 170px; text-align: center; }
  .cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
  .cal-dow { font-size: 10.5px; font-weight: 700; color: var(--text-faint); text-align: center; padding: 6px 0; text-transform: uppercase; letter-spacing: .07em; }
  .cal-day {
    aspect-ratio: 1; min-height: 78px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 15px;
    padding: 9px 8px; cursor: pointer; transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
    display: flex; flex-direction: column; position: relative; overflow: hidden; box-shadow: var(--shadow);
  }
  .cal-day:hover { border-color: var(--accent-a); transform: translateY(-3px); box-shadow: var(--shadow-lift); }
  .cal-day.other-month { opacity: .35; box-shadow: none; }
  .cal-day.today { background: var(--accent-grad); border-color: transparent; }
  .cal-day.today .cal-day-num { color: #fff; }
  .cal-day.today .cal-day-count { color: rgba(255,255,255,.75); }
  .cal-day.selected { background: var(--accent-soft); border-color: var(--accent-a); }
  .cal-day.today.selected { background: var(--accent-grad); }
  /* Jour indisponible (école, congé, absence) : hachure diagonale fine plutôt qu'une
     teinte colorée. Ça se lit immédiatement comme « bloqué » dans un calendrier, ça
     apporte de la texture, et surtout ça n'introduit aucune couleur hors palette —
     le corail reste réservé aux priorités et aux vrais signaux. */
  .cal-day.unavail {
    background:
      repeating-linear-gradient(-45deg,
        transparent 0 4px,
        color-mix(in srgb, var(--text) 7%, transparent) 4px 5px),
      var(--bg-sunken);
  }
  .cal-day.unavail .cal-day-num { color: var(--text-soft); }
  /* Aujourd'hui garde toujours son fond plein : c'est le repère le plus important. */
  .cal-day.unavail.today { background: var(--accent-grad); }
  .cal-day.unavail.today .cal-day-num { color: #fff; }
  .cal-unavail-badge { position: absolute; bottom: 5px; right: 6px; font-size: 9.5px; line-height: 1; opacity: .7; }
  .cal-day-num { font-size: 13.5px; font-weight: 700; font-family: 'JetBrains Mono', monospace; margin-bottom: 4px; }
  .cal-dots { display: flex; flex-wrap: wrap; gap: 3px; margin-top: auto; }
  .cal-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
  .cal-day-count { font-size: 10px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; position: absolute; top: 8px; right: 8px; }
  .cal-side { margin-top: 22px; }
  .cal-side-title { font-size: 12px; font-weight: 700; color: var(--text-soft); margin-bottom: 12px; text-transform: uppercase; letter-spacing: .07em; }
  .cal-task-row {
    display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: var(--bg-elev);
    border: 1px solid var(--border); border-radius: 13px; margin-bottom: 8px; font-size: 13px; cursor: pointer; box-shadow: var(--shadow);
    transition: border-color .15s ease, transform .15s ease;
  }
  .cal-task-row:hover { border-color: var(--accent-a); transform: translateY(-1px); box-shadow: var(--shadow-lift); }
  .cal-task-row .priority-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
  .cal-task-title { flex: 1; font-weight: 700; }
  .cal-task-meta { color: var(--text-soft); font-size: 11.5px; font-family: 'JetBrains Mono', monospace; }

  .cal-mode-toggle { display: flex; background: var(--bg-elev); border: 1px solid var(--border); border-radius: 12px; padding: 3px; box-shadow: var(--shadow); }
  .cal-mode-toggle button {
    background: none; border: none; padding: 7px 15px; font-size: 12.5px; font-weight: 700; color: var(--text-soft);
    border-radius: 9px; cursor: pointer; transition: background .15s ease, color .15s ease;
  }
  .cal-mode-toggle button.active { background: var(--accent-grad); color: #fff; }

  /* ════════════════ WEEK VIEW ════════════════ */
  .week-view { --week-hour-h: 56px; }
  .week-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; gap: 10px; flex-wrap: wrap; }
  .week-ai-hint {
    font-size: 12px; color: var(--text-soft); background: var(--accent-soft); border: 1px solid var(--accent-a);
    border-radius: 11px; padding: 8px 13px; display: flex; align-items: center; gap: 8px;
  }
  .week-grid-wrap { border: 1px solid var(--border); border-radius: 16px; overflow: hidden; background: var(--bg-elev); box-shadow: var(--shadow); }
  .week-head { display: grid; grid-template-columns: 56px repeat(7, 1fr); border-bottom: 1px solid var(--border); }
  .week-head-cell {
    padding: 10px 8px; text-align: center; border-left: 1px solid var(--border);
  }
  .week-head-cell:first-child { border-left: none; }
  .week-head-dow { font-size: 10px; font-weight: 700; color: var(--text-faint); text-transform: uppercase; letter-spacing: .06em; }
  .week-head-num { font-size: 16px; font-weight: 700; font-family: 'JetBrains Mono', monospace; margin-top: 2px; }
  .week-head-cell.is-today { background: var(--accent-soft); }
  .week-head-cell.is-unavail {
    background:
      repeating-linear-gradient(-45deg,
        transparent 0 4px,
        color-mix(in srgb, var(--text) 7%, transparent) 4px 5px),
      var(--bg-sunken);
  }
  .week-head-cell.is-unavail .week-head-num { color: var(--text-soft); }
  .week-head-cell.is-unavail.is-today { background: var(--accent-soft); }
  .week-head-cell.is-unavail.is-today .week-head-num { color: var(--accent-a); }
  .week-head-unavail { font-size: 8.5px; font-weight: 700; color: var(--text-soft); text-transform: uppercase; letter-spacing: .06em; margin-top: 3px; }
  .week-head-cell.is-today .week-head-num { color: var(--accent-a); }
  .week-unscheduled-row { display: grid; grid-template-columns: 56px repeat(7, 1fr); border-bottom: 1px solid var(--border); background: var(--bg-sunken); }
  .week-unscheduled-cell { border-left: 1px solid var(--border); padding: 7px; display: flex; flex-direction: column; gap: 5px; min-height: 30px; }
  .week-unscheduled-cell:first-child { border-left: none; }
  .week-unsched-label { font-size: 9.5px; color: var(--text-faint); text-transform: uppercase; letter-spacing: .06em; font-weight: 700; grid-column: 1; padding: 8px; align-self: center; }
  .week-chip {
    font-size: 10.5px; font-weight: 600; padding: 4px 8px; border-radius: 8px; cursor: grab;
    display: flex; align-items: center; gap: 5px; box-shadow: var(--shadow);
  }
  .week-chip .priority-dot { width: 6px; height: 6px; }
  .week-body { position: relative; display: grid; grid-template-columns: 56px repeat(7, 1fr); max-height: 60vh; overflow-y: auto; }
  .week-time-col { display: flex; flex-direction: column; }
  .week-time-slot { height: var(--week-hour-h); font-size: 10px; color: var(--text-faint); text-align: right; padding-right: 8px; position: relative; top: -6px; font-family: 'JetBrains Mono', monospace; }
  .week-day-col {
    position: relative; border-left: 1px solid var(--border); background-image: repeating-linear-gradient(
      to bottom, var(--border) 0, var(--border) 1px, transparent 1px, transparent var(--week-hour-h)
    );
  }
  .week-day-col.dragover { background-color: var(--accent-soft); }
  .week-day-col.is-today { background-color: color-mix(in srgb, var(--accent-a) 4%, transparent); }
  .week-event {
    position: absolute; left: 3px; right: 3px; border-radius: 9px; padding: 5px 8px; overflow: hidden;
    cursor: grab; box-shadow: var(--shadow); border-left: 3px solid transparent; z-index: 2;
    transition: box-shadow .15s ease, transform .15s ease;
  }
  .week-event:hover { box-shadow: var(--shadow-lift); transform: translateX(1px); z-index: 3; }
  .week-event.dragging { opacity: .4; }
  .week-event-title { font-size: 11px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .week-event-time { font-size: 9.5px; opacity: .8; font-family: 'JetBrains Mono', monospace; }
  /* Réunion externe (Outlook...) : pour info seulement, jamais draggable — sous les
     tâches en z-index, texture hachurée plutôt qu'une couleur pour rester dans le
     système existant (pas de bleu/vert décoratif, voir le refus de le faire ailleurs). */
  .week-meeting {
    position: absolute; left: 3px; right: 3px; border-radius: 9px; padding: 4px 8px; overflow: hidden;
    z-index: 1; cursor: pointer; border: 1px dashed var(--border-strong);
    background:
      repeating-linear-gradient(135deg, color-mix(in srgb, var(--text) 7%, transparent) 0 6px, transparent 6px 12px),
      var(--bg-sunken);
  }
  .week-meeting-title { font-size: 10.5px; font-weight: 700; color: var(--text-soft); line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .week-meeting-time { font-size: 9px; color: var(--text-faint); font-family: 'JetBrains Mono', monospace; }
  .week-now-line { position: absolute; left: 0; right: 0; height: 2px; background: var(--red); z-index: 4; pointer-events: none; }
  .week-now-line::before { content: ''; position: absolute; left: -4px; top: -3px; width: 8px; height: 8px; border-radius: 50%; background: var(--red); }

  /* ════════════════ AI RESULTS ════════════════ */
  .prio-item {
    display: flex; gap: 12px; padding: 15px; background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: 15px; margin-bottom: 10px; transition: border-color .15s ease; box-shadow: var(--shadow);
  }
  .prio-item:hover { border-color: var(--accent-a); }
  .prio-rank {
    width: 28px; height: 28px; border-radius: 9px; background: var(--accent-grad); color: #fff;
    display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; flex-shrink: 0;
    font-family: 'JetBrains Mono', monospace;
  }
  .prio-body { flex: 1; min-width: 0; }
  .prio-title { font-weight: 700; font-size: 14px; margin-bottom: 4px; }
  .prio-reason { font-size: 12.5px; color: var(--text-soft); line-height: 1.48; }
  .prio-meta { font-size: 11px; color: var(--text-faint); margin-top: 6px; font-family: 'JetBrains Mono', monospace; }
  .prio-summary {
    background: var(--accent-soft); border: 1px solid var(--accent-a); border-radius: 14px;
    padding: 14px 16px; margin-bottom: 16px; font-size: 13.5px; line-height: 1.55;
  }

  @media (max-width: 900px) {
    .cal-day { min-height: 34px; padding: 4px; }
    .cal-day-num { font-size: 11px; margin-bottom: 2px; }
    .cal-grid { gap: 4px; }
    .cal-day-count { display: none; }
    .cal-dots { gap: 2px; overflow: hidden; max-height: 8px; }
    .cal-dot { width: 5px; height: 5px; }
    .cal-unavail-badge { font-size: 8px; bottom: 3px; right: 4px; }
  }

  /* ════════════════ MOBILE ════════════════ */
  .mobile-only { display: none; }
  .sidebar-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 59; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
  .sidebar-backdrop.open { opacity: 1; pointer-events: auto; }
  .board-dots { display: none; justify-content: center; gap: 6px; margin-bottom: 12px; }
  .board-dots .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--border-strong); transition: background .2s ease, transform .2s ease; }
  .board-dots .dot.active { background: var(--accent-a); transform: scale(1.4); }
  .tabbar {
    /* Fond direct, comme .sidebar (voir juste au-dessus) : même retour en arrière,
       par cohérence — pas de preuve que le ::before aidait ici, autant limiter le
       nombre de tours de passe-passe CSS en jeu pendant qu'on repart d'une base
       simple et connue. */
    display: none; position: fixed; left: 0; right: 0; bottom: 0; z-index: 40;
    background: var(--bg-elev); border-top: 1px solid var(--border);
    padding: 8px 6px calc(6px + env(safe-area-inset-bottom));
    align-items: stretch; justify-content: space-around;
  }
  .tabbar button {
    background: none; border: none; color: var(--text-soft); display: flex; flex-direction: column;
    align-items: center; gap: 3px; flex: 1; padding: 6px 2px; border-radius: 10px; cursor: pointer;
    min-height: 48px; justify-content: center;
  }
  .tabbar button > span:last-child { font-size: 10px; font-weight: 600; }
  .tab-icon { width: 21px; height: 21px; flex-shrink: 0; }
  .tab-icon-wrap { position: relative; display: flex; }
  .tab-dot {
    position: absolute; top: -1px; right: -3px; width: 7px; height: 7px; border-radius: 50%;
    background: var(--red); border: 1.5px solid var(--bg-elev);
  }
  .tabbar button.active { color: var(--accent-a); }
  .tabbar button.active span { color: var(--accent-a); }
  .tabbar button:active { transform: scale(.94); }

  @media (max-width: 900px) {
    .mobile-only { display: flex; }
    /* Au-dessus de la barre d'onglets, qui occupe le bas de l'écran. */
    .pomo-widget { left: 12px; right: 12px; max-width: none; bottom: calc(78px + env(safe-area-inset-bottom)); }
    .app-shell { height: 100%; padding: 0; gap: 0; }
    .content { border-radius: 0; border: none; box-shadow: none; }

    /* Menu latéral : tout défile ensemble (marque, vues, rubriques, profil) plutôt que
       de forcer les rubriques dans une mini-zone qui ne montrait qu'une ligne à la fois. */
    .sidebar {
      /* top+bottom:0 plutôt que height:100dvh : ancre les deux bords directement au
         viewport réel plutôt que de dépendre d'un calcul de hauteur dynamique — plus
         robuste (constaté : le menu s'arrêtait de défiler avant "Déconnexion" avec
         100dvh, sur ce téléphone/version d'iOS). */
      position: fixed; top: 0; bottom: 0; left: 0; z-index: 60; width: 82vw; max-width: 320px;
      /* translateZ(0) en plus du glissement habituel : force ce panneau sur sa
         propre couche GPU stable. -webkit-overflow-scrolling:touch (retiré, voir
         plus bas) ne suffisait plus à empêcher une vraie déchirure de rendu
         pendant le scroll sur cette bêta iOS (bas du menu affiché fantôme, sans
         fond, par-dessus le contenu derrière — capture à l'appui). */
      transform: translateX(-100%) translateZ(0); transition: transform .28s cubic-bezier(.16,1,.3,1);
      padding-top: calc(18px + env(safe-area-inset-top));
      /* Marge généreuse plutôt qu'un calcul serré : "Déconnexion" (dernier bouton)
         restait inatteignable malgré l'ancrage top+bottom:0 ci-dessus — on élimine
         toute dépendance à un calcul de hauteur précis en laissant large. */
      padding-bottom: calc(90px + env(safe-area-inset-bottom));
      border-radius: 0 20px 20px 0; border: none;
      /* -webkit-overflow-scrolling:touch RETIRÉ : propriété héritée d'iOS 8-12
         (avant que le défilement à inertie soit natif sur tout overflow:auto). Ne
         sert plus à rien sur iOS moderne, et semble contribuer à la déchirure
         constatée sur cette bêta. */
      overflow-y: auto; overflow-x: hidden;
    }
    .sidebar.open { transform: translateX(0) translateZ(0); }
    .sidebar-section { flex: none; overflow-y: visible; }
    /* PAS sticky sur mobile (contrairement au desktop, ligne ~139) : position:sticky
       combiné au défilement à inertie tactile (-webkit-overflow-scrolling:touch sur
       .sidebar) est un bug WebKit connu qui laisse un "fantôme" flouté du contenu
       qui défile derrière l'élément collé — constaté ici (texte du menu visible à
       travers le logo pendant le scroll), confirmé pas lié à la barre de statut. */
    .brand { position: static; background: var(--sidebar-bg); padding-bottom: 14px; }
    .nav-item, .rubrique-item, .sidebar-btn { padding-top: 11px; padding-bottom: 11px; font-size: 14px; }

    .content-header {
      padding: 10px 14px; padding-top: calc(10px + env(safe-area-inset-top));
      transition: padding .3s ease; row-gap: 8px; column-gap: 8px;
    }
    .icon-round { width: 40px; height: 40px; }
    /* Les trois boutons d'action secondaires se resserrent entre eux (au lieu
       de l'espacement large du reste de l'entête) : ils se lisent comme un
       vrai groupe d'icônes de barre d'outils, pas comme des éléments épars. */
    #select-mode-btn, #export-btn, #import-btn { margin-left: -4px; }
    #select-mode-btn { margin-left: 0; }
    .header-titles { margin-right: 0; order: 2; }
    .content-title { font-size: 16px; margin-right: 0; }
    #menu-toggle { order: 1; }
    #add-btn { order: 3; margin-left: auto; padding: 8px 14px; font-size: 12px; }
    .search-field { order: 4; flex: 1 1 100%; max-width: none; }
    .pill-select { order: 5; }
    #select-mode-btn { order: 6; }
    #export-btn { order: 7; }
    #import-btn { order: 8; }
    .view { padding: 14px 14px calc(90px + env(safe-area-inset-bottom)); }

    /* Bandeau : réduction douce au scroll (tout s'estompe ensemble, rien ne "saute").
       Le titre, le hamburger et "+ Nouvelle tâche" restent toujours visibles. */
    .content-subtitle, .stats-strip, .search-field, .pill-select,
    #select-mode-btn, #export-btn, #import-btn {
      transition: max-height .32s cubic-bezier(.4,0,.2,1), opacity .28s ease, margin .32s ease, padding .32s ease;
      overflow: hidden; flex-shrink: 0;
    }
    .content-subtitle { max-height: 20px; }
    .stats-strip { padding: 6px 14px; gap: 10px; overflow-x: auto; white-space: nowrap; max-height: 46px; }
    #select-mode-btn, #export-btn, #import-btn { max-height: 40px; }
    .search-field { max-height: 44px; }
    .pill-select { max-height: 40px; }

    .content.compact .content-header { padding-top: calc(6px + env(safe-area-inset-top)); padding-bottom: 6px; row-gap: 0; }
    .content.compact .content-subtitle { max-height: 0; opacity: 0; margin: 0; }
    .content.compact .stats-strip { max-height: 0; opacity: 0; padding-top: 0; padding-bottom: 0; }
    .content.compact .search-field,
    .content.compact .pill-select,
    .content.compact #select-mode-btn,
    .content.compact #export-btn,
    .content.compact #import-btn { max-height: 0; opacity: 0; margin: 0; padding: 0; border-width: 0; pointer-events: none; }

    .quick-capture { margin-bottom: 12px; padding: 9px 10px; }
    .quick-capture-hint { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .quick-capture button { padding: 8px 12px; }

    .board {
      display: flex; grid-template-columns: none; gap: 14px; overflow-x: auto; scroll-snap-type: x mandatory;
      -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; margin: 0; padding: 0;
    }
    .column { flex: 0 0 100%; scroll-snap-align: center; margin-right: 0; }
    .board-dots { display: flex; }
    .bulk-bar { max-width: calc(100vw - 24px); bottom: calc(80px + env(safe-area-inset-bottom)); left: 12px; right: 12px; transform: none; }
    /* top+bottom:0 plutôt que height:100dvh, comme .sidebar — ancrage direct au
       viewport, plus robuste qu'un calcul de hauteur dynamique. */
    .drawer { width: 100vw; top: 0; bottom: 0; height: auto; padding: 22px 16px; padding-top: calc(22px + env(safe-area-inset-top)); padding-bottom: calc(22px + env(safe-area-inset-bottom)); }
    .status-switcher button { font-size: 11.5px; padding: 8px 4px; gap: 4px; }
    .view-meta-item { flex-wrap: wrap; }
    .tabbar { display: flex; }
    .field input, .field select, .field textarea,
    .search-field input, .pill-select, .lock-box input, .archive-toolbar input,
    .prio-time, .prio-duration, .manage-name-input { font-size: 16px; }

    /* Formulaires : les champs côte à côte s'empilent pour rester lisibles, plein largeur */
    .field-row { flex-direction: column; gap: 0; }
    .field-row .field { flex: 1; width: 100%; }
    .field-row .field.field-narrow { flex: 1; width: 100%; }
    .radio-pair { flex-direction: column; }

    /* Modals : moins de marge perdue sur petit écran, jamais collé aux bords */
    .modal-overlay { padding: 16px; }
    .modal-box { padding: 18px; width: min(360px, 100%); max-height: 82vh; overflow-y: auto; }
    .modal-box.wide { width: min(520px, 100%); max-height: 85vh; }
    .modal-box.xwide { width: min(680px, 100%); max-height: 85vh; }
    .manage-row, .picker-row { flex-wrap: wrap; }

    /* Calendrier : bandeau d'aide IA masqué pour ne pas encombrer, actions groupées */
    .week-ai-hint { display: none; }
    .week-toolbar { justify-content: center; }
    .week-toolbar > div { width: 100%; justify-content: center; }
    .cal-header { gap: 10px; }
    .cal-header > div { width: 100%; justify-content: center; }
    .cal-nav { justify-content: center; }

    /* Vue Semaine : illisible en colonnes écrasées, on la rend défilable horizontalement */
    .week-grid-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; }
    .week-head, .week-unscheduled-row, .week-body {
      grid-template-columns: 46px repeat(7, minmax(104px, 1fr));
      min-width: 774px;
    }
    .week-body { max-height: 50vh; overscroll-behavior: contain; }
    .week-head-num { font-size: 14px; }
    .week-event-title { font-size: 10.5px; }
  }

  /* Petits téléphones : encore un peu plus compact */
  @media (max-width: 420px) {
    .content-title { font-size: 16px; }
    .icon-round { width: 38px; height: 38px; font-size: 14px; }
    .pill-btn { padding: 8px 12px; font-size: 12px; }
    .status-switcher button { font-size: 11px; padding: 7px 2px; }
    .stat-chip { padding: 7px 11px; font-size: 11px; }
    .week-head, .week-unscheduled-row, .week-body { grid-template-columns: 42px repeat(7, minmax(96px, 1fr)); min-width: 714px; }
  }

/* ═══════════════════════════════════════════════════════════════════════════
   BUREAU VNEXT — système unique « poste de pilotage ludique »
   Neutres chauds, encre, corail d'action. Aucun dégradé décoratif.
   ═══════════════════════════════════════════════════════════════════════════ */
:root {
  --sidebar-w: 232px;
  --radius-card: 17px;
  --display: 'Syne', 'Space Grotesk', sans-serif;
  --ease-out: cubic-bezier(.22,1,.36,1);
  --ease-pop: cubic-bezier(.18,.9,.26,1.2);
  --success: #218A62;
  --warning: #C77A15;
}
:root[data-theme="light"] {
  --bg: #DAD5CB;
  --bg-elev: #FFFDF7;
  --bg-sunken: #EEE9DF;
  --sidebar-bg: #20231E;
  --border: rgba(31,33,28,.13);
  --border-strong: rgba(31,33,28,.25);
  --text: #1F211C;
  --text-soft: #65655C;
  --text-faint: #99988E;
  --accent: #FF6240;
  --accent-a: #FF6240;
  --accent-soft: rgba(255,98,64,.13);
  --accent-grad: #FF6240;
  --ink: #20231E;
  --ink-text: #FFFDF7;
  --mine: #343B34;
  --green: var(--success);
  --orange: var(--warning);
  --red: #D54B3E;
  --gray: #8A887F;
  --shadow: 0 3px 0 rgba(31,33,28,.11), 0 18px 34px -28px rgba(31,33,28,.5);
  --shadow-lift: 0 5px 0 rgba(31,33,28,.10), 0 26px 40px -26px rgba(31,33,28,.48);
  color-scheme: light;
}
:root[data-theme="dark"] {
  --bg: #10120F;
  --bg-elev: #20231D;
  --bg-sunken: #171A15;
  --sidebar-bg: #171A16;
  --border: rgba(247,241,227,.12);
  --border-strong: rgba(247,241,227,.24);
  --text: #F7F1E3;
  --text-soft: #B3AC9E;
  --text-faint: #74756B;
  --accent: #FF7350;
  --accent-a: #FF7350;
  --accent-soft: rgba(255,115,80,.17);
  --accent-grad: #FF7350;
  --ink: #F7F1E3;
  --ink-text: #171A15;
  --mine: #D7D1C3;
  --green: #40B987;
  --orange: #E9A13B;
  --red: #FF7669;
  --gray: #77766D;
  --shadow: 0 3px 0 rgba(0,0,0,.35), 0 20px 38px -26px rgba(0,0,0,.95);
  --shadow-lift: 0 5px 0 rgba(0,0,0,.38), 0 28px 44px -22px rgba(0,0,0,.95);
  color-scheme: dark;
}

html, body { background: var(--bg); }
body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif; }
.js-hidden { display: none; }
.auth-spacer { height: 16px; }
.sidebar-title-spaced { margin-top: 14px; }
.sidebar-title-row { display: flex; align-items: center; justify-content: space-between; margin-top: 14px; }
.manage-rubriques-btn { font-size: 13px; }
.dot-accent { background: var(--accent); }
.dot-danger { background: var(--red); }
.dot-success { background: var(--green); }
.dot-muted { background: var(--gray); }
.toolbar-label { color: var(--text-soft); font-size: 12px; }
.toolbar-actions { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.toolbar-actions-tight { gap: 8px; }
.section-title-gap { margin-bottom: 10px; }
.anticip-head-spaced { margin-block: 14px 10px; }
.manage-row-new, .recur-detail { margin-top: 8px; }
.due-availability-hint { margin: 0 0 16px; }
.drawer-actions-end { display: flex; gap: 10px; margin-left: auto; }
.drawer-actions-wrap { flex-wrap: wrap; }
.app-shell { padding: 12px; gap: 12px; }
.sidebar, .content { border-radius: 24px; border-color: var(--border-strong); }
.sidebar { background: var(--sidebar-bg); color: #F7F1E3; padding: 16px 12px; }
.brand { padding: 4px 8px 20px; }
.brand-name { font-family: var(--display); font-weight: 800; color: #F7F1E3; font-size: 18px; letter-spacing: -.04em; }
.brand-kicker { color: #8F9388; font: 700 8px/1.2 'JetBrains Mono', monospace; letter-spacing: .12em; text-transform: uppercase; margin-top: 5px; }
.logo-mark { width: 40px; height: 40px; border-radius: 13px; background: var(--accent); box-shadow: 0 5px 0 #963923; transform: rotate(-4deg); transition: transform .25s var(--ease-pop); }
.brand:hover .logo-mark { transform: rotate(3deg) scale(1.05); }
.sidebar-title { color: #7F8479; font: 700 9px/1 'JetBrains Mono', monospace; }
.nav-grid, .nav-list { gap: 7px; }
.nav-item { background: rgba(255,255,255,.035); border-color: rgba(255,255,255,.12); color: #AEB1A8; box-shadow: none; border-radius: 14px; min-height: 64px; }
.nav-item:hover { background: rgba(255,255,255,.08); color: #fff; border-color: rgba(255,255,255,.25); box-shadow: none; transform: translateY(-2px); }
.nav-item.active { background: #F7F1E3; color: #20231E; border-color: #F7F1E3; }
.nav-item.active .nav-icon { color: #20231E; }
.nav-item[data-view="board"].active .badge, .nav-item:not([data-view="board"]).active .badge { background: var(--accent); color: #fff; }
.rubrique-item, .sidebar-btn { color: #AEB1A8; min-height: 40px; }
.rubrique-item:hover, .sidebar-btn:hover { background: rgba(255,255,255,.07); color: #fff; }
.rubrique-item.active { background: var(--accent); color: #fff; }
.sidebar-profile { background: rgba(255,255,255,.06); border-color: rgba(255,255,255,.12); }
.sidebar-profile-name { color: #fff; }
.sidebar-profile-email { color: #8F9388; }
.sidebar-footer { border-color: rgba(255,255,255,.12); }
.sidebar-data-actions { display: none; }

.content { background: var(--bg-elev); box-shadow: var(--shadow); }
.content-header { padding: 16px 22px 12px; gap: 9px; border-bottom: 1px solid var(--border); }
.content-title { font-family: var(--display); font-size: 27px; font-weight: 800; letter-spacing: -.055em; }
.content-subtitle { font: 500 10px/1.4 'JetBrains Mono', monospace; color: var(--text-faint); }
.search-field { flex-basis: 220px; }
.search-field input, .pill-select, .pill-btn, .icon-round { border-color: var(--border-strong); box-shadow: 0 2px 0 var(--border); }
.pill-btn, .icon-round { min-height: 42px; }
.icon-round { width: 42px; height: 42px; }
.pill-btn { padding: 9px 14px; }
.pill-btn.primary { box-shadow: 0 4px 0 color-mix(in srgb, var(--accent) 55%, #742513); }
.pill-btn:hover, .icon-round:hover { transform: translateY(-2px); box-shadow: 0 4px 0 var(--accent-soft); }
.pill-btn:active, .icon-round:active { transform: translateY(2px) scale(.98); box-shadow: 0 1px 0 var(--border); }
.view { padding: 16px 22px 42px; background: var(--bg-sunken); }

/* Compositeur guidé */
.task-composer { margin-bottom: 12px; border: 1px solid var(--border-strong); border-radius: 18px; background: var(--bg-elev); box-shadow: var(--shadow); overflow: hidden; }
.composer-main { display: flex; align-items: center; gap: 12px; padding: 12px 13px 10px; }
.composer-icon { display: grid; place-items: center; flex: 0 0 38px; width: 38px; height: 38px; border-radius: 12px; background: var(--accent); color: #fff; font: 800 23px/1 var(--display); box-shadow: 0 4px 0 color-mix(in srgb, var(--accent) 55%, #742513); transform: rotate(-3deg); }
.composer-copy { min-width: 0; flex: 1; }
.composer-copy label { display: block; margin-bottom: 2px; color: var(--text-soft); font-size: 10px; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.composer-copy input { width: 100%; padding: 2px 0; border: 0; outline: 0; background: transparent; color: var(--text); font-size: 16px; font-weight: 700; }
.composer-copy input::placeholder { color: var(--text-faint); font-weight: 500; }
.composer-options { display: flex; align-items: center; gap: 9px; padding: 9px 13px 11px; border-top: 1px solid var(--border); overflow-x: auto; scrollbar-width: none; }
.composer-options::-webkit-scrollbar { display: none; }
.composer-group, .composer-select-wrap { display: flex; align-items: center; gap: 5px; flex: 0 0 auto; }
.composer-label { color: var(--text-faint); font: 700 9px/1 'JetBrains Mono', monospace; text-transform: uppercase; }
.composer-chip, .composer-more { min-height: 34px; padding: 6px 9px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-sunken); color: var(--text-soft); font-size: 11px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.composer-chip:hover, .composer-more:hover { border-color: var(--accent); color: var(--text); }
.composer-chip.active { background: var(--ink); color: var(--ink-text); border-color: var(--ink); }
.composer-select-wrap select { min-height: 34px; max-width: 145px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-sunken); color: var(--text); padding: 5px 26px 5px 9px; font-size: 11px; font-weight: 700; }
#composer-custom-date { min-height: 34px; border: 1px solid var(--accent); border-radius: 10px; background: var(--bg-elev); color: var(--text); padding: 5px 8px; }
.composer-more { margin-left: auto; background: transparent; }

/* Bandeau compact de progression */
.dashboard-hero.command-deck { display: grid; grid-template-columns: minmax(230px,.88fr) minmax(270px,1.25fr) minmax(230px,.95fr); gap: 10px; margin: 0 0 13px; }
.momentum-card, .next-action-card, .week-pulse-card { min-width: 0; min-height: 112px; padding: 14px 15px; border: 1px solid var(--border-strong); border-radius: 17px; box-shadow: 0 3px 0 var(--border); }
.momentum-card { background: var(--ink); color: var(--ink-text); }
.next-action-card { appearance: none; display: flex; flex-direction: column; align-items: flex-start; text-align: left; background: var(--accent); color: #fff; cursor: pointer; transition: transform .2s var(--ease-pop), box-shadow .2s ease; }
.next-action-card:hover:not(:disabled) { transform: translateY(-3px) rotate(-.25deg); box-shadow: 0 6px 0 color-mix(in srgb, var(--accent) 55%, #742513); }
.next-action-card:disabled { cursor: default; opacity: .75; }
.next-action-card strong { margin-top: 10px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 800 17px/1.15 var(--display); letter-spacing: -.025em; }
.next-action-card > span:last-child { margin-top: 6px; color: rgba(255,255,255,.76); font-size: 11px; }
.week-pulse-card { background: var(--bg-elev); }
.deck-kicker { font: 800 8px/1 'JetBrains Mono', monospace; letter-spacing: .13em; opacity: .72; }
.momentum-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; font-size: 10px; }
.momentum-line { display: flex; align-items: baseline; gap: 8px; margin: 8px 0 7px; }
.momentum-line strong { font: 800 27px/1 var(--display); }
.momentum-line span { font-size: 10.5px; opacity: .72; }
.momentum-track { height: 7px; overflow: hidden; border-radius: 999px; background: rgba(128,128,128,.24); }
.momentum-track > span { display: block; width: 0; height: 100%; border-radius: inherit; background: var(--accent); transition: width .6s var(--ease-out); }
.momentum-track.goal-reached > span { background: var(--green); }
.goal-stepper { display: flex; align-items: center; justify-content: flex-end; gap: 6px; margin-top: 6px; font-size: 9px; opacity: .78; }
.goal-stepper button { display: grid; place-items: center; width: 23px; height: 23px; border: 1px solid currentColor; border-radius: 7px; background: transparent; color: inherit; cursor: pointer; }
.goal-stepper button:hover { background: var(--accent); color: #fff; border-color: var(--accent); opacity: 1; }
.week-pulse-card .week-strip { margin: 10px 0 9px; }
.week-pulse-card .week-strip .wd { padding: 5px 0; border-radius: 8px; }
.week-signals { display: flex; justify-content: space-between; gap: 10px; color: var(--text-soft); font-size: 9.5px; }
.week-signals b { color: var(--text); font: 700 10px/1 'JetBrains Mono', monospace; }

/* Kanban renforcé */
.board { grid-template-columns: minmax(0,.9fr) minmax(0,1.18fr) minmax(0,.9fr); gap: 12px; }
.column { min-width: 0; padding: 12px; border: 1px solid var(--border-strong); border-radius: 18px; background: color-mix(in srgb, var(--bg-elev) 76%, transparent); box-shadow: 0 3px 0 var(--border); }
.column[data-status="en_cours"] { border: 2px solid var(--accent); background: color-mix(in srgb, var(--accent) 7%, var(--bg-elev)); box-shadow: 0 4px 0 var(--accent-soft); }
.column[data-status="en_cours"]::before { content: "FOCUS"; position: absolute; right: 13px; top: -10px; padding: 4px 8px; border-radius: 7px; background: var(--accent); color: #fff; font: 800 8px/1 var(--display); letter-spacing: .12em; transform: rotate(2deg); }
.column h2 { min-height: 38px; margin: 0 0 10px; padding: 2px 0 9px; align-items: center; }
.column[data-status="en_cours"] h2 { color: var(--accent); }
.col-add { width: 34px; height: 34px; border-radius: 10px; }
.task-card { padding: 14px; border-color: var(--border-strong); box-shadow: var(--shadow); cursor: pointer; }
.task-card[data-priority="haute"], .task-card[data-priority="moyenne"], .task-card[data-priority="basse"] { background: var(--bg-elev); }
.task-card:hover { transform: translateY(-4px) rotate(-.2deg); box-shadow: var(--shadow-lift); }
.task-card h3 { font-family: var(--display); font-size: 15px; letter-spacing: -.025em; }
.card-tag { background: var(--bg-sunken); color: var(--text-soft); border-radius: 8px; }
.card-actions { gap: 8px; align-items: flex-end; }
.card-action-buttons { display: flex; justify-content: flex-end; gap: 5px; flex-wrap: wrap; }
.card-actions .mini-btn { min-width: 38px; min-height: 38px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-sunken); color: var(--text-soft); }
.card-actions .mini-btn:hover { background: var(--bg-elev); color: var(--text); border-color: var(--accent); transform: translateY(-2px); }
.card-actions .mini-btn.action-text { width: auto; padding: 7px 9px; font-weight: 800; }
.start-task-btn { background: var(--ink) !important; color: var(--ink-text) !important; }
.finish-task-btn { background: var(--accent) !important; color: #fff !important; border-color: var(--accent) !important; box-shadow: 0 3px 0 color-mix(in srgb, var(--accent) 55%, #742513); }
.task-card.is-completing { pointer-events: none; z-index: 20; border-color: var(--green); animation: task-complete-hold 1.1s var(--ease-out) both; }
.task-card.is-completing::after, .view-drawer.is-completing::after { content: "✓ BOUCLÉ"; position: absolute; inset: 0; display: grid; place-items: center; background: color-mix(in srgb, var(--green) 91%, transparent); color: #fff; font: 800 24px/1 var(--display); letter-spacing: .06em; z-index: 12; }
@keyframes task-complete-hold { 0% { transform: scale(1); } 35% { transform: scale(.97) rotate(-.5deg); } 70%,100% { transform: scale(1.035) rotate(.35deg); box-shadow: 0 0 0 7px color-mix(in srgb, var(--green) 18%, transparent), var(--shadow-lift); } }
.task-card.completed-pop { animation: completed-arrive .65s var(--ease-pop) both; border-color: var(--green); }
@keyframes completed-arrive { from { opacity: .15; transform: translateY(-15px) scale(.88) rotate(-2deg); } 70% { opacity: 1; transform: translateY(0) scale(1.03) rotate(.5deg); } to { transform: none; } }

.toast-action { display: flex; align-items: center; gap: 12px; max-width: 390px; }
.toast-action button { min-height: 36px; padding: 6px 10px; border: 1px solid currentColor; border-radius: 9px; background: transparent; color: inherit; font-weight: 800; cursor: pointer; }
.celebration-layer { position: fixed; inset: 0; pointer-events: none; z-index: 999; overflow: hidden; }
.celebration-bit { position: fixed; left: var(--bit-x); top: var(--bit-y); width: 12px; height: 12px; border-radius: 3px; background: var(--bit-color,var(--accent)); animation: vnext-confetti 1.4s var(--ease-out) forwards; }
@keyframes vnext-confetti { 0% { opacity: 1; transform: translate(-50%,-50%) scale(.25) rotate(0); } 62% { opacity: 1; transform: translate(calc(-50% + var(--bit-dx)),calc(-50% + var(--bit-dy))) scale(1) rotate(var(--bit-rot)); } 100% { opacity: 0; transform: translate(calc(-50% + var(--bit-dx)),calc(-50% + var(--bit-fall))) scale(.75) rotate(var(--bit-rot)); } }

/* Vues secondaires */
.archive-row, .meeting-row, .anticip-block, .conflict-row, .cal-day, .agenda-day, .week-grid-wrap, .modal-box, .drawer { border-color: var(--border-strong); box-shadow: var(--shadow); }
.archive-row, .meeting-row, .anticip-block, .conflict-row { border-radius: 16px; }
.archive-row:hover, .meeting-row:hover, .conflict-row:hover { transform: translateY(-2px); border-color: var(--accent); box-shadow: var(--shadow-lift); }
.conflict-row { cursor: pointer; }
.drawer { border-radius: 22px 0 0 22px; }
.modal-box { border: 1px solid var(--border-strong); border-radius: 20px; }
.field input, .field select, .field textarea, .archive-toolbar input { min-height: 44px; background: var(--bg-sunken); border-color: var(--border); border-radius: 11px; }
.modal-actions .pill-btn, .drawer-actions .pill-btn { min-height: 44px; }

/* Agenda condensé */
.agenda-view { max-width: 1000px; margin: 0 auto; }
.agenda-list { display: grid; gap: 7px; }
.agenda-day { display: grid; grid-template-columns: 66px minmax(0,1fr); overflow: hidden; border: 1px solid var(--border-strong); border-radius: 15px; background: var(--bg-elev); }
.agenda-day:hover { border-color: var(--accent); }
.agenda-day.is-today { border: 2px solid var(--accent); box-shadow: 0 3px 0 var(--accent-soft); }
.agenda-date { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 9px 6px; background: var(--bg-sunken); color: var(--text-soft); text-transform: uppercase; }
.agenda-date strong { color: var(--text); font: 800 24px/1 var(--display); }
.agenda-date span { font-size: 8px; font-weight: 800; letter-spacing: .09em; }
.agenda-day.is-today .agenda-date { background: var(--accent); color: rgba(255,255,255,.78); }
.agenda-day.is-today .agenda-date strong { color: #fff; }
.agenda-content { min-width: 0; padding: 8px 10px; }
.agenda-day-head { display: flex; align-items: center; justify-content: space-between; min-height: 30px; color: var(--text-soft); font-size: 10.5px; font-weight: 750; text-transform: capitalize; }
.agenda-add { width: 32px; height: 32px; border: 1px solid var(--border-strong); border-radius: 9px; background: var(--bg-elev); color: var(--text); cursor: pointer; }
.agenda-items { display: grid; gap: 5px; }
.agenda-item { appearance: none; width: 100%; min-height: 38px; display: grid; grid-template-columns: 58px 9px minmax(0,1fr) auto; align-items: center; gap: 8px; padding: 7px 9px; border: 1px solid var(--border); border-radius: 10px; background: var(--bg-sunken); color: var(--text); text-align: left; cursor: pointer; }
.agenda-meeting { grid-template-columns: 58px minmax(0,1fr) auto; border-left: 3px solid var(--text-soft); }
.agenda-item:hover { border-color: var(--accent); transform: translateX(3px); }
.agenda-time { color: var(--text-soft); font: 700 9px/1 'JetBrains Mono',monospace; }
.agenda-item-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11.5px; font-weight: 750; }
.agenda-kind { color: var(--text-faint); font-size: 9px; white-space: nowrap; }
.agenda-empty { color: var(--text-faint); font-size: 10px; padding: 2px 0 5px; }
.agenda-day.is-empty:not(.is-today) { min-height: 52px; }
.agenda-day.is-empty:not(.is-today) .agenda-content { display: flex; align-items: center; }
.agenda-day.is-empty:not(.is-today) .agenda-day-head { flex: 1; }
.agenda-day.is-empty:not(.is-today) .agenda-empty { display: none; }
.agenda-plan { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 10px; padding: 12px 14px; border-radius: 15px; background: var(--ink); color: var(--ink-text); }
.agenda-plan > div:first-child { display: flex; gap: 8px; align-items: baseline; }
.agenda-kicker { color: var(--accent); font: 800 8px/1 var(--display); letter-spacing: .12em; }
.agenda-plan-items { display: flex; gap: 6px; overflow-x: auto; }
.agenda-plan-chip { min-height: 34px; border: 1px solid currentColor; border-radius: 9px; background: transparent; color: inherit; white-space: nowrap; cursor: pointer; }

/* Tablette : tout reste visible, aucune colonne ne dépasse. */
@media (max-width: 1180px) and (min-width: 901px) {
  :root { --sidebar-w: 205px; }
  .content-header { padding-inline: 18px; }
  .header-titles { flex: 1 1 100%; }
  .content-subtitle { display: none; }
  .search-field { flex: 1 1 190px; }
  .view { padding-inline: 18px; }
  .dashboard-hero.command-deck { grid-template-columns: .9fr 1.1fr; }
  .week-pulse-card { grid-column: 1 / -1; min-height: 82px; }
  .board { grid-template-columns: minmax(0,.92fr) minmax(0,1.14fr) minmax(0,.92fr); gap: 9px; }
  .column { padding: 9px; }
  .task-card { padding: 11px; }
  .card-action-buttons { justify-content: flex-start; }
}

/* Mobile : une seule colonne à la fois, commandes simplifiées. */
@media (max-width: 900px) {
  .app-shell { padding: 0; gap: 0; }
  .content { border: 0; border-radius: 0; }
  .sidebar { border-radius: 0 22px 22px 0; }
  .sidebar-data-actions { display: block; padding-bottom: 6px; margin-bottom: 6px; border-bottom: 1px solid rgba(255,255,255,.12); }
  .content-header { padding: calc(9px + env(safe-area-inset-top)) 12px 9px; gap: 7px; }
  .content-title { font-size: 20px; }
  .content-subtitle { display: none; }
  #select-mode-btn, #export-btn, #import-btn { display: none; }
  #add-btn { min-height: 44px; }
  .search-field { order: 4; flex: 1 1 calc(65% - 4px); }
  .pill-select#sort { order: 5; flex: 1 1 calc(35% - 4px); min-width: 120px; }
  .stats-strip { padding: 6px 12px; gap: 7px; }
  .stat-chip { min-height: 36px; padding: 6px 9px; }
  .view { padding: 11px 12px calc(86px + env(safe-area-inset-bottom)); }
  .board-status-tabs { display: grid; grid-template-columns: repeat(3,1fr); gap: 5px; margin: 0 0 10px; padding: 4px; border: 1px solid var(--border); border-radius: 14px; background: var(--bg-elev); }
  .board-status-tabs button { min-width: 0; min-height: 44px; border: 0; border-radius: 10px; background: transparent; color: var(--text-soft); font-size: 10.5px; font-weight: 800; cursor: pointer; }
  .board-status-tabs button.active { background: var(--ink); color: var(--ink-text); }
  .board-status-tabs span { margin-left: 3px; font: 700 9px/1 'JetBrains Mono',monospace; }
  .task-composer { margin-bottom: 10px; }
  .composer-main { gap: 9px; padding: 10px; }
  .composer-icon { flex-basis: 34px; width: 34px; height: 34px; }
  .composer-copy label { font-size: 8px; }
  .composer-copy input { font-size: 15px; }
  .composer-submit { min-width: 62px; padding-inline: 10px; }
  .composer-options { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(0,1fr); align-items: start; padding: 9px 10px 10px; overflow: visible; }
  .composer-group, .composer-select-wrap { min-width: 0; flex-wrap: wrap; align-content: flex-start; }
  .composer-group .composer-label, .composer-select-wrap .composer-label { flex: 1 0 100%; margin-bottom: 2px; }
  .composer-select-wrap select { width: 100%; max-width: none; }
  .composer-more { width: 100%; margin-left: 0; }
  .composer-chip, .composer-more, .composer-select-wrap select { min-height: 44px; }
  .goal-stepper button { width: 44px; height: 44px; }
  .dashboard-hero.command-deck { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 10px; }
  .momentum-card, .next-action-card, .week-pulse-card { min-height: 94px; padding: 11px; }
  .momentum-line { margin-block: 6px; }
  .momentum-line strong { font-size: 23px; }
  .next-action-card strong { margin-top: 7px; font-size: 14px; }
  .week-pulse-card { display: none; }
  .board { display: block; overflow: visible; margin: 0; padding: 0; }
  .column { width: 100%; padding: 11px; }
  .column.mobile-status-hidden { display: none; }
  .column[data-status="en_cours"]::before { top: -8px; }
  .task-card { padding: 13px; }
  .card-actions .mini-btn { min-width: 44px; min-height: 44px; }
  .col-add { width: 44px; height: 44px; }
  .drawer { width: 100vw; border-radius: 0; }
  .tabbar button { min-height: 54px; }
  .cal-header { gap: 7px; }
  .cal-header > div { width: 100%; }
  .cal-nav { display: grid; grid-template-columns: 44px minmax(0,1fr) 44px; align-items: center; }
  .cal-month-label { min-width: 0; font-size: 14px; }
  .cal-mode-toggle { flex: 1; }
  .cal-mode-toggle button { min-height: 40px; }
  #cal-today { min-height: 44px; }
  .agenda-day { grid-template-columns: 56px minmax(0,1fr); }
  .agenda-date strong { font-size: 21px; }
  .agenda-content { padding: 7px 8px; }
  .agenda-item { min-height: 44px; grid-template-columns: 50px 8px minmax(0,1fr); }
  .agenda-item .agenda-kind { display: none; }
  .agenda-meeting { grid-template-columns: 50px minmax(0,1fr); }
  .agenda-add { width: 40px; height: 40px; }
  .agenda-day.is-empty:not(.is-today) { min-height: 48px; }
  .agenda-plan { align-items: flex-start; flex-direction: column; }
  .agenda-plan-items { width: 100%; }
  .week-grid-wrap { overflow-x: hidden; }
  .week-head, .week-unscheduled-row, .week-body { grid-template-columns: 46px minmax(0,1fr); min-width: 0; width: 100%; }
  .week-body { max-height: 52vh; }
  .week-toolbar .pill-btn { flex: 1 1 150px; }
  .archive-toolbar, .meetings-toolbar, .anticip-head { gap: 8px; }
  .archive-toolbar .pill-btn, .meetings-toolbar .pill-btn, .anticip-head .pill-btn { min-height: 44px; }
}

@media (max-width: 420px) {
  .content-title { font-size: 18px; }
  .header-titles { max-width: 115px; }
  #add-btn { padding-inline: 10px; font-size: 11px; }
  .composer-main { align-items: flex-end; }
  .composer-icon { display: none; }
  .composer-options { grid-template-columns: 1fr; }
  .composer-group { gap: 6px; }
  .composer-group .composer-chip { flex: 1 1 auto; }
  .dashboard-hero.command-deck { grid-template-columns: 1fr; }
  .next-action-card { display: none; }
  .momentum-card { min-height: 100px; }
  .week-pulse-card { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
}

/* BUREAU STUDIO · a complete visual system for the existing application. */
:root { --display:'Manrope','Inter',sans-serif; --sidebar-w:222px; --radius-card:16px; --ease-studio:cubic-bezier(.16,1,.3,1); }
:root[data-theme="light"] { --bg:#F5F5F2; --bg-elev:#FFFFFF; --bg-sunken:#F5F5F2; --sidebar-bg:#F5F5F2; --text:#20211F; --text-soft:#61635F; --text-faint:#767873; --border:#E4E5DF; --border-strong:#D7D9D1; --ink:#242622; --ink-text:#FFFFFF; --accent:#E74B2C; --accent-a:#E74B2C; --accent-grad:#E74B2C; --accent-soft:#FBE8E2; --shadow:0 2px 3px #20211F03,0 8px 24px #20211F05; --shadow-lift:0 8px 16px #20211F06,0 20px 40px #20211F0A; --mine:#43473E; }
:root[data-theme="dark"] { --bg:#171916; --bg-elev:#22251F; --bg-sunken:#1B1E18; --sidebar-bg:#171916; --text:#F3F4EE; --text-soft:#B7BBAE; --text-faint:#989E8F; --border:#353A30; --border-strong:#454B3F; --ink:#EBEEE4; --ink-text:#21241D; --accent:#FF805E; --accent-a:#FF805E; --accent-grad:#FF805E; --accent-soft:#3D2D24; --shadow:0 6px 22px #00000012; --shadow-lift:0 16px 40px #00000030; --mine:#CAD0BE; }
.bureau-studio .app-shell { padding:0; gap:0; height:100dvh; }
.bureau-studio .sidebar { border:0; border-right:1px solid var(--border); border-radius:0; padding:30px 16px 20px; box-shadow:none; color:var(--text); }
.bureau-studio .brand { background:transparent; padding:0 8px 30px; gap:12px; }
.bureau-studio .logo-mark { width:35px; height:35px; background:var(--accent); box-shadow:none; border-radius:50%; transform:none; }
.bureau-studio .logo-mark svg { stroke:#fff; }
.bureau-studio .brand-name { color:var(--text); font-family:var(--display); font-size:25px; letter-spacing:-1.5px; }
.bureau-studio .brand-kicker { color:var(--text-soft); font-family:inherit; font-size:11px; font-weight:500; letter-spacing:0; text-transform:none; margin-top:1px; }
.bureau-studio .sidebar-title { color:var(--text-faint); font-family:inherit; font-size:11px; letter-spacing:.07em; padding:8px 12px; }
.bureau-studio .nav-grid { display:flex; flex-direction:column; gap:4px; }
.bureau-studio .nav-list { gap:4px; }
.bureau-studio .nav-item { min-height:44px; display:flex; flex-direction:row; align-items:center; gap:11px; padding:10px 12px; font-size:13px; font-weight:500; background:transparent; color:var(--text-soft); border:1px solid transparent; border-radius:10px; box-shadow:none; transition:background .25s,color .25s,transform .35s var(--ease-studio); }
.bureau-studio .nav-item:hover { transform:translateX(3px); color:var(--text); background:var(--bg-elev); }
.bureau-studio .nav-item.active { background:var(--ink); color:var(--ink-text); font-weight:600; border-color:transparent; }
.bureau-studio .nav-item.active .nav-icon { color:inherit; }
.bureau-studio .nav-item .badge,.bureau-studio .nav-item:not([data-view="board"]) .badge { position:static; margin-left:auto; background:var(--bg-elev); color:var(--text-soft); font-size:11px; }
.bureau-studio .nav-item.active .badge { background:var(--accent); color:#fff; }
.bureau-studio .rubrique-item,.bureau-studio .sidebar-btn { min-height:40px; color:var(--text-soft); font-size:12px; }
.bureau-studio .rubrique-item:hover,.bureau-studio .sidebar-btn:hover { background:var(--bg-elev); color:var(--text); }
.bureau-studio .rubrique-item.active { color:var(--accent); background:var(--accent-soft); }
.bureau-studio .sidebar-profile { background:var(--bg-elev); border:1px solid var(--border); border-radius:12px; }
.bureau-studio .sidebar-profile-name { color:var(--text); }
.bureau-studio .sidebar-profile-email { color:var(--text-soft); }
.bureau-studio .sidebar-footer { border-color:var(--border); }
.bureau-studio .sidebar-avatar { background:var(--ink); color:var(--ink-text); }
.bureau-studio .content { border:0; border-radius:0; background:var(--bg); box-shadow:none; }
.bureau-studio .content-header { padding:27px 32px 22px; gap:9px; border-bottom:0; background:var(--bg); }
.workspace-eyebrow { display:block; font-size:10px; color:var(--text-faint); letter-spacing:.1em; margin-bottom:9px; }
.workspace-eyebrow span { color:var(--text); }
.bureau-studio .content-title { font-family:var(--display); font-size:clamp(27px,2.6vw,40px); font-weight:600; letter-spacing:-1.8px; line-height:1.1; }
.bureau-studio .content-subtitle { margin-top:8px; font-family:inherit; font-size:12px; color:var(--text-soft); }
.bureau-studio .search-field { flex-basis:185px; }
.bureau-studio .search-field input { font-size:12px; padding-block:11px; background:var(--bg-elev); box-shadow:none; }
.bureau-studio .pill-btn,.bureau-studio .pill-select,.bureau-studio .icon-round { min-height:40px; border:1px solid var(--border); box-shadow:none; border-radius:10px; font-size:12px; transition:transform .35s var(--ease-studio),background .2s,box-shadow .3s; }
.bureau-studio .icon-round { width:38px; height:40px; }
.bureau-studio .pill-btn.primary { background:var(--accent); color:#fff; border-color:var(--accent); box-shadow:0 4px 10px color-mix(in srgb,var(--accent) 15%,transparent); }
.bureau-studio .pill-btn:hover,.bureau-studio .icon-round:hover { transform:translateY(-2px); box-shadow:var(--shadow); }
.bureau-studio .pill-btn:active,.bureau-studio .icon-round:active { transform:scale(.96); }
.bureau-studio :is(button,input,select,textarea,a):focus-visible { outline:2px solid var(--accent); outline-offset:4px; }
.bureau-studio .view { padding:0 32px 48px; background:var(--bg); }
.bureau-studio .view[hidden] { display:none !important; }
.bureau-studio .stats-strip { padding:0 32px 18px; }
.bureau-studio .stat-chip { border:0; background:var(--bg-elev); box-shadow:none; font-size:12px; }
.bureau-studio .stat-chip.hero { background:var(--ink); color:var(--ink-text); }
.bureau-studio .task-composer { border:1px solid var(--border); border-radius:15px; margin-bottom:22px; box-shadow:var(--shadow); transition:border-color .3s,box-shadow .3s; }
.bureau-studio .task-composer:focus-within { border-color:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }
.bureau-studio .composer-main { padding:15px 18px; gap:13px; }
.bureau-studio .composer-icon { width:35px; height:35px; flex-basis:35px; background:var(--bg-sunken); color:var(--text); box-shadow:none; border-radius:50%; transform:none; font-weight:400; }
.bureau-studio .composer-copy label { font-size:11px; text-transform:none; letter-spacing:0; font-weight:500; margin-bottom:4px; }
.bureau-studio .composer-copy input { font-size:15px; font-weight:500; }
.composer-disclosure { width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 18px; border:0; border-top:1px solid var(--border); background:transparent; color:var(--text-soft); font:inherit; font-size:11px; text-align:left; cursor:pointer; }
.composer-disclosure span { color:var(--accent); white-space:nowrap; }
.bureau-studio .composer-options { display:none; flex-wrap:wrap; overflow:visible; padding:12px 18px; }
.bureau-studio .task-composer.expanded .composer-options { display:flex; animation:studio-rise .35s var(--ease-studio); }
.bureau-studio .composer-chip,.bureau-studio .composer-more,.bureau-studio .composer-select-wrap select { font-size:12px; min-height:36px; font-weight:500; border-radius:8px; }
.bureau-studio .composer-label { font-size:10px; font-family:inherit; }
.bureau-studio .dashboard-hero.command-deck { grid-template-columns:minmax(0,1fr) minmax(0,1.32fr) minmax(0,1fr); gap:14px; margin-bottom:26px; }
.bureau-studio .momentum-card,.bureau-studio .next-action-card,.bureau-studio .week-pulse-card { min-height:150px; padding:20px; border:1px solid var(--border); border-radius:16px; box-shadow:none; position:relative; overflow:hidden; }
.bureau-studio .momentum-card { background:var(--bg-elev); color:var(--text); padding-right:77px; }
.bureau-studio .momentum-top { font-size:11px; line-height:1.4; flex-wrap:wrap; }
.bureau-studio .deck-kicker { font-family:inherit; font-size:10px; font-weight:600; letter-spacing:.09em; opacity:.8; }
.bureau-studio .momentum-line { margin:12px 0; gap:8px; }
.bureau-studio .momentum-line strong { font-family:var(--display); font-size:40px; font-weight:500; letter-spacing:-2px; }
.bureau-studio .momentum-line span { font-size:11px; line-height:1.4; }
.bureau-studio .momentum-track { height:3px; background:var(--border); }
.momentum-orbit { position:absolute; right:12px; top:45px; width:65px; height:65px; transform:rotate(-90deg); overflow:visible; }
.momentum-orbit circle { fill:none; stroke-width:3; }
.orbit-base { stroke:var(--border); }
.orbit-progress { stroke:var(--accent); stroke-dasharray:100; stroke-dashoffset:100; stroke-linecap:round; transition:stroke-dashoffset 1.2s var(--ease-studio); }
.momentum-orbit path { fill:none; stroke:var(--text); stroke-width:2; transform:rotate(90deg); transform-origin:50px 50px; }
.bureau-studio .goal-stepper { font-size:10px; justify-content:flex-start; opacity:1; color:var(--text-soft); }
.bureau-studio .goal-stepper button { border:1px solid var(--border); width:26px; height:26px; }
.bureau-studio .next-action-card { background:#E74B2C; color:#fff; border-color:#E74B2C; justify-content:flex-start; }
.bureau-studio .next-action-card:hover:not(:disabled) { transform:translateY(-4px); box-shadow:0 16px 28px #E74B2C20; }
.bureau-studio .next-action-card strong { font-family:var(--display); font-size:20px; font-weight:600; letter-spacing:-.7px; white-space:normal; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; line-height:1.35; padding-right:28px; margin-top:17px; }
.bureau-studio .next-action-card > span:last-child { font-size:12px; color:#fff; margin-top:auto; padding-top:10px; }
.next-arrow { position:absolute; right:18px; top:16px; font-size:24px; font-weight:400; transition:transform .6s var(--ease-studio); }
.next-action-card:hover .next-arrow { transform:translate(4px,-4px) rotate(8deg); }
.bureau-studio .week-pulse-card { background:var(--bg-elev); }
.bureau-studio .week-pulse-card .week-strip { margin:18px 0 16px; gap:4px; }
.bureau-studio .week-strip .wd { font-size:11px; padding:6px 0; }
.bureau-studio .week-signals,.bureau-studio .week-signals b { font-family:inherit; font-size:11px; }
.board-heading { display:flex; align-items:center; justify-content:space-between; margin-bottom:15px; font-size:17px; font-weight:600; letter-spacing:-.5px; }
.board-hint { font-size:12px; font-weight:400; letter-spacing:0; color:var(--text-faint); }
.bureau-studio .board { gap:16px; grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) minmax(0,1fr); }
.bureau-studio .column,.bureau-studio .column[data-status="en_cours"] { padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
.bureau-studio .column::before,.bureau-studio .column::after { display:none; }
.bureau-studio .column h2 { padding:0 1px 12px; min-height:38px; margin-bottom:6px; font-size:12px; font-family:inherit; color:var(--text); font-weight:600; border-bottom:1px solid var(--border); }
.bureau-studio .col-dot { width:7px; height:7px; box-shadow:none; }
.bureau-studio .column[data-status="en_cours"] .col-dot { background:var(--accent); box-shadow:0 0 0 4px var(--accent-soft); }
.bureau-studio .count { background:transparent; color:var(--text-faint); font-size:11px; }
.bureau-studio .col-add { width:28px; height:28px; background:transparent; border:0; color:var(--text-soft); }
.bureau-studio .cards { gap:12px; }
.bureau-studio .task-card { border:1px solid var(--border); border-radius:14px; padding:17px; box-shadow:var(--shadow); animation:none; transition:transform .5s var(--ease-studio),box-shadow .4s,border-color .3s; }
.bureau-studio .task-card:hover { transform:translateY(-4px); border-color:var(--border-strong); box-shadow:var(--shadow-lift); }
.bureau-studio .task-card h3 { font-family:var(--display); font-size:15px; font-weight:600; letter-spacing:-.4px; line-height:1.5; }
.bureau-studio .task-card::before { display:none; }
.bureau-studio .card-tag { font-size:10px; border:1px solid var(--border); background:transparent; font-weight:500; border-radius:5px; }
.bureau-studio .card-meta { font-size:12px; }
.bureau-studio .card-actions { padding-top:13px; border-top:1px solid var(--border); margin-top:13px; }
.bureau-studio .card-actions .mini-btn { border:0; border-radius:8px; background:var(--bg); font-size:11px; min-width:32px; min-height:34px; }
.bureau-studio .card-actions .mini-btn.action-text { font-weight:500; }
.bureau-studio .finish-task-btn { box-shadow:none; }
.bureau-studio .empty-note { border:1px dashed var(--border-strong); border-radius:14px; padding:32px 15px; font-size:13px; color:var(--text-soft); background:transparent; }
.bureau-studio .archive-row,.bureau-studio .meeting-row,.bureau-studio .anticip-block,.bureau-studio .conflict-row,.bureau-studio .agenda-day,.bureau-studio .cal-day { border:1px solid var(--border); box-shadow:none; border-radius:14px; background:var(--bg-elev); animation:none; transition:transform .4s var(--ease-studio),border-color .3s,box-shadow .3s; }
.bureau-studio .agenda-list { gap:10px; }
.bureau-studio .agenda-day { grid-template-columns:78px minmax(0,1fr); }
.bureau-studio .agenda-date { background:transparent; border-right:1px solid var(--border); gap:4px; }
.bureau-studio .agenda-date strong { font-family:var(--display); font-weight:500; font-size:30px; }
.bureau-studio .agenda-date span { font-size:10px; }
.bureau-studio .agenda-day.is-today { border-color:var(--accent); box-shadow:none; }
.bureau-studio .agenda-day.is-today .agenda-date { background:var(--accent-soft); color:var(--accent); }
.bureau-studio .agenda-day.is-today .agenda-date strong { color:var(--accent); }
.bureau-studio .agenda-content { padding:12px; }
.bureau-studio .agenda-item { background:var(--bg); border:0; min-height:44px; }
.bureau-studio .agenda-item-title { font-size:13px; font-weight:500; }
.bureau-studio .agenda-time { font-size:11px; }
.bureau-studio .cal-mode-toggle,.bureau-studio .board-status-tabs { background:var(--bg-elev); border:1px solid var(--border); border-radius:12px; padding:4px; }
.bureau-studio .cal-mode-toggle button { font-size:12px; border-radius:8px; }
.bureau-studio .cal-day { min-height:100px; }
.bureau-studio .week-grid-wrap { border:1px solid var(--border); border-radius:14px; box-shadow:none; }
.bureau-studio .drawer { border:1px solid var(--border); background:var(--bg-elev); border-radius:20px 0 0 20px; box-shadow:-25px 0 90px #00000014; transition:transform .65s var(--ease-studio); }
.bureau-studio .drawer h2 { font-family:var(--display); font-size:27px; letter-spacing:-1px; }
.bureau-studio .modal-box { border:1px solid var(--border); border-radius:22px; background:var(--bg-elev); box-shadow:0 30px 100px #00000024; transition:transform .5s var(--ease-studio); }
.bureau-studio .modal-overlay.open .modal-box { animation:studio-dialog .5s var(--ease-studio); }
.bureau-studio .field input,.bureau-studio .field select,.bureau-studio .field textarea { background:var(--bg); border:1px solid var(--border); border-radius:10px; font-size:14px; }
.bureau-studio .field label { font-size:12px; color:var(--text-soft); }
.bureau-studio .toast { border-radius:12px; box-shadow:var(--shadow-lift); font-size:13px; }
.bureau-studio .pomo-widget { border:1px solid var(--border); border-radius:18px; box-shadow:var(--shadow-lift); background:var(--bg-elev); }
.bureau-studio .lock-screen { background:var(--bg); overflow-y:auto; padding:32px; }
.bureau-studio .lock-box { width:min(100%,520px); padding:45px; border:1px solid var(--border); border-radius:26px; background:var(--bg-elev); box-shadow:0 30px 100px #00000008; animation:studio-rise .9s var(--ease-studio); }
.bureau-studio .lock-brand { justify-content:flex-start; margin-bottom:35px; }
.lock-eyebrow { color:var(--text-faint); font-size:10px; letter-spacing:.16em; margin-bottom:15px; }
.bureau-studio .lock-box h2 { text-align:left; font-family:var(--display); font-size:38px; font-weight:500; letter-spacing:-2px; line-height:1.22; }
.bureau-studio .lock-box h2 em { color:var(--accent); font-style:normal; }
.lock-intro { color:var(--text-soft); font-size:14px; line-height:1.6; margin:20px 0 30px; }
.auth-label { display:block; color:var(--text-soft); font-size:12px; margin:15px 0 8px; }
.bureau-studio .lock-box input { min-height:48px; font-size:16px; background:var(--bg); border:1px solid var(--border); border-radius:10px; }
.bureau-studio .lock-box .pill-btn { min-height:48px; margin-top:16px; }
@keyframes studio-rise { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:none; } }
@keyframes studio-dialog { from { opacity:0; transform:translateY(24px) scale(.97); } to { opacity:1; transform:none; } }
.bureau-studio .task-card.is-completing { animation:task-complete-hold 1.1s var(--ease-out) both; }
.bureau-studio .task-card.completed-pop { animation:completed-arrive .65s var(--ease-pop) both; }
@media(min-width:901px) and (max-width:1250px) {
  .bureau-studio { --sidebar-w:190px; }
  .bureau-studio .content-header { padding:23px 22px 20px; }
  .bureau-studio .header-titles { flex:1 1 100%; }
  .bureau-studio .search-field { flex:1 1 160px; }
  .bureau-studio .view { padding-inline:22px; }
  .bureau-studio .dashboard-hero.command-deck { grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); }
  .bureau-studio .week-pulse-card { display:none; }
  .bureau-studio .board { gap:10px; }
  .bureau-studio .task-card { padding:13px; }
  .bureau-studio .card-actions { flex-wrap:wrap; }
}
@media(max-width:900px) {
  .bureau-studio .sidebar { border-radius:0 20px 20px 0; padding-top:calc(26px + env(safe-area-inset-top)); padding-bottom:calc(90px + env(safe-area-inset-bottom)); }
  .bureau-studio .content-header { padding:calc(15px + env(safe-area-inset-top)) 17px 14px; }
  .workspace-eyebrow { display:none; }
  .bureau-studio .content-title { font-size:26px; letter-spacing:-1px; }
  .bureau-studio .header-titles { max-width:none; }
  .bureau-studio .search-field { flex:1 1 calc(65% - 4px); }
  .bureau-studio .search-field input { font-size:16px; }
  .bureau-studio .view { padding:0 17px calc(94px + env(safe-area-inset-bottom)); }
  .bureau-studio .board-status-tabs { margin-bottom:14px; }
  .bureau-studio .board-status-tabs button { font-size:12px; font-weight:500; }
  .bureau-studio .task-composer { margin-bottom:14px; }
  .bureau-studio .composer-main { padding:13px; }
  .bureau-studio .composer-copy input { font-size:16px; }
  .composer-disclosure { padding:12px 13px; font-size:11px; min-height:44px; }
  .bureau-studio .task-composer.expanded .composer-options { display:grid; grid-template-columns:1fr; padding:12px; }
  .bureau-studio .composer-chip,.bureau-studio .composer-more,.bureau-studio .composer-select-wrap select { min-height:44px; }
  .bureau-studio .dashboard-hero.command-deck { grid-template-columns:minmax(0,1fr) minmax(0,1.1fr); gap:10px; margin-bottom:22px; }
  .bureau-studio .momentum-card,.bureau-studio .next-action-card { padding:15px; min-height:146px; }
  .bureau-studio .momentum-card { padding-right:15px; }
  .bureau-studio .momentum-orbit { display:none; }
  .bureau-studio .momentum-line strong { font-size:32px; }
  .bureau-studio .momentum-line span { font-size:10px; }
  .bureau-studio .next-action-card { display:flex; }
  .bureau-studio .next-action-card strong { font-size:16px; padding-right:0; margin-top:17px; }
  .bureau-studio .next-arrow { font-size:18px; top:10px; right:10px; }
  .bureau-studio .goal-stepper button { width:44px; height:44px; }
  .bureau-studio .week-pulse-card { display:none; }
  .bureau-studio .board-hint { font-size:11px; }
  .bureau-studio .board { display:block; }
  .bureau-studio .task-card { padding:18px; }
  .bureau-studio .card-actions .mini-btn,.bureau-studio .col-add { min-width:44px; min-height:44px; }
  .bureau-studio .column h2 { padding-bottom:8px; font-size:13px; }
  .bureau-studio .tabbar { border-top:1px solid var(--border); background:var(--bg-elev); box-shadow:0 -5px 30px #00000005; padding-top:6px; }
  .bureau-studio .tabbar button { font-weight:500; }
  .bureau-studio .drawer { border-radius:0; }
  .bureau-studio .agenda-day { grid-template-columns:56px minmax(0,1fr); }
  .bureau-studio .agenda-content { padding:8px; }
  .bureau-studio .lock-screen { padding:18px; }
  .bureau-studio .lock-box { padding:28px; }
  .bureau-studio .lock-box h2 { font-size:32px; }
  .bureau-studio .pill-btn,.bureau-studio .icon-round { min-height:44px; }
}
@media(prefers-reduced-motion:reduce) { .bureau-studio *, .bureau-studio *::before,.bureau-studio *::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } }

/* WORKSPACE 2 · calendar studio and editorial reading experience */
.bureau-studio .brand-stack { display:flex; flex-direction:column; min-width:0; gap:5px; }
.bureau-studio .brand-name { display:block; font-size:26px; line-height:1.05; letter-spacing:-1.3px; white-space:nowrap; }
.bureau-studio .brand-kicker { display:block; margin:0; font-size:11px; line-height:1.4; white-space:nowrap; }
.bureau-studio .brand { gap:13px; align-items:center; }
.bureau-studio .sidebar { padding-top:28px; }
.section-overline { display:block; color:var(--text-soft); font-size:10px; letter-spacing:.12em; line-height:1.5; font-weight:600; }
/* A stronger shell: inset paper, deep ink navigation, restrained relief. */
@media(min-width:901px){
  .bureau-studio .app-shell { padding:12px; gap:12px; }
  .bureau-studio .sidebar { border:0; border-radius:20px; background:#20241E; color:#EFF0E8; padding-inline:14px; }
  .bureau-studio .sidebar .brand-name { color:#F6F7F0; }
  .bureau-studio .sidebar .brand-kicker,.bureau-studio .sidebar-title { color:#B5BDAC; }
  .bureau-studio .nav-item,.bureau-studio .sidebar-btn,.bureau-studio .rubrique-item { color:#C4CABD; }
  .bureau-studio .nav-item:hover,.bureau-studio .sidebar-btn:hover,.bureau-studio .rubrique-item:hover { background:#333A2D; color:#fff; }
  .bureau-studio .nav-item.active { background:#EEF0E7; color:#20241E; box-shadow:0 3px 0 #00000020; }
  .bureau-studio .rubrique-item.active { background:#3E3529; color:#FF9879; }
  .bureau-studio .sidebar-footer { border-color:#41473A; }
  .bureau-studio .sidebar-profile { background:#2C3226; border-color:#41473A; }
  .bureau-studio .sidebar-profile-name { color:#F6F7F0; }
  .bureau-studio .sidebar-profile-email { color:#B5BDAC; }
  .bureau-studio .content { border:1px solid var(--border); border-radius:22px; box-shadow:0 8px 35px #00000004; }
}
.bureau-studio .task-card { box-shadow:0 2px 0 var(--border),0 10px 24px #00000005; }
.bureau-studio .column[data-status="en_cours"] h2 { border-bottom:2px solid var(--accent); }
.bureau-studio .board-heading { margin-bottom:18px; }
.bureau-studio .next-action-card { box-shadow:0 4px 0 #B53822,0 14px 28px #E74B2C12; }
.bureau-studio .momentum-card,.bureau-studio .week-pulse-card { box-shadow:0 2px 0 var(--border),0 12px 28px #00000004; }
/* WEEK: one scale governs lines, event positions, zoom and drop coordinates. */
.bureau-studio #cal-week-panel { --week-hour-h:80px; --week-columns:5; }
.bureau-studio .week-toolbar { align-items:center; gap:16px; margin:8px 0 18px; padding:0; }
.week-tool-title { display:flex; flex-direction:column; gap:5px; }
.week-tool-title strong { font-family:var(--display); font-size:20px; font-weight:600; letter-spacing:-.6px; }
.bureau-studio .week-toolbar .toolbar-actions { gap:7px; }
.bureau-studio .week-toolbar .pill-btn { font-size:11px; }
.week-insights { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--border); background:var(--bg-elev); border-radius:16px; overflow:hidden; box-shadow:0 3px 0 var(--border); margin-bottom:20px; }
.week-insights>div { display:flex; flex-direction:column; position:relative; padding:16px 20px; border-right:1px solid var(--border); gap:7px; }
.week-insights>div:last-child { border-right:0; }
.week-insights strong { font-family:var(--display); font-size:28px; font-weight:500; letter-spacing:-1px; }
.week-insights span:not(.insight-mark) { font-size:11px; color:var(--text-soft); line-height:1.5; }
.insight-mark { position:absolute; right:17px; top:17px; color:var(--accent); font-size:24px; }
.week-insights .has-conflicts strong { color:var(--accent); }
.week-controls { display:flex; justify-content:space-between; align-items:center; margin-bottom:13px; gap:12px; }
.week-days-toggle { display:flex; gap:3px; padding:4px; background:var(--bg-elev); border:1px solid var(--border); border-radius:10px; }
.week-days-toggle button,.week-density button,.week-density select { min-height:34px; border:0; border-radius:7px; background:transparent; color:var(--text-soft); padding:7px 12px; cursor:pointer; font-size:12px; }
.week-days-toggle button.active { background:var(--ink); color:var(--ink-text); }
.week-density { display:flex; align-items:center; gap:9px; font-size:11px; color:var(--text-soft); }
.week-density select { background:var(--bg-elev); border:1px solid var(--border); color:var(--text); }
.week-mobile-days { display:none; }
.bureau-studio .week-grid-wrap { background:var(--bg-elev); overflow:hidden; border-radius:17px; border:1px solid var(--border-strong); box-shadow:0 8px 32px #00000005; }
.bureau-studio .week-head,.bureau-studio .week-unscheduled-row,.bureau-studio .week-body { display:grid; grid-template-columns:60px repeat(var(--week-columns),minmax(0,1fr)); min-width:0; width:100%; }
.bureau-studio .week-head,.bureau-studio .week-unscheduled-row { padding-right:0; background:var(--bg-elev); }
.bureau-studio .week-head-cell { padding:14px 12px 11px; border-left:1px solid var(--border); text-align:left; min-width:0; }
.bureau-studio .week-head-cell:first-child { border-left:0; }
.bureau-studio .week-zone { color:var(--text-faint); font-size:9px; padding:18px 5px; text-align:center; }
.week-day-heading { display:flex; justify-content:space-between; align-items:baseline; gap:4px; }
.bureau-studio .week-head-dow { font-size:11px; color:var(--text-soft); text-transform:capitalize; }
.bureau-studio .week-head-num { font-family:var(--display); font-weight:500; font-size:27px; letter-spacing:-1px; }
.bureau-studio .week-head-cell.is-today { background:var(--accent-soft); color:var(--accent); }
.bureau-studio .week-head-cell.is-today .week-head-num { color:var(--accent); background:transparent; box-shadow:none; }
.week-day-load { height:3px; background:var(--border); border-radius:5px; overflow:hidden; margin:11px 0 6px; }
.week-day-load>span { display:block; height:100%; background:var(--text-soft); border-radius:inherit; }
.week-head-cell.is-today .week-day-load>span { background:var(--accent); }
.week-load-label { display:block; color:var(--text-faint); font-size:9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bureau-studio .week-unscheduled-row { border-block:1px solid var(--border); max-height:140px; overflow-y:auto; }
.bureau-studio .week-unsched-label { color:var(--text-soft); font-size:10px; padding:13px 7px; text-align:center; line-height:1.5; }
.week-unsched-label span { color:var(--text-faint); font-size:9px; }
.bureau-studio .week-unscheduled-cell { min-width:0; padding:8px; min-height:52px; border-left:1px solid var(--border); display:flex; flex-direction:column; gap:6px; }
.bureau-studio .week-chip,.week-all-day { display:block; width:100%; border:1px solid var(--border); border-radius:6px; background:var(--bg-sunken); color:var(--text); padding:7px; font-size:11px; white-space:nowrap; text-overflow:ellipsis; overflow:hidden; text-align:left; cursor:pointer; }
.bureau-studio .week-chip .priority-dot { display:inline-block; margin-right:5px; }
.week-all-day { background:var(--ink); color:var(--ink-text); border-color:var(--ink); }
.week-loose-empty { color:var(--text-faint); font-size:12px; padding:5px; }
.bureau-studio .week-body { max-height:clamp(340px,55vh,720px); overflow-y:auto; overflow-x:hidden; scrollbar-width:none; }
.bureau-studio .week-body::-webkit-scrollbar { display:none; }
.bureau-studio .week-time-slot { height:var(--week-hour-h); font-size:10px; padding:8px 10px 0 0; top:0; }
.bureau-studio .week-day-col { border-left:1px solid var(--border); background-image:repeating-linear-gradient(to bottom,var(--border) 0,var(--border) 1px,transparent 1px,transparent var(--week-hour-h)); }
.bureau-studio .week-day-col.is-today { background-color:color-mix(in srgb,var(--accent) 3%,var(--bg-elev)); }
.bureau-studio .week-day-col.is-unavailable { background-color:var(--bg-sunken); }
.bureau-studio .week-event,.bureau-studio .week-meeting { display:flex; flex-direction:column; align-items:flex-start; gap:5px; right:auto; min-width:0; padding:9px; border:1px solid var(--border-strong); border-radius:7px; background:var(--bg-elev); color:var(--text); text-align:left; box-shadow:0 2px 0 var(--border); transition:box-shadow .2s,filter .2s; }
.bureau-studio .week-event { background:var(--ink); border-color:var(--ink); color:var(--ink-text); box-shadow:0 3px 0 #00000015; }
.bureau-studio .week-meeting { background:var(--bg-sunken); border-style:dashed; color:var(--text); }
.bureau-studio .week-event:hover,.bureau-studio .week-meeting:hover { transform:none; filter:brightness(1.12); z-index:5; box-shadow:0 8px 20px #00000020; }
.bureau-studio .week-event-title,.bureau-studio .week-meeting-title { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; white-space:normal; width:100%; font-size:11px; line-height:1.4; font-weight:600; }
.bureau-studio .week-event-time { font-family:inherit; font-size:10px; opacity:.78; white-space:nowrap; }
.week-event-kind { font-size:9px; opacity:.65; margin-top:auto; }
.bureau-studio .week-event.is-short,.bureau-studio .week-meeting.is-short { padding:3px 5px; gap:0; }
.bureau-studio .is-short .week-event-time { display:none; }
.bureau-studio .is-short .week-event-title { -webkit-line-clamp:1; font-size:10px; }
.bureau-studio .week-event.is-overlap,.bureau-studio .week-meeting.is-overlap { outline:1px solid var(--accent); outline-offset:-1px; }
.week-hover-slot { display:none; position:absolute; left:2px; right:2px; height:calc(var(--week-hour-h)/4); min-height:20px; z-index:0; border:1px dashed var(--accent); background:var(--accent-soft); color:var(--accent); font-size:10px; padding:2px 5px; pointer-events:none; }
@media(hover:hover){.week-day-col:hover .week-hover-slot { display:block; }}
.bureau-studio .week-now-line { z-index:8; background:var(--accent); }
.bureau-studio .week-now-line:before { background:var(--accent); }
/* REPORTS: a library and a separate editorial reading surface. */
.reports-intro { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; padding:12px 0 30px; }
.reports-intro h2 { font-family:var(--display); font-size:clamp(27px,3vw,42px); font-weight:500; line-height:1.18; letter-spacing:-1.6px; margin:15px 0 0; }
.reports-intro h2 span { color:var(--text-faint); }
.reports-stats { display:flex; gap:28px; padding-bottom:4px; }
.reports-stats>div { display:flex; flex-direction:column; gap:5px; }
.reports-stats strong { font-size:33px; font-family:var(--display); font-weight:500; }
.reports-stats span { font-size:11px; color:var(--text-soft); }
.bureau-studio .meetings-toolbar { border-bottom:1px solid var(--border); padding-bottom:20px; }
.reports-tools { display:flex; gap:18px; margin:22px 0; }
.reports-search,.reports-filter { display:flex; flex-direction:column; gap:8px; font-size:11px; color:var(--text-soft); }
.reports-search { flex:1; }.reports-filter { width:230px; }
.reports-tools input,.reports-tools select { min-height:44px; border:1px solid var(--border); background:var(--bg-elev); color:var(--text); border-radius:10px; padding:10px 13px; font-size:13px; }
.report-featured { display:flex; flex-direction:column; gap:16px; width:100%; position:relative; overflow:hidden; padding:28px 32px; border:1px solid #363F2D; border-radius:20px; background:#242C1F; color:#F2F4E9; text-align:left; cursor:pointer; box-shadow:0 5px 0 #161E11,0 20px 40px #00000008; transition:transform .5s var(--ease-studio),box-shadow .5s; }
.report-featured:hover { transform:translateY(-4px); box-shadow:0 8px 0 #161E11,0 24px 44px #00000014; }
.report-featured .section-overline { color:#BECBB1; }
.report-featured>strong { font:500 clamp(23px,2.6vw,34px)/1.25 var(--display); letter-spacing:-1px; max-width:850px; }
.report-featured-excerpt { max-width:740px; font-size:14px; line-height:1.7; color:#C8D1BF; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.report-featured-footer { display:flex; justify-content:space-between; gap:20px; margin-top:6px; padding-top:20px; border-top:1px solid #4A543F; font-size:12px; color:#B3C0A6; }
.report-featured-footer span { color:#F2F4E9; }
.reports-list-heading { display:flex; align-items:center; justify-content:space-between; margin:32px 0 18px; }
.reports-list-heading h3 { font-family:var(--display); font-size:18px; margin:0; letter-spacing:-.5px; }
.reports-list-heading>span { font-size:12px; color:var(--text-faint); }
.bureau-studio #meetings-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; padding-bottom:20px; }
.bureau-studio .meeting-row { margin:0; padding:22px; box-shadow:0 3px 0 var(--border),0 12px 25px #00000004; min-width:0; }
.bureau-studio .meeting-row-datebox { width:49px; background:transparent; border:0; border-right:1px solid var(--border); border-radius:0; padding-right:14px; }
.bureau-studio .meeting-row-day { font-size:27px; font-family:var(--display); font-weight:500; }
.bureau-studio .meeting-row-month { font-size:10px; }
.bureau-studio .meeting-row-title { font-family:var(--display); white-space:normal; font-size:16px; line-height:1.45; letter-spacing:-.4px; }
.report-read-time { font-size:10px; color:var(--text-faint); }
.bureau-studio .meeting-row-preview { font-size:13px; margin:7px 0; line-height:1.6; }
.bureau-studio .meeting-row .badge-pill { background:var(--bg-sunken); font-size:10px; border-radius:6px; padding:5px 7px; }
.bureau-studio .modal-box.report-reader { width:min(1380px,calc(100vw - 48px)); height:calc(100dvh - 48px); max-height:none; padding:0; display:flex; flex-direction:column; overflow:hidden; border-radius:20px; background:var(--bg-sunken); }
.reader-toolbar { display:flex; justify-content:space-between; gap:16px; align-items:center; padding:13px 22px; border-bottom:1px solid var(--border); background:var(--bg-elev); flex-shrink:0; }
.reader-brand { font-size:18px; font-family:var(--display); font-weight:600; letter-spacing:-.5px; }
.reader-brand span { font:400 12px/1.5 Inter,sans-serif; color:var(--text-faint); letter-spacing:0; margin-left:8px; }
.reader-toolbar-actions { display:flex; gap:8px; }
.reader-progress { height:2px; background:var(--border); flex:0 0 2px; }
.reader-progress>span { display:block; background:var(--accent); height:100%; width:0; }
.reader-layout { display:grid; grid-template-columns:230px minmax(0,1fr); flex:1; min-height:0; }
.reader-outline { padding:30px 18px; border-right:1px solid var(--border); overflow-y:auto; }
.reader-outline>.section-overline { font-size:9px; padding-left:10px; margin-bottom:20px; }
.reader-outline nav { display:flex; flex-direction:column; gap:5px; }
.reader-outline nav button { display:flex; gap:12px; align-items:baseline; text-align:left; border:0; background:transparent; border-radius:8px; color:var(--text-soft); padding:11px 10px; line-height:1.5; font-size:12px; cursor:pointer; }
.reader-outline nav button>span { font:10px 'JetBrains Mono',monospace; opacity:.55; }
.reader-outline nav button:hover { background:var(--bg-elev); color:var(--text); }
.reader-outline nav button.active { background:var(--accent-soft); color:var(--accent); }
.reader-outline-note { display:flex; flex-direction:column; gap:5px; padding:30px 10px; margin-top:20px; border-top:1px solid var(--border); }
.reader-outline-note strong { font-family:var(--display); font-size:28px; font-weight:500; }
.reader-outline-note span { font-size:11px; color:var(--text-faint); }
.reader-scroll { min-height:0; overflow-y:auto; overscroll-behavior:contain; scroll-behavior:smooth; padding:35px; }
.reader-document { max-width:880px; margin:0 auto; background:var(--bg-elev); box-shadow:0 12px 50px #00000006; border:1px solid var(--border); border-radius:3px; }
.reader-cover { padding:48px 50px 38px; border-bottom:1px solid var(--border); position:relative; }
.reader-cover::before { content:''; position:absolute; top:0; left:50px; width:44px; height:5px; background:var(--accent); }
.reader-cover h1 { font:500 clamp(27px,3vw,42px)/1.16 var(--display); letter-spacing:-1.5px; margin:25px 0; text-wrap:balance; }
.reader-cover-meta { display:flex; flex-wrap:wrap; gap:9px 20px; font-size:11px; color:var(--text-soft); }
.report-section { padding:36px 50px; border-bottom:1px solid var(--border); scroll-margin-top:22px; }
.report-section-heading { display:flex; align-items:baseline; gap:12px; margin-bottom:22px; }
.report-section-heading>span:first-child { color:var(--text-faint); font:11px 'JetBrains Mono',monospace; }
.report-section-heading h2 { font:600 21px/1.3 var(--display); letter-spacing:-.6px; margin:0; }
.report-section-copy { border:0; padding:5px 0; background:transparent; color:var(--text-faint); cursor:pointer; font-size:10px; margin-left:auto; flex-shrink:0; }
.report-section-copy:hover { color:var(--accent); }
.bureau-studio .report-reader .meeting-md { font-size:16px; line-height:1.9; color:var(--text); }
.bureau-studio .report-reader .meeting-md p { font-size:inherit; line-height:inherit; margin:0 0 15px; }
.bureau-studio .report-reader .meeting-md p:last-child { margin-bottom:0; }
.bureau-studio .report-reader .meeting-md li { margin-bottom:13px; padding-left:5px; }
.bureau-studio .report-reader .meeting-md li::marker { color:var(--accent); }
.bureau-studio .report-reader .meeting-md b { font-weight:600; }
.bureau-studio .report-reader .meeting-md i { color:var(--text-soft); }
.bureau-studio .report-reader .meeting-md p.md-meta { font-size:13px; line-height:1.8; color:var(--text-soft); }
.report-summary { background:color-mix(in srgb,var(--accent) 4%,var(--bg-elev)); }
.bureau-studio .report-summary .meeting-md { font-size:18px; line-height:1.9; }
.report-decisions .meeting-md ul { padding:0; list-style:none; counter-reset:decisions; }
.report-decisions .meeting-md li { counter-increment:decisions; position:relative; padding:17px 18px 17px 53px !important; border:1px solid var(--border); border-radius:10px; background:var(--bg-sunken); }
.report-decisions .meeting-md li:before { content:counter(decisions,decimal-leading-zero); position:absolute; left:17px; top:20px; color:var(--accent); font:12px 'JetBrains Mono',monospace; }
.report-questions .meeting-md { border-left:2px solid var(--accent); padding:4px 0 4px 22px; }
.report-linked-count { margin-left:auto; color:var(--text-faint); font-size:11px; }
.report-task-list { display:grid; gap:8px; }
.report-task { display:flex; gap:12px; align-items:center; width:100%; padding:14px; text-align:left; background:var(--bg-sunken); color:var(--text); border:1px solid var(--border); border-radius:10px; cursor:pointer; }
.report-task>span:nth-child(2) { flex:1; display:flex; flex-direction:column; gap:5px; }
.report-task strong { font-size:13px; line-height:1.5; font-weight:600; }.report-task small { font-size:10px; color:var(--text-soft); }
.report-task>span:last-child { font-size:10px; color:var(--text-soft); }
.report-task-status { display:grid; place-items:center; width:28px; height:28px; border:1px solid var(--border-strong); border-radius:50%; }
.report-task-status.done { color:var(--green); border-color:var(--green); }
.reader-end { padding:25px 40px; color:var(--text-faint); font-size:10px; line-height:1.7; text-align:center; }
.reader-end span { margin:0 8px; color:var(--accent); }
.reader-footer { display:flex; justify-content:space-between; padding:14px 22px; gap:10px; border-top:1px solid var(--border); background:var(--bg-elev); flex-shrink:0; }
.reader-footer>div { display:flex; flex-wrap:wrap; gap:8px; }
.bureau-studio .reader-delete { color:var(--text-faint); border-color:transparent; background:transparent; }
.reader-delete:hover { color:var(--red); }
.report-reader.focus-reading .reader-layout { grid-template-columns:1fr; }
.report-reader.focus-reading .reader-outline { display:none; }
.bureau-studio .report-reader.large-type .meeting-md { font-size:19px; }
.bureau-studio .report-reader.large-type .report-summary .meeting-md { font-size:21px; }
/* Remaining surfaces share the same hierarchy and material depth. */
.bureau-studio .drawer { padding:30px; }
.bureau-studio .view-section { margin-top:22px; padding-top:20px; border-top:1px solid var(--border); }
.bureau-studio .view-section-label { font-size:10px; letter-spacing:.12em; margin-bottom:12px; }
.bureau-studio .view-title { font-family:var(--display); font-size:28px; line-height:1.3; letter-spacing:-1px; }
.bureau-studio .anticip-block { padding:25px; margin-bottom:22px; box-shadow:0 3px 0 var(--border); }
.bureau-studio .anticip-title { font:600 21px/1.3 var(--display); letter-spacing:-.6px; }
.bureau-studio .anticip-sub { font-size:13px; line-height:1.7; max-width:650px; margin-top:7px; }
.bureau-studio .conflict-row { padding:18px; margin-top:12px; background:var(--bg-sunken); }
.bureau-studio .archive-row { padding:20px; box-shadow:0 2px 0 var(--border); margin-bottom:12px; }
.bureau-studio .archive-toolbar { padding:18px; border:1px solid var(--border); background:var(--bg-elev); border-radius:14px; margin-bottom:24px; }
.bureau-studio .modal-box:not(.report-reader) { padding:28px; box-shadow:0 5px 0 #00000010,0 40px 100px #00000024; }
.bureau-studio .prio-item { padding:20px; box-shadow:0 3px 0 var(--border); }
.bureau-studio .prio-rank { border-radius:50%; width:36px; height:36px; }
.bureau-studio .field label { font-size:13px; }
@media(min-width:901px) and (max-width:1180px){
  .bureau-studio #meetings-list { grid-template-columns:1fr; }
  .bureau-studio .week-head-cell { padding-inline:7px; }
  .week-insights>div { padding:13px; }
  .reader-layout { grid-template-columns:185px minmax(0,1fr); }
  .reader-scroll { padding:22px; }.reader-cover,.report-section { padding:30px; }
}
@media(max-width:900px){
  .bureau-studio .week-toolbar { align-items:flex-start; gap:15px; }
  .bureau-studio .week-toolbar .toolbar-actions { width:100%; display:grid; grid-template-columns:1fr 1fr; }
  .bureau-studio .week-toolbar .pill-btn { font-size:11px; min-height:44px; }
  .bureau-studio .week-toolbar .pill-btn.primary { grid-column:1/-1; }
  .week-tool-title strong { font-size:18px; }
  .week-insights { grid-template-columns:repeat(2,minmax(0,1fr)); margin-bottom:16px; }
  .week-insights>div { padding:13px 15px; border-bottom:1px solid var(--border); }
  .week-insights>div:nth-child(2) { border-right:0; }
  .week-insights>div:nth-last-child(-n+2) { border-bottom:0; }
  .week-insights strong { font-size:24px; }.week-insights span:not(.insight-mark) { font-size:10px; }
  .week-controls { flex-wrap:wrap; }.week-days-toggle { display:none; }
  .week-mobile-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); width:100%; gap:5px; }
  .week-mobile-days button { display:flex; flex-direction:column; gap:5px; align-items:center; padding:8px 3px; min-height:54px; background:var(--bg-elev); border:1px solid var(--border); border-radius:9px; color:var(--text-soft); }
  .week-mobile-days button.active { background:var(--ink); color:var(--ink-text); border-color:var(--ink); }.week-mobile-days span { font-size:9px; }.week-mobile-days b { font-size:15px; font-weight:500; }
  .week-density { width:100%; justify-content:flex-end; }.week-density button { margin-right:auto; }
  .week-density select,.week-density button { min-height:44px; }
  .bureau-studio .week-head,.bureau-studio .week-unscheduled-row,.bureau-studio .week-body { grid-template-columns:49px minmax(0,1fr); }
  .bureau-studio .week-head-cell { padding:10px 15px; }
  .bureau-studio .week-body { max-height:60vh; }
  .bureau-studio .week-event-title { font-size:13px; }.bureau-studio .week-event-time { font-size:11px; }
  .bureau-studio .week-chip,.week-all-day { min-height:44px; font-size:12px; }
  .reports-intro { align-items:flex-start; flex-direction:column; gap:20px; padding:8px 0 24px; }
  .reports-intro h2 { font-size:30px; }.reports-stats { gap:36px; }.reports-stats strong { font-size:26px; }
  .reports-tools { flex-direction:column; gap:12px; }.reports-filter { width:100%; }.reports-tools input,.reports-tools select { font-size:16px; }
  .report-featured { padding:23px; gap:13px; }.report-featured>strong { font-size:25px; }.report-featured-excerpt { font-size:13px; }
  .report-featured-footer { font-size:10px; gap:12px; }
  .bureau-studio #meetings-list { grid-template-columns:1fr; }.bureau-studio .meeting-row { padding:18px; }
  .bureau-studio .modal-box.report-reader { width:100vw; height:100dvh; border-radius:0; border:0; max-width:none; max-height:none; }
  .bureau-studio .modal-overlay:has(.report-reader) { padding:0; }
  .reader-toolbar { padding:calc(8px + env(safe-area-inset-top)) 12px 8px; gap:8px; }.reader-brand { font-size:16px; }.reader-brand span { display:none; }
  .reader-toolbar-actions { gap:4px; }.bureau-studio #reader-focus { font-size:10px; padding-inline:8px; }
  .reader-layout { display:flex; flex-direction:column; }
  .reader-outline { padding:8px 10px; border-right:0; border-bottom:1px solid var(--border); flex-shrink:0; overflow:visible; }
  .reader-outline>.section-overline,.reader-outline-note { display:none; }
  .reader-outline nav { flex-direction:row; overflow-x:auto; gap:3px; scrollbar-width:none; }.reader-outline nav button { white-space:nowrap; min-height:40px; font-size:11px; }
  .reader-scroll { padding:0; flex:1; }.reader-document { border:0; box-shadow:none; border-radius:0; }
  .reader-cover { padding:30px 23px; }.reader-cover:before { left:23px; }.reader-cover h1 { font-size:31px; }
  .report-section { padding:28px 23px; }.report-section-heading { flex-wrap:wrap; gap:8px; }.report-section-heading h2 { font-size:20px; }
  .bureau-studio .report-reader .meeting-md { font-size:16px; line-height:1.85; }.bureau-studio .report-summary .meeting-md { font-size:17px; }
  .reader-footer { padding:10px 12px calc(10px + env(safe-area-inset-bottom)); }.reader-footer>div { gap:5px; }.bureau-studio .reader-footer .pill-btn { font-size:10px; padding:8px; }
  .bureau-studio .reader-delete { font-size:10px; padding:4px; }
  .report-task { padding:11px; }.report-task>span:last-child { display:none; }
  .bureau-studio .drawer { padding:calc(25px + env(safe-area-inset-top)) 20px calc(25px + env(safe-area-inset-bottom)); }
  .bureau-studio .anticip-block { padding:20px; }
}
@media(prefers-reduced-motion:reduce){.reader-scroll { scroll-behavior:auto; }}
.bureau-studio .modal-box.report-editor { width:min(1120px,94vw); max-height:92dvh; }
.report-editor-columns { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:22px; }
.report-editor-columns textarea { width:100%; resize:vertical; }
.report-editor-preview { border:1px solid var(--border); background:var(--bg-sunken); border-radius:12px; padding:18px; min-width:0; max-height:56vh; overflow-y:auto; }
.report-editor-preview summary { font-size:12px; color:var(--text-soft); padding-bottom:15px; cursor:pointer; }
.report-editor-preview .meeting-md { font-size:14px; line-height:1.8; }
@media(max-width:900px){.report-editor-columns { grid-template-columns:1fr; }.bureau-studio .modal-box.report-editor { max-height:90dvh; }.report-editor-preview { max-height:35vh; }}
.week-legend { display:flex; gap:14px; font-size:11px; color:var(--text-soft); margin-right:auto; }
.week-add-day { background:transparent; border:0; color:var(--text-faint); font-family:inherit; font-size:18px; font-weight:400; line-height:1; width:25px; height:30px; cursor:pointer; border-radius:6px; }
.week-add-day:hover { background:var(--accent-soft); color:var(--accent); }
@media(max-width:900px){.week-legend { display:none; }.week-add-day { min-width:44px; min-height:44px; }}

/* The navigation follows the selected theme, including its desktop treatment. */
:root[data-theme="light"] .bureau-studio .sidebar { background:var(--bg-elev); color:var(--text); border:1px solid var(--border); }
:root[data-theme="light"] .bureau-studio .sidebar .brand-name,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-profile-name { color:var(--text); }
:root[data-theme="light"] .bureau-studio .sidebar .brand-kicker,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-title,
:root[data-theme="light"] .bureau-studio .sidebar .nav-item,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-btn,
:root[data-theme="light"] .bureau-studio .sidebar .rubrique-item,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-profile-email { color:var(--text-soft); }
:root[data-theme="light"] .bureau-studio .sidebar .nav-item:hover,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-btn:hover,
:root[data-theme="light"] .bureau-studio .sidebar .rubrique-item:hover { background:var(--bg-sunken); color:var(--text); }
:root[data-theme="light"] .bureau-studio .sidebar .nav-item.active,
:root[data-theme="light"] .bureau-studio .sidebar .rubrique-item.active { background:var(--accent-soft); color:#A9331B; box-shadow:none; border-color:transparent; }
:root[data-theme="light"] .bureau-studio .sidebar .nav-item.active .nav-icon { color:inherit; }
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-profile { background:var(--bg-sunken); border-color:var(--border); }
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-footer,
:root[data-theme="light"] .bureau-studio .sidebar .sidebar-data-actions { border-color:var(--border); }
