:root{
  --bg:#14171c;
  --bg-soft:#1b1f26;
  --card:#20252d;
  --card-2:#262c36;
  --line:#2f3641;
  --txt:#e6e9ee;
  --txt-dim:#9aa3b0;
  --txt-faint:#6c7481;
  --accent:#6fae9b;      /* 落ち着いたセージグリーン */
  --accent-dim:#3d5f56;
  --warm:#c9a06a;        /* 伸びの表示 */
  --danger:#b56b6b;
  --r:14px;
  --safe-b:env(safe-area-inset-bottom,0px);
  --safe-t:env(safe-area-inset-top,0px);
}
@media (prefers-color-scheme: light){
  :root{
    --bg:#f2f3f5; --bg-soft:#e9ebee; --card:#ffffff; --card-2:#f4f5f7;
    --line:#dfe2e7; --txt:#1e242c; --txt-dim:#5d6674; --txt-faint:#8d95a1;
    --accent:#3f7f6d; --accent-dim:#cfe1db; --warm:#9a7233; --danger:#a85a5a;
  }
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  margin:0; background:var(--bg); color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP",sans-serif;
  font-size:16px; line-height:1.5; overscroll-behavior-y:none;
  -webkit-user-select:none; user-select:none;
}
button{font-family:inherit; color:inherit; border:none; background:none; cursor:pointer}
input{font-family:inherit}

/* ---------- レイアウト ---------- */
.screen{position:fixed; inset:0 0 0 0; display:flex; flex-direction:column; padding-top:var(--safe-t)}
.screen[hidden]{display:none}
.scroll{
  flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch;
  padding:12px 14px calc(96px + var(--safe-b));
  width:100%; max-width:560px; margin-inline:auto;
}
/* PCの広い画面ではスマホ幅に寄せて表示する */
@media (min-width:620px){
  .topbar{padding-left:calc((100% - 560px)/2 + 2px); padding-right:calc((100% - 560px)/2 + 2px)}
  .tabbar{padding-left:calc((100% - 560px)/2); padding-right:calc((100% - 560px)/2)}
}
.topbar{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:14px 16px 10px; border-bottom:1px solid var(--line); background:var(--bg-soft);
}
.topbar-title{margin:0; font-size:19px; font-weight:700; letter-spacing:.02em}
.topbar-sub{font-size:12px; color:var(--txt-faint); margin-bottom:2px}
.today-badge{
  background:var(--card); border:1px solid var(--line); border-radius:12px;
  padding:6px 12px; font-size:22px; font-weight:700; color:var(--accent); line-height:1.1;
}
.today-badge span{font-size:11px; color:var(--txt-faint); margin-left:3px; font-weight:500}

/* ---------- タブバー ---------- */
.tabbar{
  position:fixed; left:0; right:0; bottom:0; z-index:30;
  display:grid; grid-template-columns:repeat(3,1fr);
  background:var(--bg-soft); border-top:1px solid var(--line);
  padding-bottom:var(--safe-b);
}
.tab{
  display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:9px 0 8px; font-size:11px; color:var(--txt-faint); font-weight:600;
}
.tab-ico{font-size:19px; filter:grayscale(1) opacity(.65)}
.tab.is-on{color:var(--accent)}
.tab.is-on .tab-ico{filter:none}

/* ---------- カード ---------- */
.card{
  background:var(--card); border:1px solid var(--line); border-radius:var(--r);
  padding:14px; margin-bottom:12px;
}
.row-label{font-size:12px; color:var(--txt-faint); margin:14px 0 7px; font-weight:600}

