:root{--green:#0d3b2e;--green2:#17694b;--mint:#eaf6f0;--ink:#102019;--muted:#6b7770;--line:#dce5df;--paper:#f6f8f5;--white:#fff;--amber:#c87921;--blue:#216d91;--purple:#6254a1;--shadow:0 18px 55px rgba(13,59,46,.1);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:radial-gradient(circle at 10% 5%,#e6f3ec 0,transparent 26rem),var(--paper);overflow-x:hidden}button,a{font:inherit}button{color:inherit}.ambient{position:fixed;border-radius:50%;filter:blur(50px);pointer-events:none;opacity:.35}.ambient-one{width:260px;height:260px;background:#b7ead2;top:8%;right:-100px}.ambient-two{width:220px;height:220px;background:#dcebe6;bottom:5%;left:-120px}.demo-ribbon{position:fixed;z-index:60;top:0;left:0;right:0;height:30px;display:flex;align-items:center;justify-content:center;gap:8px;background:#092b21;color:#fff;font-size:.7rem;font-weight:800;letter-spacing:.12em}.demo-ribbon span{width:7px;height:7px;border-radius:50%;background:#6fe2ab;box-shadow:0 0 12px #6fe2ab}.app-shell{width:min(100%,1120px);margin:auto;padding:46px 18px 120px}.glass{background:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.9);backdrop-filter:blur(18px) saturate(125%);-webkit-backdrop-filter:blur(18px) saturate(125%);box-shadow:0 10px 40px rgba(15,48,38,.08)}.glass-soft{background:rgba(255,255,255,.67);border:1px solid rgba(255,255,255,.88);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.topbar{position:sticky;z-index:30;top:40px;display:flex;align-items:center;justify-content:space-between;padding:10px 12px 10px 14px;border-radius:22px}.brand{display:flex;align-items:center;gap:11px;color:inherit;text-decoration:none}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:14px;background:var(--green);color:#fff;font:800 1.25rem Georgia,serif}.brand b,.brand small{display:block}.brand small{color:var(--muted);font-size:.72rem;margin-top:2px}.profile{border:0;width:42px;height:42px;border-radius:50%;background:#e5f0ea;color:var(--green);font-weight:800}.view{display:none;padding:34px 0 12px}.view.active{display:block;animation:appear .24s ease}@keyframes appear{from{opacity:0;transform:translateY(5px)}}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin:0 4px 22px}.page-heading h1{font:700 clamp(2rem,6vw,3.3rem)/1.02 Georgia,serif;margin:4px 0 6px;letter-spacing:-.035em}.page-heading p{margin:0;color:var(--muted);font-size:1rem}.eyebrow{font-size:.72rem!important;font-weight:850;letter-spacing:.13em;color:var(--green2)!important}.sync{display:flex;align-items:center;gap:7px;font-size:.8rem;color:var(--muted);margin-top:8px}.sync i{width:8px;height:8px;border-radius:50%;background:#41ad77}.hero-card{padding:24px;border-radius:28px;background:linear-gradient(145deg,#123f32,#0a2e24);color:#fff;box-shadow:0 20px 55px rgba(13,59,46,.25)}.hero-top,.goal-row,.hero-bottom{display:flex;justify-content:space-between;gap:12px;align-items:center}.hero-top{font-size:.9rem;color:#d9eee4}.status{font-size:.72rem;background:rgba(255,255,255,.12);padding:7px 10px;border-radius:99px}.hero-value{font-size:clamp(2.8rem,10vw,4.4rem);font-weight:820;letter-spacing:-.055em;margin:18px 0}.goal-row{font-size:.86rem}.progress{height:8px;border-radius:99px;background:rgba(255,255,255,.15);overflow:hidden;margin:10px 0 14px}.progress span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#74e0ac,#b9f3d5)}.hero-bottom{font-size:.83rem;color:#d9eee4}.metrics-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0}.metric{position:relative;text-align:left;border:1px solid var(--line);background:rgba(255,255,255,.92);border-radius:21px;padding:17px;min-height:140px;box-shadow:0 7px 25px rgba(14,48,38,.05);cursor:pointer;transition:.14s}.metric:hover{transform:translateY(-2px);border-color:#b7cfc2}.metric:active{transform:scale(.98)}.metric small,.metric strong,.metric em{display:block}.metric small{color:var(--muted);font-size:.78rem}.metric strong{font-size:1.35rem;margin:10px 0 5px;letter-spacing:-.025em}.metric em{font-size:.76rem;color:var(--muted);font-style:normal}.metric>i{position:absolute;right:14px;top:13px;font-style:normal;color:#8b9790;font-size:1.2rem}.metric-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px;margin-bottom:15px;font-weight:800}.blue{background:#e9f3f7;color:var(--blue)}.purple{background:#f0eef9;color:var(--purple)}.green{background:#e9f5ef;color:var(--green2)}.orange{background:#fff0de;color:var(--amber)}.insight{display:flex;align-items:center;gap:13px;padding:16px;border-radius:20px;margin:14px 0}.insight-icon{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:12px;background:#dff3e9;color:var(--green2)}.insight div{flex:1}.insight p{margin:3px 0 0;color:var(--muted);font-size:.85rem;line-height:1.45}.insight button,.alert-line button{border:0;background:transparent;color:var(--green2);font-weight:800}.section-card,.chart-card,.forecast-card,.goal-card,.details{background:rgba(255,255,255,.91);border:1px solid var(--line);border-radius:22px;margin:14px 0;overflow:hidden}.section-head{width:100%;border:0;background:transparent;padding:17px;display:flex;align-items:center;text-align:left;gap:12px}.section-head>span:first-child{flex:1}.section-head b,.section-head small{display:block}.section-head small{color:var(--muted);font-size:.78rem;margin-top:3px}.section-head i{font-style:normal;transition:.2s}.section-card.open .section-head i{transform:rotate(180deg)}.count{display:grid;place-items:center;min-width:29px;height:29px;border-radius:99px;background:#fff2df;color:#9c5a19;font-weight:800}.section-body{display:none;padding:0 17px 17px}.section-card.open .section-body{display:block}.alert-line{display:flex;align-items:center;gap:10px;padding:12px 0;border-top:1px solid var(--line)}.alert-line>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#fff2df;color:#9c5a19;font-weight:900}.alert-line div{flex:1}.alert-line b,.alert-line small{display:block}.alert-line small{color:var(--muted);margin-top:3px}.week-nav{display:flex;justify-content:space-between;align-items:center;padding:8px;border-radius:18px;margin-bottom:12px}.week-nav button{border:0;background:#fff;width:44px;height:44px;border-radius:13px;font-size:1.5rem}.goal-card{padding:20px;display:grid;grid-template-columns:1fr auto;gap:14px}.goal-card>div:first-child small,.goal-card>div:first-child strong{display:block}.goal-card>div:first-child strong{font-size:2rem;margin-top:4px}.text-button,.calculation-link{border:0;background:transparent;color:var(--green2);font-weight:800}.goal-stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.goal-stats span{background:#f4f7f5;padding:12px;border-radius:13px}.goal-stats small,.goal-stats b{display:block}.goal-stats small{font-size:.72rem;color:var(--muted);margin-bottom:5px}.goal-card .progress{grid-column:1/-1;background:#e0e8e3;margin:0}.day-picker{display:grid;grid-template-columns:repeat(7,1fr);gap:7px;margin:14px 0}.day-picker button{min-width:0;border:1px solid var(--line);background:#fff;border-radius:15px;padding:9px 4px}.day-picker small,.day-picker b,.day-picker span{display:block}.day-picker b{font-size:1.1rem;margin:5px 0}.day-picker span{font-size:.65rem;color:var(--muted);white-space:nowrap}.day-picker .done{background:#eff8f3;border-color:#c2e1d0}.day-picker .current{background:var(--green);color:#fff}.day-picker .current span{color:#d7ebe2}.day-picker .rest{opacity:.62}.field-label{font-weight:800}.segmented{display:flex;gap:5px}.segmented button{flex:1;height:42px;border:1px solid var(--line);background:#fff;border-radius:11px}.segmented .selected{background:var(--green);color:#fff;border-color:var(--green)}.note,.disclaimer,.demo-note{font-size:.76rem;color:var(--muted);line-height:1.45}.period-picker,.forecast-tabs{display:flex;background:#e9eeea;border-radius:15px;padding:4px;gap:3px;margin-bottom:14px}.period-picker button,.forecast-tabs button{flex:1;border:0;background:transparent;border-radius:11px;padding:10px 7px;font-size:.8rem}.period-picker .active,.forecast-tabs .active{background:#fff;color:var(--green);font-weight:800;box-shadow:0 4px 14px rgba(13,59,46,.08)}.chart-card,.forecast-card{padding:18px}.card-title{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.card-title b,.card-title small{display:block}.card-title small{color:var(--muted);font-size:.78rem;margin-top:4px}.card-title>strong{color:var(--green2)}.bars{height:145px;display:flex;align-items:end;gap:9px;margin:24px 4px 5px;border-bottom:1px solid var(--line)}.bars i{flex:1;min-height:8px;border-radius:7px 7px 2px 2px;background:#b8d9c8}.bars .today-bar{background:var(--green2)}.axis{display:flex;justify-content:space-around;color:var(--muted);font-size:.7rem}.badge{background:#eaf6f0;color:var(--green2);font-size:.7rem;font-weight:800;border-radius:99px;padding:7px 9px}.forecast-tabs{margin-top:18px}.forecast-result{background:linear-gradient(140deg,#eff8f3,#f8fbf9);border-radius:17px;padding:18px}.forecast-result small,.forecast-result strong,.forecast-result span{display:block}.forecast-result strong{font-size:2rem;margin:7px 0}.forecast-result span{font-size:.76rem;color:var(--muted)}.calculation-link{width:100%;display:flex;justify-content:space-between;padding:16px 2px 0}.details summary{list-style:none;padding:17px;display:flex;align-items:center;justify-content:space-between;font-weight:800;cursor:pointer}.details summary::-webkit-details-marker{display:none}.details summary span{color:var(--muted);font-size:.76rem;font-weight:500}.breakdown{padding:0 17px 14px}.breakdown p{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding:12px 0;margin:0}.treasury-hero{background:linear-gradient(145deg,#17694b,#0a3326);color:#fff;border-radius:27px;padding:23px;box-shadow:var(--shadow)}.treasury-hero small,.treasury-hero strong,.treasury-hero p{display:block}.treasury-hero strong{font-size:2.7rem;margin:10px 0}.treasury-hero p{color:#d5e9df;margin:0}.calculation-link.light{color:#fff;border-top:1px solid rgba(255,255,255,.2);margin-top:16px}.menu-group{margin:22px 0}.menu-group h2{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-left:8px}.menu-group button{width:100%;display:flex;align-items:center;gap:13px;text-align:left;border:1px solid var(--line);border-bottom:0;background:rgba(255,255,255,.91);padding:14px}.menu-group button:first-of-type{border-radius:19px 19px 0 0}.menu-group button:last-of-type{border-bottom:1px solid var(--line);border-radius:0 0 19px 19px}.menu-group button:only-of-type{border-radius:19px}.menu-group button>span:nth-child(2){flex:1}.menu-group b,.menu-group small{display:block}.menu-group small{font-size:.77rem;color:var(--muted);margin-top:3px}.menu-group i{font-style:normal;font-size:1.3rem;color:#849189}.menu-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#eaf4ef;color:var(--green2);font-weight:800}.bottom-nav{position:fixed;z-index:40;left:50%;bottom:max(10px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(calc(100% - 28px),720px);display:grid;grid-template-columns:repeat(5,1fr);padding:7px;border-radius:23px}.bottom-nav button{border:0;background:transparent;min-height:54px;border-radius:16px;color:var(--muted)}.bottom-nav span,.bottom-nav small{display:block}.bottom-nav span{font-size:1rem;font-weight:800}.bottom-nav small{font-size:.66rem;margin-top:4px}.bottom-nav .active{background:var(--green);color:#fff}.fab{position:fixed;z-index:45;right:max(19px,calc((100vw - 1120px)/2 + 19px));bottom:max(82px,calc(env(safe-area-inset-bottom) + 82px));width:58px;height:58px;border:0;border-radius:19px;background:var(--green2);color:#fff;font-size:2rem;box-shadow:0 14px 30px rgba(13,59,46,.3)}.sheet-layer{display:none;position:fixed;z-index:100;inset:0;align-items:end;justify-content:center}.sheet-layer.open{display:flex}.scrim{position:absolute;inset:0;border:0;background:rgba(6,22,17,.64);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.bottom-sheet{position:relative;width:min(100%,640px);max-height:min(82dvh,720px);overflow:auto;overscroll-behavior:contain;background:#fff;border-radius:28px 28px 0 0;padding:9px 20px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -18px 60px rgba(0,0,0,.22);animation:slideup .25s ease}@keyframes slideup{from{transform:translateY(100%)}}.handle{width:42px;height:5px;border-radius:99px;background:#cbd4cf;margin:0 auto 13px}.bottom-sheet header{display:flex;align-items:center;justify-content:space-between}.bottom-sheet h2{font:700 1.7rem Georgia,serif;margin:3px 0 14px}.close{width:44px;height:44px;border:1px solid var(--line);border-radius:14px;background:#fff;font-size:1.6rem}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.quick-grid button{display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto auto;text-align:left;column-gap:10px;border:1px solid var(--line);background:#f8faf8;border-radius:17px;padding:14px}.quick-grid button>span{grid-row:1/3;display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:#e6f3ec;color:var(--green2);font-weight:900}.quick-grid small{color:var(--muted);font-size:.71rem;margin-top:3px}.toast{position:fixed;z-index:130;left:50%;bottom:108px;transform:translate(-50%,20px);background:#102019;color:#fff;border-radius:99px;padding:10px 15px;font-size:.78rem;opacity:0;pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:720px){.app-shell{padding-inline:12px}.topbar{top:36px}.view{padding-top:28px}.metrics-grid{grid-template-columns:1fr 1fr}.metric{min-height:128px}.activity-metrics .metric{min-height:110px}.day-picker{overflow-x:auto;grid-template-columns:repeat(7,62px);padding-bottom:4px}.hero-top .status{display:none}.goal-stats{grid-template-columns:1fr 1fr}.goal-stats span:last-child{grid-column:1/-1}.quick-grid{grid-template-columns:1fr 1fr}.page-heading h1{font-size:2.25rem}}
@media(max-width:390px){.brand small{display:none}.metrics-grid{gap:8px}.metric{padding:14px}.metric strong{font-size:1.15rem}.quick-grid{grid-template-columns:1fr}.bottom-sheet{padding-inline:14px}.bottom-nav small{font-size:.59rem}.hero-card{padding:20px}.hero-value{font-size:2.75rem}}
@media(min-width:900px){main{padding:0 18px}.view{max-width:960px;margin:auto}.hero-card{padding:30px}.bottom-nav{bottom:18px}.fab{right:max(30px,calc((100vw - 1060px)/2))}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.glass,.glass-soft{background:#fff}}

/* Bac à sable local : formulaires et périodes personnalisées. */
.header-actions{display:flex;align-items:center;gap:8px}.reset-demo{min-height:42px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--green);padding:0 12px;font-size:.74rem;font-weight:800}.period-list{display:grid;gap:9px;margin-bottom:10px}.period-item{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:14px;background:#f7faf8}.period-item b,.period-item small{display:block}.period-item small{margin-top:4px;color:var(--muted);line-height:1.4}.period-item button,.add-period{min-height:44px;border:1px solid var(--line);border-radius:12px;background:#fff;color:var(--green);font-weight:800}.add-period{width:100%}.form-layer{display:none;position:fixed;z-index:150;inset:0;align-items:center;justify-content:center;padding:16px}.form-layer.open{display:flex}.form-scrim{position:absolute;inset:0;border:0;background:rgba(6,22,17,.68);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.demo-form{position:relative;width:min(100%,520px);max-height:min(88dvh,760px);overflow:auto;background:#fff;border-radius:25px;padding:20px;box-shadow:0 24px 80px rgba(0,0,0,.25)}.demo-form header{display:flex;justify-content:space-between;align-items:start;gap:12px}.demo-form h2{font:700 1.7rem Georgia,serif;margin:3px 0 16px}.form-fields{display:grid;gap:13px}.form-fields label{display:grid;gap:6px;color:var(--ink);font-weight:750}.form-fields input,.form-fields select{width:100%;min-height:48px;border:1px solid #cdd8d1;border-radius:13px;background:#f9fbf9;padding:0 13px;font-size:1rem;color:var(--ink)}.form-fields input:focus,.form-fields select:focus{outline:3px solid rgba(23,105,75,.18);border-color:var(--green2)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-actions{position:sticky;bottom:-20px;display:grid;grid-template-columns:1fr 1.4fr;gap:9px;margin:18px -20px -20px;padding:12px 20px calc(12px + env(safe-area-inset-bottom));background:rgba(255,255,255,.95);border-top:1px solid var(--line);backdrop-filter:blur(12px)}.form-actions button{min-height:48px;border-radius:13px;font-weight:850}.form-actions .secondary{border:1px solid var(--line);background:#fff}.form-actions .primary{border:0;background:var(--green2);color:#fff}
@media(max-width:520px){.reset-demo{font-size:0;width:42px;padding:0}.reset-demo::after{content:'↺';font-size:1.15rem}.form-layer{align-items:end;padding:0}.demo-form{width:100%;max-width:none;border-radius:26px 26px 0 0;padding:18px 16px}.form-actions{bottom:-18px;margin-left:-16px;margin-right:-16px;margin-bottom:-18px;padding-left:16px;padding-right:16px}.form-row{grid-template-columns:1fr}}

.details summary{gap:14px;min-height:64px;transition:background-color .14s ease}.details summary:hover{background:#f7faf8}.details summary:active{background:#eef5f1}.summary-copy{display:grid;gap:3px;min-width:0}.summary-copy small{color:var(--muted);font-size:.76rem;font-weight:500}.detail-action{display:flex!important;align-items:center;gap:7px;flex:none;color:var(--green2)!important;font-size:.76rem!important;font-weight:800!important}.detail-action i{display:inline-block;font-style:normal;font-size:1rem;transition:transform .18s ease}.open-label{display:none}.details[open] .closed-label{display:none}.details[open] .open-label{display:inline}.details[open] .detail-action i{transform:rotate(180deg)}
@media(max-width:430px){.detail-action .closed-label,.detail-action .open-label{font-size:0}.detail-action .closed-label::after{content:'Voir';font-size:.76rem}.detail-action .open-label::after{content:'Fermer';font-size:.76rem}}

.hero-edit{width:100%;display:flex;align-items:center;justify-content:space-between;margin-top:18px;padding:13px 0 0;border:0;border-top:1px solid rgba(255,255,255,.2);background:transparent;color:#fff;font-weight:800;text-align:left}.hero-edit:active{opacity:.72}
.quick-grid .quick-primary{grid-column:1/-1;background:var(--green);border-color:var(--green);color:#fff}.quick-grid .quick-primary>span{background:rgba(255,255,255,.16);color:#fff}.quick-grid .quick-primary small{color:#d9eee4}
.form-section-title{margin:8px 0 0;padding-top:13px;border-top:1px solid var(--line);color:var(--green2);font-size:.78rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.form-section-title:first-child{border-top:0;padding-top:0}.day-total{display:flex;align-items:center;justify-content:space-between;padding:14px;border-radius:14px;background:var(--mint);color:var(--green)}.day-total b{font-size:1.2rem}.breakdown-note{color:var(--green2)}
@media(max-width:520px){.demo-form:has(.form-section-title){max-height:94dvh}.demo-form:has(.form-section-title) .form-row{grid-template-columns:1fr 1fr}.demo-form:has(.form-section-title) .form-fields label{font-size:.82rem}.demo-form:has(.form-section-title) .form-fields input{min-height:45px}}
@media(max-width:370px){.demo-form:has(.form-section-title) .form-row{grid-template-columns:1fr}}
