@font-face{font-family:'Moxi Pixel';src:url('./fonts/fusion-pixel-12px-proportional-zh_hans.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Moxi Smiley';src:url('./fonts/SmileySans-Oblique.woff2') format('woff2');font-display:swap}
@font-face{font-family:'Moxi WenKai';src:url('./fonts/LXGWWenKai-Regular.ttf') format('truetype');font-display:swap}
.manuscript-tools-orb{position:fixed;z-index:24;width:36px;height:36px;padding:9px;border:1px solid #b7d5dc55;border-radius:10px;background:#102631d9;color:#d8eeeb;box-shadow:0 4px 18px #0003;cursor:grab;touch-action:none;user-select:none;backdrop-filter:blur(8px)}.manuscript-tools-orb:hover{background:#284957}.manuscript-tools-orb:active{cursor:grabbing}.manuscript-tools-orb[hidden]{display:none}.six-dot-grip{display:grid;grid-template-columns:repeat(2,3px);grid-template-rows:repeat(3,3px);justify-content:center;gap:3px}.six-dot-grip i{border-radius:50%;background:currentColor;width:3px;height:3px}
.environment-active .manuscript-panel.tools-collapsed{pointer-events:none}
/* Reading modes wrap the manuscript; controls can be nested below that wrapper. */
.environment-active .manuscript-panel.tools-collapsed :is(.editor-toolbar,.manuscript-style-tools,.environment-resize,.glass-move-handle,.studio-reading-toolbar,.editor-footer){display:none}
.environment-active:has(.manuscript-panel.tools-collapsed) :is(.workbench-top,.studio-progress,.chapters-panel,.manager-orb,.manager-panel){display:none}
.tools-collapsed .manuscript-paper{pointer-events:auto}
.manuscript-pick-tools{display:flex;align-items:center;gap:12px}.manuscript-pick-tools [role=status]{font-size:12px;line-height:1.6;color:var(--muted)}.manuscript-pick-tools .button{flex-shrink:0}
.manuscript-picking #preview-root{visibility:hidden;pointer-events:none}.manuscript-pick-overlay{position:fixed;inset:0;z-index:10000;cursor:crosshair;outline:0}.manuscript-pick-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);padding:12px 18px;max-width:calc(100vw - 24px);width:max-content;border-radius:10px;background:#102631ed;color:#e4f1f1;font-size:13px;cursor:default;box-shadow:0 4px 24px #0004}.manuscript-pick-hint button{margin-left:10px;background:#274451;color:#fff;border:1px solid #6d9caa;border-radius:6px;padding:5px 9px}
.environment-active .manuscript-panel{background:transparent;border:0;box-shadow:none;backdrop-filter:none;overflow:visible;border-radius:0}
.environment-active .manuscript-panel>.editor-toolbar{background:#112631e8;border:1px solid #c2d7e22b;border-radius:10px 10px 0 0;min-height:42px;padding:3px 12px;position:relative;z-index:6}
.manuscript-style-tools{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#112631e8;border:1px solid #c2d7e22b;border-top:0;border-radius:0 0 10px 10px;position:relative;z-index:6}
.manuscript-style-tools>label{display:flex;align-items:center;gap:8px;font-size:11px;flex:1;min-width:0;white-space:nowrap}.manuscript-style-tools input{min-width:40px;width:100%;height:20px;padding:0;accent-color:var(--accent)}.manuscript-style-tools output{min-width:35px;font-variant-numeric:tabular-nums;color:var(--muted)}
.environment-active .manuscript-style-tools .button{font-size:11px;padding:5px 9px;white-space:nowrap}
.manuscript-warp-frame{position:absolute;top:calc(90px + 9%);left:4%;width:92%;bottom:10%;isolation:isolate}
.manuscript-projection{position:absolute;inset:0;transform-origin:0 0;min-height:0}
.manuscript-paper{position:absolute;inset:0;display:flex;flex-direction:column;min-height:0;border-radius:14px;isolation:isolate}
.manuscript-paper::before{content:'';position:absolute;inset:0;z-index:-1;background:#0c1f2b;opacity:var(--manuscript-opacity,.75);border:1px solid #b3d5e340;border-radius:inherit;box-shadow:0 16px 48px #020b1250;backdrop-filter:blur(var(--manuscript-blur,14px))}
.manuscript-paper .manuscript-scroll{border-radius:14px 14px 0 0;overscroll-behavior:contain}.manuscript-paper .editor-footer{opacity:var(--manuscript-opacity,.75);pointer-events:none}
.environment-active .manuscript-paper .manuscript{font-family:var(--manuscript-font);color:var(--manuscript-color);padding:25px clamp(18px,2.4vw,40px) 32px}
.environment-active .manuscript-paper .manuscript>p:not(.chapter-kicker){font-family:var(--manuscript-font);font-size:var(--manuscript-size);color:var(--manuscript-color);line-height:2}
.environment-active .manuscript-paper .manuscript h1{font-family:var(--manuscript-font);font-size:calc(var(--manuscript-size)*1.35);color:var(--manuscript-color)}
.environment-active .manuscript-paper .chapter-kicker,.environment-active .manuscript-paper .manuscript-meta,.environment-active .manuscript-paper .chapter-end{color:var(--manuscript-color)}
[data-text-effect=glow] .manuscript>p:not(.chapter-kicker),[data-text-effect=glow] .manuscript h1,.effect-glow{text-shadow:0 0 7px color-mix(in srgb,var(--manuscript-color,#8cf5ec) 65%,transparent),0 0 20px color-mix(in srgb,var(--manuscript-color,#8cf5ec) 25%,transparent)}
[data-text-effect=metal] .manuscript>p:not(.chapter-kicker),[data-text-effect=metal] .manuscript h1,.effect-metal{background:repeating-linear-gradient(180deg,var(--manuscript-color,#d4e5f2) 0px,#fff 9px,var(--manuscript-color,#d4e5f2) 14px,#71879c 18px,var(--manuscript-color,#d4e5f2) 24px);background-clip:text;-webkit-text-fill-color:transparent}
[data-text-effect=paint] .manuscript>p:not(.chapter-kicker),[data-text-effect=paint] .manuscript h1,.effect-paint{background-image:repeating-linear-gradient(12deg,#fff4 0 1px,transparent 1px 3px),linear-gradient(115deg,var(--manuscript-color,#f5c47a),#e889a4 38%,#a3dbd1 65%,var(--manuscript-color,#f5c47a));background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(1px 1px 0 #4e334755)}
.manuscript-filter-defs{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.manuscript-warp-guide{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:4;pointer-events:none;display:none}.manuscript-warp-guide path{fill:none;stroke:#85e6e4;stroke-width:1.5;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.shape-editing .manuscript-warp-guide{display:block}.shape-editing{outline:1px dashed #88cbc85e;outline-offset:7px}.shape-editing .manuscript-paper{pointer-events:none}
.manuscript-warp-point{position:absolute;z-index:8;width:22px;height:22px;border:2px solid #133740;border-radius:4px;background:#a4eeeb;box-shadow:0 0 0 1px #bafff6;color:#133740;transform:translate(-50%,-50%);padding:0;cursor:crosshair;touch-action:none;user-select:none}.manuscript-warp-point[hidden]{display:none}.manuscript-warp-point.point-curve{border-radius:50%;cursor:ns-resize}
.manuscript-warp-hint{display:none;position:absolute;bottom:-26px;left:0;right:0;text-align:center;font-size:11px;color:#bff4ef;pointer-events:none}.shape-editing .manuscript-warp-hint{display:block}
.manuscript-style-settings{display:grid;gap:20px}.manuscript-style-gallery{display:grid;grid-template-columns:1fr 1fr;gap:12px}.manuscript-style-card{display:flex;flex-direction:column;text-align:left;border:1px solid var(--line);background:#0b1c29;border-radius:10px;padding:16px;gap:7px;color:var(--text)}.manuscript-style-card:hover,.manuscript-style-card[aria-pressed=true]{border-color:#a3d9d8}.manuscript-style-card strong{font-size:14px}.manuscript-style-card small{color:var(--muted);font-size:11px}.font-sample{font-size:24px;line-height:1.65;margin-bottom:10px;color:#d4e5f2}.font-pixel{font-family:'Moxi Pixel',monospace;color:#8cf5ec}.font-smiley{font-family:'Moxi Smiley',sans-serif}.font-wenkai{font-family:'Moxi WenKai',serif;color:#f1dec3}.manuscript-style-select,.manuscript-style-colors label{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px}.manuscript-style-settings select{max-width:65%;font-size:13px}.manuscript-style-colors{display:grid;grid-template-columns:1fr 1.3fr;gap:15px}.manuscript-style-colors input[type=color]{width:46px;height:32px;padding:3px}.manuscript-shape-details{border-block:1px solid var(--line);padding:15px 0}.manuscript-shape-details summary{cursor:pointer;color:var(--accent);margin-bottom:12px}.manuscript-shape-details .environment-range{display:block;margin:18px 0}
@media(max-width:700px){.manuscript-style-tools{gap:5px;padding:6px}.manuscript-style-tools>label{gap:4px;font-size:10px}.environment-active .manuscript-style-tools .button{font-size:10px;padding:5px}.manuscript-style-tools output{min-width:28px}.manuscript-style-colors{grid-template-columns:1fr}.font-sample{font-size:18px}.manuscript-style-card{padding:12px}.manuscript-warp-frame{top:calc(85px + 9%);bottom:10%}.manuscript-warp-point{width:26px;height:26px}}
/* V20: the saved rectangle is the glass itself, not an invisible padded shell. */
.environment-active .workbench-view{position:relative}
.environment-active .workbench-layout{position:absolute;inset:0;width:100vw;height:100dvh;overflow:visible;pointer-events:none;z-index:1}
.environment-active .manuscript-panel{pointer-events:auto}
.environment-active .workbench-layout > :is(.chapters-panel,.manager-panel){pointer-events:auto}
.environment-active .manuscript-warp-frame{inset:0;width:100%;height:100%}
.environment-active .manuscript-panel>.editor-toolbar,.environment-active .manuscript-style-tools{position:fixed;z-index:32;box-sizing:border-box}
.environment-active .manuscript-style-tools{flex-wrap:wrap;gap:6px}
.environment-active .manuscript-style-tools .button{min-height:28px;height:28px}
.environment-active .editor-toolbar .environment-drag-handle{height:32px;padding-block:0}
.manuscript-zoom-tools{display:flex;align-items:center;gap:9px;flex-basis:100%;border-top:1px solid #b7d5dc22;padding-top:6px;color:var(--muted);font-size:11px}
.manuscript-zoom-tools button{width:27px;height:25px;border:1px solid #aaccd744;border-radius:5px;background:#294451;color:#fff;padding:0}
.manuscript-zoom-tools output{min-width:40px;text-align:center;font-variant-numeric:tabular-nums}.manuscript-zoom-tools small{margin-left:auto;font-size:10px}
.environment-active .manuscript-paper .manuscript{zoom:var(--manuscript-zoom,1)}
.environment-active .environment-resize{width:24px;height:24px;opacity:1;background:#1a293633;border:0;border-radius:2px;z-index:15;right:auto;bottom:auto}
.environment-active .environment-resize:hover,.environment-active .environment-resize:focus-visible{background:#e7c99244;box-shadow:0 0 0 3px #e7c99233}
.environment-active .resize-nw{left:var(--glass-left);top:var(--glass-top);border-left:3px solid #f8d88e;border-top:3px solid #f8d88e}
.environment-active .resize-ne{left:calc(var(--glass-left) + var(--glass-width) - 24px);top:var(--glass-top);border-right:3px solid #f8d88e;border-top:3px solid #f8d88e}
.environment-active .resize-sw{left:var(--glass-left);top:calc(var(--glass-top) + var(--glass-height) - 24px);border-left:3px solid #f8d88e;border-bottom:3px solid #f8d88e}
.environment-active .resize-se{left:calc(var(--glass-left) + var(--glass-width) - 24px);top:calc(var(--glass-top) + var(--glass-height) - 24px);border-right:3px solid #f8d88e;border-bottom:3px solid #f8d88e}
.glass-move-handle{position:absolute;left:calc(var(--glass-left) + var(--glass-width) / 2 - 36px);top:calc(var(--glass-top) + 7px);width:72px;height:27px;z-index:15;background:#17343bd9;color:#d7ece8;border:1px solid #c4dddd55;border-radius:16px;font-size:11px;cursor:grab;touch-action:none;user-select:none}
.environment-active .shape-editing :is(.glass-move-handle,.environment-resize){display:none}
.environment-active .shape-editing{outline:0}.manuscript-warp-point:not(.point-curve){border-radius:50%}
@media(max-width:700px){.manuscript-zoom-tools{gap:6px}.manuscript-zoom-tools small{font-size:9px}.environment-active .manuscript-style-tools input{min-width:24px}}
/* Text blends against the scene and a separate glass layer, never the toolbar. */
.environment-active .workbench-layout{z-index:auto}
.environment-active .manuscript-warp-frame{z-index:3}
.environment-active .manuscript-paper::before{display:none}
.manuscript-glass{position:absolute;inset:0;pointer-events:none;z-index:2;transform-origin:0 0;border-radius:14px;background:#0c1f2b;opacity:var(--manuscript-opacity,.75);border:1px solid #b3d5e340;box-shadow:0 16px 48px #020b1230;backdrop-filter:blur(var(--manuscript-blur,14px))}
.manuscript-pinning #preview-root{visibility:hidden;pointer-events:none}
.manuscript-pinning .writing-environment-scene,.manuscript-picking .writing-environment-scene{visibility:visible}
.manuscript-pinning .manuscript-pin-status,.manuscript-pinning .manuscript-pin-marker,.manuscript-picking .manuscript-pin-status,.manuscript-picking .manuscript-pin-marker{visibility:hidden}
.manuscript-pin-status{position:fixed;bottom:16px;left:16px;z-index:45;display:flex;align-items:center;flex-wrap:wrap;gap:9px;max-width:calc(100vw - 32px);padding:10px 12px;background:#122d3aed;border:1px solid #a5dad36b;border-radius:10px;color:#deeee9;font-size:12px}
.manuscript-pin-status[hidden],.manuscript-pin-marker[hidden]{display:none}
.manuscript-pin-status button,.manuscript-pin-hint button{background:#2a4752;border:1px solid #b8d6da55;color:#fff;border-radius:6px;padding:5px 8px;cursor:pointer}
.manuscript-pin-marker{position:fixed;z-index:40;width:14px;height:14px;border:2px solid #f8d88e;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 0 0 2px #1239}
.manuscript-pin-select{position:fixed;inset:0;z-index:10000;cursor:crosshair;touch-action:none;outline:0}
.manuscript-pin-box{position:absolute;display:none;border:2px solid #f8d88e;background:#f8d88e22;pointer-events:none}
.manuscript-pin-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 24px);width:max-content;padding:12px 16px;background:#102631ed;color:#e4f1f1;border-radius:10px;font-size:13px;cursor:default}.manuscript-pin-hint button{margin-left:12px}
.preview-dialog.manuscript-palette{position:fixed;inset:auto;margin:0;width:340px;max-width:calc(100vw - 32px);max-height:min(580px,calc(100dvh - 100px));padding:0;overflow:hidden;z-index:60;box-shadow:0 12px 40px #0005}
.preview-dialog.manuscript-palette[open]{display:flex;flex-direction:column}
.manuscript-palette::backdrop{background:transparent;backdrop-filter:none}
.manuscript-palette .dialog-header{padding:10px 12px;gap:8px;align-items:center;flex-shrink:0}
.manuscript-palette [data-style-palette-drag]{display:grid;gap:3px;flex:1;text-align:left;min-width:0;border:0;background:transparent;color:var(--text);padding:3px 0;cursor:grab;touch-action:none;user-select:none}
.manuscript-palette [data-style-palette-drag]:active{cursor:grabbing}.manuscript-palette [data-style-palette-drag] strong{font-size:15px}.manuscript-palette [data-style-palette-drag] small{font-size:10px;color:var(--muted)}
.manuscript-palette .dialog-body{padding:0 14px 16px;min-height:0;overflow:auto;overscroll-behavior:contain}
.manuscript-palette .manuscript-style-settings{gap:16px}.manuscript-live-controls{display:grid;gap:12px;position:sticky;top:0;z-index:2;padding:14px 0 12px;background:#132633;border-bottom:1px solid var(--line)}
.manuscript-live-controls .environment-tip{font-size:11px}.manuscript-palette .environment-range{font-size:12px}.manuscript-palette .manuscript-style-colors{grid-template-columns:1fr;gap:12px}
.manuscript-preset-details summary{cursor:pointer;font-size:12px;color:var(--muted)}.manuscript-preset-details[open] summary{margin-bottom:12px}
.manuscript-palette .manuscript-style-card{padding:10px}.manuscript-palette .font-sample{font-size:18px}
@media(max-width:700px){.preview-dialog.manuscript-palette{max-height:44dvh}.manuscript-palette .manuscript-live-controls .environment-tip{display:none}}
/* Keep native wheel, touch and keyboard scrolling without a visible rail. */
.manuscript-scroll,.manuscript-palette .dialog-body{scrollbar-width:none}
.manuscript-scroll::-webkit-scrollbar,.manuscript-palette .dialog-body::-webkit-scrollbar{display:none;width:0;height:0}
