/* Hallmark · macrostructure: Workbench · theme: Garden · pre-emit critique: P4 H4 E4 S5 R4 V4 */
@import url('/tokens.css');
*{box-sizing:border-box}html,body{margin:0;overflow-x:clip}body{font-family:var(--font-body);color:var(--color-ink);background:var(--color-paper);font-size:15px;line-height:1.65}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a{ -webkit-tap-highlight-color:var(--color-soft)}button{cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}button:active{transform:translateY(1px)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--font-display);font-style:normal;overflow-wrap:anywhere;min-width:0}h1{font-size:clamp(1.6rem,3vw,2.45rem);letter-spacing:-.05em;line-height:1.4;font-weight:800}h2{font-size:1.25rem;letter-spacing:-.035em;font-weight:800}small{font-size:12px}.app-shell{max-width:1240px;margin:auto;padding:0 var(--space-md) calc(100px + env(safe-area-inset-bottom))}.topbar{height:80px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--color-rule)}.brand{display:flex;align-items:center;gap:12px;font-size:25px;font-weight:800;letter-spacing:-1px}.brand-mark{background:var(--color-accent);color:var(--color-accent-ink);width:38px;height:38px;border-radius:12px;display:grid;place-items:center;position:relative;font-family:var(--font-mono);font-size:30px}.brand-mark span{font-size:16px;position:absolute;right:4px;top:0}.topbar-meta{display:flex;align-items:center;gap:12px}.status-dot{font-size:12px;color:var(--color-muted);display:flex;align-items:center;gap:6px}.status-dot i{width:6px;height:6px;border-radius:50%;background:var(--color-accent)}.icon-button,.text-button{border:0;background:transparent;color:var(--color-ink);min-height:44px;padding:8px;white-space:nowrap}.icon-button{width:44px;font-size:22px}.text-button{font-size:13px;font-weight:700}.page-intro{padding:32px 0 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}.eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:1.5px;color:var(--color-muted);margin-bottom:9px}.lede{color:var(--color-muted);font-size:13px;margin-top:10px}.streak{min-width:78px;display:grid;grid-template-columns:auto auto;align-items:baseline;text-align:right}.streak span{grid-column:1/-1;font-size:11px;color:var(--color-muted)}.streak strong{font-family:var(--font-mono);font-size:36px;font-weight:400}.streak small{margin-left:6px;color:var(--color-muted)}.metric-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;margin-bottom:24px}.metric-card{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-md);padding:20px}.metric-primary{background:var(--color-soft);color:var(--color-ink);border-color:var(--color-soft)}.metric-label{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700}.metric-goal{margin-left:auto;font-size:11px;color:var(--color-muted);font-weight:400}.metric-value{display:flex;align-items:baseline;gap:9px;margin:10px 0}.metric-value strong{font-family:var(--font-mono);font-size:42px;line-height:1.2;font-weight:500;letter-spacing:-2px}.metric-value span{font-size:13px;color:var(--color-muted)}.progress{height:5px;background:var(--color-rule);border-radius:6px;overflow:clip}.progress span{height:100%;display:block;background:var(--color-accent);width:0}.progress-warm span{background:var(--color-warm)}.metric-note{font-size:11px;color:var(--color-muted);margin-top:12px}.week-dots{display:flex;gap:6px;margin-top:8px}.week-dot{min-width:28px;min-height:24px;display:grid;place-items:center;border-radius:6px;background:var(--color-paper);color:var(--color-muted);font-size:11px}.week-dot.done{background:var(--color-accent);color:var(--color-accent-ink)}.week-dot.scheduled{outline:1px solid var(--color-rule)}.home-grid,.training-layout,.history-grid,.settings-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}.panel{background:var(--color-surface);border:1px solid var(--color-rule);border-radius:var(--radius-lg);padding:22px;min-width:0}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.panel-index{font-size:10px;color:var(--color-muted);white-space:nowrap}.section-copy{font-size:12px;color:var(--color-muted);margin-bottom:20px;max-width:55ch}.capture-box{position:relative;min-height:190px;border:1px dashed var(--color-rule);border-radius:var(--radius-md);display:grid;place-items:center;background:var(--color-paper);overflow:clip}.capture-box input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.capture-box:focus-within{outline:3px solid var(--color-focus)}.capture-empty{text-align:center;display:grid;gap:6px;pointer-events:none}.camera-icon{font-size:36px;color:var(--color-accent);line-height:1.2}.capture-empty strong{font-size:14px}.capture-empty small{color:var(--color-muted);font-size:10px}.capture-box img{width:100%;max-height:300px;object-fit:contain;display:block}.capture-box img[hidden]{display:none}.capture-box:has(img:not([hidden])) .capture-empty{display:none}.capture-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px}.capture-actions label{font-size:12px}.capture-actions select{flex:1}.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:18px;padding:10px 17px;border:1px solid var(--color-rule);border-radius:var(--radius-sm);font-size:13px;font-weight:700;white-space:nowrap}.button-dark{background:var(--color-accent);color:var(--color-accent-ink);border-color:var(--color-accent)}.button-quiet{background:var(--color-paper);color:var(--color-ink)}input,select,textarea{min-height:44px;border:1px solid var(--color-rule);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-ink);padding:10px 12px;min-width:0;max-width:100%}input[aria-invalid=true]{border-color:var(--color-error)}label{font-size:12px}label input,label select{display:block;width:100%;margin-top:6px}.suggestion-panel{display:flex;flex-direction:column;background:var(--color-paper);color:var(--color-ink)}.plate-art{margin:12px auto 20px;width:148px;height:148px;border-radius:50%;border:13px solid var(--color-surface);outline:1px solid var(--color-rule);background:var(--color-soft);display:grid;place-items:center;position:relative}.plate-art span{font-size:40px;letter-spacing:4px}.suggestion-title{font-size:18px;font-weight:800;line-height:1.5;margin-bottom:12px}.suggestion-macros{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--font-mono);font-size:12px;color:var(--color-accent);margin:12px 0}.suggestion-reason,.suggestion-snack{font-size:12px;color:var(--color-muted);margin-top:12px}.suggestion-foods{padding-left:18px;font-size:12px;color:var(--color-muted)}.suggestion-alts{margin-top:14px;font-size:11px;color:var(--color-muted)}.suggestion-foot{border-top:1px solid var(--color-rule);margin-top:auto;padding-top:18px;display:flex;justify-content:space-between;gap:12px;font-size:11px;color:var(--color-muted)}.suggestion-foot a{min-height:44px;display:flex;align-items:center;white-space:nowrap}.log-panel{margin-top:22px}.empty-state{padding:24px 0;color:var(--color-muted);text-align:center;font-size:12px}.empty-state strong{display:block;color:var(--color-ink);font-size:14px;margin-bottom:6px}.meal-row{display:flex;gap:14px;align-items:center;padding:15px 0;border-top:1px solid var(--color-rule)}.meal-thumb{height:50px;width:50px;flex:0 0 50px;border-radius:10px;background:var(--color-soft);display:grid;place-items:center;object-fit:cover;font-size:20px}.meal-info{min-width:0;flex:1}.meal-info h3{font-size:13px;font-weight:700}.meal-info p{font-size:10px;color:var(--color-muted);margin-top:3px;overflow-wrap:anywhere}.meal-numbers{text-align:right;white-space:nowrap;font-size:12px;font-family:var(--font-mono)}.meal-numbers small{font-family:var(--font-body);display:block;color:var(--color-muted);font-size:10px}.bottom-nav{position:fixed;bottom:12px;left:16px;right:16px;max-width:480px;margin:auto;z-index:20;border:1px solid var(--color-rule);background:var(--color-surface);color:var(--color-ink);box-shadow:0 8px 30px var(--color-shadow);border-radius:18px;display:flex;padding:8px;padding-bottom:max(8px,env(safe-area-inset-bottom))}.bottom-nav a{display:grid;place-items:center;min-height:48px;flex:1;white-space:nowrap;border-radius:10px;color:var(--color-muted);line-height:1.3;gap:2px}.bottom-nav a span{font-size:19px}.bottom-nav a small{font-size:10px}.bottom-nav a.active{background:var(--color-soft);color:var(--color-accent);font-weight:700}.view{display:none}.view.active{display:block}.badge{font-size:10px;color:var(--color-accent);background:var(--color-soft);padding:5px 9px;border-radius:6px;white-space:nowrap}.training-counter{display:grid;text-align:right}.training-counter strong{font-family:var(--font-mono);font-size:38px}.training-counter span{font-size:11px;color:var(--color-muted)}.exercise{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:12px;padding:20px 0;border-top:1px solid var(--color-rule);align-items:start}.exercise-number{font-family:var(--font-mono);color:var(--color-muted);font-size:12px;padding-top:3px}.exercise h3{font-size:14px}.exercise p{font-size:11px;color:var(--color-muted);margin-top:4px}.exercise-target{font-family:var(--font-mono);font-size:15px;text-align:right}.exercise-target small{font-family:var(--font-body);font-size:10px;display:block;color:var(--color-muted)}.plan-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.rule-item{padding:18px 0;border-bottom:1px solid var(--color-rule);display:grid;gap:6px}.rule-item strong{font-size:12px}.rule-item span{font-size:11px;color:var(--color-muted)}.recovery-choice{margin-top:24px}.recovery-choice label{display:block;margin-bottom:6px}.recovery-choice select{width:100%}.weight-chart{min-height:180px;display:grid;place-items:center}.chart-empty{font-size:12px;color:var(--color-muted)}.weight-chart svg{width:100%;height:190px;overflow:visible}.weight-chart path{stroke:var(--color-accent);fill:none;stroke-width:2.5}.weight-chart circle{fill:var(--color-accent)}.weight-chart text{fill:var(--color-muted);font:10px var(--font-mono)}.inline-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:20px}.inline-form input{width:100px;flex:1}.inline-form span{font-size:12px}.helper-text{font-size:11px;color:var(--color-muted);margin-top:12px;min-height:1lh}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;margin:24px 0}.api-settings{border-top:1px solid var(--color-rule);padding-top:20px;margin-top:24px;display:grid;gap:16px}.toast{position:fixed;left:16px;right:16px;bottom:100px;margin:auto;width:fit-content;max-width:calc(100% - 32px);background:var(--color-ink);color:var(--color-paper);border-radius:10px;padding:12px 18px;font-size:12px;opacity:0;pointer-events:none;z-index:80;transform:translateY(8px);transition:transform var(--dur-fast) var(--ease-out),opacity var(--dur-fast) var(--ease-out)}.toast.visible{opacity:1;transform:translateY(0)}.error-message{color:var(--color-error);font-size:12px;margin-top:12px}.analysis-panel{border-top:1px solid var(--color-rule);margin-top:20px;padding-top:20px}.analysis-panel h3{font-size:14px;margin-bottom:12px}.food-edit{border-bottom:1px solid var(--color-rule);padding:12px 0;display:grid;gap:10px}.food-edit-top{display:flex;align-items:center;gap:8px}.food-edit input[type=text]{flex:1;width:100px}.food-edit input[type=number]{width:90px}.food-edit small{font-size:10px;color:var(--color-muted)}.food-edit-macros{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.food-edit-macros label{font-size:10px}.food-edit-macros input{width:100%;min-height:38px;padding:7px}.analysis-total{font-family:var(--font-mono);font-size:12px;color:var(--color-accent);margin:16px 0}.manual-select{width:100%;margin:12px 0}.analysis-save{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.analysis-save label{flex:1;min-width:90px}.analysis-questions{font-size:11px;color:var(--color-muted);margin:10px 0}.cost-input{width:100%}dialog{position:fixed;inset:0;margin:auto;width:calc(100% - 24px);max-width:620px;max-height:85dvh;height:fit-content;overflow-y:auto;border:1px solid var(--color-rule);border-radius:20px;padding:24px;background:var(--color-surface);color:var(--color-ink)}dialog::backdrop{background:var(--color-backdrop)}.dialog-head{display:flex;justify-content:space-between;align-items:start;margin-bottom:18px}.dialog-head h2{font-size:18px}.dialog-label{display:block;margin-top:16px}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.workout-entry{padding:14px 0;border-top:1px solid var(--color-rule)}.workout-entry h3{font-size:13px}.set-inputs{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.set-inputs label{width:72px;font-size:10px}.set-inputs input{width:100%}.set-inputs .rir-label{width:80px;margin-left:auto}.subtle-banner{border-left:3px solid var(--color-accent);padding:10px 14px;font-size:12px;background:var(--color-soft);color:var(--color-ink);margin:16px 0}.timer{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 0}.timer-output{font-family:var(--font-mono);font-size:26px}.day-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.day-picker label{display:flex;align-items:center;gap:6px;min-height:44px}.day-picker input{min-height:20px;width:18px;margin:0}.footer-line{margin-top:28px;padding-top:16px;border-top:1px solid var(--color-rule);font-size:10px;color:var(--color-muted)}.details-toggle{min-height:44px;cursor:pointer;font-size:11px;color:var(--color-muted)}.backup-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}.queue-label{font-size:11px;color:var(--color-error)}.history-train-list{margin-top:20px}
@media(hover:hover){.button-quiet:hover,input:hover,select:hover{background:var(--color-soft);color:var(--color-ink)}.button-dark:hover{opacity:.9}.bottom-nav a:hover{background:var(--color-paper)}}
@media(min-width:40rem){.app-shell{padding-inline:32px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.home-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.training-layout{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}.history-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.page-intro{padding-top:40px}.panel{padding:26px}.capture-box{min-height:230px}}
@media(min-width:60rem){.app-shell{padding-inline:48px}.topbar{height:90px}.page-intro{padding:42px 0 32px}.home-grid{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.metric-card{padding:24px}.capture-box{min-height:250px}.panel{padding:30px}.metric-grid{gap:20px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
[hidden]{display:none!important}
.macro-strip{display:flex;flex-wrap:wrap;gap:14px;padding:0 4px 24px;font-size:11px;color:var(--color-muted)}.macro-strip b{font-family:var(--font-mono);color:var(--color-ink);font-weight:500}.reschedule-label{font-size:10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.reschedule-label input{max-width:150px}.icon-button img{max-width:100%}.lock-message{color:var(--color-error)}.food-macro-hint{font-size:10px;color:var(--color-muted)}.rule-banner{margin-top:18px}.pending-save{color:var(--color-error)}.analysis-result-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.analysis-result-header small{font-size:10px;color:var(--color-muted)}
@media(max-width:39.99rem){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.metric-card{padding:16px}.metric-label{flex-wrap:wrap;gap:4px}.metric-goal{font-size:10px;margin-left:0}.metric-value strong{font-size:34px}.metric-value{gap:4px}.metric-note{font-size:10px}.metric-card:nth-child(3){grid-column:1/-1;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 12px}.metric-card:nth-child(3) .metric-value{grid-column:2;grid-row:1/3;margin:0}.metric-card:nth-child(3) .week-dots{grid-column:1}.metric-card:nth-child(3) .metric-note{grid-column:1/-1}.streak{min-width:52px}.streak strong{font-size:28px}.status-dot{font-size:10px}.topbar-meta{gap:4px}.exercise{grid-template-columns:20px minmax(0,1fr);gap:8px}.exercise-target{grid-column:2;text-align:left}.exercise-target small{display:inline;margin-left:12px}.form-grid{grid-template-columns:minmax(0,1fr)}.panel-heading{flex-wrap:wrap}.inline-form input[type=date]{flex:0 0 100%;width:100%}.food-edit-top{flex-wrap:wrap}.food-edit-top input[type=text]{flex:1 0 100%}.analysis-save{align-items:end}.capture-actions .button{flex:1;gap:10px}.meal-row{gap:8px}.meal-thumb{width:40px;height:40px;flex-basis:40px}.meal-row .icon-button{width:32px;font-size:18px;padding:4px}.panel{padding:18px}}
