:root{--paper:#f3ead8;--panel:#fff8ec;--ink:#1d140f;--muted:#6e5f52;--line:#d9cbb6;--accent:#8f1d1d;--accent-dark:#6e1212;--ok:#2f5d3a;--shadow:0 18px 40px #321c0c14}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);font-optical-sizing:auto;background:radial-gradient(circle at top, #8f1d1d14, transparent 32%), repeating-linear-gradient(0deg, transparent, transparent 31px, #1d140f09 32px), var(--paper);font-family:Literata,Palatino,Palatino Linotype,serif}.page{width:min(720px,100% - 32px);margin:0 auto;padding:72px 0 56px}.masthead{text-align:center;margin-bottom:32px}h1,.book-name,.logs-login h2,.logs-panel-head h2{font-optical-sizing:auto;font-family:Newsreader,Literata,serif}h1{letter-spacing:-.03em;margin:0;font-size:clamp(2rem,5vw,2.75rem);font-weight:560;line-height:1.15}.lede{color:var(--muted);margin:12px 0 0;font-size:1.08rem;line-height:1.45}.panel{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;padding:22px}label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:.82rem;font-weight:600;display:block}.row{align-items:stretch;gap:10px;display:flex}input,select{border:1px solid var(--line);width:100%;min-width:0;min-height:3.15rem;color:var(--ink);font:inherit;background:#fff;border-radius:12px;padding:12px 16px;font-size:1rem}.row input{flex:1;width:auto}select{appearance:none;background-image:url(/chevron.svg);background-position:right 14px center;background-repeat:no-repeat;background-size:12px 8px;padding-right:40px}input:focus,select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #8f1d1d29}button,.download{appearance:none;background:var(--accent);color:#fffaf3;min-height:3.15rem;font:inherit;letter-spacing:.01em;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:12px;justify-content:center;align-items:center;padding:12px 18px;font-weight:600;line-height:1.2;text-decoration:none;transition:background .15s,border-color .15s,color .15s,box-shadow .15s,transform .12s;display:inline-flex;box-shadow:inset 0 1px #fffaf338,0 1px 1px #50140c0f,0 8px 16px #6f121229}button:hover:not(:disabled),.download:hover:not([aria-disabled=true]){background:var(--accent-dark)}button:active:not(:disabled),.download:active:not([aria-disabled=true]){transform:translateY(1px);box-shadow:inset 0 1px 2px #3c080847}button:focus-visible,.download:focus-visible{outline-offset:2px;outline:2px solid #8f1d1d73}button.secondary{color:var(--ink);background:#fffdf8;border-color:#d3c4ae;box-shadow:inset 0 1px #ffffffb3}button.secondary:hover:not(:disabled){color:var(--ink);background:#fff;border-color:#b7a48c}button.secondary:active:not(:disabled){box-shadow:none;background:#f4ecdf}button:disabled,.download[aria-disabled=true]{cursor:not-allowed;opacity:.45;box-shadow:none;pointer-events:none;transform:none}.download[aria-disabled=true]{pointer-events:none}[hidden]{display:none!important}.hint{color:var(--muted);margin:12px 0 0;font-size:.92rem}.status{margin-top:16px}.status-top{justify-content:space-between;gap:12px;margin-bottom:12px;display:flex}#status-label,#status-count{margin:0}#status-count{color:var(--muted)}.bar{background:#eadfcb;border-radius:999px;height:8px;overflow:hidden}#bar-fill{background:var(--accent);width:0;height:100%;transition:width .25s;display:block}.book-name{margin:14px 0 0;font-size:1.2rem;font-weight:560}.error{color:var(--accent);margin:12px 0 0;font-weight:600}#url-error{line-height:1.45}#url-error .url-examples{color:var(--ink);word-break:break-all;gap:2px;margin-top:8px;font-size:.92rem;font-weight:500;display:grid}.download{margin-top:16px}footer{text-align:center;margin-top:36px}.footer-links{flex-wrap:wrap;justify-content:center;gap:4px 16px;margin-top:10px;display:flex}button.footer-link{min-height:0;box-shadow:none;color:var(--muted);text-underline-offset:3px;background:0 0;border:0;margin-top:0;padding:0;font-size:.92rem;font-weight:500;text-decoration:underline;display:inline-flex}button.footer-link:hover,button.footer-link:focus-visible,button.footer-link:active{color:var(--ink);box-shadow:none;background:0 0;transform:none}.logs-dialog{border:1px solid var(--line);background:var(--panel);width:calc(100vw - 48px);max-width:calc(100vw - 48px);max-height:calc(100vh - 24px);color:var(--ink);font:inherit;box-shadow:var(--shadow);border-radius:18px;padding:0}.logs-dialog.is-gate{width:min(400px,100vw - 32px);max-width:400px}.legal-dialog{border:1px solid var(--line);background:var(--panel);width:min(640px,100vw - 32px);max-height:min(760px,100vh - 32px);color:var(--ink);font:inherit;box-shadow:var(--shadow);border-radius:18px;padding:0}.legal-dialog::backdrop{background:#1d140f73}.legal-panel{padding:22px 24px 24px}.legal-body{max-height:min(62vh,560px);padding-right:4px;overflow:auto}.legal-body h3{font-optical-sizing:auto;margin:18px 0 6px;font-family:Newsreader,Literata,serif;font-size:1.15rem;font-weight:560}.legal-body p,.legal-body li{margin:0 0 10px;font-size:.98rem;line-height:1.55}.legal-body ul{margin:0 0 12px;padding-left:1.2rem}.legal-body a{color:var(--accent)}.logs-dialog::backdrop{background:#1d140f73}.logs-login,.logs-panel{padding:22px}.logs-login{text-align:center;padding:28px 26px 24px}.logs-login h2{letter-spacing:-.03em;margin:0;font-size:1.9rem;font-weight:560}.logs-login-copy{max-width:28ch;color:var(--muted);margin:8px auto 18px;font-size:.98rem;line-height:1.45}.logs-login label{text-align:left}.logs-login input{width:100%}.logs-login .error{text-align:left}.logs-login-actions{gap:8px;margin-top:16px;display:grid}.logs-login-actions button{width:100%}.logs-panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.logs-panel-head h2{margin:0;font-size:1.45rem;font-weight:560}.logs-filters{flex-wrap:wrap;align-items:end;gap:10px;margin-bottom:12px;display:flex}.logs-filters label{margin:0}.logs-search{flex:200px}.logs-filters input,.logs-filters select{min-height:2.85rem;margin-top:6px;padding:8px 12px;font-size:.95rem;display:block}.logs-filters select{min-width:9.5rem;padding-right:36px}.logs-rows select{min-width:5.5rem}.logs-summary{flex-wrap:wrap;gap:8px;margin:0 0 14px;display:flex}.logs-stat{border:1px solid var(--line);background:#fff;border-radius:12px;flex:96px;min-width:88px;padding:8px 10px 9px}.logs-stat strong{letter-spacing:-.02em;font-family:Newsreader,Literata,serif;font-size:1.2rem;font-weight:560;line-height:1.2;display:block}.logs-stat span{color:var(--muted);letter-spacing:.05em;text-transform:uppercase;font-size:.72rem}.logs-pager{justify-content:space-between;align-items:center;gap:12px;margin-top:12px;display:flex}.logs-pager p{color:var(--muted);text-align:center;margin:0;font-size:.9rem}.logs-pager button{min-height:2.7rem;padding:8px 14px}.logs-pager button:disabled{cursor:default;opacity:.4}.logs-table td.empty{color:var(--muted);text-align:center}.logs-table-wrap{border:1px solid var(--line);background:#fff;border-radius:12px;max-height:min(60vh,520px);overflow:auto}.logs-table{border-collapse:collapse;width:max-content;min-width:100%;font-size:.88rem}.logs-table th,.logs-table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap;padding:10px 12px}.logs-table th{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#faf5eb;font-size:.78rem;position:sticky;top:0}.when-short,.url-short{display:none}.logs-credit{color:var(--muted);text-align:right;margin:10px 0 0;font-size:.78rem}.logs-credit a{color:inherit}.log-status-success{color:var(--ok);font-weight:600}.log-status-failed{color:var(--accent);font-weight:600}.log-status-pending,.log-status-ready{color:var(--muted);font-weight:600}.log-status-cache{color:#6a4b16;font-weight:600}.log-status-saved{color:var(--ok);font-weight:600}@media (width<=640px){.logs-dialog:not(.is-gate){border-radius:14px;width:calc(100vw - 24px);max-width:calc(100vw - 24px);max-height:calc(100dvh - 12px);overflow:auto}.logs-panel{padding:12px}.logs-panel-head{margin-bottom:8px}.logs-panel-head h2{font-size:1.2rem}.logs-summary{gap:6px;margin-bottom:10px}.logs-stat{border-radius:10px;flex:calc(33.33% - 6px);min-width:0;padding:6px 8px}.logs-stat strong{font-size:.98rem}.logs-filters{gap:8px;margin-bottom:8px}.logs-search{flex:100%}.logs-filters label:not(.logs-search){flex:1 1 0;min-width:0}.logs-filters select{width:100%;min-width:0}.logs-filters input,.logs-filters select{min-height:2.35rem;margin-top:4px;padding:6px 8px;font-size:.85rem}.logs-table-wrap{background:0 0;border:none;max-height:none;overflow:visible}.logs-table{width:100%;min-width:0;font-size:.82rem}.logs-table thead{display:none}.logs-table,.logs-table tbody,.logs-table tr,.logs-table td{display:block}.logs-table tbody tr{border:1px solid var(--line);background:#fff;border-radius:10px;grid-template-columns:minmax(0,1fr) auto auto;grid-template-areas:"when type status""book book book""location location ip""url url url";gap:2px 8px;margin-bottom:8px;padding:8px 10px;display:grid}.logs-table tbody tr:has(>td.empty){background:0 0;border:none;margin-bottom:0;padding:0;display:block}.logs-table td{white-space:normal;border:none;min-width:0;padding:0}.logs-table td.when{color:var(--muted);white-space:normal;grid-area:when;font-size:.75rem}.logs-table td.type{color:var(--muted);text-align:right;white-space:nowrap;grid-area:type;font-size:.75rem}.logs-table td.log-status-success,.logs-table td.log-status-failed,.logs-table td.log-status-pending,.logs-table td.log-status-cache,.logs-table td.log-status-ready,.logs-table td.log-status-saved{text-align:right;white-space:nowrap;grid-area:status;font-size:.75rem}.logs-table td.book{grid-area:book;font-weight:600}.logs-table td.book .book-name-text{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.logs-table td.location,.logs-table td.ip{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.logs-table td.location{grid-area:location}.logs-table td.ip{text-align:right;grid-area:ip}.logs-table td.url{max-width:none;color:var(--muted);word-break:normal;grid-area:url;font-size:.75rem;overflow:hidden}.when-full,.url-full{display:none}.when-short,.url-short{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.logs-pager{gap:8px;margin-top:8px}.logs-pager button{min-height:2.4rem;padding:6px 10px}.page{padding-top:40px}.row{flex-direction:column}.row button{width:100%}}
