:root{--bg:#0a0a0a;--bg-card:#111;--bg-card-hover:#1a1a1a;--card:var(--bg-card);--accent:#d4a843;--accent-dim:#d4a84326;--text:#e5e5e5;--text-muted:#888;--border:#222;--error:#ef4444;--success:#4ade80;--info:#818cf8;--sidebar-w:260px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;line-height:1.6}h1,h2,h3,h4{font-family:Georgia,Times New Roman,serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-layout{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--bg-card);border-right:1px solid var(--border);z-index:100;padding:20px 0;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.sidebar-logo{color:var(--accent);border-bottom:1px solid var(--border);cursor:pointer;margin-bottom:8px;padding:0 20px 20px;font-family:Georgia,serif;font-size:1.1em}.sidebar-section{text-transform:uppercase;letter-spacing:1px;color:var(--text-muted);padding:8px 20px 4px;font-size:.7em}.sidebar-item{cursor:pointer;color:var(--text-muted);border-left:3px solid #0000;align-items:center;gap:10px;padding:10px 20px;font-size:.9em;transition:all .15s;display:flex}.sidebar-item:hover{background:var(--bg-card-hover);color:var(--text)}.sidebar-item.active{color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim)}.sidebar-item.locked{opacity:.4}.sidebar-item .icon{text-align:center;width:24px;font-size:1.1em}.sidebar-item .lock-icon{margin-left:auto;font-size:.8em}.sidebar-user{border-top:1px solid var(--border);background:var(--bg-card);margin-top:auto;padding:16px 20px;font-size:.85em;position:absolute;bottom:0;left:0;right:0}.sidebar-user-name{color:var(--text);font-weight:600}.sidebar-user-role{color:var(--text-muted);font-size:.8em}.sidebar-logout{color:var(--error);cursor:pointer;margin-top:8px;font-size:.85em}.main-content{margin-left:var(--sidebar-w);flex:1;max-width:900px;padding:32px}.page-header{border-bottom:1px solid var(--border);margin-bottom:24px;padding-bottom:16px}.page-header h2{font-size:1.6em}.page-header p{color:var(--text-muted);margin-top:4px;font-size:.9em}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:20px}.card h3{color:var(--accent);margin-bottom:12px;font-size:1.1em}.card-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid}.form-group{margin-bottom:16px}.form-group label{color:var(--text-muted);margin-bottom:4px;font-size:.85em;display:block}.form-group input,.form-group textarea,.form-group select{background:var(--bg);border:1px solid var(--border);width:100%;color:var(--text);border-radius:6px;padding:10px 12px;font-family:inherit;font-size:.95em}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--accent);outline:none}.form-group input:read-only{opacity:.6;cursor:not-allowed}.form-row{gap:12px;display:flex}.form-row .form-group{flex:1}textarea{resize:vertical;min-height:80px}.btn{cursor:pointer;border:none;border-radius:6px;padding:10px 20px;font-family:inherit;font-size:.95em;transition:all .15s;display:inline-block}.btn-primary{background:var(--accent);color:#000;font-weight:600}.btn-primary:hover{filter:brightness(1.1)}.btn-secondary{background:var(--bg-card);color:var(--text);border:1px solid var(--border)}.btn-sm{padding:6px 12px;font-size:.85em}.login-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-box{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:420px;padding:32px}.login-logo{color:var(--accent);text-align:center;margin-bottom:8px;font-family:Georgia,serif;font-size:1.5em}.login-subtitle{text-align:center;color:var(--text-muted);margin-bottom:24px;font-size:.9em}.login-error{color:var(--error);background:#ef44441a;border:1px solid #ef44444d;border-radius:6px;margin-bottom:16px;padding:10px;font-size:.85em;display:none}.login-links{text-align:center;margin-top:16px;font-size:.85em}.setup-page{justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.setup-box{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:520px;padding:32px}.setup-step{display:none}.setup-step.active{display:block}.step-indicator{gap:8px;margin-bottom:24px;display:flex}.step-dot{background:var(--border);border-radius:2px;flex:1;height:4px}.step-dot.done{background:var(--success)}.step-dot.current{background:var(--accent)}.totp-code{justify-content:center;gap:8px;margin:16px 0;display:flex}.totp-code input{text-align:center;background:var(--bg);border:1px solid var(--border);width:48px;height:56px;color:var(--text);border-radius:8px;font-size:1.4em}.totp-code input:focus{border-color:var(--accent);outline:none}.streak-display{background:var(--accent-dim);border:1px solid #d4a8434d;border-radius:8px;align-items:center;gap:16px;margin-bottom:16px;padding:16px;display:flex}.streak-number{color:var(--accent);font-family:Georgia,serif;font-size:2.5em;font-weight:700}.streak-label{color:var(--text-muted);font-size:.85em}.progress-bar-track{background:var(--border);border-radius:6px;width:100%;height:12px;margin:8px 0;overflow:hidden}.progress-bar-fill{background:var(--accent);border-radius:6px;height:100%;transition:width .3s}.milestone-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-top:16px;display:grid}.milestone{background:var(--bg-card);border:1px solid var(--border);text-align:center;border-radius:8px;padding:14px}.milestone.earned{border-color:var(--accent)}.milestone-icon{margin-bottom:4px;font-size:2em}.milestone-name{font-size:.8em;font-weight:600}.diary-log{background:var(--bg-card);border:1px solid var(--border);border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:14px 16px;display:flex}.diary-log-exercise{font-weight:600}.routine-current{background:var(--accent-dim);border:1px solid #d4a8434d;border-radius:8px;margin-bottom:16px;padding:20px}.routine-files{flex-wrap:wrap;gap:12px;margin-top:12px;display:flex}.routine-file{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:6px;align-items:center;gap:8px;padding:8px 14px;font-size:.85em;display:flex}.routine-file:hover{border-color:var(--accent)}.upgrade-banner{background:var(--accent-dim);text-align:center;border:1px solid #d4a8434d;border-radius:8px;padding:20px}.upgrade-banner h3{color:var(--accent);margin-bottom:8px}.upgrade-banner p{color:var(--text-muted);margin-bottom:12px;font-size:.9em}.payment-card{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.payment-status-badge{border-radius:12px;padding:3px 10px;font-size:.75em;font-weight:600}.payment-status-badge.paid{color:var(--success);background:#4ade8026}.discord-link-card{background:#5865f214;border:1px solid #5865f233;border-radius:8px;align-items:center;gap:16px;padding:16px;display:flex}.video-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;display:grid}.video-card{background:var(--bg-card);border:1px solid var(--border);cursor:pointer;border-radius:8px;overflow:hidden}.video-card:hover{border-color:var(--accent)}.video-thumb{aspect-ratio:16/9;width:100%;color:var(--text-muted);background:#000;justify-content:center;align-items:center;font-size:2em;display:flex}.video-info{padding:10px 12px}.video-title{font-size:.9em;font-weight:600}.video-date{color:var(--text-muted);font-size:.75em}.goal-item{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;display:flex}.goal-checkbox{border:2px solid var(--border);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;display:flex}.goal-checkbox.checked{background:var(--accent);border-color:var(--accent)}.site-footer{border-top:1px solid var(--border);text-align:center;color:var(--text-muted);margin-top:40px;padding:20px;font-size:.8em}.site-footer a{color:var(--text-muted);margin:0 8px}@media (width<=768px){.sidebar{border-right:none;border-top:1px solid var(--border);flex-direction:row;align-items:center;width:100%;height:60px;padding:0;display:flex;position:fixed;top:auto;bottom:0;overflow-x:auto;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-logo,.sidebar-section,.sidebar-user{display:none}.sidebar-item{border-bottom:3px solid #0000;border-left:none;flex-direction:column;flex:none;gap:2px;padding:8px 12px;font-size:.75em}.sidebar-item.active{border-left:none;border-bottom-color:var(--accent)}.main-content{margin-left:0;padding:16px 16px 80px}}.section-note{color:var(--text-muted);margin-bottom:16px;font-size:.9em}.section-note-sm{color:var(--text-muted);margin-bottom:12px;font-size:.85em}.center-block{text-align:center}.center-block-muted{text-align:center;color:var(--text-muted)}.center-block-muted-sm{text-align:center;color:var(--text-muted);font-size:.85em}.center-block-muted-xs{text-align:center;color:var(--text-muted);font-size:.8em}.qr-placeholder{background:var(--bg);border:1px solid var(--border);width:200px;height:200px;color:var(--text-muted);border-radius:8px;justify-content:center;align-items:center;font-size:.8em;display:inline-flex}.code-chip{background:var(--bg);border-radius:4px;padding:2px 6px}.card-spacer{margin-top:16px}.stat-value{font-size:1.2em;font-weight:600}.stat-value-lg,.icon-xl{font-size:2em}.inline-role{align-items:center;gap:8px;padding:6px 0;display:flex}.progress-track-lg{height:16px}.progress-fill-zero{width:0%}.hidden{display:none!important}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent)}.text-error{color:var(--error)}.text-success{color:var(--success)}.fw-normal{font-weight:400}.text-muted-9{color:var(--text-muted);font-size:.9em}.text-muted-8{color:var(--text-muted);font-size:.8em}.text-muted-85{color:var(--text-muted);font-size:.85em}.text-11-600{font-size:1.1em;font-weight:600}.text-12-600{font-size:1.2em;font-weight:600}.text-95{font-size:.95em}.text-2em{font-size:2em}.w-full{width:100%}.flex-1{flex:1}.text-center{text-align:center}.fw-600{font-weight:600}.mb-4{margin-bottom:4px}.mb-8{margin-bottom:8px}.mb-12{margin-bottom:12px}.mb-16{margin-bottom:16px}.mb-24{margin-bottom:24px}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.my-16{margin-top:16px;margin-bottom:16px}.h-16{height:16px}.role-green{color:#4ade80}.role-purple{color:#818cf8}.role-gold{color:#d4a843}.role-gray{color:#888}.role-row{align-items:center;gap:8px;padding:6px 0;display:flex}.flex-between{justify-content:space-between;display:flex}.flex-between-center{justify-content:space-between;align-items:center;display:flex}.flex-between-baseline{justify-content:space-between;align-items:baseline;display:flex}.totp-qr-area{background:var(--bg);border:1px solid var(--border);width:200px;height:200px;color:var(--text-muted);border-radius:8px;justify-content:center;align-items:center;font-size:.8em;display:inline-flex}.progress-bar-zero{width:0%}.inline-code{background:var(--bg);border-radius:4px;padding:2px 6px}.admin-stats-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;display:grid}.admin-stat-card{background:var(--card);border:1px solid var(--border);text-align:center;border-radius:8px;padding:16px}.admin-stat-number{font-size:1.8em;font-weight:700}.admin-stat-label{color:var(--text-muted);margin-top:4px;font-size:.85em}.stat-intensive .admin-stat-number{color:#4ade80}.stat-monthly .admin-stat-number{color:#818cf8}.stat-alumni .admin-stat-number{color:#d4a843}.stat-pending .admin-stat-number{color:#888}.admin-table-header{color:var(--text-muted);border-bottom:1px solid var(--border);text-transform:uppercase;grid-template-columns:1.5fr 2fr .8fr .8fr .8fr .8fr;gap:8px;padding:8px 12px;font-size:.8em;font-weight:600;display:grid}.admin-student-row{border-bottom:1px solid var(--border);cursor:pointer;grid-template-columns:1.5fr 2fr .8fr .8fr .8fr .8fr;align-items:center;gap:8px;padding:10px 12px;font-size:.9em;transition:background .15s;display:grid}.admin-student-row:hover{background:#ffffff08}.admin-type-badge{text-transform:capitalize;border-radius:4px;padding:2px 8px;font-size:.8em;font-weight:600;display:inline-block}.status-intensive .admin-type-badge,.admin-type-badge.status-intensive{color:#4ade80;background:#4ade8026}.status-monthly .admin-type-badge,.admin-type-badge.status-monthly{color:#818cf8;background:#818cf826}.status-alumni .admin-type-badge,.admin-type-badge.status-alumni{color:#d4a843;background:#d4a84326}.status-pending .admin-type-badge,.admin-type-badge.status-pending{color:#888;background:#88888826}.admin-detail-header{align-items:center;gap:16px;margin-bottom:16px;display:flex}.admin-detail-header h3{margin:0}.admin-detail-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.admin-detail-row{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;font-size:.9em;display:flex}.admin-detail-row span:first-child{color:var(--text-muted)}.admin-actions{flex-wrap:wrap;gap:8px;display:flex}@media (width<=768px){.admin-table-header,.admin-student-row{grid-template-columns:1fr 1fr}.admin-student-email,.admin-student-active,.admin-student-discord{display:none}.admin-detail-grid{grid-template-columns:1fr}}.view-panel{display:none}.diary-log-entry{border-bottom:1px solid var(--border);padding:10px 0}.diary-log-header{align-items:center;gap:12px;margin-bottom:4px;display:flex}.diary-log-date{color:var(--text-muted);font-size:.85em}.diary-log-exercise{text-transform:capitalize;font-weight:600}.diary-log-tempo{color:var(--accent);font-size:.85em}.diary-log-note{margin:4px 0;font-size:.9em}.proof-link{color:var(--accent);font-size:.85em}.video-card{cursor:default;background:0 0;border:0;border-radius:0;margin-bottom:12px;padding:0;overflow:visible}.video-player{background:#000;border-radius:8px;width:100%;max-height:300px}.video-meta{color:var(--text-muted);margin-top:4px;font-size:.85em}.routine-link{background:var(--card);border:1px solid var(--border);color:var(--text);border-radius:6px;margin:4px 8px 4px 0;padding:8px 16px;text-decoration:none;display:inline-block}.routine-link:hover{border-color:var(--accent)}.routine-notes{margin-top:8px;font-size:.9em}.routine-history-item{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;font-size:.9em;display:flex}.goal-item{border-bottom:1px solid var(--border);justify-content:space-between;padding:6px 0;display:flex}.goal-item.completed .goal-text{color:var(--text-muted);text-decoration:line-through}.goal-status{font-size:1.2em}.milestone.earned .milestone-icon{filter:none}.milestone:not(.earned) .milestone-icon{filter:grayscale()opacity(.4)}.milestone:not(.earned) .milestone-name{color:var(--text-muted)}.recording-card{background:var(--card);border:1px solid var(--border);border-radius:8px;margin-bottom:16px;padding:16px}.recording-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.recording-type{background:var(--accent);color:#fff;border-radius:4px;margin-right:8px;padding:2px 8px;font-size:.8em}.recording-date{margin-right:8px;font-weight:600}.recording-duration{color:var(--text-muted);font-size:.85em}.recording-summary{background:var(--bg);border-radius:6px;margin:8px 0;padding:12px}.recording-summary h4{color:var(--accent);margin:0 0 8px;font-size:.9em}.recording-summary p{font-size:.9em;line-height:1.5}.recording-transcript{max-height:400px;margin-top:8px;overflow-y:auto}.recording-transcript pre{white-space:pre-wrap;color:var(--text-muted);font-size:.85em;line-height:1.6}.recording-transcript-toggle{margin-top:8px}
