:root{
  --bg:#0d1117; --bg2:#161b22; --card:#1c2230; --card2:#232b3b;
  --line:#2b3242; --txt:#e6edf3; --muted:#8b97a8; --faint:#5b6776;
  --accent:#ff7a45; --accent2:#ffb347; --green:#3fb950; --blue:#58a6ff;
  --radius:16px; --shadow:0 8px 30px rgba(0,0,0,.35);
  --grad:linear-gradient(135deg,#ff7a45,#ffb347);
}
*{box-sizing:border-box;margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:radial-gradient(1200px 600px at 80% -10%,#1d2740 0%,var(--bg) 55%);
  color:var(--txt);line-height:1.55;min-height:100vh
}
.hidden{display:none!important}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px 80px}

/* ---------- LOGIN ---------- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{background:linear-gradient(180deg,var(--card),var(--bg2));border:1px solid var(--line);
  border-radius:20px;padding:38px 34px;width:100%;max-width:380px;box-shadow:var(--shadow);
  display:flex;flex-direction:column;gap:12px;text-align:center}
.brand{font-size:1.9rem;font-weight:800;letter-spacing:-.02em}
.brand-sub{color:var(--muted);font-size:.9rem;margin-bottom:14px}
.login-card input{background:var(--bg2);border:1px solid var(--line);color:var(--txt);
  padding:13px 15px;border-radius:11px;font-size:.95rem;font-family:inherit}
.login-card input:focus{outline:none;border-color:var(--accent)}
.login-card button{background:var(--grad);color:#1a1300;border:none;padding:13px;border-radius:11px;
  font-weight:800;cursor:pointer;font-size:.95rem;margin-top:4px}
.login-card button:hover{filter:brightness(1.08)}
.login-error{color:#ff6b6b;font-size:.85rem;min-height:18px}
.hint{color:var(--faint);font-size:.78rem;margin-top:8px;line-height:1.7}
.hint b{color:var(--muted)}

/* ---------- TOPBAR ---------- */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:22px 0 8px}
.brand-row{font-size:1.3rem;font-weight:800;display:flex;align-items:center;gap:8px}
.who{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:.9rem}
.ghost{background:transparent;border:1px solid var(--line);color:var(--muted);padding:7px 14px;
  border-radius:8px;cursor:pointer;font-size:.82rem}
.ghost:hover{border-color:var(--accent);color:var(--accent)}

/* ---------- HERO ---------- */
.hero{text-align:center;padding:18px 0 6px}
.gradejump{display:flex;align-items:center;justify-content:center;gap:18px;margin:6px 0}
.grade{width:92px;height:92px;border-radius:24px;display:grid;place-items:center;
  font-size:2rem;font-weight:800;position:relative;box-shadow:var(--shadow)}
.grade small{position:absolute;bottom:8px;font-size:.55rem;font-weight:600;letter-spacing:.15em;color:rgba(255,255,255,.7)}
.g-from{background:var(--card2);border:1px solid var(--line);color:var(--muted)}
.g-to{background:var(--grad);color:#1a1300}
.arrow{font-size:1.7rem;color:var(--accent);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:translateX(0);opacity:.6}50%{transform:translateX(6px);opacity:1}}

.ladder{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:18px auto 0;max-width:760px}
.rung{font-size:.72rem;font-weight:700;padding:4px 9px;border-radius:7px;background:var(--card2);
  border:1px solid var(--line);color:var(--faint)}
