/* Bercail. Layout : barre latérale bleu lac sur grand écran, barre d'onglets en bas sur téléphone.
   Tableau de bord en 3/2/1 colonnes. Tout en rem : la taille du texte grossit partout. */
:root{
  --bg:#F2F5F7; --surface:#FFFFFF; --sunk:#E8EDF1; --line:#D2DAE1; --line-strong:#93A2AF;
  --ink:#101A22; --muted:#4C5B67;
  --accent:#0E5D71; --accent-ink:#FFFFFF; --accent-soft:#DAEDF2;
  --good:#1B6A44; --good-soft:#DCF1E5; --warn:#874A00; --warn-soft:#FBEAD1; --alert:#B0261D; --alert-soft:#FAE2DF;
  --side:#0D2A33; --side-ink:#E7F2F5; --side-muted:#98B6BF; --side-active:#1B4B58;
  --display:"Literata", Georgia, "Times New Roman", serif;
  --body:"Atkinson Hyperlegible", "Segoe UI", Verdana, Tahoma, sans-serif;
  font-size:19px;
  color-scheme:light;
}
:root[data-size="2"]{font-size:23px}
:root[data-size="3"]{font-size:27px}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#0D1317; --surface:#151E24; --sunk:#1C272F; --line:#2A3741; --line-strong:#4D5E6B;
    --ink:#ECF2F5; --muted:#A1B0BB;
    --accent:#6DC2D6; --accent-ink:#05222A; --accent-soft:#15343E;
    --good:#78D1A1; --good-soft:#132E1F; --warn:#EFB766; --warn-soft:#372610; --alert:#FF8C82; --alert-soft:#3A1614;
    --side:#091115; --side-ink:#E2ECF0; --side-muted:#8BA3AC; --side-active:#15343E;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#0D1317; --surface:#151E24; --sunk:#1C272F; --line:#2A3741; --line-strong:#4D5E6B;
  --ink:#ECF2F5; --muted:#A1B0BB;
  --accent:#6DC2D6; --accent-ink:#05222A; --accent-soft:#15343E;
  --good:#78D1A1; --good-soft:#132E1F; --warn:#EFB766; --warn-soft:#372610; --alert:#FF8C82; --alert-soft:#3A1614;
  --side:#091115; --side-ink:#E2ECF0; --side-muted:#8BA3AC; --side-active:#15343E;
  color-scheme:dark;
}
*{box-sizing:border-box}
html{padding-top:env(safe-area-inset-top,0px)}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:1rem;line-height:1.5;margin:0}
[hidden]{display:none!important}
img{max-width:100%}
a{color:var(--accent)}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.15;text-wrap:balance;margin:0;letter-spacing:-.01em}
h1{font-size:2rem} h2{font-size:1.4rem} h3{font-size:1.1rem}
p{margin:0}
.muted{color:var(--muted)} .small{font-size:.85rem} .num{font-variant-numeric:tabular-nums}
.kicker{font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.ic{width:1.25em;height:1.25em;flex:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* Écran de connexion */
.auth-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;
  padding-block:2rem;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}
.auth-card{width:min(100%,30rem);gap:1.1rem;padding:1.6rem 1.5rem}
.auth-brand{display:flex;align-items:center;gap:.8rem}
.auth-brand svg{width:2.8rem;height:2.8rem;flex:none}
.auth-brand h1{font-size:2.2rem}
.tabs2{display:grid;grid-template-columns:1fr 1fr;gap:.3rem;background:var(--sunk);padding:.3rem;border-radius:12px}
.tabs2 button{border:0;border-radius:9px;background:transparent;color:var(--muted);font:inherit;font-weight:700;min-height:2.8rem;cursor:pointer}
.tabs2 button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.15)}
.msg{border-radius:10px;padding:.7rem .9rem;font-size:.95rem}
.msg.err{background:var(--alert-soft);color:var(--alert)}
.msg.ok{background:var(--good-soft);color:var(--good)}
.linklike{background:none;border:0;color:var(--accent);text-decoration:underline;font:inherit;cursor:pointer;padding:.3rem 0;align-self:flex-start}
.auth-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.6rem 1.2rem;font-size:.9rem}
.pwrow{display:flex;gap:.4rem}
.pwrow input{flex:1}

