:root{--paper:#f7f8f6;--surface:#fff;--ink:#283c48;--muted:#586b75;--rule:#d5dddf;--accent:#244d60;--soft:#eaf0f2;--serif:'Iowan Old Style',Georgia,'Songti SC',serif;--ui:system-ui,'PingFang SC',sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 var(--ui)}a{color:var(--accent);text-underline-offset:3px}button,input,select{font:inherit;color:inherit}button,select,input{min-height:44px;border:1px solid var(--rule);border-radius:5px;background:var(--surface);padding:8px 12px}button{cursor:pointer}button:hover{background:var(--soft)}button:disabled{opacity:.45;cursor:default}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}[hidden]{display:none!important}body[data-language=en] .zh,body[data-language=zh] .en{display:none!important}body[data-language=both] .zh{display:block;font-size:.9em;color:var(--muted)}.skip{position:absolute;top:-100px;background:white;padding:12px;z-index:3}.skip:focus{top:10px}
.mast{display:flex;align-items:center;gap:32px;padding:18px max(24px,calc((100vw - 1440px)/2));border-bottom:1px solid var(--rule);background:var(--surface)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:600;white-space:nowrap}.brand small{display:block;color:var(--muted);font-size:12px;font-weight:400}.seal{border:1px solid var(--accent);border-radius:50%;height:42px;width:42px;text-align:center;font:30px/40px var(--serif)}.mast nav{display:flex;gap:24px;flex:1}.mast nav a{text-decoration:none;font-size:14px;padding:10px 0}.mast nav a[aria-current=page]{box-shadow:0 2px var(--accent);font-weight:600}.language{font-size:12px;display:flex;align-items:center;gap:10px}.language select{font-size:13px;max-width:130px}main{max-width:1440px;margin:auto;padding:0 32px}.opening{padding:42px 0 24px;border-bottom:1px solid var(--rule)}.eyebrow{font-size:12px;letter-spacing:.12em;color:var(--muted);margin:0}h1,h2,h3{font-family:var(--serif);font-weight:500}h1{font-size:clamp(32px,4vw,52px);line-height:1.15;letter-spacing:-.025em;margin:14px 0 20px}h2{font-size:28px;line-height:1.25;margin:0}h3{font-size:21px;line-height:1.35;margin:0 0 12px}.lede{font:20px/1.6 var(--serif);max-width:780px;margin:0 0 12px}.scope{color:var(--muted);max-width:850px;font-size:14px}.stats{display:flex;gap:32px;flex-wrap:wrap;margin-top:26px}.stats p{margin:0;font-size:13px;color:var(--muted)}.stats strong{display:block;font:28px/1.1 var(--serif);color:var(--ink);margin-bottom:6px}.view{padding:30px 0}.section-top{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.exports{display:flex;gap:18px;font-size:13px}.filters{display:grid;grid-template-columns:2fr 1fr 1.2fr 1.3fr 1fr auto;gap:12px;align-items:end}.filters label,.desk label{display:grid;gap:6px;font-size:13px}.filters input,.filters select{width:100%;min-width:0}.meta{font-size:13px;line-height:1.55;color:var(--muted);overflow-wrap:anywhere}.records{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.record{padding:22px;border:1px solid var(--rule);border-radius:6px;background:var(--surface);display:flex;flex-direction:column;gap:10px;min-width:0}.record h3{margin:0}.record p{margin:0}.record .shelfmark{font-size:18px}.record .repo{font-size:12px;letter-spacing:.025em;color:var(--muted)}.record .contents{font:16px/1.55 var(--serif)}.record .status{font-size:12px;font-weight:600;color:var(--muted)}.record .status.verified{color:#2c644f}.record .status.blocked{color:#805833}.record .card-actions{display:flex;gap:15px;flex-wrap:wrap;font-size:13px;margin-top:auto;padding-top:12px}.record details{font-size:12px;color:var(--muted);border-top:1px solid var(--rule);padding-top:10px}.record summary{cursor:pointer;min-height:32px}.record li{margin-bottom:8px}.record ul{padding-left:18px}.boundary{background:var(--soft);padding:14px 18px;font-size:13px;border-left:3px solid var(--accent);margin:0 0 24px}.desk{display:grid;grid-template-columns:1fr 1fr;gap:26px}.desk>section{min-width:0;border:1px solid var(--rule);background:var(--surface);border-radius:6px;padding:24px}.desk select{max-width:100%;width:100%}.image-controls{display:grid;grid-template-columns:44px 1fr 44px;gap:10px;align-items:end;margin:20px 0 10px}.image-controls button{height:44px;padding:0}#folio-image{display:block;width:100%;height:auto;max-height:900px;object-fit:contain;background:var(--paper)}.image-actions{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;align-items:center}.image-actions button{font-size:13px}#image-meta{font-size:13px;color:var(--muted);margin-top:12px}#image-status{font-size:13px;color:var(--muted)}.text-pane #text-select{margin-bottom:16px}.text-pane .boundary{margin:0 0 16px}#edition-meta{margin:16px 0}#passage{font:clamp(20px,2vw,25px)/1.8 var(--serif);padding:18px 0;min-height:140px;white-space:pre-wrap}#passage small{font:13px/1.5 var(--ui);display:block;color:var(--muted);margin-top:20px}#passage details{font:14px/1.6 var(--ui);white-space:normal}.passage-controls{display:flex;gap:10px;flex-wrap:wrap}.passage-controls button{font-size:13px}.method{max-width:900px}.method li{margin-bottom:18px}.audit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.audit-grid>div{border:1px solid var(--rule);background:var(--surface);padding:24px;border-radius:6px}.audit-grid p{font-size:14px}.audit-table{width:100%;border-collapse:collapse;font-size:13px}.audit-table th,.audit-table td{text-align:left;padding:10px;border-bottom:1px solid var(--rule);vertical-align:top}footer{padding:24px 0 40px;border-top:1px solid var(--rule);font-size:13px;color:var(--muted)}footer p{font-size:12px}#app-status{padding:14px;background:var(--soft)}
@media(max-width:1080px){.records{grid-template-columns:repeat(2,minmax(0,1fr))}.filters{grid-template-columns:2fr 1fr 1fr}.mast{gap:20px}.mast nav{gap:14px}.language{flex-direction:column;gap:0;align-items:start}.desk{gap:16px}.desk>section{padding:18px}}
@media(max-width:720px){main{padding:0 18px}.mast{padding:14px 18px;gap:14px;flex-wrap:wrap}.brand{flex:1}.mast nav{order:3;flex-basis:100%;gap:20px}.mast nav a{font-size:13px}.language{font-size:11px}.opening{padding-top:28px}.lede{font-size:18px}.stats{gap:22px}.stats strong{font-size:25px}.filters{grid-template-columns:1fr 1fr}.filters label:first-child{grid-column:1/-1}.filters button{height:44px}.records,.desk,.audit-grid{grid-template-columns:1fr}.record{padding:18px}.section-top{align-items:start;flex-direction:column}.exports{flex-wrap:wrap}.audit-table{font-size:12px}.audit-table th,.audit-table td{padding:8px}.desk>section{padding:18px}.passage-controls button{flex:1}}
@media print{.mast,.filters,.image-controls,.passage-controls,.exports,.image-actions{display:none!important}.view[hidden]{display:block!important}.records{grid-template-columns:1fr 1fr}.record{break-inside:avoid}body{background:white}main{padding:0}.opening{padding-top:0}}

#export-preview{margin-top:26px;border:1px solid var(--rule);padding:22px;border-radius:6px;background:var(--surface)}#export-content{display:block;width:100%;min-height:260px;margin-top:12px;padding:14px;border:1px solid var(--rule);border-radius:4px;font:13px/1.5 ui-monospace,monospace;background:var(--paper);color:var(--ink);resize:vertical}

@media(max-width:720px){.mast nav{flex-wrap:wrap}.image-controls{grid-template-columns:44px minmax(0,1fr) 44px}.desk label{min-width:0}.desk select{min-width:0}}

.source-preview{margin:12px 0;width:240px;max-width:100%}.source-preview img{display:block;max-width:100%;width:240px;height:180px;object-fit:contain;background:var(--soft,#eee);border:1px solid var(--rule,#ccc)}.source-preview figcaption{font:12px/1.5 system-ui;color:var(--muted,#555);overflow-wrap:anywhere;margin-top:6px}.preview-missing{border-left:3px solid var(--rule,#ccc);padding:2px 10px;font:13px/1.5 system-ui;margin:10px 0}.preview-fallback{display:block;padding:15px;background:var(--soft,#eee);font:14px/1.5 system-ui}

.image-availability{padding:14px;background:#eef2ed;border:1px solid #bdc9c0;border-radius:5px;min-height:160px;display:flex;flex-direction:column;justify-content:center;gap:8px;font:14px/1.5 system-ui}.image-availability strong{color:#245b4e}.image-availability a{font-weight:600}.image-availability .preview-symbol{font-size:28px;color:#6c8377}.repository-preview img{object-fit:contain}
