/* Keep the existing visual world; give each long surface its own viewport. */
html { height: 100%; overflow: clip; }
body { position: fixed; inset: 0; width: 100%; height: 100dvh; display: flex; flex-direction: column; overflow: clip; }
.app-header { flex: none; }
.global-message { flex: none; max-height: 22dvh; overflow: auto; }
.app-main { width: 100%; flex: 1; min-height: 0; grid-template-rows: minmax(0,1fr); }
.writing { min-height: 0; overflow: hidden; padding-top: 20px; }
.writing > nav, .mobile-tools, .reuse-status { flex: none; }
.steps { padding-bottom: 18px; margin-bottom: 20px; }
#writer-form { display: flex; flex-direction: column; flex: 1; min-height: 0; overflow: hidden; }
.form-scroll { flex: 1; min-height: 0; overflow: auto; padding: 0 6px 18px 0; scrollbar-color: var(--input-line) var(--paper); }
.workflow-actions { flex: none; padding: 12px 0; border-top: 1px solid var(--line); background: var(--paper); }
.workflow-actions .form-actions { margin-top: 0; }
.workflow-actions .hint, .workflow-actions .export-status { margin-bottom: 6px; }
.workflow-actions .export-status:empty, .workflow-actions .hint:empty { display: none; }
.writing-footer { flex: none; margin-top: 0; padding: 7px 0 10px; }
.preview { height: 100%; min-height: 0; position: relative; top: auto; }
.preview-toolbar, .preview-footer { flex: none; }
.preview-canvas { min-height: 0; }
.body-writing-actions, .content-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.body-writing-actions { margin-top: 12px; }
.body-writing-actions button, .content-actions button { padding: 8px 12px; font-size: 13px; }
.content-workspace { min-width: 0; margin-top: 16px; }
.content-toolbar { position: sticky; top: 0; z-index: 3; background: var(--paper); border: 1px solid var(--line); padding: 12px; margin-bottom: 12px; border-radius: var(--radius); overflow: auto; }
.content-actions > label, .content-format-fields > label { display: flex; flex-direction: column; gap: 5px; margin: 0; font-size: 12px; min-width: 0; }
.content-actions select { min-width: 145px; }
.content-actions .check { flex-direction: row; align-items: center; }
.content-format summary { padding-block: 12px 2px; min-height: 40px; }
.content-format-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding-top: 12px; }
.content-block { min-width: 0; border: 1px solid var(--line); border-radius: var(--radius); padding: 12px; margin-bottom: 12px; }
.content-block.selected { border-color: var(--blue); background: var(--tint); }
.content-field { display: block; margin: 0; }
.content-field > span { display: block; font-size: 12px; color: var(--muted); margin-bottom: 7px; }
.content-field textarea { display: block; width: 100%; min-width: 0; margin: 0; max-height: min(240px,var(--content-input-max,240px)); }
.content-table-scroll { min-width: 0; overflow-x: auto; margin-top: 12px; padding: 3px; scrollbar-color: var(--input-line) var(--paper); }
.content-table { width: 100%; border-collapse: collapse; table-layout: fixed; }
.content-table th, .content-table td { border: 1px solid var(--input-line); min-width: 110px; padding: 4px; vertical-align: top; background: var(--paper); }
.content-table .content-field > span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.content-table textarea { border-color: transparent; border-radius: 3px; padding: 8px; min-height: 76px; font-size: 14px; line-height: 1.7; }
.content-table th textarea { font-weight: 600; }
:is(#content-table-form,#postscript-content-table-form) > label { display: block; margin-top: 16px; }
:is(#content-table-form,#postscript-content-table-form) .two-fields > label { display: block; font-size: 14px; }
:is(#content-table-form,#postscript-content-table-form) input:not([type="checkbox"]) { display: block; width: 100%; margin-top: 7px; }
@media (max-height: 720px) {
  .app-header { height: 64px; }
  .writing { padding-top: 14px; }
  .steps { padding-bottom: 10px; margin-bottom: 12px; }
  .workflow-actions { padding-block: 9px; }
  .writing-footer { padding-block: 4px; font-size: 11px; }
  .preview-toolbar { padding-block: 12px; }
}
@media (max-height: 560px) {
  .content-toolbar { padding: 8px; }
  .content-table textarea { min-height: 60px; line-height: 1.5; padding: 6px; }
}
@media (max-width: 979px) {
  .app-main { display: block; position: relative; }
  .writing { height: 100%; padding-bottom: 0; }
  .preview { display: none; height: 100%; border-left: 0; }
  .app-main.preview-mode { display: grid; grid-template-rows: minmax(0,1fr) auto; }
  .app-main.preview-mode .writing, .app-main.preview-mode #writer-form { display: contents; }
  .app-main.preview-mode .writing > nav, .app-main.preview-mode .mobile-tools, .app-main.preview-mode .reuse-status, .app-main.preview-mode .form-scroll, .app-main.preview-mode .writing-footer { display: none; }
  .app-main.preview-mode .workflow-actions { grid-row: 2; padding-inline: 16px; }
  .app-main.preview-mode .preview { display: flex; }
  .writing-footer { padding-block: 6px; }
}
@media (max-width: 640px) {
  .app-header { height: auto; min-height: 64px; padding: 8px 12px; }
  .header-actions { gap: 2px; }
  .header-actions button { padding-inline: 8px; }
  .writing { padding-inline: 16px; }
  .content-format-fields { grid-template-columns: 1fr; }
}

/* Continuous manuscript: content owns the space; precise controls are contextual. */
.content-block{border:0;border-radius:0;padding:0;margin:0;background:transparent;box-shadow:none}
.content-block.selected{border:0;background:transparent}
.continuous-editor{min-height:240px;padding:16px 18px;border:1px solid var(--input-line,#aeb9c8);border-radius:7px;background:var(--paper,#fff);color:var(--ink,#202b3c);line-height:1.9;font-size:16px;overflow-wrap:anywhere;caret-color:var(--blue,#2458b8);outline-offset:3px}
.continuous-editor:focus-within{border-color:var(--blue,#2458b8)}
.continuous-editor .writing-line{min-height:1.9em;line-height:1.9;margin:0 0 8px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;white-space:pre-wrap;font:inherit;overflow-wrap:anywhere}
.continuous-editor [data-editor-key]:focus{outline:0;box-shadow:none}
.continuous-editor [data-role="title"]{font-weight:650;text-align:center}
.continuous-editor [data-role="heading"],.continuous-editor [data-role="heading2"]{font-weight:650}
.continuous-editor ::selection{background:#d6e6ff;color:#172947}
.continuous-editor [data-readonly]{background:#f1f3f5;color:#475568;cursor:text}
.continuous-editor .content-table-scroll,.continuous-editor .word-table-scroll{margin:12px 0;max-width:100%;overflow-x:auto}
.continuous-editor .content-table{margin:0;width:100%;border-collapse:collapse}
.continuous-editor .content-table td,.continuous-editor .content-table th{padding:6px;vertical-align:top}
.continuous-editor .writing-cell{white-space:pre-wrap;min-height:2.2em;line-height:1.7;padding:2px 4px;font-weight:400;overflow-wrap:anywhere}
.continuous-editor .word-table{border:0;padding:0;margin:12px 0;background:transparent}
.continuous-editor .word-section{font-size:12px;color:#5e6b7b;margin:14px 0 8px}
.continuous-editor .word-table .writing-line{min-height:1.7em;line-height:1.7;margin:0;padding:3px}
.content-toolbar{display:flex;flex-wrap:wrap;align-items:flex-start;gap:8px;padding:8px 0;background:var(--paper,#fff);border:0;border-radius:0;box-shadow:none}
.writing-context{min-width:0;max-width:100%;background:var(--paper,#fff)}
.writing-context>summary{padding:7px 9px;cursor:pointer;color:#2458b8;font-size:14px;min-height:36px}
.writing-context[open]{width:100%;padding-bottom:10px;border-bottom:1px solid #dce2ea}
.writing-context .content-actions{padding:8px 0;gap:8px}
.writing-context .content-format-fields{gap:12px}
.word-selection-format>label{display:inline-flex;flex-direction:column;gap:4px;margin:8px 12px 0 0;max-width:180px}
.word-selection-format>label input,.word-selection-format>label select{width:100%;padding:7px 9px}
.body-writing-actions,.postscript-writing-actions{gap:8px}
#postscript-content-blocks.continuous-editor{min-height:160px}
@media(max-width:760px){.continuous-editor{padding:12px;min-height:220px}.content-toolbar{position:static}.word-selection-format>label{max-width:140px}}

/* Material questions remain beside their original text, outside editable data. */
.assembly-note{margin:10px 0 18px;padding:10px 12px;background:#f3f6fc;border:1px solid #dce2ea;border-radius:6px;white-space:normal;font-size:14px;line-height:1.65;cursor:default}
.assembly-note p{margin:0 0 8px}.assembly-note .dialog-actions{justify-content:flex-start;gap:8px}.assembly-note details{font-size:13px}.assembly-note blockquote{white-space:pre-wrap;margin:8px 0}.assembly-note button{min-height:36px;font-size:14px}
#assembly-status{margin:0 0 14px}#assembly-status>p{margin:0 0 6px}

/* Explicitly organize the current selected text; the preview does not impersonate a source grid. */
.text-table-dialog{width:min(860px,calc(100% - 32px));max-height:calc(100dvh - 32px);padding:0;border:0;border-radius:12px;overflow:hidden;color:var(--ink,#202b3c);background:var(--paper,#fff)}
.text-table-dialog[open]{display:flex;flex-direction:column}.text-table-dialog>header{padding:24px 28px 12px;border-bottom:1px solid var(--line,#dce2ea)}.text-table-dialog>header h2{margin:0 0 8px}.text-table-dialog>header p{margin:0;font-size:14px;color:var(--muted,#5e6b7b);max-width:72ch}
.text-table-dialog-body{min-height:0;overflow:auto;padding:20px 28px;overscroll-behavior:contain}.text-table-dialog-body>section+section{margin-top:24px}.text-table-dialog-body h3{font-size:15px;margin:20px 0 10px}.text-table-dialog-body label:not(.check){display:block;margin:12px 0}.text-table-dialog-body select,.text-table-dialog-body input[type=number]{display:block;width:100%;max-width:510px;margin-top:7px}
.text-table-source-choice{display:flex!important;gap:10px;align-items:flex-start;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.text-table-source-choice input{flex:0 0 18px;accent-color:var(--blue,#2458b8)}.text-table-source-choice span{min-width:0}.text-table-source-line{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px}
.text-table-result{overflow:auto;margin:12px 0;padding-bottom:4px}.text-table-result table{border-collapse:collapse;min-width:100%;table-layout:fixed}.text-table-result th,.text-table-result td{border:1px solid var(--input-line,#aeb9c8);padding:10px;min-width:90px;height:42px;white-space:pre-wrap;overflow-wrap:anywhere;vertical-align:top}.text-table-result th{background:var(--tint,#edf3fe);font-weight:600}.text-table-dialog>footer{flex:none;margin:0;padding:14px 28px;border-top:1px solid var(--line,#dce2ea);background:var(--paper,#fff)}.text-table-existing-path{padding:8px 0 12px;border-bottom:1px solid var(--line,#dce2ea)}

/* Keep the current decision and its reason together, including long source lists. */
.text-table-dialog>footer.text-table-dialog-footer{display:block}.text-table-dialog-footer>.text-table-operation-message{margin:0 0 10px;font-size:13px;line-height:1.65;overflow-wrap:anywhere}.text-table-dialog-footer>.dialog-actions{margin:0;justify-content:flex-start;gap:10px}.text-table-blank-choices{border-top:1px solid var(--line,#dce2ea);border-bottom:1px solid var(--line,#dce2ea);margin:14px 0}.text-table-blank-choices>summary{min-height:44px;padding:10px 0;color:var(--blue,#2458b8);font-size:13px}.text-table-blank-choices .text-table-source-choice{margin-block:10px}

.text-table-show-preview{display:inline-block;min-height:28px;padding:0 4px;font-size:13px;line-height:1.65;vertical-align:baseline;background:transparent;border:0;color:var(--blue,#2458b8)}

/* Reserve space inside the scrolling clip for the input focus outline. */
.form-scroll{padding-left:6px}
body:not(.word-mode) h1.form-intro{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
body:not(.word-mode) p.form-intro{display:none}
.writing-footer{justify-content:flex-end}
#welcome-heading:focus{outline:none}

.export-heading{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.export-description{display:none!important}
#export-review-dialog{width:min(680px,calc(100% - 32px))}
#export-review-dialog .dialog-heading{position:sticky;top:-26px;background:var(--paper);z-index:1;padding-top:8px}
#export-review-open{margin:6px 0;font-size:14px}
#reuse-status a{text-decoration:underline;text-underline-offset:3px}