.rung.done{background:rgba(63,185,80,.15);border-color:transparent;color:var(--green)}
.rung.cur{background:var(--grad);border-color:transparent;color:#1a1300}
.rung.tgt{background:transparent;border-color:var(--accent);color:var(--accent2)}

/* ---------- DASHBOARD ---------- */
.dash{display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center;
  background:linear-gradient(180deg,var(--card),var(--bg2));border:1px solid var(--line);
  border-radius:var(--radius);padding:22px 26px;margin:22px 0 8px;box-shadow:var(--shadow)}
.ring{--p:0;width:100px;height:100px;border-radius:50%;display:grid;place-items:center;
  background:conic-gradient(var(--accent) calc(var(--p)*1%),#2a3142 0);position:relative}
.ring::before{content:"";position:absolute;inset:9px;border-radius:50%;background:var(--bg2)}
.ring b{position:relative;font-size:1.55rem;font-weight:800}
.ring span{position:relative;font-size:.6rem;color:var(--muted);letter-spacing:.1em;text-transform:uppercase}
.stats{display:flex;flex-wrap:wrap;gap:12px}
.stat{background:var(--card2);border:1px solid var(--line);border-radius:12px;padding:11px 15px;flex:1;min-width:108px}
.stat b{display:block;font-size:1.4rem;font-weight:800}
.stat span{font-size:.68rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
.levelup-box{display:flex;flex-direction:column;gap:10px;align-items:stretch;min-width:200px}
.levelup{background:var(--grad);color:#1a1300;border:none;padding:13px 18px;border-radius:12px;
  font-weight:800;cursor:pointer;font-size:.92rem}
.levelup:hover{filter:brightness(1.08)}
.levelup:disabled{opacity:.5;cursor:not-allowed;filter:grayscale(.4)}
.setgrade{font-size:.78rem;color:var(--muted);display:flex;align-items:center;gap:8px;justify-content:center}
.setgrade select{background:var(--bg2);border:1px solid var(--line);color:var(--txt);padding:6px 8px;border-radius:8px;font-family:inherit}

/* ---------- TABS ---------- */
.tabs{display:flex;gap:10px;margin:34px 0 16px;flex-wrap:wrap}
.tab{background:var(--card);border:1px solid var(--line);color:var(--muted);padding:10px 22px;
  border-radius:999px;cursor:pointer;font-weight:700;font-size:.9rem;transition:.15s}
.tab:hover{color:var(--txt);border-color:var(--faint)}
.tab.active{background:var(--grad);color:#1a1300;border-color:transparent}
.weektitle h2{font-size:1.32rem;font-weight:800;margin-bottom:2px}
.lead{color:var(--muted);font-size:.92rem;margin-bottom:14px}

/* ---------- DAY CARDS ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.day{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  display:flex;flex-direction:column;box-shadow:var(--shadow)}
.day-h{padding:15px 18px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line)}
.day-h .dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.day-h .meta{flex:1}
.day-h .dname{font-weight:800;font-size:1rem}
.day-h .dfocus{font-size:.74rem;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}
.day-h .pct{font-size:.78rem;font-weight:700;color:var(--accent2)}
.tag{font-size:.6rem;padding:3px 9px;border-radius:999px;font-weight:700;letter-spacing:.05em;text-transform:uppercase}
.t-climb{background:rgba(255,122,69,.15);color:var(--accent)}
.t-strength{background:rgba(88,166,255,.15);color:var(--blue)}
.t-rest{background:rgba(123,138,163,.18);color:#9fb0c8}
.t-project{background:rgba(255,179,71,.15);color:var(--accent2)}
ul.items{list-style:none;padding:10px 8px 6px;flex:1}
ul.items li{display:flex;gap:11px;padding:9px 10px;border-radius:10px;cursor:pointer;transition:.12s;align-items:flex-start}
ul.items li:hover{background:var(--card2)}
ul.items li .cb{width:20px;height:20px;border-radius:6px;border:2px solid var(--faint);flex-shrink:0;
  margin-top:2px;display:grid;place-items:center;transition:.12s;font-size:.8rem}
ul.items li.done .cb{background:var(--green);border-color:var(--green);color:#06210d}
ul.items li.done .lbl{color:var(--faint);text-decoration:line-through}
ul.items li .lbl{font-size:.88rem}
ul.items li .lbl small{display:block;color:var(--muted);font-size:.75rem;margin-top:1px;text-decoration:none}

/* ---------- SEND LOG ---------- */
.block{margin-top:44px}
.block h2{font-size:1.35rem;font-weight:800;margin-bottom:4px}
.logform{display:flex;gap:10px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:16px;margin-bottom:16px}
.logform input,.logform select{background:var(--bg2);border:1px solid var(--line);color:var(--txt);
  padding:11px 13px;border-radius:10px;font-size:.9rem;font-family:inherit}
.logform input[type=text]{flex:1;min-width:160px}
.logform button{background:var(--grad);color:#1a1300;border:none;padding:11px 22px;border-radius:10px;font-weight:800;cursor:pointer;font-size:.9rem}
.logform button:hover{filter:brightness(1.08)}
.pyramid{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.prow{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;flex:1;min-width:78px;text-align:center}
.prow b{display:block;font-size:1.35rem;font-weight:800}
.prow .gl{font-size:.78rem;font-weight:700;color:var(--accent2)}
.prow .bar{height:6px;border-radius:4px;background:var(--grad);margin-top:8px;transition:.3s}
table.log{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
table.log th,table.log td{padding:11px 14px;text-align:left;font-size:.88rem;border-bottom:1px solid var(--line)}
table.log th{background:var(--bg2);color:var(--muted);text-transform:uppercase;font-size:.68rem;letter-spacing:.07em}
table.log tr:last-child td{border-bottom:none}
table.log .del{color:var(--faint);cursor:pointer;font-weight:700}
table.log .del:hover{color:var(--accent)}
.empty{padding:24px;text-align:center;color:var(--faint);font-style:italic}
.badge{font-size:.68rem;padding:3px 8px;border-radius:6px;font-weight:700}
.b-flash{background:rgba(63,185,80,.18);color:var(--green)}
.b-send{background:rgba(88,166,255,.18);color:var(--blue)}
.b-proj{background:rgba(255,179,71,.18);color:var(--accent2)}

/* ---------- JOURNEY ---------- */
.journey{display:flex;flex-wrap:wrap;gap:10px}
.jstep{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 16px;text-align:center}
.jstep b{display:block;font-size:1.2rem;font-weight:800;color:var(--green)}
.jstep span{font-size:.7rem;color:var(--muted)}

footer{text-align:center;color:var(--faint);font-size:.8rem;margin-top:46px}
.reset{background:transparent;border:1px solid var(--line);color:var(--muted);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.82rem;margin-top:12px}
.reset:hover{border-color:var(--accent);color:var(--accent)}
