:root{font-family:'DM Sans',sans-serif;color:#263943;background:#f5f7f8;font-synthesis:none;text-rendering:optimizeLegibility;--navy:#17324d;--teal:#188d8b;--teal-dark:#137775;--mint:#eaf5f2;--blue:#2973a8;--muted:#76868d;--line:#e2e9eb;--panel:#fff;--gold:#e5b653;--red:#c76464;--shadow:0 6px 22px #18384d0b}*{box-sizing:border-box}body{margin:0;min-width:320px}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:4}.brand{display:flex;gap:11px;align-items:center;color:var(--navy);text-decoration:none}.brand-mark{width:37px;height:37px;border-radius:12px;background:var(--navy);display:grid;place-items:center;color:#f0cc75;font-size:21px}.brand strong,.brand small{display:block}.brand strong{font:700 14px Manrope,sans-serif;letter-spacing:.01em}.brand small{font-size:11px;color:var(--muted);margin-top:2px}.topbar-right{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted)}.connection-dot{width:8px;height:8px;background:#68b991;border-radius:50%;box-shadow:0 0 0 3px #e4f4ec}.icon-button{margin-left:16px;border:1px solid var(--line);background:#fff;color:var(--navy);width:34px;height:34px;border-radius:10px;cursor:pointer;font-size:17px}.app-shell{max-width:1480px;margin:auto;display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 70px)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:29px 16px 20px;position:relative}.nav-caption{font-size:9px;font-weight:700;letter-spacing:.14em;color:#a0adb1;padding:0 11px 11px}.dogs-caption{padding-top:28px}.nav-item{width:100%;border:0;background:transparent;color:#617279;text-align:left;padding:11px 12px;margin:2px 0;border-radius:10px;font:500 12px 'DM Sans',sans-serif;display:flex;gap:11px;align-items:center;cursor:pointer;transition:.15s}.nav-item:hover{background:#f3f8f7;color:var(--navy)}.nav-item.active{background:#e9f4f2;color:#126f70;font-weight:700}.nav-icon{font-size:16px;width:19px;text-align:center}.dog-dot{width:22px;height:22px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:700}.ulyse-dot{background:#f6eddb;color:#9e7630}.viny-dot{background:#e4eef5;color:#4c7894}.sidebar-note{border-top:1px solid var(--line);margin-top:26px;padding:20px 10px 0;color:#b59a5d;font-size:16px}.sidebar-note p{font-size:11px;line-height:1.6;color:#829095;margin:7px 0}.sidebar-bottom{position:absolute;bottom:20px;left:27px;font-size:10px;line-height:1.8;color:#98a6aa}.sidebar-bottom strong{color:var(--navy);font-size:11px}.main-content{padding:34px 40px 56px;min-width:0}.eyebrow{font-size:9px;letter-spacing:.15em;color:var(--teal);font-weight:700;text-transform:uppercase}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:26px}.page-heading h1{font:700 25px Manrope,sans-serif;color:var(--navy);letter-spacing:-.035em;margin:7px 0 5px}.page-heading p{font-size:12px;color:var(--muted);margin:0}.year-pill{border:1px solid #dce8e5;background:#fff;border-radius:9px;padding:9px 13px;color:#526970;font-size:11px;white-space:nowrap}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:19px}.metric-card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.metric-card{padding:16px 17px}.metric-top{display:flex;align-items:center;justify-content:space-between;color:#74858c;font-size:10px}.metric-icon{width:28px;height:28px;border-radius:9px;background:#edf5f4;color:var(--teal);display:grid;place-items:center;font-size:14px}.metric-value{font:700 21px Manrope,sans-serif;color:var(--navy);margin-top:11px;letter-spacing:-.03em}.metric-sub{font-size:9px;color:#98a5aa;margin-top:4px}.panel{padding:19px 20px;margin-bottom:16px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:15px}.panel-title{font:700 13px Manrope,sans-serif;color:var(--navy);margin:0}.panel-subtitle{font-size:10px;color:#9aa7aa;margin-top:4px}.legend{display:flex;gap:14px;align-items:center;color:#75868d;font-size:9px}.legend span{display:flex;gap:6px;align-items:center}.legend i{width:8px;height:8px;border-radius:3px;background:var(--teal)}.legend i.gold{background:#e4bd68}.chart-wrap{height:210px;position:relative}.chart-wrap svg{width:100%;height:100%;overflow:visible}.chart-grid{stroke:#e9eff0;stroke-width:1}.chart-label{fill:#98a6aa;font:9px 'DM Sans',sans-serif}.chart-bar-ca{fill:#188d8b}.chart-bar-benefit{fill:#e5bb63}.chart-negative{fill:#cc7772}.chart-zero{stroke:#ccd7db;stroke-width:1}.recap-bottom{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,.9fr);gap:16px}.annual-table{width:100%;border-collapse:collapse;font-size:10px}.annual-table th{text-align:left;color:#92a0a5;font-size:9px;font-weight:600;padding:8px 8px;border-bottom:1px solid var(--line)}.annual-table td{padding:9px 8px;border-bottom:1px solid #f0f3f4;color:#53666d}.annual-table td:not(:first-child),.annual-table th:not(:first-child){text-align:right}.annual-table tr:last-child td{font-weight:700;color:var(--navy);border-bottom:0}.annual-table .profit-positive{color:#258362}.annual-table .profit-negative{color:#b75e59}.dog-summary-list{display:grid;gap:10px}.dog-summary{border:1px solid var(--line);border-radius:10px;padding:12px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;align-items:center}.dog-avatar{width:38px;height:38px;border-radius:11px;background:#f5eddf;color:#9b783f;display:grid;place-items:center;font:700 13px Manrope,sans-serif;overflow:hidden}.dog-avatar img{width:100%;height:100%;object-fit:cover}.dog-summary:nth-child(2) .dog-avatar{background:#e7eff4;color:#4c7894}.dog-summary h3{margin:0 0 4px;font:700 11px Manrope,sans-serif;color:var(--navy)}.dog-summary p{margin:0;font-size:9px;color:#97a4a8}.dog-summary-total{font:700 12px Manrope,sans-serif;color:var(--navy);text-align:right}.dog-summary-total small{display:block;font:400 8px 'DM Sans',sans-serif;color:#94a1a6;margin-top:4px}.dog-page-grid{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,2fr);gap:16px;align-items:start}.dog-profile{padding:0;overflow:hidden}.dog-profile-top{height:98px;background:linear-gradient(130deg,#d8ece7,#f2ead9);position:relative}.profile-photo{width:90px;height:90px;border:4px solid white;border-radius:25px;background:#f7f4ed;position:absolute;left:20px;top:48px;display:grid;place-items:center;color:#b5a274;font-size:29px;overflow:hidden;box-shadow:0 3px 12px #17324d12}.profile-photo img{width:100%;height:100%;object-fit:cover}.photo-action{position:absolute;right:13px;top:12px;background:#ffffffd9;color:#526b70;border:1px solid #ffffff;border-radius:8px;padding:7px 9px;font-size:9px;cursor:pointer}.profile-body{padding:49px 18px 17px}.profile-body h2{font:700 19px Manrope,sans-serif;color:var(--navy);margin:0}.profile-meta{font-size:10px;color:#98a5aa;margin-top:4px}.profile-stats{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);margin-top:17px;padding-top:13px;gap:8px}.profile-stat small{display:block;color:#95a2a6;font-size:9px}.profile-stat strong{display:block;color:var(--navy);font:700 12px Manrope,sans-serif;margin-top:5px}.input-grid{display:grid;grid-template-columns:1fr 1fr;gap:11px}.field label{display:block;color:#849399;font-size:9px;margin-bottom:6px}.field input,.expense-input,.litter-input{width:100%;border:1px solid #dfe7e9;background:#fcfdfd;border-radius:8px;padding:9px 10px;color:#334950;font:500 11px 'DM Sans',sans-serif;outline:none}.field input:focus,.expense-input:focus,.litter-input:focus{border-color:#68aaa3;box-shadow:0 0 0 3px #e7f4f1}.field .suffix{position:relative}.field .suffix input{padding-right:36px}.field .suffix span{position:absolute;right:10px;top:10px;font-size:10px;color:#8b999c}.section-divider{height:1px;background:var(--line);margin:15px 0}.table-scroll{overflow:auto}.data-table{width:100%;border-collapse:collapse;min-width:670px}.data-table th{text-align:left;color:#8b999d;font-size:9px;font-weight:600;padding:9px 7px;border-bottom:1px solid var(--line)}.data-table td{padding:8px 7px;border-bottom:1px solid #eff2f3;vertical-align:middle}.data-table .num{text-align:right}.data-table .strong-row td{font-weight:700;color:var(--navy);background:#f5f9f8}.status-switch{display:flex;align-items:center;gap:6px;white-space:nowrap;color:#7a898e;font-size:9px}.status-switch input{accent-color:var(--teal)}.year-cell{font-weight:700;color:var(--navy);font-size:10px}.litter-no{color:#aa8742;font-weight:600}.calculated{color:#526a70;font-variant-numeric:tabular-nums}.profit-cell{font-weight:700;font-variant-numeric:tabular-nums}.inline-help{font-size:9px;color:#95a2a7;line-height:1.5;margin:11px 0 0}.button{border:0;border-radius:8px;background:var(--teal);color:white;padding:9px 12px;font:600 10px 'DM Sans',sans-serif;cursor:pointer}.button:hover{background:var(--teal-dark)}.button.secondary{background:#edf4f3;color:#376d6c}.button.secondary:hover{background:#e2eeec}.button.small{padding:7px 10px}.actions-row{display:flex;justify-content:space-between;align-items:center;margin-top:12px;gap:12px}.sum-box{background:#f0f7f5;border:1px solid #e0efeb;border-radius:9px;padding:10px 12px;display:flex;justify-content:space-between;color:#648078;font-size:10px;margin-top:12px}.sum-box strong{color:var(--navy);font:700 12px Manrope,sans-serif}.input-hint{font-size:9px;color:#93a1a5;margin-top:6px}.settings-layout{max-width:700px}.settings-note{background:#eff6f4;color:#5e7774;padding:12px 14px;border-radius:9px;font-size:10px;line-height:1.6}.loading-state,.empty-state{color:#819197;padding:24px;text-align:center;font-size:12px}.toast{position:fixed;right:20px;bottom:20px;background:#17324d;color:#fff;padding:11px 16px;border-radius:9px;font-size:11px;box-shadow:0 7px 24px #17324d33;opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:10}.toast.show{opacity:1;transform:translateY(0)}.toast.error{background:#a94444}.file-input{display:none}.mobile-menu{display:none}@media(max-width:1050px){.main-content{padding:27px 24px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dog-page-grid{grid-template-columns:250px minmax(0,1fr)}.recap-bottom{grid-template-columns:1fr}}@media(max-width:740px){.topbar{height:62px;padding:0 15px}.brand-mark{width:33px;height:33px}.topbar-right #connection-label{display:none}.app-shell{display:block;min-height:calc(100vh - 62px)}.sidebar{position:sticky;top:62px;z-index:3;display:flex;align-items:center;gap:4px;padding:8px 10px;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto}.nav-caption,.sidebar-note,.sidebar-bottom{display:none}.nav-item{width:auto;white-space:nowrap;margin:0;padding:8px 10px;font-size:10px}.nav-icon{display:none}.dog-dot{width:19px;height:19px}.main-content{padding:23px 14px 42px}.page-heading{align-items:flex-start;flex-direction:column;margin-bottom:18px}.page-heading h1{font-size:22px}.year-pill{font-size:10px}.metrics{gap:9px}.metric-card{padding:12px}.metric-value{font-size:18px}.metric-top{font-size:9px}.panel{padding:14px;margin-bottom:12px}.panel-head{flex-direction:column}.legend{gap:10px}.chart-wrap{height:175px}.dog-page-grid{grid-template-columns:1fr}.profile-photo{width:78px;height:78px;top:48px}.profile-body{padding-top:43px}.input-grid{gap:9px}.data-table{min-width:700px}.annual-table{min-width:560px}.panel.table-panel{overflow:hidden}.table-panel .table-scroll{margin:0 -5px}.summary-table-wrap{overflow:auto}.dog-summary{grid-template-columns:34px minmax(0,1fr) auto}.dog-avatar{width:34px;height:34px}.status-switch{font-size:8px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Pleine largeur et saisie des portées dans une fenêtre modale. */
body .app-shell{width:100%;max-width:none}
.litter-summary{min-width:790px}.litter-summary th,.litter-summary td{white-space:nowrap}.litter-summary td:nth-child(2){white-space:normal;min-width:150px}.row-action{text-align:right}.muted-status{font-size:9px;color:#98a5aa}
.litter-dialog{width:min(620px,calc(100vw - 28px));max-height:calc(100vh - 32px);padding:0;border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 70px #17324d40;color:#263943}.litter-dialog::backdrop{background:#142d3dcc;backdrop-filter:blur(2px)}.litter-dialog form{padding:22px}.modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.modal-head h2{font:700 20px Manrope,sans-serif;color:var(--navy);margin:6px 0 0}.modal-close{margin:0;font-size:21px}.modal-toggle{display:flex;align-items:center;gap:8px;margin:0 0 17px;color:#526970;font-size:12px}.modal-toggle input{accent-color:var(--teal)}.modal-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.modal-fields input{width:100%;border:1px solid #dfe7e9;background:#fcfdfd;border-radius:8px;padding:10px;color:#334950;font:500 12px 'DM Sans',sans-serif}.modal-fields input:focus{outline:none;border-color:#68aaa3;box-shadow:0 0 0 3px #e7f4f1}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:15px;border-top:1px solid var(--line)}
@media(max-width:740px){.modal-fields{grid-template-columns:1fr}.litter-dialog form{padding:17px}.litter-summary{min-width:790px}}
/* Suppression des postes de frais. */
.expense-delete{align-self:end;width:36px;height:36px;border:1px solid #f0dada;border-radius:9px;background:#fff7f7;color:#b75e59;cursor:pointer;font-size:15px;transition:.15s}.expense-delete:hover{background:#fbe8e7;border-color:#e5b8b5;transform:translateY(-1px)}
@media(max-width:740px){.expense-delete{width:34px;height:34px}}
/* Authentification et masquage explicite des vues protégées. */
.app-shell[hidden],.auth-gate[hidden],[hidden]{display:none!important}.auth-gate{min-height:calc(100vh - 70px);display:grid;place-items:center;padding:28px 16px;background:#f5f7f8}.auth-card{width:min(100%,440px);padding:32px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}.auth-card>.brand-mark{margin-bottom:22px}.auth-card h1{font:700 25px Manrope,sans-serif;color:var(--navy);margin:8px 0}.auth-card>p{font-size:12px;line-height:1.6;color:var(--muted);margin:0 0 22px}.auth-form{display:grid;gap:15px}.auth-form .field input{width:100%;border:1px solid #dfe7e9;background:#fcfdfd;border-radius:8px;padding:11px 12px;color:#334950;font:500 13px 'DM Sans',sans-serif}.auth-form .field input:focus{outline:none;border-color:#68aaa3;box-shadow:0 0 0 3px #e7f4f1}.auth-submit{width:100%;padding:12px;font-size:12px}.auth-submit:disabled{opacity:.65;cursor:wait}.auth-error{min-height:16px;margin:0;color:#b14848;font-size:11px}.auth-footnote{margin:18px 0 0!important;padding-top:15px;border-top:1px solid var(--line);font-size:10px!important}
@media(max-width:740px){.auth-gate{min-height:calc(100vh - 62px)}.auth-card{padding:25px 20px}}
/* Password change panel. */
.password-panel{max-width:700px}.password-form{display:grid;gap:13px}.password-form .field input{width:100%;border:1px solid #dfe7e9;background:#fcfdfd;border-radius:8px;padding:10px;color:#334950;font:500 12px 'DM Sans',sans-serif}.password-form .field input:focus{outline:none;border-color:#68aaa3;box-shadow:0 0 0 3px #e7f4f1}.password-form .actions-row{margin-top:2px}
