:root{
  --bg:#14171c; --panel:#1b1f26; --panel-alt:#20242c; --line:#2b3038;
  --text:#e7e9ec; --muted:#8b93a1; --accent:#d9a441; --accent-soft:#3a3120;
  --limit:#c0554a; --reserve:#4f9d6e; --ok:#4f9d6e;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
body{margin:0; background:var(--bg); color:var(--text); font-family:-apple-system,'Helvetica Neue',Arial,sans-serif; line-height:1.4; padding-bottom:80px;}

.topbar{display:flex; align-items:center; justify-content:space-between; padding:16px 18px; border-bottom:1px solid var(--line); position:sticky; top:0; background:var(--bg); z-index:10;}
.impersonate-banner{background:var(--accent); color:#14171c; text-align:center; padding:10px 16px; font-size:13px; font-weight:600;}
.impersonate-banner a{color:#14171c; text-decoration:underline;}
.topbar .eyebrow{font-size:13px; text-transform:uppercase; letter-spacing:.08em; color:var(--accent); font-weight:600;}
.topbar-links{display:flex; gap:14px;}
.back-link, .logout-link, .topbar-links a{color:var(--muted); text-decoration:none; font-size:14px;}

main{max-width:600px; margin:0 auto; padding:20px 16px;}
main.wide{max-width:920px;}

h1{font-size:22px; margin:4px 0 2px;}
h2.plan-day-heading{font-size:15px; color:var(--accent); margin:26px 0 10px; text-transform:uppercase; letter-spacing:.04em; display:flex; align-items:center; gap:8px;}
.hint{color:var(--muted); font-size:13px; margin:0 0 18px;}
.muted{color:var(--muted); font-size:12px;}

/* Tageskacheln */
.day-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:10px;}
.day-tile{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:22px 14px; text-decoration:none; color:var(--text); display:flex; flex-direction:column; gap:4px; position:relative;}
.day-tile.today{border-color:var(--accent);}
.day-tile .weekday{font-size:11px; text-transform:uppercase; letter-spacing:.06em; color:var(--muted);}
.day-tile .label{font-size:16px; font-weight:600;}
.today-badge{position:absolute; top:10px; right:10px; background:var(--accent-soft); color:var(--accent); font-size:10px; padding:3px 8px; border-radius:20px;}
.progress-link{display:block; text-align:center; margin-top:14px; color:var(--accent); text-decoration:none; font-size:14px;}

/* Wochenrückblick */
.week-review{display:flex; justify-content:space-between; gap:4px; margin:16px 0; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:12px 10px;}
.week-day{display:flex; flex-direction:column; align-items:center; gap:4px; flex:1;}
.week-dot{width:22px; height:22px; border-radius:50%; background:var(--panel-alt); border:1px solid var(--line); display:flex; align-items:center; justify-content:center; font-size:11px; color:var(--reserve);}
.week-day.trained .week-dot{background:rgba(79,157,110,0.18); border-color:var(--reserve);}
.week-day.due .week-dot{border-color:var(--accent); border-style:dashed;}
.week-day.rest-day-cell{opacity:0.4;}
.week-day.rest-day-cell .week-dot{color:var(--muted); font-size:10px;}
.week-day.is-today .week-label{color:var(--accent); font-weight:700;}
.week-label{font-size:10px; color:var(--muted); text-transform:uppercase;}

/* Trainingsverlauf */
.month-compare{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:20px;}
.compare-row{display:grid; grid-template-columns:90px 60px 24px 1fr; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid var(--line); font-size:13px;}
.compare-row:last-child{border-bottom:none;}
.compare-label{color:var(--muted); font-size:12px;}
.compare-val{font-weight:700; color:var(--text);}
.compare-trend{font-size:14px; text-align:center;}
.trend-up{color:var(--reserve);}
.trend-down{color:var(--limit);}
.trend-flat{color:var(--muted);}
.compare-prev{color:var(--muted); font-size:11px;}
.stats-overview{display:flex; justify-content:space-around; gap:8px; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px 10px; margin-bottom:20px; text-align:center;}
.stats-overview div{display:flex; flex-direction:column; gap:2px;}
.stats-overview strong{font-size:18px; color:var(--accent);}
.stats-overview span{font-size:10.5px; color:var(--muted); text-transform:uppercase;}
.session-history-card{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:12px 14px; margin-bottom:8px;}
.session-history-top{display:flex; justify-content:space-between; align-items:center; margin-bottom:4px;}
.session-delete-btn{background:none; border:none; color:var(--muted); font-size:14px; cursor:pointer; padding:2px 6px; border-radius:6px;}
.session-delete-btn:hover{color:var(--limit); background:rgba(192,85,74,0.12);}
.session-history-date{font-size:11px; color:var(--accent); text-transform:uppercase; letter-spacing:.04em;}
.session-history-line{font-size:13px; color:var(--text); line-height:1.6;}

/* Session-Tracking (Start/Stopp, Timer) */
.session-box{margin:16px 0;}
.start-btn{width:100%; background:var(--accent); color:#14171c; border:none; border-radius:12px; padding:16px; font-size:15px; font-weight:700; cursor:pointer;}
#session-running{background:var(--accent-soft); border:1px solid var(--accent); border-radius:12px; padding:14px 16px; display:flex; align-items:center; justify-content:space-between; gap:10px;}
.session-label{font-size:12px; color:var(--accent); text-transform:uppercase; letter-spacing:.04em;}
.session-timer{font-size:20px; font-weight:700; font-variant-numeric:tabular-nums; color:var(--text);}
#session-running button{background:var(--panel); border:1px solid var(--line); color:var(--limit); border-radius:8px; padding:8px 14px; font-size:13px; cursor:pointer;}
.session-done{background:var(--panel); border:1px solid var(--reserve); border-radius:12px; padding:14px 16px; display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:13px;}
.session-done button{background:var(--accent-soft); border:none; color:var(--accent); border-radius:8px; padding:8px 14px; font-size:13px; cursor:pointer; margin-left:auto;}

/* Session-Zusammenfassung */
.summary-box{background:var(--accent-soft); border:1px solid var(--accent); border-radius:12px; padding:16px; margin:16px 0; display:flex; flex-direction:column; gap:8px; align-items:center; text-align:center;}
.summary-stats{display:flex; gap:16px; font-size:13px; color:var(--text);}
.summary-stats span{background:var(--panel); padding:6px 12px; border-radius:20px;}

/* Übungskarten */
.exercise-card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px; margin-bottom:14px; transition:border-color .2s, background .2s;}
.exercise-card.done{border-color:var(--reserve); background:rgba(79,157,110,0.06);}
.exercise-head{display:flex; justify-content:space-between; align-items:flex-start; gap:10px; margin-bottom:12px;}
.exercise-head h2{font-size:16px; margin:0 0 2px; text-transform:none; color:var(--text); letter-spacing:normal;}
.machine{font-size:12px; color:var(--muted);}
.flag{margin-left:6px; font-size:11px; padding:1px 6px; border-radius:10px;}
.flag-limit{color:var(--limit); background:rgba(192,85,74,0.15);}
.flag-reserve{color:var(--reserve); background:rgba(79,157,110,0.15);}
.ampel{margin-left:6px; font-size:10.5px; padding:1px 7px; border-radius:10px; font-weight:600; letter-spacing:.02em;}
.ampel-green{color:var(--reserve); background:rgba(79,157,110,0.15);}
.ampel-yellow{color:#d9b23a; background:rgba(217,178,58,0.15);}
.ampel-red{color:var(--limit); background:rgba(192,85,74,0.15);}
.target{font-size:11px; color:var(--accent); white-space:nowrap;}

.unlock-btn{background:var(--panel-alt); border:1px solid var(--line); color:var(--muted); border-radius:8px; padding:6px 10px; font-size:12px; margin-bottom:10px; cursor:pointer;}
.starter-hint{font-size:11.5px; color:var(--accent); background:var(--accent-soft); padding:8px 10px; border-radius:8px; margin:0 0 10px;}

.sets{display:flex; flex-direction:column; gap:8px;}
.set-row{display:grid; grid-template-columns:50px 1fr 14px 1fr 40px; align-items:center; gap:6px;}
.set-row.saved{opacity:0.85;}
.set-label{font-size:12px; color:var(--muted);}
.set-row input{width:100%; background:var(--panel-alt); border:1px solid var(--line); border-radius:8px; color:var(--text); padding:9px 6px; font-size:14px; text-align:center;}
.set-row input[readonly]{opacity:0.55;}
.set-row .x{text-align:center; color:var(--muted);}
.save-btn{background:var(--accent-soft); color:var(--accent); border:none; border-radius:8px; height:36px; font-size:16px;}
.save-btn:active{transform:scale(0.95);}
.save-btn:disabled{opacity:0.3;}
.chart-link{display:inline-block; margin-top:12px; font-size:12px; color:var(--muted); text-decoration:none;}

/* Ruhetimer */
.rest-timer{position:fixed; bottom:0; left:0; right:0; background:var(--accent); color:#14171c; display:flex; align-items:center; justify-content:center; gap:16px; padding:14px; font-weight:700; font-size:18px; z-index:20;}
.rest-timer button{background:none; border:none; color:#14171c; font-size:18px; cursor:pointer; font-weight:700;}

/* Toast */
#toast{position:fixed; bottom:90px; left:50%; transform:translateX(-50%) translateY(20px); background:var(--panel); border:1px solid var(--line); color:var(--text); padding:10px 18px; border-radius:20px; font-size:13px; opacity:0; transition:all .2s; pointer-events:none; max-width:85vw; text-align:center; z-index:30;}
#toast.show{opacity:1; transform:translateX(-50%) translateY(0);}
#toast.error{color:var(--limit); border-color:var(--limit);}

/* Fortschritt */
select#exercise-select{width:100%; background:var(--panel); border:1px solid var(--line); color:var(--text); padding:12px; border-radius:10px; font-size:14px;}
canvas{width:100%; max-height:260px;}
.log-table{margin-top:24px;}
.log-date-block{border-bottom:1px solid var(--line); padding:10px 0; font-size:13px;}
.log-date-block strong{display:block; margin-bottom:4px; color:var(--accent); font-size:12px;}
.log-set{display:inline-block; background:var(--panel-alt); padding:3px 8px; border-radius:6px; margin:2px 4px 2px 0; font-size:12.5px;}

/* Login */
.login-body{display:flex; align-items:center; justify-content:center; min-height:100vh; margin:0;}
.login-box{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:32px 26px; width:280px; display:flex; flex-direction:column; gap:14px;}
.login-box h1{font-size:18px; text-align:center; margin:0 0 6px;}
.login-box input{background:var(--panel-alt); border:1px solid var(--line); border-radius:8px; color:var(--text); padding:12px; font-size:15px;}
.login-box button{background:var(--accent); color:#14171c; border:none; border-radius:8px; padding:12px; font-size:15px; font-weight:600;}
.login-box .error{color:var(--limit); font-size:13px; margin:0;}

/* Plan-Editor */
.day-header-edit{margin:26px 0 10px;}
.day-header-view{display:flex; align-items:center; gap:8px; font-size:15px;}
.edit-day-btn{background:none; border:none; cursor:pointer; font-size:13px; opacity:0.7;}
.day-header-form{display:flex; gap:6px;}
.day-header-form input, .day-header-form select{background:var(--panel-alt); border:1px solid var(--line); border-radius:6px; color:var(--text); padding:8px; font-size:13px; flex:1;}
.day-header-form button{background:var(--accent-soft); border:none; border-radius:6px; color:var(--accent); padding:0 10px;}

.plan-row{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:12px; margin-bottom:8px; display:grid; grid-template-columns:1.4fr 1.6fr 70px 70px 70px 90px 90px 44px 44px; gap:8px; align-items:center;}
.plan-row-header{background:none; border:none; padding:0 12px; margin-bottom:4px; font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}
.plan-row input, .plan-row select{background:var(--panel-alt); border:1px solid var(--line); border-radius:6px; color:var(--text); padding:8px 8px; font-size:13px; width:100%; min-width:0;}
.plan-row input[type=number]{padding-right:4px;}
.plan-row .plan-save, .plan-row .plan-delete{background:var(--accent-soft); border:none; border-radius:6px; height:38px; font-size:15px; color:var(--accent); cursor:pointer;}
.plan-row .plan-delete{color:var(--limit); background:rgba(192,85,74,0.12);}
.plan-row-new{grid-template-columns:1fr; display:flex; flex-direction:column; gap:8px;}
.plan-row-new button{background:var(--accent); color:#14171c; border:none; border-radius:8px; padding:12px; font-weight:600; font-size:14px;}

@media (max-width:760px){
  .plan-row{grid-template-columns:1fr 1fr; grid-auto-rows:auto;}
  .plan-row-header{display:none;}
}

/* Admin / Listen */
.studio-heading{font-size:13px; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; margin:20px 0 8px; padding-bottom:6px; border-bottom:1px solid var(--line);}
.device-search-input{width:100%; background:var(--panel); border:1px solid var(--line); border-radius:10px; color:var(--text); padding:12px 14px; font-size:14px; margin-top:12px;}
.device-row{background:var(--panel); border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin-bottom:8px; display:grid; grid-template-columns:70px 1fr 100px 46px 46px; gap:10px; align-items:center;}
.device-row input{background:var(--panel-alt); border:1px solid var(--line); border-radius:6px; color:var(--text); padding:9px 8px; font-size:13px; width:100%; min-width:0;}
.device-row .plan-save, .device-row .plan-delete{background:var(--accent-soft); border:none; border-radius:6px; height:38px; font-size:14px; color:var(--accent); cursor:pointer;}
.device-row .plan-delete{color:var(--limit); background:rgba(192,85,74,0.12);}

.plan-row-header{background:none; border:none; padding:0 12px; margin-bottom:4px; font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted);}

@media (max-width:600px){
  .device-row{grid-template-columns:1fr 1fr; grid-auto-rows:auto;}
  .device-row.plan-row-header{display:none;}
}
.admin-user-row{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:10px; display:flex; justify-content:space-between; align-items:center; gap:10px;}
.admin-user-links{display:flex; flex-direction:column; gap:6px; text-align:right;}
.admin-user-links a{color:var(--accent); text-decoration:none; font-size:12.5px;}
.admin-user-links .danger-link{background:none; border:none; color:var(--limit); font-size:12.5px; cursor:pointer; padding:0; text-align:right; font-family:inherit;}
.admin-new-user{display:flex; flex-direction:column; gap:10px; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:16px; margin-top:10px;}
.admin-new-user input, .admin-new-user select{background:var(--panel-alt); border:1px solid var(--line); border-radius:8px; color:var(--text); padding:11px; font-size:14px;}
.admin-checkbox{font-size:13px; color:var(--muted); display:flex; align-items:center; gap:8px;}
.admin-new-user button{background:var(--accent); color:#14171c; border:none; border-radius:8px; padding:12px; font-weight:600;}

/* Pläne */
.plan-card{background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:14px 16px; margin-bottom:10px; display:flex; justify-content:space-between; align-items:center; gap:10px;}
.plan-card.active{border-color:var(--accent);}
.plan-card-actions{display:flex; flex-direction:column; gap:6px; align-items:flex-end;}
.plan-card-actions button, .plan-card-actions a{background:var(--panel-alt); border:1px solid var(--line); color:var(--text); border-radius:6px; padding:5px 10px; font-size:11.5px; text-decoration:none; cursor:pointer;}
.plan-card-actions button.danger{color:var(--limit);}

/* Import */
.import-error{background:rgba(192,85,74,0.1); border:1px solid var(--limit); color:var(--limit); border-radius:10px; padding:14px; margin-top:14px; font-size:13px; line-height:1.6;}
