:root {
  --flame: #FF4D00; --flame-bright: #FF6B2B; --electric: #FFB800;
  --chalk: #F5F0EB; --obsidian: #0A0A0A; --steel: #1A1A1A;
  --smoke: #2A2A2A; --ash: #888; --bone: #D4CFC8; --green: #4CAF50;
  --font-display: 'Bebas Neue', sans-serif;
  --font-body: 'Barlow', sans-serif;
  --font-condensed: 'Barlow Condensed', sans-serif;
}
* { margin:0; padding:0; box-sizing:border-box; }
body { background:var(--obsidian); color:var(--chalk); font-family:var(--font-body); min-height:100vh; }

/* Flash Messages */
.flash-messages { position:fixed; top:0; left:0; right:0; z-index:9999; }
.flash { padding:0.75rem 2rem; text-align:center; font-size:0.9rem; font-weight:500; }
.flash-success { background:rgba(76,175,80,0.9); color:white; }
.flash-error { background:rgba(255,45,45,0.9); color:white; }

/* Portal Nav */
.portal-nav { background:var(--steel); border-bottom:1px solid rgba(255,77,0,0.15); padding:0.75rem 2rem; display:flex; align-items:center; justify-content:space-between; position:sticky; top:0; z-index:100; }
.portal-logo { display:flex; align-items:center; gap:0.75rem; }
.portal-logo-mark { font-family:var(--font-display); font-size:1.5rem; color:var(--flame); letter-spacing:0.1em; }
.portal-logo-text { font-family:var(--font-condensed); font-size:0.7rem; letter-spacing:0.2em; text-transform:uppercase; color:var(--ash); }
.portal-user-area { display:flex; align-items:center; gap:0.75rem; }
.portal-user-name { font-size:0.85rem; color:var(--bone); }
.portal-avatar { width:34px; height:34px; border-radius:50%; background:rgba(255,77,0,0.15); border:1px solid rgba(255,77,0,0.3); display:flex; align-items:center; justify-content:center; font-family:var(--font-condensed); font-size:0.8rem; font-weight:700; color:var(--flame); }
.portal-logout, .portal-back-link { color:var(--ash); text-decoration:none; font-family:var(--font-condensed); font-size:0.75rem; letter-spacing:0.1em; text-transform:uppercase; transition:color 0.3s; }
.portal-logout:hover, .portal-back-link:hover { color:var(--flame); }

/* Portal Body */
.portal-body { max-width:900px; margin:0 auto; padding:2rem 1.5rem; }

/* Program Header */
.portal-program-header { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:2rem; flex-wrap:wrap; gap:1rem; }
.portal-label { font-family:var(--font-condensed); font-size:0.7rem; font-weight:600; letter-spacing:0.25em; text-transform:uppercase; color:var(--flame); margin-bottom:0.25rem; }
.portal-program-title { font-family:var(--font-display); font-size:2.5rem; line-height:1; letter-spacing:0.05em; }
.portal-switch-btn { font-family:var(--font-condensed); font-size:0.75rem; font-weight:600; letter-spacing:0.1em; text-transform:uppercase; color:var(--ash); background:var(--smoke); border:1px solid rgba(255,255,255,0.08); padding:0.5rem 1rem; cursor:pointer; text-decoration:none; transition:all 0.3s; }
.portal-switch-btn:hover { border-color:var(--flame); color:var(--flame); }

/* Stats */
.portal-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:0.75rem; margin-bottom:1.5rem; }
.portal-stat-card { background:var(--steel); border:1px solid rgba(255,255,255,0.05); padding:1rem 1.25rem; }
.portal-stat-label { font-family:var(--font-condensed); font-size:0.65rem; font-weight:600; letter-spacing:0.15em; text-transform:uppercase; color:var(--ash); margin-bottom:0.25rem; }
.portal-stat-value { font-family:var(--font-display); font-size:1.5rem; color:var(--chalk); line-height:1; }
.portal-stat-value.flame { color:var(--flame); }

