:root{
  --bg:#0E0F11; --panel:#16181C; --card:#1E2228; --border:#2E343D;
  --text:#EBEDF1; --muted:#9BA3B0; --cap:#646C78;
  --accent:#5BA8C9; --done:#5FB68C; --wait:#C9A24A; --del:#C96A5B;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);overflow-x:hidden;
  font-family:-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}
#frame{display:block;width:100%;height:64px}
main{max-width:680px;margin:0 auto;padding:16px 14px 96px}
h2{font-weight:800;font-size:17px;margin:18px 0 10px;letter-spacing:.01em}
.muted{color:var(--muted)}
.cap{color:var(--cap);font-size:12px}

.ask{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.ask input{flex:1 1 100%;min-width:0;background:var(--card);border:1px solid var(--border);
  color:var(--text);border-radius:10px;padding:12px 14px;font-size:16px}
.ask button{flex:1 1 auto}
button{background:var(--card);border:1px solid var(--border);color:var(--text);
  border-radius:10px;padding:12px 16px;font-size:15px;font-weight:600;cursor:pointer}
button.primary{background:transparent;border-color:var(--accent);color:var(--accent)}
button:active{transform:translateY(1px)}

.cal{background:var(--panel);border:1px solid var(--border);border-radius:12px;
  padding:12px;margin-bottom:16px}
.cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;
  font-weight:700}
.cal-nav{background:var(--card);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:4px 12px;font-size:16px}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.cal-wd{text-align:center;color:var(--cap);font-size:11px;padding:2px 0}
.cal-cell{position:relative;aspect-ratio:1;display:flex;align-items:center;
  justify-content:center;border-radius:8px;font-size:14px;color:var(--muted);
  border:1px solid transparent;cursor:pointer;font-variant-numeric:tabular-nums}
.cal-cell.empty{cursor:default}
.cal-cell.has{color:var(--text)}
.cal-cell.has::after{content:"";position:absolute;bottom:5px;left:50%;
  transform:translateX(-50%);width:5px;height:5px;border-radius:50%;background:var(--accent)}
.cal-cell.today{border-color:var(--accent);border-style:dashed;color:var(--text);font-weight:600}
.cal-cell.sel{border-color:var(--accent);border-style:solid;background:var(--card);color:var(--text)}
.cal-summary{margin-top:10px;color:var(--muted);font-size:13px;
  border-top:1px solid var(--border);padding-top:8px}

.wblock{margin-bottom:18px}
.wname{width:100%;background:transparent;border:none;border-bottom:1px solid var(--border);
  color:var(--text);font-size:16px;font-weight:700;padding:6px 2px;margin-bottom:6px}
.wname:focus{outline:none;border-bottom-color:var(--accent)}
.wnote{width:100%;background:var(--panel);border:1px solid var(--border);color:var(--muted);
  border-radius:8px;padding:8px;font-size:13px;font-family:inherit;resize:vertical;margin-bottom:8px}
.wnote:focus{outline:none;border-color:var(--accent);color:var(--text)}
.wcanvas{display:block;width:100%;touch-action:manipulation;margin-bottom:4px}
.sugg{margin-top:6px}
.add-ex{width:100%;background:var(--panel);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:9px 10px;font-size:14px;margin-bottom:6px}
.add-ex:focus{outline:none;border-color:var(--accent)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{background:var(--card);border:1px solid var(--border);color:var(--muted);
  border-radius:999px;padding:5px 11px;font-size:12px;cursor:pointer}
.chip:hover{border-color:var(--accent);color:var(--text)}
.profile{background:var(--panel);border:1px solid var(--border);border-radius:12px;
  padding:10px 12px;margin-bottom:14px}
.profile summary{cursor:pointer;font-weight:700;color:var(--text)}
.profile .pf{width:100%;background:var(--card);border:1px solid var(--border);color:var(--text);
  border-radius:8px;padding:9px 10px;font-size:14px;margin-top:8px}
.profile .pf:focus{outline:none;border-color:var(--accent)}
.profile button{margin-top:10px;width:100%}
.progress-sec{margin-top:8px}
.chart{display:block;width:100%;border:1px solid var(--border);border-radius:10px;
  background:var(--panel);margin-bottom:10px}
.io-row{display:flex;gap:8px}
.io-row button,.imp-label{flex:1;text-align:center;background:var(--card);
  border:1px solid var(--border);color:var(--text);border-radius:10px;padding:11px 12px;
  font-size:14px;font-weight:600;cursor:pointer}
.imp-label input{display:none}

.card{background:var(--card);border:1px solid var(--border);border-radius:12px;
  padding:14px;margin-bottom:12px}
.ex-name{font-weight:700;margin-bottom:2px}
.planned-target{color:var(--muted);font-size:13px;font-variant-numeric:tabular-nums}
.set-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--border)}
.set-row:first-of-type{border-top:none}
.set-row .planned-target{flex:1}
.set-done{width:30px;height:30px;border-radius:7px;border:1px solid var(--border);
  background:var(--panel);color:var(--cap);font-size:16px;padding:0}
.set-row[data-done="true"] .set-done{border-color:var(--done);color:var(--done)}
.set-row[data-done="true"] .ex-name{color:var(--text)}
.set-actual-weight{width:84px;background:var(--panel);border:1px solid var(--border);
  color:var(--text);border-radius:7px;padding:7px 8px;font-size:15px;
  font-variant-numeric:tabular-nums;text-align:center}

.statusbar{position:fixed;left:0;right:0;bottom:0;background:var(--panel);
  border-top:1px solid var(--border);padding:12px 14px;display:flex;gap:12px;
  align-items:center;justify-content:space-between}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;
  vertical-align:middle}
.dot.done{background:var(--done)} .dot.wait{background:var(--wait)} .dot.off{background:var(--cap)}
#sync-status{font-size:13px}
.personal-copy .card{border-color:#2A3A33}
