:root { --bg:#f5f6f8; --card:#fff; --text:#1f2933; --muted:#667085; --line:#d9dee5; --accent:#1d5fa8; --danger:#b42318; }
* { box-sizing:border-box; }
body { margin:0; background:var(--bg); color:var(--text); font:15px/1.6 system-ui,-apple-system,"Hiragino Sans","Yu Gothic UI",Meiryo,sans-serif; }
a { color:var(--accent); }
main { max-width:1040px; margin:0 auto; padding:16px; }
h1 { font-size:22px; margin:8px 0 12px; } h2 { font-size:17px; margin:24px 0 8px; } h3 { font-size:15px; margin:8px 0; }
.top { display:flex; flex-wrap:wrap; gap:8px 16px; align-items:center; padding:8px 16px; background:var(--card); border-bottom:1px solid var(--line); }
.top nav { display:flex; gap:12px; align-items:center; margin-left:auto; }
.brand { font-weight:700; text-decoration:none; color:var(--text); }
.search { flex:1 1 180px; max-width:360px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:8px; padding:14px 16px; margin:12px 0; }
.narrow { max-width:400px; margin:48px auto; }
.stack { display:flex; flex-direction:column; gap:10px; }
.stack label { display:flex; flex-direction:column; gap:3px; font-size:13px; color:var(--muted); }
.stack label.check { flex-direction:row; align-items:center; gap:6px; color:var(--text); }
.inline { display:inline-flex; flex-wrap:wrap; gap:6px; align-items:center; }
input,select,textarea { font:inherit; padding:7px 9px; border:1px solid var(--line); border-radius:6px; background:#fff; color:var(--text); max-width:100%; width:100%; }
input[type=checkbox] { width:auto; } .inline input,.inline select { width:auto; }
button { font:inherit; padding:7px 14px; background:var(--accent); color:#fff; border:0; border-radius:6px; cursor:pointer; align-self:flex-start; }
button.link { background:none; color:var(--accent); padding:0; text-decoration:underline; }
.table-wrap { overflow-x:auto; background:var(--card); border:1px solid var(--line); border-radius:8px; }
table { border-collapse:collapse; width:100%; } th,td { padding:8px 10px; border-bottom:1px solid var(--line); text-align:left; vertical-align:top; }
th { font-size:12px; color:var(--muted); white-space:nowrap; } tr:last-child td { border-bottom:0; }
.muted { color:var(--muted); } .overdue { color:var(--danger); font-weight:700; } .inactive { opacity:.5; }
.crumb { font-size:13px; margin:0; } .next { background:var(--card); border-left:3px solid var(--accent); padding:8px 12px; }
.badge { display:inline-block; padding:1px 8px; border-radius:10px; font-size:12px; font-weight:400; background:#e7eaee; white-space:nowrap; }
.b-active,.b-in_progress,.b-testing { background:#dbeafe; } .b-open,.b-waiting,.b-waiting_client,.b-planned { background:#fef0c7; }
.b-hold,.b-draft { background:#ece4f7; } .b-done,.b-released { background:#d1f2dc; }
.alert { padding:8px 12px; border-radius:6px; } .alert-ok { background:#d1f2dc; } .alert-error { background:#fde2df; color:var(--danger); }
.post .body,.body { overflow-wrap:anywhere; margin-top:6px; } .post.internal { background:#faf6ff; border-color:#c9b6e8; }
.results { padding-left:18px; } .staff-only { border-top:2px dashed var(--line); margin-top:32px; }
button.danger { background:var(--danger); }
