/* Mes impôts PN — interface (base Optimus PN, charte SNPNC Transavia) */
.stripe{position:fixed;top:0;left:0;right:0;height:3px;background:var(--brand-stripe);z-index:60}
.shell{min-height:100vh;display:flex}
.main{flex:1;min-width:0;display:flex;flex-direction:column}
#view{width:100%;max-width:var(--page-max);margin:0 auto;padding:var(--s2) var(--page-x) calc(var(--tabbar-h) + 40px + env(safe-area-inset-bottom));outline:none}
.top{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--s3);padding:calc(10px + env(safe-area-inset-top)) var(--page-x) 10px;background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:.5px solid var(--sep)}
.top h1{flex:1;margin:0;font-size:var(--fs-head);font-weight:var(--fw-semi);text-align:center}
.top h1 span,.brand b span{color:var(--brand-green-ink)}
.icon-btn{width:36px;height:36px;border-radius:50%;border:0;background:var(--fill2);display:grid;place-items:center;cursor:pointer;color:var(--tint)}
.local-pill{display:inline-flex;align-items:center;gap:4px;border:0;border-radius:var(--r-pill);padding:6px 10px;background:var(--brand-green-bg);color:var(--brand-green-ink);font-size:var(--fs-foot);font-weight:var(--fw-semi);cursor:pointer}

/* Barre latérale (ordinateur) */
.side{display:none}
@media (min-width:900px){
  .side{display:flex;flex-direction:column;width:var(--sidebar-w);flex:none;position:sticky;top:0;height:100vh;background:var(--bg2);border-right:.5px solid var(--sep);padding:var(--s6) var(--s3) var(--s4)}
  .top .icon-btn,.tabbar{display:none!important}
  .top h1{text-align:left}
  #view{padding-bottom:var(--s12)}
}
.brand{display:flex;gap:var(--s3);align-items:center;padding:0 var(--s2) var(--s6)}
.brand .logo{width:34px;height:34px;flex:none}
.brand b{display:block;font-size:19px}
.brand small{display:block;color:var(--label2);font-size:var(--fs-foot)}
#sideNav{display:flex;flex-direction:column;gap:2px;flex:1}
.step{display:flex;align-items:center;gap:var(--s3);border:0;background:none;text-align:left;padding:10px var(--s3);border-radius:var(--r-sm);cursor:pointer;font-size:var(--fs-sub)}
.step:hover{background:var(--fill2)}
.step.on{background:var(--tint-bg);color:var(--tint);font-weight:var(--fw-semi)}
.step .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--fill2);color:var(--label2);flex:none}
.step.on .n{background:var(--tint);color:var(--on-tint)}
.step .lab{flex:1}
.side-foot{display:flex;flex-direction:column;gap:2px;border-top:.5px solid var(--sep);padding-top:var(--s3)}
.linkish{display:flex;align-items:center;gap:var(--s2);border:0;background:none;color:var(--label2);padding:8px var(--s3);font-size:var(--fs-foot);cursor:pointer;border-radius:var(--r-sm);text-align:left}
.linkish:hover{background:var(--fill2);color:var(--label)}

/* Barre d'onglets (mobile) */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:45;display:flex;background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-top:.5px solid var(--sep);padding-bottom:env(safe-area-inset-bottom)}
.tabbar button{flex:1;border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 6px;font-size:10.5px;color:var(--label2);cursor:pointer;position:relative;min-height:var(--tabbar-h)}
.tabbar button.on{color:var(--tint)}
.tabbar svg{width:25px;height:25px}
.badge{min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--warn);color:#fff;font-size:11px;font-weight:700;display:inline-grid;place-items:center;line-height:1}
.badge.ko{background:var(--ko)}
.tabbar .badge{position:absolute;top:3px;left:calc(50% + 6px)}

/* Titres */
.large{font-size:var(--fs-large);font-weight:var(--fw-bold);letter-spacing:.004em;margin:var(--s4) 0 2px}
.sub{color:var(--label2);font-size:var(--fs-sub);margin:0 0 var(--s4)}
.gh{font-size:var(--fs-foot);text-transform:uppercase;color:var(--label2);margin:var(--s6) var(--s4) var(--s2);letter-spacing:.02em;display:flex;justify-content:space-between;gap:var(--s2)}
.gh b{font-weight:var(--fw-semi);color:var(--label);text-transform:none;font-variant-numeric:tabular-nums}
.foot{font-size:var(--fs-foot);color:var(--label2);margin:var(--s2) var(--s4) 0;line-height:var(--lh-text)}

