:focus-visible{outline:3px solid #8bb6fc;outline-offset:3px}button,.btn,a,input,textarea,select{transition:background-color .15s,border-color .15s,box-shadow .15s}button:not(:disabled):hover,.btn:not(:disabled):hover{filter:brightness(.96)}button:disabled,.btn:disabled{cursor:not-allowed;opacity:.55}.modal-open{overflow:hidden}.dialog{width:min(680px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overscroll-behavior:contain;scrollbar-gutter:auto}.dialog .dialog-head{position:sticky;top:0;z-index:5;background:#fff;cursor:grab;touch-action:none;user-select:none;box-shadow:0 1px 0 #e6ebf3}.dialog.is-dragging .dialog-head{cursor:grabbing}.dialog.is-dragging{user-select:none}.dialog-head h2{margin-right:auto}.dialog .dialog-foot{position:sticky;bottom:0;background:#fff;z-index:4;box-shadow:0 -1px 0 #e6ebf3}.dialog-center{margin-left:auto}.toast{z-index:100;max-width:min(600px,90vw);pointer-events:none}.input:focus,.textarea:focus{border-color:#6798e8;box-shadow:0 0 0 3px #eaf1ff;outline:none}input[readonly]{background:#f4f6fa;color:#718096}.interaction-status{font-size:13px;color:#6a7e97;padding:10px 18px;min-height:38px}.interaction-status.error{color:#b42318;background:#fff3f1}.url-count{font-size:12px;color:#738297;margin-top:6px}.selection-count{color:#4774b5;font-size:12px;margin-left:10px}.table-wrap{scrollbar-gutter:auto}tbody tr:hover{background:#f6f9fe}tbody tr:has(.row-check:checked){background:#edf4ff}input[type=checkbox]{accent-color:#2c61c7}.batch-dialog .dialog-head{cursor:grab}.batch-dialog.is-dragging .dialog-head{cursor:grabbing}.batch-preview-scroll{overscroll-behavior:contain}#batchImportPreviewBtn{min-width:120px}#batchImportSubmit{min-width:150px}#taskForm [type=submit]{min-width:120px}.dialog-head button{flex-shrink:0}#weightError:empty{display:none}@media(max-width:600px){.dialog-head,.dialog-foot{padding:12px}.dialog-title{font-size:16px}.dialog.batch-dialog{width:calc(100vw - 16px)}.dialog{max-height:calc(100dvh - 16px)}.dialog-foot{flex-wrap:wrap}.header-inner{gap:10px;flex-wrap:wrap}.header-inner h1{font-size:20px}.time-grid{grid-template-columns:1fr}.toolbar{align-items:stretch}.dialog-center{padding:6px 10px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.access-banner{margin:0 18px 16px;padding:16px 18px;border:1px solid #dfe7f3;border-radius:10px;background:#f7faff;display:flex;justify-content:space-between;align-items:center;gap:16px}.access-banner strong{margin-right:14px}.access-banner span{font-size:13px;color:#557095}.access-banner small{display:block;margin-top:8px;color:#75879b;line-height:1.6}.access-banner.blocked{background:#fff5f3;border-color:#f3d5cf}.access-banner.blocked span{color:#b13e30}.access-dialog fieldset{border:0;margin:0;min-width:0}.access-dialog label{display:block;margin:16px 0 8px}.access-dialog textarea{font-family:ui-monospace,monospace}.access-dialog .dialog-foot{flex-wrap:wrap}.access-dialog p{line-height:1.7}@media(max-width:600px){.access-banner{margin:0 10px 12px;align-items:stretch;flex-direction:column}.access-banner strong{display:block;margin-bottom:5px}}

/* Keep page controls aligned independently of table and dialog scrollbars. */
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.header-inner a { flex-shrink:0; text-decoration:none; font-size:13px; }
.toolbar { flex-wrap:wrap; }
.actions, .filters { min-width:0; }
.filters { margin-left:auto; }
.filter-box { flex-wrap:wrap; }
.btn { white-space:nowrap; }
.access-banner > div { min-width:0; overflow-wrap:anywhere; }
.access-banner > button { flex-shrink:0; }
.dialog-head .btn { flex:0 0 auto; }
.dialog-title { min-width:0; }
.dialog .field, .batch-grid > *, .time-grid > * { min-width:0; }
.dialog input.input, .dialog textarea { min-width:0; max-width:100%; }
.generator-row .generator-quantity { width:110px; }
.generator-row label { display:inline-flex; margin:0; align-items:center; }
.quick-times { grid-template-columns:repeat(3,minmax(0,1fr)); }
@media (max-width:1200px) {
    .toolbar { align-items:flex-start; flex-direction:column; }
    .filters { margin-left:0; width:100%; }
}
@media (max-width:760px) {
    .filter-box { flex-direction:row; align-items:center; width:auto; }
    .filters { align-items:stretch; }
    .filters .filter-box { flex:1 1 auto; }
    .dialog .btn, .pager .btn { flex:0 0 auto; }
    .quick-times { grid-template-columns:repeat(3,minmax(0,1fr)); }
    .generator-row { flex-direction:row; align-items:center; }
    .generator-row label { width:auto; }
    .generator-row .btn { width:auto; }
    .pager { gap:8px; }
}
@media (max-width:480px) {
    .header-inner { align-items:flex-start; flex-direction:column; gap:8px; }
    .filter-box { gap:10px; }
    .filter-title { width:100%; }
    .dialog-head { gap:8px; }
    .dialog-head h2 { font-size:16px; }
    .dialog-foot { gap:8px; }
    .batch-grid, .batch-stats { grid-template-columns:repeat(2,minmax(0,1fr)); }
    .batch-label-row > label:first-child { width:100%; }
}

.batch-time-control { margin-bottom:10px; }
.batch-time-control .batch-time-switch { margin-bottom:0 !important; }

/* Shared task workspace and modal rhythm. */
.header { min-height:72px; display:flex; align-items:center; }
.header-inner { width:100%; }
.header-inner h1 { font-size:19px; font-weight:600; }
.header-inner a { color:#d4deee !important; padding:6px 0; }
.page .panel { border-color:#e5eaf1; }
.toolbar { padding:18px 20px; background:#fcfdff; gap:14px; }
.actions { gap:8px; }
.filter-box { border-color:#e5eaf1; padding:8px 12px; border-radius:8px; }
.btn { border-radius:7px; font-weight:500; }
.btn.danger { background:#fff2f1; color:#c34e49; border-color:#f1d6d3; }
.btn.danger:hover { background:#ffe7e5; color:#b43b35; border-color:#e9bcb8; }
.table-wrap th { font-weight:500; background:#f8fafd; color:#8592a6; }
.table-wrap td { color:#47576e; font-variant-numeric:tabular-nums; }
.footer { padding:16px 20px; background:#fcfdff; border-top:1px solid #edf0f5; }
.access-banner { margin:0 20px 18px; padding:14px 16px; background:#f8faff; border-color:#e5ebf5; border-radius:9px; }
.interaction-status { padding:14px 20px; color:#8a97aa; font-size:12px; }
.dialog { border:1px solid #e5eaf1; border-radius:14px; box-shadow:0 24px 80px #172b4d30; }
.modal { background:rgba(23,43,73,.4); backdrop-filter:blur(2px); }
.dialog .dialog-head { padding:17px 22px; }
.dialog-title { font-size:17px; color:#263449; }
.dialog .dialog-foot { padding:16px 22px; background:#fcfdff; }
.form, .batch-fields, .batch-preview { padding:22px; }
.field label { font-size:13px; font-weight:600; }
.input, .textarea { border-color:#dce3ed; border-radius:7px; }
.generator-card { border-color:#e2eaf7; background:#f8faff; padding:14px; }
.generator-title { color:#49668f; font-size:13px; }
.batch-preview-table th { font-weight:500; }
.batch-message { margin:0 22px 20px; }
@media(max-width:760px){.page{padding:20px 14px 28px}.header{padding:16px}.toolbar,.footer{padding:14px}.access-banner{margin:0 14px 14px}.interaction-status{padding:12px 14px}.form,.batch-fields,.batch-preview{padding:16px}.dialog .dialog-head,.dialog .dialog-foot{padding:14px 16px}.batch-message{margin:0 16px 16px}.header-inner h1{font-size:18px}}
