/* F4IOZ — SatMe-PC's tabs on the site (Orbites, Sked): the few general
   classes of SatMe-PC's page their markup uses (.carte, .t, .petit, .ligne,
   buttons and fields…), on SatMe-PC's own tokens (PagePc.STYLE_JETONS, in
   satme-onglets.css). The Orbites tab stays dark, as in SatMe-PC; the Sked
   tab follows the site's theme. */

.satme-onglet { font-size: 13px; line-height: 1.4; color: var(--texte); font-family: Drapeaux, var(--font-sans); }
.satme-onglet .vue { display: block; }
.satme-onglet .carte { background: var(--s2); border: 1px solid var(--ligne); border-radius: var(--r3); padding: 10px 12px; margin-bottom: 10px; box-shadow: var(--ombre); }
.satme-onglet .t { color: var(--texte-2); font-size: var(--fs-xs); font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; margin-bottom: var(--sp2); }
.satme-onglet .petit { font-size: var(--fs-s); color: var(--texte-2); }
.satme-onglet .aide { margin-top: 6px; color: var(--texte-3); line-height: 1.45; }
.satme-onglet .etat { margin-top: 6px; font-size: 13px; min-height: 18px; color: var(--texte-2); }
.satme-onglet .ligne { display: flex; gap: 6px 8px; margin-top: var(--sp2); flex-wrap: wrap; align-items: center; }
.satme-onglet .ligne > select, .satme-onglet .ligne > input { flex: 1; min-width: 80px; }
.satme-onglet .grille2 { display: grid; grid-template-columns: minmax(320px, 1fr) minmax(420px, 1.6fr); gap: 12px; padding: 12px 16px; }
@media (max-width: 900px) { .satme-onglet .grille2 { grid-template-columns: minmax(0, 1fr); padding: 10px; } }
.satme-onglet input, .satme-onglet select, .satme-onglet textarea { font-size: var(--fs-m); font-family: inherit; border-radius: var(--r1); border: 1px solid var(--ligne);
  background: var(--creux); color: var(--texte); padding: 5px 8px; min-height: 0; box-shadow: none; }
.satme-onglet input:focus, .satme-onglet select:focus { outline: none; border-color: var(--rx); box-shadow: 0 0 0 2px rgba(63,224,200,.22); }
.satme-onglet input[type=checkbox], .satme-onglet input[type=radio] { accent-color: var(--rx); padding: 0; vertical-align: -2px; }
.satme-onglet input[type=range] { accent-color: var(--rx); padding: 0; border: none; background: transparent; }
.satme-onglet label { display: inline; gap: 0; color: inherit; font-weight: inherit; font-size: inherit; }
.satme-onglet :where(button) { font-size: var(--fs-m); font-family: inherit; border-radius: var(--r1); border: 1px solid var(--ligne); color: var(--texte);
  padding: 5px 9px; background: var(--s3); cursor: pointer; font-weight: 600; transition: border-color var(--anim), background-color var(--anim); }
