:root{--paper:#f3ede0;--card:#fffbf3;--ink:#161616;--muted:#3f3f3f;--line:#161616;--blue:#0a4f8f;--blue-2:#1d6fb8;--orange:#c24e00;--gold:#c9920e;--navy:#0d2137;--sky:#3d7eb3;--warn-bg:#fff1d6;--ok-bg:#dceaf7;--shadow:0 2px 0 #161616;--radius:14px;--tap:52px;--sans:system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace}*,:before,:after{box-sizing:border-box}html,body{background:var(--paper);min-height:100%;color:var(--ink);font-family:var(--sans);-webkit-text-size-adjust:100%;margin:0;font-size:18px;line-height:1.4}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}#root{min-height:100svh}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}.app{width:min(480px,100%);min-height:100svh;padding-bottom:calc(84px + env(safe-area-inset-bottom));margin:0 auto}.topbar{background:var(--navy);color:#fffbf3;border-bottom:3px solid var(--ink);padding:14px 16px 16px}.topbar-kicker{letter-spacing:.14em;text-transform:uppercase;color:#f0c14b;margin:0;font-size:12px;font-weight:700}.topbar h1{letter-spacing:-.03em;margin:2px 0 0;font-size:26px}.topbar p{color:#d7dde6;margin:4px 0 0;font-size:15px}.screen{flex-direction:column;gap:14px;padding:16px 14px 24px;display:flex}.card{background:var(--card);border:2px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px}.card h2{margin:0 0 6px;font-size:20px}.hint{color:var(--muted);margin:0 0 12px;font-size:15px}.row{align-items:stretch;gap:10px;display:flex}.row>*{flex:1}.field{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.field:last-child{margin-bottom:0}.field label{font-size:15px;font-weight:700}.field .unit{color:var(--muted);font-weight:500}.field input,.field textarea,.field select{min-height:var(--tap);border:2px solid var(--ink);background:#fff;border-radius:10px;width:100%;padding:10px 12px}.field textarea{resize:vertical;min-height:88px}.field input:focus,.field textarea:focus,.field select:focus{outline:3px solid var(--blue-2);outline-offset:1px}.field.needed input,.field.needed textarea{border-color:var(--orange);background:#fff6ec}.needed-label{color:var(--orange);font-weight:800}.warn{color:var(--navy);background:var(--warn-bg);border:2px dashed var(--orange);border-radius:8px;margin:0;padding:8px 10px;font-size:14px;font-weight:700}.btn{min-height:var(--tap);border:2px solid var(--ink);box-shadow:var(--shadow);border-radius:12px;padding:0 16px;font-weight:800}.btn:active{box-shadow:0 1px 0 var(--ink);transform:translateY(1px)}.btn-primary{background:var(--blue);color:#fff}.btn-secondary{background:var(--card)}.btn-orange{background:var(--orange);color:#fff}.btn-wide{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}.date-nav{align-items:center;gap:8px;display:flex}.date-nav button{width:var(--tap);height:var(--tap);border:2px solid var(--ink);background:var(--card);box-shadow:var(--shadow);flex:0 0 var(--tap);border-radius:12px;font-size:22px;font-weight:800}.date-nav .when{text-align:center;flex:1;font-size:18px;font-weight:800}.date-nav .sub{color:var(--muted);font-size:13px;font-weight:600;display:block}.status-row{flex-wrap:wrap;gap:8px;display:flex}.chip{border:2px solid var(--ink);border-radius:999px;align-items:center;gap:8px;min-height:40px;padding:6px 12px;font-size:14px;font-weight:800;display:inline-flex}.chip-ok{background:var(--ok-bg)}.chip-wait{background:var(--warn-bg)}.mark{flex:0 0 16px;width:16px;height:16px}.mark-circle{background:var(--blue);box-shadow:inset 0 0 0 2px var(--ink);border-radius:50%}.mark-diamond{background:var(--orange);width:12px;height:12px;box-shadow:inset 0 0 0 2px var(--ink);margin:2px;transform:rotate(45deg)}.progress{margin:10px 0}.progress-head{justify-content:space-between;gap:8px;margin-bottom:6px;font-size:15px;font-weight:700;display:flex}.track{border:2px solid var(--ink);background:#efe6d4;border-radius:6px;height:18px;position:relative;overflow:hidden}.fill{min-width:0;height:100%}.fill-protein{background:var(--blue)}.fill-fat{background:repeating-linear-gradient(135deg, var(--gold), var(--gold) 6px, #e8b84a 6px, #e8b84a 12px)}.fill-carbs{background:repeating-linear-gradient(90deg, var(--navy), var(--navy) 8px, #2a4a6b 8px, #2a4a6b 14px)}.fill-over{outline:2px solid var(--orange);outline-offset:-2px}.over-tag{color:var(--orange);font-size:13px;font-weight:800}.meal-list{flex-direction:column;gap:10px;display:flex}.meal-card{border:2px solid var(--ink);text-align:left;width:100%;box-shadow:var(--shadow);background:#fff;border-radius:12px;padding:12px}.meal-card strong{font-size:17px;display:block}.macros-line{font-variant-numeric:tabular-nums;margin:4px 0 0;font-size:15px}.kind-toggle{gap:8px;margin-bottom:12px;display:flex}.kind-toggle button{border:2px solid var(--ink);background:#fff;border-radius:10px;flex:1;min-height:48px;font-weight:800}.kind-toggle button[aria-pressed=true]{background:var(--blue);color:#fff}.nav{background:var(--card);border-top:3px solid var(--ink);width:min(480px,100%);padding-bottom:env(safe-area-inset-bottom);z-index:20;grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav button{background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:4px;min-height:72px;padding:8px 4px;font-size:12px;font-weight:800;display:flex}.nav button[aria-current=page]{background:var(--ok-bg)}.nav .badge{border:2px solid var(--ink);width:10px;height:10px}.nav .badge-wait{background:var(--orange);transform:rotate(45deg)}.nav .badge-ok{background:var(--blue);border-radius:50%}.chart{width:100%;height:170px;display:block}.legend{flex-wrap:wrap;gap:10px 14px;margin:8px 0 0;font-size:14px;font-weight:700;display:flex}.legend-item{align-items:center;gap:6px;display:inline-flex}.day-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-top:10px;font-size:15px}.day-table th,.day-table td{text-align:left;border-bottom:1px solid #c9c0ae;padding:8px 4px}.day-table th{text-transform:uppercase;letter-spacing:.04em;font-size:13px}.empty{text-align:center;color:var(--muted);padding:18px 12px;font-weight:700}.banner{background:var(--warn-bg);border:2px solid var(--ink);border-radius:12px;padding:10px 12px;font-size:15px}.toast{left:50%;bottom:calc(90px + env(safe-area-inset-bottom));background:var(--navy);color:#fff;z-index:30;box-shadow:var(--shadow);border:2px solid #fff;border-radius:999px;padding:10px 18px;font-weight:800;position:fixed;transform:translate(-50%)}.splash{text-align:center;place-items:center;min-height:100svh;padding:24px;display:grid}.splash h1{margin:0 0 8px}.footer-note{color:var(--muted);text-align:center;margin:8px 4px 0;font-size:13px}.stack{flex-direction:column;gap:10px;display:flex}.sr-only{clip:rect(0, 0, 0, 0);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sync-panel{padding-bottom:10px}.sync-btn{background:var(--gold);color:var(--navy);border:2px solid var(--ink);width:100%;min-height:72px;box-shadow:var(--shadow);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;margin:0 0 8px;padding:10px 14px;font-size:22px;font-weight:800;display:flex}.sync-btn span{color:var(--navy);margin-top:2px;font-size:14px;font-weight:700}.sync-btn:disabled{opacity:.7}.backup-toggle{text-align:left;cursor:pointer;background:0 0;border:0;width:100%;min-height:48px;font-weight:800;text-decoration:underline}.backup-body p{color:var(--muted);margin:0 0 10px;font-size:15px}.backup-body a{color:var(--blue);font-weight:800}.advanced-sync{margin-top:14px}.advanced-sync summary{cursor:pointer;color:var(--muted);min-height:40px;font-weight:800}.howto ol{margin:8px 0 0;padding-left:22px}.howto li{margin:8px 0}.steps{flex-direction:column;gap:8px;display:flex}
