:root { --bg: #09131f; --bg-soft: #10253a; --surface: rgba(242, 249, 255, 0.16); --surface-strong: rgba(255, 255, 255, 0.24); --surface-border: rgba(255, 255, 255, 0.26); --text: #eff7ff; --muted: rgba(239, 247, 255, 0.72); --shadow: 0 24px 70px rgba(4, 18, 31, 0.35); --primary: #8be4ff; --primary-strong: #3cc7ff; --accent: #8bffcf; --warm: #ffbf8d; --danger: #ff8f8f; --good: #7ff3bb; --radius-xl: 28px; --radius-lg: 22px; --radius-md: 18px; --radius-sm: 14px; --panel-blur: 28px; --font-ui: "SF Pro Display", "Avenir Next", "Segoe UI Variable", "Helvetica Neue", system-ui, sans-serif; --track-accent: rgba(139, 228, 255, 0.34); --track-surface: rgba(255, 255, 255, 0.08); --track-glow: rgba(139, 228, 255, 0.18); } *, *::before, *::after { box-sizing: border-box; } html { min-height: 100%; color-scheme: dark; } body { margin: 0; min-height: 100vh; font-family: var(--font-ui); background: radial-gradient(circle at 18% 18%, rgba(76, 171, 255, 0.24), transparent 34%), radial-gradient(circle at 82% 12%, rgba(113, 255, 210, 0.18), transparent 28%), linear-gradient(145deg, #07111b 0%, #0b1e2e 35%, #13273b 65%, #08111b 100%); color: var(--text); } a { color: inherit; text-decoration: none; } button, input, select, textarea { font: inherit; } button { cursor: pointer; } .aurora { position: fixed; inset: auto; z-index: 0; border-radius: 999px; pointer-events: none; filter: blur(24px); opacity: 0.65; } .aurora-one { top: 5rem; right: 8vw; width: 18rem; height: 18rem; background: radial-gradient(circle, rgba(90, 196, 255, 0.44), transparent 70%); } .aurora-two { bottom: 8vh; left: 8vw; width: 22rem; height: 22rem; background: radial-gradient(circle, rgba(149, 255, 214, 0.34), transparent 70%); } .shell { position: relative; z-index: 1; display: grid; grid-template-columns: 300px minmax(0, 1fr); min-height: 100vh; gap: 1.25rem; padding: 1.25rem; } .sidebar, .topbar, .glass-panel { border: 1px solid var(--surface-border); background: linear-gradient(180deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0.08)), radial-gradient(circle at top left, rgba(255, 255, 255, 0.2), transparent 48%); backdrop-filter: blur(var(--panel-blur)) saturate(150%); -webkit-backdrop-filter: blur(var(--panel-blur)) saturate(150%); box-shadow: var(--shadow); } .sidebar { display: flex; flex-direction: column; justify-content: flex-start; padding: 1.35rem; border-radius: var(--radius-xl); min-height: calc(100vh - 2.5rem); position: sticky; top: 1.25rem; } .content { min-width: 0; display: flex; flex-direction: column; gap: 1rem; } .topbar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1rem 1.2rem; border-radius: var(--radius-lg); } .topbar__meta { display: flex; gap: 0.65rem; flex-wrap: wrap; } .meta-pill, .chart-chip { display: inline-flex; align-items: center; padding: 0.48rem 0.8rem; border-radius: 999px; background: rgba(255, 255, 255, 0.12); color: var(--muted); border: 1px solid rgba(255, 255, 255, 0.12); font-size: 0.88rem; letter-spacing: 0.01em; } .meta-pill--button { cursor: pointer; } .topbar-date-form { display: inline-flex; } .topbar-date-input { width: auto; min-height: 2.2rem; border: 1px solid rgba(255, 255, 255, 0.12); border-radius: 999px; padding: 0.45rem 0.9rem; background: rgba(255, 255, 255, 0.08); color: var(--text); } .chart-chip--warm { background: rgba(255, 173, 124, 0.12); } .chart-chip--cool { background: rgba(118, 228, 255, 0.12); } .brand-block { display: flex; align-items: center; gap: 0.95rem; } .brand-mark { width: 3rem; height: 3rem; display: grid; place-items: center; border-radius: 18px; background: linear-gradient(180deg, rgba(146, 232, 255, 0.9), rgba(95, 181, 255, 0.55)); color: #032338; font-size: 1.25rem; font-weight: 800; box-shadow: inset 0 1px 1px rgba(255, 255, 255, 0.35); } .brand-block h1, .topbar h2, .hero-card h3, .section-head h3, .detail-card h3, .auth-card h1 { margin: 0; line-height: 1.1; } .brand-block h1 { font-size: 1.3rem; } .eyebrow { margin: 0 0 0.28rem; text-transform: uppercase; letter-spacing: 0.14em; color: rgba(239, 247, 255, 0.62); font-size: 0.74rem; } .main-nav { display: grid; gap: 0.55rem; margin-top: 2rem; } .main-nav a { display: flex; align-items: center; gap: 0.8rem; padding: 0.9rem 1rem; border-radius: 18px; color: var(--muted); transition: transform 180ms ease, background 180ms ease, color 180ms ease; } .main-nav a:hover, .main-nav a.active { background: rgba(255, 255, 255, 0.13); color: var(--text); transform: translateX(2px); } .sidebar-footer { display: grid; gap: 0.85rem; margin-top: auto; padding-top: 1.2rem; } .nav-icon { width: 1.1rem; height: 1.1rem; opacity: 0.9; } .user-chip { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; padding: 0.9rem 1rem; border-radius: 18px; background: rgba(255, 255, 255, 0.1); } .user-chip__name { font-weight: 700; } .user-chip__role { font-size: 0.88rem; color: var(--muted); } .flash { padding: 0.92rem 1.1rem; border-radius: var(--radius-md); } .flash-success { border-color: rgba(127, 243, 187, 0.35); } .flash-error { border-color: rgba(255, 143, 143, 0.38); } .hero-grid, .stats-grid, .dashboard-grid, .page-grid, .field-grid, .band-grid { display: grid; gap: 1rem; } .hero-grid { grid-template-columns: minmax(0, 1.8fr) minmax(280px, 0.8fr); } .hero-card, .metric-card, .chart-card, .form-panel, .detail-card, .info-card, .preview-card, .archive-list, .auth-card { padding: 1.25rem; border-radius: var(--radius-xl); } .hero-card { position: relative; overflow: hidden; } .hero-card::after { content: ""; position: absolute; inset: auto -10% -45% auto; width: 15rem; height: 15rem; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, 0.18), transparent 64%); } .hero-card--wide { padding: 1.6rem; } .hero-copy, .auth-copy, .helper-text, .detail-card p, .info-card p { color: var(--muted); line-height: 1.6; } .hero-score { font-size: clamp(2.5rem, 4vw, 4rem); font-weight: 800; line-height: 1; margin-top: 0.55rem; } .hero-label { margin: 0.45rem 0 0; color: var(--text); font-size: 1.03rem; } .stats-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); } .metric-card { display: grid; gap: 0.35rem; } .metric-card span { color: var(--muted); } .metric-card strong { font-size: 1.8rem; } .dashboard-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .chart-card--calendar, .chart-card--wide, .form-panel--wide { grid-column: 1 / -1; } .section-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 1rem; margin-bottom: 1rem; } .calendar-heatmap { min-height: 16rem; overflow-x: auto; } .calendar-legend { display: flex; justify-content: flex-end; gap: 0.45rem; margin-top: 1rem; color: var(--muted); font-size: 0.82rem; } .calendar-scale { display: flex; gap: 0.32rem; } .calendar-dot { width: 0.8rem; height: 0.8rem; border-radius: 6px; background: rgba(132, 193, 208, 0.55); } .calendar-dot--bad { background: rgba(255, 117, 117, 0.85); } .calendar-dot--warn { background: rgba(255, 171, 122, 0.82); } .calendar-dot--1 { background: rgba(116, 226, 183, 0.7); } .calendar-dot--2 { background: rgba(126, 239, 205, 0.56); } .calendar-dot--3 { background: rgba(126, 239, 205, 0.82); } .calendar-svg, .line-chart svg { width: 100%; height: auto; display: block; } .calendar-tooltip { fill: var(--muted); font-size: 11px; } .calendar-link { cursor: pointer; } .calendar-cell--active { transition: transform 140ms ease, filter 140ms ease, stroke 140ms ease, stroke-width 140ms ease; transform-box: fill-box; transform-origin: center; } .calendar-link:hover .calendar-cell--active, .calendar-link:focus .calendar-cell--active, .calendar-link:focus-visible .calendar-cell--active { filter: brightness(1.08); stroke: rgba(255, 255, 255, 0.8); stroke-width: 1.1; } .line-chart, .bar-chart { min-height: 17rem; } .line-chart svg { overflow: visible; } .line-fill { opacity: 0.12; } .line-stroke { fill: none; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3; } .line-point { stroke: rgba(7, 17, 27, 0.9); stroke-width: 1.5; } .chart-axis { stroke: rgba(255, 255, 255, 0.1); stroke-width: 1; } .chart-label { fill: rgba(239, 247, 255, 0.65); font-size: 11px; } .bar-chart svg { width: 100%; height: auto; display: block; } .bar-grid { fill: rgba(255, 255, 255, 0.08); } .bar-segment--sport { fill: rgba(87, 214, 255, 0.88); } .bar-segment--walk { fill: rgba(138, 255, 198, 0.82); } .bar-label { fill: rgba(239, 247, 255, 0.62); font-size: 11px; } .bar-value { fill: rgba(239, 247, 255, 0.82); font-size: 10px; text-anchor: middle; } .page-grid { grid-template-columns: minmax(0, 1.45fr) minmax(280px, 0.8fr); align-items: start; } .stack-column, .stack-form { display: grid; gap: 1rem; } .stack-form--spacious { gap: 1.4rem; } .tracker-form, .settings-section { display: grid; gap: 1rem; } .section-head__actions { display: flex; gap: 0.7rem; align-items: center; flex-wrap: wrap; } .field-grid--single { grid-template-columns: 1fr; } .field-grid--two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .field-grid--three { grid-template-columns: repeat(3, minmax(0, 1fr)); } .field-grid--four { grid-template-columns: repeat(4, minmax(0, 1fr)); } label { display: grid; gap: 0.55rem; color: var(--muted); } label span { font-size: 0.93rem; } input[type="text"], input[type="password"], input[type="number"], input[type="date"], select, textarea { width: 100%; border: 1px solid rgba(255, 255, 255, 0.14); border-radius: 16px; background: rgba(255, 255, 255, 0.09); color: var(--text); padding: 0.9rem 1rem; outline: none; transition: border-color 180ms ease, background 180ms ease, transform 180ms ease; } input:focus, select:focus, textarea:focus { border-color: rgba(139, 228, 255, 0.5); background: rgba(255, 255, 255, 0.12); transform: translateY(-1px); } textarea { resize: vertical; min-height: 11rem; } input[type="range"] { width: 100%; accent-color: var(--primary-strong); } .range-card { padding: 1rem; border-radius: var(--radius-md); background: var(--track-surface); border: 1px solid var(--track-accent); transition: border-color 220ms ease, background 220ms ease, transform 220ms ease, box-shadow 220ms ease; } .range-card output { font-size: 1.7rem; color: var(--text); font-weight: 700; } .preview-card { position: relative; overflow: hidden; border-color: var(--track-accent); box-shadow: 0 24px 70px rgba(4, 18, 31, 0.35), inset 0 1px 0 rgba(255, 255, 255, 0.08); } .preview-card::before { content: ""; position: absolute; inset: auto -12% -25% auto; width: 14rem; height: 14rem; border-radius: 50%; background: radial-gradient(circle, var(--track-glow), transparent 70%); pointer-events: none; transition: background 220ms ease, transform 220ms ease; } .preview-status { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.8rem; } .preview-status__icon { width: 4.5rem; height: 4.5rem; border-radius: 20px; display: grid; place-items: center; background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.18); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12); } .preview-status__icon img { width: 2.3rem; height: 2.3rem; } .preview-status__label { margin: 0; font-size: 1.55rem; font-weight: 750; } .preview-scoreline { margin: 0 0 1rem; color: var(--muted); font-size: 0.95rem; } .preview-scoreline span { color: var(--text); font-size: 1.2rem; font-weight: 700; } .component-list, .detail-grid { display: grid; gap: 0.75rem; } .component-list div, .detail-grid div, .user-row { display: flex; justify-content: space-between; gap: 0.85rem; padding: 0.85rem 0.95rem; border-radius: 15px; background: rgba(255, 255, 255, 0.08); } .component-list dt, .detail-grid dt { color: var(--muted); } .component-list dd, .detail-grid dd { margin: 0; font-weight: 700; } .form-actions { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; } .primary-button, .ghost-button, .button-link { display: inline-flex; align-items: center; justify-content: center; min-height: 3rem; padding: 0.75rem 1.2rem; border-radius: 999px; border: 1px solid transparent; transition: transform 180ms ease, box-shadow 180ms ease, background 180ms ease; } .primary-button, .button-link { color: #092033; font-weight: 700; background: linear-gradient(180deg, rgba(164, 239, 255, 0.98), rgba(95, 198, 255, 0.78)); box-shadow: 0 16px 30px rgba(59, 167, 230, 0.28); } .primary-button:hover, .ghost-button:hover, .button-link:hover { transform: translateY(-1px); } .ghost-button, .ghost-link { color: var(--text); border: 1px solid rgba(255, 255, 255, 0.16); background: rgba(255, 255, 255, 0.08); } .ghost-link { display: inline-flex; align-items: center; justify-content: center; min-height: 2.75rem; padding: 0.55rem 0.95rem; border-radius: 999px; } .archive-items, .user-list { display: grid; gap: 0.75rem; } .archive-item { display: flex; justify-content: space-between; gap: 1rem; align-items: center; padding: 1rem 1.05rem; border-radius: 18px; background: rgba(255, 255, 255, 0.08); border: 1px solid transparent; transition: transform 180ms ease, border-color 180ms ease, background 180ms ease; } .archive-item span { display: block; color: var(--muted); margin-top: 0.2rem; } .archive-item:hover, .archive-item.active { transform: translateY(-1px); border-color: rgba(139, 228, 255, 0.34); background: rgba(255, 255, 255, 0.12); } .archive-item__meta { text-align: right; } .archive-item__actions { display: flex; gap: 0.55rem; flex-wrap: wrap; } .archive-action { min-height: 2.4rem; padding-inline: 0.85rem; } .note-box { padding: 1rem; border-radius: 18px; background: rgba(255, 255, 255, 0.08); } .note-box h4 { margin: 0 0 0.55rem; } .empty-state { color: var(--muted); line-height: 1.6; } .band-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .band-card { display: grid; gap: 0.75rem; padding: 1rem; border-radius: 18px; background: rgba(255, 255, 255, 0.08); } .checkbox-row { display: flex; align-items: center; gap: 0.7rem; } .checkbox-row input { width: auto; } .auth-shell { min-height: 100vh; display: grid; place-items: center; padding: 1.5rem; } .auth-card { width: min(100%, 30rem); } .auth-card form { margin-top: 1.4rem; } .button-link { width: fit-content; } .page-track[data-track-mood="storm"] { --track-accent: rgba(255, 143, 143, 0.38); --track-surface: rgba(255, 143, 143, 0.08); --track-glow: rgba(255, 126, 126, 0.22); } .page-track[data-track-mood="heavy"] { --track-accent: rgba(255, 191, 141, 0.34); --track-surface: rgba(255, 191, 141, 0.08); --track-glow: rgba(255, 191, 141, 0.18); } .page-track[data-track-mood="steady"] { --track-accent: rgba(139, 228, 255, 0.34); --track-surface: rgba(255, 255, 255, 0.08); --track-glow: rgba(139, 228, 255, 0.18); } .page-track[data-track-mood="bright"] { --track-accent: rgba(143, 243, 198, 0.34); --track-surface: rgba(143, 243, 198, 0.08); --track-glow: rgba(143, 243, 198, 0.2); } .page-track[data-track-mood="radiant"] { --track-accent: rgba(255, 233, 140, 0.35); --track-surface: rgba(255, 233, 140, 0.1); --track-glow: rgba(255, 233, 140, 0.22); } .page-track[data-track-mood] .aurora-one, .page-track[data-track-mood] .aurora-two, .page-track[data-track-mood] .range-card, .page-track[data-track-mood] .preview-card, .page-track[data-track-mood] .preview-card::before { transition: background 220ms ease, opacity 220ms ease, transform 220ms ease, border-color 220ms ease, box-shadow 220ms ease; } .page-track[data-track-mood="storm"] .aurora-one, .page-track[data-track-mood="storm"] .aurora-two { opacity: 0.5; background: radial-gradient(circle, rgba(255, 128, 128, 0.32), transparent 70%); } .page-track[data-track-mood="heavy"] .aurora-one, .page-track[data-track-mood="heavy"] .aurora-two { opacity: 0.55; background: radial-gradient(circle, rgba(255, 192, 128, 0.3), transparent 70%); } .page-track[data-track-mood="bright"] .aurora-one, .page-track[data-track-mood="bright"] .aurora-two { opacity: 0.72; background: radial-gradient(circle, rgba(127, 243, 187, 0.3), transparent 70%); } .page-track[data-track-mood="radiant"] .aurora-one, .page-track[data-track-mood="radiant"] .aurora-two { opacity: 0.78; background: radial-gradient(circle, rgba(255, 228, 122, 0.32), transparent 70%); } @media (max-width: 1100px) { .shell { grid-template-columns: 1fr; } .sidebar { position: static; min-height: auto; } .stats-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 820px) { .topbar, .section-head, .form-actions { flex-direction: column; align-items: stretch; } .hero-grid, .dashboard-grid, .page-grid, .stats-grid, .field-grid--two, .field-grid--three, .field-grid--four, .band-grid { grid-template-columns: 1fr; } .bar-chart { overflow-x: auto; padding-bottom: 0.4rem; } .archive-item, .preview-status { flex-direction: column; align-items: flex-start; } } @media (max-width: 640px) { .shell { padding: 0.8rem; gap: 0.8rem; } .sidebar, .hero-card, .metric-card, .chart-card, .form-panel, .detail-card, .info-card, .preview-card, .archive-list, .topbar { border-radius: 22px; } .hero-score { font-size: 2.8rem; } }