.satme-onglet :where(button:hover:not(:disabled)) { border-color: var(--ligne-forte); background: #21303C; }
.satme-onglet button:disabled { opacity: .45; cursor: default; }
.satme-onglet .primaire { background: var(--rx); color: #06131A; border: 1px solid var(--rx); }
.satme-onglet .discret { background: transparent; border: none; }
.satme-onglet .bascule-c { display: flex; gap: 4px; }
.satme-onglet .bascule-c button { padding: 4px 10px; font-size: 12px; }
.satme-onglet .bascule-c button.actif { background: var(--cyan); color: #06131A; border-color: var(--cyan); }
.satme-onglet table { width: 100%; border-collapse: collapse; font-size: var(--fs-m); }
.satme-onglet th { text-align: left; color: var(--texte-2); font-weight: 600; font-size: var(--fs-xs); letter-spacing: .3px; padding: 4px; border-bottom: 1px solid var(--ligne-forte); background: none; text-transform: none; }
.satme-onglet td { padding: 4px; border-bottom: 1px solid var(--ligne); }
.satme-onglet tbody tr:hover > td { background: rgba(255,255,255,.018); }
.satme-onglet tr.choisi td:first-child { box-shadow: inset 3px 0 0 var(--cyan); }
.satme-onglet a { color: var(--rx); }

/* Orbites: SatMe-PC's dark stage, the height of the window under the site's bar. */
.onglet-orbites { background: var(--s0); color-scheme: dark; }
.onglet-orbites #v-orbites { position: relative; height: calc(100vh - 34px); min-height: 560px; }
@media (max-width: 719px) { .onglet-orbites #v-orbites { height: auto; } }

/* One screen on a desktop (« ecran-appli »): the page is exactly the visible viewport (dvh, 100vh where unknown) —
   whatever the bookmarks bar, the zoom or the taskbar leave —, the banner and the credits their own height, the
   tab the rest (flex, min-height 0: nothing assumes 900 or 1080 pixels). Sked's tab takes the height its
   script measures (js/ecran-appli.js, --ecran-reste), its « Exporter » folded under it. A phone, a narrow or a
   very short window scroll as usual. */
@media (min-width: 1101px) and (min-height: 600px) {
  body.ecran-appli.page-orbites { height: 100vh; height: 100dvh; display: flex; flex-direction: column; overflow: hidden; }
  body.page-orbites .site-main.site-appli { flex: 1; min-height: 0; width: 100%; display: flex; flex-direction: column; }
  body.page-orbites .site-bandeau.appli { flex: none; margin: 8px 16px; }
  body.page-orbites .onglet-orbites { flex: 1; min-height: 0; display: flex; flex-direction: column; }
  body.page-orbites .onglet-orbites #v-orbites:not(.ob-tableau) { flex: 1; height: auto; min-height: 0; }
  body.page-orbites .appli-credits { flex: none; margin: 4px 20px 6px; font-size: 11.5px; line-height: 1.35; }
  /* Its dashboard over the whole screen stays the engine's (fullscreen, or fixed over the page). */

  /* The banner's and the credits' margins inside the page (not through it: the body would grow by them). */
  body.page-sked .site-main.site-appli { display: flow-root; }
  body.page-sked .site-bandeau.appli { margin: 8px 16px; }
  body.page-sked .appli-tete { padding: 6px 20px 6px; }
  body.page-sked .appli-tete p { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  body.page-sked .appli-credits { margin: 4px 20px 6px; font-size: 11.5px; }
  body.page-sked #k-grille { height: var(--ecran-reste, calc(100vh - 230px)); min-height: 380px; padding-top: 4px; padding-bottom: 8px; align-items: stretch; }
  body.page-sked #k-grille > div { min-height: 0; display: flex; flex-direction: column; }
  body.page-sked #k-grille .carte { margin-bottom: 8px; }
  body.page-sked #k-grille > div > .carte:last-child { margin-bottom: 0; }
  body.page-sked .k-fenetres { flex: 1 1 auto; max-height: none; min-height: 60px; }
  body.page-sked #k-vide, body.page-sked #k-anim { flex: 1 1 auto; min-height: 0; }
  body.page-sked #k-anim:not([hidden]) { display: flex; flex-direction: column; }
  body.page-sked .k-corps { flex: 1 1 0; min-height: 0; flex-wrap: nowrap; }
  body.page-sked #k-carte, body.page-sked #k-globe { height: auto; min-height: 0; align-self: stretch; }
  body.page-sked .k-ciels { min-height: 0; }
  body.page-sked .k-ciels > div { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; }
  body.page-sked .k-ciels svg { flex: 1 1 0; min-height: 0; height: 100%; }
  body.page-sked #k-anim > .aide { flex: none; }
  body.page-sked .sx { padding-bottom: 4px; }
  body.page-sked .sx .carte { margin-bottom: 0; }
}
/* Orbites on the site: the left panel (satellites, card, passes) a size smaller and tighter, for room — 12 px at least,
   SatMe-PC's own sizes untouched. Its help, folded behind a « ? » by SatMe (details.ob-aide), kept neat. */
body.page-orbites .ob-liste { font-size: 12px; line-height: 1.35; gap: 6px; padding: 8px 10px; --fs-m: 12px; --fs-s: 12px; }
body.page-orbites .ob-liste .ob-seg button { padding: 3px 8px; }
body.page-orbites .ob-liste input[type="search"] { padding: 4px 8px; }
body.page-orbites .ob-sats { gap: 1px; }
body.page-orbites .ob-sat { padding: 2px 5px; gap: 1px 6px; }
body.page-orbites .ob-passages { gap: 2px; padding-top: 6px; }
body.page-orbites .ob-pas { padding: 2px 6px; }
body.page-orbites .ob-fiche { padding-top: 4px; }
body.page-orbites .ob-liste > .aide { font-size: 12px; line-height: 1.35; margin: 0; }
body.page-orbites details.ob-aide { flex: none; font-size: 12px; line-height: 1.4; color: var(--texte-2); }
body.page-orbites details.ob-aide > summary { list-style: none; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; color: var(--texte-2); font-size: 12px; }
body.page-orbites details.ob-aide > summary::-webkit-details-marker { display: none; }
body.page-orbites details.ob-aide[open] { max-height: 40%; overflow: auto; }
body.page-orbites details.ob-aide[open] > summary { margin-bottom: 4px; }

/* Nothing of SatMe-PC's station here: no « Suivre ». */
.onglet-orbites #ob-suivre { display: none; }
/* The dashboard over the whole window: above the site's rail. */
.onglet-orbites #v-orbites.ob-tableau { z-index: 1200; }

/* Sked: the site's theme. */
:root[data-theme="light"] .onglet-sked {
  --s0: #F3F6F9; --s1: #E9EEF3; --s2: #FFFFFF; --s3: #EEF3F7; --creux: #F6F9FB; --ligne: #D5DEE6; --ligne-forte: #A9B8C6;
  --texte: #0E1720; --texte-2: #33475A; --texte-3: #4D6072; --rx: #0A7C6D; --cyan: #0A7C6D; --vert: #137A3A; --ok: #137A3A;
  --ombre: 0 1px 2px rgba(14,23,32,.06), 0 4px 14px rgba(14,23,32,.06);
}
:root[data-theme="light"] .onglet-sked :where(button:hover:not(:disabled)) { background: #E3EAF0; }
:root[data-theme="light"] .onglet-sked .primaire, :root[data-theme="light"] .onglet-sked .bascule-c button.actif { color: #fff; }
.onglet-sked #k-grille { padding-top: 4px; }
/* The video is SatMe-PC's: not on the site. */
.onglet-sked #k-video, .onglet-sked #k-video-format, .onglet-sked #k-anime-l, .onglet-sked #k-video-etat { display: none !important; }
.onglet-sked .k-ciels svg text { fill: var(--texte-2); }

/* Sked « Exporter » (js/sked-export.js): three blocks side by side, stacked on a phone; folded under the tab (a click unfolds it, remembered). */
.sx { padding: 0 16px 12px; }
.sx h2.t { margin: 0; display: inline; }
/* « Exporter »: a popup window over the Sked (the page dimmed behind it), opened from the page's head. */
.sx-ouvre { margin-left: auto; white-space: nowrap; min-height: 34px; font-weight: 600; cursor: pointer; }
dialog.sx-dialog { width: min(1100px, 94vw); max-width: none; max-height: 90vh; margin: auto; padding: 0; overflow: auto;
  background: var(--panel); color: var(--text); border: 1px solid var(--border-strong); border-radius: var(--r-l); box-shadow: var(--shadow-pop); }
dialog.sx-dialog::backdrop { background: rgba(3, 6, 10, .62); backdrop-filter: blur(3px); }
dialog.sx-dialog .sx { padding: 14px 16px 16px; }
.sx-tete { display: flex; align-items: baseline; gap: 10px; margin-bottom: var(--sp2, 10px); }
.sx-tete .petit { font-size: var(--fs-s); color: var(--text-dim); }
.sx-ferme { margin-left: auto; background: none; border: 0; color: var(--text-dim); font-size: 20px; line-height: 1; cursor: pointer; padding: 2px 6px; }
.sx-ferme:hover { color: var(--text); }
@media (max-width: 560px) { dialog.sx-dialog { width: 96vw; max-height: 92vh; } dialog.sx-dialog .sx { padding: 10px; } }
.sx-repli > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; gap: 10px; }
.sx-repli > summary::-webkit-details-marker { display: none; }
.sx-repli > summary::before { content: '▸'; color: var(--texte-2); font-size: 12px; transition: transform var(--anim, .15s); }
.sx-repli[open] > summary::before { transform: rotate(90deg); }
.sx-repli[open] > summary { margin-bottom: var(--sp2); }
.sx-repli > summary .petit { font-size: var(--fs-s); }
.sx-grille { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.1fr) minmax(0, 1.1fr); gap: 12px; }
@media (max-width: 1000px) { .sx-grille { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 900px) { .sx { padding: 0 10px 10px; } }
.sx-bloc { border: 1px solid var(--ligne); border-radius: var(--r2, 8px); padding: 8px 10px 10px; margin: 0; min-width: 0; }
.sx-bloc legend { padding: 0 6px; color: var(--texte-2); font-weight: 600; font-size: var(--fs-s); }
.satme-onglet .sx-champ { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.sx-champ > span { min-width: 92px; color: var(--texte-2); font-size: var(--fs-s); }
.sx-champ > input, .sx-champ > select { flex: 1; min-width: 0; }
.sx-dates { display: flex; gap: 10px; flex-wrap: wrap; }
.sx-dates .sx-champ { flex: 1; min-width: 150px; }
.sx-dates .sx-champ > span { min-width: 0; }
.sx-puces { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; min-height: 26px; }
.sx-puce { display: inline-flex; align-items: center; gap: 4px; padding: 2px 4px 2px 10px; border-radius: 999px; background: var(--s3); border: 1px solid var(--ligne); font-weight: 600; }
.satme-onglet .sx-puce button { border: none; background: transparent; padding: 0 6px; line-height: 1.2; font-size: 15px; color: var(--texte-2); }
.sx-fenetre { margin: 0 0 4px; }
.sx-fenetre span { color: var(--texte); font-weight: 600; }
#sx-pdf-etat a, #sx-video-etat a { word-break: break-all; }
/* The recording's panel, over the page (the film's preview, its progress, the warning). */
.sx-film { position: fixed; right: 16px; bottom: 16px; z-index: 1300; width: 340px; max-width: calc(100vw - 32px); box-sizing: border-box; padding: 10px 12px;
  background: #0B1016; color: #E8F0F7; border: 1px solid #2A3A48; border-radius: 10px; box-shadow: 0 6px 24px rgba(0,0,0,.45); font: 13px/1.4 system-ui, sans-serif; }
.sx-film-t { font-weight: 700; margin-bottom: 6px; }
.sx-film-apercu { display: flex; justify-content: center; background: #000; border-radius: 6px; overflow: hidden; }
.sx-film progress { width: 100%; margin-top: 8px; }
.sx-film-avis { color: #FFB454; }
.sx-film-b { text-align: right; margin-top: 6px; }
.sx-film-b button { font: inherit; padding: 4px 10px; border-radius: 6px; border: 1px solid #2A3A48; background: #16212B; color: #E8F0F7; cursor: pointer; }