/* Coquille */
.app{display:grid;grid-template-columns:15.5rem minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;overflow:auto;background:var(--side);color:var(--side-ink);display:flex;flex-direction:column;gap:1.1rem;
  padding-block:1.2rem;padding-left:max(.8rem, env(safe-area-inset-left,0px));padding-right:.8rem}
.sidenav{display:flex;flex-direction:column;gap:1.1rem;flex:1}
.logo{display:flex;align-items:center;gap:.6rem;padding:0 .5rem}
.logo svg{width:2rem;height:2rem}
.logo b{font-family:var(--display);font-size:1.45rem;font-weight:600}
.navgroup{display:flex;flex-direction:column;gap:.15rem}
.navgroup .kicker{color:var(--side-muted);padding:0 .6rem .25rem}
.navitem{display:flex;align-items:center;gap:.7rem;width:100%;padding:.55rem .6rem;border:0;border-radius:10px;background:transparent;color:var(--side-ink);font:inherit;cursor:pointer;text-align:left}
.navitem:hover{background:var(--side-active)}
.navitem[aria-current="page"]{background:var(--side-active);font-weight:700;box-shadow:inset 3px 0 0 var(--accent)}
.navitem .badge{margin-left:auto;font-size:.75rem;font-weight:700;min-width:1.6rem;padding:.05rem .45rem;border-radius:999px;background:var(--accent);color:var(--accent-ink);text-align:center}
.side .foot{margin-top:auto}
.content{min-width:0;padding-block:1rem 3rem;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}
.inner{max-width:64rem;margin:0 auto;display:flex;flex-direction:column;gap:1.2rem}
#main{display:flex;flex-direction:column;gap:1.2rem}
.topbar{display:flex;justify-content:flex-end;align-items:center;gap:.6rem;min-height:1.6rem}
.bottom{display:none}
@media (min-width:900px){.content{padding-left:2rem;padding-right:max(2rem, env(safe-area-inset-right,0px))}}
@media (max-width:899px){
  .app{grid-template-columns:1fr}
  .side{display:none}
  .content{padding-bottom:calc(6.5rem + env(safe-area-inset-bottom,0px))}
  .bottom{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:15;background:var(--surface);border-top:1px solid var(--line);
    padding-bottom:env(safe-area-inset-bottom,0px);padding-left:max(4px, env(safe-area-inset-left,0px));padding-right:max(4px, env(safe-area-inset-right,0px))}
  .bottom button{display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.55rem .1rem .5rem;border:0;background:transparent;color:var(--muted);font:inherit;font-size:.72rem;cursor:pointer;min-width:0}
  .bottom button .ic{width:1.6rem;height:1.6rem}
  .bottom button[aria-current="page"]{color:var(--accent);font-weight:700}
  .bottom button span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* Barre des minuteries */
#timerbar{position:sticky;top:env(safe-area-inset-top,0px);z-index:12;display:flex;flex-wrap:wrap;gap:.5rem}
#timerbar:empty{display:none}
.tchip{display:flex;align-items:center;gap:.6rem;padding:.35rem .4rem .35rem .9rem;border-radius:999px;background:var(--surface);border:1.5px solid var(--line-strong);box-shadow:0 4px 14px -8px rgba(0,0,0,.35)}
.tchip b{font-size:1.05rem}
.tchip.ring,.timer.ring{background:var(--warn-soft);border-color:var(--warn);animation:pulse 1s infinite}
@keyframes pulse{50%{transform:scale(1.025)}}

/* En-têtes de page */
.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.8rem 1.5rem}
.page-head > div{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.page-head p.lead{color:var(--muted);max-width:40rem}
.clock{font-family:var(--display);font-size:clamp(2.6rem,9vw,4rem);font-weight:500;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}

/* Briques */
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.15rem 1.25rem;display:flex;flex-direction:column;gap:.8rem;min-width:0}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.grid{display:grid;gap:1.2rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}
.dash{display:grid;gap:1.2rem;grid-template-columns:1fr}
@media (min-width:640px){.dash{grid-template-columns:repeat(2,minmax(0,1fr))}.dash .span2{grid-column:span 2}}
@media (min-width:1180px){.dash{grid-template-columns:repeat(3,minmax(0,1fr))}}
.row{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}
.between{justify-content:space-between}
.stack{display:flex;flex-direction:column;gap:.6rem}
.stack > label.field,.card > label.field,.sub > label.field{flex:none}
.btn{font:inherit;font-weight:700;min-height:2.9rem;padding:.45rem 1rem;border-radius:10px;border:1.5px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:.45rem;text-align:center;text-decoration:none}
.btn:hover{border-color:var(--ink)}
.btn:disabled{opacity:.6;cursor:wait}
.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn-primary:hover{border-color:var(--accent);filter:brightness(1.08)}
.btn-ghost{background:transparent;border-color:transparent;color:var(--accent)}
.btn-ghost:hover{background:var(--accent-soft);border-color:transparent}
.btn-danger{color:var(--alert)}
.btn-lg{min-height:3.8rem;font-size:1.15rem;padding:.6rem 1.4rem}
.btn-sm{min-height:2.3rem;padding:.2rem .75rem;font-size:.9rem}
.btn-icon{width:2.9rem;padding:0}
.btn-block{width:100%}
.btn.armed{background:var(--alert-soft);border-color:var(--alert);color:var(--alert)}
.btn[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.btn:active{transform:translateY(1px)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
input[type=text],input[type=tel],input[type=number],input[type=email],input[type=password],textarea,select{font:inherit;color:var(--ink);background:var(--bg);border:1.5px solid var(--line-strong);border-radius:10px;padding:.55rem .75rem;min-height:2.9rem;width:100%;min-width:0}
textarea{line-height:1.55;resize:vertical}
label.field{display:flex;flex-direction:column;gap:.25rem;font-weight:700;flex:1 1 12rem;min-width:0}
label.field small{font-weight:400;color:var(--muted)}
.chk{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .75rem;border:1.5px solid var(--line-strong);border-radius:10px;cursor:pointer}
.chk input{width:1.25rem;height:1.25rem;accent-color:var(--accent);flex:none}
.chk.plain{border:0;padding:.2rem 0;align-items:flex-start}
.pill{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .6rem;border-radius:999px;font-size:.8rem;font-weight:700;background:var(--sunk);color:var(--ink);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good)} .pill.warn{background:var(--warn-soft);color:var(--warn)} .pill.accent{background:var(--accent-soft);color:var(--accent)} .pill.alert{background:var(--alert-soft);color:var(--alert)}
.note{background:var(--sunk);border-radius:10px;padding:.7rem .9rem;font-size:.9rem}
.banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem;background:var(--accent-soft);border:1px solid var(--accent);border-radius:14px;padding:1rem 1.2rem}
.banner p{max-width:38rem}
.empty{border:1.5px dashed var(--line-strong);border-radius:12px;padding:1.2rem;text-align:center;color:var(--muted)}
.sub{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:1rem;display:flex;flex-direction:column;gap:.8rem}

