/* HoraireFacile — feuille de style de l'application.
   Palette reprise de l'icône de l'app Android : indigo #430AE8, jaune #FCE93B. */
:root{
  --bg:#0d0b1f; --card:#171436; --line:#2a2555; --fg:#eceaf8; --muted:#a09ac4;
  --accent:#7b5cff; --accent-fg:#ffffff; --jaune:#fce93b;
  --ok:#3ddc97; --ko:#ff6b6b; --warn:#ffc857;
  --radius:14px;
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#f5f4fc; --card:#ffffff; --line:#e0ddf2; --fg:#161231; --muted:#5d5885;
    --accent:#430ae8; --accent-fg:#ffffff;
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--fg);
  font:16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  padding-bottom:env(safe-area-inset-bottom);
  -webkit-text-size-adjust:100%;
}
h1{font-size:1.05rem;margin:0}
h2{font-size:1rem;margin:0 0 .5rem}
p{margin:.4rem 0}
a{color:var(--accent)}
.muted{color:var(--muted);font-size:.85rem}
.err{color:var(--ko)}
code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}
[hidden]{display:none !important}

/* ── En-tête ────────────────────────────────────────────────────────────── */
.top{
  display:flex;align-items:center;justify-content:space-between;gap:.8rem;
  padding:calc(.7rem + env(safe-area-inset-top)) 1rem .7rem;
  border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--bg);z-index:5;
}
.brand{display:flex;align-items:center;gap:.6rem;min-width:0;cursor:pointer}
.brand img{border-radius:9px;flex:0 0 auto}
.brand div{min-width:0}
.brand p{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.icon-btn{
  flex:0 0 auto;background:transparent;border:1px solid var(--line);color:var(--fg);
  border-radius:999px;width:44px;height:44px;font-size:1.1rem;cursor:pointer;
}
.icon-btn:disabled{opacity:.4}

.tabs{
  display:flex;gap:.4rem;overflow-x:auto;padding:.6rem 1rem;
  border-bottom:1px solid var(--line);scrollbar-width:none;
  position:sticky;top:0;background:var(--bg);
  max-width:760px;margin:0 auto;box-sizing:border-box;
}
.tabs::-webkit-scrollbar{display:none}
.tab{
  flex:0 0 auto;background:transparent;color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:.35rem .8rem;font-size:.85rem;cursor:pointer;min-height:36px;
}
.tab[aria-selected="true"]{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}

#btn-menu{display:none}

/* ── Petit écran : le menu passe en liste déroulante complète ─────────────── */
@media (max-width:560px){
  #btn-menu{display:flex;align-items:center;justify-content:center;font-size:1.3rem}
  .tabs{
    display:none;flex-direction:column;align-items:stretch;
    overflow:visible;position:static;
  }
  /* Recouvre tout le reste et reste ancré à l'écran : visible même si on a
     défilé plus bas dans la page. --header-h est mesurée en JS (la hauteur
     de l'en-tête varie avec l'encoche/safe-area selon l'appareil). */
  .tabs.ouvert{
    display:flex;position:fixed;z-index:20;
    top:var(--header-h, 64px);left:0;right:0;bottom:0;
    overflow-y:auto;margin:0;max-width:none;background:var(--bg);
    box-shadow:0 12px 24px rgba(0,0,0,.3);
  }
  .tab{width:100%;text-align:left;border-radius:10px}
}

main{padding:1rem;max-width:760px;margin:0 auto}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:1rem;margin-bottom:1rem}
.card.alerte{border-color:var(--ko)}