/* ---------- ホームの種目カード ---------- */
.ex-card{
  width:100%; text-align:left; background:var(--card); border:1px solid var(--line);
  border-radius:var(--r); padding:14px 15px; margin-bottom:10px;
  display:flex; align-items:center; gap:12px; transition:transform .08s;
}
.ex-card:active{transform:scale(.985); background:var(--card-2)}
.ex-card-main{flex:1; min-width:0}
.ex-name{font-size:17px; font-weight:700; margin-bottom:3px}
.ex-prev{font-size:12.5px; color:var(--txt-faint); white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.ex-prev b{color:var(--txt-dim); font-weight:600}
.ex-done{
  min-width:52px; text-align:center; border-radius:10px; padding:5px 0;
  background:var(--accent-dim); color:var(--accent); font-weight:700; font-size:15px;
}
.ex-done small{display:block; font-size:10px; font-weight:500; opacity:.85}
.ex-done.is-zero{background:transparent; color:var(--txt-faint); font-size:19px}
.empty{color:var(--txt-faint); text-align:center; padding:40px 20px; font-size:14px; line-height:1.9}

/* ---------- 入力シート ---------- */
.sheet{position:fixed; inset:0; z-index:40; background:var(--bg); display:flex; flex-direction:column; padding-top:var(--safe-t)}
.sheet[hidden]{display:none}
.sheet-bar{align-items:center}
.sheet-title{font-size:17px; font-weight:700; margin:0; text-align:center; flex:1; min-width:0;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.prev-band{
  background:var(--card-2); border:1px solid var(--line); border-radius:var(--r);
  padding:10px 14px; margin-bottom:12px; font-size:13px; color:var(--txt-faint); line-height:1.7;
}
.prev-band b{color:var(--txt-dim); font-weight:700}
.set-head{display:flex; align-items:baseline; justify-content:center; gap:6px; color:var(--txt-faint); font-size:13px}
.set-no{font-size:26px; font-weight:800; color:var(--txt)}

/* ---------- ステッパー ---------- */
.side-block{margin-top:14px}
.side-label{
  display:inline-block; font-size:12px; font-weight:700; color:var(--txt-dim);
  background:var(--card-2); border-radius:8px; padding:3px 12px; margin-bottom:6px;
}
.stepper{display:flex; align-items:center; gap:10px}
.step-btn{
  flex:0 0 auto; width:76px; height:76px; border-radius:20px;
  background:var(--card-2); border:1px solid var(--line);
  font-size:34px; font-weight:300; color:var(--txt); line-height:1;
  display:flex; align-items:center; justify-content:center;
}
.step-btn:active{background:var(--accent-dim); color:var(--accent)}
.step-val{
  flex:1; height:76px; border-radius:16px; background:transparent;
  font-size:44px; font-weight:800; letter-spacing:-.02em; line-height:1;
  display:flex; align-items:baseline; justify-content:center; gap:2px;
}
.step-val small{font-size:15px; font-weight:600; color:var(--txt-faint)}
.stepper-sm .step-btn{width:60px; height:60px; border-radius:16px; font-size:28px}
.stepper-sm .step-val{height:60px; font-size:32px}
.delta{
  text-align:center; font-size:12.5px; color:var(--txt-faint); margin-top:5px; min-height:18px;
}
.delta .up{color:var(--warm); font-weight:700}
.delta .same{color:var(--txt-dim)}

/* ---------- 重量 ---------- */
.weight-row{display:flex; align-items:center; gap:10px}
.chip-bw{
  flex:0 0 auto; padding:0 14px; height:60px; border-radius:16px;
  border:1px solid var(--line); background:var(--card-2);
  font-size:15px; font-weight:700; color:var(--txt-faint);
}
.chip-bw.is-on{background:var(--accent-dim); color:var(--accent); border-color:var(--accent)}
.weight-row.bw .stepper{opacity:.28; pointer-events:none}

/* ---------- メモ ---------- */
.memo{
  width:100%; height:48px; border-radius:12px; border:1px solid var(--line);
  background:var(--card-2); color:var(--txt); padding:0 13px; font-size:15px;
  -webkit-user-select:text; user-select:text;
}
.memo:focus{outline:none; border-color:var(--accent)}
.memo-tags{display:flex; flex-wrap:wrap; gap:7px; margin-top:9px}
.tag{
  padding:6px 12px; border-radius:999px; border:1px solid var(--line);
  background:var(--card-2); font-size:12.5px; color:var(--txt-dim);
}
.tag:active{background:var(--accent-dim); color:var(--accent)}

/* ---------- ボタン ---------- */
.btn{border-radius:12px; font-weight:700; font-size:15px}
.btn-sm{padding:8px 12px; font-size:14px}
.btn-ghost{color:var(--txt-dim)}
.btn-accent{background:var(--accent); color:#0e1114}
.btn-record{
  width:100%; height:62px; margin-top:18px; border-radius:16px;
  background:var(--accent); color:#0e1114; font-size:18px; font-weight:800;
}
.btn-record:active{filter:brightness(.92)}
.btn-line{
  border:1px solid var(--line); background:var(--card-2); color:var(--txt-dim);
  padding:9px 14px; border-radius:11px; font-size:13.5px; font-weight:600;
}

/* ---------- 今日の記録リスト ---------- */
.set-item{
  display:flex; align-items:center; gap:10px; background:var(--card);
  border:1px solid var(--line); border-radius:12px; padding:11px 13px; margin-bottom:8px;
}
.set-item .n{
  width:26px; height:26px; border-radius:8px; background:var(--card-2);
  display:flex; align-items:center; justify-content:center;
  font-size:12px; font-weight:700; color:var(--txt-faint); flex:0 0 auto;
}
.set-item .body{flex:1; min-width:0}
.set-item .main{font-size:15px; font-weight:700}
.set-item .sub{font-size:12px; color:var(--txt-faint); margin-top:2px;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.set-item .del{color:var(--txt-faint); font-size:20px; padding:4px 6px; flex:0 0 auto}

/* ---------- 履歴 ---------- */
/* 種目が画面外に隠れないよう、横スクロールではなく折り返して全部見せる */
.chips{display:flex; flex-wrap:wrap; gap:7px; padding-bottom:10px; margin-bottom:2px}
.chip{
  flex:0 1 auto; max-width:100%; padding:8px 13px; border-radius:999px; border:1px solid var(--line);
  background:var(--card); font-size:13px; font-weight:600; color:var(--txt-dim);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.chip.is-on{background:var(--accent-dim); border-color:var(--accent); color:var(--accent)}
.seg{display:flex; gap:6px; background:var(--card-2); border-radius:11px; padding:4px; margin-bottom:12px}
.seg-btn{flex:1; padding:8px 0; border-radius:8px; font-size:13px; font-weight:600; color:var(--txt-faint)}
.seg-btn.is-on{background:var(--card); color:var(--txt); box-shadow:0 1px 3px rgba(0,0,0,.25)}
.chart-wrap svg{width:100%; height:auto; display:block}
.chart-note{font-size:11.5px; color:var(--txt-faint); text-align:center; margin-top:6px}
.day-group{margin-bottom:14px}
.day-head{
  display:flex; align-items:baseline; gap:8px; margin:0 2px 7px;
  font-size:13px; font-weight:700; color:var(--txt-dim);
}
.day-head .sum{font-size:11.5px; color:var(--txt-faint); font-weight:500}

/* ---------- 種目管理 ---------- */
.mg-item{
  display:flex; align-items:center; gap:10px; background:var(--card);
  border:1px solid var(--line); border-radius:12px; padding:11px 12px; margin-bottom:9px;
}
.mg-main{flex:1; min-width:0}
.mg-name{font-size:15.5px; font-weight:700}
.mg-meta{font-size:11.5px; color:var(--txt-faint); margin-top:2px}
.mg-btn{
  width:38px; height:38px; border-radius:10px; background:var(--card-2);
  border:1px solid var(--line); font-size:15px; color:var(--txt-dim);
  display:flex; align-items:center; justify-content:center; flex:0 0 auto;
}
.mg-btn:disabled{opacity:.3}

/* ---------- トースト ---------- */
.toast{
  position:fixed; left:50%; transform:translateX(-50%);
  bottom:calc(86px + var(--safe-b)); z-index:60;
  background:var(--accent); color:#0e1114; font-weight:700; font-size:14px;
  padding:11px 20px; border-radius:999px; box-shadow:0 6px 20px rgba(0,0,0,.35);
  animation:pop .18s ease-out;
}
.toast[hidden]{display:none}
@keyframes pop{from{opacity:0; transform:translate(-50%,8px)}to{opacity:1; transform:translate(-50%,0)}}

/* ---------- 日付えらび ---------- */
.topbar-date{
  display:block; text-align:left; padding:2px 6px 2px 0; border-radius:10px; min-width:0;
}
.topbar-date:active{background:var(--card-2)}
.caret{font-size:13px; color:var(--txt-faint); vertical-align:2px}
.date-band{
  display:block; width:100%; text-align:center; margin-bottom:10px;
  border-radius:12px; padding:9px 12px; font-size:13px; font-weight:600;
  background:var(--card-2); border:1px solid var(--line); color:var(--txt-faint);
}
.date-band.is-past{
  background:rgba(201,160,106,.14); border-color:var(--warm); color:var(--warm);
}
.back-banner{
  display:flex; align-items:center; gap:8px; margin-bottom:11px;
  background:rgba(201,160,106,.14); border:1px solid var(--warm); color:var(--warm);
  border-radius:12px; padding:10px 13px; font-size:13px; font-weight:700;
}
.back-banner .ret{
  margin-left:auto; font-size:12px; font-weight:700; color:var(--warm);
  border:1px solid var(--warm); border-radius:999px; padding:4px 10px;
}
.modal{position:fixed; inset:0; z-index:70; display:flex; align-items:flex-end; justify-content:center}
.modal[hidden]{display:none}
.modal-back{position:absolute; inset:0; background:rgba(0,0,0,.5)}
.modal-card{
  position:relative; width:100%; max-width:560px;
  background:var(--card); border:1px solid var(--line);
  border-radius:20px 20px 0 0; padding:18px 16px calc(22px + var(--safe-b));
  animation:slideup .18s ease-out;
}
@keyframes slideup{from{transform:translateY(16px);opacity:.6}to{transform:translateY(0);opacity:1}}
.modal-title{font-size:15px; font-weight:700; margin-bottom:12px; text-align:center}
.date-opt{
  display:flex; align-items:center; gap:10px; width:100%;
  background:var(--card-2); border:1px solid var(--line); border-radius:13px;
  padding:14px 16px; margin-bottom:8px; font-size:16px; text-align:left;
}
.date-opt b{font-weight:700}
.date-opt span{margin-left:auto; font-size:13px; color:var(--txt-faint); font-weight:600}
.date-opt.is-on{border-color:var(--accent); background:var(--accent-dim); color:var(--accent)}
.date-opt.is-on span{color:var(--accent)}
input[type=date]{-webkit-appearance:none; appearance:none; height:48px}