/* Cases à cocher larges */
.list{display:flex;flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none}
.check{display:flex;align-items:center;gap:.85rem;width:100%;text-align:left;font:inherit;padding:.7rem .85rem;border-radius:12px;border:1.5px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer;min-height:3.3rem}
.check:hover{border-color:var(--line-strong)}
.check .box{flex:none;width:1.8rem;height:1.8rem;border-radius:7px;border:2.5px solid var(--line-strong);display:grid;place-items:center;color:transparent}
.check .box svg{width:1.2rem;height:1.2rem}
.check .txt{flex:1;min-width:0}
.check .txt b{display:block}
.check.on{background:var(--good-soft);border-color:var(--good)}
.check.on .box{background:var(--good);border-color:var(--good);color:var(--surface)}
.check.on .txt b{text-decoration:line-through;text-decoration-thickness:2px}

.progress{height:.7rem;border-radius:999px;background:var(--sunk);overflow:hidden}
.progress i{display:block;height:100%;background:var(--good);border-radius:999px;transition:width .3s}
.ring-stat{display:flex;align-items:center;gap:1rem}
.ring-stat svg{width:4.2rem;height:4.2rem;flex:none}

/* Semaine */
.week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.5rem;align-items:end;height:9rem}
.week .d{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:.3rem;height:100%;min-width:0}
.week .bar{width:100%;max-width:2.4rem;background:var(--sunk);border-radius:8px 8px 4px 4px;flex:1;display:flex;align-items:flex-end;overflow:hidden}
.week .bar i{display:block;width:100%;background:var(--good);border-radius:8px 8px 4px 4px}
.week .bar.part i{background:var(--warn)}
.week .d span{font-size:.75rem;color:var(--muted)}
.week .d.today span{color:var(--ink);font-weight:700}
.week .d b{font-size:.75rem;font-variant-numeric:tabular-nums}

