body { padding-bottom: 76px; background: var(--bs-body-bg); }
.app-main { max-width: 640px; padding-top: 14px; }
.app-nav { background: var(--bs-body-bg); padding-bottom: env(safe-area-inset-bottom); }
.app-nav .nav-link { display: flex; flex-direction: column; align-items: center; font-size: .72rem; color: var(--bs-secondary-color); padding: .35rem .5rem; }
.app-nav .nav-link.active { color: var(--bs-primary); font-weight: 600; }
.app-nav .ico { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; margin-bottom: 2px; }
.auth-box { max-width: 380px; margin: 12vh auto 0; }
.code-input { letter-spacing: .5em; font-size: 1.6rem; }
.session .item { padding: .5rem 0; border-top: 1px solid var(--bs-border-color); }
.session .item:first-of-type { border-top: 0; }
.session .target { font-weight: 700; font-size: 1.1rem; white-space: nowrap; }
.session .target small { font-weight: 400; font-size: .7rem; color: var(--bs-secondary-color); }
.session-done { border-color: var(--bs-success-border-subtle); }
.session-optional { opacity: .9; border-style: dashed; }
.logged { color: var(--bs-success-text-emphasis); }
.note { background: var(--bs-info-bg-subtle); color: var(--bs-info-text-emphasis); border-radius: .5rem; padding: .7rem .9rem; font-size: .95rem; }
.decision-progress { background: var(--bs-success); }
.decision-repeat { background: var(--bs-secondary); }
.decision-ease { background: var(--bs-warning); color: #222; }
.decision-missed { background: var(--bs-danger); }
.status-on-track { color: var(--bs-success-text-emphasis); }
.status-stretching { color: var(--bs-warning-text-emphasis); }
.status-behind { color: var(--bs-danger-text-emphasis); }
