:root { --fg:#1d1d1f; --muted:#6b6b70; --bg:#fafaf7; --line:#e3e1da; --accent:#c2410c; }
* { box-sizing:border-box; }
body { margin:0; font-family:system-ui,-apple-system,"Hiragino Sans","Noto Sans JP",sans-serif; color:var(--fg); background:var(--bg); line-height:1.6; }
main { max-width:960px; margin:0 auto; padding:16px; }
.site-header { display:flex; flex-wrap:wrap; gap:12px; justify-content:space-between; align-items:center; padding:12px 16px; border-bottom:1px solid var(--line); }
.site-header nav { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.brand { font-weight:700; color:var(--fg); text-decoration:none; }
a { color:var(--accent); }
.inline { display:inline; }
button { font:inherit; padding:8px 16px; border:1px solid var(--fg); background:var(--fg); color:#fff; border-radius:6px; cursor:pointer; }
button.link { background:none; border:none; color:var(--accent); padding:0; text-decoration:underline; }
button.danger { background:#b42318; border-color:#b42318; }
.langs a { margin-left:6px; }
.langs a[aria-current] { font-weight:700; color:var(--fg); }
.stack { display:flex; flex-direction:column; gap:12px; max-width:560px; }
.stack label { display:flex; flex-direction:column; gap:4px; }
.stack label.choice { flex-direction:row; gap:8px; align-items:flex-start; }
input[type=text],input[type=email],select { font:inherit; padding:8px; border:1px solid var(--line); border-radius:6px; }
fieldset { border:1px solid var(--line); border-radius:6px; }
.topic-form:not(:has(input[value=ai_generated]:checked)) .consents-ai_generated,
.topic-form:not(:has(input[value=own_photo]:checked)) .consents-own_photo { display:none; }
.topic-grid { list-style:none; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.topic-grid img, .topic img { width:100%; height:auto; border-radius:6px; display:block; }
.topic-grid li a { position:relative; display:block; }
.badge { display:inline-block; font-size:12px; padding:2px 8px; border-radius:999px; background:#fff; border:1px solid var(--line); color:var(--fg); }
.topic-grid .badge { position:absolute; left:8px; bottom:8px; }
.notice { background:#fff7ed; border:1px solid #fed7aa; padding:8px 12px; border-radius:6px; }
.error-msg { color:#b91c1c; }
.ok-msg { color:#15803d; }
.muted { color:var(--muted); font-size:14px; }
.site-footer { display:flex; flex-wrap:wrap; gap:16px; justify-content:center; padding:24px 16px; border-top:1px solid var(--line); font-size:14px; }
.pager { display:flex; gap:16px; }
.admin-nav { display:flex; flex-wrap:wrap; gap:12px; margin:8px 0 16px; }
.admin-table { width:100%; border-collapse:collapse; font-size:14px; }
.admin-table th, .admin-table td { border-bottom:1px solid var(--line); padding:6px; text-align:left; vertical-align:top; overflow-wrap:anywhere; }
.admin-thumb { max-width:120px; height:auto; }
.admin-topic img { max-width:100%; height:auto; }
.admin-dl dt { font-weight:700; }
.admin-dl dd { margin:0 0 8px; }
.admin-form { border:1px solid var(--line); padding:12px; border-radius:6px; margin-bottom:16px; }
.inline-check { display:inline-block; margin-right:12px; }
.boke-list { list-style:none; padding:0; display:flex; flex-direction:column; gap:8px; }
.boke { background:#fff; border:1px solid var(--line); border-radius:6px; padding:10px 12px; }
.boke-body { margin:0 0 6px; font-size:18px; white-space:pre-wrap; overflow-wrap:anywhere; }
.boke-body a { color:var(--fg); text-decoration:none; }
.boke-meta { display:flex; gap:12px; align-items:center; font-size:14px; }
.boke-topic { font-size:13px; }
button.vote { padding:4px 12px; background:#fff; color:var(--fg); }
button.vote.voted { background:var(--accent); border-color:var(--accent); color:#fff; }
textarea { font:inherit; padding:8px; border:1px solid var(--line); border-radius:6px; }
.tabs { display:flex; flex-wrap:wrap; gap:12px; margin:8px 0 12px; }
.tabs a[aria-current] { font-weight:700; color:var(--fg); text-decoration:none; }
.rank { display:inline-block; font-weight:700; margin-bottom:4px; }
.pre { white-space:pre-wrap; overflow-wrap:anywhere; }
