:root{--ink:#25271f;--ink-muted:#696b60;--night:#1b1e17;--night-soft:#272b21;--paper:#f4f1e7;--paper-deep:#e8e3d4;--surface:#fffdf7;--line:#d5cfbd;--line-strong:#a8a18d;--moss:#60733d;--moss-bright:#b7d36b;--moss-pale:#e1ebbf;--amber:#c98c31;--danger:#a44133;color:var(--ink);background:var(--paper);font-synthesis:none;text-rendering:optimizelegibility;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:var(--paper);min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}button,input,textarea,select,a{outline-offset:3px}button{cursor:pointer}h1,h2,h3,p{margin-top:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{background:var(--paper);grid-template-rows:auto auto minmax(0,1fr) auto;height:100vh;min-height:100vh;display:grid;overflow:hidden}.topbar{color:#f6f3e8;background:var(--night);border-bottom:1px solid #34382b;justify-content:space-between;align-items:center;gap:1rem;min-height:64px;padding:.65rem 1rem;display:flex}.brand{align-items:center;gap:.75rem;min-width:max-content;display:flex}.brand>span:last-child{line-height:1.05;display:grid}.brand strong{letter-spacing:.02em;font-family:Georgia,serif;font-size:1.15rem}.brand small{color:#afb3a3;text-transform:uppercase;letter-spacing:.1em;margin-top:.3rem;font-size:.7rem}.brand-mark{border:1px solid var(--moss-bright);width:38px;height:38px;color:var(--moss-bright);place-items:center;font-family:Georgia,serif;font-size:.85rem;display:grid;transform:rotate(45deg)}.brand-mark:first-line{transform:rotate(-45deg)}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.button{border:1px solid var(--line-strong);min-height:36px;color:var(--ink);background:var(--surface);border-radius:4px;padding:.5rem .8rem;font-weight:650;text-decoration:none;transition:border-color .12s,background .12s,transform .12s}.button:hover{border-color:var(--moss);background:#f8f7ef}.button:active{transform:translateY(1px)}.button-primary{background:var(--moss-bright);color:#1f2615;border-color:#758b47}.button-primary:hover{background:#c6df7f}.button-quiet{background:var(--night-soft);color:#f2f0e8;border-color:#474c3c}.button-quiet:hover{background:#32372a;border-color:#777e65}.button-danger{color:var(--danger);background:#fff7f3;border-color:#c18479}.button-small{min-height:30px;padding:.3rem .55rem;font-size:.78rem}.button-wide{text-align:center;width:100%}.icon-button{border:1px solid var(--line);width:32px;height:32px;color:inherit;background:0 0;border-radius:3px;place-items:center;font-size:1.25rem;display:grid}.icon-button:hover{border-color:var(--moss);background:var(--moss-pale)}.bookbar{border-bottom:1px solid var(--line);background:var(--surface);grid-template-columns:minmax(180px,1fr) minmax(240px,420px) auto;align-items:center;gap:1.5rem;min-height:92px;padding:1rem 1.25rem;display:grid}.bookbar h1{margin:.15rem 0 0;font-family:Georgia,serif;font-size:clamp(1.35rem,2vw,1.85rem)}.eyebrow{color:var(--moss);letter-spacing:.13em;text-transform:uppercase;font-size:.68rem;font-weight:800}.compact-field,.field{gap:.35rem;display:grid}.compact-field>span,.field>span{color:var(--ink-muted);letter-spacing:.04em;text-transform:uppercase;font-size:.72rem;font-weight:750}.compact-field input,.field input,.field textarea,.field select{border:1px solid var(--line);width:100%;min-width:0;color:var(--ink);background:#fffefa;border-radius:3px;padding:.55rem .65rem}.compact-field input:focus,.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--moss);outline:2px solid #cddba7}.field textarea{resize:vertical;line-height:1.45}.field small{color:var(--ink-muted);font-size:.72rem;line-height:1.35}.field-row{align-items:end;gap:.6rem;display:flex}.field-row>.field{flex:1}.field-small{flex:0 0 78px!important}.book-stats{color:var(--ink-muted);align-items:center;gap:1rem;font-size:.78rem;display:flex}.book-stats span{white-space:nowrap}.book-stats strong{color:var(--ink)}.status-good,.status-bad{border-radius:2px;padding:.3rem .5rem;font-weight:750}.status-good{color:#405324;background:var(--moss-pale)}.status-bad{color:#7f3025;background:#f5d8d1}.workspace{grid-template-columns:220px minmax(420px,1fr) 340px;min-height:0;display:grid;overflow:hidden}.chapter-sidebar,.inspector{background:var(--surface);min-height:0}.chapter-sidebar{border-right:1px solid var(--line);padding:1rem;overflow-y:auto}.sidebar-heading,.inspector-heading,.panel-heading,.dialog-heading,.section-title,.mini-card-heading{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.sidebar-heading h2,.inspector-heading h2,.panel-heading h2,.dialog-heading h2{margin:0;font-family:Georgia,serif;font-size:1.05rem}.chapter-list{gap:.3rem;margin:.8rem 0;padding:0;list-style:none;display:grid}.chapter-button{text-align:left;width:100%;color:var(--ink);background:0 0;border:1px solid #0000;border-radius:3px;grid-template-columns:30px 1fr;align-items:center;gap:.55rem;padding:.65rem;display:grid}.chapter-button:hover{background:var(--paper)}.chapter-button.selected{background:var(--moss-pale);border-color:#bac898}.chapter-button strong,.chapter-button small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.chapter-button strong{font-size:.85rem}.chapter-button small{color:var(--ink-muted);margin-top:.15rem;font-size:.7rem}.chapter-number{color:var(--moss);font-family:Georgia,serif;font-size:.8rem}.sidebar-note{border-left:3px solid var(--amber);background:#f8efd9;margin-top:1.25rem;padding:.8rem;font-size:.78rem}.sidebar-note strong{font-family:Georgia,serif}.sidebar-note p{color:#6c604c;margin:.35rem 0 0;line-height:1.4}.sidebar-note a{color:var(--moss-dark);margin-top:.55rem;font-weight:700;display:inline-block}.canvas-panel{background:var(--paper-deep);grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid}.panel-heading{border-bottom:1px solid var(--line);background:#f7f4eb;min-height:64px;padding:.75rem 1rem}.panel-heading h2{margin-top:.15rem}.canvas-scroll{scroll-behavior:smooth;width:100%;min-width:0;min-height:0;overflow:auto}.quest-canvas{background-color:#e9e4d5;background-image:linear-gradient(#d9d2bf 1px,#0000 1px),linear-gradient(90deg,#d9d2bf 1px,#0000 1px),linear-gradient(#c7bfaa 1px,#0000 1px),linear-gradient(90deg,#c7bfaa 1px,#0000 1px);background-size:20px 20px,20px 20px,80px 80px,80px 80px;width:1600px;height:1000px;position:relative;overflow:hidden}.quest-canvas.is-empty{width:100%;height:100%;min-height:400px}.canvas-empty{text-align:center;border:1px solid var(--line-strong);background:#fffdf7f0;width:min(420px,100% - 2rem);padding:2rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.canvas-empty h3{margin-bottom:.4rem;font-family:Georgia,serif}.canvas-empty p{color:var(--ink-muted)}.empty-rune{color:var(--amber);margin-bottom:.7rem;font-size:2rem;display:block}.dependency-lines{pointer-events:none;position:absolute;inset:0}.dependency-lines line{stroke:#718044;stroke-width:4px;stroke-linecap:round;stroke-dasharray:7 6}.quest-node{--quest-scale:1;color:#26301a;width:72px;height:72px;transform:scale(var(--quest-scale));touch-action:none;-webkit-user-select:none;user-select:none;z-index:1;background:#dbe6b9;border:3px solid #657541;border-radius:50%;place-items:center;display:grid;position:absolute;box-shadow:0 3px #9fa77d}.quest-node:hover{background:#e9f1cf}.quest-node.selected{border-color:var(--amber);z-index:2;outline:4px solid #c98c3166}.shape-square{border-radius:3px}.shape-rsquare{border-radius:15px}.shape-diamond{transform:scale(var(--quest-scale)) rotate(45deg);border-radius:3px}.shape-diamond>*{transform:rotate(-45deg)}.shape-heart{background:#f0c8cb;border-color:#a84b55}.shape-gear{border-style:dashed}.quest-icon{font-family:Georgia,serif;font-size:1.1rem;font-weight:800}.quest-node-title{text-overflow:ellipsis;white-space:nowrap;width:130px;color:var(--ink);background:#f4f1e7e6;padding:.18rem .35rem;font-size:.72rem;font-weight:700;position:absolute;top:calc(100% + 8px);left:50%;overflow:hidden;transform:translate(-50%)}.shape-diamond .quest-node-title{transform:translate(-50%)rotate(-45deg)}.inspector{border-left:1px solid var(--line);grid-template-rows:auto minmax(0,1fr);display:grid}.inspector-heading{border-bottom:1px solid var(--line);min-height:64px;padding:.75rem 1rem}.inspector-scroll{align-content:start;gap:.9rem;padding:1rem;display:grid;overflow-y:auto}.id-chip{border:1px solid var(--line);color:var(--ink-muted);background:var(--paper);padding:.25rem .4rem;font:.68rem ui-monospace,monospace}.hint-box{background:#fbf4df;border:1px solid #d5c28d;padding:.8rem}.hint-box strong{font-family:Georgia,serif}.hint-box p{color:#6c604c;margin:.35rem 0 0;font-size:.8rem;line-height:1.45}.inspector-section{border-top:1px solid var(--line);padding-top:.9rem}.section-title{margin-bottom:.65rem}.section-title h3{letter-spacing:.06em;text-transform:uppercase;margin:0;font-size:.82rem}.section-title>span{text-align:center;color:#455326;background:var(--moss-pale);border-radius:10px;min-width:24px;padding:.18rem .35rem;font-size:.7rem;font-weight:800}.check-list{gap:.35rem;max-height:150px;display:grid;overflow-y:auto}.check-list label,.check-field{align-items:center;gap:.45rem;font-size:.78rem;display:flex}.check-list label{background:var(--paper);padding:.4rem}.check-field{padding-bottom:.55rem}.muted{color:var(--ink-muted);margin:0;font-size:.78rem;line-height:1.4}.item-stack{gap:.5rem;display:grid}.mini-card{border:1px solid var(--line);background:var(--paper);padding:.65rem}.mini-card-heading{margin-bottom:.55rem;font-size:.76rem}.text-button{background:0 0;border:0;padding:0;font-size:.72rem;font-weight:750}.danger-text{color:var(--danger)}.add-row,.danger-row{gap:.4rem;margin-top:.55rem;display:flex}.danger-row{border-top:1px solid var(--line);justify-content:space-between;padding-top:.9rem}.statusbar{color:#bfc4b1;background:var(--night);justify-content:space-between;gap:1rem;min-height:32px;padding:.4rem 1rem;font-size:.7rem;display:flex}.dialog-backdrop{z-index:20;background:#12140fb8;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.dialog-card{border:1px solid var(--line-strong);background:var(--surface);border-radius:4px;width:min(680px,100%);max-height:calc(100vh - 2rem);padding:1.25rem;overflow-y:auto;box-shadow:0 20px 70px #0000004d}.dialog-heading{margin-bottom:1rem}.dialog-heading h2{margin-top:.18rem;font-size:1.35rem}.dialog-card>p{color:var(--ink-muted);font-size:.88rem;line-height:1.5}.prompt-area{min-height:260px;font:.72rem/1.5 ui-monospace,SFMono-Regular,Consolas,monospace!important}.dialog-links{gap:1rem;margin:.75rem 0;font-size:.8rem;display:flex}.dialog-links a{color:#52662e;font-weight:700}.error-list{color:#7a3026;max-height:340px;padding-left:1.35rem;font:.78rem/1.5 ui-monospace,monospace;overflow-y:auto}@media (width<=1100px){.workspace{grid-template-columns:190px minmax(380px,1fr) 300px}.bookbar{grid-template-columns:1fr minmax(220px,360px)}.book-stats{display:none}}@media (width<=820px){.app-shell{height:auto;display:block;overflow:visible}.topbar{align-items:flex-start}.brand small{display:none}.topbar-actions{gap:.35rem}.topbar-actions .button{min-height:32px;padding:.4rem .5rem;font-size:.72rem}.bookbar{grid-template-columns:1fr;gap:.7rem}.workspace{display:block;overflow:visible}.chapter-sidebar{border-right:0;border-bottom:1px solid var(--line)}.chapter-list{display:flex;overflow-x:auto}.chapter-list li{min-width:180px}.sidebar-note,.chapter-sidebar>.button-wide{display:none}.canvas-panel{height:520px}.inspector{border:0;border-top:1px solid var(--line)}.inspector-scroll{overflow:visible}.statusbar{z-index:5;position:sticky;bottom:0}}@media (width<=520px){.topbar{display:grid}.topbar-actions{justify-content:stretch}.topbar-actions .button,.topbar-actions label{text-align:center;flex:1}.bookbar{padding:.85rem}.panel-heading{align-items:end}.field-row{flex-wrap:wrap}.field-small{flex-basis:88px!important}.statusbar span:last-child{display:none}.dialog-links{gap:.4rem;display:grid}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
