@font-face{font-family:Space Mono;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/SpaceMono-Regular.ttf) format("truetype")}@font-face{font-family:Baskerville;font-style:normal;font-weight:100 500;src:local("Baskerville")}@font-face{font-family:Baskerville;font-style:italic;font-weight:100 500;src:local("Baskerville-Italic"),local("Baskerville Italic")}@font-face{font-family:Baskerville;font-style:normal;font-weight:600;src:local("Baskerville-SemiBold"),local("Baskerville SemiBold")}@font-face{font-family:Baskerville;font-style:italic;font-weight:600;src:local("Baskerville-SemiBoldItalic"),local("Baskerville SemiBold Italic")}@font-face{font-family:Baskerville;font-style:normal;font-weight:700 900;src:local("Baskerville-Bold"),local("Baskerville Bold")}@font-face{font-family:Baskerville;font-style:italic;font-weight:700 900;src:local("Baskerville-BoldItalic"),local("Baskerville Bold Italic")}*{box-sizing:border-box}:root{--black: #000000;--white: #ffffff;--gray: #dcdcdc;--gray-2: #eeeeee;--orange: #ef8933;--pink: #ff5fa2;--hl: #bbff00;--mono: "Space Mono", monospace}::selection{background:var(--hl);color:var(--black)}html,body,#root{height:100%}body{margin:0;font-family:var(--mono);font-size:13px;font-weight:400;color:var(--black);background:var(--white)}b,strong{font-weight:400}.muted{color:var(--black);font-size:11px}.app{display:flex;height:100vh}.books-home{height:100vh;display:flex;flex-direction:column;overflow-y:auto}.books-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 22px;border-bottom:1px solid var(--black)}.books-head h1{font-size:16px;font-weight:400;margin:0}.books-head a{color:var(--black)}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;padding:26px 22px 80px;max-width:1100px}.book-card{border:1px solid var(--black);background:var(--white);color:var(--black);text-decoration:none;display:flex;flex-direction:column;transition:all .2s ease-in-out}.book-card:hover{background:var(--hl)}.book-card-cover{height:170px;background:var(--gray-2);border-bottom:1px solid var(--black);display:flex;align-items:center;justify-content:center;overflow:hidden}.book-card-cover img{width:100%;height:100%;object-fit:cover;display:block}.book-card-meta{padding:10px 12px 12px;display:flex;flex-direction:column;gap:4px}.book-card-title{text-transform:uppercase;font-size:13px}.login-page{height:100vh;display:flex;align-items:center;justify-content:center}.login-box{border:1px solid var(--black);padding:30px 34px;display:flex;flex-direction:column;gap:14px;align-items:flex-start;max-width:420px}.login-title{text-transform:uppercase;font-size:14px}.login-btn{text-decoration:none;display:inline-block}.login-error{margin:0;color:var(--pink);font-size:12px}.sidebar{width:250px;flex:none;background:var(--white);border-right:1px solid var(--black);display:flex;flex-direction:column;padding:0 0 10px;overflow-y:auto}.all-books{display:block;padding:6px 14px;font-size:10px;text-transform:uppercase;color:var(--black);text-decoration:none;border-bottom:1px solid var(--black)}.all-books:hover{background:var(--gray)}.sidebar .book-title{margin:0;border:none;border-bottom:1px solid var(--black);background:var(--white);color:var(--black);font-family:var(--mono);font-size:14px;text-transform:uppercase;padding:14px;width:100%}.sidebar .book-title:focus{outline:none;background:var(--white)}.sidebar .book-title::placeholder{color:var(--gray)}.side-group{display:flex;flex-direction:column}.side-group a,.toc a{padding:6px 14px;color:var(--black);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.side-group a{text-transform:uppercase;cursor:pointer}.side-group a:hover,.toc a:hover{background:var(--gray)}.side-group a.active,.toc a.active{background:var(--hl);color:var(--black)}.side-label{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 3px;text-transform:uppercase;font-size:10px;letter-spacing:.05em}.side-label .tbtn{padding:1px 6px;font-size:10px}.toc{display:flex;flex-direction:column}.toc a{position:relative;padding:3px 18px 3px 14px;font-size:10px;cursor:pointer}.toc a.is-attention:after{content:"!";position:absolute;right:7px;color:var(--pink)}.toc a.is-complete:after{content:"✓";position:absolute;right:5px}.toc-empty{padding:3px 14px;font-size:10px}.side-bottom{margin-top:auto;border-top:1px solid var(--black);padding-top:10px}.snapshot-box{display:flex;align-items:center;gap:8px;padding:12px 14px 4px;font-size:11px}.build-stamp{padding:4px 14px 0;font-size:9px;text-transform:uppercase}.main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden}.page-pad{padding:26px 34px 80px;overflow-y:auto}.page-pad h1{font-size:18px;font-weight:400;text-transform:uppercase;margin:0 0 8px}.page-pad>p.muted{max-width:620px;font-size:12px}.tbtn{border:1px solid var(--black);background:var(--white);color:var(--black);border-radius:0;padding:4px 10px;font-size:12px;font-family:var(--mono);text-transform:uppercase;cursor:pointer;transition:all .2s ease-in-out}.tbtn:hover,.tbtn.active{background:var(--black);color:var(--white)}.tbtn:disabled{cursor:not-allowed;pointer-events:none}.tbtn.danger:hover{background:var(--black);color:var(--white)}.tabs{display:inline-flex;border:1px solid var(--black)}.tabs button{border:none;background:var(--white);color:var(--black);padding:5px 14px;font-size:12px;font-family:var(--mono);text-transform:uppercase;cursor:pointer}.tabs button+button{border-left:1px solid var(--black)}.tabs button.active{background:var(--black);color:var(--white)}.zoom-picker,select,input[type=number],input[type=text],input:not([type]),textarea{border:1px solid var(--black);border-radius:0;padding:4px 8px;font-size:12px;background:var(--white);color:var(--black);font-family:var(--mono)}select:focus,input:focus,textarea:focus{outline:1px solid var(--black);outline-offset:1px}fieldset{border:1px solid var(--black);border-radius:0;margin:0 0 20px;padding:14px 18px 18px;max-width:780px;background:var(--white)}legend{padding:0 8px;text-transform:uppercase;font-size:12px}.field{display:flex;flex-direction:column;gap:4px}.field>span{font-size:10px;text-transform:uppercase}.field.wide{max-width:420px;margin-top:10px}.field-row{display:flex;gap:16px;flex-wrap:wrap;align-items:flex-end}.field input[type=number]{width:90px}.style-editor .field.wide{margin-top:0;margin-bottom:10px}.section-page{display:flex;flex-direction:column;height:100%}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 22px;border-bottom:1px solid var(--black);background:var(--white);flex:none}.section-head h1{font-size:14px;font-weight:400;text-transform:uppercase;margin:0}.title-input{border:none;background:transparent;font-size:14px;font-family:var(--mono);text-transform:uppercase;flex:1;min-width:0;padding:2px 0}.title-input:focus{outline:none;border-bottom:1px solid var(--black)}.head-controls{display:flex;align-items:center;gap:10px;flex:none}.save-label{font-size:11px;min-width:120px;text-align:right}.save-label.saving{background:var(--hl)}.save-label.fail{background:var(--orange);color:var(--black);padding:2px 6px}.section-body{flex:1;display:flex;min-height:0}.section-main{flex:1;min-width:0;overflow-y:auto;background:var(--gray-2)}.clean-spread-wrap{display:flex;flex-direction:column;height:100%}.spread-toolbar{flex:none;background:var(--white)}.spread-toolbar .toolbar{position:static}.clean-scroll{flex:1;min-height:0;display:flex}.clean-scroll>.image-strip{position:static;max-height:100%;padding:14px 10px 14px 14px;border-right:1px solid var(--black)}.book-flow{flex:1;min-width:0;overflow-y:auto;overflow-x:auto;padding:30px 20px 120px;background:var(--gray-2)}.flow-inner{display:flex;flex-direction:column;align-items:center}.flow-total{padding:8px 0 40px;font-size:11px;text-transform:uppercase}.book-flow .preview-item{scroll-margin-top:12px}.book-flow .page-box:not(.page-live):not(.page-blank){cursor:pointer}.page-live{cursor:text}.flow-measure{overflow:hidden}.flow-measure .ProseMirror,.live-flow .ProseMirror{height:var(--inner-h);width:var(--inner-w);column-width:var(--inner-w);column-gap:0;column-fill:auto;min-height:0}.live-flow{position:absolute;top:0;right:0;bottom:0;left:0}.live-flow .ProseMirror{margin-left:calc(var(--pgi, 0) * var(--inner-w) * -1)}.flow-measure .ProseMirror img,.live-flow .ProseMirror img,.book-typo.static-doc img{max-width:100%;max-height:calc(var(--inner-h) * .95);break-inside:avoid}.flow-measure .ProseMirror figure img,.live-flow .ProseMirror figure img,.book-typo.static-doc figure img{max-height:calc(var(--inner-h) * .85)}.book-typo figure[data-mode=page],.book-typo figure[data-mode=half],.book-typo figure[data-mode=bleed]{height:calc(var(--inner-h) - 1px);break-before:column;break-inside:avoid;justify-content:center;margin:0 auto}.book-typo figure[data-mode=half]{height:calc(var(--inner-h) / 2 - 1px)}.book-typo figure[data-mode=half]+figure[data-mode=half]{break-before:auto}.book-typo figure[data-mode=page] img,.book-typo figure[data-mode=half] img{flex:0 1 auto;min-height:0;width:auto;max-width:100%;object-fit:contain}.book-typo figure[data-mode=bleed],.book-typo figure[data-mode=spread]{width:100%}.book-typo figure[data-mode=half] figcaption{flex:none}.book-typo figure[data-mode=bleed] img,.book-typo figure[data-mode=bleed] figcaption{display:none}.book-typo figure[data-mode=spread]{height:calc(var(--inner-h) * 2 - 2px);break-before:column;break-inside:auto;margin:0}.book-typo figure[data-mode=spread] img,.book-typo figure[data-mode=spread] figcaption{display:none}.bleed-img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;pointer-events:none}.bleed-img.bleed-left{width:200%}.bleed-img.bleed-right{width:200%;left:-100%}.book-typo .ProseMirror:not([data-sec-title])>figure[data-mode]:first-child,.book-typo.static-doc:not([data-sec-title])>figure[data-mode]:first-child{break-before:auto}.flow-measure .ProseMirror:not([data-sec-title]):has(>figure[data-mode]:first-child):before,.live-flow .ProseMirror:not([data-sec-title]):has(>figure[data-mode]:first-child):before,.book-typo.static-doc:not([data-sec-title]):has(>figure[data-mode]:first-child):before{padding-top:0}.bleed-warn{position:absolute;top:8px;left:8px;z-index:2;background:var(--pink);color:var(--white);font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;pointer-events:none}.book-typo.static-doc:before,.flow-measure .ProseMirror:before,.live-flow .ProseMirror:before{content:"";display:block;padding-top:var(--sec-sink, 0px)}.book-typo.static-doc[data-sec-title]:before,.flow-measure .ProseMirror[data-sec-title]:before,.live-flow .ProseMirror[data-sec-title]:before,.scratch-clean-flow .ProseMirror[data-sec-title]:before{content:attr(data-sec-title);display:block;font-family:var(--heading-font);font-size:var(--heading-size);letter-spacing:var(--heading-ls);line-height:var(--heading-lh);text-transform:var(--heading-tt);font-weight:var(--heading-fw);margin:0 0 1em}.scratch-scroll{padding:18px 22px 120px}.scratch-box{background:var(--white);border:1px solid var(--black);width:100%;display:flex;flex-direction:column}.scratch-clean-flow{padding:0 18px 20px}.scratch-clean-flow .ProseMirror{min-height:140px;padding:14px 0 0}.scratch-clean-flow .toolbar{margin:0 -18px}.draft-divider{border-top:2px dotted var(--pink);margin:0 18px 20px;position:relative}.draft-divider span{position:absolute;top:-8px;left:0;background:var(--white);color:var(--pink);font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding-right:10px;line-height:1.6}.scratch-draft{display:flex;flex-direction:column;min-height:50vh}.scratch-draft .toolbar{border-top:1px solid var(--black)}.col-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px 0}.scratch-box>.col-label{padding:10px 18px 8px}.status-select{text-transform:uppercase}.editor-pad{width:320px;flex:none;border-left:1px solid var(--black);background:var(--gray-2);overflow-y:auto;display:flex;flex-direction:column}.settings-pad{width:420px;flex:none;border-left:1px solid var(--black);background:var(--white);display:flex;flex-direction:column;min-height:0}.settings-pad-head{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-bottom:1px solid var(--black);text-transform:uppercase;font-size:12px;flex:none}.settings-pad-body{flex:1;overflow-y:auto;padding:14px 16px 60px}.settings-pad fieldset{max-width:none}.editor{display:flex;flex-direction:column;flex:1}.toolbar{display:flex;align-items:center;gap:0;flex-wrap:wrap;padding:0;position:sticky;top:0;z-index:5;background:var(--white);border-bottom:1px solid var(--black)}.toolbar .tbtn{border:none;border-right:1px solid var(--black);padding:6px 10px}.tsep{width:0}.hl-swatch{background:var(--hl);padding:0 3px}.tbtn:hover .hl-swatch,.tbtn.active .hl-swatch{color:var(--black)}.editor-content{flex:1}.ProseMirror{outline:none;min-height:120px}.ProseMirror mark{background:var(--hl);padding:0 1px}.ProseMirror img{max-width:100%;height:auto;display:block}.ProseMirror img.ProseMirror-selectednode{outline:2px solid var(--hl)}.ProseMirror figure,.static-doc figure{margin:0 0 .6em;break-inside:avoid;display:flex;flex-direction:column;width:fit-content;max-width:100%}.ProseMirror figure img,.static-doc figure img{max-width:100%;height:auto;display:block}.ProseMirror figure figcaption,.static-doc figure figcaption{width:0;min-width:100%}.ProseMirror figure.ProseMirror-selectednode{position:relative}.ProseMirror figure.ProseMirror-selectednode img{outline:2px solid var(--hl)}.page-box:has(.live-flow figure[data-mode=bleed].ProseMirror-selectednode) .bleed-img,.page-box:has(.live-flow figure[data-mode=spread].ProseMirror-selectednode) .bleed-img{outline:2px solid var(--hl);outline-offset:-3px}.page-box:has(.live-flow figure[data-mode=bleed].ProseMirror-selectednode):after,.page-box:has(.live-flow figure[data-mode=spread].ProseMirror-selectednode):after{content:"✕";position:absolute;top:6px;right:6px;width:24px;height:24px;line-height:22px;text-align:center;font-family:var(--mono);font-size:13px;background:var(--hl);color:var(--black);border:1px solid var(--black);cursor:pointer;z-index:5}.ProseMirror figure.ProseMirror-selectednode:before{content:"✕";align-self:flex-end;margin-bottom:-24px;width:24px;height:24px;line-height:22px;text-align:center;font-family:var(--mono);font-size:13px;background:var(--hl);color:var(--black);border:1px solid var(--black);cursor:pointer;z-index:4}.ProseMirror figure[data-mode=bleed].ProseMirror-selectednode:before,.ProseMirror figure[data-mode=spread].ProseMirror-selectednode:before{display:none}.editor-plain .ProseMirror figcaption{font-size:11px}.editor-plain .ProseMirror{padding:10px 14px 20px;font-family:var(--mono);font-size:13px;line-height:1.8}.editor-plain .ProseMirror h2{font-size:15px;font-weight:400;text-transform:uppercase}.editor-plain .ProseMirror p.caption{font-size:11px}.book-typo .ProseMirror,.book-typo.static-doc{font-family:var(--body-font);font-size:var(--body-size);letter-spacing:var(--body-ls);line-height:var(--body-lh);text-transform:var(--body-tt);font-weight:var(--body-fw)}.book-typo .ProseMirror p,.book-typo.static-doc p{margin:0 0 .6em}.book-typo .ProseMirror h2,.book-typo .ProseMirror h3,.book-typo.static-doc h2,.book-typo.static-doc h3{font-family:var(--heading-font);font-size:var(--heading-size);letter-spacing:var(--heading-ls);line-height:var(--heading-lh);text-transform:var(--heading-tt);font-weight:var(--heading-fw);margin:1.2em 0 .5em}.book-typo .ProseMirror p.caption,.book-typo.static-doc p.caption,.book-typo .ProseMirror figcaption,.book-typo.static-doc figcaption{font-family:var(--caption-font);font-size:var(--caption-size);letter-spacing:var(--caption-ls);line-height:var(--caption-lh);text-transform:var(--caption-tt);font-weight:var(--caption-fw)}.book-typo hr{border:none;border-top:1px solid var(--black);margin:1.2em 0}.static-doc mark{background:var(--hl)}.static-doc img{max-width:100%;height:auto;display:block}.image-strip{width:104px;flex:none;position:sticky;top:0;max-height:calc(100vh - 140px);overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding-bottom:20px}.strip-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding-bottom:2px;border-bottom:1px solid var(--black)}.strip-empty{font-size:10px;margin:4px 0 0}.strip-empty a{color:var(--black)}.strip-item{border:1px solid var(--black);background:var(--white);padding:0;cursor:grab;display:block;transition:all .2s ease-in-out}.strip-item:hover{background:var(--hl)}.strip-item img{width:100%;height:72px;object-fit:cover;display:block;pointer-events:none}.book-preview{display:flex;flex-direction:column;height:100%}.book-preview .section-head h1{text-transform:uppercase}.preview-scroll{flex:1;overflow-y:auto;padding:34px 20px 120px;background:var(--gray-2)}.preview-item{display:flex;flex-direction:column;align-items:center;margin-bottom:48px}.preview-label{margin-bottom:8px;font-size:11px;text-transform:uppercase}.preview-label a{color:inherit}.measurers{position:absolute;left:-100000px;top:0;visibility:hidden;pointer-events:none}.page-counter{overflow:hidden}.spread{display:flex}.page-box{position:relative;background:var(--white);border:1px solid var(--black);overflow:hidden}.page-box+.page-box{margin-left:-1px;border-left:1px solid var(--black)}.page-blank{background:var(--gray-2)}.book-typo .toc-line{display:flex;justify-content:space-between;align-items:baseline;gap:1em}.book-typo .toc-line .toc-t{overflow-wrap:anywhere}.book-typo .toc-line .toc-n{flex:none}.cover-preview{background:var(--white);border:1px solid var(--black);display:flex;align-items:center;justify-content:center;overflow:hidden;margin-top:14px;position:relative}.cover-preview img{display:block}.cover-controls{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin:14px 0 6px}.cover-spec{border:1px solid var(--black);background:var(--gray-2);padding:10px 14px;font-size:12px;max-width:620px;margin:12px 0}.cover-stage{margin-top:18px;display:flex}.cover-crop{overflow:hidden;border:1px solid var(--black);background:var(--white);position:relative}.cover-crop img{display:block}.cover-empty{display:flex;align-items:center;justify-content:center;text-transform:uppercase;font-size:11px}.wrap-guides{position:absolute;top:0;bottom:0;border-left:1px dashed var(--black);pointer-events:none}.wrap-tag{position:absolute;bottom:6px;font-size:10px;text-transform:uppercase;background:var(--white);border:1px solid var(--black);padding:0 4px}.dropzone{border:1px dashed var(--black);border-radius:0;padding:32px;text-align:center;text-transform:uppercase;font-size:12px;cursor:pointer;margin:14px 0 26px;max-width:780px;background:var(--white);transition:all .2s ease-in-out}.dropzone.over{background:var(--hl)}.img-group{margin-bottom:34px}.img-group-head{display:flex;align-items:baseline;gap:10px;border-bottom:1px solid var(--black);padding-bottom:4px;margin-bottom:12px;max-width:1100px;font-size:12px;text-transform:uppercase}.img-group-head .count{font-size:11px}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;max-width:1100px}.image-card{background:var(--white);border:1px solid var(--black);overflow:hidden;display:flex;flex-direction:column}.image-card.dragging{background:var(--hl)}.image-card>a{display:block;background:var(--gray-2);cursor:grab}.image-card img{width:100%;height:150px;object-fit:cover;display:block}.image-meta{padding:8px 10px 10px;display:flex;flex-direction:column;gap:6px}.image-name{font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.image-meta select{font-size:11px}.image-meta .tbtn{font-size:10px;padding:3px 8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:50;display:flex;align-items:center;justify-content:center}.modal{background:var(--white);border:1px solid var(--black);padding:16px 18px;width:min(720px,90vw);max-height:80vh;overflow-y:auto}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;text-transform:uppercase;font-size:12px}.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.picker-item{border:1px solid var(--black);background:var(--white);padding:0 0 6px;cursor:pointer;overflow:hidden;text-align:left;font-family:var(--mono)}.picker-item:hover{background:var(--hl)}.picker-item img{width:100%;height:100px;object-fit:cover;display:block;margin-bottom:5px}.picker-item span{display:block;padding:0 7px;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