.line-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.7rem 0;border-top:1px solid var(--line)}
.line-item:first-child{border-top:0;padding-top:0}
.line-item > div:first-child{min-width:0;flex:1 1 12rem}

/* Recettes */
.rcard{display:flex;flex-direction:column;gap:.6rem}
.rcard .title{all:unset;cursor:pointer;font-family:var(--display);font-size:1.2rem;font-weight:600;line-height:1.2}
.rcard .title:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
.rcard:hover{border-color:var(--line-strong)}
.star{color:var(--muted)} .star.on{color:var(--warn)} .star.on svg{fill:currentColor}
.meta{display:flex;flex-wrap:wrap;gap:.4rem}
.qty{font-weight:700;font-variant-numeric:tabular-nums}
ol.steps{margin:0;padding:0;list-style:none;counter-reset:s;display:flex;flex-direction:column;gap:1rem}
ol.steps li{counter-increment:s;display:grid;grid-template-columns:2.3rem minmax(0,1fr);gap:.75rem}
ol.steps li::before{content:counter(s);font-family:var(--display);font-weight:600;font-size:1.1rem;width:2.3rem;height:2.3rem;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}
ol.steps li .row{margin-top:.45rem}
.stepper{display:inline-flex;align-items:center;gap:.5rem}
.stepper output{font-size:1.35rem;font-weight:700;min-width:2.6rem;text-align:center;font-variant-numeric:tabular-nums}

/* Minuterie */
.presets{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,8.5rem),1fr));gap:.6rem}
.presets .btn{flex-direction:column;gap:0;min-height:4.2rem}
.presets .btn small{font-weight:400;color:var(--muted)}
.timer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem;padding:1rem;border-radius:12px;background:var(--bg);border:1.5px solid var(--line)}
.timer .left{font-family:var(--display);font-size:2.5rem;font-weight:500;line-height:1;font-variant-numeric:tabular-nums}

/* Famille */
.phone{font-size:1.5rem;font-weight:700;letter-spacing:.02em;font-variant-numeric:tabular-nums;user-select:all;overflow-wrap:anywhere}
.avatar{width:2.8rem;height:2.8rem;border-radius:50%;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-family:var(--display);font-weight:600;font-size:1.2rem;flex:none}
.person-head{display:flex;align-items:center;gap:.8rem;min-width:0}
.person-head > div{min-width:0}
.bday-row{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .8rem;padding:.55rem 0;border-top:1px solid var(--line)}
.bday-row:first-child{border-top:0;padding-top:0}