/* Cartes et listes iOS */
.card{background:var(--bg2);border-radius:var(--r);overflow:hidden}
.card.pad{padding:var(--s4)}
.list{background:var(--bg2);border-radius:var(--r);overflow:hidden}
.cell{display:flex;align-items:center;gap:var(--s3);padding:var(--pad-cell);min-height:var(--tap);position:relative;width:100%;border:0;background:none;text-align:left;font-size:var(--fs-body)}
button.cell{cursor:pointer}
button.cell:active{background:var(--fill)}
.cell+.cell::before{content:"";position:absolute;top:0;left:var(--inset-sep);right:0;border-top:.5px solid var(--sep)}
.cell .grow{flex:1;min-width:0}
.cell .t{display:block}
.cell .s{display:block;color:var(--label2);font-size:var(--fs-foot);margin-top:1px}
.cell .v{font-variant-numeric:tabular-nums;white-space:nowrap}
.cell .v.muted{color:var(--label2)}
.chev{color:var(--label3);flex:none}
.cell input[type=number],.cell input[type=text],.cell select{border:0;background:var(--bg3);border-radius:var(--r-sm);padding:7px 10px;text-align:right;width:120px;font-variant-numeric:tabular-nums}
.cell select{text-align:left;width:auto;max-width:190px}
.cell.total{font-weight:var(--fw-semi)}
.tag{display:inline-block;font:600 11px/1 var(--mono);padding:3px 6px;border-radius:var(--r-xs);background:var(--fill2);color:var(--label2);vertical-align:1px}
.tag.aj{background:var(--brand-sky-bg);color:var(--tint)}
.tag.ak{background:var(--brand-green-bg);color:var(--brand-green-ink)}
.tag.monde{background:var(--brand-magenta-bg);color:var(--brand-magenta-ink);font-family:var(--font)}
.tag.europe{background:var(--tint-bg);color:var(--tint);font-family:var(--font)}

