:root{color-scheme:light;--page: #f9f9f7;--surface: #fcfcfb;--ink: #0b0b0b;--ink-2: #52514e;--muted: #898781;--grid: #e1e0d9;--axis: #c3c2b7;--border: rgba(11, 11, 11, .1);--band: rgba(42, 120, 214, .08);--weight: #2a78d6;--weight-soft: #86b6ef;--kcal: #eb6834;--protein: #1baf7a;--steps: #eda100;--vo2: #4a3aa7;--good: #006300}@media (prefers-color-scheme: dark){:root{color-scheme:dark;--page: #0d0d0d;--surface: #1a1a19;--ink: #ffffff;--ink-2: #c3c2b7;--muted: #898781;--grid: #2c2c2a;--axis: #383835;--border: rgba(255, 255, 255, .1);--band: rgba(57, 135, 229, .12);--weight: #3987e5;--weight-soft: #5598e7;--kcal: #d95926;--protein: #199e70;--steps: #c98500;--vo2: #9085e9;--good: #0ca30c}}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased}.container{max-width:1100px;margin:0 auto;padding:16px}header.topbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:8px 0 16px}header.topbar h1{font-size:1.35rem;margin:0}header.topbar .sub{color:var(--ink-2);font-size:.85rem}.tabbar{display:flex;gap:8px;margin-bottom:16px;border-bottom:1px solid var(--grid);padding-bottom:0}.tabbar button{background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--ink-2);padding:8px 12px 10px;font-size:.9rem}.tabbar button.tab-active{color:var(--ink);font-weight:650;border-bottom-color:var(--weight)}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}.card.wide{grid-column:1 / -1}.card h2{font-size:.95rem;margin:0 0 4px}.card .hint{color:var(--muted);font-size:.78rem;margin:0 0 12px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}.tile .label{color:var(--ink-2);font-size:.8rem}.tile .value{font-size:1.9rem;font-weight:650;line-height:1.2;margin-top:4px}.tile .delta{font-size:.8rem;color:var(--muted);margin-top:2px}.tile .delta.good{color:var(--good)}.meals{display:flex;flex-direction:column;gap:20px}.meal-day h3{font-size:.85rem;color:var(--ink-2);margin:0 0 8px}.meal-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}.meal{border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}.meal img{width:100%;height:160px;object-fit:cover;display:block;background:var(--grid)}.meal .body{padding:10px 12px 12px;font-size:.82rem}.meal .foods{font-weight:600;margin-bottom:6px}.meal .est{color:var(--ink-2);margin-bottom:6px}.meal .fb{margin:4px 0;color:var(--ink-2)}.meal .time{color:var(--muted);font-size:.75rem}input,button,select{font:inherit;color:var(--ink)}input[type=password],input[type=email],input[type=date]{background:var(--surface);border:1px solid var(--axis);border-radius:8px;padding:10px 12px}button{background:var(--weight);color:#fff;border:0;border-radius:8px;padding:10px 16px;cursor:pointer}button:disabled{opacity:.5;cursor:default}button.ghost{background:transparent;color:var(--ink-2);border:1px solid var(--axis)}.login{min-height:100dvh;display:flex;align-items:center;justify-content:center}.login form{display:flex;flex-direction:column;gap:12px;width:min(320px,90vw)}.error{color:#d03b3b;font-size:.85rem}.upload-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.upload-result{font-size:.85rem;color:var(--ink-2);margin-top:8px}.table-scroll{overflow-x:auto}table.labs{border-collapse:collapse;width:100%;font-size:.82rem;font-variant-numeric:tabular-nums}table.labs th,table.labs td{padding:6px 10px;border-bottom:1px solid var(--grid);text-align:left;white-space:nowrap}table.labs th{color:var(--ink-2);font-weight:600}table.labs .num{text-align:right}table.labs .lab-cat td{background:var(--band);font-weight:650;font-size:.78rem;color:var(--ink-2)}.lab-unit{color:var(--muted);font-size:.72rem}table.labs td.lab-name{white-space:normal;min-width:230px;max-width:340px}.lab-expl{display:block;color:var(--muted);font-size:.73rem;line-height:1.35;margin-top:2px;font-weight:400}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin-top:8px}.summary-block{border:1px solid var(--border);border-radius:10px;padding:4px 16px 8px}.summary-block.ok{border-top:3px solid var(--protein)}.summary-block.warn{border-top:3px solid var(--kcal)}.summary-block h3{font-size:.9rem;margin:10px 0 4px}.summary-block ul{margin:8px 0;padding-left:18px}.summary-block li{font-size:.83rem;color:var(--ink-2);margin-bottom:8px;line-height:1.45}.summary-block li strong{color:var(--ink)}.summary-bottomline{font-size:.85rem;color:var(--ink-2);line-height:1.5;border-top:1px solid var(--grid);padding-top:12px;margin:14px 0 0}.lab-ref{color:var(--muted);font-size:.75rem}.lab-out{color:#d03b3b;font-weight:650}table.adherence .ok{color:var(--good);font-weight:650}table.adherence .miss{color:#d03b3b}@media (prefers-color-scheme: dark){.lab-out{color:#e66767}}.training-grid{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.training-day .day-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px}.training-day .day-name{color:var(--ink-2);font-size:.8rem;font-weight:600}.training-day .day-duration{color:var(--muted);font-size:.75rem}.training-day h3{font-size:.95rem;margin:4px 0 8px}.training-day ul{margin:0;padding-left:18px}.training-day li{font-size:.82rem;color:var(--ink-2);margin-bottom:4px;line-height:1.4}.training-day .day-note{font-size:.78rem;color:var(--muted);margin:10px 0 0;line-height:1.4}.training-day.today{border:2px solid var(--weight)}.training-day.today .day-name{color:var(--weight)}.footer-note{color:var(--muted);font-size:.75rem;margin:24px 0 8px;text-align:center}