/* Tricot */
.counter{display:flex;flex-direction:column;align-items:center;gap:.8rem;text-align:center}
.counter .rows{font-family:var(--display);font-weight:500;font-size:clamp(4.5rem,20vw,7.5rem);line-height:1;font-variant-numeric:tabular-nums}
.counter .rows.mark{color:var(--accent)}
.counter .plus{width:min(100%,18rem);min-height:4.8rem;font-size:1.5rem}
.dots{display:flex;gap:.35rem;flex-wrap:wrap;justify-content:center}
.dots i{width:.95rem;height:.95rem;border-radius:50%;border:2px solid var(--accent)}
.dots i.on{background:var(--accent)}

/* Jeux */
.memory{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;max-width:28rem}
@media (max-width:420px){.memory{grid-template-columns:repeat(3,minmax(0,1fr))}}
.memory button{aspect-ratio:3/4;max-width:100%;border-radius:12px;border:1.5px solid var(--accent);background:var(--accent);color:var(--accent-ink);font-size:2.1rem;cursor:pointer;font-family:Georgia,"Segoe UI Symbol",serif;line-height:1}
.memory button.open{background:var(--surface);color:var(--ink);border-color:var(--ink)}
.memory button.found{background:var(--good-soft);color:var(--good);border-color:var(--good)}
.tiles{display:flex;flex-wrap:wrap;gap:.4rem}
.tiles span{width:2.5rem;height:2.9rem;display:grid;place-items:center;border-radius:9px;background:var(--accent-soft);color:var(--accent);font-family:var(--display);font-weight:600;font-size:1.4rem}

/* Dictionnaire */
.entries{display:flex;flex-direction:column}
.entry{padding:.85rem 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:.25rem;min-width:0}
.entry:first-child{border-top:0;padding-top:0}
.entry .head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .7rem}
.entry .nat{font-style:italic;color:var(--muted)}
.entry .ex{color:var(--muted);font-style:italic}
.links{display:flex;flex-direction:column;gap:.5rem}
.links a{justify-content:space-between;flex-wrap:wrap;text-align:left;gap:.2rem .8rem}
.links a small{font-weight:400;color:var(--muted)}
.quote{font-family:var(--display);font-size:1.25rem;font-weight:500;line-height:1.35}

/* Menu (téléphone) */
.tiles-nav{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,9.5rem),1fr));gap:.7rem}
.tiles-nav button{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;padding:1rem;border-radius:14px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:inherit;cursor:pointer;text-align:left}
.tiles-nav button .ic{width:1.8rem;height:1.8rem;color:var(--accent)}
.tiles-nav button span{font-size:.8rem;color:var(--muted)}

/* Page de texte (confidentialité) */
.doc{max-width:44rem;margin:0 auto;padding-block:2rem 4rem;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:1rem}
.doc h2{margin-top:1rem}
.doc ul{margin:0;padding-left:1.3rem;display:flex;flex-direction:column;gap:.3rem}
.doc mark{background:var(--warn-soft);color:var(--warn);padding:0 .2rem;border-radius:4px}

#toast{position:fixed;left:50%;bottom:calc(1.2rem + env(safe-area-inset-bottom,0px));transform:translate(-50%,180%);display:flex;align-items:center;gap:.9rem;background:var(--ink);color:var(--bg);padding:.6rem .6rem .6rem 1.1rem;border-radius:12px;font-weight:700;transition:transform .25s;max-width:calc(100% - 32px);z-index:30}
#toast.show{transform:translate(-50%,0)}
#toast .btn{background:var(--bg);color:var(--ink);border-color:var(--bg)}
@media (max-width:899px){#toast{bottom:calc(5.6rem + env(safe-area-inset-bottom,0px))}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
