:root{
--bg:#f7f7f5;--card:#fff;--text:#171717;--muted:#6b6b67;--border:#e4e4df;
--accent:#111827;--accent-soft:#eef0f3;--green:#157347;--red:#b42318;--orange:#b54708;
--radius:18px;--shadow:0 1px 2px rgba(0,0,0,.03)
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);line-height:1.45}
a{color:inherit;text-decoration:none}
.container{width:min(1120px,calc(100% - 28px));margin-inline:auto}
.topbar{background:rgba(247,247,245,.94);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10;backdrop-filter:blur(14px)}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0}
.brand{display:flex;align-items:center;gap:10px;font-weight:750}
.brand-mark{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:12px;background:var(--accent);color:#fff;font-weight:800}
.top-actions{display:flex;align-items:center;gap:12px}
.app-shell{padding:24px 0 44px}
.hero-grid,.grid-2{display:grid;grid-template-columns:1.25fr .75fr;gap:16px}
.grid-2.compact{grid-template-columns:1fr 1fr}
.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.accent-card{background:linear-gradient(180deg,#fff,#fafafa)}
.eyebrow,.label,.muted,.hint,small{color:var(--muted)}
.eyebrow{font-size:.88rem;margin:0 0 6px}.hero-value{font-size:2.2rem;font-weight:800;letter-spacing:-.04em}
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:24px}.stats-grid div{min-width:0}.stats-grid span{display:block;font-size:.75rem}.stats-grid strong{display:block;margin-top:4px;font-size:1.05rem}
h1,h2,h3,p{margin-top:0}h1{font-size:1.7rem}h2{font-size:1.05rem;margin-bottom:6px}h3{font-size:1rem}
.progress{height:8px;background:#efefec;border-radius:999px;overflow:hidden;margin:12px 0}.progress span{display:block;height:100%;background:#5b6574;border-radius:999px}
.tabs{display:flex;gap:4px;overflow-x:auto;margin:18px 0;border-bottom:1px solid var(--border)}.tabs a{padding:12px 14px;color:var(--muted);white-space:nowrap;border-radius:12px 12px 0 0}.tabs a.active{color:var(--text);background:var(--card);font-weight:700;border:1px solid var(--border);border-bottom-color:var(--card);margin-bottom:-1px}
.btn{border:1px solid var(--border);background:var(--card);color:var(--text);padding:11px 14px;border-radius:12px;font:inherit;font-weight:650;cursor:pointer;min-height:44px}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.ghost{background:transparent}.smallbtn{min-height:36px;padding:7px 10px;font-size:.85rem}
.stack{display:grid;gap:12px}.stack-gap{display:grid;gap:16px;margin-top:16px}
label{display:grid;gap:6px;font-size:.88rem;font-weight:650}input,select,textarea{width:100%;border:1px solid var(--border);background:#fff;color:var(--text);border-radius:11px;padding:11px 12px;min-height:44px;font:inherit;font-size:16px}input:focus,select:focus{outline:2px solid #9ca3af;outline-offset:1px}
.check{display:flex;align-items:flex-start;gap:10px}.check input{width:auto;min-height:auto;margin-top:4px}
.quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}details{border:1px solid var(--border);border-radius:14px;background:#fcfcfb}summary{cursor:pointer;list-style:none;padding:14px;font-weight:700}.form-pad{padding:0 14px 14px}
.section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:14px}
.category-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.category-card,.account-card{border:1px solid var(--border);border-radius:14px;padding:15px}.category-top{display:flex;justify-content:space-between}.category-icon{font-size:1.3rem}.small{font-size:.82rem}
.list{display:grid}.list-row{display:flex;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--border)}.list-row:last-child{border-bottom:0}.list-row div{display:grid;gap:2px}.list-row span{font-size:.82rem;color:var(--muted)}
.need-list{display:grid;gap:10px}.need-card{border:1px solid var(--border);border-radius:14px;padding:15px}.need-top,.need-foot{display:flex;justify-content:space-between;gap:16px}.need-top>div{display:grid;gap:3px}.need-top span,.need-foot{font-size:.82rem;color:var(--muted)}.right{text-align:right}.need-foot{flex-wrap:wrap}
.flash{padding:12px 14px;border:1px solid var(--border);border-radius:12px;background:#fff;margin-bottom:12px}.flash.success{border-color:#b7dec8;background:#f4fbf7}.flash.danger{border-color:#efc0bc;background:#fff7f6}
.filters{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}.filters label{min-width:230px}
.forecast-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.forecast-cards article{border:1px solid var(--border);border-radius:14px;padding:15px;display:grid;gap:5px}.forecast-cards strong{font-size:1.3rem}.forecast-cards em{font-style:normal;font-size:.8rem}.forecast-cards .sain{color:var(--green)}.forecast-cards .sous-tension{color:var(--orange)}.forecast-cards .déficitaire{color:var(--red)}
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:760px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--border);font-size:.88rem}th{color:var(--muted);font-weight:650}.positive{color:var(--green)}.negative{color:var(--red)}
.account-grid{display:grid;gap:10px}.account-card{display:grid;gap:4px}.account-card strong{font-size:1.35rem}
.transfer-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;align-items:end}
.empty{padding:14px;border-radius:12px;background:#fafaf8;color:var(--muted)}
.footer{padding:0 0 30px;color:var(--muted);font-size:.8rem}
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-card{width:min(440px,100%);background:#fff;border:1px solid var(--border);border-radius:22px;padding:28px}.auth-card .brand-mark{margin-bottom:16px}
@media(max-width:820px){.hero-grid,.grid-2,.category-grid,.forecast-cards,.quick-grid,.transfer-form{grid-template-columns:1fr}.grid-2.compact{grid-template-columns:1fr 1fr}.stats-grid{grid-template-columns:1fr 1fr 1fr}}
@media(max-width:520px){.container{width:min(100% - 18px,1120px)}.card{padding:16px}.grid-2.compact,.stats-grid{grid-template-columns:1fr}.top-actions .muted{display:none}.need-top{align-items:flex-start}.need-foot{display:grid}.hero-value{font-size:1.9rem}}