/* Boutons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--tap);padding:0 var(--s4);border-radius:var(--r);border:0;background:var(--fill2);color:var(--tint);font-size:var(--fs-sub);font-weight:var(--fw-semi);cursor:pointer;text-decoration:none}
.btn.primary{background:var(--tint);color:var(--on-tint)}
.btn.small{min-height:32px;padding:0 var(--s3);font-size:var(--fs-foot);border-radius:var(--r-sm)}
.btn.danger{color:var(--ko-ink)}
.btn[disabled]{opacity:.45;cursor:not-allowed}
.btn.block{width:100%}
.row{display:flex;gap:var(--s2);flex-wrap:wrap}
.seg{display:flex;background:var(--fill2);border-radius:9px;padding:2px;gap:2px;margin:var(--s2) 0 var(--s3)}
.seg button{flex:1;border:0;background:none;border-radius:7px;padding:6px 8px;font-size:var(--fs-foot);font-weight:var(--fw-med);cursor:pointer;color:var(--label)}
.seg button.on{background:var(--bg2);box-shadow:var(--sh-seg);font-weight:var(--fw-semi)}
[data-theme=dark] .seg button.on{background:#636366}

/* Héros et KPI */
.hero{background:var(--bg2);border-radius:var(--r-lg);padding:var(--s6) var(--s4);text-align:center;margin-top:var(--s2)}
.hero .l{font-size:var(--fs-foot);font-weight:var(--fw-semi);color:var(--label2);letter-spacing:.04em;text-transform:uppercase}
.hero .big{font-size:var(--fs-hero);font-weight:var(--fw-bold);letter-spacing:var(--track-hero);color:var(--brand-green-ink);font-variant-numeric:tabular-nums;margin:var(--s1) 0}
.hero .big.neutral{color:var(--label)}
.hero p{margin:0;color:var(--label2);font-size:var(--fs-sub)}
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-top:var(--s3)}
@media (min-width:900px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{background:var(--bg2);border-radius:var(--r-lg);padding:var(--s3) var(--s4);border:0;text-align:left;cursor:pointer;color:inherit}
.kpi .k{font-size:var(--fs-foot);color:var(--label2)}
.kpi .n{font-size:22px;font-weight:var(--fw-bold);font-variant-numeric:tabular-nums;margin:2px 0}
.kpi .d{font-size:var(--fs-foot);color:var(--label2)}
.steps5{display:flex;gap:var(--s2);margin-top:var(--s3)}
.steps5 button{flex:1;border:0;background:var(--bg2);border-radius:var(--r);padding:var(--s2) 4px;font-size:11px;color:var(--label2);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:4px}
.steps5 .n{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:var(--fill2)}
.steps5 .done .n{background:var(--ok);color:#fff}
.steps5 .todo .n{background:var(--warn);color:#fff}
.steps5 .ko .n{background:var(--ko);color:#fff}

/* Contrôles */
.chk{display:flex;gap:var(--s3);align-items:flex-start;padding:var(--pad-cell);position:relative}
.chk+.chk::before{content:"";position:absolute;top:0;left:var(--inset-sep);right:0;border-top:.5px solid var(--sep)}
.chk .ic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex:none;color:#fff;margin-top:1px}
.chk.bloquant .ic{background:var(--ko)} .chk.a_verifier .ic{background:var(--warn)} .chk.info .ic{background:var(--tint)} .chk.ok .ic{background:var(--ok)}
.chk .w{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.chk.bloquant .w{color:var(--ko-ink)} .chk.a_verifier .w{color:var(--warn-ink)} .chk.info .w{color:var(--tint)} .chk.ok .w{color:var(--ok-ink)}
.chk p{margin:2px 0 0;font-size:var(--fs-sub);line-height:var(--lh-text)}
.pill{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;border-radius:var(--r-pill);padding:3px 8px;white-space:nowrap}
.pill.ok{background:var(--ok-bg);color:var(--ok-ink)} .pill.a_verifier{background:var(--warn-bg);color:var(--warn-ink)} .pill.bloquant{background:var(--ko-bg);color:var(--ko-ink)} .pill.info{background:var(--tint-bg);color:var(--tint)}

/* Dépôt */
.drop{border:2px dashed var(--sep);border-radius:var(--r-xl);background:var(--bg2);padding:var(--s8) var(--s4);text-align:center}
.drop.compact{padding:var(--s4);border-radius:var(--r-lg);display:flex;align-items:center;gap:var(--s3);text-align:left}
.drop h2{margin:var(--s2) 0 var(--s1);font-size:var(--fs-title)}
.drop p{margin:0 0 var(--s4);color:var(--label2);font-size:var(--fs-sub)}
.drop.compact p{margin:0}
.drop svg{color:var(--tint)}
.dropveil{position:fixed;inset:0;z-index:90;background:var(--tint-bg);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:grid;place-items:center;border:3px dashed var(--tint)}
.dropveil div{background:var(--bg2);padding:var(--s4) var(--s6);border-radius:var(--r-lg);font-weight:var(--fw-semi);box-shadow:var(--sh-2)}
.privacy{display:flex;gap:var(--s3);align-items:flex-start;background:var(--brand-green-bg);color:var(--label);border-radius:var(--r);padding:var(--s3) var(--s4);margin-top:var(--s3);font-size:var(--fs-foot);line-height:var(--lh-text)}
.privacy svg{color:var(--brand-green-ink);flex:none;margin-top:2px}

/* Couverture 12 mois */
.cover{display:grid;grid-template-columns:auto repeat(12,1fr);gap:4px;align-items:center;padding:var(--s4);font-size:11px}
.cover .h{text-align:center;color:var(--label2);font-weight:var(--fw-semi)}
.cover .rl{color:var(--label2);padding-right:var(--s2);white-space:nowrap}
.cover button{aspect-ratio:1;border-radius:6px;border:1.5px solid var(--ko);background:none;cursor:pointer;padding:0;min-width:0}
.cover button.lu{background:var(--ok);border-color:var(--ok)}
.cover button.av{background:var(--warn);border-color:var(--warn)}
.cover button.sans{background:var(--fill);border-color:var(--fill)}
.legend{display:flex;gap:var(--s4);padding:0 var(--s4) var(--s3);font-size:11px;color:var(--label2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}

/* Rotations */
.rot .route{font:500 var(--fs-foot)/1.3 var(--mono);color:var(--label2);display:block;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rot .d{font-weight:var(--fw-semi)}
.rot .meta{display:flex;gap:6px;align-items:center;margin-top:3px;flex-wrap:wrap}
.calc{font-variant-numeric:tabular-nums}
.kv{display:flex;justify-content:space-between;gap:var(--s3);padding:9px var(--s4);font-size:var(--fs-sub);position:relative}
.kv+.kv::before{content:"";position:absolute;top:0;left:var(--s4);right:0;border-top:.5px solid var(--sep)}
.kv b{font-variant-numeric:tabular-nums;white-space:nowrap}
.kv.tot{font-weight:var(--fw-bold)}

/* Comparaison */
.cmp{width:100%;border-collapse:collapse;font-size:var(--fs-sub);font-variant-numeric:tabular-nums}
.cmp th,.cmp td{padding:10px var(--s4);text-align:right;border-top:.5px solid var(--sep)}
.cmp th:first-child,.cmp td:first-child{text-align:left;color:var(--label2);font-weight:400}
.cmp thead th{border-top:0;font-size:var(--fs-foot);color:var(--label2)}
.cmp .best{font-weight:var(--fw-bold);color:var(--brand-green-ink)}
.verdict{border-radius:var(--r);padding:var(--s4);font-weight:var(--fw-semi);font-size:var(--fs-sub);line-height:var(--lh-text);margin-top:var(--s2)}
.verdict.ok{background:var(--brand-green-bg);color:var(--brand-green-ink)}
.verdict.neutral{background:var(--fill2)}
.verdict.ko{background:var(--ko-bg);color:var(--ko-ink)}
.bar2{height:10px;border-radius:5px;background:var(--fill);overflow:hidden;margin-top:6px}
.bar2 i{display:block;height:100%;background:var(--label3);border-radius:5px}
.bar2 i.g{background:var(--brand-green)}

/* Où remplir */
.gouv{background:var(--bg2);border:1px solid var(--sep);border-radius:var(--r);overflow:hidden}
.gouv .rub{background:#000091;color:#fff;font-size:12px;font-weight:700;letter-spacing:.04em;padding:8px var(--s4);text-transform:uppercase}
[data-theme=dark] .gouv .rub{background:#1b1b9b}
.gl{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-top:.5px solid var(--sep)}
.gl:first-of-type{border-top:0}
.gl .lib{font-size:var(--fs-sub);line-height:1.35}
.gl .lib small{display:block;color:var(--label2);font-size:var(--fs-foot)}
.code{font:700 13px/1 var(--mono);background:var(--fill);border-radius:4px;padding:6px 7px}
.gl .amt{font-size:22px;font-weight:var(--fw-bold);min-width:84px;text-align:right}
.gl.skip .amt{font-size:var(--fs-sub);color:var(--label2);font-weight:var(--fw-med)}
.gl .done{color:var(--ok-ink);font-size:var(--fs-foot);font-weight:var(--fw-semi)}
@media (max-width:520px){.gl{grid-template-columns:auto 1fr auto;}.gl .lib{grid-column:1/-1}.gl .amt{text-align:left}}
.crumb{font-size:var(--fs-foot);color:var(--label2);margin:0 0 var(--s3)}
.pre{white-space:pre-wrap;font:13px/1.5 var(--mono);background:var(--bg3);border-radius:var(--r-sm);padding:var(--s3);margin:0}

/* Banque */
.op .lib{font-family:var(--mono);font-size:13px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.op .acts{display:flex;gap:6px;flex:none}
.round{width:36px;height:36px;border-radius:50%;border:0;display:grid;place-items:center;cursor:pointer;background:var(--fill2);color:var(--label2)}
.round.yes{background:var(--tint);color:var(--on-tint)}
.op.accepte .v{color:var(--brand-green-ink);font-weight:var(--fw-semi)}
.op.refuse{opacity:.55}

/* Feuilles */
.sheet-wrap{position:fixed;inset:0;z-index:80;background:var(--overlay);display:flex;align-items:flex-end;justify-content:center}
.sheet{background:var(--bg);width:100%;max-width:680px;max-height:92vh;overflow:auto;border-radius:var(--r-lg) var(--r-lg) 0 0;padding:var(--s2) var(--page-x) calc(var(--s6) + env(safe-area-inset-bottom));box-shadow:var(--sh-sheet);animation:up var(--t-sheet) var(--ease)}
@media (min-width:900px){.sheet-wrap{align-items:center}.sheet{border-radius:var(--r-lg);max-height:86vh}}
@keyframes up{from{transform:translateY(40px);opacity:0}}
.grab{width:36px;height:5px;border-radius:3px;background:var(--label3);margin:0 auto var(--s2)}
.sheet-h{display:flex;align-items:center;gap:var(--s3);margin-bottom:var(--s2)}
.sheet-h h2{flex:1;margin:0;font-size:var(--fs-title)}
.sheet-h p{margin:2px 0 0;color:var(--label2);font-size:var(--fs-foot)}
.toast{position:fixed;left:50%;bottom:calc(var(--tabbar-h) + 18px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:95;background:#1c1c1e;color:#fff;border-radius:var(--r);padding:10px var(--s4);font-size:var(--fs-sub);box-shadow:var(--sh-2);display:flex;gap:var(--s3);align-items:center;max-width:calc(100% - 32px)}
.toast button{border:0;background:none;color:#3AB0DC;font-weight:700;cursor:pointer}
.empty{text-align:center;padding:var(--s10) var(--s4);color:var(--label2)}
.empty h3{color:var(--label);margin:0 0 var(--s1)}
.demo-banner{background:var(--brand-magenta-bg);color:var(--brand-magenta-ink);border-radius:var(--r);padding:var(--s2) var(--s4);font-size:var(--fs-foot);font-weight:var(--fw-semi);display:flex;justify-content:space-between;align-items:center;gap:var(--s2);margin-top:var(--s3)}
.demo-banner button{border:0;background:none;color:inherit;text-decoration:underline;cursor:pointer;font:inherit}
.skel{display:inline-block;width:70px;height:1em;border-radius:4px;background:var(--fill);animation:pulse 1.2s infinite}
@keyframes pulse{50%{opacity:.5}}
details.why summary{cursor:pointer;color:var(--tint);font-size:var(--fs-foot);font-weight:var(--fw-semi);padding:var(--s2) var(--s4)}
details.why div{padding:0 var(--s4) var(--s3);font-size:var(--fs-foot);color:var(--label2);line-height:var(--lh-text)}
.two{display:grid;gap:var(--s4)}
@media (min-width:1100px){.two{grid-template-columns:1fr 1fr}}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.grow{flex:1;min-width:0}
.cmp td:not(:first-child){white-space:nowrap}
/* ---------- Connexion, administration, espace pro ---------- */
body.auth{min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:max(56px,env(safe-area-inset-top)) var(--s4) var(--s8)}
.auth-card{width:100%;max-width:420px;text-align:center}
.auth-card .logo.big{width:56px;height:56px;color:var(--label)}
.auth-card h1{font-size:28px;margin:10px 0 4px;font-weight:var(--fw-bold,700)}
.auth-card h1 span{color:var(--brand-green-ink)}
.auth-form{text-align:left}
.auth-form input,.auth-form .cell input[type=text]{flex:1;min-width:0;text-align:right;border:0;background:transparent;padding:0;outline:none;font:inherit;color:var(--label)}
.auth-err{color:var(--ko-ink);min-height:20px;font-size:var(--fs-foot);margin:var(--s3) 0}
.auth-btn{width:100%}
.auth-note{text-align:left;margin-top:var(--s3)}
.admin{max-width:760px;margin:0 auto;padding:max(24px,env(safe-area-inset-top)) var(--s4) 48px}
.admin h2.large{margin-top:var(--s3)}
.admin .cell.off .grow{opacity:.55}
.admin .cell input[type=text]{background:transparent;padding:0}
.link{word-break:break-all;font-family:var(--mono);font-size:13px;user-select:all}
.demo-banner.pro{background:var(--brand-sky-bg,rgba(58,176,220,.12));color:var(--label)}
.side-sub .yr,.brand small .yr{padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer}
.linkish.yr{display:inline;min-height:0;padding:0;color:var(--label2);font-size:inherit}
.step.pro .n{background:var(--brand-green-bg);color:var(--brand-green-ink)}
.tag.q{border:0;cursor:pointer;background:var(--warn-bg,rgba(255,149,0,.14));color:var(--warn-ink,#b25e00);font:inherit;font-size:11px;padding:1px 7px}
a.cell{color:inherit;text-decoration:none}
/* Simulateur : résumé toujours visible pendant la saisie */
.simu-bar{position:sticky;bottom:calc(var(--tabbar-h) + 10px + env(safe-area-inset-bottom));z-index:30;display:flex;justify-content:space-between;gap:12px;margin-top:16px;padding:12px 16px;border-radius:14px;background:var(--bar);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:.5px solid var(--sep);box-shadow:0 6px 20px rgba(0,0,0,.08);font-size:15px}
.simu-bar b{font-variant-numeric:tabular-nums}
.simu-bar span:last-child b{color:var(--brand-green-ink)}
@media (min-width:900px){.simu-bar{bottom:16px}}
@media (min-width:900px){.kpis.kpis5{grid-template-columns:repeat(5,1fr)}}
