:root{--bg:#f6f7f9;--surface:#fff;--text:#1d2330;--muted:#657084;--border:#dde1e8;--accent:#2456d6;--accent-text:#fff;--ok-bg:#e6f4ea;--ok-text:#1e6b34;--warn-bg:#fff4e0;--warn-text:#8a5300;--error-bg:#fdeaea;--error-text:#a12626;--info-bg:#eaf0fd;--info-text:#23408f;color:var(--text);background:var(--bg);font-family:Hiragino Sans,Noto Sans JP,system-ui,sans-serif}*{box-sizing:border-box}body{background:var(--bg);margin:0}a{color:var(--accent)}h1{margin:0;font-size:1.4rem}h2{margin:0 0 12px;font-size:1.05rem}.layout{min-height:100vh}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:16px;padding:12px 24px;display:flex}.topbar nav{gap:12px;display:flex}.topbar nav a{color:var(--muted);border-radius:6px;padding:4px 8px;text-decoration:none}.topbar nav a.active{color:var(--text);background:var(--bg)}.brand{font-weight:700}.spacer{flex:1}.content{max-width:1040px;margin:0 auto;padding:24px 16px 64px}.center{text-align:center;margin-top:30vh}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin:8px 0 16px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:20px}.form-grid{gap:14px;display:grid}.form-actions{align-items:center;gap:12px;display:flex}.field{gap:6px;display:grid}.field-label{font-size:.9rem;font-weight:600}.field-hint,.muted{color:var(--muted);font-size:.85rem}input,select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;width:100%;padding:8px 10px}input:disabled{background:var(--bg)}.checkbox{align-items:center;gap:8px;display:flex}.checkbox input{width:auto}.button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:8px 14px}.button:disabled{opacity:.6;cursor:default}.button-secondary{background:var(--surface);color:var(--accent)}.notice{border-radius:8px;margin-bottom:12px;padding:10px 14px}.notice-info{background:var(--info-bg);color:var(--info-text)}.notice-success{background:var(--ok-bg);color:var(--ok-text)}.notice-warning{background:var(--warn-bg);color:var(--warn-text)}.notice-error{background:var(--error-bg);color:var(--error-text)}.table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:10px;width:100%;margin-bottom:16px;overflow:hidden}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px}.table th{color:var(--muted);font-size:.85rem;font-weight:600}.row-actions{flex-wrap:wrap;gap:8px;display:flex}.membership{align-items:center;gap:8px;margin-bottom:4px;display:flex}.membership select{width:auto;padding:4px 6px}.badge{background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:2px 8px;font-size:.8rem;display:inline-block}.badge-ok{background:var(--ok-bg);color:var(--ok-text);border-color:#0000}.mono,.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.code{background:var(--bg);border:1px solid var(--border);white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:10px;font-size:.85rem}.stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:12px 0 0;display:grid}.stats dt{color:var(--muted);font-size:.85rem}.stats dd{margin:4px 0 0;font-size:1.3rem;font-weight:600}.plain-list{margin:0;padding-left:18px}.auth-page{place-items:center;min-height:100vh;padding:16px;display:grid}.auth-card{gap:14px;width:min(420px,100%);display:grid}h3{margin:20px 0 8px;font-size:.95rem}textarea{font:inherit;border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:6px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85rem}a.button{text-decoration:none;display:inline-block}progress{width:100%;margin-top:8px}.form-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));align-items:start;gap:14px;display:grid}.goal>.button,.form-grid>.button{justify-self:start}.align-end{align-self:end}.radio{border:1px solid var(--border);cursor:pointer;border-radius:8px;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:10px 12px;display:grid}.radio input{width:auto;margin-top:4px}.radio span{gap:2px;display:grid}.checklist{border:1px solid var(--border);border-radius:6px;gap:4px;max-height:240px;padding:8px;display:grid;overflow:auto}.checklist .checkbox{font-size:.9rem}.goal{border:1px solid var(--border);border-radius:8px;gap:12px;padding:12px 16px;display:grid}.goal legend{padding:0 4px;font-weight:600}.row-changed{background:var(--warn-bg)}.badge-warn{background:var(--warn-bg);color:var(--warn-text);border-color:#0000}.stepper{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:0 0 16px;padding:0;list-style:none;display:grid}.step{text-align:left;width:100%;font:inherit;border:1px solid var(--border);background:var(--surface);cursor:pointer;color:var(--text);border-radius:8px;gap:2px;padding:8px 10px;font-size:.85rem;display:grid}.step-status{color:var(--muted);font-size:.75rem}.step-done{border-color:var(--ok-text)}.step-done .step-status{color:var(--ok-text)}.step-running .step-status{color:var(--info-text)}.step-failed{border-color:var(--error-text)}.step-failed .step-status{color:var(--error-text)}.step-selected{outline:2px solid var(--accent);outline-offset:1px}@media (width<=640px){.topbar{flex-wrap:wrap;padding:12px 16px}.table th:nth-child(3),.table td:nth-child(3){display:none}}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px;margin-bottom:16px;display:flex}.tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;padding:8px 14px}.tab-selected{background:var(--surface);border-color:var(--border);color:var(--text);margin-bottom:-1px;font-weight:600}.bar-cell{min-width:180px}.bar{vertical-align:middle;background:var(--bg);border:1px solid var(--border);border-radius:999px;width:120px;height:10px;margin-right:8px;display:inline-block;overflow:hidden}.bar-fill{background:var(--accent);height:100%}.heatmap{border:1px solid var(--border);background:var(--surface);max-width:100%;margin:0 auto 24px;position:relative}.heatmap img,.heatmap canvas{display:block}.heatmap canvas{pointer-events:none;position:absolute;inset:0}.heatmap-kinds{flex-wrap:wrap;margin-bottom:12px}
