:root{--bg: #f2f5fa;--surface: #ffffff;--surface-2: #e6ecf4;--ink: #1b2330;--muted: #7a8699;--line: #dde4ee;--blue: #1e3a5f;--blue-soft: #dfe7f1;--accent: #2f6fdb;--sage: #6f8f6a;--mustard: #d4a23c;--plum: #8a5a7a;--danger: #b4432e;--radius: 20px;--shadow: 0 1px 2px rgba(15, 30, 60, .04), 0 8px 24px rgba(15, 30, 60, .06);--font-display: "Fraunces", Georgia, serif;--font-body: "Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg)}body{margin:0;font-family:var(--font-body);color:var(--ink);font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}button{font-family:inherit;cursor:pointer}input,textarea{font-family:inherit}.app{min-height:100dvh;max-width:520px;margin:0 auto}.app-main{padding-bottom:calc(110px + env(safe-area-inset-bottom))}.page{padding:calc(20px + env(safe-area-inset-top)) 20px 24px;animation:fade .35s ease}@keyframes fade{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.page-header{margin:12px 0 24px}.eyebrow{margin:0 0 6px;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}h1{font-family:var(--font-display);font-weight:600;font-size:2.1rem;line-height:1.08;letter-spacing:-.02em;margin:0;color:var(--blue)}h2{margin:0}.section-title{font-family:var(--font-display);font-size:1.2rem;font-weight:600;margin:28px 0 12px}.muted{color:var(--muted);margin:2px 0 0;font-size:.88rem}.footnote{text-align:center;color:var(--muted);font-size:.78rem;margin-top:28px}.stack{display:flex;flex-direction:column;gap:16px}.meal-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.meal-chip{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px 10px;border:1px solid var(--line);background:var(--surface);border-radius:16px;color:var(--muted);font-size:.78rem;font-weight:600;transition:all .2s ease}.meal-chip.is-active{background:var(--blue);border-color:var(--blue);color:#fff;transform:translateY(-1px);box-shadow:0 6px 16px #1e3a5f40}.meal-chip:active{transform:scale(.97)}.photo-drop{position:relative;display:block;aspect-ratio:4 / 3;border-radius:var(--radius);overflow:hidden;cursor:pointer;background:radial-gradient(circle at 30% 20%,rgba(47,111,219,.1),transparent 55%),radial-gradient(circle at 80% 90%,rgba(30,58,95,.1),transparent 55%),var(--surface);border:1.5px dashed #c3cfdf}.photo-drop.has-photo{border:none;box-shadow:var(--shadow)}.photo-drop img{width:100%;height:100%;object-fit:cover;display:block}.photo-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.photo-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;margin-bottom:10px;box-shadow:0 10px 24px #1e3a5f4d}.photo-empty strong{font-size:1rem}.photo-empty small{color:var(--muted);font-size:.85rem}.photo-change{position:absolute;right:12px;bottom:12px;background:#14192399;color:#fff;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px 12px;border-radius:999px;font-size:.8rem;font-weight:600}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.82rem;font-weight:600;color:var(--muted);padding-left:4px}textarea{width:100%;border:1px solid var(--line);background:var(--surface);border-radius:16px;padding:14px 16px;font-size:1rem;color:var(--ink);resize:none;outline:none;transition:border-color .2s,box-shadow .2s}textarea:focus{border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft)}textarea::placeholder{color:#a3aebf}.disclosure{background:var(--surface);border:1px solid var(--line);border-radius:16px;overflow:hidden}.disclosure-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:none;border:none;color:var(--ink);font-size:.95rem;font-weight:600}.disclosure-meta{display:flex;align-items:center;gap:6px;color:var(--muted);font-weight:500;font-size:.82rem}.disclosure-meta svg{transition:transform .25s}.disclosure.is-open .disclosure-meta svg{transform:rotate(45deg)}.macro-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:0 12px 12px}.macro-input{background:var(--bg);border-radius:12px;padding:8px 12px;display:flex;flex-direction:column}.macro-input:first-child{grid-column:span 2}.macro-input>span{font-size:.72rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.macro-input div{display:flex;align-items:baseline;gap:4px}.macro-input input{width:100%;border:none;background:none;outline:none;font-family:var(--font-display);font-size:1.35rem;font-weight:600;color:var(--ink);padding:2px 0}.macro-input input::placeholder{color:#bfcadb}.macro-input em{font-style:normal;color:var(--muted);font-size:.82rem}.btn-primary{width:100%;border:none;border-radius:999px;padding:17px;background:var(--accent);color:#fff;font-size:1rem;font-weight:700;box-shadow:0 10px 24px #2f6fdb4d;transition:transform .15s,opacity .2s,box-shadow .2s}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.4;box-shadow:none}.icon-btn{align-self:flex-start;border:none;background:none;color:#a9b4c4;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;margin:-4px -6px 0 0}.icon-btn:active{background:var(--surface-2);color:var(--danger)}.alert{margin:0;padding:12px 14px;border-radius:14px;font-size:.88rem}.alert-error{background:#f7e1da;color:var(--danger)}.alert-ok{background:#e3ecdf;color:#3f6339}.alert-info{background:var(--blue-soft);color:var(--blue)}.toast{position:fixed;left:50%;bottom:calc(100px + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:8px;background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px;font-weight:600;font-size:.9rem;box-shadow:0 12px 30px #0003;animation:toast .35s cubic-bezier(.2,.9,.3,1.2);z-index:20}.toast svg{color:#9fd49a}@keyframes toast{0%{opacity:0;transform:translate(-50%,16px)}}.day{margin-bottom:26px}.day-head{display:flex;justify-content:space-between;align-items:baseline;margin:0 4px 10px}.day-head h2{font-family:var(--font-display);font-size:1.15rem;font-weight:600;text-transform:capitalize}.day-total{font-size:.82rem;font-weight:600;color:var(--muted)}.entries{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.entry{display:flex;gap:14px;background:var(--surface);padding:10px;border-radius:var(--radius);box-shadow:var(--shadow)}.entry-photo{width:76px;height:76px;border-radius:14px;object-fit:cover;flex-shrink:0}.entry-photo-empty{display:grid;place-items:center;background:var(--surface-2);color:var(--muted)}.entry-body{flex:1;min-width:0;padding-top:2px}.entry-top{display:flex;align-items:center;gap:8px}.entry-top time{font-size:.8rem;color:var(--muted);font-variant-numeric:tabular-nums}.entry-note{margin:6px 0 0;font-size:.92rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.entry-macros{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}.entry-macros span{font-size:.72rem;font-weight:600;background:var(--bg);color:#55627a;padding:3px 8px;border-radius:999px}.entry-foods{margin:4px 0 0;font-size:.82rem;color:#55627a}.week-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--surface);border-radius:999px;padding:4px;box-shadow:var(--shadow);margin-bottom:12px}.week-nav strong{font-size:.92rem;text-align:center}.week-arrow{margin:0;align-self:center;color:var(--blue)}.week-arrow:disabled{opacity:.3;cursor:default}.week-kpis{margin-bottom:18px}.week-kpis .kpi:before{background:var(--blue)}.week-table-wrap{display:none}.week-list{display:flex;flex-direction:column;gap:10px}.week-day{background:var(--surface);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow)}.week-day.is-today{box-shadow:0 0 0 2px var(--accent),var(--shadow)}.week-day .day-head{margin:0}.week-day-meals{display:flex;flex-direction:column;gap:10px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.week-day-meal{display:grid;grid-template-columns:88px 1fr;gap:10px;align-items:start}.week-day-meal .tag{justify-self:start}.week-entry+.week-entry{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.week-thumb{width:100%;max-width:140px;aspect-ratio:4 / 3;object-fit:cover;border-radius:10px;display:block;margin-bottom:6px}.week-foods{list-style:none;margin:0;padding:0;font-size:.84rem}.week-foods li{display:flex;justify-content:space-between;gap:6px;line-height:1.35}.week-foods small{color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0}.week-note{margin:0;font-size:.84rem;color:#55627a}.week-entry-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:4px;font-size:.8rem}.week-entry-foot b{color:var(--blue)}.week-badge{font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:999px;background:#f6ecd6;color:#8a6a1f}.week-badge-ai{background:var(--blue-soft);color:var(--blue)}.week-empty{color:#c3cfdf}.tag{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:3px 9px;border-radius:999px}.tag-matin{background:#e5e9fb;color:#3d4db3}.tag-midi{background:#dbeefa;color:#1f6391}.tag-soir{background:var(--blue-soft);color:var(--blue)}.tag-collation{background:#e3ecdf;color:#4b6a45}.empty{text-align:center;padding:48px 24px;background:var(--surface);border-radius:var(--radius);border:1.5px dashed var(--line)}.empty strong{font-family:var(--font-display);font-size:1.2rem}.empty p{color:var(--muted);margin:6px 0 0}.skeleton-list{display:flex;flex-direction:column;gap:10px}.skeleton-list div{height:96px;border-radius:var(--radius);background:linear-gradient(90deg,var(--surface-2),var(--surface),var(--surface-2));background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.hero-stat{display:flex;justify-content:space-between;align-items:flex-end;background:var(--blue);color:#fff;border-radius:24px;padding:22px;margin-bottom:10px;background-image:radial-gradient(circle at 100% 0%,rgba(255,255,255,.14),transparent 50%)}.hero-value{font-family:var(--font-display);font-size:3.2rem;font-weight:600;line-height:1;letter-spacing:-.03em;display:block}.hero-unit{font-size:.85rem;opacity:.75}.hero-side{font-size:.82rem;font-weight:600;background:#ffffff26;padding:5px 11px;border-radius:999px}.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:10px}.kpi{background:var(--surface);border-radius:18px;padding:14px 16px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:3px;border-radius:0 3px 3px 0}.kpi-protein:before{background:var(--accent)}.kpi-carbs:before{background:var(--mustard)}.kpi-fat:before{background:var(--sage)}.kpi-salt:before{background:var(--plum)}.kpi span{font-size:.75rem;font-weight:600;color:var(--muted);display:block}.kpi strong{font-family:var(--font-display);font-size:1.6rem;font-weight:600}.kpi small{font-family:var(--font-body);font-size:.8rem;color:var(--muted);margin-left:2px;font-weight:500}.card{background:var(--surface);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);margin-bottom:12px;display:flex;flex-direction:column;gap:14px}.card-title{font-size:.98rem;font-weight:700}.card-head{display:flex;gap:14px;align-items:flex-start}.card-icon{width:42px;height:42px;flex-shrink:0;border-radius:12px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center}.period-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0 10px}.split-bar{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--surface-2)}.split-bar span{display:block;height:100%}.split-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:.82rem;color:var(--muted)}.split-legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.split-legend b{color:var(--ink)}.month-list{list-style:none;margin:0;padding:0;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.month-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line)}.month-row:last-child{border-bottom:none}.month-row strong{display:block;text-transform:capitalize;font-size:.95rem}.month-row small{color:var(--muted);font-size:.8rem}.month-values{text-align:right;display:flex;flex-direction:column;font-size:.78rem;color:var(--muted)}.month-values b{font-family:var(--font-display);font-size:1.1rem;color:var(--ink);font-weight:600}.times{display:flex;gap:8px}.times span{flex:1;text-align:center;background:var(--bg);border-radius:12px;padding:10px 0;font-family:var(--font-display);font-weight:600;font-size:1.1rem;color:var(--blue)}.row{display:flex;justify-content:space-between;align-items:center}.pill{font-size:.78rem;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--surface-2);color:var(--muted)}.pill-granted{background:#e3ecdf;color:#3f6339}.pill-denied{background:#f7e1da;color:var(--danger)}.login-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(circle at 20% 10%,rgba(47,111,219,.12),transparent 55%),radial-gradient(circle at 85% 90%,rgba(30,58,95,.14),transparent 55%),var(--bg)}.login-card{width:100%;max-width:360px;background:var(--surface);border-radius:24px;padding:32px 26px;box-shadow:var(--shadow);text-align:center}.login-icon{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;background:var(--blue);color:#fff;margin:0 auto 16px;box-shadow:0 10px 24px #1e3a5f4d}.login-card h1{font-size:1.7rem;margin-bottom:6px}.login-card .muted{margin-bottom:22px}.login-card form{text-align:left}.login-input{width:100%;border:1px solid var(--line);background:var(--bg);border-radius:14px;padding:13px 16px;font-size:1rem;color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s}.login-input:focus{border-color:var(--blue);box-shadow:0 0 0 4px var(--blue-soft);background:var(--surface)}.tabbar{position:fixed;left:50%;transform:translate(-50%);bottom:calc(14px + env(safe-area-inset-bottom));width:calc(100% - 32px);max-width:440px;display:flex;padding:6px;background:#ffffffd1;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);border:1px solid rgba(221,228,238,.9);border-radius:999px;box-shadow:0 12px 32px #0f1e3c1f;z-index:10}.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px 6px;border-radius:999px;text-decoration:none;color:var(--muted);font-size:.68rem;font-weight:600;transition:background .2s,color .2s}.tab.active{background:var(--blue);color:#fff}.brand{display:none}@media (min-width: 1024px){.app{max-width:none;display:grid;grid-template-columns:240px 1fr}.app-main{grid-column:2;grid-row:1;padding-bottom:0;min-width:0}.page{max-width:640px;margin:0 auto;padding:40px 40px 56px}.page-wide{max-width:1200px}.tabbar{grid-column:1;grid-row:1;position:sticky;top:0;left:auto;bottom:auto;transform:none;width:auto;max-width:none;height:100dvh;flex-direction:column;gap:4px;padding:28px 16px;background:var(--surface);backdrop-filter:none;-webkit-backdrop-filter:none;border:none;border-right:1px solid var(--line);border-radius:0;box-shadow:none}.brand{display:block;font-family:var(--font-display);font-size:1.5rem;font-weight:600;color:var(--blue);padding:0 14px 24px}.tab{flex:none;flex-direction:row;gap:12px;padding:11px 14px;border-radius:12px;font-size:.92rem}.tab:hover:not(.active){background:var(--bg);color:var(--ink)}.stats-top{display:grid;grid-template-columns:1fr 1.4fr;gap:12px;align-items:stretch}.stats-top .hero-stat,.stats-top .kpis{margin-bottom:0}.stats-top .kpis{grid-template-columns:repeat(4,1fr)}.period-picker{max-width:380px}.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stats-grid .card{margin-bottom:0}.card-span{grid-column:1 / -1}.week-list{display:none}.week-table-wrap{display:block;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.week-kpis{grid-template-columns:repeat(4,1fr)}.week-nav{max-width:420px}.week-table{width:100%;border-collapse:collapse;table-layout:fixed}.week-table th,.week-table td{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left}.week-table thead th{font-size:.75rem;color:var(--muted);font-weight:600;text-transform:capitalize}.week-table thead th b{display:block;font-family:var(--font-display);font-size:1.3rem;color:var(--ink)}.week-table th:first-child{width:104px}.week-table tfoot td,.week-table tfoot th{border-bottom:none;font-weight:700;color:var(--blue);font-size:.9rem}.week-table .is-today{background:#f5f8fd}.week-table thead .is-today b{color:var(--accent)}}
