:root{--ink:#000000;--paper:#F2F4FA;--card:#fff;--blue:#E10600;--blue-d:#B30500;--lime:#E10600;--line:#DADFEE;--mut:#5A6283;--bad:#C0243C;--ok:#128A5A;
--w1:#E10600;--w2:#6B6F7B;--w3:#D9822B;--w4:#B83280;--r:14px;--nav:64px}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.55 "Segoe UI Variable","Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
h1,h2,h3{line-height:1.2;letter-spacing:-.02em;margin:0 0 .5em;font-weight:800}
h1{font-size:1.7rem}h2{font-size:1.25rem}h3{font-size:1.05rem}
p{margin:0 0 .8em}a{color:var(--blue)}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.boot{padding:40px;text-align:center;color:var(--mut)}
.wrap{max-width:980px;margin:0 auto;padding:20px 16px calc(var(--nav) + 28px)}
.muted{color:var(--mut)}.small{font-size:.88rem}.hide{display:none!important}

/* barre haute + navigation */
.top{background:var(--ink);color:#fff;position:sticky;top:0;z-index:20}
.top .in{max-width:980px;margin:0 auto;padding:12px 16px;display:flex;align-items:center;gap:16px}
.brand{font-weight:900;font-size:1.25rem;letter-spacing:-.03em;text-decoration:none;color:#fff;display:flex;align-items:baseline;gap:2px}
.brand b{color:var(--lime)}
.nav{display:flex;gap:4px;margin-left:auto}
.nav a{color:#D4D4D4;text-decoration:none;padding:8px 12px;border-radius:10px;font-weight:600;font-size:.95rem}
.nav a:hover{background:#262626;color:#fff}
.nav a.on{background:var(--lime);color:#fff}
@media(max-width:720px){
 .nav{position:fixed;left:0;right:0;bottom:0;margin:0;background:var(--ink);padding:6px 6px calc(6px + env(safe-area-inset-bottom));justify-content:space-around;z-index:30;border-top:1px solid #2B2B2B}
 .nav a{flex:1;text-align:center;padding:10px 4px;font-size:.82rem}
 .top .in{padding:10px 16px}
}

/* composants */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin-bottom:14px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:11px;padding:12px 18px;font-weight:700;background:var(--blue);color:#fff;cursor:pointer;min-height:46px;text-decoration:none}
.btn:hover{background:var(--blue-d)}
.btn.alt{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn.alt:hover{background:var(--paper)}
.btn.lime{background:var(--lime);color:#fff}
.btn.lime:hover{background:var(--blue-d)}
.btn.bad{background:#fff;color:var(--bad);border:1.5px solid #F0C5CC}
.btn.sm{min-height:38px;padding:8px 12px;font-size:.9rem}
.btn[disabled]{opacity:.55;cursor:wait}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.spread{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}
label{display:block;font-weight:600;margin:0 0 6px;font-size:.95rem}
.field{margin-bottom:14px}
.field .hint{font-weight:400;color:var(--mut);font-size:.85rem}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:10px;background:#fff;min-height:46px}
textarea{min-height:84px;resize:vertical}
input:focus,select:focus,textarea:focus{border-color:var(--blue);outline:0;box-shadow:0 0 0 3px #E1060033}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
@media(max-width:620px){.grid2{grid-template-columns:1fr}}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips span{position:relative}
.chips input{position:absolute;opacity:0}
.chips label{margin:0;padding:9px 14px;border:1.5px solid var(--line);border-radius:999px;background:#fff;cursor:pointer;font-weight:600;font-size:.9rem}
.chips input:checked+label{background:var(--ink);color:#fff;border-color:var(--ink)}
.chips input:focus-visible+label{outline:3px solid var(--blue);outline-offset:2px}
.chip{display:inline-block;padding:3px 10px;border-radius:999px;background:var(--paper);font-size:.8rem;font-weight:700}
.switch{display:flex;align-items:center;gap:10px;font-weight:600;margin:0;cursor:pointer}
.switch input{width:22px;height:22px;accent-color:var(--blue)}
.alert{padding:12px 14px;border-radius:10px;margin:10px 0;font-size:.93rem}
.alert.err{background:#FDECEF;color:#8E1A2D;border:1px solid #F0C5CC}
.alert.ok{background:#F4F5F9;color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--ink)}
.bar{height:8px;background:var(--line);border-radius:99px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--blue);border-radius:99px;transition:width .3s}

/* connexion */
.auth{max-width:440px;margin:6vh auto 0;padding:0 16px}
.auth .logo{font-size:2.4rem;font-weight:900;letter-spacing:-.04em;margin-bottom:4px}.auth .logo b{color:var(--blue)}
.tabs{display:flex;gap:4px;background:var(--paper);padding:4px;border-radius:12px;margin-bottom:16px}
.tabs button{flex:1;border:0;background:transparent;padding:10px;border-radius:9px;font-weight:700;cursor:pointer;color:var(--mut)}
.tabs button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px #0002}

/* liste de plans */
.plan-item{display:block;text-decoration:none;color:inherit}
.plan-item:hover{border-color:var(--blue)}
.empty{text-align:center;padding:36px 18px}
.empty h2{margin-bottom:6px}

/* ruban 30 jours : signature visuelle */
.ribbon{display:grid;grid-template-columns:repeat(15,1fr);gap:4px;margin:14px 0}
@media(min-width:760px){.ribbon{grid-template-columns:repeat(30,1fr)}}
.ribbon a,.ribbon span{aspect-ratio:1;border-radius:6px;border:2px solid var(--wc);background:#fff;display:flex;align-items:center;justify-content:center;font-size:.68rem;font-weight:800;color:var(--wc);text-decoration:none}
.ribbon a.done,.ribbon span.done{background:var(--lime);border-color:var(--lime);color:#fff}
.ribbon a.today{box-shadow:0 0 0 3px var(--ink)}
.ribbon a.empty-d{border-style:dashed;opacity:.5}
.stat{display:flex;gap:18px;flex-wrap:wrap}
.stat div{min-width:90px}.stat b{display:block;font-size:1.35rem;letter-spacing:-.02em}
.seg{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px}
.seg button{border:1.5px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-weight:700;cursor:pointer;white-space:nowrap}
.seg button.on{background:var(--ink);color:#fff;border-color:var(--ink)}

/* jours */
.day{display:grid;grid-template-columns:54px 1fr 54px;gap:12px;align-items:start;border-left:5px solid var(--wc);scroll-margin-top:80px}
.day.done{background:#FFF1F0}
.day.today{box-shadow:0 0 0 3px var(--ink)}
.dn{text-align:center;font-weight:900;line-height:1.1}
.dn b{display:block;font-size:1.6rem;color:var(--wc)}.dn span{font-size:.72rem;color:var(--mut);font-weight:600}
.day h3{margin:4px 0 6px}
.meta{display:flex;gap:6px 14px;flex-wrap:wrap;color:var(--mut);font-size:.85rem;margin-top:8px}
.check{width:50px;height:50px;border-radius:50%;border:2.5px solid var(--line);background:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.check svg{width:24px;height:24px;stroke:#fff;stroke-width:3;fill:none;opacity:0}
.day.done .check{background:var(--lime);border-color:var(--lime)}
.day.done .check svg{opacity:1}
@media(max-width:480px){.day{grid-template-columns:44px 1fr;}.day .check{grid-column:2;justify-self:end;width:100%;border-radius:11px;height:46px}.day .check::after{content:"Marquer comme fait";font-weight:700;font-size:.9rem;margin-left:8px}.day.done .check::after{content:"Fait"}}

/* stratégie */
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.kv>div{background:var(--paper);border-radius:11px;padding:12px}
.kv b{display:block;margin-bottom:2px}
.wk{border-left:5px solid var(--wc);padding-left:12px;margin-bottom:12px}
ul.tight{margin:0;padding-left:20px}ul.tight li{margin:3px 0}
table.t{width:100%;border-collapse:collapse;font-size:.93rem}
table.t th,table.t td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}

/* IA / admin */
.prov{border-left:5px solid var(--blue)}
.prov .res{margin-top:10px;font-size:.9rem}
.urow{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:space-between}

/* génération */
.modal{position:fixed;inset:0;background:#000000CC;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}
.modal .box{background:#fff;border-radius:16px;padding:22px;max-width:460px;width:100%}
.steps{list-style:none;padding:0;margin:14px 0}
.steps li{padding:8px 0;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--line)}
.steps li .dot{width:18px;height:18px;border-radius:50%;border:2.5px solid var(--line);flex:none}
.steps li.run .dot{border-color:var(--blue);border-top-color:transparent;animation:spin .8s linear infinite}
.steps li.ok .dot{background:var(--ink);border-color:var(--ink)}
.steps li.ko .dot{background:var(--bad);border-color:var(--bad)}
@keyframes spin{to{transform:rotate(360deg)}}

#toasts{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--nav) + 18px);z-index:60;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px)}
.toast{background:var(--ink);color:#fff;padding:12px 16px;border-radius:11px;font-weight:600;box-shadow:0 6px 20px #0004}
.toast.err{background:var(--bad)}
@media(min-width:721px){#toasts{bottom:24px}}

@media print{
 .top,.nav,.no-print,#toasts,.check,.seg{display:none!important}
 body{background:#fff}.wrap{padding:0;max-width:none}
 .card{break-inside:avoid;border-color:#bbb}.tabpane{display:block!important}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.req{color:var(--bad);font-weight:800;margin-left:2px}
textarea.tall{min-height:150px}
.field.bad input,.field.bad textarea,.field.bad select{border-color:var(--bad);box-shadow:0 0 0 3px #C0243C22}
/* avis */
.rate{display:flex;gap:6px;flex-wrap:wrap}
.rate button{min-width:44px;min-height:44px;border:1.5px solid var(--line);background:#fff;border-radius:10px;font-weight:800;cursor:pointer}
.rate button:hover{border-color:var(--blue)}
.rate button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.rl{display:flex;justify-content:space-between;margin-top:4px}
.fbk{border-left:5px solid var(--lime)}
.bign{font-size:2.4rem;font-weight:900;letter-spacing:-.03em;line-height:1.1}
.cm{border-top:1px solid var(--line);padding:10px 0}.cm p{margin:4px 0 0}
@media(max-width:420px){.nav a{font-size:.74rem;padding:10px 2px}}
/* états de plan */
.chip.st-archived{background:#E6E9F5;color:#3A4270}
.chip.st-disabled{background:#FDECEF;color:#8E1A2D}

/* page d'accueil */
.vnav{margin-left:auto;display:flex;gap:8px;align-items:center}
.vnav a:not(.btn){color:#D4D4D4;text-decoration:none;font-weight:600;padding:8px 12px;border-radius:10px}
.vnav a:not(.btn):hover{background:#262626;color:#fff}
.in{max-width:980px;margin:0 auto;padding:0 16px}
.hero{background:var(--ink);color:#fff;padding:56px 0 48px}
.hero h1{font-size:clamp(2rem,6vw,3.2rem);line-height:1.08;letter-spacing:-.035em;max-width:16em}
.hero .lead{font-size:1.15rem;color:#D4D4D4;max-width:34em;margin-bottom:22px}
.hero .eyebrow{color:#fff;border-left:4px solid var(--lime);padding-left:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:.8rem;margin-bottom:10px}
.hero .ribbon{margin-top:34px}
.hero .ribbon span{background:transparent;font-size:.62rem}
.hero .ribbon span.done{background:var(--lime);color:#fff}
.hero.end{padding:44px 0;text-align:center}.hero.end h2{font-size:1.7rem}.hero.end .row{justify-content:center}
.sec{padding:44px 0}.sec.alt{background:#fff;border-block:1px solid var(--line)}
.sec h2{font-size:1.6rem;margin-bottom:.7em}
.big{font-size:1.12rem;max-width:44em}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:18px}
.fc{background:var(--paper);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.sec:not(.alt) .fc{background:#fff}
.fc p{margin:0}
.how{list-style:none;counter-reset:s;padding:0;margin:0;display:grid;gap:12px}
.how li{counter-increment:s;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:16px 16px 16px 68px;position:relative}
.how li::before{content:counter(s);position:absolute;left:16px;top:14px;width:38px;height:38px;border-radius:50%;background:var(--blue);color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center}
.how b{display:block;margin-bottom:2px}.how span{color:var(--mut)}
.who{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:18px}
.who span{background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;font-weight:700}
.auth>a.small{display:inline-block;margin-bottom:14px}
@media(max-width:720px){.vnav{gap:4px}.hero{padding:36px 0 32px}.sec{padding:32px 0}}

/* mot de passe : œil */
.pw{position:relative}.pw input{padding-right:52px}
.eye{position:absolute;right:3px;top:50%;transform:translateY(-50%);width:44px;height:44px;border:0;background:transparent;color:var(--mut);cursor:pointer;border-radius:10px;display:flex;align-items:center;justify-content:center;padding:0}
.eye:hover{color:var(--ink);background:var(--paper)}
.eye svg{width:22px;height:22px;stroke:currentColor;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}
.eye .sl{display:none}.eye[aria-pressed=true] .sl{display:inline}
/* déconnexion toujours visible */
.uname{color:#D4D4D4;font-size:.9rem;margin-left:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}
.logout{margin-left:8px;background:transparent;color:#fff;border:1.5px solid #6B6B6B;border-radius:10px;padding:8px 14px;font-weight:700;cursor:pointer;min-height:40px;white-space:nowrap}
.logout:hover{background:#fff;color:var(--ink);border-color:#fff}
@media(max-width:720px){.uname{display:none}.logout{margin-left:auto;padding:8px 12px}}
/* entité */
.sub{background:var(--paper);border-radius:11px;padding:12px 14px;margin:10px 0}.sub p{margin:0 0 6px}

/* champ piège anti-robots (invisible pour les humains) */
.hpot{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
code{background:var(--paper);padding:1px 6px;border-radius:6px;font-size:.88em}

/* fenêtre modale d'avis : feuille en bas sur smartphone, boîte centrée sur ordinateur */
.sheet-back{position:fixed;inset:0;z-index:70;background:rgba(0,0,0,.62);display:flex;align-items:flex-end;justify-content:center;animation:fade .2s}
.sheet{position:relative;background:#fff;width:100%;max-width:520px;max-height:92vh;max-height:92dvh;overflow-y:auto;overscroll-behavior:contain;border-radius:20px 20px 0 0;padding:14px 18px calc(18px + env(safe-area-inset-bottom));animation:up .28s cubic-bezier(.2,.8,.2,1)}
.sheet .grab{width:42px;height:5px;border-radius:99px;background:var(--line);margin:0 auto 12px}
.sheet .x{position:absolute;right:8px;top:8px;width:44px;height:44px;border:0;background:transparent;font-size:1.9rem;line-height:1;color:var(--mut);cursor:pointer;border-radius:50%}
.sheet .x:hover{background:var(--paper)}
.sheet h2{padding-right:40px}
.sheet .rate{display:grid;grid-template-columns:repeat(var(--cols),1fr);gap:6px}
.sheet .rate button{min-width:0;min-height:48px;font-size:1.05rem}
.sheet textarea{min-height:76px}
.sheet-foot{display:grid;gap:8px}
.sheet-foot .btn{width:100%}
.sheet .btn[disabled]{cursor:not-allowed}
.linkbtn{background:none;border:0;color:var(--mut);text-decoration:underline;cursor:pointer;padding:10px;font-size:.88rem}
.thanks{text-align:center;padding:14px 0 6px}.thanks h2{padding:0}
.ok-ring{width:68px;height:68px;border-radius:50%;background:var(--lime);margin:0 auto 12px;display:flex;align-items:center;justify-content:center}
.ok-ring svg{width:34px;height:34px;stroke:#fff;stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}
@keyframes up{from{transform:translateY(48px);opacity:0}to{transform:none;opacity:1}}
@keyframes fade{from{opacity:0}to{opacity:1}}
@media(min-width:721px){.sheet-back{align-items:center;padding:20px}.sheet{border-radius:20px;padding:24px}.sheet .grab{display:none}.sheet-foot{grid-template-columns:1fr 1fr}}
@media print{.sheet-back{display:none!important}}

/* maintenance */
.mbar{background:#FFE9C7;color:#6B3F00;border-bottom:1px solid #F0C98A;padding:10px 16px;display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;font-weight:600;text-align:center}
.mbar.hide{display:none}
.mscreen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:var(--ink)}
.mcard{background:#fff;border-radius:20px;max-width:480px;width:100%;padding:32px 24px;text-align:center}
.mcard h1{font-size:1.6rem}
.mic{width:72px;height:72px;border-radius:50%;background:var(--lime);margin:0 auto 14px;display:flex;align-items:center;justify-content:center}
.mic svg{width:36px;height:36px;stroke:#fff;stroke-width:2;fill:none;stroke-linecap:round;stroke-linejoin:round}

/* action du jour */
.trow{display:grid;grid-template-columns:54px 1fr 54px;gap:12px;align-items:start;padding:12px 0;border-top:1px solid var(--line)}
.trow:first-of-type{border-top:0}
.trow h3{margin:4px 0}
.trow.done{opacity:.75}.trow.done h3{text-decoration:line-through}
.trow.done .check{background:var(--lime);border-color:var(--lime)}.trow.done .check svg{opacity:1}
.today{border-left:5px solid var(--lime)}
@media(max-width:480px){.trow{grid-template-columns:44px 1fr}.trow .check{grid-column:2;justify-self:end}}
/* résultats */
.kgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.kpi{margin-bottom:0}
.kval{font-size:2rem;font-weight:900;letter-spacing:-.03em;line-height:1.1}.kval span{font-size:1rem;font-weight:600}
.spark{width:100%;height:36px;margin:4px 0}.spark polyline{fill:none;stroke:var(--blue);stroke-width:2;stroke-linejoin:round;stroke-linecap:round;vector-effect:non-scaling-stroke}
.hist{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line);font-size:.9rem}
.nudge{border-left:5px solid var(--lime)}.nudge h3{margin-bottom:4px}
.evo{margin-bottom:16px}.evr{display:grid;grid-template-columns:minmax(110px,1.2fr) 2fr auto;gap:10px;align-items:center;margin:6px 0}
@media(max-width:480px){.evr{grid-template-columns:1fr auto}.evr .bar{grid-column:1 / -1;order:3}}
.sheet input[type=text],.sheet input[type=number],.sheet input[type=date]{width:100%}

/* Forge */
.chip.st-prod{background:var(--lime);color:#fff}
.chip.st-canary{background:#FFE9C7;color:#6B3F00}
.pack{margin-bottom:12px}
.sheet.wide{max-width:780px}
.mono{font-family:ui-monospace,SFMono-Regular,Consolas,Menlo,monospace;font-size:.85rem;line-height:1.45;min-height:120px}
pre.diff{background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:10px;overflow-x:auto;font-size:.8rem;line-height:1.45;white-space:pre-wrap;word-break:break-word;margin:6px 0 14px}
pre.diff span{display:block}.da{background:#E8EAF2;color:var(--ink);font-weight:600}.dr{background:#FDECEF;color:#8E1A2D}.dn0{color:var(--mut)}
.qitem{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:10px 0;border-top:1px solid var(--line)}
.qitem:first-child{border-top:0}
.qitem label{display:flex;gap:10px;align-items:flex-start;margin:0;font-weight:400;cursor:pointer}
.qitem input{width:20px;height:20px;margin-top:3px;accent-color:var(--blue);flex:none}
.steps li .evs{margin-left:auto;font-size:.85rem}
@media(max-width:420px){.nav a{font-size:.7rem}}
