:root{--bg:#1a1d23;--panel:#23272f;--panel-2:#2c313a;--border:#3a414d;--text:#e6e9ef;--text-dim:#8a93a6;--accent:#f5a623;--accent-2:#4ea1ff;--danger:#ff5757}*{box-sizing:border-box}html,body{height:100%;color:var(--text);background:var(--bg);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow:hidden}body{grid-template-rows:44px 1fr;display:grid}header{background:var(--panel);border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:0 140px 0 420px;display:flex}header .title{color:var(--accent);letter-spacing:.5px;margin-right:16px;font-size:14px;font-weight:600}header .version-tag{color:var(--text-dim);letter-spacing:.3px;border:1px solid var(--border);border-radius:3px;margin-left:6px;padding:2px 6px;font-size:11px;font-weight:400}header button,header label.btn{background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:5px;padding:5px 10px;font-size:12px}header button:hover,header label.btn:hover{background:#353c47}header button:disabled{opacity:.45;cursor:not-allowed}header .spacer{flex:1}header input[type=file]{display:none}main{grid-template-columns:280px 1fr 280px;height:calc(100vh - 44px);min-height:0;display:grid;overflow:hidden}aside{background:var(--panel);border-right:1px solid var(--border);overscroll-behavior:contain;-webkit-overflow-scrolling:touch;min-height:0;max-height:100%;padding:12px;overflow-y:auto}aside.right{border-right:none;border-left:1px solid var(--border)}aside h3{text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin:0 0 8px;font-size:11px}aside .section+.section{margin-top:18px}textarea.script-input{resize:vertical;background:var(--bg);width:100%;min-height:140px;color:var(--text);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:ui-monospace,Menlo,monospace;font-size:11px}button.parse-btn{background:var(--accent);color:#1a1d23;cursor:pointer;border:0;border-radius:4px;width:100%;margin-top:6px;padding:6px;font-weight:600}.chip-list{flex-direction:column;gap:4px;max-height:260px;display:flex;overflow-y:auto}.chip{background:var(--panel-2);border:1px solid var(--border);cursor:grab;border-radius:4px;padding:6px 8px;font-size:12px}.chip:active{cursor:grabbing}.chip .who{color:var(--accent-2);text-transform:uppercase;letter-spacing:.5px;font-size:10px;font-weight:600}.chip .mod{color:var(--accent);font-size:10px}.chip .what{color:var(--text);margin-top:2px;line-height:1.3}.chip.placed{opacity:.45}#canvas-wrap{background-color:#0d0f13;background-image:linear-gradient(45deg,#14171c 25%,#0000 25%),linear-gradient(-45deg,#14171c 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#14171c 75%),linear-gradient(-45deg,#0000 75%,#14171c 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-repeat:repeat;background-size:20px 20px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;position:relative;overflow:auto}#canvas-stage{margin:24px auto;display:inline-block;position:relative;box-shadow:0 8px 30px #00000080}#page-img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;max-width:none;display:block}#overlay{pointer-events:auto;width:100%;height:100%;position:absolute;top:0;left:0}#placeholder{color:var(--text-dim);text-align:center;max-width:600px;margin:80px auto;padding:80px 20px;font-size:14px;line-height:1.6}#placeholder kbd{background:var(--panel-2);border:1px solid var(--border);border-radius:3px;padding:2px 6px;font-size:11px}.field{margin-bottom:10px}.field label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:10px;display:block}.field input[type=text],.field input[type=number],.field select{background:var(--bg);width:100%;color:var(--text);border:1px solid var(--border);border-radius:4px;padding:5px 7px;font-size:12px}.field input[type=color]{background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:4px;width:100%;height:28px;padding:0}.row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.field-row{align-items:center;gap:8px;display:flex}button.danger{background:var(--danger);color:#1a1d23;cursor:pointer;border:0;border-radius:4px;width:100%;padding:6px;font-weight:600}button.style-preset{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:4px;padding:6px;font-size:11px}button.style-preset:hover{background:#353c47}button.style-preset.active{border-color:var(--accent);color:var(--accent)}.empty-inspector{color:var(--text-dim);text-align:center;padding:20px 0;font-size:12px}#inspector{padding-bottom:16px}.balloon-body{stroke-linejoin:round;cursor:move}.balloon-body.selected{filter:drop-shadow(0 0 0 var(--accent))}.selection-box{fill:none;stroke:#f5a623;stroke-width:1px;stroke-dasharray:4 3;pointer-events:none}.handle{fill:#f5a623;stroke:#1a1d23;stroke-width:1px;cursor:nwse-resize}.tail-handle{fill:#4ea1ff;stroke:#1a1d23;stroke-width:1px;cursor:move}.conn-handle{stroke:#1a1d23;stroke-width:1px;cursor:move}.conn-handle.conn-width{fill:#f5a623;cursor:ew-resize}.conn-handle.conn-curve{fill:#b388ff}.conn-handle.conn-attach{fill:#4ea1ff}.balloon-text{-webkit-user-select:text;user-select:text;text-align:center;outline:none;line-height:1.1}.balloon-text:focus{outline:1px dashed var(--accent)}#drop-hint{border:3px dashed var(--accent-2);color:var(--accent-2);pointer-events:none;background:#4aa1ff1a;justify-content:center;align-items:center;font-size:18px;font-weight:600;display:none;position:absolute;inset:0}#drop-hint.show{display:flex}.toast{background:var(--panel-2);border:1px solid var(--border);opacity:0;pointer-events:none;z-index:200;border-radius:6px;padding:8px 14px;font-size:12px;transition:opacity .2s;position:fixed;bottom:16px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}#mobile-tabbar{z-index:100;padding:6px 6px calc(6px + env(safe-area-inset-bottom));-webkit-backdrop-filter:saturate(180%)blur(28px);backdrop-filter:saturate(180%)blur(28px);background:#1c2026d1;border-top:.5px solid #ffffff14;flex-direction:row;gap:2px;display:none;position:fixed;bottom:0;left:0;right:0}#mobile-tabbar button{color:var(--text-dim);cursor:pointer;-webkit-tap-highlight-color:transparent;letter-spacing:.2px;background:0 0;border:0;border-radius:10px;flex-direction:column;flex:1;align-items:center;gap:3px;min-height:50px;padding:6px 0 4px;font-family:inherit;font-size:10px;transition:color .15s;display:flex}#mobile-tabbar button .tab-icon{font-size:22px;font-weight:400;line-height:1}#mobile-tabbar button.active{color:var(--accent)}#mobile-tabbar button:active{background:#ffffff0f}body.mobile-mode{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;grid-template-rows:calc(46px + env(safe-area-inset-top)) 1fr}body.mobile-mode #mobile-tabbar{display:flex}body.mobile-mode header{padding:calc(env(safe-area-inset-top) + 52px) 110px 0 8px;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch;gap:4px;overflow-x:auto}body.mobile-mode header::-webkit-scrollbar{display:none}body.mobile-mode header .title{flex-shrink:0;font-size:10px}body.mobile-mode header button,body.mobile-mode header label.btn{border-radius:8px;flex-shrink:0;min-height:36px;padding:7px 10px;font-size:11px}body.mobile-mode header .spacer{display:none}body.mobile-mode header #zoom-label{flex-shrink:0;min-width:32px;font-size:10px}body.mobile-mode main{height:calc(100vh - (46px + env(safe-area-inset-top)));grid-template-columns:1fr}body.mobile-mode aside.left,body.mobile-mode aside.right{-webkit-backdrop-filter:saturate(180%)blur(28px);backdrop-filter:saturate(180%)blur(28px);z-index:95;-webkit-overflow-scrolling:touch;height:78vh;padding:0 14px calc(76px + env(safe-area-inset-bottom));background:#23272ff0;border:0;border-radius:18px 18px 0 0;transition:transform .32s cubic-bezier(.32,.72,0,1);position:fixed;inset:auto 0 0;overflow-y:auto;transform:translateY(100%);box-shadow:0 -10px 40px #00000073}body.mobile-mode aside.left.sheet-open,body.mobile-mode aside.right.sheet-open{transform:translateY(0)}body.mobile-mode aside.left:before,body.mobile-mode aside.right:before{content:"";background:#ffffff38;border-radius:3px;width:38px;height:5px;margin:9px auto 14px;display:block}#sheet-backdrop{z-index:92;-webkit-backdrop-filter:blur(2px);background:#00000059;display:none;position:fixed;inset:0}body.mobile-mode #sheet-backdrop.show{display:block}body.mobile-mode #canvas-wrap{padding-bottom:calc(70px + env(safe-area-inset-bottom))}body.mobile-mode aside .field input[type=text],body.mobile-mode aside .field input[type=number],body.mobile-mode aside .field select,body.mobile-mode aside textarea.script-input{border-radius:8px;min-height:38px;padding:9px 10px;font-size:14px}body.mobile-mode aside .field input[type=color]{border-radius:8px;height:38px}body.mobile-mode aside button{border-radius:8px;min-height:40px;font-size:13px}body.mobile-mode aside .chip{padding:10px 12px;font-size:13px}body.mobile-mode aside .chip .what{font-size:13px}#btn-mobile-toggle.active{font-weight:700;background:var(--accent)!important;color:#1a1d23!important;border-color:var(--accent)!important}body.mobile-mode #drop-hint{text-align:center;padding:0 20px;font-size:14px}body.mobile-mode #canvas-stage{margin:12px auto}body.mobile-mode #placeholder{padding:30px 16px;font-size:13px}.reading-trail{fill:none;stroke:#f5a6238c;stroke-width:2px;stroke-dasharray:8 6;pointer-events:none}.reading-badge{fill:#f5a623;stroke:#1a1d23;stroke-width:1.5px;pointer-events:none}.reading-badge-text{fill:#1a1d23;text-anchor:middle;dominant-baseline:central;-webkit-user-select:none;user-select:none;pointer-events:none;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:13px;font-weight:700}.tail-cross-warning{fill:none;stroke:#ff5757;stroke-width:4px;stroke-dasharray:5 4;opacity:.85;pointer-events:none}#btn-reading-order.active{font-weight:700;background:var(--accent)!important;color:#1a1d23!important;border-color:var(--accent)!important}#workspace{min-width:0;min-height:0;display:flex;position:relative}#canvas-wrap{flex:auto;min-width:0;min-height:0}#script-viewer{border-right:1px solid var(--border);flex-direction:column;flex:50%;min-width:0;min-height:0;display:none}body.side-by-side #script-viewer{display:flex}#canvas-divider{background:var(--border);cursor:col-resize;flex:0 0 5px;transition:background .15s;display:none}#canvas-divider:hover{background:var(--accent)}body.side-by-side #canvas-divider{display:block}#script-viewer-toolbar{background:var(--panel);border-bottom:1px solid var(--border);flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;display:flex}#script-viewer-toolbar button{background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:4px;min-width:28px;padding:5px 9px;font-size:12px}#script-viewer-toolbar button:hover:not(:disabled){background:#353c47}#script-viewer-toolbar button:disabled{opacity:.35;cursor:default}#script-viewer-scroll{background-color:#0d0f13;background-image:linear-gradient(45deg,#14171c 25%,#0000 25%),linear-gradient(-45deg,#14171c 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#14171c 75%),linear-gradient(-45deg,#0000 75%,#14171c 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-repeat:repeat;background-size:20px 20px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;flex:auto;justify-content:center;align-items:flex-start;padding:16px;display:flex;overflow:auto}#script-viewer-img{transform-origin:top;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;background:#fff;max-width:none;display:block;box-shadow:0 4px 16px #00000080}#script-viewer-empty{color:var(--text-dim);text-align:center;padding:60px 20px;font-size:12px;font-style:italic;line-height:1.6}#btn-side-by-side.active{font-weight:700;background:var(--accent)!important;color:#1a1d23!important;border-color:var(--accent)!important}body.mobile-mode #workspace{flex-direction:column}body.mobile-mode.side-by-side #script-viewer{border-right:0;border-bottom:1px solid var(--border);flex:0 0 40vh}body.mobile-mode.side-by-side #canvas-divider{cursor:row-resize;flex:0 0 5px;width:100%}#script-viewer-text{color:var(--text);white-space:pre-wrap;-webkit-user-select:text;user-select:text;cursor:text;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;line-height:1.55}#script-viewer-text.loading{color:var(--text-dim);font-style:italic}#script-viewer-toolbar #btn-script-mode-image,#script-viewer-toolbar #btn-script-mode-text{padding:3px 8px;font-size:10px}#script-viewer-toolbar #btn-script-mode-image.active,#script-viewer-toolbar #btn-script-mode-text.active{background:var(--accent);color:#1a1d23;border-color:var(--accent)}#script-selection-actions{z-index:50;background:var(--panel);border:1px solid var(--border);border-radius:6px;gap:4px;padding:4px;display:flex;position:absolute;box-shadow:0 4px 14px #00000080}#script-selection-actions button{background:var(--accent-2);color:#fff;cursor:pointer;border:0;border-radius:4px;padding:4px 8px;font-size:11px;font-weight:600}#script-selection-actions button:disabled{background:var(--panel-2);color:var(--text-dim);cursor:not-allowed}#script-viewer{position:relative}@keyframes connPulse{0%,to{opacity:1}50%{opacity:.45}}.conn-pick-target{animation:1.1s ease-in-out infinite connPulse}.conn-pick-source{opacity:.95}#canvas-stage.trace-mode,#canvas-stage.trace-mode #overlay{cursor:crosshair}#trace-hint{background:var(--accent);color:#1a1d23;z-index:50;pointer-events:none;border-radius:4px;padding:6px 14px;font-size:12px;font-weight:600;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0006}#trace-hint kbd{background:#0000002e;border-radius:3px;padding:1px 5px;font-family:ui-monospace,Menlo,monospace;font-size:11px}#btn-trace-balloon.active{background:var(--accent);color:#1a1d23;border-color:var(--accent);font-weight:600}#btn-exit-mobile{top:calc(env(safe-area-inset-top) + 8px);right:calc(env(safe-area-inset-right) + 10px);z-index:200;background:var(--accent);color:#1a1d23;cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;border-radius:999px;padding:8px 14px;font-family:inherit;font-size:12px;font-weight:700;display:none;position:fixed;box-shadow:0 4px 14px #0006}body.mobile-mode #btn-exit-mobile{align-items:center;gap:4px;display:inline-flex}#canvas-stage.cleanup-mode{cursor:crosshair}#cleanup-hint{color:#fff;z-index:10;pointer-events:none;background:#4ea1fff2;border-radius:5px;padding:7px 14px;font-size:12px;font-weight:600;position:absolute;top:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 12px #00000059}#cleanup-panel{background:var(--panel);border:1px solid var(--border);z-index:20;border-radius:8px;min-width:360px;padding:10px 14px;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000080}#cleanup-panel .cleanup-row{align-items:center;gap:8px;margin-bottom:8px;display:flex}#cleanup-panel .cleanup-row:last-child{margin-bottom:0}#cleanup-panel label{color:var(--text-dim);font-size:11px}#cleanup-panel input[type=range]{flex:1}#cleanup-panel #cleanup-brush-val{color:var(--text);text-align:right;min-width:28px;font-size:11px}#cleanup-panel .cleanup-actions{gap:6px}#cleanup-panel .cleanup-actions button{background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:5px;padding:5px 10px;font-size:12px}#cleanup-panel .cleanup-actions button:hover{background:#353c47}#cleanup-panel .cleanup-actions button.primary{background:var(--accent-2);border-color:var(--accent-2);color:#fff;font-weight:600}#cleanup-panel .cleanup-actions button.primary:hover{filter:brightness(1.1)}#cleanup-panel #btn-cleanup-revert{background:var(--panel-2);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;border-radius:5px;padding:6px;font-size:11px}#cleanup-panel #cleanup-busy{color:var(--accent-2);border-top:1px solid var(--border);align-items:center;gap:8px;margin-top:8px;padding-top:6px;font-size:12px;display:flex}#cleanup-panel .spinner{border:2px solid var(--border);border-top-color:var(--accent-2);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite cleanup-spin;display:inline-block}@keyframes cleanup-spin{to{transform:rotate(360deg)}}#btn-cleanup.active{background:var(--accent-2);color:#fff;border-color:var(--accent-2)}
