/* ============================================================================
   XERS-OS — 4 xers-mondes « systèmes mobiles » (RS-1, nuit de build)
   ----------------------------------------------------------------------------
   springboard  🍏  iOS Cupertino — grille d'icônes, doux translucide, pilules bleues
   materia      🤖  Android Material 3 (dark tonal lilas) — cartes rondes, FAB
   tuiles       🟥  Windows Phone Metro — damier de tuiles pleines, typo géante
   contraste    🔲  Accessibilité AAA — gros boutons pleine largeur, jaune sur noir

   Fichier 100% self-contained. Un xer = tokens (html[data-theme]) + skins
   (boutons/cartes/inputs/FENÊTRES) + structure mobile (html.uitier-mobile
   body[data-xer]). Palette imposée respectée (bg+accent). Polices SYSTÈME
   uniquement (offline/CSP) — aucun @font-face, aucun asset externe, textures
   en gradients CSS. Exclusion :not([class*="plus"]) conservée sur les boutons.
   Structures gatées html.uitier-mobile (mobile only). Chaque xer garde un
   chemin de sortie visible (aucune nav retirée, seulement reskinnée).
   ============================================================================ */


/* ══════════════════════════════════════════════════════════════════════════
   1) SPRINGBOARD — 🍏 iOS clair, translucide
   ══════════════════════════════════════════════════════════════════════════ */

/* (a) TOKENS */
html[data-theme="springboard"]{
  --xr-bg:#f2f2f7; --xr-surface:#ffffff; --xr-border:#d1d1d6;
  --xr-accent:#007aff; --xr-accent2:#34c759; --xr-text:#1c1c1e; --xr-muted:#8e8e93;
  --xr-glow:rgba(0,122,255,.18); --xr-glow2:rgba(52,199,89,.14);
  --xr-font:-apple-system,BlinkMacSystemFont,"SF Pro",system-ui,"Segoe UI",sans-serif;
  --xr-font-mono:ui-monospace,"SF Mono",Menlo,monospace;
  --xr-font-ui:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  --xr-radius:14px;
}
html[data-theme="springboard"] body{
  background:radial-gradient(140% 120% at 50% 0%, #eef1fb 0%, #f2f2f7 55%, #e9e9f0 100%) fixed;
}

/* (b) SKINS */
html[data-theme="springboard"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]){
  border-radius:999px!important;background:#007aff!important;color:#fff!important;border:none!important;
  text-transform:none!important;font-weight:600!important;padding:9px 20px!important;box-shadow:none!important;
  transition:transform .12s ease,filter .12s ease!important}
html[data-theme="springboard"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]):active{
  transform:scale(.96)!important;filter:brightness(.96)!important}
html[data-theme="springboard"] :is(.koin,.ploxion,.wk-card,.service-card,.modal-content,.plx-panel,.plx-tile,.app-tile){
  border-radius:18px!important;background:rgba(255,255,255,.82)!important;border:1px solid #e5e5ea!important;
  box-shadow:0 6px 22px rgba(0,0,0,.06)!important;backdrop-filter:blur(20px) saturate(160%)!important;-webkit-backdrop-filter:blur(20px) saturate(160%)!important}
