@import "https://fonts.googleapis.com/css2?family=Source+Sans+3:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";*,:before,:after{box-sizing:border-box;margin:0}:root{--bg:#f5f3ee;--surface:#fff;--border:#e2ddd2;--text:#2c2a25;--text-muted:#75705f;--primary:#2f6f4e;--primary-hover:#275e42;--danger:#b3402e;--warning-bg:#fdf3e0;--warning-border:#e8c98a;--radius:12px;--bg-sunken:#efece4;--surface-hover:#faf9f5;--border-strong:#d3ccbc;--text-disabled:#a7a294;--primary-active:#204f38;--primary-soft:#e6efe9;--primary-border:#bcd4c6;--danger-hover:#983525;--danger-soft:#fbe9e4;--danger-border:#e6bcae;--warning:#a9741f;--success:#2f6f4e;--success-bg:#e6efe9;--success-border:#bcd4c6;--info:#3c6083;--info-bg:#eaf0f6;--info-border:#bcccdd;--neutral-bg:#efece4;--neutral-border:#ddd7c9;--matin-bg:#fbeccf;--matin-text:#96631a;--midi-bg:#dcecdd;--midi-text:#2f6f4e;--gouter-bg:#f7e0d4;--gouter-text:#a9532f;--soir-bg:#e3e2ef;--soir-text:#4b4a80;--cat-pediatrie-bg:#f4e2ec;--cat-pediatrie-text:#8a3f65;--cat-eg-bg:#e6efe9;--cat-eg-text:#2f6f4e;--cat-fibre-bg:#eee7d6;--cat-fibre-text:#806326;--cat-cno-bg:#fbeccf;--cat-cno-text:#96631a;--cat-enrichissement-bg:#e3e2ef;--cat-enrichissement-text:#4b4a80;--cat-cereales-bg:#f7e0d4;--cat-cereales-text:#a9532f;--cat-sirop-bg:#ddebf2;--cat-sirop-text:#33647e;--radius-sm:10px;--radius-md:12px;--radius-lg:18px;--radius-pill:999px;--shadow-xs:0 1px 2px #2c2a250d;--shadow-sm:0 1px 3px #2c2a2512, 0 1px 2px #2c2a250a;--shadow-md:0 4px 12px #2c2a2514, 0 1px 3px #2c2a250d;--shadow-lg:0 10px 28px #2c2a251f, 0 3px 8px #2c2a250f;--tap:48px;--tap-lg:56px}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;min-height:100vh;font-family:Avenir Next,"Source Sans 3",Segoe UI,system-ui,sans-serif;font-size:16px;line-height:1.5}#app{flex-direction:column;min-height:100vh;display:flex}h1{letter-spacing:-.01em;margin-bottom:1rem;font-size:1.75rem;font-weight:700}h2{margin-bottom:.75rem;font-size:1.2rem;font-weight:600}a{color:var(--primary)}a:hover{color:var(--primary-hover)}.page{width:min(1120px,100%);margin:0 auto;padding:1.75rem 1.25rem 3rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);margin-bottom:1.5rem;padding:1.5rem}.btn{min-height:var(--tap);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-xs);justify-content:center;align-items:center;gap:.5rem;padding:0 1.15rem;font-family:inherit;font-size:1rem;font-weight:600;line-height:1;transition:background .12s,border-color .12s,box-shadow .12s,transform 60ms;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--text-muted);transform:translateY(-1px)}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px #2f6f4e47}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:#fff;background:var(--danger);border-color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-hover);border-color:var(--danger-hover)}.btn-danger.btn-sm,.btn-danger.btn-ghost{background:var(--surface);color:var(--danger);border-color:var(--danger-border)}.btn-danger.btn-sm:hover:not(:disabled),.btn-danger.btn-ghost:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-ghost{box-shadow:none;color:var(--primary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--primary-soft);border-color:#0000}.btn-sm{min-height:38px;padding:0 .75rem;font-size:.9rem}.btn-lg{min-height:var(--tap-lg);border-radius:var(--radius-md);padding:0 1.5rem;font-size:1.1rem}.btn-block{width:100%}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.95rem}th{text-align:left;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;background:var(--bg-sunken);border-bottom:1px solid var(--border);padding:.75rem;font-size:.75rem;font-weight:700}th:first-child{border-top-left-radius:var(--radius-sm)}th:last-child{border-top-right-radius:var(--radius-sm)}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:.85rem .75rem}td.num,.num{font-variant-numeric:tabular-nums}tr.editing td{background:var(--bg-sunken)}td.row-actions{white-space:nowrap}td.row-actions .btn+.btn{margin-left:.4rem}.field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.field label{color:var(--text);font-size:.9rem;font-weight:600}input,select,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);min-height:var(--tap);padding:0 .85rem}textarea{min-height:96px;padding:.6rem .85rem;line-height:1.5}input:focus,select:focus,textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 3px #2f6f4e47}input.qty{text-align:center;font-variant-numeric:tabular-nums;width:6rem;font-weight:600}select{cursor:pointer}.form-row{flex-wrap:wrap;align-items:flex-end;gap:1rem;display:flex}.form-row .field{margin-bottom:0}.badge{border-radius:var(--radius-pill);background:var(--neutral-bg);border:1px solid var(--neutral-border);color:var(--text-muted);white-space:nowrap;align-items:center;gap:.35rem;padding:.25rem .7rem;font-size:.78rem;font-weight:600;display:inline-flex}.badge.ok,.badge.valide,.badge.actif{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.badge.pending,.badge.a-valider{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.badge.info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.badge.matin{background:var(--matin-bg);color:var(--matin-text);border-color:#0000}.badge.midi{background:var(--midi-bg);color:var(--midi-text);border-color:#0000}.badge.gouter{background:var(--gouter-bg);color:var(--gouter-text);border-color:#0000}.badge.soir{background:var(--soir-bg);color:var(--soir-text);border-color:#0000}.badge.cat-pediatrie{background:var(--cat-pediatrie-bg);color:var(--cat-pediatrie-text);border-color:#0000}.badge.cat-eg{background:var(--cat-eg-bg);color:var(--cat-eg-text);border-color:#0000}.badge.cat-fibre{background:var(--cat-fibre-bg);color:var(--cat-fibre-text);border-color:#0000}.badge.cat-cno{background:var(--cat-cno-bg);color:var(--cat-cno-text);border-color:#0000}.badge.cat-enrichissement{background:var(--cat-enrichissement-bg);color:var(--cat-enrichissement-text);border-color:#0000}.badge.cat-cereales{background:var(--cat-cereales-bg);color:var(--cat-cereales-text);border-color:#0000}.badge.cat-sirop{background:var(--cat-sirop-bg);color:var(--cat-sirop-text);border-color:#0000}.alert{border-radius:var(--radius-md);gap:.65rem;margin-bottom:1.25rem;padding:.85rem 1.05rem;font-size:.95rem;line-height:1.5;display:flex}.alert.error{background:var(--danger-soft);border:1px solid var(--danger-border);color:var(--danger)}.alert.warning{background:var(--warning-bg);border:1px solid var(--warning-border);color:var(--warning)}.alert.success{background:var(--success-bg);border:1px solid var(--success-border);color:var(--success)}.alert.info{background:var(--info-bg);border:1px solid var(--info-border);color:var(--info)}.muted{color:var(--text-muted);font-size:.9rem}.tiles{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1.25rem;display:grid}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);color:var(--text);padding:1.75rem 1.5rem;text-decoration:none;transition:box-shadow .14s,transform .14s,border-color .14s;display:block}.tile:hover{border-color:var(--primary);box-shadow:var(--shadow-lg);transform:translateY(-2px)}.tile .tile-icon{margin-bottom:.65rem;font-size:1.9rem;display:block}.tile strong{margin-bottom:.35rem;font-size:1.2rem;display:block}.topbar{background:var(--surface);border-bottom:1px solid var(--border)}.topbar-inner{align-items:center;gap:1.5rem;width:min(1120px,100%);margin:0 auto;padding:.5rem 1.25rem;display:flex}.brand{color:var(--text);font-size:1.15rem;font-weight:700;text-decoration:none}.topbar nav{flex-wrap:wrap;flex:1;gap:.35rem;display:flex}.topbar nav a{border-radius:var(--radius-sm);min-height:44px;color:var(--text-muted);align-items:center;padding:0 .85rem;font-size:.95rem;font-weight:500;text-decoration:none;display:inline-flex}.topbar nav a:hover{background:var(--surface-hover);color:var(--text)}.topbar nav a.router-link-active{color:var(--primary);background:var(--primary-soft);font-weight:700}.steps{flex-wrap:wrap;gap:.6rem;margin-bottom:1.5rem;display:flex}.step{border-radius:var(--radius-pill);border:1.5px solid var(--border-strong);color:var(--text-muted);background:var(--surface);padding:.4rem .95rem;font-size:.9rem}.step.active{border-color:var(--primary);color:var(--primary);background:var(--primary-soft);font-weight:600}.step.done{background:var(--success-bg);border-color:var(--success-border);color:var(--success)}.toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.toolbar .spacer{flex:1}.stepper{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);align-items:center;display:inline-flex;overflow:hidden}.stepper .qty,.stepper input{border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);box-shadow:none;border-radius:0}.stepper-btn{width:var(--tap);min-height:var(--tap);color:var(--primary);cursor:pointer;background:0 0;border:none;font-size:1.4rem;line-height:1}.stepper-btn:hover:not(:disabled){background:var(--primary-soft)}.stepper-btn:disabled{color:var(--text-disabled);cursor:not-allowed}.freshness{border-radius:var(--radius-pill);background:var(--success-bg);border:1px solid var(--success-border);min-height:34px;color:var(--success);align-items:center;gap:.4rem;padding:0 .85rem;font-size:.9rem;font-weight:600;display:inline-flex}.freshness.stale{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.skeleton{background:linear-gradient(90deg, var(--bg-sunken) 25%, #e7e2d6 37%, var(--bg-sunken) 63%);border-radius:var(--radius-sm);background-size:400% 100%;animation:1.4s infinite ns-shimmer}@keyframes ns-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.empty{text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:.75rem;padding:3rem 1.5rem;display:flex}
