:root{--bg-primary:#0a0e14;--bg-secondary:#111827;--bg-tertiary:#1a2636;--bg-hover:#1e3044;--bg-active:#243a52;--accent:#8b5cf6;--accent-hover:#a78bfa;--accent-dim:#8b5cf626;--accent-glow:#8b5cf64d;--accent-contrast:#fff;--success:#10b981;--success-dim:#10b98126;--danger:#ef4444;--danger-dim:#ef444426;--danger-hover:#dc2626;--warning:#f59e0b;--warning-dim:#f59e0b26;--info:#3b82f6;--info-dim:#3b82f626;--text-primary:#e2e8f0;--text-secondary:#94a3b8;--text-muted:#64748b;--border:#1e2d42;--border-hover:#2e4460;--shadow:0 4px 24px #00000080;--radius:8px;--radius-sm:4px;--transition:.2s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%}body{background:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Sans,Noto Sans JP,sans-serif;line-height:1.6}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}a{color:var(--accent-hover);transition:color var(--transition);text-decoration:none}a:hover{color:#c4b5fd}code{background:var(--bg-tertiary);border-radius:3px;padding:1px 4px;font-size:.85em}button{cursor:pointer;transition:all var(--transition);border:none;outline:none;font-family:inherit;font-size:.875rem}.btn{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border);white-space:nowrap;align-items:center;gap:6px;padding:8px 14px;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-hover);border-color:var(--border-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{border-color:var(--danger);color:var(--danger);background:0 0}.btn-danger:hover:not(:disabled){background:var(--danger-dim)}.btn-sm{padding:5px 10px;font-size:.8rem}.btn-ghost{color:var(--text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.icon-btn{border-radius:var(--radius-sm);align-items:center;padding:4px;display:inline-flex}.btn-ghost.danger{color:var(--danger)}input[type=text],input[type=email],input[type=number],input[type=date],input[type=search],input[type=url],select,textarea{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-primary);transition:border-color var(--transition);outline:none;padding:7px 10px;font-family:inherit;font-size:.875rem}input:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=date]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}input[type=checkbox]{width:auto;accent-color:var(--accent)}textarea{resize:vertical;min-height:60px}label{color:var(--text-secondary);margin-bottom:4px;font-size:.75rem;display:block}label.inline{cursor:pointer;align-items:center;gap:6px;margin-bottom:0;display:inline-flex}.field{margin-bottom:14px}.field-row{gap:12px;display:grid}.field-row-2{grid-template-columns:repeat(2,minmax(0,1fr))}.field-row-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.panel{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);overflow:auto hidden}.page-head{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.page-title{font-size:1.05rem;font-weight:600}.page-sub{color:var(--text-muted);font-size:.8rem}.spacer{margin-left:auto}.section-title{color:var(--text-secondary);letter-spacing:.06em;border-bottom:1px solid var(--border);align-items:center;gap:8px;margin-bottom:10px;padding-bottom:4px;font-size:.75rem;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;display:flex}.toolbar select{width:auto;min-width:120px}.search-box{width:280px;max-width:100%;position:relative}.search-box svg{color:var(--text-muted);position:absolute;top:50%;left:10px;transform:translateY(-50%)}.search-box input{padding-left:30px}.tag{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border);white-space:nowrap;border-radius:12px;align-items:center;gap:4px;padding:2px 9px;font-size:.75rem;display:inline-flex}.tag-accent{background:var(--accent-dim);color:var(--accent-hover);border-color:#0000}.tag-success{background:var(--success-dim);color:var(--success);border-color:#0000}.tag-danger{background:var(--danger-dim);color:var(--danger);border-color:#0000}.tag-warning{background:var(--warning-dim);color:var(--warning);border-color:#0000}.tag-info{background:var(--info-dim);color:var(--info);border-color:#0000}table.data{border-collapse:collapse;width:100%;font-size:.85rem}table.data th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border);background:var(--bg-tertiary);white-space:nowrap;padding:8px 10px;font-size:.75rem;font-weight:500}table.data td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 10px}table.data tbody tr:hover{background:var(--bg-hover)}table.data tbody tr.clickable{cursor:pointer}table.data tbody tr.row-overdue{background:#ef44440f}.num{text-align:right;font-variant-numeric:tabular-nums}.nowrap{white-space:nowrap}.actions{justify-content:flex-end;gap:6px;display:flex}.summary-grid{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:16px;display:grid}.summary-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.summary-card .label{color:var(--text-muted);font-size:.72rem}.summary-card .value{font-variant-numeric:tabular-nums;font-size:1.4rem;font-weight:700}.summary-card .value small{color:var(--text-muted);margin-left:2px;font-size:.75rem;font-weight:400}.summary-card.hl-accent .value{color:var(--accent-hover)}.summary-card.hl-success .value{color:var(--success)}.summary-card.hl-warning .value{color:var(--warning)}.summary-card.hl-danger .value{color:var(--danger)}a.summary-card:hover{border-color:var(--border-hover)}.cover{object-fit:cover;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:3px;flex-shrink:0;display:block}.cover-empty{color:var(--text-muted);justify-content:center;align-items:center;display:flex}.book-title{font-weight:500;line-height:1.4}.book-sub{color:var(--text-muted);font-size:.75rem}.book-cell{align-items:center;gap:10px;min-width:240px;display:flex}.card-list{flex-direction:column;gap:8px;display:flex}.item-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);gap:12px;padding:12px;display:flex}.item-card.clickable{cursor:pointer}.item-card.clickable:hover{border-color:var(--border-hover)}.item-card .body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.item-card .meta{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:6px;font-size:.75rem;display:flex}.item-card .foot{flex-wrap:wrap;justify-content:flex-end;gap:6px;margin-top:4px;display:flex}.detail-grid{grid-template-columns:160px 1fr;align-items:start;gap:20px;display:grid}.info-list{grid-template-columns:100px 1fr;gap:6px 12px;font-size:.875rem;display:grid}.info-list dt{color:var(--text-muted);font-size:.8rem}.info-list dd{word-break:break-word}.book-form{gap:16px;display:flex}.book-form-cover{padding-top:20px}.book-form-fields{flex:1;min-width:0}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:12px;display:flex}.tab{color:var(--text-secondary);background:0 0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px}.tab:hover{color:var(--text-primary)}.tab.active{color:var(--accent-hover);border-bottom-color:var(--accent);font-weight:600}.vote-btn{background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--border);border-radius:14px;align-items:center;gap:5px;padding:4px 10px;font-size:.78rem;display:inline-flex}.vote-btn:hover:not(:disabled){border-color:var(--accent);color:var(--text-primary)}.vote-btn.on{background:var(--accent-dim);color:var(--accent-hover);border-color:var(--accent)}.vote-btn:disabled{cursor:default;opacity:.7}.pagination{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 2px;display:flex}.muted{color:var(--text-muted)}.warn{color:var(--warning)}.danger{color:var(--danger)}.small{font-size:.75rem}.pre-wrap{white-space:pre-wrap}.row{align-items:center;gap:8px;display:flex}.stack{flex-direction:column;gap:10px;display:flex}.empty{text-align:center;color:var(--text-muted);padding:40px;font-size:.875rem}.loading{text-align:center;color:var(--text-muted);padding:24px;font-size:.875rem}.notice{border-radius:var(--radius-sm);background:var(--bg-tertiary);color:var(--text-secondary);padding:10px 12px;font-size:.8rem}.notice.danger{background:var(--danger-dim);color:var(--danger)}.dev-banner{background:var(--warning-dim);color:var(--warning);text-align:center;padding:4px 12px;font-size:.75rem}.auth-screen{text-align:center;height:100vh;color:var(--text-secondary);flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px;font-size:.9rem;display:flex}.auth-screen h2{color:var(--text-primary);font-size:1rem}.toast-stack{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);box-shadow:var(--shadow);max-width:380px;padding:10px 16px;font-size:.85rem}.toast-success{border-color:var(--success)}.toast-error{border-color:var(--danger)}.modal-backdrop{z-index:50;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);width:100%;max-height:90vh;overflow:auto}.modal-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 16px;font-size:.95rem;font-weight:600;display:flex}.modal-body{padding:16px}.modal-foot{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding:12px 16px;display:flex}@media (width<=768px){.field-row-2,.field-row-3,.detail-grid{grid-template-columns:1fr}.book-form{flex-direction:column}.book-form-cover{padding-top:0}.search-box{width:100%}.toolbar select{flex:1}.modal-backdrop{padding:8px}}.layout{flex-direction:column;height:100vh;display:flex;overflow:hidden}.topbar{background:var(--bg-secondary);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:20px;height:56px;padding:0 24px;display:flex}.topbar-brand{align-items:center;gap:10px;display:flex}.brand-icon{flex-shrink:0;width:40px;height:40px}.brand-text{letter-spacing:.12em;background:linear-gradient(135deg, var(--accent), #c4b5fd);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;font-size:1.1rem;font-weight:700}.brand-sub{color:var(--text-muted);border-left:1px solid var(--border);padding-left:8px;font-size:.75rem}.topbar-nav{gap:4px;display:flex}.topbar-user{color:var(--text-muted);align-items:center;gap:10px;margin-left:auto;font-size:.8rem;display:flex}.view-as-badge{background:var(--warning-dim);color:var(--warning);border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:600}.view-as-btn{border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);background:0 0;align-items:center;gap:5px;padding:5px 10px;font-size:.75rem;display:flex}.view-as-btn:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-item{border-radius:var(--radius-sm);color:var(--text-secondary);transition:all var(--transition);white-space:nowrap;align-items:center;gap:6px;padding:8px 14px;font-size:.875rem;font-weight:500;text-decoration:none;display:flex}.nav-item:hover{color:var(--text-primary);background:var(--bg-hover)}.nav-item.active{color:var(--accent-contrast);background:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.main-content{flex:1;padding:20px 24px;overflow:auto}@media (width<=1100px){.view-as-btn span,.brand-sub{display:none}}@media (width<=768px){.topbar{gap:10px;height:48px;padding:0 12px}.brand-icon{width:34px;height:34px}.brand-text,.topbar-user{display:none}.topbar-nav{flex:1;justify-content:space-around;gap:2px}.nav-item{gap:4px;padding:8px 10px;font-size:.8rem}.nav-item span{display:none}.main-content{padding:10px}}