html[data-theme="springboard"] :is(input,select,textarea){
  border-radius:12px!important;background:#e5e5ea!important;border:none!important;color:#1c1c1e!important}
html[data-theme="springboard"] :is(input,select,textarea):focus{box-shadow:0 0 0 3px rgba(0,122,255,.28)!important}
/* fenêtres — le monde skinne .jos-win / .plxm-bar */
html[data-theme="springboard"] :is(.jos-win,.plxm-bar){
  background:rgba(255,255,255,.86)!important;border:1px solid #e5e5ea!important;border-radius:16px!important;
  backdrop-filter:blur(24px) saturate(180%)!important;-webkit-backdrop-filter:blur(24px) saturate(180%)!important;color:#1c1c1e!important}
html[data-theme="springboard"] .jos-win__bar{
  background:rgba(248,248,252,.9)!important;border-bottom:1px solid #e5e5ea!important;color:#1c1c1e!important}
html[data-theme="springboard"] :is(.desktop-dock,.mobile-chill-dock){
  border-radius:30px!important;background:rgba(255,255,255,.7)!important;border:1px solid #e6e6ec!important;
  box-shadow:0 10px 30px rgba(0,0,0,.12)!important;backdrop-filter:blur(28px) saturate(160%)!important;-webkit-backdrop-filter:blur(28px) saturate(160%)!important}

/* (c) STRUCTURE mobile — grille d'icônes 4 colonnes, labels sous l'icône */
html.uitier-mobile body[data-xer="springboard"] #hm .hm-lgrid,
html.uitier-mobile body[data-xer="springboard"] #hm .hm-bgrid{
  grid-template-columns:repeat(4,1fr)!important;gap:18px 10px!important}
html.uitier-mobile body[data-xer="springboard"] #hm :is(.hm-lt,.hm-bt){
  background:transparent!important;border:none!important;box-shadow:none!important;min-height:auto!important;padding:4px 2px!important;gap:6px!important}
html.uitier-mobile body[data-xer="springboard"] #hm :is(.hm-lt,.hm-bt) .hm-ic{
  width:60px;height:60px;display:flex;align-items:center;justify-content:center;font-size:2rem!important;
  border-radius:15px;background:rgba(255,255,255,.92);box-shadow:0 4px 12px rgba(0,0,0,.12)}
html.uitier-mobile body[data-xer="springboard"] #hm :is(.hm-lt,.hm-bt) .hm-nm{
  font-size:11px!important;font-weight:500!important;color:#1c1c1e!important;-webkit-line-clamp:1!important}
/* #xshell réduit en home-bar fine translucide (nav conservée, juste reskinnée) */
html.uitier-mobile body[data-xer="springboard"] #xshell .xs__bar{
  background:rgba(255,255,255,.7)!important;border-radius:999px!important;box-shadow:0 8px 24px rgba(0,0,0,.12)!important;
  backdrop-filter:blur(24px) saturate(160%)!important;-webkit-backdrop-filter:blur(24px) saturate(160%)!important}
/* ploxions en sheet-modal (coins hauts arrondis) */
html.uitier-mobile body[data-xer="springboard"] #plxm-host{border-radius:16px 16px 0 0!important;overflow:hidden}
html.uitier-mobile body[data-xer="springboard"] #plxm-bar{
  background:rgba(255,255,255,.86)!important;backdrop-filter:blur(24px) saturate(180%)!important;-webkit-backdrop-filter:blur(24px) saturate(180%)!important}
html.uitier-mobile body[data-xer="springboard"] #plxm-bar .plxm-grab{background:#c7c7cc!important}


/* ══════════════════════════════════════════════════════════════════════════
   2) MATERIA — 🤖 Android Material 3 (dark tonal lilas)
   ══════════════════════════════════════════════════════════════════════════ */

/* (a) TOKENS — palette imposée : bg #141218, accent #d0bcff (dark) */
html[data-theme="materia"]{
  --xr-bg:#141218; --xr-surface:#1d1b20; --xr-border:#49454f;
  --xr-accent:#d0bcff; --xr-accent2:#ccc2dc; --xr-text:#e6e0e9; --xr-muted:#938f99;
  --xr-glow:rgba(208,188,255,.22); --xr-glow2:rgba(204,194,220,.16);
  --xr-font:Roboto,"Roboto Flex",system-ui,"Segoe UI",sans-serif;
  --xr-font-mono:"Roboto Mono",ui-monospace,monospace;
  --xr-font-ui:Roboto,system-ui,sans-serif;
  --xr-radius:20px;
}
html[data-theme="materia"] body{
  background:radial-gradient(120% 90% at 50% -10%, #221f2b 0%, #17141c 60%, #141218 100%) fixed;
}

/* (b) SKINS — bouton filled (accent lilas, texte foncé), ripple simulé au press */
html[data-theme="materia"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]){
  border-radius:20px!important;background:#d0bcff!important;color:#381e72!important;border:none!important;
  text-transform:none!important;font-weight:600!important;letter-spacing:.01em!important;padding:10px 24px!important;
  box-shadow:0 1px 3px rgba(0,0,0,.4)!important;transition:box-shadow .2s ease,transform .1s ease!important}
