:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;line-height:1.5}.page{max-width:960px;margin:0 auto;padding:2rem 1rem}.page-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:1rem}.page-header h1{margin:0;font-size:1.5rem}.counter{opacity:.7;font-variant-numeric:tabular-nums}.projects{width:100%;border-collapse:collapse}.projects th,.projects td{text-align:left;padding:.5rem .75rem;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent)}.projects th{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;opacity:.7}.status{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.85rem;background:color-mix(in srgb,currentColor 12%,transparent)}.empty{text-align:center;opacity:.7;padding:2rem 0}.error{padding:.75rem 1rem;border:1px solid #d33;border-radius:6px;color:#d33}.pager{display:flex;align-items:center;gap:.5rem;margin-top:1rem}.pager button{padding:.4rem 1rem;border:1px solid color-mix(in srgb,currentColor 30%,transparent);border-radius:6px;background:transparent;color:inherit;font:inherit;cursor:pointer}.pager button:hover:not(:disabled){background:color-mix(in srgb,currentColor 10%,transparent)}.pager button:disabled{opacity:.4;cursor:default}.loading{opacity:.7}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center}.auth-card{width:340px;padding:2rem;border:1px solid var(--border, #ddd);border-radius:10px;display:flex;flex-direction:column;gap:.9rem}.auth-card label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.auth-card input{padding:.5rem .6rem;border:1px solid var(--border, #ccc);border-radius:6px;font:inherit}.topbar{display:flex;align-items:center;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--border, #eee);margin-bottom:1.5rem}.topbar .brand{font-weight:700}.topbar .whoami{margin-left:auto;font-size:.9rem}.invite-form{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-top:.5rem}.invite-form input,.invite-form select{padding:.35rem .5rem;font:inherit}.invite-link{width:100%;font-size:.85rem;word-break:break-all}.nav-link{color:inherit;text-decoration:none;opacity:.75;padding:.2rem .4rem;border-radius:6px}.nav-link:hover{opacity:1}.nav-link.active{opacity:1;font-weight:600;background:color-mix(in srgb,currentColor 10%,transparent)}.tabs{display:flex;gap:.25rem;margin-bottom:1rem;border-bottom:1px solid color-mix(in srgb,currentColor 15%,transparent)}.tab{padding:.4rem 1rem;border:none;border-bottom:2px solid transparent;background:transparent;color:inherit;font:inherit;cursor:pointer;opacity:.7}.tab.active{opacity:1;font-weight:600;border-bottom-color:currentColor}.search{width:100%;max-width:360px;margin-bottom:1rem;padding:.45rem .6rem;border:1px solid color-mix(in srgb,currentColor 30%,transparent);border-radius:6px;font:inherit;background:transparent;color:inherit}.badge{display:inline-block;margin-left:.4rem;padding:0 .4rem;border-radius:999px;font-size:.75rem;background:color-mix(in srgb,currentColor 12%,transparent);opacity:.85}.badge-warn{color:#d33}.badge-ok{color:#2a8a4a}.badge-muted{opacity:.55}.rawdata-editor{margin-bottom:1rem;padding:.75rem 1rem 1rem;border:1px solid color-mix(in srgb,currentColor 25%,transparent);border-radius:6px}.rawdata-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:.5rem}.rawdata-fieldset{border:0;padding:0;margin:0;min-width:0}.rawdata-field{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.rawdata-siblings{margin:.5rem 0 0;padding-left:1.2rem;font-size:.9rem}.rawdata-siblings .badge{margin-left:0;margin-right:.3rem}.status-disabled{color:#d33}.status-invited{opacity:.7}.row-actions{white-space:nowrap}.row-actions button{margin-right:.4rem;padding:.2rem .6rem;border:1px solid color-mix(in srgb,currentColor 30%,transparent);border-radius:6px;background:transparent;color:inherit;font:inherit;font-size:.85rem;cursor:pointer}.row-actions button:hover:not(:disabled){background:color-mix(in srgb,currentColor 10%,transparent)}.row-actions button:disabled{opacity:.4;cursor:default}.hint{font-size:.85rem;opacity:.6}.projects select,.projects input{padding:.25rem .4rem;font:inherit;font-size:.9rem;max-width:100%}.batch-box{margin-bottom:1rem}.batch-form{margin-top:.5rem;display:flex;flex-direction:column;gap:.5rem}.batch-form textarea{width:100%;font:inherit;font-size:.9rem;padding:.5rem;border:1px solid color-mix(in srgb,currentColor 30%,transparent);border-radius:6px;background:transparent;color:inherit}.batch-controls{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.grid-toolbar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.grid-toolbar .search{margin-bottom:0}.archive-banner{padding:.6rem 1rem;border:1px solid color-mix(in srgb,currentColor 25%,transparent);border-radius:6px;background:color-mix(in srgb,currentColor 6%,transparent)}.linkish{border:none;background:none;padding:0;font:inherit;color:inherit;text-decoration:underline;cursor:pointer}.cell-url{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-gen-done,.status-gen-done_regenerated{color:#2c9e4b}.status-gen-error{color:#d33}.status-gen-generating,.status-gen-remaking,.status-gen-enqueued{color:#2a7fd4}.cell-qc{white-space:nowrap}.qc{display:inline-block;margin-right:6px;font-size:12px}.qc-ok{color:#2c9e4b}.qc-fail{color:#d33;font-weight:600}.grid-scroll{max-height:72vh;overflow:auto;border:1px solid color-mix(in srgb,currentColor 15%,transparent);border-radius:6px}.data-grid{margin:0;border-collapse:separate;border-spacing:0}.data-grid thead th{position:sticky;top:0;z-index:2;background:Canvas;box-shadow:0 1px color-mix(in srgb,currentColor 20%,transparent)}.th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.sort-mark{margin-left:4px;font-size:10px;opacity:.6}.filter-bar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:8px 0;font-size:13px}.filter-bar-active{padding:6px 8px;border-radius:6px;background:color-mix(in srgb,currentColor 7%,transparent)}.filter-label{opacity:.7}.filter-rule{display:inline-flex;gap:4px}.filter-rule input{width:150px}.filter-add{opacity:.8}.cell-pasteable{cursor:cell}.cell-paste-anchor{outline:2px solid #2a7fd4;outline-offset:-2px;border-radius:3px}.pager label{margin-right:10px}.export-txt{margin-left:auto}
