:root{--bg:#000000;--surface:#121212;--surface-2:#1e1f20;--ink:#e8eaed;--ink-muted:#9aa0a6;--border:#2d2e30;--accent:#8ab4f8;--success:#34a853;--success-soft:rgba(52,168,83,0.16);--danger:#ea4335;--danger-soft:rgba(234,67,53,0.16);--radius:14px;--radius-sm:9px;--font-sans:-apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,"Segoe UI",Roboto,sans-serif}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);-webkit-tap-highlight-color:transparent}body{min-height:100dvh;padding-bottom:env(safe-area-inset-bottom)}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:16px}.app-shell{max-width:560px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column}.signin-wrap{flex:1 1;display:flex;align-items:center;justify-content:center;padding:24px}.signin-card{text-align:center;padding:32px 24px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);max-width:360px}.signin-card h1{font-size:20px;margin:0 0 8px}.signin-card p{color:var(--ink-muted);font-size:14px;margin:0 0 20px}.signin-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;border-radius:999px;background:var(--ink);color:#000;border:none;font-weight:600;font-size:14px}.top-bar{justify-content:space-between;padding:14px 16px 6px}.top-bar,.top-bar-left{display:flex;align-items:center}.top-bar-left{gap:10px}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:50%;border:none;background:transparent;color:var(--ink)}.icon-btn:active{background:var(--surface-2)}.year-pill{display:inline-flex;align-items:center;gap:4px;color:var(--ink-muted);font-size:15px;border:none;background:transparent;padding:6px 10px;border-radius:999px}.month-title{font-size:32px;font-weight:400;margin:4px 0 12px;padding:0 16px}.weekday-row{display:grid;grid-template-columns:repeat(7,1fr);padding:0 8px;color:var(--ink-muted);font-size:12px;text-align:center;margin-bottom:4px}.weekday-row div{padding:6px 0}.day-grid{display:grid;grid-template-columns:repeat(7,1fr);padding:0 8px}.day-cell{aspect-ratio:1/1;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding-top:6px;border:none;background:transparent;color:var(--ink);font-size:15px;position:relative}.day-cell.empty{pointer-events:none}.day-number{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%}.day-cell.today .day-number{background:var(--ink);color:#000;font-weight:600}.status-dot{width:26px;height:4px;border-radius:2px;margin-top:5px}.status-dot.satisfied{background:var(--success)}.status-dot.unsatisfied{background:var(--danger)}.photo-badge{position:absolute;top:2px;right:6px;font-size:10px;line-height:1;color:var(--ink-muted)}.day-detail{padding:8px 16px 40px;display:flex;flex-direction:column;gap:22px}.day-detail-heading{font-size:22px;font-weight:500;margin:4px 0 0}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-muted);margin:0 0 10px}.goal-toggle-group{display:flex;gap:10px}.toggle-btn{flex:1 1;padding:14px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--ink);font-size:15px;font-weight:600}.toggle-btn.satisfied.selected{background:var(--success-soft);border-color:var(--success);color:var(--success)}.toggle-btn.unsatisfied.selected{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.field-row{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.field-row label{flex:0 0 auto;color:var(--ink-muted);font-size:14px}.field-row input,.field-row select{flex:1 1;background:transparent;border:none;color:var(--ink);outline:none;text-align:right}.field-row select{text-align:left;-moz-appearance:none;appearance:none;-webkit-appearance:none}.meal-slot{margin-bottom:14px}.meal-slot-label{font-size:14px;color:var(--ink-muted);margin-bottom:8px;text-transform:capitalize}.meal-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.meal-chip{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:6px 8px 6px 12px;font-size:14px}.meal-chip button{border:none;background:transparent;color:var(--ink-muted);display:flex;align-items:center;padding:2px}.meal-add-row{display:flex;gap:8px}.meal-add-row input{flex:1 1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;color:var(--ink)}.meal-add-row datalist{display:none}.meal-add-btn{border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:var(--radius-sm);padding:0 16px;font-weight:600}.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.photo-thumb{position:relative;aspect-ratio:1/1;border-radius:var(--radius-sm);overflow:hidden;background:var(--surface);border:1px solid var(--border)}.photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}.photo-thumb .remove-photo-btn{position:absolute;top:4px;right:4px;width:24px;height:24px;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;border:none;font-size:14px}.photo-add-tile,.photo-thumb .remove-photo-btn{display:flex;align-items:center;justify-content:center}.photo-add-tile{aspect-ratio:1/1;border-radius:var(--radius-sm);border:1px dashed var(--border);background:var(--surface);color:var(--ink-muted);font-size:28px}.routine-list{display:flex;flex-direction:column;gap:8px;padding:0 16px 40px}.routine-item{display:flex;align-items:center;gap:10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px}.routine-item input{flex:1 1;background:transparent;border:none;color:var(--ink);outline:none}.routine-item button{border:none;background:transparent;color:var(--danger);font-size:14px;padding:4px 8px}.add-routine-row{display:flex;gap:8px;padding:0 16px 16px}.add-routine-row input{flex:1 1;padding:10px 12px}.add-routine-row button,.add-routine-row input{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--ink)}.add-routine-row button{padding:0 16px;font-weight:600}.muted{color:var(--ink-muted);font-size:13px}