html[data-theme="materia"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]):active{
  transform:scale(.97)!important;box-shadow:0 4px 14px rgba(208,188,255,.4)!important}
html[data-theme="materia"] :is(.koin,.ploxion,.wk-card,.service-card,.modal-content,.plx-panel,.plx-tile,.app-tile){
  border-radius:24px!important;background:#211f26!important;border:none!important;box-shadow:0 1px 3px rgba(0,0,0,.5)!important;color:#e6e0e9!important}
html[data-theme="materia"] :is(input,select,textarea){
  border-radius:8px 8px 0 0!important;background:#2b2930!important;border:none!important;border-bottom:2px solid #d0bcff!important;color:#e6e0e9!important}
/* fenêtres — top-app-bar plate */
html[data-theme="materia"] :is(.jos-win,.plxm-bar){
  background:#1d1b20!important;border:none!important;border-radius:16px!important;box-shadow:0 2px 10px rgba(0,0,0,.5)!important;color:#e6e0e9!important}
html[data-theme="materia"] .jos-win__bar{
  background:#211f26!important;border-bottom:none!important;color:#e6e0e9!important;box-shadow:0 1px 0 rgba(255,255,255,.05)!important}
html[data-theme="materia"] :is(.desktop-dock,.mobile-chill-dock){
  border-radius:28px!important;background:#211f26!important;border:none!important;box-shadow:0 2px 10px rgba(0,0,0,.5)!important}

/* (c) STRUCTURE — cartes 2 colonnes coins 24, plus stylé en FAB */
html.uitier-mobile body[data-xer="materia"] #hm .hm-lgrid{grid-template-columns:repeat(2,1fr)!important;gap:14px!important}
html.uitier-mobile body[data-xer="materia"] #hm .hm-bgrid{grid-template-columns:repeat(2,1fr)!important;gap:14px!important}
html.uitier-mobile body[data-xer="materia"] #hm :is(.hm-lt,.hm-bt){
  border-radius:24px!important;min-height:120px!important;background:#211f26!important;border:none!important;box-shadow:0 1px 3px rgba(0,0,0,.5)!important;
  align-items:flex-start!important;justify-content:flex-end!important;padding:16px!important}
html.uitier-mobile body[data-xer="materia"] #hm :is(.hm-lt,.hm-bt) .hm-ic{font-size:2.4rem!important}
html.uitier-mobile body[data-xer="materia"] #hm :is(.hm-lt,.hm-bt) .hm-nm{text-align:left!important;color:#e6e0e9!important;font-weight:500!important}
/* #xshell : barre arrondie + bouton « agir » en FAB 56 (nav conservée) */
html.uitier-mobile body[data-xer="materia"] #xshell .xs__bar{
  background:#211f26!important;border-radius:28px!important;box-shadow:0 4px 16px rgba(0,0,0,.5)!important;border:none!important}
html.uitier-mobile body[data-xer="materia"] #xshell .xs__plus{
  background:#d0bcff!important;border-radius:18px!important;min-width:56px!important;min-height:56px!important;box-shadow:0 3px 10px rgba(0,0,0,.5)!important}
html.uitier-mobile body[data-xer="materia"] #xshell .xs__plus .btn{color:#381e72!important}
/* plxm — top-app-bar plate + bottom-sheet à poignée */
html.uitier-mobile body[data-xer="materia"] #plxm-host{border-radius:16px 16px 0 0!important;overflow:hidden}
html.uitier-mobile body[data-xer="materia"] #plxm-bar{background:#211f26!important;border-bottom:none!important;box-shadow:0 1px 3px rgba(0,0,0,.5)!important}
html.uitier-mobile body[data-xer="materia"] #plxm-bar .plxm-grab{background:#49454f!important}


/* ══════════════════════════════════════════════════════════════════════════
   3) TUILES — 🟥 Windows Phone Metro
   ══════════════════════════════════════════════════════════════════════════ */

/* (a) TOKENS — palette imposée : bg #0a0a0a, accent #00adef (dark) */
html[data-theme="tuiles"]{
  --xr-bg:#0a0a0a; --xr-surface:#141414; --xr-border:#2a2a2a;
  --xr-accent:#00adef; --xr-accent2:#e51400; --xr-text:#ffffff; --xr-muted:#999999;
  --xr-glow:transparent; --xr-glow2:transparent;
  --xr-font:"Segoe UI","Segoe UI Semibold",system-ui,"Helvetica Neue",sans-serif;
  --xr-font-mono:"Consolas",ui-monospace,monospace;
  --xr-font-ui:"Segoe UI",system-ui,sans-serif;
  --xr-radius:0px;
}
html[data-theme="tuiles"] body{ background:linear-gradient(180deg,#0a0a0a 0%,#050505 100%) fixed; }

/* (b) SKINS — rectangles plats, bordure blanche, uppercase, press = inversion */
html[data-theme="tuiles"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]){
  border-radius:0!important;background:transparent!important;color:#fff!important;border:2px solid #fff!important;
  text-transform:uppercase!important;letter-spacing:.06em!important;font-weight:600!important;padding:10px 18px!important;box-shadow:none!important}
html[data-theme="tuiles"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]):active{
  background:#fff!important;color:#000!important}
html[data-theme="tuiles"] :is(.plx-tile,.app-tile,.koin,.ploxion){
  border-radius:0!important;background:#00adef!important;border:none!important;box-shadow:none!important;color:#fff!important}
html[data-theme="tuiles"] :is(.wk-card,.service-card,.modal-content,.plx-panel){
  border-radius:0!important;background:#141414!important;border:1px solid #2a2a2a!important;box-shadow:none!important;color:#fff!important}
html[data-theme="tuiles"] :is(input,select,textarea){
  border-radius:0!important;background:#141414!important;border:2px solid #fff!important;color:#fff!important}
html[data-theme="tuiles"] :is(input,select,textarea):focus{border-color:#00adef!important}
/* fenêtres — plein cadre, zéro radius */
html[data-theme="tuiles"] :is(.jos-win,.plxm-bar){
  border-radius:0!important;background:#0a0a0a!important;border:1px solid #2a2a2a!important;box-shadow:none!important;color:#fff!important}
html[data-theme="tuiles"] .jos-win__bar{
  background:#000!important;border-bottom:1px solid #2a2a2a!important;color:#fff!important;text-transform:uppercase!important;letter-spacing:.05em!important}
html[data-theme="tuiles"] :is(.desktop-dock,.mobile-chill-dock){
  border-radius:0!important;background:#000!important;border:1px solid #2a2a2a!important;box-shadow:none!important}

/* (c) STRUCTURE — damier de tuiles pleines 2 colonnes, 1re tuile large 2x2 */
html.uitier-mobile body[data-xer="tuiles"] #hm .hm-lgrid,
html.uitier-mobile body[data-xer="tuiles"] #hm .hm-bgrid{
  grid-template-columns:repeat(2,1fr)!important;gap:8px!important;grid-auto-rows:110px!important}
html.uitier-mobile body[data-xer="tuiles"] #hm :is(.hm-lt,.hm-bt){
  border-radius:0!important;background:#00adef!important;border:none!important;box-shadow:none!important;
  align-items:flex-start!important;justify-content:flex-end!important;padding:10px!important;min-height:0!important;height:100%!important}
html.uitier-mobile body[data-xer="tuiles"] #hm .hm-lgrid .hm-lt:first-child,
html.uitier-mobile body[data-xer="tuiles"] #hm .hm-bgrid .hm-bt:first-child{
  grid-column:span 2!important;grid-row:span 2!important}
html.uitier-mobile body[data-xer="tuiles"] #hm :is(.hm-lt,.hm-bt):nth-child(3n+2){background:#e51400!important}
html.uitier-mobile body[data-xer="tuiles"] #hm :is(.hm-lt,.hm-bt):nth-child(3n){background:#60a917!important}
html.uitier-mobile body[data-xer="tuiles"] #hm :is(.hm-lt,.hm-bt) .hm-ic{font-size:1.8rem!important}
html.uitier-mobile body[data-xer="tuiles"] #hm :is(.hm-lt,.hm-bt) .hm-nm{
  text-align:left!important;text-transform:none!important;color:#fff!important;font-weight:400!important;-webkit-line-clamp:1!important}
/* titre de section Segoe-light géant tronqué à droite (panorama) */
html.uitier-mobile body[data-xer="tuiles"] #hm .hm-ls-h{
  font-weight:300!important;font-size:34px!important;text-transform:lowercase!important;color:#fff!important;
  background:transparent!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  white-space:nowrap!important;overflow:hidden!important;text-overflow:clip!important}
/* #xshell = barre plate noire */
html.uitier-mobile body[data-xer="tuiles"] #xshell .xs__bar{
  background:#000!important;border-radius:0!important;border:1px solid #2a2a2a!important;box-shadow:none!important}
html.uitier-mobile body[data-xer="tuiles"] #plxm-host{border-radius:0!important}
html.uitier-mobile body[data-xer="tuiles"] #plxm-bar{background:#000!important;border-bottom:1px solid #2a2a2a!important}


/* ══════════════════════════════════════════════════════════════════════════
   4) CONTRASTE — 🔲 Accessibilité AAA (jaune sur noir), zéro animation
   ══════════════════════════════════════════════════════════════════════════ */

/* (a) TOKENS — palette imposée : bg #000000, accent #ffff00 (dark) */
html[data-theme="contraste"]{
  --xr-bg:#000000; --xr-surface:#0a0a0a; --xr-border:#ffffff;
  --xr-accent:#ffff00; --xr-accent2:#7fd4ff; --xr-text:#ffffff; --xr-muted:#d0d0d0;
  --xr-glow:transparent; --xr-glow2:transparent;
  --xr-font:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --xr-font-mono:ui-monospace,"Cascadia Mono",Consolas,monospace;
  --xr-font-ui:system-ui,-apple-system,sans-serif;
  --xr-radius:8px;
}
html[data-theme="contraste"] body{ background:#000000 fixed; }
/* zéro animation — LOCAL à ce xer */
html[data-theme="contraste"] *{transition:none!important;animation:none!important}

/* (b) SKINS — boutons pleins blancs texte noir, primaire jaune, press = inversion */
html[data-theme="contraste"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]){
  border-radius:8px!important;background:#fff!important;color:#000!important;border:2px solid #fff!important;
  font-weight:700!important;font-size:18px!important;min-height:44px!important;padding:12px 20px!important;
  text-transform:none!important;box-shadow:none!important;transition:none!important}
html[data-theme="contraste"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]):active{
  background:#000!important;color:#fff!important}
html[data-theme="contraste"] :is(.cyber-button,button,.btn,.xb-btn):not([class*="plus"]):focus-visible{
  outline:3px solid #ffff00!important;outline-offset:2px!important}
html[data-theme="contraste"] :is(.btn-primary,.primary,[data-primary]):not([class*="plus"]){
  background:#ffff00!important;color:#000!important;border-color:#ffff00!important}
html[data-theme="contraste"] :is(.koin,.ploxion,.wk-card,.service-card,.modal-content,.plx-panel,.plx-tile,.app-tile){
  border-radius:8px!important;background:#000!important;border:2px solid #fff!important;box-shadow:none!important;color:#fff!important}
html[data-theme="contraste"] :is(input,select,textarea){
  border-radius:8px!important;background:#000!important;border:2px solid #fff!important;color:#fff!important;font-size:18px!important;min-height:44px!important}
html[data-theme="contraste"] :is(input,select,textarea):focus-visible{
  outline:3px solid #ffff00!important;outline-offset:2px!important;border-color:#ffff00!important}
/* fenêtres — plein écran, titre grand, cadre franc */
html[data-theme="contraste"] :is(.jos-win,.plxm-bar){
  border-radius:8px!important;background:#000!important;border:2px solid #fff!important;box-shadow:none!important;color:#fff!important}
html[data-theme="contraste"] .jos-win__bar{
  background:#000!important;border-bottom:2px solid #fff!important;color:#fff!important;font-size:22px!important;font-weight:700!important}
html[data-theme="contraste"] :is(.desktop-dock,.mobile-chill-dock){
  border-radius:8px!important;background:#000!important;border:2px solid #fff!important;box-shadow:none!important}

/* (c) STRUCTURE — une colonne, gros boutons pleine largeur ≥56px */
html.uitier-mobile body[data-xer="contraste"] #hm .hm-lgrid,
html.uitier-mobile body[data-xer="contraste"] #hm .hm-bgrid{
  grid-template-columns:1fr!important;gap:10px!important}
html.uitier-mobile body[data-xer="contraste"] #hm :is(.hm-lt,.hm-bt){
  flex-direction:row!important;justify-content:flex-start!important;gap:16px!important;min-height:56px!important;
  border-radius:8px!important;background:#000!important;border:2px solid #fff!important;box-shadow:none!important;padding:12px 16px!important}
html.uitier-mobile body[data-xer="contraste"] #hm :is(.hm-lt,.hm-bt) .hm-ic{font-size:1.8rem!important}
html.uitier-mobile body[data-xer="contraste"] #hm :is(.hm-lt,.hm-bt) .hm-nm{
  text-align:left!important;font-size:18px!important;font-weight:700!important;color:#fff!important;-webkit-line-clamp:2!important}
html.uitier-mobile body[data-xer="contraste"] #hm :is(.hm-lt,.hm-bt):active{background:#fff!important}
html.uitier-mobile body[data-xer="contraste"] #hm :is(.hm-lt,.hm-bt):active .hm-nm{color:#000!important}
html.uitier-mobile body[data-xer="contraste"] #hm .hm-lt:focus-visible,
html.uitier-mobile body[data-xer="contraste"] #hm .hm-bt:focus-visible{outline:3px solid #ffff00!important;outline-offset:2px!important}
/* #xshell = barre fixe basse, 3 gros boutons libellés (jamais icône seule) */
html.uitier-mobile body[data-xer="contraste"] #xshell .xs__bar{
  background:#000!important;border:2px solid #fff!important;border-radius:8px!important;box-shadow:none!important}
html.uitier-mobile body[data-xer="contraste"] #xshell .xs__bar :is(.xs__p,.xs__plus,.xs__grip){
  min-height:56px!important;min-width:56px!important;font-size:20px!important;color:#fff!important}
html.uitier-mobile body[data-xer="contraste"] #xshell .xs__bar :focus-visible{outline:3px solid #ffff00!important;outline-offset:2px!important}
/* plxm plein écran, titre 22px */
html.uitier-mobile body[data-xer="contraste"] #plxm-host{border-radius:0!important}
html.uitier-mobile body[data-xer="contraste"] #plxm-bar{background:#000!important;border-bottom:2px solid #fff!important}
html.uitier-mobile body[data-xer="contraste"] #plxm-bar .plxm-title{font-size:22px!important;color:#fff!important}

/* ── fin xers-os.css ── */
