/* Le bureau MotorOS en démonstration : une icône de la barre = une fenêtre ; deux vues ancrées, une séparation qu'on
   glisse, une fenêtre détachée seulement si on la détache. Mouvements : GSAP local. */
.bureau-demo{padding-block:var(--section);isolation:isolate;overflow:hidden}
.bureau-entete{display:grid;grid-template-columns:minmax(0,1fr);gap:0;max-width:61.25rem;margin-bottom:clamp(2rem,4vw,3.5rem)}
.bureau-entete .sec-chapeau{margin:1.375rem 0 0}
.bureau-texte-mobile{display:none}

/* le bureau : le vrai fond « MotorOS Glass », la barre vitrée en bas ; le cadre prend la hauteur de la fenêtre du
   navigateur (entre 30 et 46 rem), ce qui dépasse d'une vue s'efface en fondu */
.bureau-cadre{position:relative;display:flex;flex-direction:column;gap:.875rem;height:clamp(30rem,calc(100vh - 7rem),46rem);padding:1rem 1rem 0;border:1px solid var(--stage-line-2);box-shadow:var(--ecran-ombre);overflow:hidden;color:var(--text)}
@supports (height:100svh){.bureau-cadre{height:clamp(30rem,calc(100svh - 7rem),46rem)}}
.bureau-fond{position:absolute;inset:0;background:#eef2f7 url("../img/bureau-glass-1672.webp") center/cover no-repeat;pointer-events:none}
.bureau-vues{position:relative;flex:1 1 auto;display:grid;grid-template-columns:minmax(0,calc(var(--part,50) * 1%)) .625rem minmax(0,1fr);min-width:0;min-height:0}
.bureau-vues.une-seule{grid-template-columns:minmax(0,1fr)}
.bureau-vues.une-seule .bureau-separateur{display:none}

/* une vue : barre de titre de 38 px, trois outils (détacher, réduire, fermer), un filet d'accent sur la vue active */
.bureau-fenetre{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--bg);border:1px solid rgba(21,32,48,.14);box-shadow:0 1.25rem 2.5rem -1.5rem rgba(21,32,48,.35);overflow:hidden}
.bureau-fenetre[hidden]{display:none}
.bureau-fenetre::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:var(--accent);opacity:0;transition:opacity .25s}
.bureau-fenetre.active::before{opacity:1}
.fenetre-barre{display:flex;align-items:center;justify-content:space-between;gap:.75rem;min-height:2.375rem;padding:0 .5rem 0 .875rem;background:var(--card);border-bottom:1px solid var(--border)}
.fenetre-barre h3{margin:0;font-size:.8125rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fenetre-outils{display:flex;align-items:center;gap:.125rem;flex:0 0 auto}
.outil{position:relative;display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;padding:0;border:0;background:none;color:var(--text-2);cursor:pointer}
.outil:hover{background:var(--accent-bg);color:var(--text)}
.outil:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.outil::before,.outil::after{content:"";position:absolute}
.outil-detacher::before{width:.75rem;height:.625rem;border:1.5px solid currentColor}
.outil-detacher::after{width:1.5px;height:.625rem;background:currentColor}
/* fenêtre détachée : l'icône montre la vue rentrée dans le bureau */
.outil-detacher.rattacher::after{width:.375rem;height:.3125rem;background:currentColor;transform:translate(.125rem,.0625rem)}
.outil-reduire::before{width:.75rem;height:1.5px;background:currentColor;transform:translateY(.25rem)}
.outil-fermer::before,.outil-fermer::after{width:.8125rem;height:1.5px;background:currentColor;transform:rotate(45deg)}
.outil-fermer::after{transform:rotate(-45deg)}
.bureau-contenu{flex:1 1 auto;min-height:0;padding:1rem;overflow:hidden;-webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 1.5rem),transparent);mask-image:linear-gradient(180deg,#000 calc(100% - 1.5rem),transparent)}
.bureau-contenu .mvue{display:block!important;position:static!important;opacity:1!important;transform:none!important;padding:0!important;visibility:visible!important}
.bureau-contenu .app-tete{padding:0;margin-bottom:1rem;gap:1rem;flex-wrap:wrap}
.bureau-contenu .titre-page{font-size:1.35rem}
.bureau-contenu .g2,.bureau-contenu .r1115,.bureau-contenu .r14,.bureau-contenu .r12{grid-template-columns:1fr}
.bureau-contenu .carte{min-width:0;margin-bottom:.75rem}
.bureau-contenu table{width:100%;min-width:0}
.bureau-contenu .t-app th,.bureau-contenu .t-app td{padding:.625rem .5rem;white-space:normal}
.bureau-contenu .titre-fiche{font-size:1.5rem}
.bureau-contenu .dossier-tete{margin-bottom:1rem}
.bureau-contenu .ligne{padding:.75rem;gap:.5rem}
.bureau-contenu .ligne em{display:none}
.bureau-contenu .kanban{grid-template-columns:repeat(2,minmax(0,1fr))}
.bureau-contenu .kb-col{min-height:0}
/* l'accueil dans une fenêtre : quatre chiffres sur deux rangs, la liste « À traiter » avec ses étiquettes */
.bureau-contenu .tuiles{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.625rem;margin-bottom:.75rem}
.bureau-contenu .bw-afaire .ligne{display:flex;align-items:center;justify-content:space-between}
.bureau-contenu .bw-afaire .puce{flex:0 0 auto}

/* la séparation entre les deux vues : on la glisse */
.bureau-separateur{position:relative;cursor:col-resize;touch-action:none;outline:none}
.bureau-separateur::after{content:"";position:absolute;left:50%;top:0;bottom:0;width:2px;margin-left:-1px;background:transparent;transition:background-color .2s}
.bureau-separateur:hover::after,.bureau-separateur.glisse::after,.bureau-separateur:focus-visible::after{background:var(--accent)}

/* la fenêtre détachée : elle part en bas à droite, au-dessus de la barre, et se déplace par sa barre de titre */
.bureau-flottante{position:absolute;z-index:3;right:2.5%;bottom:calc(4.25rem + 1rem);display:flex;width:clamp(18rem,30vw,24rem);height:min(24rem,calc(100% - 7rem))}
.bureau-flottante[hidden]{display:none}
.bureau-flottante .bureau-fenetre{flex:1 1 auto;border-color:rgba(21,32,48,.16);box-shadow:0 1.75rem 3.5rem -1rem rgba(21,32,48,.45),0 .5rem 1rem -.5rem rgba(21,32,48,.2)}
.bureau-flottante .fenetre-barre{cursor:grab;touch-action:none}
.bureau-flottante.glisse .fenetre-barre{cursor:grabbing}
.bureau-flottante.glisse .bureau-fenetre{box-shadow:0 2.5rem 4.5rem -1rem rgba(21,32,48,.5)}

/* la barre du bureau : vitrée, six modules ; l'accent marque la fenêtre active, un point les autres fenêtres
   ouvertes, un cercle une fenêtre réduite (comme le vrai dock) */
.bureau-coque{position:relative;z-index:4;display:flex;align-items:center;justify-content:center;margin:0 -1rem;padding:.5rem 1rem;min-height:4.25rem;background:rgb(var(--glass-nav-light-tint) / var(--glass-nav-light-alpha));background-image:var(--glass-light-reflection);backdrop-filter:blur(var(--glass-nav-blur)) saturate(var(--glass-material-saturate));-webkit-backdrop-filter:blur(var(--glass-nav-blur)) saturate(var(--glass-material-saturate));border-top:1px solid var(--glass-nav-light-border);box-shadow:var(--glass-nav-light-shadow)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.bureau-coque{background:#f6f8fb}}
.coque-modules{display:flex;align-items:center;gap:.25rem}
.coque-modules button{position:relative;display:grid;justify-items:center;gap:.125rem;min-width:4rem;padding:.375rem .5rem .5rem;border:0;background:none;font:inherit;font-size:.6875rem;font-weight:600;color:var(--text-2);cursor:pointer;transition:background-color .2s,color .2s}
.coque-modules button:hover{background:rgba(71,127,192,.1);color:var(--text)}
.coque-modules button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.coque-modules button[aria-pressed="true"]{color:var(--text)}
.coque-modules button[aria-pressed="true"]::after,.coque-modules button.reduite::after{content:"";position:absolute;left:50%;bottom:.125rem;width:.25rem;height:.25rem;margin-left:-.125rem;border-radius:50%;background:var(--text-2)}
.coque-modules button.reduite::after{width:.3125rem;height:.3125rem;margin-left:-.15625rem;background:none;box-shadow:inset 0 0 0 1px var(--text-2)}
.coque-modules button.active{background:var(--accent-bg)}
.coque-modules button.active::after{width:1.5rem;height:2px;margin-left:-.75rem;border-radius:0;background:var(--accent)}
.coque-ic{width:1.25rem;height:1.25rem;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
/* le message part en bas à gauche : la fenêtre détachée, elle, s'ouvre à droite */
.bureau-toast{position:absolute;z-index:5;left:1.5rem;bottom:5.25rem;max-width:min(26rem,calc(100% - 3rem));padding:.625rem .875rem;background:#1d1d1f;color:#fff;font-size:.8125rem;transform:translateY(.5rem);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s}
.bureau-toast.visible{opacity:1;transform:translateY(0)}
.bureau-vide{position:absolute;left:50%;top:42%;z-index:2;margin:0;padding:.625rem 1rem;transform:translate(-50%,-50%);background:rgba(255,255,255,.72);-webkit-backdrop-filter:blur(14px) saturate(170%);backdrop-filter:blur(14px) saturate(170%);font-size:.875rem;font-weight:500;color:var(--text);white-space:nowrap;box-shadow:inset 0 0 0 1px rgba(21,32,48,.1)}
.bureau-vide[hidden]{display:none}

/* sous le bureau : ce qu'on peut essayer, puis l'essai */
.bureau-bas{display:flex;justify-content:space-between;align-items:center;gap:2rem;margin-top:1.5rem}
.bureau-astuce{max-width:42rem;margin:0;color:var(--stage-muted);font-size:.9375rem}
.bureau-bas .lien{height:auto;white-space:normal;flex-shrink:0}

/* une fenêtre détachée ne reste lisible qu'à côté de deux vues larges : en dessous, l'outil disparaît */
@media(max-width:1099.98px){.outil-detacher,.bureau-flottante{display:none}.coque-modules button{min-width:3.5rem;padding-inline:.25rem}}
@media(max-width:899px){.bureau-bas{flex-direction:column;align-items:flex-start;gap:1rem}}
/* téléphone : une fenêtre à la fois, la barre du bureau passe de l'une à l'autre */
@media(max-width:639px){
  .bureau-demo{padding-block:5rem}
  .bureau-cadre{height:auto;min-height:22rem;padding:.625rem .625rem 0}
  .bureau-vues{grid-template-columns:minmax(0,1fr)}
  .bureau-separateur,.bureau-toast{display:none}
  .bureau-contenu{padding:.75rem;overflow:visible;-webkit-mask-image:none;mask-image:none}
  .bureau-coque{margin:0 -.625rem;padding:.375rem .25rem calc(.375rem + env(safe-area-inset-bottom,0px));min-height:0}
  .coque-modules{width:100%;justify-content:space-between;gap:0}
  .coque-modules button{flex:1 1 0;min-width:0;padding:.375rem .125rem .5rem;font-size:.625rem}
  .bureau-vide{white-space:normal;width:80%;text-align:center}
  .fenetre-outils,.bureau-texte-large{display:none}
  .bureau-texte-mobile{display:inline}
}