/* Progress */
.portal-progress { margin-bottom:2rem; }
.portal-progress-bg { height:8px; background:var(--smoke); border-radius:4px; overflow:hidden; margin-bottom:0.4rem; }
.portal-progress-fill { height:100%; border-radius:4px; background:linear-gradient(90deg,var(--flame),var(--electric)); transition:width 0.5s; }
.portal-progress-text { font-family:var(--font-condensed); font-size:0.7rem; letter-spacing:0.1em; color:var(--ash); display:flex; justify-content:space-between; }

/* Coach Note */
.portal-coach-note { background:var(--steel); border:1px solid rgba(255,255,255,0.05); border-left:3px solid var(--flame); padding:1.25rem 1.5rem; margin-bottom:2rem; }
.portal-coach-label { font-family:var(--font-condensed); font-size:0.65rem; font-weight:700; letter-spacing:0.2em; text-transform:uppercase; color:var(--flame); margin-bottom:0.5rem; }
.portal-coach-note p { font-size:0.9rem; color:var(--bone); font-weight:300; line-height:1.7; }

/* Section Heads */
.portal-section-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:1rem; }
.portal-section-title { font-family:var(--font-display); font-size:1.4rem; letter-spacing:0.05em; }
.portal-scheme-badge { font-family:var(--font-condensed); font-size:0.65rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; padding:0.3rem 0.75rem; background:rgba(255,184,0,0.1); color:var(--electric); border:1px solid rgba(255,184,0,0.2); }

/* Day Cards */
.portal-day-card { background:var(--steel); border:1px solid rgba(255,255,255,0.05); margin-bottom:0.5rem; transition:border-color 0.3s; }
.portal-day-card:hover { border-color:rgba(255,255,255,0.1); }
.portal-day-card.locked { opacity:0.4; }
.portal-day-header { display:flex; align-items:center; gap:0.75rem; padding:0.85rem 1.25rem; }
.portal-day-status { width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:0.7rem; flex-shrink:0; }
.status-done { background:rgba(76,175,80,0.15); color:var(--green); border:1px solid rgba(76,175,80,0.3); }
.status-open { background:rgba(255,77,0,0.15); color:var(--flame); border:2px solid var(--flame); }
.status-locked { background:var(--smoke); color:var(--ash); border:1px solid rgba(255,255,255,0.08); }
.portal-day-info { flex:1; }
.portal-day-name { font-weight:600; font-size:0.9rem; }
.portal-day-focus { font-size:0.75rem; color:var(--ash); font-style:italic; margin-top:0.15rem; }
.portal-day-type { font-family:var(--font-condensed); font-size:0.6rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; padding:0.2rem 0.6rem; flex-shrink:0; }
.type-lift { background:rgba(255,77,0,0.15); color:var(--flame); border:1px solid rgba(255,77,0,0.25); }
.type-conditioning { background:rgba(255,184,0,0.12); color:var(--electric); border:1px solid rgba(255,184,0,0.2); }
.type-rest { background:rgba(255,255,255,0.04); color:var(--ash); border:1px solid rgba(255,255,255,0.08); }
.portal-day-link { color:var(--flame); text-decoration:none; font-family:var(--font-condensed); font-size:0.85rem; font-weight:600; }

/* Weeks Grid */
.portal-weeks-grid { display:grid; grid-template-columns:repeat(8,1fr); gap:0.5rem; margin-bottom:2rem; }
.portal-week-cell { background:var(--steel); border:1px solid rgba(255,255,255,0.05); padding:0.6rem 0.4rem; text-align:center; transition:all 0.3s; }
.portal-week-cell.done { background:rgba(76,175,80,0.06); border-color:rgba(76,175,80,0.15); }
.portal-week-cell.current { background:rgba(255,77,0,0.08); border-color:var(--flame); }
.portal-week-cell.locked { opacity:0.3; }
.portal-week-num { font-family:var(--font-condensed); font-size:0.8rem; font-weight:600; }
.portal-week-status { font-size:0.6rem; margin-top:0.15rem; }
.green { color:var(--green); }
.flame { color:var(--flame); }

