/* HITO - Solid. Reliable. Authoritative. Black. Gold. White. No compromise. Besley for headings. Plex Sans for body. Plex Mono for data. Accessibility-first, mobile-primary. Built for the gym. */ /* === VARIABLES === */ :root { --bg: #0A0A0A; --bg-raised: #111111; --bg-input: #1A1A1A; --fg: #F0EDE6; --fg-dim: #9A958D; --gold: #C5A24D; --gold-dim: #9E8340; --red: #8B0000; --red-bright: #E04530; --green: #4A7A3A; --mono: 'IBM Plex Mono', 'SF Mono', 'Consolas', monospace; --heading: 'Besley', Georgia, serif; --sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, sans-serif; } /* === RESET === */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } /* === BASE === */ html { font-size: 17px; line-height: 1.65; } body { background-color: var(--bg); color: var(--fg); font-family: var(--sans); min-height: 100vh; display: flex; justify-content: center; padding: 2rem 1rem; } main { max-width: 640px; width: 100%; } /* === TYPOGRAPHY === */ h1, h2, h3 { font-family: var(--heading); font-weight: 600; letter-spacing: normal; } h2 { font-size: 1.75rem; color: var(--gold); letter-spacing: 0.01em; margin-bottom: 1.5rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--gold-dim); } h3 { font-size: 1.15rem; color: var(--fg); margin-bottom: 0.5rem; } p { margin-bottom: 1rem; } strong { color: var(--gold); font-weight: 700; } a { color: var(--gold); text-decoration: none; } a:hover { text-decoration: underline; } /* === HEADER === */ header { margin-bottom: 2.5rem; } .logo-link { text-decoration: none; } .logo-link:hover { text-decoration: none; } .logo { font-size: 2.5rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold); margin-bottom: 0.1rem; } .subtitle { font-size: 0.8rem; letter-spacing: 0.1em; color: var(--fg-dim); font-family: var(--mono); } /* === FOOTER / QUOTES === */ footer { margin-top: 3rem; padding-top: 2rem; border-top: 1px solid var(--bg-raised); } blockquote { border-left: 2px solid var(--gold-dim); padding-left: 1.25rem; margin: 0; font-family: var(--heading); font-weight: 600; color: var(--fg-dim); font-size: 0.95rem; line-height: 1.7; } blockquote cite { display: block; margin-top: 0.75rem; font-style: normal; font-size: 0.8rem; color: var(--gold-dim); font-family: var(--mono); } /* === BUTTONS === */ .btn-primary { display: inline-block; background-color: var(--gold); color: var(--bg); font-family: var(--mono); font-size: 0.85rem; font-weight: 500; letter-spacing: 0.05em; padding: 0.9rem 2rem; border: none; cursor: pointer; text-decoration: none; margin-top: 1.5rem; transition: background-color 0.15s; } .btn-primary:hover { background-color: var(--fg); text-decoration: none; } .btn-warning { display: inline-block; background-color: transparent; color: var(--red-bright); font-family: var(--mono); font-size: 0.8rem; letter-spacing: 0.05em; padding: 0.85rem 1.5rem; min-height: 2.75rem; border: 1px solid var(--red); cursor: pointer; text-decoration: none; margin-top: 1.5rem; transition: all 0.15s; } .btn-warning:hover { background-color: var(--red); color: var(--fg); text-decoration: none; } .btn-danger { display: inline-block; background-color: var(--red); color: var(--fg); font-family: var(--mono); font-size: 0.85rem; font-weight: 500; letter-spacing: 0.05em; padding: 0.9rem 2rem; border: none; cursor: pointer; text-decoration: none; margin-top: 1rem; transition: background-color 0.15s; } .btn-danger:hover { background-color: var(--red-bright); } .btn-secondary { display: inline-block; color: var(--fg-dim); font-family: var(--mono); font-size: 0.8rem; letter-spacing: 0.05em; padding: 0.85rem 1.5rem; min-height: 2.75rem; border: 1px solid var(--fg-dim); text-decoration: none; margin-top: 1rem; margin-left: 1rem; transition: all 0.15s; } .btn-secondary:hover { color: var(--fg); border-color: var(--fg); text-decoration: none; } /* === FORMS === */ fieldset { border: none; margin-bottom: 2rem; padding: 0; } legend { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.05em; color: var(--gold); padding-bottom: 0.75rem; margin-bottom: 1rem; border-bottom: 1px solid var(--bg-raised); width: 100%; display: block; } label { display: block; font-size: 0.95rem; margin-bottom: 0.25rem; color: var(--fg); } input[type="number"], input[type="text"] { background: var(--bg-input); border: none; border-bottom: 2px solid var(--fg-dim); color: var(--fg); font-family: var(--mono); font-size: 1rem; padding: 0.75rem 0.5rem; min-height: 2.75rem; width: 100%; transition: border-color 0.15s; } input[type="number"]:focus, input[type="text"]:focus { outline: none; border-bottom-color: var(--gold); } input[type="number"]::placeholder { color: var(--fg-dim); } .form-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: 0.75rem; gap: 1rem; } .form-row label { flex: 1; margin-bottom: 0; } .input-group { display: flex; align-items: center; gap: 0.4rem; } .input-group input[type="number"] { width: 5rem; text-align: right; } .unit { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; color: var(--fg-dim); letter-spacing: 0.02em; } /* === INSTRUCTIONS === */ .instruction { font-size: 0.9rem; line-height: 1.7; color: var(--fg); margin-bottom: 1rem; } .instruction.secondary { color: var(--fg-dim); font-size: 0.85rem; margin-bottom: 2rem; } /* === DASHBOARD === */ .dashboard .status { margin-bottom: 2.5rem; } .status.ready h2 { color: var(--gold); border-bottom: none; padding-bottom: 0; margin-bottom: 0.75rem; } .status.recovering h2 { color: var(--red-bright); border-bottom: none; padding-bottom: 0; margin-bottom: 1rem; } .next-workout { font-size: 1.1rem; margin-bottom: 0.5rem; } .days-remaining { display: flex; align-items: baseline; gap: 0.75rem; margin-bottom: 1rem; } .big-number { font-family: var(--mono); font-size: 3rem; color: var(--red-bright); line-height: 1; } .days-remaining .label { font-family: var(--mono); font-size: 0.85rem; font-weight: 500; color: var(--fg-dim); letter-spacing: 0.05em; } .next-date { font-size: 0.95rem; margin-bottom: 0.5rem; } .recovery-reason { font-size: 0.85rem; color: var(--fg-dim); font-style: italic; } /* === SESSION HISTORY === */ .history { margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid var(--bg-raised); } .history h3 { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.05em; color: var(--fg-dim); margin-bottom: 1rem; } .history-entry { display: flex; align-items: center; gap: 1rem; padding: 0.75rem 0; border-bottom: 1px solid var(--bg-raised); font-size: 0.9rem; } .history-date { font-family: var(--mono); font-size: 0.8rem; color: var(--fg-dim); min-width: 6rem; } .history-day { color: var(--fg); } .history-badge { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.05em; padding: 0.15rem 0.4rem; } .history-badge.override { color: var(--red-bright); border: 1px solid var(--red); } /* === SESSION / WORKOUT === */ .session { margin-bottom: 2rem; } .exercise-group { margin-bottom: 2rem; padding: 0; border: none; } .exercise-group.superset { border-left: 3px solid var(--gold-dim); padding-left: 1.25rem; } .group-label { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.05em; color: var(--gold-dim); padding: 0; margin-bottom: 1rem; border: none; width: auto; } .exercise-entry { margin-bottom: 1.5rem; } .exercise-name { font-size: 1.05rem; color: var(--fg); margin-bottom: 0.25rem; font-weight: normal; } .prescription { font-family: var(--mono); font-size: 0.8rem; color: var(--fg-dim); margin-bottom: 0.75rem; } .prescription strong { color: var(--gold); } .set-row { display: flex; align-items: center; gap: 1rem; margin-bottom: 0.5rem; padding: 0.4rem 0; } .set-label { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; color: var(--fg-dim); letter-spacing: 0.02em; min-width: 3rem; } .set-row .input-group input[type="number"] { width: 4.5rem; } .failure-check { display: flex; align-items: center; gap: 0.4rem; font-family: var(--mono); font-size: 0.8rem; font-weight: 500; color: var(--fg-dim); letter-spacing: 0.02em; cursor: pointer; padding: 0.5rem 0.25rem; min-height: 2.75rem; } .failure-check input[type="checkbox"] { accent-color: var(--gold); width: 1.25rem; height: 1.25rem; } /* === SESSION COMPLETE === */ .session-complete { margin-bottom: 2rem; } .progression-results { margin-bottom: 2rem; } .result-entry { padding: 0.75rem 0; border-bottom: 1px solid var(--bg-raised); } .result-entry .exercise-name { display: block; font-size: 0.9rem; color: var(--fg); margin-bottom: 0.25rem; } .result-entry .result-text { display: block; font-size: 0.85rem; color: var(--fg-dim); font-style: italic; } .result-entry.increase .result-text { color: var(--gold); } .result-entry.stall .result-text { color: var(--red-bright); } .summary { font-family: var(--mono); font-size: 0.85rem; letter-spacing: 0.05em; margin-bottom: 0.5rem; } .summary.increase { color: var(--gold); } .summary.stall { color: var(--red-bright); } .recovery-info { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--bg-raised); } .recovery-info h3 { font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.05em; color: var(--fg-dim); margin-bottom: 0.75rem; } .recovery-info p { font-size: 0.9rem; } /* === OVERRIDE PAGE === */ .override-page { margin-bottom: 2rem; } .override-page h2 { color: var(--red-bright); border-bottom-color: var(--red); } .warning-block { border-left: 3px solid var(--red); padding: 1.25rem 1.25rem; background: var(--bg-raised); margin: 1.5rem 0; } .warning-text { font-size: 0.9rem; line-height: 1.8; color: var(--fg); margin-bottom: 0; } .override-info { margin: 1.5rem 0; font-size: 0.9rem; } .override-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem; } /* === SETUP PAGE === */ .setup fieldset { margin-bottom: 2.5rem; } .setup legend { font-size: 0.85rem; } /* === RESPONSIVE === */ @media (max-width: 480px) { html { font-size: 16px; } body { padding: 1.5rem 0.75rem; } .logo { font-size: 2rem; } .form-row { flex-direction: column; align-items: flex-start; gap: 0.4rem; } .set-row { flex-wrap: wrap; gap: 0.5rem; } .set-row .input-group input[type="number"] { width: 4rem; } .override-actions { flex-direction: column; align-items: stretch; } .btn-secondary { margin-left: 0; text-align: center; } .history-entry { flex-wrap: wrap; gap: 0.4rem; } .days-remaining { flex-direction: column; gap: 0.25rem; } } /* === EXERCISES PAGE === */ .exercises-page { margin-bottom: 2rem; } .exercise-day { margin-bottom: 2.5rem; } .day-header { font-family: var(--mono); font-size: 0.85rem; font-weight: 500; letter-spacing: 0.05em; color: var(--gold); margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--bg-raised); } .exercise-slot { padding: 0.75rem 0; border-bottom: 1px solid var(--bg-raised); } .slot-current { margin-bottom: 0.5rem; } .slot-canonical { color: var(--fg); font-size: 0.95rem; } .slot-active { color: var(--gold); font-size: 0.9rem; font-style: italic; margin-left: 0.5rem; } .swap-form { display: flex; align-items: center; gap: 0.75rem; } .swap-form select { background: var(--bg-input); border: none; border-bottom: 2px solid var(--fg-dim); color: var(--fg); font-family: var(--mono); font-size: 0.8rem; padding: 0.7rem 0.5rem; min-height: 2.75rem; flex: 1; max-width: 20rem; } .swap-form select:focus { outline: none; border-bottom-color: var(--gold); } .btn-swap { background: transparent; color: var(--gold-dim); font-family: var(--mono); font-size: 0.8rem; font-weight: 500; letter-spacing: 0.02em; padding: 0.65rem 1rem; min-height: 2.75rem; border: 1px solid var(--gold-dim); cursor: pointer; transition: all 0.15s; } .btn-swap:hover { color: var(--gold); border-color: var(--gold); } /* === NAV LINKS === */ .nav-links { margin-top: 2rem; padding-top: 1rem; border-top: 1px solid var(--bg-raised); } .nav-links a { font-family: var(--mono); font-size: 0.8rem; letter-spacing: 0.05em; color: var(--fg-dim); display: inline-block; padding: 0.75rem 0; min-height: 2.75rem; } .nav-links a:hover { color: var(--gold); } /* === SETUP LEVEL SELECTION === */ .level-choices { display: flex; flex-direction: column; gap: 1rem; margin: 2rem 0; } .level-choice { cursor: pointer; display: block; } .level-choice input[type="radio"] { position: absolute; opacity: 0; pointer-events: none; } .choice-card { border: 2px solid var(--bg-raised); padding: 1.25rem 1.5rem; transition: border-color 0.15s, background-color 0.15s; } .level-choice input[type="radio"]:checked + .choice-card { border-color: var(--gold); background-color: var(--bg-raised); } .level-choice:hover .choice-card { border-color: var(--gold-dim); } .choice-title { display: block; font-family: var(--mono); font-size: 0.9rem; font-weight: 500; letter-spacing: 0.05em; color: var(--gold); margin-bottom: 0.4rem; } .choice-desc { display: block; font-size: 0.85rem; color: var(--fg-dim); line-height: 1.6; }