:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color-scheme:light;--bg: #fafaf8;--surface: #fff;--surface-raised: #f0f1ed;--surface-inset: #fafaf8;--text: #20231f;--text-muted: #71766d;--subtle: #7e8479;--line: #e5e7df;--accent: #3d5443;--accent-soft: #edf1eb;--accent-text: #fff;--error: #a63b30;--warning: #825e2e;--shadow: 0 20px 80px #20231f1f;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text)}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;border:0;background:none;touch-action:manipulation}button:disabled{opacity:.4;cursor:not-allowed}input,select,textarea{width:100%;min-width:0;color:var(--text);background:var(--surface);border:1px solid #daddd3;border-radius:9px;min-height:48px;padding:12px;outline:none;font-size:16px}input:focus,select:focus,textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px #3d544314}textarea{resize:vertical;line-height:1.5}a{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:550;letter-spacing:-.035em}p{line-height:1.55}svg{flex:none;vertical-align:middle}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button,summary{-webkit-user-select:none;user-select:none}button{transition:background .15s,opacity .15s}button:hover:not(:disabled){background-color:var(--surface-raised)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.skip-link{position:fixed;top:-100px;left:12px;z-index:100;background:var(--accent);color:var(--accent-text);padding:12px}.skip-link:focus{top:12px}.muted{color:var(--text-muted)}.small{font-size:12px}.full{width:100%}.center{text-align:center}.eyebrow{font-size:12px;color:var(--text-muted)}.icon-button{width:44px;height:44px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex:none}.primary,.secondary,.danger{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:10px;padding:12px 16px;font-size:15px;font-weight:550;text-decoration:none}.primary{background:var(--accent);color:var(--accent-text)}.primary:hover:not(:disabled){background:#2f4435}.secondary{background:var(--surface);border:1px solid var(--line)}.danger{background:var(--error);color:#fff}.danger:hover:not(:disabled){background:#8c2e25}.danger-text{color:var(--error)}.text-button{min-height:44px;padding:10px 0;display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-muted)}.text-button:hover:not(:disabled){background:none;color:var(--text)}.network-banner,.update-banner{font-size:12px;background:#f3eadb;color:#6f5631;display:flex;align-items:center;justify-content:center;gap:10px;padding:10px max(16px,env(safe-area-inset-right));line-height:1.5}.update-banner{background:var(--accent-soft);color:var(--accent)}.update-banner button{display:inline-flex;align-items:center;gap:5px;min-height:32px;white-space:nowrap}.dashboard{max-width:560px;margin:auto;padding:max(42px,env(safe-area-inset-top)) 24px max(30px,env(safe-area-inset-bottom))}.dashboard-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.dashboard-header h1{font-size:30px;line-height:1.2}.header-date{margin-top:8px;color:var(--text-muted);font-size:13px}.logout-button{margin-right:-12px;color:var(--text-muted)}.day-nav{display:flex;align-items:center;justify-content:center;gap:2px;margin-top:23px}.day-nav .icon-button{color:var(--text-muted)}.date-control{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;color:var(--text-muted);min-height:44px;padding:0 12px;cursor:pointer;border-radius:9px}.date-control input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;width:100%;height:100%;cursor:pointer}.date-control:focus-within{outline:2px solid var(--accent);outline-offset:2px}.today-button{color:var(--accent);min-height:44px;font-size:12px;padding:0 9px;border-radius:9px}.daily-nutrition{padding:28px 0 34px}.daily-calories{display:flex;align-items:baseline;gap:10px}.daily-calories strong{font-size:clamp(56px,17vw,76px);letter-spacing:-.07em;line-height:1.06;font-weight:500;font-variant-numeric:tabular-nums}.daily-calories>span{font-size:17px;color:var(--text-muted)}.daily-macros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:30px 0 0}.daily-macros dt{font-size:12px;color:var(--text-muted)}.daily-macros dd{margin:9px 0 0;font-variant-numeric:tabular-nums}.daily-macros dd>strong{font-size:25px;font-weight:500;letter-spacing:-.045em}.daily-macros dd>span{font-size:12px;color:var(--text-muted)}.macro-incomplete{display:block;font-size:10px;color:var(--warning);margin-top:6px}.add-meal-button{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:54px;padding:14px;border-radius:11px;background:var(--accent);color:#fff;font-size:16px;font-weight:500}.add-meal-button:hover:not(:disabled){background:#2f4435}.meals-section{margin-top:25px}.meal-empty{color:var(--text-muted);font-size:13px;text-align:center;padding:17px 0 22px}.daily-meals{list-style:none;padding:0;margin:0}.daily-meals>li+li{border-top:1px solid var(--line)}.meal-open{width:100%;display:flex;align-items:center;gap:14px;padding:17px 0;text-align:left;min-height:79px}.meal-open:hover:not(:disabled){background:none}.meal-open:hover .meal-details strong{text-decoration:underline;text-underline-offset:3px}.meal-details{flex:1;min-width:0}.meal-details>strong{display:block;font-size:14px;font-weight:500;overflow-wrap:anywhere;line-height:1.45}.meal-details>small{display:block;font-size:11px;color:var(--text-muted);margin-top:6px}.meal-calories{font-size:15px;white-space:nowrap;font-variant-numeric:tabular-nums}.meal-calories>small{font-size:10px;color:var(--text-muted)}.meal-open>svg{color:var(--subtle)}.daily-weight{display:flex;width:100%;align-items:center;gap:14px;min-height:68px;padding:15px 0;margin-top:14px;border-top:1px solid var(--line);text-align:left}.daily-weight>span{flex:1;font-size:13px;color:var(--text-muted)}.daily-weight>strong{font-size:16px;font-weight:500;font-variant-numeric:tabular-nums}.daily-weight small{font-size:11px;font-weight:400;color:var(--text-muted)}.daily-weight>svg{color:var(--subtle)}.daily-weight:hover:not(:disabled){background:none}.daily-weight:hover>span{color:var(--text)}.app-footer{display:flex;justify-content:center;margin-top:39px}.export-link{display:inline-flex;align-items:center;gap:8px;min-height:44px;color:var(--text-muted);font-size:12px;text-decoration:none}.export-link:hover{color:var(--text);text-decoration:underline;text-underline-offset:4px}.app-loading{min-height:80dvh;display:flex;align-items:center;justify-content:center}.load-error{margin:25px 0}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:32px 24px}.login-card{width:100%;max-width:320px}.login-card h1{font-size:30px;margin-bottom:30px}.login-card form{display:flex;flex-direction:column;gap:20px}.login-card .primary{margin-top:5px}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;background:#20231f66;display:flex;align-items:center;justify-content:center;padding:24px;animation:fade .15s}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:18px;width:100%;max-width:480px;max-height:min(90dvh,900px);overflow-y:auto;overscroll-behavior:contain;box-shadow:var(--shadow);outline:none;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.sheet-wide{max-width:540px}.sheet-grab{display:none}.sheet-header{padding:22px 24px 0;display:flex;align-items:center;justify-content:space-between;gap:12px}.sheet-header h2{font-size:23px}.sheet-header .eyebrow{display:block;margin-bottom:7px;font-size:11px}.sheet-header .icon-button{color:var(--text-muted);margin-right:-10px}.sheet-content{padding:22px 24px 25px;display:flex;flex-direction:column;gap:18px}.sheet-content>p{font-size:13px}.sheet-content>.error,.sheet-content>.notice{margin:0}.sheet>.error{margin:16px 24px 0}.sheet-footer{border-top:1px solid var(--line);padding:18px 24px max(24px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:13px}.sheet-footer .error{margin:0}.field{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1;font-size:12px;color:var(--text-muted)}.field>span{line-height:1.4}.field small{font-size:11px;line-height:1.5;color:var(--text-muted)}.field input,.field textarea,.field select{font-weight:400}.form-row{display:flex;gap:12px;min-width:0}.form-row>.field{width:calc(50% - 6px)}.form-row.three{gap:10px}.form-row.three>.field{width:calc(33.333% - 7px)}.form-row.three input{padding-left:10px;padding-right:6px}.form-row.three .field>span{font-size:11px}.error{font-size:12px;line-height:1.6;color:var(--error);background:#fbefec;border-radius:9px;padding:12px;margin:12px 0;overflow-wrap:anywhere}.notice{font-size:12px;color:var(--warning);background:#faf3e8;border-radius:9px;padding:12px;line-height:1.6}.notice ul{margin:7px 0 0;padding-left:17px}.notice li+li{margin-top:5px}.quick-row{display:flex;gap:10px}.quick-row>*{flex:1;min-width:0}.loading{display:flex;align-items:center;justify-content:center;gap:9px;min-height:170px;font-size:13px;color:var(--text-muted)}.spin{animation:rotate 1s linear infinite}.toast{position:fixed;z-index:60;bottom:max(24px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);background:var(--text);color:#fff;border-radius:10px;padding:13px 17px;font-size:12px;max-width:calc(100% - 32px);width:max-content;line-height:1.5;animation:fade .2s}.empty{font-size:13px;text-align:center;color:var(--text-muted);padding:28px 12px}.back-button{min-height:44px;display:flex;align-items:center;gap:5px;margin:6px 24px -8px;font-size:12px;color:var(--text-muted);padding:5px 0}.back-button:hover:not(:disabled){background:none;color:var(--text)}.photo-preview{width:100%;max-height:280px;object-fit:cover;border-radius:10px}.privacy-note{display:flex;align-items:flex-start;gap:7px;font-size:11px!important;color:var(--text-muted);line-height:1.6}.food-item{display:flex;flex-direction:column;gap:17px;min-width:0;margin:0;padding:0;border:0;background:none}.food-item+.food-item{padding-top:20px;border-top:1px solid var(--line)}.item-head{display:flex;align-items:center;gap:8px;margin-bottom:-8px}.item-head>span{font-size:12px;color:var(--text-muted)}.item-head .icon-button{margin-left:auto;height:36px;width:36px;color:var(--text-muted)}.meal-total{display:flex;align-items:center;justify-content:space-between;gap:12px}.meal-total>span{font-size:12px;color:var(--text-muted)}.meal-total>strong{font-size:27px;font-weight:500;letter-spacing:-.035em}.meal-total>strong>small{font-size:13px;color:var(--text-muted);font-weight:400}.minimal-meal-editor .sheet-content>.text-button{align-self:flex-start}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media(min-width:700px){.dashboard{padding-top:70px}}@media(max-width:600px){.sheet-backdrop{align-items:flex-end;padding:0}.sheet{border-radius:18px 18px 0 0;max-height:94dvh;border-bottom:0}.sheet-grab{display:block;width:32px;height:4px;border-radius:4px;background:var(--line);margin:10px auto 0}.sheet-header{padding-top:12px}}@media(max-width:370px){.dashboard{padding-left:20px;padding-right:20px;padding-top:32px}.dashboard-header h1{font-size:27px}.header-date{font-size:12px}.daily-macros{gap:8px}.daily-macros dt{font-size:11px}.daily-macros dd>strong{font-size:23px}.daily-calories strong{font-size:62px}.meal-open{gap:10px}.meal-details>strong{font-size:13px}.sheet-content,.sheet-header,.sheet-footer{padding-left:20px;padding-right:20px}.form-row.three{gap:8px}.form-row.three .field>span{font-size:10px}.back-button{margin-left:20px;margin-right:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
