:root{--bg: #fffdee;--ink: #1a024d;--ink-soft: rgba(26, 2, 77, .6);--line: #1a024d;--hairline: rgba(26, 2, 77, .28);--wine: #721e3c;--mortar: #f0ecd4;--brick: #c1b7a4;--brick-cut: #d6cdba;--accent: #f74823;font-family:Satoshi,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.5}*{box-sizing:border-box;margin:0}html,body,#root{height:100%}body{overflow:hidden}#root{padding:1rem}.app-frame{height:100%;display:flex;flex-direction:column;border:1px solid var(--line)}.app-body{flex:1;min-height:0;display:flex}.content{flex:1;min-width:0;display:flex;align-items:center;justify-content:center;padding:1.5rem}.sidebar{width:17rem;flex-shrink:0;border-left:1px solid var(--line);padding:1.5rem;display:flex;flex-direction:column;overflow-y:auto}.playback-footer{flex:none;border-top:1px solid var(--line);padding:.9rem 1.5rem}header.masthead{display:flex;align-items:baseline;gap:1.25rem;padding:1.1rem 1.5rem;border-bottom:1px solid var(--line)}header.masthead h1{font-family:"Instrument Serif",Georgia,serif;font-size:2rem;font-weight:400;line-height:1;letter-spacing:.005em}header.masthead>p{font-family:"Instrument Serif",Georgia,serif;font-style:italic;font-size:1.05rem;color:var(--wine)}.info-button{margin-left:auto;align-self:center;width:1.6rem;height:1.6rem;border:1px solid var(--line);border-radius:50%;background:none;color:var(--ink);font-family:"Instrument Serif",Georgia,serif;font-style:italic;font-size:.95rem;line-height:1;cursor:pointer}.info-button:hover{background:var(--ink);color:var(--bg)}.info-dialog{margin:auto;max-width:30rem;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:0}.info-dialog::backdrop{background:#1a024d73}.info-body{padding:2rem}.info-body h2{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--wine);margin-bottom:.5rem}.info-body p+h2,.info-body ul+h2{margin-top:1.5rem}.info-body p,.info-body li{font-size:.9rem}.info-body ul{padding-left:1.1rem}.info-body li+li{margin-top:.35rem}.info-body a{color:var(--wine);text-decoration:underline;text-underline-offset:2px}.info-body a:hover{color:var(--accent)}.info-close{font:inherit;font-size:.85rem;color:var(--ink);background:none;border:1px solid var(--line);padding:.3rem .9rem;margin-top:1.5rem;cursor:pointer}.info-close:hover{background:var(--ink);color:var(--bg)}.scene-holder{position:relative;width:100%;height:100%;border:1px solid var(--line)}.legend{position:absolute;top:1rem;left:1rem;z-index:1;pointer-events:none;font-size:.8rem;line-height:1.6;color:var(--ink-soft);font-variant-numeric:tabular-nums}.legend-title{color:var(--ink);font-weight:700}.opening-list{list-style:none;padding:0}.opening{border:1px solid var(--hairline)}.opening+.opening{margin-top:.5rem}.opening.selected{border-color:var(--line)}.opening-row{display:flex;align-items:stretch}.opening-title{font:inherit;font-size:.85rem;color:var(--ink);background:none;border:none;padding:.4rem .6rem;flex:1;text-align:left;cursor:pointer}.opening-remove{font:inherit;color:var(--ink-soft);background:none;border:none;border-left:1px solid var(--hairline);padding:0 .6rem;cursor:pointer}.opening-remove:hover{color:var(--accent)}.opening-editor{padding:.6rem;border-top:1px solid var(--hairline)}.opening-editor .kind-toggle+.kind-toggle{margin-top:.5rem}.opening-editor .kind-toggle+.field{margin-top:.9rem}.opening-add{font:inherit;font-size:.85rem;color:var(--ink);background:none;border:1px solid var(--line);padding:.3rem .75rem;margin-top:.75rem;width:100%;cursor:pointer}.opening-add:hover{background:var(--ink);color:var(--bg)}.playback-bar{display:flex;align-items:center;gap:1rem}.playback-bar button{font:inherit;font-size:.85rem;font-weight:500;color:var(--ink);background:none;border:1px solid var(--line);padding:.3rem .75rem;cursor:pointer}.playback-bar button:hover{background:var(--ink);color:var(--bg)}.play-toggle{min-width:4.5rem}.speed-toggle{display:flex}.speed-toggle button{border-left-width:0;min-width:2.75rem}.speed-toggle button:first-child{border-left-width:1px}.speed-toggle button.active{background:var(--ink);color:var(--bg)}.playback-bar input[type=range]{flex:1;accent-color:var(--ink)}.step-counter{color:var(--ink-soft);font-size:.85rem;font-variant-numeric:tabular-nums;min-width:9rem;text-align:right}.plan-panel{margin-top:auto;padding-top:1rem}.plan-panel summary{padding:.75rem 0;font-size:.85rem;color:var(--ink-soft);cursor:pointer;list-style-position:outside}.plan-panel summary:hover{color:var(--ink)}.plan-panel-note{font-size:.8rem;color:var(--ink-soft);margin-bottom:.5rem}.plan-panel pre{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.7rem;line-height:1.45;border:1px solid var(--line);padding:.75rem;max-height:14rem;overflow:auto}.plan-panel-body button{font:inherit;font-size:.85rem;color:var(--ink);background:none;border:1px solid var(--line);padding:.3rem .75rem;margin-top:.75rem;cursor:pointer}.plan-panel-body button:hover{background:var(--ink);color:var(--bg)}.plan-error{max-width:26rem;border:1px solid var(--line);border-left:3px solid var(--accent);padding:1.5rem}.plan-error-overlay{position:absolute;left:2.5rem;bottom:2.5rem;background:var(--bg);padding:1rem 1.25rem;z-index:1}.content{position:relative}.plan-error p:first-child{color:var(--wine);font-weight:700}.plan-error p+p{margin-top:.25rem;color:var(--ink-soft);font-size:.85rem}.spec-controls h2{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--wine);margin-bottom:.75rem}.spec-controls>h2:not(:first-child){margin-top:2rem}.kind-toggle+.field{margin-top:1rem}.field+.field{margin-top:.9rem}.field-head{display:flex;justify-content:space-between;align-items:baseline;font-size:.85rem}.field-value{color:var(--ink-soft);font-variant-numeric:tabular-nums}.field-value input[type=number]{font:inherit;font-variant-numeric:tabular-nums;color:var(--ink);width:3.6rem;border:none;border-bottom:1px solid var(--hairline);background:none;text-align:right;margin-right:.3rem}.field-value input[type=number]:focus{outline:none;border-bottom-color:var(--accent)}.field input[type=range]{width:100%;margin-top:.35rem;accent-color:var(--ink)}.kind-toggle{display:flex}.kind-toggle button{font:inherit;font-size:.85rem;font-weight:500;color:var(--ink);background:none;border:1px solid var(--line);border-left-width:0;padding:.3rem 0;flex:1;cursor:pointer}.kind-toggle button:first-child{border-left-width:1px}.kind-toggle button:hover,.kind-toggle button.active{background:var(--ink);color:var(--bg)}
