:root{--fg: #1f2328;--muted: #6b7280;--accent: #4f46e5;--accent-soft: #eef2ff;--border: #e5e7eb;--danger: #b91c1c;--bar-bg: #e5e7eb;--bar-fg: #4f46e5;--card: #ffffff;--bg: #fafafa}*{box-sizing:border-box}body{font-family:system-ui,sans-serif;color:var(--fg);background:var(--bg);margin:0;line-height:1.5}.page{max-width:52rem;margin:0 auto;padding:1.5rem 1rem 4rem}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1.05rem}a{color:var(--accent)}pre{background:#f4f4f5;padding:1rem;border-radius:8px;overflow-x:auto}.centered{text-align:center;margin-top:4rem}.muted{color:var(--muted);font-size:.9em}.error{color:var(--danger);background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:.5rem .75rem}.empty{color:var(--muted);background:var(--card);border:1px dashed var(--border);border-radius:8px;padding:1rem;text-align:center}.nudge{color:#b45309}.nudge.overdue{color:var(--danger)}.done{color:#15803d}button,.btn{cursor:pointer;font:inherit;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:8px;padding:.4rem .9rem;text-decoration:none;display:inline-block}button:disabled{opacity:.5;cursor:default}button.link-btn{background:none;border:none;color:var(--accent);padding:.1rem .25rem;text-decoration:underline;font-size:.9em}button.link-btn.danger{color:var(--danger)}.btn-finish{background:#15803d;border-color:#15803d}input,textarea,select{font:inherit;padding:.45rem .6rem;border:1px solid var(--border);border-radius:8px;background:var(--card);max-width:100%}textarea{width:100%}input.narrow{width:7.5rem}input.search{width:100%}fieldset{border:1px solid var(--border);border-radius:8px}.stack{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start;margin:.75rem 0}.stack>textarea,.stack>input{align-self:stretch}.row{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.grow{flex:1}.grow-right{margin-left:auto}.inline-form{display:inline-flex;gap:.4rem}.dash-header,.club-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap}.dash-user{display:flex;gap:.75rem;align-items:center}.crumb{text-decoration:none;color:var(--muted)}.tabs{display:flex;gap:.25rem;border-bottom:2px solid var(--border);margin:1rem 0 1.25rem;overflow-x:auto}.tabs a,.tabs button{padding:.45rem .9rem;color:var(--muted);text-decoration:none;border:none;background:none;border-radius:8px 8px 0 0;white-space:nowrap}.tabs a.active,.tabs button.active{color:var(--accent);background:var(--accent-soft);font-weight:600}.sub-tabs{margin-top:1.5rem}.club-list,.member-list,.progress-list,.diary-list,.comment-list,.review-list,.history-list,.search-results,.rank-list{list-style:none;padding:0;margin:.75rem 0}.club-card{display:flex;justify-content:space-between;gap:1rem;align-items:baseline;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.9rem 1.1rem;margin-bottom:.5rem;text-decoration:none;color:inherit}.club-card:hover{border-color:var(--accent)}.club-card-name{font-weight:600}.create-club{display:flex;gap:.5rem;margin-top:1.5rem}.create-club input{flex:1}.turn-banner{background:var(--accent-soft);border:1px solid var(--accent);border-radius:10px;padding:1rem 1.25rem}.book-card{display:flex;gap:1.25rem;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1.25rem}.book-card.clickable{cursor:pointer}.book-card h2{margin:0 0 .25rem}.cover{border-radius:4px;background:var(--accent-soft);object-fit:cover;flex-shrink:0}.cover-S{width:32px;height:48px}.cover-M{width:64px;height:96px}.cover-L{width:96px;height:144px}.cover-placeholder{display:inline-flex;align-items:center;justify-content:center;color:var(--accent);font-weight:700}.search-results li{display:flex;gap:.75rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border)}.progress-list li,.member-list li{display:flex;gap:.75rem;align-items:center;padding:.55rem 0;border-bottom:1px solid var(--border)}.progress-name{min-width:9rem;font-weight:600}.badge{background:var(--accent-soft);color:var(--accent);font-size:.75em;border-radius:999px;padding:.1rem .6rem;margin-left:.5rem}.badge.picker{background:#fef3c7;color:#92400e}.score-chip{background:var(--accent);color:#fff;border-radius:999px;font-size:.8em;padding:.1rem .55rem;margin-left:.4rem;white-space:nowrap}.diary-list li,.comment-list li,.review-list li{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;margin-bottom:.6rem}.diary-head,.comment-head{display:flex;gap:.4rem;align-items:baseline;flex-wrap:wrap}.diary-form{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem}.finish-block{margin:1rem 0}.spoiler{background:#fffbeb;border:1px dashed #f59e0b;border-radius:8px;padding:.5rem .75rem}.history-item{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem;margin-bottom:.6rem}.history-link{display:flex;gap:.75rem;align-items:center;text-decoration:none;color:inherit}.score-bars{margin-top:.5rem;display:flex;flex-direction:column;gap:.2rem}.score-bar-row{display:flex;gap:.5rem;align-items:center;font-size:.85em}.score-bar-name{min-width:7rem;color:var(--muted)}.backfill,.owner-panel{margin-top:1.5rem;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.75rem 1rem}.backfill summary,.owner-panel summary{cursor:pointer;font-weight:600}.rank-list li{display:flex;gap:.75rem;align-items:center;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:.6rem .9rem;margin-bottom:.4rem}.rank-num{font-weight:700;color:var(--accent);min-width:1.25rem}.rank-body{flex:1;display:flex;gap:.6rem;align-items:center}.rank-controls{display:flex;gap:.25rem}.rank-controls button{padding:.15rem .55rem}.avail-scroll{overflow-x:auto}.avail-grid{border-collapse:collapse;margin:.75rem 0}.avail-grid th,.avail-grid td{border:1px solid var(--border);padding:.35rem .6rem;text-align:center}.avail-grid td:first-child{text-align:left}.avail-row{padding:.25rem 0}.respond-form{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem;align-items:stretch}.invite-panel{margin-top:1.5rem;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem}.invite-result{margin-top:.75rem;display:flex;flex-direction:column;gap:.5rem;align-items:flex-start}.qr{border:1px solid var(--border);border-radius:8px;background:#fff}@media (max-width: 560px){.book-card{flex-direction:column}.progress-name{min-width:6rem}}
