:root{
  --ink:#1d2a3a; --ink-2:#4a5a6c; --ink-3:#7a8797;
  --bg:#f4f1ea; --card:#fff; --line:#e3ddd1; --tile:#ebe6db;
  --pri:#1f8a8c; --pri-ink:#fff; --dark:#1d2a3a;
  --bad:#b4442d; --bad-bg:#fbe5df;
  --radius:14px; --shadow:0 1px 2px rgba(29,42,58,.06),0 4px 14px rgba(29,42,58,.05);
}
@media (prefers-color-scheme: dark){
  :root{
    --ink:#e8ecf1; --ink-2:#b5c0cc; --ink-3:#8a97a5;
    --bg:#14191f; --card:#1d242c; --line:#2e3742; --tile:#262f39;
    --pri:#2aa3a5; --dark:#e8ecf1; --bad:#e2775f; --bad-bg:#3a2420;
    --shadow:none;
  }
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,"Hiragino Sans","Noto Sans JP",sans-serif;font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;padding-bottom:env(safe-area-inset-bottom,0)}
button,input,select,textarea{font:inherit;color:inherit}
.hide{display:none!important}
.sp{flex:1}
.note{color:var(--ink-3);font-size:13px;margin:0}
.num{font-variant-numeric:tabular-nums}

header.top{position:sticky;top:0;z-index:10;padding-top:env(safe-area-inset-top,0);background:var(--bg);background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top-in{max-width:760px;margin:0 auto;padding:10px 16px;display:flex;align-items:center;gap:10px}
.brand{display:flex;align-items:center;gap:10px;flex:1;min-width:0}
.mark{width:32px;height:32px;border-radius:9px;background:var(--pri);flex:none;position:relative}
.mark::after{content:"";position:absolute;inset:8px;border:2.5px solid #fff;border-radius:50%;border-top-color:transparent}
.brand h1{font-size:17px;margin:0;line-height:1.2;white-space:nowrap}
.brand small{display:block;color:var(--ink-3);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.month{display:flex;align-items:center;gap:6px;font-weight:600;white-space:nowrap}

main,.setup{max-width:760px;margin:0 auto;padding:14px max(16px,env(safe-area-inset-right)) 40px max(16px,env(safe-area-inset-left));display:grid;gap:14px}
main>*{min-width:0}
.setup{margin-top:24px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
.card h2{font-size:15px;margin:0 0 12px;display:flex;align-items:center;gap:8px}
.total{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}

.btn{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:8px 14px;cursor:pointer;min-height:40px}
.btn:disabled{opacity:.5;cursor:default}
.btn.sm{padding:4px 10px;min-height:32px;font-size:13px}
.btn.pri{background:var(--pri);border-color:var(--pri);color:var(--pri-ink);font-weight:600}
.btn.dark{background:var(--dark);border-color:var(--dark);color:var(--bg);font-weight:600}
.btn.danger{color:var(--bad)}
.btn.big{min-height:52px;padding:0 24px;font-size:16px;border-radius:12px}

.cats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.chip-cat{--c:#888;border:1.5px solid var(--c);color:var(--c);background:transparent;border-radius:999px;padding:6px 14px;cursor:pointer;font-weight:600;min-height:38px}
.chip-cat.on{background:var(--c);color:#fff}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.f{display:grid;gap:4px;font-size:13px;color:var(--ink-2);min-width:0}
.f input,.f select,.f textarea{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:var(--bg);color:var(--ink);min-height:42px;width:100%;min-width:0;max-width:100%;font-size:16px;display:block;margin:0}
.f input[type=date],.f input[type=time]{-webkit-appearance:none;appearance:none;text-align:left;line-height:24px}
.f input::-webkit-date-and-time-value{text-align:left;margin:0}
.f select{-webkit-appearance:none;appearance:none;padding-right:28px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);background-position:calc(100% - 15px) 50%,calc(100% - 10px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.f textarea{font-family:ui-monospace,Menlo,monospace;font-size:14px}
.clockrow{display:flex;align-items:center;gap:16px;margin-top:14px}
.clock{font-size:40px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--ink-3);flex:1}
.clock.run{color:var(--ink)}
#tNote{margin-top:6px}

.cat-row{--c:#888;padding:8px 0;border-top:1px solid var(--line)}
.cat-row:first-child{border-top:0;padding-top:0}
.cat-head{display:flex;align-items:center;gap:8px}
.cat-head .name{font-weight:600}
.cat-head .pct{color:var(--ink-3);font-size:12px;width:38px;text-align:right}
.dot{width:10px;height:10px;border-radius:50%;background:var(--c);flex:none}
.bar{height:8px;background:var(--tile);border-radius:6px;margin-top:6px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--c);border-radius:6px}
.projs{list-style:none;margin:6px 0 0;padding:0 0 0 18px;font-size:13px;color:var(--ink-2)}
.projs li{display:flex;justify-content:space-between;gap:8px}
#yearNote{margin-top:10px}

.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.grid .wide{grid-column:1/-1}
.acts{display:flex;align-items:center;gap:8px;margin-top:12px;flex-wrap:wrap}

.day{border-top:1px solid var(--line);padding:10px 0}
.day:first-child{border-top:0;padding-top:0}
.day-head{display:flex;justify-content:space-between;font-weight:600;font-size:13px;color:var(--ink-2);margin-bottom:4px}
.ent{--c:#888;display:flex;align-items:center;gap:10px;padding:6px 0}
.ent-main{flex:1;min-width:0}
.ent-main .note{overflow-wrap:anywhere}
.ent-acts{display:flex;gap:4px}
.empty{color:var(--ink-3);text-align:center;margin:8px 0}

dialog{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink);padding:18px;width:min(560px,calc(100vw - 32px))}
dialog::backdrop{background:rgba(20,25,31,.45)}
dialog h2{margin:0 0 12px;font-size:16px}
dialog .grid{grid-template-columns:1fr 1fr}

#toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0));transform:translate(-50%,20px);background:var(--dark);color:var(--bg);padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:.2s;max-width:calc(100vw - 32px);z-index:50}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast.bad{background:var(--bad);color:#fff}

@media (max-width:560px){
  .top-in{gap:8px;padding:8px 12px}
  .brand small{display:none}
  .brand h1{font-size:16px}
  .month{gap:4px}
  .month .btn.sm{padding:4px 9px}
  .row2{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr 1fr}
  .grid .date,.grid .proj{grid-column:1/-1}
  .clock{font-size:34px}
  .ent{flex-wrap:wrap}
  .ent-acts{width:100%;justify-content:flex-end}
  .month span{font-size:14px}
}
@media (max-width:360px){
  .mark{width:28px;height:28px}
  .mark::after{inset:7px}
  .brand h1{font-size:15px}
  .month span{font-size:13px}
}
