:root{--paper: #f7f4ee;--paper-deep: #efeae0;--ink: #2b2925;--ink-soft: #6d675c;--line: #ddd6c8;--accent: #5c6248;--white: #fffdf9;--danger: #a8543a;--go: var(--accent);--radius: 2px;--radius-lg: 3px;--shadow: 0 1px 2px rgba(43, 41, 37, .05), 0 8px 32px rgba(43, 41, 37, .08);--ui: "Inter", system-ui, sans-serif;--display: "Cormorant Garamond", Georgia, serif;--text: "EB Garamond", Georgia, serif}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--ui);background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;font-size:14px}#root{min-height:100%}.shell{max-width:1280px;margin:0 auto;padding:0 48px 96px}.topbar{display:flex;align-items:baseline;justify-content:space-between;padding:28px 0 22px;margin-bottom:8px;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--display);font-size:21px;letter-spacing:.02em}.wordmark em{font-style:italic;color:var(--accent)}.topbar .meta{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.topbar .meta.warn{color:#a05c2c}.kicker{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}h1.page-title{font-family:var(--display);font-weight:500;font-size:44px;line-height:1.08;letter-spacing:.005em;margin-bottom:10px}.lede{font-family:var(--text);font-size:17px;color:var(--ink-soft);max-width:52ch}section{margin-top:56px}.section-label{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:18px;display:flex;align-items:center;gap:14px}.section-label:after{content:"";height:1px;background:var(--line);flex:1}.upload{border:1px solid var(--line);background:var(--white);border-radius:var(--radius);min-height:300px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;cursor:pointer;transition:border-color .2s,background .2s;text-align:center;padding:40px}.upload:hover,.upload.drag{border-color:var(--accent);background:#fbfaf5}.upload .big{font-family:var(--display);font-size:26px}.upload .hint{color:var(--ink-soft);font-size:13px}.upload img.preview{max-height:380px;max-width:100%;box-shadow:var(--shadow)}.upload .tag{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);padding:5px 12px;border-radius:999px}.words{width:100%;border:none;border-bottom:1px solid var(--line);background:transparent;padding:14px 2px;font-family:var(--text);font-size:19px;color:var(--ink);outline:none;transition:border-color .2s}.words:focus{border-color:var(--accent)}.words::placeholder{color:#b4ad9e;font-style:italic}.styles-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.style-card{cursor:pointer;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .18s ease;position:relative}.style-card img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block}.style-card .name{padding:12px 14px;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);display:flex;justify-content:space-between;align-items:center}.style-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.style-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}.style-card.selected .name{color:var(--accent)}.style-card .dot{width:7px;height:7px;border-radius:50%;background:var(--accent);opacity:0}.style-card.selected .dot{opacity:1}.cta-row{margin-top:48px;display:flex;align-items:center;gap:24px}button{font-family:var(--ui);cursor:pointer;border-radius:var(--radius);transition:all .15s ease;border:1px solid transparent}.btn-primary{background:var(--ink);color:var(--paper);font-size:12px;letter-spacing:.18em;text-transform:uppercase;padding:17px 42px}.btn-primary:hover{background:var(--accent)}.btn-primary:disabled{background:#c8c2b4;cursor:default}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:11px 20px}.btn-ghost:hover{border-color:var(--ink)}.btn-quiet{background:transparent;border:none;color:var(--ink-soft);font-size:12px;text-decoration:underline;text-underline-offset:3px}.btn-quiet:hover{color:var(--ink)}.genstate{position:fixed;top:0;right:0;bottom:0;left:0;background:#f7f4eef0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;z-index:60;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.genstate .big{font-family:var(--display);font-size:30px;font-style:italic}.genstate .step{color:var(--ink-soft);font-size:13px;letter-spacing:.06em}.breath{width:44px;height:44px;border-radius:50%;border:1px solid var(--accent);animation:breath 2.4s ease-in-out infinite}@keyframes breath{0%,to{transform:scale(.7);opacity:.4}50%{transform:scale(1);opacity:1}}.variants{display:flex;flex-direction:column;gap:40px}.variant{background:var(--white);border:1px solid var(--line);padding:26px;border-radius:var(--radius)}.variant .head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:18px}.variant .vname{font-family:var(--display);font-size:24px}.variant .vname span{color:var(--ink-soft);font-size:15px;margin-left:12px;font-family:var(--ui);letter-spacing:.1em;text-transform:uppercase}.variant.chosen{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.spread-frame{box-shadow:var(--shadow)}.copy-panel{background:var(--white);border:1px solid var(--line);padding:26px 28px;border-radius:var(--radius)}.copy-panel .field{margin-bottom:18px}.copy-panel label{display:block;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.copy-panel input,.copy-panel textarea{width:100%;border:1px solid var(--line);background:transparent;font-family:var(--text);font-size:15px;padding:9px 11px;color:var(--ink);outline:none;border-radius:var(--radius);resize:vertical}.copy-panel input:focus,.copy-panel textarea:focus{border-color:var(--accent)}.editor-layout{display:grid;grid-template-columns:1fr 268px;gap:28px;align-items:start}.canvas-wrap{position:relative;background:var(--paper-deep);border:1px solid var(--line);padding:34px;border-radius:var(--radius);display:flex;justify-content:center}.inspector{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:sticky;top:20px}.inspector h3{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:14px}.inspector .row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}.inspector .cell label{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:3px}.inspector .cell input,.inspector .cell select{width:100%;border:1px solid var(--line);padding:6px 8px;font-size:12px;font-family:var(--ui);background:transparent;border-radius:var(--radius);outline:none}.inspector .prov{font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid var(--line);display:inline-block;margin-bottom:12px;color:var(--ink-soft)}.inspector .prov.SOURCE{color:var(--accent);border-color:var(--accent)}.inspector hr{border:none;border-top:1px solid var(--line);margin:16px 0}.toolrow{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 26px;align-items:center}.save-status{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px}.save-status.saved{color:var(--accent)}.save-status.err{color:var(--danger)}.mode-badge{font-size:10.5px;letter-spacing:.1em;padding:5px 11px;border-radius:999px;border:1px solid var(--line);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;margin-right:4px}.mode-badge.free{color:var(--accent);border-color:var(--accent);background:#f0f2ea}.mode-badge.paid{color:#8a5a28;border-color:#e7d9bd;background:#f7efe2}.spend-chip{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--line);border-radius:999px;padding:4px 10px;white-space:nowrap}.warnings{margin-top:18px}.warn-item{font-size:12.5px;color:#8a5a28;background:#f7efe2;border:1px solid #e7d9bd;padding:9px 12px;border-radius:var(--radius);margin-bottom:8px}.ok-item{font-size:12.5px;color:var(--accent);background:#f0f2ea;border:1px solid #d8dcc9;padding:9px 12px;border-radius:var(--radius)}.versions{margin-top:4px}.version-item{display:flex;justify-content:space-between;align-items:center;font-size:12.5px;padding:8px 2px;border-bottom:1px solid var(--line);color:var(--ink-soft)}.spread-canvas{position:relative;background:#e8e2d4;overflow:hidden;-webkit-user-select:none;user-select:none}.layer{position:absolute}.layer.image img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.layer.selectable{cursor:grab}.layer.selectable:hover{outline:1px dashed rgba(92,98,72,.55)}.layer.selected{outline:1px solid var(--accent)!important}.layer.text{overflow:visible}.layer.text .tx{width:100%;height:100%;outline:none}.handle{position:absolute;right:-5px;bottom:-5px;width:10px;height:10px;background:var(--white);border:1px solid var(--accent);cursor:nwse-resize;z-index:5}.guide{position:absolute;pointer-events:none;z-index:50}.guide.fold{border-left:1px dashed rgba(92,98,72,.5)}.guide.safe{border:1px dashed rgba(92,98,72,.28)}.guide.trim{border:1px solid rgba(43,41,37,.35)}.error-banner{background:#f6e7e2;border:1px solid #e3c4b8;color:var(--danger);padding:12px 16px;border-radius:var(--radius);margin:18px 0;font-size:13px}@media print{body{background:#fff}.no-print{display:none!important}@page{size:486mm 366mm;margin:0}.print-sheet{page-break-after:avoid}}.print-toolbar{padding:18px 24px;display:flex;gap:18px;align-items:center;border-bottom:1px solid var(--line)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper)}.login-card{width:400px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:44px 42px;box-shadow:var(--shadow)}.login-label{display:block;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:10px}.user-row{display:flex;gap:10px}.user-chip{flex:1;padding:12px 0;border:1px solid var(--line);background:transparent;text-transform:capitalize;font-size:14px;font-family:var(--text);border-radius:var(--radius)}.user-chip.on{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:26px}.book-card{position:relative;cursor:pointer;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .18s ease}.book-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.book-cover img{width:100%;aspect-ratio:3 / 4;object-fit:cover;display:block}.book-cover-blank{aspect-ratio:3 / 4;display:flex;align-items:center;justify-content:center;background:var(--paper-deep);padding:24px;text-align:center;font-family:var(--display);font-size:22px;color:var(--ink-soft)}.book-cover-blank.plus{font-size:44px;color:var(--accent)}.book-meta{padding:13px 15px;display:flex;flex-direction:column;gap:3px}.book-meta strong{font-family:var(--display);font-size:17px;font-weight:500}.book-meta span{font-size:11px;color:var(--ink-soft);letter-spacing:.05em}.book-card.new-form{padding:22px;cursor:default}.chapter-head{align-items:baseline}.chapter-title{cursor:text}.chapter-rename{border:none;border-bottom:1px solid var(--accent);background:transparent;font-family:var(--ui);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);outline:none}.spread-shelf{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:22px}.spread-card{cursor:pointer;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .18s ease}.spread-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.spread-thumb{position:relative}.spread-thumb img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block}.spread-thumb-blank{aspect-ratio:4 / 3;display:flex;align-items:center;justify-content:center;background:var(--paper-deep);color:var(--ink-soft);font-size:12px;letter-spacing:.08em}.spread-thumb-blank.plus{font-size:40px;color:var(--accent)}.badge-approved{position:absolute;top:10px;right:10px;font-size:9px;letter-spacing:.14em;text-transform:uppercase;background:var(--accent);color:var(--paper);padding:4px 9px;border-radius:999px}.spread-card-meta{padding:11px 14px;display:flex;flex-direction:column;gap:2px}.spread-card-meta strong{font-family:var(--display);font-size:15.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spread-card-meta span{font-size:10.5px;color:var(--ink-soft);letter-spacing:.06em}.card-menu{position:absolute;top:8px;right:8px;z-index:3;opacity:0;transition:opacity .15s}.card-menu.left{left:8px;right:auto}.book-card:hover .card-menu,.chapter-card:hover .card-menu,.spread-card:hover .card-menu,.card-menu:focus-within{opacity:1}.menu-dots{width:28px;height:28px;border-radius:999px;padding:0;line-height:1;background:var(--white);border:1px solid var(--line);color:var(--ink);font-size:15px;font-family:var(--ui);cursor:pointer;box-shadow:var(--shadow);display:inline-flex;align-items:center;justify-content:center}.menu-dots:hover{border-color:var(--accent);color:var(--accent)}.ctx-menu{min-width:190px;max-width:280px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:5px;z-index:90;font-family:var(--ui);animation:ctx-in .11s ease}@keyframes ctx-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}.ctx-item{width:100%;display:flex;align-items:center;gap:10px;text-align:left;background:transparent;border:none;border-radius:var(--radius);cursor:pointer;padding:9px 11px;font-size:13px;color:var(--ink);font-family:var(--ui)}.ctx-item:hover,.ctx-item.active{background:var(--paper-deep)}.ctx-item .ctx-icon{width:16px;text-align:center;color:var(--ink-soft);font-size:13px}.ctx-item .ctx-label{flex:1}.ctx-item .ctx-hint{font-size:10.5px;color:var(--ink-soft);letter-spacing:.04em}.ctx-item.danger{color:var(--danger)}.ctx-item.danger:hover,.ctx-item.danger.active{background:#f7ece7}.ctx-item.danger .ctx-icon{color:var(--danger)}.ctx-item.disabled,.ctx-item:disabled{color:var(--ink-soft);opacity:.5;cursor:default}.ctx-item.disabled:hover,.ctx-item:disabled:hover{background:transparent}.ctx-sep{height:1px;background:var(--line);margin:5px 8px}.ctx-confirm{padding:10px 11px}.ctx-confirm>span{display:block;font-size:12.5px;color:var(--ink);margin-bottom:9px;line-height:1.35}.ctx-confirm-row{display:flex;gap:8px}.ctx-confirm-row button{flex:1;padding:7px 10px;border-radius:var(--radius);font-size:12px;font-family:var(--ui);cursor:pointer;border:1px solid var(--line);background:var(--white);color:var(--ink)}.ctx-confirm-row .ctx-cancel:hover{border-color:var(--accent)}.ctx-confirm-row .ctx-do{background:var(--danger);border-color:var(--danger);color:var(--white)}.ctx-confirm-row .ctx-do:hover{filter:brightness(.94)}.style-auto{aspect-ratio:4 / 3;display:flex;flex-direction:column;gap:12px;align-items:center;justify-content:center;padding:26px;text-align:center;background:var(--paper-deep);color:var(--ink-soft);font-family:var(--text);font-size:13.5px;line-height:1.5}.style-auto-mark{font-size:26px;color:var(--accent)}.rec-badge{margin-left:14px;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);padding:3px 9px;border-radius:999px;vertical-align:middle}.book-sheet{page-break-after:always}.chapter-world{display:block;width:100%;max-width:640px;border:none;background:transparent;font-family:var(--text);font-style:italic;font-size:14.5px;color:var(--ink-soft);padding:0 0 6px;margin:-8px 0 18px;outline:none;border-bottom:1px dashed transparent;transition:border-color .2s}.chapter-world:hover,.chapter-world:focus{border-bottom-color:var(--line)}.chapter-world::placeholder{color:#beb7a6}.linked-folder{margin-top:26px;max-width:900px}.linked-folder label{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.linked-row{display:flex;gap:14px;align-items:flex-end}.linked-row .words{flex:1;padding:10px 2px}.chapter-select{border:1px solid var(--line);background:var(--white);font-family:var(--ui);font-size:12px;padding:10px 12px;border-radius:var(--radius);color:var(--ink);outline:none}.import-msg{margin-top:10px;font-size:12.5px;color:var(--accent);font-family:var(--text);font-style:italic}.whisper{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--paper);font-size:12px;letter-spacing:.06em;padding:10px 22px;border-radius:999px;z-index:70;animation:whisper-fade 3.2s ease forwards}@keyframes whisper-fade{0%{opacity:0;transform:translate(-50%) translateY(6px)}10%,80%{opacity:1;transform:translate(-50%)}to{opacity:0}}.assemble-drop{border:1px solid var(--line);background:var(--white);border-radius:var(--radius);min-height:260px;padding:22px}.assemble-empty{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;cursor:pointer}.assemble-empty .big{font-family:var(--display);font-size:24px}.assemble-empty .hint{color:var(--ink-soft);font-size:13px}.assemble-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px}.assemble-item{position:relative;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;cursor:grab;background:var(--paper-deep);transition:box-shadow .15s,opacity .15s}.assemble-item img{width:100%;aspect-ratio:4 / 3;object-fit:cover;display:block;pointer-events:none}.assemble-item.dragging{opacity:.45;box-shadow:0 0 0 2px var(--accent)}.assemble-item.add{aspect-ratio:4 / 3;display:flex;align-items:center;justify-content:center;font-size:34px;color:var(--accent);cursor:pointer}.assemble-num{position:absolute;top:8px;left:8px;z-index:2;background:var(--ink);color:var(--paper);font-size:10px;letter-spacing:.1em;padding:3px 8px;border-radius:999px}.assemble-tools{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:center;gap:6px;padding:7px;background:linear-gradient(transparent,#2b292580);opacity:0;transition:opacity .15s}.assemble-item:hover .assemble-tools{opacity:1}.assemble-tools button{background:var(--white);border:none;width:26px;height:26px;border-radius:999px;font-size:12px;color:var(--ink)}.assemble-tools button:hover{background:var(--accent);color:var(--paper)}.pool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:18px}.pool-item{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .18s ease}.pool-item img{width:100%;aspect-ratio:3 / 2;object-fit:cover;display:block}.pool-item.kept{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pool-item.rejected{opacity:.32}.pool-item.pickable{position:relative;cursor:pointer}.pool-item.pickable:hover{border-color:var(--accent)}.pool-item.pick{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.pool-pick-badge{position:absolute;top:8px;left:8px;z-index:2;min-width:22px;height:22px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--accent);color:var(--paper);font-size:12px;font-weight:600;box-shadow:var(--shadow)}.pick-bar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:10px 0 4px}.pick-bar span{font-size:13px;color:var(--ink-soft)}.ok-banner{margin:10px 0 4px;padding:10px 14px;border-radius:var(--radius);border:1px solid var(--go);background:color-mix(in srgb,var(--go) 12%,transparent);font-size:13.5px}.linklike{background:none;border:none;padding:0;color:var(--go);font:inherit;cursor:pointer;text-decoration:underline}.pool-kind{padding:10px 13px 2px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.pool-brief{padding:2px 13px 10px;font-family:var(--text);font-size:12.5px;color:var(--ink-soft);line-height:1.45;min-height:46px}.pool-tools{display:flex;gap:6px;padding:0 12px 12px}.pool-tools button{flex:1;border:1px solid var(--line);background:transparent;font-size:11px;padding:7px 4px;color:var(--ink);border-radius:var(--radius)}.pool-tools button:hover{border-color:var(--ink)}.pool-tools button.on{background:var(--accent);border-color:var(--accent);color:var(--paper)}.pool-tools button.kill{flex:0 0 34px;color:var(--ink-soft)}.proposal-list{display:flex;flex-direction:column;gap:22px}.proposal{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;cursor:pointer;transition:all .15s ease}.proposal.chosen{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.proposal-head{display:flex;justify-content:space-between;align-items:baseline}.proposal-head strong{font-family:var(--display);font-size:21px;font-weight:500}.proposal-count{font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.proposal-rationale{font-family:var(--text);font-size:14px;color:var(--ink-soft);margin:6px 0 16px}.proposal-spreads{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.proposal-spread{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;background:var(--paper)}.ps-template{font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:8px}.ps-title{font-family:var(--display);font-size:17px;line-height:1.2;white-space:pre-line;margin-bottom:10px}.ps-assets{display:flex;gap:6px;align-items:center;margin-bottom:10px}.ps-assets img{width:46px;height:34px;object-fit:cover;border:1px solid var(--line);border-radius:var(--radius)}.ps-sketch{width:46px;height:34px;display:inline-flex;align-items:center;justify-content:center;border:1px dashed var(--accent);border-radius:var(--radius);color:var(--accent);font-size:15px}.ps-body{font-family:var(--text);font-size:12px;color:var(--ink-soft);line-height:1.5}.setting-block{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin-bottom:18px}.setting-head{display:flex;justify-content:space-between;align-items:baseline}.setting-head label{font-family:var(--display);font-size:19px}.key-state{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.key-state.on{color:var(--accent)}.setting-help{font-family:var(--text);font-size:13.5px;color:var(--ink-soft);margin:6px 0 14px;max-width:64ch}.setting-row{display:flex;gap:10px;align-items:center}.setting-row input{flex:1;border:1px solid var(--line);background:transparent;padding:11px 13px;font-size:13px;font-family:var(--ui);border-radius:var(--radius);outline:none}.setting-row input:focus{border-color:var(--accent)}.settings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px 26px}.setting-inline{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.setting-inline label{flex:0 0 170px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.setting-inline input{flex:1;border:none;border-bottom:1px dashed transparent;background:transparent;font-family:var(--ui);font-size:13px;color:var(--ink);outline:none;padding:4px 0}.setting-inline input:hover,.setting-inline input:focus{border-bottom-color:var(--line)}.chapters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:22px}.chapter-card{position:relative;cursor:pointer;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:all .18s ease}.chapter-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.chapter-thumbs{display:flex;gap:2px;background:var(--paper-deep)}.chapter-thumbs img{flex:1;min-width:0;aspect-ratio:4 / 3;object-fit:cover;display:block}.chapter-thumbs-blank{width:100%;aspect-ratio:3 / 1;display:flex;align-items:center;justify-content:center;color:var(--ink-soft);font-size:12px;letter-spacing:.08em;background:var(--paper-deep)}.chapter-thumbs-blank.plus{font-size:36px;color:var(--accent)}.chapter-card-meta{display:flex;gap:14px;padding:14px 16px;align-items:baseline}.chapter-num{font-family:var(--display);font-size:22px;color:var(--accent)}.chapter-card-meta strong{font-family:var(--display);font-size:18px;font-weight:500;display:block}.chapter-card-meta em{display:block;font-family:var(--text);font-size:12.5px;color:var(--ink-soft);margin:2px 0}.chapter-card-meta span{font-size:10.5px;color:var(--ink-soft);letter-spacing:.06em}.chapter-card.new-form{padding:20px;cursor:default}.design-panel{display:grid;grid-template-columns:320px 1fr;gap:34px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px}.font-fields{display:flex;flex-direction:column;gap:18px}.font-field label{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.font-field input{width:100%;border:1px solid var(--line);background:transparent;padding:10px 12px;font-size:13.5px;font-family:var(--ui);border-radius:var(--radius);outline:none}.font-field input:focus{border-color:var(--accent)}.font-preview{border-left:1px solid var(--line);padding-left:34px}@media (max-width: 900px){.design-panel{grid-template-columns:1fr}.font-preview{border-left:none;padding-left:0}}.spread-card.dragging{opacity:.45;box-shadow:0 0 0 2px var(--accent)}.card-tools{position:absolute;top:8px;left:8px;display:flex;gap:5px;opacity:0;transition:opacity .15s}.spread-thumb:hover .card-tools{opacity:1}.card-tools button,.card-tools select{background:var(--white);border:1px solid var(--line);width:26px;height:26px;border-radius:999px;font-size:12px;color:var(--ink);cursor:pointer;padding:0;text-align:center}.card-tools select{width:34px;border-radius:13px;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center}.card-tools button:hover,.card-tools select:hover{border-color:var(--accent);color:var(--accent)}.card-tools button.kill:hover{border-color:var(--danger);color:var(--danger)}.chapter-order{display:flex;flex-direction:column;gap:2px}.chapter-order button{background:none;border:none;color:var(--ink-soft);font-size:13px;line-height:1;padding:1px 4px}.chapter-order button:hover{color:var(--accent)}.chapter-order button:disabled{opacity:.25}.flow-stepper{display:flex;align-items:center;gap:10px;margin:6px 0 26px;flex-wrap:wrap}.flow-step{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);padding:6px 12px;border:1px solid transparent;border-radius:999px;position:relative}.flow-step.now{color:var(--accent);border-color:var(--accent);background:var(--white)}.flow-step.done{color:var(--ink)}.flow-step.done:after{content:" ✓";color:var(--accent)}.flow-step+.flow-step{margin-left:2px}.flow-step:not(:first-child):before{content:"";position:absolute;left:-8px;top:50%;width:6px;height:1px;background:var(--line)}.snapline{position:absolute;z-index:60;pointer-events:none;background:#b5543a;opacity:.85}.snapline.v{width:1px}.snapline.h{height:1px}.txbar{position:absolute;top:-34px;left:0;z-index:80;display:flex;align-items:center;gap:2px;background:var(--white);border:1px solid var(--line);border-radius:999px;padding:3px 8px;box-shadow:0 2px 10px #28261e1f;font-family:var(--ui);font-size:12px;line-height:1;letter-spacing:0;text-transform:none;font-style:normal;font-weight:400;white-space:nowrap}.txbar button{background:none;border:none;cursor:pointer;color:var(--ink);font-size:12px;padding:4px 6px;border-radius:999px;line-height:1}.txbar button:hover{color:var(--accent);background:var(--paper-deep)}.txbar button.on{color:var(--accent)}.txbar .txsize{color:var(--ink-soft);font-size:11px;min-width:22px;text-align:center}.txbar i{width:1px;height:14px;background:var(--line);margin:0 4px}.intro{border-bottom:1px solid var(--line);padding-bottom:30px;margin-top:44px}.intro .headline{font-family:var(--display);font-size:27px;color:var(--ink);margin:8px 0 4px}.intro-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:20px 0 14px}.intro-step{font-family:var(--text);font-size:14px;color:var(--ink-soft);line-height:1.55}.intro-step b{display:block;font-family:var(--ui);font-size:12.5px;color:var(--ink);font-weight:500;margin:5px 0;letter-spacing:.01em}.intro-num{font-family:var(--display);font-size:24px;color:var(--accent)}@media (max-width: 640px){.intro-steps{grid-template-columns:1fr;gap:16px}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}button{-webkit-tap-highlight-color:transparent}img,svg,video,canvas{max-width:100%}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[contenteditable]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.shell{padding-left:clamp(16px,4vw,48px);padding-right:clamp(16px,4vw,48px)}h1.page-title{font-size:clamp(30px,6.4vw,44px)}.lede{font-size:clamp(15px,3.4vw,17px)}.login-card{width:min(400px,100%)}.topbar-actions{display:flex;gap:22px;align-items:baseline}.layer.selectable,.handle,.txbar{touch-action:none}@media (hover: none){.card-tools,.assemble-tools,.card-menu{opacity:1}.menu-dots{width:34px;height:34px;font-size:17px}.handle{width:16px;height:16px;right:-8px;bottom:-8px}.card-tools button,.card-tools select,.assemble-tools button{width:40px;height:40px}.txbar button{padding:8px 10px;font-size:14px}.txbar .txsize{font-size:13px}}.canvas-wrap{overflow-x:hidden}@media (max-width: 900px){.editor-layout{grid-template-columns:1fr}.inspector{position:static;top:auto}}@media (max-width: 760px){section{margin-top:40px}.topbar{flex-wrap:wrap;gap:8px 16px;padding:18px 0 14px}.topbar-actions{gap:14px;flex-wrap:wrap;row-gap:8px}.topbar .meta.provider{display:none}.styles-grid{grid-template-columns:repeat(2,1fr);gap:16px}.canvas-wrap{padding:12px}.cta-row{flex-direction:column;align-items:stretch;gap:14px;margin-top:32px;text-align:center}.cta-row>.btn-primary,.cta-row>.btn-ghost{width:100%;text-align:center}}@media (max-width: 560px){.books-grid,.spread-shelf,.chapters-grid,.pool-grid,.assemble-grid,.settings-grid,.proposal-spreads,.styles-grid{grid-template-columns:1fr}.login-page{padding:24px}.login-card{padding:32px 24px}.setting-inline{flex-direction:column;align-items:stretch;gap:5px}.setting-inline label{flex:none}.setting-inline input{border-bottom:1px solid var(--line);padding:8px 0}.setting-row{flex-wrap:wrap}.setting-row input{flex:1 1 100%}.linked-row{flex-direction:column;align-items:stretch}.variant,.proposal,.copy-panel,.setting-block{padding:18px 16px}.words,.copy-panel input,.copy-panel textarea,.setting-row input,.inspector .cell input,.inspector .cell select,.chapter-select,input,select,textarea{font-size:16px}}.rot-handle{position:absolute;left:50%;top:-20px;width:12px;height:12px;margin-left:-6px;background:var(--white);border:1px solid var(--accent);border-radius:999px;cursor:grab;z-index:6}.rot-handle:after{content:"";position:absolute;left:50%;top:12px;width:1px;height:8px;margin-left:-.5px;background:var(--accent)}.layer-del{position:absolute;right:-10px;top:-10px;width:20px;height:20px;padding:0;line-height:18px;text-align:center;border-radius:999px;z-index:7;background:var(--white);border:1px solid #b6604a;color:var(--danger);font-size:14px;cursor:pointer}.layer-del:hover{background:var(--danger);color:var(--white)}.canvas-tray{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:12px 14px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius)}.canvas-tray .tray-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-right:2px}.tray-item{position:relative;width:68px;height:50px;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper-deep);cursor:pointer;transition:border-color .15s,opacity .15s}.tray-item img{width:100%;height:100%;object-fit:cover;display:block}.tray-item:hover:not(:disabled){border-color:var(--accent)}.tray-item.placed{opacity:.5;cursor:default}.tray-item .tray-check{position:absolute;right:2px;bottom:1px;color:var(--white);background:var(--accent);font-size:10px;padding:0 4px;border-radius:var(--radius)}.tray-item .tray-sketch-tag{position:absolute;left:2px;top:2px;font-size:8px;letter-spacing:.1em;text-transform:uppercase;background:#5c6248d9;color:var(--white);padding:1px 4px;border-radius:var(--radius)}.tray-text{border:1px dashed var(--accent);background:transparent;color:var(--accent);border-radius:var(--radius);padding:8px 12px;font-size:12px;cursor:pointer}.tray-text:hover{background:var(--accent);color:var(--paper)}.canvas-hint{margin-top:12px;font-size:12px;color:var(--ink-soft);line-height:1.6}.canvas-inspector{margin-top:12px;background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}.canvas-inspector .ci-row{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap}.canvas-inspector .ci-row:last-child{margin-bottom:0}.canvas-inspector label{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft)}.canvas-inspector input[type=range]{flex:1;min-width:90px;accent-color:var(--accent)}.canvas-inspector input[type=number],.canvas-inspector select{border:1px solid var(--line);padding:5px 7px;font-size:12px;font-family:var(--ui);background:transparent;border-radius:var(--radius);outline:none}.canvas-inspector .ci-val{font-size:12px;color:var(--ink-soft);min-width:42px}.canvas-inspector .ci-italic{font-style:italic;padding:4px 10px}.canvas-inspector .on{border-color:var(--accent);color:var(--accent)}.canvas-inspector .ci-del{color:var(--danger)}.modal-veil{position:fixed;top:0;right:0;bottom:0;left:0;background:#2b292557;display:flex;align-items:center;justify-content:center;z-index:60;padding:24px}.modal{background:var(--white);border:1px solid var(--line);border-radius:3px;box-shadow:var(--shadow);padding:26px 28px;max-width:640px;width:100%;max-height:84vh;overflow:auto}.modal .proposal-list{margin-top:14px}.modal .ps-assets{display:flex;gap:6px;margin-top:8px}.modal .ps-assets img{width:54px;height:40px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--line)}.bookreview{display:grid;grid-template-columns:96px 1fr;gap:22px;margin-top:18px;align-items:start}.br-strip{position:sticky;top:16px;display:flex;flex-direction:column;gap:10px;max-height:calc(100vh - 40px);overflow-y:auto;padding:2px}.br-thumb{position:relative;padding:0;border:1px solid var(--line);background:var(--paper-deep);border-radius:var(--radius);cursor:pointer;aspect-ratio:4 / 3;overflow:hidden}.br-thumb img{width:100%;height:100%;object-fit:cover;display:block}.br-thumb .br-empty{display:flex;align-items:center;justify-content:center;height:100%;color:var(--ink-soft);font-size:20px}.br-thumb .br-num{position:absolute;left:4px;bottom:3px;font-size:10px;font-family:var(--ui);color:var(--paper);background:#2b292599;padding:1px 5px;border-radius:999px}.br-thumb.now{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.br-thumb.done:after{content:"✓";position:absolute;right:4px;top:3px;font-size:11px;color:var(--paper);background:var(--accent);width:16px;height:16px;border-radius:999px;display:flex;align-items:center;justify-content:center}.br-main{min-width:0}.br-head{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:8px}.br-head h2{font-family:var(--display);font-weight:500;font-size:26px}.br-nav{display:flex;gap:8px;flex-shrink:0}@media (max-width: 760px){.bookreview{grid-template-columns:1fr}.br-strip{position:static;flex-direction:row;max-height:none;overflow-x:auto;overflow-y:hidden}.br-thumb{flex:0 0 84px}}.btn-primary.btn-go{background:var(--go)}.btn-primary.btn-go:hover{background:var(--ink)}.btn-danger{color:var(--danger)}.btn-ghost.btn-danger:hover{border-color:var(--danger);color:var(--danger)}.rec-badge.is-chosen{background:var(--accent);color:var(--paper);border-color:var(--accent)}.phase-header{margin-top:28px;margin-bottom:6px}.phase-crumbs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:0}.phase-crumbs .crumb-link{cursor:pointer}.phase-crumbs .crumb-link:hover{color:var(--accent)}.phase-crumbs .sep{opacity:.45}.phase-header .ph-title{margin-top:10px}.phase-rail{display:flex;align-items:stretch;margin-top:16px;border:1px solid var(--line);border-radius:3px;overflow:hidden;background:var(--white)}.phase-node{flex:1;display:flex;align-items:center;justify-content:center;gap:9px;padding:11px 8px;background:transparent;border:none;border-right:1px solid var(--line);cursor:pointer;font-family:var(--ui);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);transition:background .16s,color .16s}.phase-node:last-child{border-right:none}.phase-node:hover{background:var(--paper-deep);color:var(--ink)}.phase-node .pn-dot{width:20px;height:20px;border-radius:999px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:11px;letter-spacing:0;color:var(--ink-soft);background:var(--paper);flex-shrink:0}.phase-node.now{color:var(--ink);background:var(--paper-deep);box-shadow:inset 0 -2px 0 var(--accent)}.phase-node.now .pn-dot{border-color:var(--accent);color:var(--accent)}.phase-node.done .pn-dot{background:var(--accent);color:var(--paper);border-color:var(--accent)}.phase-node.next .pn-dot{border-color:var(--accent);animation:breath 2.4s ease-in-out infinite}.phase-node.dim{opacity:.5}.ph-actions{display:flex;align-items:center;gap:10px;margin-top:16px;flex-wrap:wrap}.ph-actions .spacer{flex:1}@media (max-width: 640px){.phase-node .pn-label{display:none}.phase-node{padding:12px 6px}}.book-title-input{font-family:var(--display);font-size:clamp(30px,6.4vw,44px);line-height:1.08;margin-top:10px;border-bottom-color:transparent}.book-title-input:hover,.book-title-input:focus{border-bottom-color:var(--line)}.book-subtitle-input{font-family:var(--text);font-size:16px;color:var(--ink-soft);margin-top:4px;border-bottom-color:transparent}.book-subtitle-input:hover,.book-subtitle-input:focus{border-bottom-color:var(--line)}.next-action{display:flex;align-items:center;gap:24px;justify-content:space-between;flex-wrap:wrap;background:var(--white);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:3px;padding:22px 28px}.next-action .na-head{font-family:var(--display);font-weight:500;font-size:26px;line-height:1.12;margin-top:4px}.next-action .na-sub{font-family:var(--text);color:var(--ink-soft);max-width:52ch;margin-top:6px}.next-action .na-actions{display:flex;flex-direction:column;align-items:flex-start;gap:8px;flex-shrink:0}.chapter-progress{display:block}.book-settings{margin-top:40px;border-top:1px solid var(--line)}.book-settings>summary{cursor:pointer;font-family:var(--ui);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);padding:14px 0;list-style:none}.book-settings>summary::-webkit-details-marker{display:none}.book-settings>summary:before{content:"▸  "}.book-settings[open]>summary:before{content:"▾  "}@media (max-width: 640px){.next-action{flex-direction:column;align-items:flex-start}.next-action .na-actions{flex-direction:row;width:100%}}.publish-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.publish-card{display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--white);border:1px solid var(--line);border-radius:3px;padding:20px 22px}.publish-card .pc-body strong{font-family:var(--display);font-size:19px;display:block}.publish-card .pc-body span{font-family:var(--text);font-size:13px;color:var(--ink-soft);display:block;margin-top:4px;max-width:34ch}.publish-card.is-disabled{opacity:.55}.admin-list{display:flex;flex-direction:column;gap:10px}.admin-row{background:var(--white);border:1px solid var(--line);border-radius:3px;padding:14px 16px;display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px}.admin-main{display:flex;align-items:center;gap:12px;flex:1;min-width:220px;flex-wrap:wrap}.admin-main strong{font-family:var(--text);font-weight:600;font-size:15px}.admin-meta{font-size:12px;color:var(--ink-soft);font-family:var(--text)}.admin-actions{display:flex;gap:8px;align-items:center}.admin-reset{flex-basis:100%;display:flex;gap:10px;align-items:center;margin-top:6px}.admin-reset .words{flex:1;max-width:340px}.admin-form{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.admin-form .words{flex:1;min-width:200px}.role-badge{font-size:10px;letter-spacing:.14em;text-transform:uppercase;padding:3px 9px;border-radius:999px;border:1px solid var(--line);color:var(--ink-soft)}.role-badge.admin,.role-badge.state-active{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.role-badge.state-used{color:var(--ink-soft)}.role-badge.state-expired{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--line))}.quality-choice{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.quality-card{text-align:left;background:var(--white);border:1px solid var(--line);border-radius:3px;padding:22px 24px;cursor:pointer;transition:all .15s ease;display:flex;flex-direction:column;gap:8px}.quality-card:hover{border-color:var(--accent)}.quality-card strong{font-family:var(--display);font-size:22px;font-weight:500}.quality-card span{font-family:var(--text);font-size:14px;color:var(--ink-soft);line-height:1.5}.quality-card.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}.quality-card.on strong{color:var(--accent)}@media (max-width: 560px){.quality-choice{grid-template-columns:1fr}}.impersonate-bar{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--accent);color:var(--white);padding:10px 18px;font-size:13px;letter-spacing:.02em;border-radius:2px;margin-bottom:8px}.impersonate-bar strong{font-family:var(--text)}.impersonate-bar button{background:var(--white);color:var(--accent);border:none;border-radius:999px;padding:6px 16px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;cursor:pointer}.usage-table{width:100%;border-collapse:collapse;font-family:var(--text)}.usage-table th{text-align:left;font-family:var(--ui);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);padding:8px 12px;border-bottom:1px solid var(--line)}.usage-table td{padding:11px 12px;border-bottom:1px solid var(--line);font-size:14px}.usage-table td.num{text-align:right;font-variant-numeric:tabular-nums}.usage-table tr.total td{font-weight:600;border-top:2px solid var(--line);border-bottom:none}.usage-table .open-as{font-size:11px;letter-spacing:.08em;color:var(--accent);background:none;border:none;cursor:pointer}