/* ── Contrôles ──────────────────────────────────────────────────────────── */
button{
  background:var(--card);color:var(--fg);border:1px solid var(--line);
  border-radius:10px;padding:.6rem .9rem;font-size:.95rem;cursor:pointer;
  min-height:44px;touch-action:manipulation;font-family:inherit;
}
button:active{transform:scale(.99)}
button[disabled]{opacity:.45;cursor:not-allowed}
button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg);font-weight:600}
button.danger{background:var(--ko);border-color:var(--ko);color:#fff;font-weight:600}
button.ghost{background:transparent}
button.small{min-height:34px;padding:.3rem .7rem;font-size:.85rem}
button.bloc{width:100%;margin-top:.5rem}

.row{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin:.7rem 0}
.row.serre{margin:.4rem 0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;margin:.7rem 0}
.grid2 > *{min-width:0}

label.champ{display:block;margin:.7rem 0 0;font-size:.85rem;color:var(--muted)}
input[type=text],input[type=url],input[type=password],input[type=time],input[type=date],select,textarea{
  width:100%;background:var(--bg);color:var(--fg);border:1px solid var(--line);
  border-radius:10px;padding:.6rem;font:inherit;min-height:44px;margin-top:.25rem;
}
input:disabled,select:disabled,textarea:disabled{opacity:.5}
textarea{resize:vertical;min-height:96px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}
.check-line{display:flex;align-items:center;gap:.5rem;font-size:.9rem;margin:.4rem 0}
.check-line input{width:1.2rem;height:1.2rem;flex:0 0 auto}

.pill{border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;
  font-size:.8rem;background:var(--bg);display:inline-block}
.pill.ok{border-color:var(--ok);color:var(--ok)}
.pill.ko{border-color:var(--ko);color:var(--ko)}
.pill.warn{border-color:var(--warn);color:var(--warn)}

.banner{background:var(--warn);color:#161231;border-radius:10px;padding:.6rem .8rem;
  display:flex;gap:.6rem;align-items:center;justify-content:space-between;
  font-size:.9rem;font-weight:600;margin-bottom:1rem}

/* ── Lignes d'horaire ───────────────────────────────────────────────────── */
.jour{
  background:var(--bg);border:1px solid var(--line);border-radius:12px;
  padding:.7rem;margin-bottom:.6rem;
}
.jour.ferme{opacity:.75}
.jour.exception{border-color:var(--ko)}
.jour-tete{display:flex;align-items:center;justify-content:space-between;gap:.6rem}
.jour-nom{font-weight:700}
.jour-note{color:var(--ko);font-size:.78rem;display:block;font-weight:400}
.jour-heures{display:flex;gap:.5rem;margin-top:.5rem}
.jour-heures label{flex:1;font-size:.75rem;color:var(--muted)}
.jour-lecture{margin-top:.2rem;font-size:.95rem}

/* ── Vue consultation (lecture seule) ───────────────────────────────────── */
.semaine{list-style:none;margin:.4rem 0 0;padding:0}
.semaine li{display:flex;justify-content:space-between;gap:.8rem;padding:.55rem 0;
  border-bottom:1px dashed var(--line);font-size:.95rem}
.semaine li:last-child{border-bottom:0}
.semaine .j{font-weight:600}
.semaine .v{text-align:right;color:var(--muted)}
.semaine li.aujourdhui{color:var(--accent)}
.semaine li.aujourdhui .v{color:var(--accent)}
.semaine li.exception .v{color:var(--ko)}

/* ── Scanner QR ─────────────────────────────────────────────────────────── */
.scanner{position:relative;margin-top:.7rem}
.scanner video{width:100%;border-radius:12px;background:#000;aspect-ratio:1/1;object-fit:cover}
.scanner .viseur{position:absolute;inset:12%;border:3px solid var(--jaune);border-radius:12px;
  pointer-events:none}

/* ── Toast ──────────────────────────────────────────────────────────────── */
#toast{
  position:fixed;left:50%;transform:translateX(-50%);
  bottom:calc(1rem + env(safe-area-inset-bottom));
  background:var(--card);color:var(--fg);border:1px solid var(--line);
  border-radius:10px;padding:.7rem 1rem;font-size:.9rem;max-width:min(92vw,420px);
  box-shadow:0 8px 30px rgba(0,0,0,.35);z-index:50;text-align:center;
}
#toast.ko{border-color:var(--ko)}
#toast.ok{border-color:var(--ok)}

footer{padding:.5rem 1rem 2rem;text-align:center}
