:root{
  --bg:#f6f1ea;--paper:#fffdfa;--ink:#161828;--ink2:#4e5068;--mute:#878599;--line:#e8e1d6;--line2:#f2ece3;
  --indigo:#1f2547;--indigo2:#2e3766;--plum:#5b2c56;--rose:#f1c3ae;--lav:#c3c8ea;--gold:#f2a93b;--orange:#e0782f;--orangeDk:#c25f1f;
  --brand:linear-gradient(118deg,#1b2140 0%,#2c2a5a 45%,#5b2c56 100%);
  --warm:linear-gradient(135deg,#f5a53e,#e0682b);
  --good:#1d7a4c;--good2:#e1f2e8;--warn:#9a6200;--warn2:#fcf0d5;--bad:#b42318;--bad2:#fbe6e2;--info:#2d55a8;--info2:#e7eefb;
  --s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--s4:#eda100;--s5:#e87ba4;--s6:#008300;--s7:#6250d6;--s8:#e34948;
  --c-fam:#6250d6;--c-bou:#eda100;--c-mar:#e87ba4;--pos:#2a78d6;--neg:#eb6834;
  --r:20px;--sh:0 1px 1px rgba(30,24,50,.04),0 10px 30px -14px rgba(30,24,50,.22);
}
*{box-sizing:border-box}html,body{margin:0}
body{font:16px/1.45 ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
h1{font-size:25px;line-height:1.15;margin:0;letter-spacing:-.5px}h2{font-size:16px;margin:0 0 12px;letter-spacing:-.15px}h3{font-size:15px;margin:0}
a{color:inherit}.num{font-variant-numeric:tabular-nums}
#art-sprite{position:absolute;width:0;height:0;overflow:hidden}
.boot{display:grid;place-items:center;height:100vh;gap:14px;align-content:center;color:var(--ink2);font-weight:600}
/* ---- en-tête ---- */
.top{position:sticky;top:0;z-index:5;background:var(--brand);color:#fff;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;display:flex;align-items:center;gap:11px;box-shadow:0 6px 24px -10px rgba(20,16,40,.6)}
.top .mark{width:40px;height:40px;flex:none;border-radius:12px;box-shadow:0 2px 10px rgba(0,0,0,.25)}
.top .brand{font-weight:850;letter-spacing:.3px;font-size:18px;line-height:1.1}
.top .sub{opacity:.72;font-size:12.5px;font-weight:550}
.top .sp{flex:1}
.top select{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.22);border-radius:12px;padding:7px 10px;max-width:44vw;font-size:14px}
.top select option{color:#000}
.avatar{width:38px;height:38px;border-radius:50%;border:2px solid rgba(255,255,255,.5);background:var(--warm);color:#fff;font-weight:800;cursor:pointer;flex:none;font-size:15px}
main{max-width:1200px;margin:0 auto;padding:18px 14px calc(100px + env(safe-area-inset-bottom))}
/* ---- navigation ---- */
.nav{position:fixed;bottom:0;left:0;right:0;z-index:6;background:rgba(255,253,250,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line);display:flex;padding:5px 4px calc(5px + env(safe-area-inset-bottom))}
.nav a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 2px;font-size:11px;color:var(--mute);text-decoration:none;font-weight:700;border-radius:14px;position:relative}
.nav a svg{width:23px;height:23px}
.nav a.on{color:var(--indigo)}.nav a.on svg{color:var(--plum)}
.nav a.on::before{content:"";position:absolute;top:-5px;width:26px;height:3px;border-radius:3px;background:var(--warm)}
.nav .badge{position:absolute;top:2px;left:calc(50% + 6px);background:var(--bad);color:#fff;border-radius:99px;font-size:10px;padding:1px 5px;font-weight:800}
@media(min-width:900px){
  .nav{position:sticky;top:60px;bottom:auto;justify-content:center;gap:4px;border-top:0;border-bottom:1px solid var(--line);padding:7px}
  .nav a{flex:0 0 auto;flex-direction:row;gap:8px;padding:9px 16px;font-size:14px}.nav a svg{width:19px;height:19px}
  .nav a.on{background:var(--line2)}.nav a.on::before{display:none}.nav .badge{position:static}
  main{padding-bottom:48px}
}
/* ---- blocs ---- */
.card{background:var(--paper);border-radius:var(--r);box-shadow:var(--sh);padding:17px;margin-bottom:14px;border:1px solid rgba(232,225,214,.7)}
.card.flat{box-shadow:none}
.grid{display:grid;gap:14px}.grid>*{min-width:0}.grid>.card{margin-bottom:0}
@media(min-width:760px){.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}.side{grid-template-columns:1.35fr 1fr;align-items:start}.wide{grid-column:1/-1}}
@media(min-width:1100px){.g4{grid-template-columns:repeat(4,1fr)}}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row>.sp{flex:1}
.mut{color:var(--mute);font-size:13.5px}.ink2{color:var(--ink2)}.small{font-size:12.5px}
.eyebrow{font-size:11.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--mute)}
.pagehead{display:flex;align-items:flex-end;gap:10px;margin:2px 2px 16px;flex-wrap:wrap}.pagehead .sp{flex:1}
.hello{background:var(--brand);color:#fff;border-radius:24px;padding:20px;margin-bottom:16px;position:relative;overflow:hidden;box-shadow:var(--sh)}
.hello h1{font-size:23px}.hello .mut{color:rgba(255,255,255,.75)}
.hello .art{position:absolute;right:-8px;bottom:-6px;width:min(34%,260px);opacity:.5;pointer-events:none}@media(min-width:760px){.hello .art{width:min(42%,300px);opacity:.92}}
.hello .stat{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;position:relative}
.hello .stat div{min-width:0}.hello .stat small{display:block;font-size:11.5px;opacity:.7;font-weight:700;text-transform:uppercase;letter-spacing:.6px}
.hello .stat b{font-size:22px;font-variant-numeric:tabular-nums;letter-spacing:-.4px}
/* ---- boutiques du jour ---- */
.todayshops{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(210px,1fr);gap:10px;overflow-x:auto;padding:2px 2px 6px;margin:0 -2px 14px;scroll-snap-type:x mandatory}
.todayshops a{scroll-snap-align:start;text-decoration:none}
.tshop{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:13px 14px;box-shadow:var(--sh);height:100%}
.tshop .n{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tshop .v{font-size:20px;font-weight:850;font-variant-numeric:tabular-nums;margin-top:6px}
/* ---- KPI ---- */
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}
@media(min-width:760px){.kpis{grid-template-columns:repeat(3,1fr)}}@media(min-width:1100px){.kpis.k6{grid-template-columns:repeat(6,1fr)}.kpis.k4{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--paper);border-radius:17px;box-shadow:var(--sh);padding:13px 14px;border:1px solid rgba(232,225,214,.7);min-width:0}
.kpi .l{font-size:12px;color:var(--mute);font-weight:750}
.kpi .v{font-size:21px;font-weight:850;margin-top:3px;letter-spacing:-.5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi .d{font-size:12px;font-weight:700;margin-top:3px;color:var(--mute)}
.d.up-good,.d.down-good{color:var(--good)}.d.up-bad,.d.down-bad{color:var(--bad)}
/* ---- barres de progression ---- */
.prog{height:10px;border-radius:99px;background:var(--line2);overflow:hidden;margin:8px 0 6px;position:relative}
.prog i{position:absolute;inset:0 auto 0 0;border-radius:99px;background:var(--warm)}
.prog i.proj{background:repeating-linear-gradient(135deg,rgba(224,120,47,.35) 0 6px,rgba(224,120,47,.15) 6px 12px)}
.prog.good i:not(.proj){background:linear-gradient(90deg,#2aa56b,#1d7a4c)}
/* ---- formulaires ---- */
label.f{display:block;margin-bottom:12px}label.f>span{display:block;font-size:13px;color:var(--ink2);font-weight:700;margin-bottom:5px}
input:not([type=checkbox]),select,textarea{width:100%;border:1.5px solid var(--line);border-radius:14px;padding:12px 13px;background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{border-color:var(--indigo2);box-shadow:0 0 0 4px rgba(46,55,102,.12)}
.money{position:relative}.money input{font-size:20px;font-weight:800;padding-right:62px;font-variant-numeric:tabular-nums;letter-spacing:-.2px}
.money::after{content:attr(data-cur);position:absolute;right:14px;top:50%;transform:translateY(-50%);font-size:13px;font-weight:750;color:var(--mute)}
.money.big input{font-size:30px;padding:16px 70px 16px 16px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:12px 18px;font-weight:800;background:var(--indigo);color:#fff;cursor:pointer;min-height:48px;text-decoration:none;transition:transform .08s,filter .15s}
.btn:active{transform:scale(.98)}.btn:hover{filter:brightness(1.12)}
.btn.big{width:100%;font-size:17px;min-height:56px;border-radius:17px}
.btn.ocre{background:var(--warm);box-shadow:0 8px 20px -10px rgba(224,104,43,.8)}
.btn.alt{background:var(--line2);color:var(--indigo)}.btn.alt:hover{filter:brightness(.97)}
.btn.red{background:var(--bad)}.btn.good{background:var(--good)}
.btn.ghost{background:transparent;color:var(--indigo);padding:8px 10px;min-height:0}.btn.ghost:hover{background:var(--line2);filter:none}
.btn.sm{padding:8px 12px;min-height:0;font-size:14px;border-radius:11px}
.btn:disabled{opacity:.5;cursor:not-allowed}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.chips button{border:1.5px solid var(--line);background:var(--paper);border-radius:99px;padding:7px 13px;font-size:14px;cursor:pointer;font-weight:700;color:var(--ink2)}
.chips button.on{border-color:var(--indigo);background:var(--indigo);color:#fff}
.filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.check{display:flex;gap:11px;align-items:flex-start;padding:10px 0;cursor:pointer;font-weight:650}
.check input{width:22px;height:22px;margin:0;accent-color:var(--indigo);flex:none}
.switch{display:flex;align-items:center;gap:12px;cursor:pointer;font-weight:750}
.switch input{appearance:none;-webkit-appearance:none;width:50px;height:30px;border-radius:99px;background:var(--line);position:relative;flex:none;transition:background .2s;cursor:pointer;border:0;padding:0}
.switch input::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
.switch input:checked{background:var(--plum)}.switch input:checked::after{transform:translateX(20px)}
.err{color:var(--bad);font-weight:700;font-size:14px;min-height:18px;margin:6px 0}
/* ---- fiche de journée ---- */
.dayhead{display:flex;align-items:center;gap:8px;margin-bottom:14px}
.dayhead .when{flex:1;min-width:0}.dayhead h1{text-transform:capitalize}
.iconbtn{width:42px;height:42px;border-radius:13px;border:1.5px solid var(--line);background:var(--paper);display:grid;place-items:center;cursor:pointer;color:var(--indigo);flex:none;text-decoration:none}
.iconbtn:disabled{opacity:.35}.iconbtn svg{width:20px;height:20px}
.sec{position:relative;padding-left:20px}
.sec::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:4px;background:var(--c,var(--indigo))}
.sec h2{display:flex;align-items:center;gap:8px}
.sec .tot{margin-left:auto;font-size:14px;color:var(--ink2);font-variant-numeric:tabular-nums}
.hint{font-size:13px;color:var(--ink2);background:var(--line2);border-radius:12px;padding:8px 11px;margin:-4px 0 12px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.hint button{border:0;background:var(--indigo);color:#fff;border-radius:8px;padding:4px 9px;font-size:12.5px;font-weight:750;cursor:pointer}
.calc .ln{display:flex;justify-content:space-between;padding:6px 0;font-variant-numeric:tabular-nums;color:var(--ink2)}
.calc .ln b{color:var(--ink)}
.calc .ln.tot{border-top:1.5px dashed var(--line);margin-top:6px;padding-top:10px;font-weight:850;color:var(--ink)}
.ecart{margin-top:12px;border-radius:14px;padding:12px 14px;font-weight:850;font-size:18px;display:flex;justify-content:space-between;align-items:center;font-variant-numeric:tabular-nums}
.ecart.ok{background:var(--good2);color:var(--good)}.ecart.bad{background:var(--bad2);color:var(--bad)}.ecart.none{background:var(--line2);color:var(--mute);font-size:15px}
.stickybar{position:sticky;bottom:calc(74px + env(safe-area-inset-bottom));z-index:4;padding-top:6px}
@media(min-width:900px){.stickybar{bottom:12px}.sticky{position:sticky;top:124px}}
.msg{display:flex;gap:12px;align-items:flex-start;background:linear-gradient(135deg,#efeafb,#fbeee8);border:1px solid #e3daf3;border-radius:18px;padding:13px 15px;margin-bottom:14px}
.msg .ic{width:34px;height:34px;border-radius:11px;background:var(--brand);color:#fff;display:grid;place-items:center;flex:none}.msg .ic svg{width:18px;height:18px}
.msg b{display:block;font-size:12px;color:var(--plum);text-transform:uppercase;letter-spacing:.6px}
.kv{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:620px){.kv{grid-template-columns:repeat(4,1fr)}}
.kv div{background:var(--line2);border-radius:12px;padding:9px 11px;min-width:0}.kv small{display:block;color:var(--mute);font-size:11.5px;font-weight:750}.kv b{font-variant-numeric:tabular-nums}
/* ---- listes, statuts ---- */
.list{list-style:none;margin:0;padding:0}
.list li{display:flex;gap:12px;align-items:center;padding:12px 2px;border-bottom:1px solid var(--line2)}
.list li:last-child{border-bottom:0}.list a.li{display:flex;gap:12px;align-items:center;width:100%;text-decoration:none}
.list .m{flex:1;min-width:0}.list .t{font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.list .a{font-weight:850;font-variant-numeric:tabular-nums;white-space:nowrap}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:800;border-radius:99px;padding:3px 9px;background:var(--line2);color:var(--ink2);white-space:nowrap}
.tag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.tag.ok{background:var(--good2);color:var(--good)}.tag.wait{background:var(--info2);color:var(--info)}.tag.warn{background:var(--warn2);color:var(--warn)}.tag.bad{background:var(--bad2);color:var(--bad)}
.banner{border-radius:15px;padding:12px 14px;margin-bottom:14px;font-weight:700;display:flex;gap:10px;align-items:flex-start}
.banner.warn{background:var(--warn2);color:var(--warn)}.banner.ok{background:var(--good2);color:var(--good)}.banner.bad{background:var(--bad2);color:var(--bad)}.banner.info{background:var(--info2);color:var(--info)}
.alert{display:flex;gap:11px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line2);text-decoration:none}.alert:last-child{border-bottom:0}.alert .tx{flex:1}
.alert .lv{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none;font-size:15px;font-weight:900}
.lv.good{background:var(--good2);color:var(--good)}.lv.warn{background:var(--warn2);color:var(--warn)}.lv.bad{background:var(--bad2);color:var(--bad)}.lv.info{background:var(--info2);color:var(--info)}
.empty{text-align:center;color:var(--mute);padding:22px 0}
/* ---- calendrier des saisies ---- */
.cal{display:grid;gap:3px;font-size:11px;align-items:center}
.cal .lab{font-weight:750;color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:6px;font-size:12.5px}
.cal .hd{color:var(--mute);text-align:center;font-weight:700;font-size:10.5px}
.cal a{display:block;aspect-ratio:1;border-radius:6px;background:var(--line2);min-width:14px}
.cal a.validee{background:#3aa676}.cal a.soumise{background:#7fa6e8}.cal a.a_corriger{background:#e9b04a}.cal a.manq{background:#f3c3bb}
.cal a.ferme{background:repeating-linear-gradient(135deg,#d9d4ca 0 3px,#efebe4 3px 6px)}.cal a.ec{box-shadow:inset 0 0 0 2.5px var(--bad)}.cal a.today{outline:2px solid var(--indigo);outline-offset:1px}
.calleg{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:var(--ink2);font-weight:650}.calleg i{display:inline-block;width:12px;height:12px;border-radius:4px;margin-right:6px;vertical-align:-2px}
/* ---- graphiques ---- */
.chart{position:relative;touch-action:pan-y;user-select:none}
.chart svg{display:block;width:100%;overflow:visible}
.chart .grid line{stroke:var(--line);stroke-width:1}
.chart .axis text{fill:var(--mute);font-size:11px;font-variant-numeric:tabular-nums}
.chart .lbl{font-size:11.5px;font-weight:750;fill:var(--ink2)}
.chart .xh{stroke:var(--ink2);stroke-width:1;stroke-dasharray:3 3}
.tip{position:absolute;pointer-events:none;background:var(--indigo);color:#fff;border-radius:12px;padding:8px 11px;font-size:12.5px;line-height:1.5;box-shadow:0 8px 24px -8px rgba(0,0,0,.5);white-space:nowrap;z-index:3;opacity:0;transition:opacity .1s}
.tip.on{opacity:1}.tip b{display:block;font-size:12px;opacity:.8;font-weight:650}.tip i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px;font-style:normal}
.tip .v{float:right;margin-left:14px;font-weight:800;font-variant-numeric:tabular-nums}
.legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0 0 8px;font-size:12.5px;color:var(--ink2);font-weight:700}
.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:3px;display:inline-block}.legend i.dash{height:3px;width:14px;border-radius:2px}
.chead{display:flex;align-items:baseline;gap:8px;margin-bottom:6px;flex-wrap:wrap}.chead h2{margin:0}.chead .sp{flex:1}
.spark{display:block;width:100%;height:42px}
.tbl{width:100%;border-collapse:collapse;font-size:14px}
.tbl th{text-align:right;color:var(--mute);font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;padding:8px 8px;border-bottom:1.5px solid var(--line);font-weight:800;white-space:nowrap}
.tbl th:first-child,.tbl td:first-child{text-align:left}
.tbl td{padding:10px 8px;border-bottom:1px solid var(--line2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tbl tr:last-child td{border-bottom:0}.tbl tr.tot td{font-weight:850;border-top:1.5px solid var(--line)}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px;vertical-align:-1px}
/* ---- connexion ---- */
.hero{position:relative;padding:calc(30px + env(safe-area-inset-top)) 16px 0;text-align:center;background:radial-gradient(120% 90% at 50% 75%,#ffe7cc 0%,#f7d9bf 45%,#f6f1ea 100%);overflow:hidden}
.hero .word b{display:block;font-size:46px;font-weight:900;letter-spacing:1px;background:var(--brand);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero .word span{font-weight:700;color:var(--ink2)}
.hero svg{display:block;width:min(100%,560px);height:auto;margin:10px auto 0}
.login{max-width:400px;margin:-26px auto 0;padding:0 16px 40px;position:relative;z-index:2}
.login .card{padding:22px}
/* ---- fenêtres ---- */
#toast{position:fixed;left:50%;bottom:calc(96px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(16px);background:var(--indigo);color:#fff;padding:12px 18px;border-radius:14px;font-weight:700;opacity:0;transition:.2s;pointer-events:none;z-index:150;max-width:92vw;box-shadow:0 10px 30px -10px rgba(0,0,0,.5)}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}#toast.bad{background:var(--bad)}
.modal{position:fixed;inset:0;background:rgba(20,18,36,.48);z-index:30;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}
.modal[hidden]{display:none}
.modal .box{background:var(--paper);width:100%;max-width:540px;border-radius:24px 24px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));max-height:92vh;overflow:auto;animation:up .22s ease-out}
@media(min-width:700px){.modal{align-items:center}.modal .box{border-radius:24px}}
@keyframes fade{from{opacity:0}}@keyframes up{from{transform:translateY(30px);opacity:.5}}
.code{font:800 26px/1.2 ui-monospace,Menlo,monospace;letter-spacing:3px;text-align:center;background:var(--line2);color:var(--plum);border-radius:14px;padding:14px;margin:6px 0 12px;user-select:all}
.hide{display:none!important}
/* ---- générique d'ouverture ---- */
#splash{position:fixed;inset:0;z-index:100;background:radial-gradient(90% 70% at 50% 58%,#ffe6c8 0%,#f9dcc2 38%,#f6f1ea 78%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vh;cursor:pointer;transition:opacity .6s ease,transform .6s ease}
#splash.out{opacity:0;transform:scale(1.05);pointer-events:none}
#splash .sun{position:absolute;width:min(70vw,420px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff3df 0%,rgba(255,236,210,.6) 45%,rgba(255,236,210,0) 70%);top:50%;left:50%;transform:translate(-50%,-62%);animation:sunrise 1.6s cubic-bezier(.2,.8,.2,1) both}
#splash svg{position:relative;width:min(88vw,540px);height:auto;overflow:visible}
#splash .L0{animation:rise 1s cubic-bezier(.16,.84,.3,1) .1s both;transform-box:fill-box;transform-origin:50% 100%}
#splash .L1{animation:fadein .5s ease .55s both}#splash .L2{animation:fadein .5s ease .75s both}#splash .L3{animation:fadein .5s ease .95s both}
#splash .cans{animation:pop .55s cubic-bezier(.3,1.6,.5,1) 1.15s both;transform-box:fill-box;transform-origin:50% 50%}
#splash .shine{animation:shine 1.1s ease 1.3s both}
#splash .word{position:relative;text-align:center}
#splash .word b{display:block;font-size:clamp(46px,12vw,78px);font-weight:900;letter-spacing:2px}
#splash .word span{display:inline-block;animation:letter .7s cubic-bezier(.2,.8,.2,1) both;animation-delay:calc(1.05s + var(--i) * .06s)}
#splash .word small{display:block;font-size:15px;font-weight:700;color:var(--ink2);opacity:0;animation:fadein .6s ease 1.6s forwards;letter-spacing:.6px}
@keyframes sunrise{from{transform:translate(-50%,-40%) scale(.5);opacity:0}}
@keyframes rise{from{transform:translateY(8%);opacity:0;filter:blur(10px)}to{transform:none;opacity:1;filter:none}}
@keyframes pop{from{transform:scale(.2);opacity:0}}
@keyframes shine{from{transform:translateX(-120%)}to{transform:translateX(120%)}}
@keyframes letter{from{transform:translateY(22px);opacity:0;filter:blur(6px)}to{transform:none;opacity:1;filter:none}}
@keyframes fadein{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){#splash *{animation:none!important}}
/* ---- impression des rapports ---- */
@media print{.top,.nav,.noprint,#toast,#demobar{display:none!important}body{background:#fff;padding:0!important}main{padding:0;max-width:none}.card{box-shadow:none;border:1px solid #ddd;break-inside:avoid}}
