/* ─────────────────────────────────────────────────────────────── Spaxel Home Page — Status headline + 3 cards (§8e) ─────────────────────────────────────────────────────────────── */ .home-body { font-family: var(--font-body); background: var(--bg-page); color: var(--text-primary); min-height: 100vh; display: flex; flex-direction: column; } /* ── Top nav ── */ .home-nav { background: var(--slate-3); border-bottom: 1px solid var(--border-default); padding: 0 var(--space-6); height: 56px; display: flex; align-items: center; justify-content: space-between; } .home-nav__logo { font-size: var(--text-lg); font-weight: var(--fw-heading); color: var(--text-primary); text-decoration: none; display: flex; align-items: center; gap: var(--space-2); } .home-nav__links { display: flex; gap: var(--space-4); } .home-nav__link { color: var(--text-secondary); text-decoration: none; font-size: var(--text-sm); padding: var(--space-2) var(--space-3); border-radius: var(--radius-control); transition: background var(--transition-fast), color var(--transition-fast); } .home-nav__link:hover { background: var(--bg-hover); color: var(--text-primary); } .home-nav__link--active { color: var(--color-primary); } /* ── Status headline (Row 1) ── */ .home-status { padding: var(--space-6); text-align: center; } .home-status__banner { padding: var(--space-3) var(--space-6); border-radius: var(--radius-card); font-size: var(--text-base); font-weight: var(--fw-heading); line-height: var(--lh-body); max-width: 700px; margin: 0 auto; } .home-status__banner--ok { background: rgba(70, 167, 88, 0.15); color: var(--ok); border: 1px solid rgba(70, 167, 88, 0.25); } .home-status__banner--warn { background: rgba(229, 160, 13, 0.15); color: var(--warn); border: 1px solid rgba(229, 160, 13, 0.25); } .home-status__banner--alert { background: rgba(229, 72, 77, 0.15); color: var(--alert); border: 1px solid rgba(229, 72, 77, 0.25); } /* ── Card grid (Row 2) ── */ .home-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--space-6); padding: 0 var(--space-6) var(--space-6); max-width: 1440px; margin: 0 auto; width: 100%; } /* ── Card ── */ .home-card { background: var(--bg-card); border: 1px solid var(--border-default); border-radius: var(--radius-card); padding: var(--space-6); display: flex; flex-direction: column; gap: var(--space-4); text-decoration: none; color: inherit; transition: border-color var(--transition-fast), background var(--transition-fast); cursor: pointer; } .home-card:hover { border-color: var(--border-strong); background: var(--bg-hover); } .home-card__header { display: flex; align-items: center; justify-content: space-between; } .home-card__title { font-size: var(--text-sm); font-weight: var(--fw-heading); color: var(--text-secondary); text-transform: uppercase; letter-spacing: 0.05em; } .home-card__icon { font-size: var(--text-lg); color: var(--text-muted); } .home-card__count { font-size: var(--text-2xl); font-weight: var(--fw-heading); line-height: var(--lh-heading); } .home-card__detail { font-size: var(--text-sm); color: var(--text-secondary); line-height: var(--lh-body); min-height: 2.4em; } .home-card__meta { display: flex; gap: var(--space-3); flex-wrap: wrap; } .home-card__tag { font-size: var(--text-xs); padding: 2px var(--space-2); border-radius: var(--radius-control); background: var(--bg-active); color: var(--text-secondary); } .home-card__tag--ok { background: rgba(70, 167, 88, 0.15); color: var(--ok); } .home-card__tag--warn { background: rgba(229, 160, 13, 0.15); color: var(--warn); } .home-card__tag--alert { background: rgba(229, 72, 77, 0.15); color: var(--alert); } /* ── Optional row (Row 3) ── */ .home-extras { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-6); padding: 0 var(--space-6) var(--space-8); max-width: 1440px; margin: 0 auto; width: 100%; } .home-extras__item { background: var(--bg-card); border: 1px solid var(--border-default); border-radius: var(--radius-card); padding: var(--space-4) var(--space-6); font-size: var(--text-sm); color: var(--text-secondary); display: none; } .home-extras__item--visible { display: block; } /* ── Mobile bottom nav ── */ .home-bottom-nav { display: none; position: fixed; bottom: 0; left: 0; right: 0; background: var(--slate-3); border-top: 1px solid var(--border-default); padding-bottom: env(safe-area-inset-bottom); z-index: 100; } .home-bottom-nav__list { display: flex; list-style: none; } .home-bottom-nav__item { flex: 1; text-align: center; } .home-bottom-nav__link { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: var(--space-2) 0; color: var(--text-muted); text-decoration: none; font-size: var(--text-xs); min-height: 44px; justify-content: center; } .home-bottom-nav__link--active { color: var(--color-primary); } /* ── Connection indicator ── */ .home-status__dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--text-muted); vertical-align: middle; margin-right: var(--space-2); } .home-status__dot--connected { background: var(--ok); box-shadow: 0 0 6px var(--ok); } .home-status__dot--disconnected { background: var(--alert); } /* ── Responsive: tablet (single column cards) ── */ @media (max-width: 1023px) { .home-cards { grid-template-columns: 1fr; max-width: 600px; } .home-nav__links { display: none; } } /* ── Responsive: mobile (bottom nav) ── */ @media (max-width: 639px) { .home-body { padding-bottom: 60px; } .home-bottom-nav { display: block; } .home-status { padding: var(--space-4); } .home-cards { padding: 0 var(--space-4) var(--space-4); gap: var(--space-4); } .home-extras { padding: 0 var(--space-4) var(--space-4); } }