/* ============================================================
   src/shared/ui/excel-viewer/excel-viewer.css
   ============================================================
   GUIDE-UNIVER §204 — Overrides CSS SEMO pour Univer, centralisés
   et ISOLÉS ici. Ne jamais mélanger avec le CSS global de la GED
   ni réinitialiser globalement button/input/canvas/table (§312).
   ============================================================ */

/* ---- Conteneur hôte ------------------------------------- */
.excel-canvas-host {
  background: var(--background, #fff);
}

/* ============================================================
   CORRECTION COORDONNÉES (mission 2026-09-14, §16-§18)
   ============================================================
   ANCIEN WORKAROUND SUPPRIMÉ : `zoom: calc(1 / var(--semo-ui-scale))`
   sur .excel-canvas-host (mission 2026-09-13). Il réparait le VISUEL
   (échelle nette 1.0) mais le moteur Univer construit son modèle
   interne AU MONTAGE depuis des mesures DOM dans le sous-arbre du
   body zoomé (sondes de texte getBoundingClientRect, transforms de
   scène) → hit-testing décalé d'environ une ligne, écart cumulatif
   le long de la feuille (sélection, clic droit, contrôles d'en-tête).

   CORRECTION STRUCTURELLE : le conteneur moteur est monté dans un
   float rattaché à <html> (HORS du body zoomé) via
   zoom-neutral-float.ts — toutes les mesures du moteur redeviennent
   cohérentes (rect == client == logique). Le basculement de densité
   provoque un remontage (état interne non convertible à chaud).
   NOTE : NE PAS réintroduire de `zoom` sur .excel-canvas-host —
   la règle ciblerait aussi le float (descendant de <html>) et
   réintroduirait la divergence. AUCUNE compensation de cellule (§50).
   ============================================================ */

/* Univer a besoin d'un conteneur avec position et overflow maîtrisés */
.excel-canvas-container,
.excel-canvas-container .univer-app-container,
.univer-app-container {
  position: absolute;
  inset: 0;
}

/* ============================================================
   FLOAT ZOOM-NEUTRE (mission 2026-09-14, §17/§18)
   ============================================================
   Couche hôte du moteur rattachée à <html> (hors du body zoomé).
   - position: fixed + dimensions posées en style inline par
     zoom-neutral-float.ts (rect écran du placeholder, §55 : un
     seul repère — le viewport).
   - pointer-events: none sur la couche, auto sur le float seul :
     aucune surface transparente ne vole les clics (§7.1/§53).
   - z-index incrémental inline (au-dessus des overlays Radix z-50).
   ============================================================ */
.excel-zoom-neutral-float > .excel-canvas-container {
  pointer-events: auto;
}

/* ============================================================
   CURSEUR TYPE EXCEL (mission 2026-09-14, §6)
   ============================================================
   §6.2 — Sur la zone de cellules, Excel affiche une GROSSE CROIX
   BLANCHE de sélection. C'est exactement le curseur natif CSS
   `cursor: cell` (cinq carrés : un centre + quatre bras) — le
   « quatre carrés collés avec un carré central » décrit par les
   utilisateurs. Choix retenu : curseur NATIF CSS, jamais d'image
   (§6.1/§31), piloté par stylesheet plutôt que par JS (§6.1).

   Les curseurs CONTEXTUELS d'Univer (poignée de recopie
   crosshair §6.4, déplacement move §6.3, resize col/row §61,
   édition texte §60) sont posés EN STYLE INLINE par le moteur
   (setCanvasCursor) : ils restent prioritaires sur cette règle
   de base, conformément à la cascade CSS — aucun risque de
   « curseur croix partout » (§6.5).
   ============================================================ */
.excel-canvas-container canvas {
  cursor: cell;
}

/* ---- Harmonisation thème SEMO (§59 — couche légère) ------ */
/* Le moteur garde ses tokens internes ; on aligne uniquement la
   surface du conteneur sur le thème courant (light/dark). */
.excel-canvas-host .univer-app-container {
  background-color: var(--background);
  color: var(--foreground);
}

/* Dark mode — fond du canvas aligné sur le fond SEMO */
.dark .excel-canvas-host .univer-app-container {
  background-color: var(--background);
}

/* ---- Modale ---------------------------------------------- */
/* Éviter le scroll de la modale : le scroll reste interne à Univer (§152) */
.excel-viewer-modal {
  overscroll-behavior: contain;
}

/* Le panneau de propriétés scrolle indépendamment (§215) */
.excel-viewer-panel {
  overscroll-behavior: contain;
}

/* ---- Transitions de layout ------------------------------- */
/* MISSION 2026-10-05 (§19) — transition de grid SUPPRIMÉE : elle provoquait
   des géométries intermédiaires pendant le repli du panneau (recalculs du
   canvas Univer à chaque frame, viewport stale — mêmes défauts que ceux
   corrigés côté viewer PDF §17). Le repli est instantané et le
   ResizeObserver d'ExcelCanvas recalcule UNE fois la géométrie finale. */
.excel-viewer-split {
  /* intentionally no transition */
}

/* ---- Z-index ciblé (§150) -------------------------------- */
/* Les menus Univer vivent DANS sa propre app-container ; on garantit
   simplement qu'ils passent au-dessus du canvas local, sans cascade
   de z-index arbitraires qui casserait les overlays Radix de SEMO (§151). */
.excel-canvas-container .univer-popup,
.excel-canvas-container .univer-menu {
  z-index: 30;
}

/* ---- Impression désactivée (§125 : hors périmètre) ------- */
@media print {
  .excel-canvas-host {
    display: none;
  }
}