/* Day View */
.day-view-header { margin-bottom:2rem; padding-bottom:1.5rem; border-bottom:1px solid rgba(255,255,255,0.05); }
.day-view-block { font-family:var(--font-condensed); font-size:0.7rem; font-weight:600; letter-spacing:0.2em; text-transform:uppercase; color:var(--flame); margin-bottom:0.5rem; }
.day-view-title { font-family:var(--font-display); font-size:2rem; letter-spacing:0.05em; margin-bottom:0.25rem; }
.day-view-focus { font-size:0.9rem; color:var(--bone); font-style:italic; font-weight:300; margin-bottom:0.75rem; }
.day-view-type { display:inline-block; font-family:var(--font-condensed); font-size:0.65rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; padding:0.25rem 0.75rem; }
.day-view-rest { text-align:center; padding:3rem; color:var(--ash); }
.rest-icon { font-size:2rem; margin-bottom:1rem; }
.day-view-exercises { margin-bottom:2rem; }

/* Exercise sections */
.exercise-section-label { font-family:var(--font-condensed); font-size:0.65rem; font-weight:700; letter-spacing:0.2em; text-transform:uppercase; padding:0.75rem 0 0.4rem; display:flex; align-items:center; gap:0.5rem; border-bottom:1px solid rgba(255,255,255,0.04); margin-bottom:0.4rem; margin-top:0.75rem; }
.section-main { color:var(--flame); }
.section-superset { color:var(--electric); }
.section-dot { width:6px; height:6px; border-radius:50%; flex-shrink:0; }
.dot-main { background:var(--flame); }
.dot-superset { background:var(--electric); }

.exercise-row { display:grid; grid-template-columns:36px 1fr auto; gap:0.75rem; padding:0.6rem 0; align-items:center; border-bottom:1px solid rgba(255,255,255,0.03); }
.exercise-row:last-child { border-bottom:none; }
.ex-order { font-family:var(--font-condensed); font-size:0.85rem; font-weight:700; color:var(--flame); text-align:center; }
.ex-name { font-size:0.95rem; font-weight:600; }
.ex-note { font-size:0.75rem; color:var(--ash); font-style:italic; margin-top:0.1rem; }
.ex-reps { font-family:var(--font-condensed); font-size:0.85rem; font-weight:600; color:var(--chalk); text-align:right; white-space:nowrap; }

.complete-btn { display:block; width:100%; padding:1rem; background:var(--flame); color:var(--obsidian); font-family:var(--font-condensed); font-size:1rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; border:none; cursor:pointer; transition:background 0.3s; margin-top:1rem; }
.complete-btn:hover { background:var(--flame-bright); }
.completed-badge { text-align:center; padding:1rem; color:var(--green); font-family:var(--font-condensed); font-size:1rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; background:rgba(76,175,80,0.1); border:1px solid rgba(76,175,80,0.2); margin-top:1rem; }

/* Switch Program */
.switch-grid { display:grid; grid-template-columns:1fr; gap:1rem; max-width:500px; }
.switch-card { background:var(--steel); border:1px solid rgba(255,255,255,0.05); padding:1.5rem; }
.switch-card-name { font-family:var(--font-display); font-size:1.5rem; margin-bottom:0.25rem; }
.switch-card-sub { font-size:0.85rem; color:var(--bone); font-weight:300; margin-bottom:0.5rem; }
.switch-card-meta { font-family:var(--font-condensed); font-size:0.7rem; color:var(--ash); letter-spacing:0.1em; margin-bottom:1rem; }
.switch-card-btn { background:var(--flame); color:var(--obsidian); font-family:var(--font-condensed); font-size:0.85rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; border:none; padding:0.6rem 1.5rem; cursor:pointer; }

