/* Linus' Marathon Coach – V1 */
:root{
  --ink:#10242F; --ground:#F4F5F1; --card:#FFFFFF; --line:#DCE0D8; --line2:#E6E9E3;
  --muted:#55636B; --text:#3B4A52; --lake:#1D5C7A; --lake2:#9CC3D5; --lake3:#E7EEF2;
  --acc:#F08A4B; --acc2:#C2410C;
  --okb:#E3F1E8; --okt:#1F6A3E; --hib:#FDEBDD; --hit:#9A3412; --wab:#FFF4D6; --wat:#8A5300; --bab:#FBE3E0; --bat:#9B1C1C;
  --r:14px; --disp:'Archivo', 'Arial Narrow', sans-serif; --body:'Source Sans 3', system-ui, -apple-system, sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:16px/1.5 var(--body)}
[hidden]{display:none!important}
a{color:var(--lake)} a:hover{color:var(--ink)}
h1,h2,h3,h4{font-family:var(--disp);font-stretch:78%;font-weight:700;margin:0;line-height:1.1;letter-spacing:-.005em}
h1{font-size:40px} h2{font-size:26px} h3{font-size:20px} h4{font-size:17px;margin-top:8px}
p{margin:0}
.num{font-family:var(--disp);font-stretch:72%;font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.num.md{font-size:28px;line-height:1.05}
.lbl{font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.lbl.light{color:#A9BAC3}
.lbl2{font-size:14px;font-weight:600;color:var(--text)}
.muted{color:var(--muted)} .small{font-size:14px}
.mt{margin-top:14px}
.t-ok{color:var(--okt);font-weight:600} .t-high{color:var(--acc2);font-weight:600}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.row{display:flex;align-items:center;gap:8px} .row.between{justify-content:space-between} .row.end{justify-content:flex-end} .row.wrap{flex-wrap:wrap} .row.gap{gap:8px}

/* Login */
.login{min-height:100vh;min-height:100dvh;background:var(--ink);color:#fff;display:flex;justify-content:center}
.login-in{width:100%;max-width:440px;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:64px 28px 32px}
.login-top{display:flex;flex-direction:column;gap:18px}
.login h1{font-size:50px;font-stretch:72%;line-height:1}
.login-top p{color:#A9BAC3;font-size:17px}
.login-form{display:flex;flex-direction:column;gap:12px}
.login-form label{font-size:14px;font-weight:600;color:#DDE6EA}
.login-form input[type=password]{height:52px;border-radius:12px;border:1px solid #3A5462;background:#1A3441;color:#fff;padding:0 16px;font:16px var(--body)}
.login-form input[type=password]:focus{outline:3px solid var(--acc);outline-offset:1px}
.login-form .remember{display:flex;align-items:center;gap:10px;font-weight:400;color:#C9D6DC;min-height:44px}
.login-form .remember input{width:20px;height:20px;accent-color:var(--acc)}
.login-form button{height:52px;border-radius:12px;border:0;background:var(--acc2);color:#fff;font:700 17px var(--body);cursor:pointer}
.login-form button:hover{background:#A8360A} .login-form button:disabled{opacity:.7;cursor:wait}
.login-err{color:#FFB38A;font-weight:600;min-height:1.5em}
.login-note{font-size:13px;color:#A9BAC3}
.login-foot{font-size:12px;color:#7E95A1}

/* Header */
.top{background:var(--ink);color:#fff;position:sticky;top:0;z-index:20}
.top-in{max-width:1320px;margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:16px;justify-content:space-between}
.brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none}
.brand:hover{color:#fff}
.brand b{display:block;font-family:var(--disp);font-stretch:72%;font-size:24px;line-height:1}
.brand small{display:block;font-size:13px;color:#A9BAC3}
.nav{display:flex;gap:4px}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:10px;color:#DDE6EA;text-decoration:none;font-weight:600}
.nav a:hover{background:#1A3441;color:#fff}
.nav a.on{background:var(--lake);color:#fff}
.top-act{display:flex;align-items:center;gap:6px}
.stamp{font-size:12px;color:#A9BAC3;margin-right:4px}
.iconbtn{width:40px;height:40px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px}
.iconbtn.dark{background:#1A3441;border-color:#2C4757;color:#DDE6EA}
.iconbtn.dark:hover{background:var(--lake);color:#fff}

/* Layout */
.main{max-width:1320px;margin:0 auto;padding:28px 24px 48px;display:flex;flex-direction:column;gap:20px;outline:none}
.foot{max-width:1320px;margin:0 auto;padding:0 24px 32px;font-size:13px;color:var(--muted)}
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g6{grid-template-columns:repeat(6,minmax(0,1fr))}
.grid.tight{gap:10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px;display:flex;flex-direction:column;gap:12px;min-width:0}
.tile{background:var(--ground);border-radius:10px;padding:12px;min-width:0}
.tile.alert{background:var(--hib);color:#7C2D12} .tile.alert .num{color:var(--hit)}
.pagehead{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.pagehead p{margin-top:6px}
.sechead{margin:8px 0 14px} .sechead p{margin-top:4px}
.loading{display:flex;align-items:center;gap:12px;color:var(--muted);padding:40px 0;justify-content:center}
.loading.small{padding:16px 0;justify-content:flex-start}
.spin{width:22px;height:22px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--lake);animation:spin 0.9s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 16px;border-radius:10px;border:1px solid #C9CFC6;background:#fff;color:var(--ink);font:600 15px var(--body);cursor:pointer;text-decoration:none;text-align:left}
.btn:hover{border-color:var(--lake);color:var(--lake)}
.btn.sm{min-height:36px;padding:0 12px;font-size:14px}
.btn.xs{min-height:30px;padding:0 10px;font-size:13px}
.btn.primary{background:var(--acc2);border-color:var(--acc2);color:#fff} .btn.primary:hover{background:#A8360A;color:#fff}
.btn.ghost{border-color:transparent;color:var(--muted)}
.exp{display:flex;gap:6px;flex-wrap:wrap}
.exp .btn{min-height:32px;padding:0 10px;font-size:13px;color:var(--muted)}
button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--acc);outline-offset:2px}

/* Chips */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:4px 10px;border-radius:999px;background:#EEF2EC;color:var(--text);white-space:nowrap;align-self:flex-start}
.chip.ok{background:var(--okb);color:var(--okt)} .chip.warn{background:var(--wab);color:var(--wat)}
.chip.high{background:var(--hib);color:var(--hit)} .chip.bad{background:var(--bab);color:var(--bat)} .chip.blue{background:var(--lake3);color:var(--lake)}

/* Hero */
.hero{background:var(--ink);color:#fff;border-radius:18px;padding:30px;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:28px;position:relative;overflow:hidden}
.hero::after{content:"";position:absolute;right:-60px;bottom:-80px;width:340px;height:220px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 34 34'%3E%3Cpath d='M4 24c5 0 6-14 13-14s8 14 13 14' fill='none' stroke='%231D5C7A' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat center/contain;opacity:.6;pointer-events:none}
.hero-main{display:flex;flex-direction:column;gap:12px;position:relative;z-index:1}
.eyebrow{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--acc)}
.hero-title{font-size:44px;font-stretch:72%}
.hero-title .big{font-size:84px;line-height:.9;color:#fff;display:inline-block;margin-right:6px}
.hero-sub{font-size:18px;color:#C9D6DC}
.progress{height:8px;background:#1A3441;border-radius:999px;overflow:hidden}
.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--lake2),var(--acc));border-radius:999px}
.progress.small{background:var(--line2);height:6px}
.quote{margin:8px 0 0;padding:14px 18px;border-left:4px solid var(--acc);background:rgba(255,255,255,.05);border-radius:0 12px 12px 0}
.quote p{font-family:var(--disp);font-stretch:80%;font-size:22px;line-height:1.25;font-weight:600}
.quote footer{margin-top:8px;font-size:13px;color:#A9BAC3}
.hero-goal{background:#1A3441;border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:6px;position:relative;z-index:1;align-self:start}
.goalnum{font-family:var(--disp);font-stretch:72%;font-weight:800;font-size:76px;line-height:.95}
.goalnum small{font-size:28px;font-weight:600;color:#A9BAC3}
.goalsub{color:#C9D6DC;font-size:15px}
.pbar{position:relative;height:30px;margin-top:10px}
.pbar .track{position:absolute;left:0;right:0;top:12px;height:6px;border-radius:999px;background:#2C4757}
.pbar .range{position:absolute;top:8px;height:14px;border-radius:999px;background:rgba(240,138,75,.45);border:1px solid var(--acc)}
.pbar .mark{position:absolute;top:2px;width:3px;height:26px;border-radius:2px;transform:translateX(-50%)}
.pbar .mark.goal{background:#fff} .pbar .mark.lim{background:#FF6B57}
.plegend{display:flex;justify-content:space-between;font-size:12px;color:#A9BAC3}

/* Readiness */
.ready{border-left:6px solid var(--okt)}
.ready.warn{border-left-color:#D69E00} .ready.high{border-left-color:var(--acc2)} .ready.bad{border-left-color:var(--bat)}
.ready-msg{font-size:18px;font-weight:700;line-height:1.3}
.kv4{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.today-wo{display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.tw-name{font-family:var(--disp);font-stretch:80%;font-size:22px;font-weight:700;line-height:1.15}

/* Rate CTA */
.rate-cta{border:2px solid var(--acc);background:#FFF8F3}
.rate-list{display:flex;flex-wrap:wrap;gap:8px}

/* Markdown */
.md{color:var(--text)} .md p{margin:0 0 8px} .md ul{margin:0 0 8px;padding-left:20px} .md li{margin-bottom:4px}
.md p:last-child,.md ul:last-child{margin-bottom:0}
.review h2{font-size:28px}
.coachbox{background:var(--lake3);border-radius:12px;padding:14px 16px;color:var(--ink)}
.coachbox.ok{background:var(--okb)} .coachbox.warn{background:var(--wab)} .coachbox.high{background:var(--hib)}
.coachbox p{margin:4px 0 0}

/* Workouts */
.wolist{display:flex;flex-direction:column}
.wo{border-top:1px solid var(--line2)}
.wo:first-child{border-top:0}
.wo summary{display:flex;align-items:center;gap:14px;padding:10px 0;cursor:pointer;list-style:none;min-height:56px}
.wo summary::-webkit-details-marker{display:none}
.wo-day{width:52px;height:52px;border-radius:12px;background:var(--lake3);color:var(--lake);display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none}
.wo-day .num{font-size:20px;line-height:1}
.wo-main{flex:1;min-width:0}
.wo-name{font-weight:700}
.wo.opt .wo-day{background:var(--ground);color:var(--muted)} .wo.opt .wo-name{color:var(--text)}
.wo-desc{padding:0 0 12px 66px}
.weekblock{display:flex;flex-direction:column;gap:4px;padding-top:8px}
.weekblock h3{font-size:18px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* Tables */
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse;font-size:15px}
th{font-size:13px;color:var(--muted);font-weight:600;text-align:left;padding:8px;white-space:nowrap}
td{padding:9px 8px;border-top:1px solid var(--line2);vertical-align:middle}
tr.dim td{color:#8A969C}
tr.hl td{background:var(--hib)}
table.pace td.num{font-size:18px}

/* Charts */
.chartbox{position:relative;height:240px}
.chartbox.tall{height:300px}

/* Phases */
.phases{display:flex;gap:4px;border-radius:12px;overflow:hidden}
.ph{padding:12px;display:flex;flex-direction:column;gap:2px;min-width:0;font-size:14px}
.ph b{font-family:var(--disp);font-stretch:80%;font-size:18px}
.ph em{font-style:normal;color:var(--text)}
.ph1{background:var(--lake3)} .ph2{background:var(--hib)} .ph3{background:#ECEFEA}
.ph.now{box-shadow:inset 0 -4px 0 var(--acc2)}
.milestones{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.milestones li{background:var(--ground);border-radius:999px;padding:6px 12px;font-size:14px}
.milestones li.past{opacity:.55;text-decoration:line-through}
.plain{margin:0;padding-left:20px} .plain li{margin-bottom:6px}

/* Zones bar */
.zbar{display:flex;height:16px;border-radius:999px;overflow:hidden;background:var(--line2)}
.zleg{display:flex;flex-wrap:wrap;gap:12px;font-size:13px;color:var(--muted)}
.zleg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px}
.runhead{display:flex;flex-direction:column;gap:4px}
.select{min-height:40px;border-radius:10px;border:1px solid #C9CFC6;background:#fff;padding:0 10px;font:15px var(--body);color:var(--ink);max-width:100%}
.rev{border-top:1px solid var(--line2);padding:10px 0}
.rev summary{cursor:pointer;min-height:32px}
.rev .md{margin-top:8px}

/* Wissen */
.subnav{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;position:sticky;top:68px;z-index:5;background:var(--ground);padding-top:6px}
.subnav a{flex:none;display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;color:var(--ink);font-weight:600;font-size:14px}
.subnav a:hover{border-color:var(--lake);color:var(--lake)}
section[id]{scroll-margin-top:130px}
.checkgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}
.checkgrp h3{font-size:18px;margin-bottom:6px}
.check{display:flex;gap:10px;align-items:flex-start;padding:6px 0;cursor:pointer;min-height:36px}
.check input{width:20px;height:20px;margin-top:2px;flex:none;accent-color:var(--lake)}
.check input:checked+span{color:var(--muted);text-decoration:line-through}
.filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.fbtn{min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--line);background:#fff;font:600 14px var(--body);cursor:pointer;color:var(--ink)}
.fbtn.on{background:var(--ink);border-color:var(--ink);color:#fff}
.ex h3{font-size:20px}
.steps{margin:0;padding-left:20px;font-size:15px;color:var(--text)} .steps li{margin-bottom:4px}
.tip{font-size:14px;background:var(--wab);color:#5C3B00;border-radius:10px;padding:8px 12px}
.addbtn{width:40px;height:40px;border-radius:50%;border:2px solid var(--acc2);background:#fff;color:var(--acc2);font:700 22px/1 var(--body);cursor:pointer;flex:none}
.addbtn.on{background:var(--acc2);color:#fff}
.proglist{margin:0;padding:0;list-style:none;counter-reset:p;display:flex;flex-direction:column}
.proglist li{counter-increment:p;display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line2)}
.proglist li::before{content:counter(p);width:32px;height:32px;border-radius:50%;background:var(--lake3);color:var(--lake);font:700 16px var(--disp);display:flex;align-items:center;justify-content:center;flex:none}
.pl-main{flex:1;display:flex;flex-direction:column;min-width:0}
.pl-act{display:flex;gap:4px}
.print-only{display:none}

/* Dialog */
dialog{border:0;border-radius:16px;padding:0;max-width:520px;width:calc(100% - 32px);box-shadow:0 20px 60px rgba(16,36,47,.35)}
dialog::backdrop{background:rgba(16,36,47,.55)}
.dlg{padding:22px;display:flex;flex-direction:column;gap:14px}
.dlg fieldset{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}
.dlg legend{font-weight:700;margin-bottom:8px}
.rpe{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:4px}
.rpeb,.feelb{min-height:44px;border-radius:10px;border:1px solid var(--line);background:#fff;font:700 16px var(--body);cursor:pointer;color:var(--ink)}
.rpeb.on,.feelb.on{background:var(--acc2);border-color:var(--acc2);color:#fff}
.feel{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.feelb{font-size:14px}
textarea{width:100%;border-radius:10px;border:1px solid #C9CFC6;padding:10px;font:15px var(--body);resize:vertical}

/* Toast */
.toast{position:fixed;left:50%;bottom:90px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;font-weight:600;opacity:0;transition:.25s;z-index:100;pointer-events:none}
.toast.show{opacity:1;transform:translate(-50%,0)} .toast.err{background:var(--bat)}

/* Tabbar (mobil) */
.tabbar{display:none}

@media (max-width:1100px){
  .g3{grid-template-columns:repeat(2,minmax(0,1fr))}
  .g6{grid-template-columns:repeat(3,minmax(0,1fr))}
  .brand small{display:none}
  .stamp{display:none}
}
@media (max-width:860px){
  .nav{display:none}
  .top-in{padding:10px 16px}
  .brand b{font-size:20px}
  .main{padding:16px 16px 100px;gap:14px}
  .foot{padding:0 16px 100px}
  .grid{gap:14px}
  .g2,.g3{grid-template-columns:minmax(0,1fr)}
  .g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card{padding:16px}
  .hero{grid-template-columns:minmax(0,1fr);padding:20px;gap:18px}
  .hero-title{font-size:32px}
  .hero-title .big{font-size:64px}
  .goalnum{font-size:60px}
  .quote p{font-size:19px}
  h1{font-size:32px}
  .tabbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:30;padding-bottom:env(safe-area-inset-bottom)}
  .tabbar a{min-height:60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:12px;color:var(--muted);text-decoration:none;font-weight:600}
  .tabbar a.on{color:var(--lake);font-weight:700}
  .subnav{top:60px}
  .phases{flex-direction:column}
  .ph{flex:none!important}
  .wo-desc{padding-left:0}
  .toast{bottom:84px}
}
@media (max-width:420px){
  .g6{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rpe{grid-template-columns:repeat(5,minmax(0,1fr))}
  .feel{grid-template-columns:repeat(3,minmax(0,1fr))}
  .login h1{font-size:42px}
}

/* Bild-Export */
.exporting .exp,.exporting .btn,.exporting select{visibility:hidden}

/* Druck / PDF */
@media print{
  @page{margin:14mm}
  body{background:#fff;font-size:12pt}
  .top,.tabbar,.foot,.exp,.subnav,.filters,.addbtn,.pl-act,.btn,.iconbtn,dialog{display:none!important}
  .card{border:1px solid #ccc;break-inside:avoid}
  .hero{background:#fff;color:#000;border:1px solid #ccc}
  .print-only{display:block}
  body.printing-one .main>*{display:none!important}
  body.printing-one .main .print-target{display:flex!important}
  body.printing-one .main section:has(.print-target){display:block!important}
  body.printing-one .main section:has(.print-target)>*:not(.print-target){display:none!important}
  .chartbox{height:260px}
  details{display:block} details>*{display:block}
}

/* V2: Benutzer & Admin */
.selwrap{position:relative}
.selwrap::after{content:"";position:absolute;right:18px;top:50%;width:8px;height:8px;border-right:2px solid #DDE6EA;border-bottom:2px solid #DDE6EA;transform:translateY(-70%) rotate(45deg);pointer-events:none}
.login-form select{width:100%;height:52px;border-radius:12px;border:1px solid #3A5462;background:#1A3441;color:#fff;padding:0 44px 0 16px;font:600 16px var(--body);appearance:none;-webkit-appearance:none;cursor:pointer}
.login-form select:focus{outline:3px solid var(--acc);outline-offset:1px}
.login-hint{font-size:13px;color:#A9BAC3;margin-top:-4px;min-height:1.2em}
.who{display:flex;flex-direction:column;align-items:flex-end;line-height:1.1;margin-right:6px}
.who b{font-size:14px;color:#fff} .who small{font-size:11px;color:var(--acc);font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.nav a[hidden],.tabbar a[hidden]{display:none!important}
body[data-role=admin] .tabbar{grid-template-columns:repeat(5,minmax(0,1fr))}
.input{min-height:42px;border-radius:10px;border:1px solid #C9CFC6;background:#fff;padding:0 12px;font:15px var(--body);color:var(--ink);width:100%}
.fld{display:flex;flex-direction:column;gap:6px;min-width:0}
.preview{background:var(--ground);border-radius:10px;padding:12px;min-height:120px;overflow:auto;max-height:340px}
textarea.mono{font:13px/1.45 ui-monospace,SFMono-Regular,Menlo,monospace}
#admRun .row .input{flex:1}
@media (max-width:860px){ .who{display:none} }
.main > .grid > .tile{background:var(--card);border:1px solid var(--line);padding:14px 16px}
