:root{--ink:#16181b;--muted:#5e646d;--bg:#f5f5f6;--card:#fff;--line:#e2e4e8;--accent:#d01a2b;--accent-dark:#a31220;--dark:#0e0f11;--silver:#c9ced6;--green:#2f855a;--green-bg:#e8f5ee;--red-bg:#fbeaec}*{box-sizing:border-box;margin:0;padding:0}html{font-size:17px}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);line-height:1.6}a{color:var(--accent-dark);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:880px;margin:0 auto;padding:24px 20px 80px}.nav{background:var(--dark);color:#fff;padding:14px 20px;border-bottom:3px solid var(--accent)}.nav-inner{max-width:880px;margin:0 auto;display:flex;align-items:center;gap:20px;flex-wrap:wrap}.nav-brand{font-weight:800;letter-spacing:1px;color:#e8eaee;font-size:1.05rem;font-style:italic}.nav-brand span{color:var(--accent)}.nav a.nav-link{color:#aab0ba;font-size:.95rem}.nav a.nav-link:hover{color:#fff;text-decoration:none}.nav .spacer{flex:1 1}.nav button{background:transparent;border:1px solid #3a3e45;color:#aab0ba;border-radius:8px;padding:6px 14px;font-size:.9rem;cursor:pointer}.nav button:hover{border-color:var(--accent);color:#fff}h1{font-size:1.85rem;line-height:1.25;margin-bottom:8px}h2{font-size:1.35rem;margin:28px 0 12px}h3{font-size:1.1rem}.sub{color:var(--muted);margin-bottom:24px}.eyebrow{text-transform:uppercase;letter-spacing:1.5px;font-size:.75rem;font-weight:700;color:var(--accent);margin-bottom:6px}.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;margin-bottom:16px}.card h3{margin-bottom:6px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));grid-gap:12px;gap:12px}.week-tile{display:block;background:var(--card);border-radius:12px;padding:16px;color:var(--ink);border:1px solid var(--line);border-left:4px solid var(--silver)}.week-tile:hover{border-color:var(--accent);border-left-color:var(--accent);text-decoration:none}.week-tile .wnum{font-weight:800;font-size:.8rem;color:var(--muted);letter-spacing:.5px}.week-tile .wtitle{font-weight:700;margin:2px 0 8px;font-size:.98rem}.week-tile.done{background:var(--green-bg);border-color:#bfe3cf;border-left-color:var(--green)}.phase-label{margin:26px 0 10px;font-weight:800;color:var(--dark);text-transform:uppercase;letter-spacing:1px;font-size:.95rem;border-bottom:2px solid var(--line);padding-bottom:6px}.btn{display:inline-block;background:var(--accent);color:#fff;border:none;border-radius:10px;padding:12px 22px;font-size:1rem;font-weight:700;cursor:pointer}.btn:hover{background:var(--accent-dark);text-decoration:none;color:#fff}.btn.secondary{background:var(--dark)}.btn.small{padding:8px 14px;font-size:.9rem}.btn:disabled{opacity:.6;cursor:default}input,select,textarea{font:inherit;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;width:100%}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}label{font-weight:600;font-size:.9rem;display:block;margin-bottom:4px}.exercise{border-top:1px solid var(--line);padding:14px 0}.exercise:first-of-type{border-top:none}.exercise .name{font-weight:700}.exercise .scheme{color:var(--accent-dark);font-weight:700;font-size:.92rem}.exercise .howto{color:var(--muted);font-size:.95rem;margin-top:4px}.exercise .mod{font-size:.9rem;margin-top:4px;background:#eff1f4;border-radius:8px;padding:6px 10px;display:inline-block}.loginputs{display:flex;gap:10px;margin-top:8px}.loginputs input{max-width:130px}.badge{display:inline-block;background:var(--green-bg);color:var(--green);font-weight:700;font-size:.8rem;border-radius:999px;padding:3px 12px}.badge.gold{background:var(--red-bg);color:var(--accent-dark)}.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}.bar-row .lbl{width:70px;font-size:.85rem;color:var(--muted)}.bar-track{flex:1 1;background:#e6e8ec;border-radius:999px;height:14px;overflow:hidden}.bar-fill{background:var(--accent);height:100%;border-radius:999px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:12px;gap:12px;margin-bottom:24px}.stat{background:var(--dark);color:#fff;border:1px solid var(--dark);border-radius:12px;padding:16px;text-align:center}.stat .num{font-size:1.9rem;font-weight:800;color:#fff}.stat .num+.cap{border-top:2px solid var(--accent);display:inline-block;padding-top:4px}.stat .cap{color:var(--silver);font-size:.85rem}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}td,th{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);font-size:.93rem}th{background:var(--dark);color:#cdd2d9;font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.notice{background:var(--red-bg);border:1px solid #f0c4c9;border-radius:12px;padding:14px 16px;margin-bottom:20px;font-size:.95rem}.error{color:#b0322a;margin-top:8px}.success{color:var(--green);margin-top:8px;font-weight:600}.hero{text-align:center;padding:48px 0 24px}.hero h1{font-size:2.2rem;font-style:italic;letter-spacing:.5px}.login-box{max-width:420px;margin:24px auto;text-align:left}