/* Login */
.login-page { min-height:100vh; display:flex; align-items:center; justify-content:center; }
.login-box { background:var(--steel); border:1px solid rgba(255,77,0,0.15); padding:3rem 2.5rem; width:100%; max-width:400px; text-align:center; }
.login-logo { font-family:var(--font-display); font-size:3rem; color:var(--flame); letter-spacing:0.15em; margin-bottom:0.25rem; }
.login-subtitle { font-family:var(--font-condensed); font-size:0.75rem; letter-spacing:0.3em; text-transform:uppercase; color:var(--ash); margin-bottom:2rem; }
.form-field { margin-bottom:1.25rem; text-align:left; }
.form-field label { display:block; font-family:var(--font-condensed); font-size:0.8rem; letter-spacing:0.15em; text-transform:uppercase; color:var(--bone); margin-bottom:0.4rem; }
.form-field input, .form-field select { width:100%; padding:0.75rem 1rem; background:var(--smoke); border:1px solid rgba(255,255,255,0.1); color:var(--chalk); font-family:var(--font-body); font-size:0.95rem; outline:none; }
.form-field input:focus, .form-field select:focus { border-color:var(--flame); }
.login-btn { width:100%; padding:1rem; background:var(--flame); color:var(--obsidian); font-family:var(--font-condensed); font-size:1rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; border:none; cursor:pointer; margin-top:0.5rem; }
.login-back { display:block; margin-top:1.5rem; color:var(--ash); text-decoration:none; font-size:0.8rem; }
.login-back:hover { color:var(--flame); }

/* Admin */
.admin-title { font-family:var(--font-display); font-size:2rem; color:var(--flame); letter-spacing:0.1em; margin-bottom:2rem; }
.admin-section { margin-bottom:2.5rem; }
.admin-section-title { font-family:var(--font-display); font-size:1.3rem; letter-spacing:0.05em; margin-bottom:1rem; color:var(--chalk); }
.admin-add-form { background:var(--steel); border:1px solid rgba(255,255,255,0.05); padding:1.5rem; }
.admin-form-row { display:flex; gap:0.75rem; align-items:flex-end; flex-wrap:wrap; }
.admin-form-row .form-field { flex:1; min-width:150px; margin-bottom:0; }
.admin-add-btn { background:var(--flame); color:var(--obsidian); font-family:var(--font-condensed); font-size:0.8rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; border:none; padding:0.75rem 1.5rem; cursor:pointer; white-space:nowrap; height:42px; }
.admin-table-wrap { overflow-x:auto; }
.admin-table { width:100%; border-collapse:collapse; font-size:0.85rem; }
.admin-table th { font-family:var(--font-condensed); font-size:0.7rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; color:var(--flame); text-align:left; padding:0.75rem; border-bottom:1px solid rgba(255,77,0,0.2); }
.admin-table td { padding:0.75rem; border-bottom:1px solid rgba(255,255,255,0.04); color:var(--bone); }
.tier-badge { font-family:var(--font-condensed); font-size:0.65rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; padding:0.2rem 0.5rem; }
.tier-performance { background:rgba(255,77,0,0.15); color:var(--flame); }
.tier-elite { background:rgba(255,184,0,0.15); color:var(--electric); }
.status-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:0.3rem; }
.status-dot.active { background:var(--green); }
.status-dot.inactive { background:#ff4444; }
.admin-actions { display:flex; gap:0.4rem; flex-wrap:wrap; }
.admin-action-btn { font-family:var(--font-condensed); font-size:0.6rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase; padding:0.25rem 0.5rem; text-decoration:none; cursor:pointer; border:none; }
.admin-action-btn.activate { background:rgba(76,175,80,0.15); color:var(--green); border:1px solid rgba(76,175,80,0.3); }
.admin-action-btn.deactivate { background:rgba(255,184,0,0.1); color:var(--electric); border:1px solid rgba(255,184,0,0.2); }
.admin-action-btn.unlock { background:rgba(255,77,0,0.1); color:var(--flame); border:1px solid rgba(255,77,0,0.2); }
.admin-action-btn.delete { background:rgba(255,45,45,0.1); color:#ff4444; border:1px solid rgba(255,45,45,0.2); }

/* Responsive */
@media (max-width:700px) {
  .portal-nav { padding:0.75rem 1rem; }
  .portal-body { padding:1.25rem 1rem; }
  .portal-stats { grid-template-columns:repeat(2,1fr); }
  .portal-weeks-grid { grid-template-columns:repeat(6,1fr); }
  .portal-program-header { flex-direction:column; align-items:flex-start; }
  .admin-form-row { flex-direction:column; }
}
