tag (line ~182). Breakpoints mirror Tailwind: sm: 640px · md: 768px ============================================================ */ /* --- 1. Global overflow guard: zero horizontal scrolling --- */ html, body { overflow-x: hidden; width: 100%; } img, video, canvas, svg, table { max-width: 100%; } input, select, button { max-width: 100%; } /* --- 2. Sticky header: low-profile + backdrop blur (z-50 equivalent) --- */ header { position: sticky; top: 0; z-index: 50; background: linear-gradient(180deg, rgba(10,10,12,.85), rgba(0,0,0,.92)); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-bottom: 1px solid #111111; padding: 10px 16px; flex-wrap: nowrap; } header .brand { min-width: 0; } #greeting { font-size: 17px; margin: 0; } #date-line { font-size: 11px; } header .tag { display: none; } /* declutter on phones */ #save-status { display: none; } /* remove sync label on mobile (per spec) */ header .reset { font-size: 12px; } /* --- 3. Fluid cards: full-viewport fit, no cramping --- */ .wrap { padding: 14px 14px calc(96px + env(safe-area-inset-bottom)); } .grid { grid-template-columns: 1fr; gap: 14px; } /* always single col on mobile */ .grid > * { min-width: 0; } .card { padding: 16px; border-radius: 14px; } .card h2 { font-size: 12px; } .quick { gap: 6px; } .quick .btn { flex: 1 1 auto; } /* thumb-friendly stretch */ /* --- 4. 44px touch targets (Apple/Android minimum) --- */ @media (max-width: 768px) { .btn { min-height: 44px; padding: 12px 14px; font-size: 14px; } .dose-item { padding: 14px; } .act-task { padding: 13px 12px; } .thread-item { padding: 12px; } input, select { min-height: 44px; font-size: 15px; } /* prevent iOS zoom */ } /* --- 5. AI chat: full-height, stacked below logs, big input --- */ .ai-layout { flex-direction: column; gap: 12px; } .ai-side { width: 100%; border-right: none; border-bottom: 1px solid #111111; padding-right: 0; padding-bottom: 12px; max-height: 40vh; } .ai-main { width: 100%; min-width: 0; } .ai-chat { min-height: 46vh; max-height: 56vh; padding-bottom: 8px; } .ai-bubble { font-size: 15px; line-height: 1.7; margin: 0 6px; } .ai-msg.user .ai-bubble { max-width: 85%; padding: 12px 16px; } .ai-inputrow { position: sticky; bottom: calc(64px + env(safe-area-inset-bottom)); z-index: 45; gap: 8px; background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.95) 40%); padding: 10px 0 6px; } .ai-inputrow input { min-height: 48px; font-size: 16px; border-radius: 12px; } /* --- 6. Remove bottom clutter: backup status card + footer on mobile --- */ footer { display: none; } /* log footer removed */ .wrap > .card:last-of-type { /* backup card: compact strip on mobile */ padding: 10px 12px; margin-top: 10px; } .wrap > .card:last-of-type h2 { margin-bottom: 6px; } .wrap > .card:last-of-type .muted { display: none; } /* sync explanation hidden */ .wrap > .card:last-of-type .quick { justify-content: flex-start; } .wrap > .card:last-of-type .btn { flex: 0 0 auto; min-height: 38px; padding: 8px 12px; font-size: 12px; } /* --- 7. md (768px+) — wider layouts re-enable two-column where useful --- */ @media (min-width: 768px) { .grid { grid-template-columns: 1fr 1fr; gap: 20px; } header { padding: 14px 24px; } header .tag { display: inline-block; } .wrap { padding: 20px 24px 110px; } .ai-chat { min-height: 55vh; max-height: 70vh; } footer { display: block; } /* footer returns on desktop */ .wrap > .card:last-of-type .muted { display: block; } }
| Date | Compound | mg | U | Site |
|---|