:root{--bg: #e5ede3;--surface: #ffffff;--surface-soft: #f1f5f0;--highlight: #cde7bf;--primary: #347f08;--primary-bar: #4ca312;--ink: #161616;--ink-muted: #535f53;--leftover-bg: #ffe6d5;--leftover-fg: #9a3f12;--info-bg: #d9eaf8;--info-fg: #1e5486;--danger: #b3261e;--line: #dde6db;--radius-card: 28px;--radius-cell: 22px;--radius-pill: 999px}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Red Hat Display,system-ui,sans-serif;font-size:15px;line-height:1.4}h1,h2,h3{margin:0;font-weight:600}a{color:var(--primary)}.page-header{margin-bottom:20px}.page-header h1{font-size:34px;line-height:40px;letter-spacing:-.8px}.page-header p{margin:4px 0 0;color:var(--ink-muted)}.card{background:var(--surface);border-radius:var(--radius-card);padding:20px}.card h2{font-size:18px;margin-bottom:14px}.grid{display:grid;gap:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border:0;border-radius:var(--radius-pill);background:var(--primary);color:#fff;font:inherit;font-weight:600;cursor:pointer}.btn:hover:not(:disabled){filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.dark{background:var(--ink)}.btn.ghost{background:var(--surface-soft);color:var(--ink)}.btn.danger{background:transparent;color:var(--danger)}.btn.small{min-height:36px;padding:0 14px;font-size:14px}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field label{font-size:13px;color:var(--ink-muted)}.field input,.field select,.field textarea{min-height:44px;padding:0 16px;border:1px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font:inherit;width:100%}.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--primary);outline-offset:1px}.field textarea{padding:12px 16px;border-radius:var(--radius-cell);resize:vertical}.search{display:flex;align-items:center;gap:10px;min-height:48px;padding:0 18px;background:var(--surface);border-radius:var(--radius-pill);border:1px solid var(--line)}.search input{flex:1;border:0;outline:0;background:transparent;font:inherit;min-height:44px}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse;min-width:520px}table.table th{text-align:left;font-weight:500;font-size:13px;color:var(--ink-muted);padding:10px 12px;border-bottom:1px solid var(--line)}table.table td{padding:12px;border-bottom:1px solid var(--surface-soft);vertical-align:middle}table.table tr.clickable{cursor:pointer}table.table tr.clickable:hover td,table.table tr.clickable.selected td{background:var(--surface-soft)}table.table td.actions{text-align:right;white-space:nowrap}.badge{display:inline-block;padding:3px 12px;border-radius:var(--radius-pill);font-size:13px;font-weight:500;background:var(--info-bg);color:var(--info-fg)}.badge.leftover{background:var(--leftover-bg);color:var(--leftover-fg)}.badge.soft{background:var(--surface-soft);color:var(--ink)}.error{padding:12px 16px;border-radius:var(--radius-cell);background:#fde8e6;color:var(--danger);margin-bottom:14px}.empty{padding:28px 12px;text-align:center;color:var(--ink-muted)}.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;color:var(--ink-muted)}.row-actions{display:flex;gap:8px;flex-wrap:wrap}a.btn{text-decoration:none}:root{--ease-out: cubic-bezier(.22, 1, .36, 1)}@keyframes rise-in{0%{opacity:0;transform:translateY(14px)}}@keyframes pop-in{0%{opacity:0;transform:scale(.94)}}router-outlet+*{display:block;animation:rise-in .42s var(--ease-out) both}.card,.meal,.empty-cell,.btn,.day-chip{transition:transform .2s var(--ease-out),box-shadow .2s ease,background-color .2s ease,border-color .2s ease,filter .2s ease}.card:hover,.meal:hover{transform:translateY(-2px);box-shadow:0 10px 26px #1616161a}.btn:active:not(:disabled),.day-chip:active{transform:scale(.96)}.meal,.empty-cell{animation:rise-in .45s var(--ease-out) both}.meal:nth-child(2),.empty-cell:nth-child(2){animation-delay:.04s}.meal:nth-child(3),.empty-cell:nth-child(3){animation-delay:.08s}.meal:nth-child(4),.empty-cell:nth-child(4){animation-delay:.12s}.meal:nth-child(5),.empty-cell:nth-child(5){animation-delay:.16s}.meal:nth-child(6),.empty-cell:nth-child(6){animation-delay:.2s}.empty-cell:hover{transform:translateY(-2px);background:#ffffff8c}.day-chip.active{animation:pop-in .25s var(--ease-out)}.badge,.error{animation:pop-in .25s var(--ease-out) both}table.table tr td{transition:background-color .15s ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-delay:0s!important;transition-duration:.01ms!important}}body:has(dialog[open]){overflow:hidden}dialog.modal .field label{color:var(--ink);font-weight:600}dialog.modal .field input,dialog.modal .field select,dialog.modal .field textarea{background:var(--surface-soft);border:1.5px solid #a9bda5}dialog.modal .field input:hover,dialog.modal .field select:hover,dialog.modal .field textarea:hover{border-color:var(--primary-bar)}dialog.modal .field input:focus,dialog.modal .field select:focus,dialog.modal .field textarea:focus{background:var(--surface);border-color:var(--primary)}.field:has(:is(input,select,textarea):required)>label:after{content:" *";color:var(--danger)}form.vform{display:flex;flex-direction:column;gap:14px}form.show-invalid :is(input,select,textarea):invalid{border-color:var(--danger)!important;background:#fdf3f2!important}form.show-invalid .field:has(:is(input,select,textarea):invalid)>label{color:var(--danger)}.legal-body{line-height:1.55}.legal-body h2{margin:28px 0 8px;font-size:20px;letter-spacing:-.4px}.legal-body h3{margin:20px 0 6px;font-size:17px}.legal-body p{margin:0 0 12px}.legal-body ul,.legal-body ol{margin:0 0 12px;padding-left:22px}.legal-body li{margin-bottom:6px}.legal-body .muted{color:var(--ink-muted)}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-form h1{font-size:30px;letter-spacing:-.7px}.auth-form .muted{margin:-6px 0 0;color:var(--ink-muted)}.auth-form .ok{padding:12px 16px;border-radius:var(--radius-cell);background:var(--highlight);color:var(--primary)}.auth-form .error{margin:0}.auth-form .btn{min-height:50px;width:100%}.auth-form a.btn{text-decoration:none}.auth-form .links{display:flex;flex-direction:column;gap:8px;align-items:center;font-size:14px}.auth-form .links a,.auth-form .legal-note a{color:var(--primary);font-weight:600;text-underline-offset:3px}.auth-form .legal-note{margin:0;color:var(--ink-muted);font-size:13px;text-align:center}.auth-form .consents{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;border:0}.auth-form .consent{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.4;cursor:pointer}.auth-form .consent input{flex:0 0 auto;width:20px;height:20px;margin:1px 0 0;accent-color:var(--primary)}.auth-form .consent a{color:var(--primary);font-weight:600}.pw{position:relative}.pw input{padding-right:92px}.pw button{position:absolute;top:50%;right:6px;transform:translateY(-50%);min-height:34px;padding:0 12px;border:0;border-radius:var(--radius-pill);background:var(--surface-soft);color:var(--ink);font:inherit;font-size:13px;font-weight:600;cursor:pointer}form.show-invalid .consent:has(input:invalid){color:var(--danger)}form.show-invalid .consent:has(input:invalid) input{outline:2px solid var(--danger);outline-offset:1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
