/* Compact listening directory within Boyu's established red/white interface. */
.ql-library{--ql-accent:#bf2538;--ql-muted:#72666d;--ql-line:#eadfe3;--ql-tint:#fff0f3;min-width:0}
.ql-library *,.ql-dates *{box-sizing:border-box}
.ql-dates{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;margin:16px 0 20px;font-size:14px}
.ql-dates label{display:flex;align-items:center;gap:8px;min-width:0}
.ql-dates input[type=date]{width:150px;min-width:0;font:inherit;min-height:40px;padding:7px 10px}
.ql-dates .ql-date-label{font-weight:600;margin-inline-end:4px}
.ql-dates button,.ql-bulk button{min-height:40px;padding:7px 14px;font-size:14px}
.ql-dates .ql-date-quick{border-color:transparent;background:transparent;color:#66595f}
.ql-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:10px 0;background:#fbf9f9}
.ql-bulk .ql-primary{background:var(--ql-accent);color:#fff;border-color:var(--ql-accent)}
.ql-bulk .ql-primary:hover:not(:disabled){background:#a51e30;color:#fff}
.ql-selection-count{font-size:13px;color:var(--ql-muted);font-variant-numeric:tabular-nums}
.ql-batch-hint{font-size:12px!important;color:var(--ql-muted);margin-inline-start:auto}
.ql-check{display:flex;align-items:center;gap:7px;min-height:44px;min-width:32px;font-size:13px;cursor:pointer}
.ql-library input[type=checkbox]{width:17px;min-width:17px;height:17px;min-height:17px;margin:0;accent-color:var(--ql-accent);padding:0;cursor:pointer}
.ql-table{width:100%;font-size:13px}
.ql-row{display:grid;grid-template-columns:32px 36px minmax(200px,1fr) 68px 100px 100px 100px 52px 130px;align-items:center;gap:10px;min-height:64px;padding:7px 8px;border-bottom:1px solid var(--ql-line)}
.ql-row:hover,.ql-row.is-selected{background:var(--ql-tint)}
.ql-row:focus-within{background:var(--ql-tint)}
.ql-row>*{min-width:0}
.ql-header{min-height:38px;background:#f5f0f2;color:var(--ql-muted);font-size:12px;padding-block:7px}
.ql-header:hover{background:#f5f0f2}
.ql-header>span:first-child{font-size:0}
.ql-title-cell{display:flex;gap:12px;align-items:center;min-width:0}
.ql-title-copy{min-width:0;flex:1}
.ql-title-cell .quote-play,.ql-title-cell .ql-play{width:34px;min-width:34px;height:36px;min-height:36px;padding:7px;border-radius:8px;border-color:transparent;background:transparent;color:var(--ql-accent);display:grid;place-items:center}
.ql-play svg,.ql-title-cell .quote-play svg{width:20px;height:20px}
.ql-title-copy .ql-title{display:block;max-width:100%;font:inherit;font-size:14px;font-weight:650;text-align:start;line-height:1.5;min-height:28px;border:0;border-radius:0;padding:0;background:transparent;color:inherit;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ql-title-copy .ql-title:hover{background:transparent;color:var(--ql-accent)}
.ql-copy{font-size:12px!important;line-height:1.6!important;color:var(--ql-muted);margin:4px 0 0!important;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.ql-copy.is-expanded{display:block;white-space:pre-wrap;overflow:visible}
.ql-row .quote-editor{grid-column:1/-1}
.ql-number,.ql-duration,.ql-created{font-variant-numeric:tabular-nums;color:var(--ql-muted);font-size:12px}
.ql-recorder,.ql-uploader{overflow-wrap:anywhere;color:var(--ql-muted);font-size:12px}
.ql-category{color:var(--ql-accent);font-size:12px}
.ql-row-actions{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:2px 10px}
.ql-row-actions .ql-text,.ql-row-actions a{font:inherit;font-size:12px;min-height:32px;padding:5px 0;border:0;background:transparent;color:var(--ql-accent);text-decoration:none;white-space:nowrap}
.ql-row-actions .ql-text:hover,.ql-row-actions a:hover{background:transparent;text-decoration:underline;text-underline-offset:4px}
body[data-variant="1"][data-library-view="list"] .list-meta{margin-block:8px 6px}
body[data-variant="1"][data-library-view="list"] .ql-dates{margin-block:8px 6px}
body[data-variant="1"][data-library-view="list"] .heading{padding-block:14px}
.quote-page:has(.ql-library) #quote-app{padding-top:28px}
.quote-page:has(.ql-library) .quote-heading{margin-bottom:16px}
.quote-page:has(.ql-library) .quote-heading h1{font-size:30px}
.quote-page:has(.ql-library) .quote-meta-line{padding-block:4px 8px}
@media(min-width:901px){.ql-bulk{position:sticky;top:0;z-index:5}body[data-variant="1"] .ql-bulk{top:54px}}
@media(min-width:1450px){.ql-row{grid-template-columns:32px 40px minmax(260px,1fr) 80px 120px 130px 112px 60px 130px}}
@media(max-width:1050px){.ql-row{grid-template-columns:28px 30px minmax(170px,1fr) 54px 80px 80px 90px 45px 100px;gap:6px}.ql-title-cell{gap:6px}.ql-row-actions{gap:0 8px}}
@media(max-width:900px){
 .ql-header{position:absolute;clip-path:inset(50%);width:1px;height:1px;overflow:hidden;padding:0;border:0}
 .ql-row{grid-template-columns:28px minmax(0,1fr) auto;gap:3px 8px;padding:12px 4px;min-height:104px}
 .ql-row .ql-check{grid-column:1;grid-row:1/4;align-self:start}
 .ql-number{display:none}.ql-title-cell{grid-column:2/4;grid-row:1;gap:8px}
 .ql-title-copy .ql-title{font-size:15px}.ql-copy{font-size:13px!important}
 .ql-category{grid-column:2;grid-row:2}.ql-recorder{grid-column:2;grid-row:3}.ql-recorder::before{content:"录制者："}.ql-uploader{grid-column:2;grid-row:4}.ql-uploader::before{content:"上传者："}
 .ql-created{grid-column:2;grid-row:5}.ql-duration{grid-column:3;grid-row:2;text-align:end}
 .ql-row-actions{grid-column:3;grid-row:3/6;gap:0 12px;max-width:130px}
 .ql-row-actions .ql-text,.ql-row-actions a{min-height:40px;font-size:13px}
 .ql-dates{gap:10px 8px}.ql-dates .ql-date-label{flex-basis:100%}.ql-dates label{flex:1 1 45%}.ql-dates input[type=date]{width:100%;font-size:16px}
 .ql-selection-count{flex-basis:100%}.ql-bulk{gap:8px 12px}.ql-batch-hint{font-size:13px!important;margin-inline-start:0}
}

.quote-recorder-dialog{width:min(460px,calc(100vw - 32px));padding:24px;border:1px solid #eadfe3;border-radius:16px;color:#342b30;background:#fff;box-shadow:0 16px 60px #24182030}
.quote-recorder-dialog::backdrop{background:#21151c60}
.quote-recorder-dialog h2{font-size:22px;margin:0 0 12px}
.quote-recorder-dialog .quote-actions{justify-content:flex-end;margin-top:24px}
.quote-recorder-form{display:flex;align-items:end;flex-wrap:wrap;gap:16px;padding:16px 0;border-bottom:1px solid #eadfe3}
.quote-recorder-form .quote-field{flex:1 1 240px;max-width:520px}
.quote-recorder-form .quote-check{min-height:42px}
