:root{font-family:Inter,ui-sans-serif,system-ui,sans-serif;color:#243b30;background:#dfe8db;--forest:#244734;--lime:#d8f36d;--cream:#f7f5ea}*{box-sizing:border-box}body{margin:0;min-width:320px}.app{min-height:100vh;background:radial-gradient(circle at 80% 0,#f6f4df 0 17%,transparent 45%),#dfe8db}button,input,select{font:inherit}header{padding:34px 44px 26px;display:flex;justify-content:space-between;align-items:end}header h1{font-family:Georgia,serif;font-size:clamp(48px,7vw,84px);line-height:.85;margin:8px 0;color:var(--forest);letter-spacing:-.04em}.kicker{font-size:11px;letter-spacing:.24em}header p{max-width:590px;color:#52665a;margin:20px 0 0}.total{text-align:right}.total small{display:block;letter-spacing:.12em}.total b{font-size:64px;line-height:1}.total span{font-weight:700}main{display:grid;grid-template-columns:330px 1fr;max-width:1440px;margin:auto;min-height:620px;border:1px solid #9bad9f;background:var(--cream);box-shadow:0 25px 70px #3752441f}aside{padding:24px;border-right:1px solid #aebaae;overflow:auto;max-height:700px}.new label,.routehead b{font-weight:800}.addrow{display:flex;border-bottom:2px solid var(--forest);margin-top:9px}.addrow input{border:0;background:transparent;padding:10px 0;min-width:0;flex:1;outline:0}.addrow span{align-self:center;font-size:10px;color:#77847c}.new p{font-size:12px;color:#68766e;line-height:1.5}.routehead{display:flex;justify-content:space-between;margin:30px 0 14px}.routehead span{font-size:12px}.empty{padding:30px 12px;color:#7f8c83;border:1px dashed;text-align:center;line-height:1.7}.segments{list-style:none;margin:0;padding:0}.segments li{position:relative;padding-bottom:6px}.nodeRow{display:flex;align-items:center;gap:10px;border:0;background:transparent;width:100%;text-align:left;padding:8px 0;cursor:pointer}.nodeRow i{font-style:normal;display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--forest);color:#fff;font-size:11px}.segmentEdit{margin-left:12px;border-left:1px solid #9ead9f;padding:2px 0 8px 22px}.segmentEdit.open{border-left:3px solid #8fab33}.segmentSummary{border:0;background:transparent;width:100%;display:flex;justify-content:space-between;text-align:left;font-size:11px;color:#617067;padding:7px 0;cursor:pointer}.segmentSummary span:last-child{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:135px}.fields{display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#e8eddf;padding:9px}.fields label{font-size:10px}.fields input,.fields select{display:block;width:100%;border:0;background:#fff;padding:7px;margin-top:4px}.fields .wide{grid-column:span 2}.sideActions{display:flex;gap:8px;margin-top:20px}.sideActions button{border:1px solid #778a7c;background:transparent;padding:8px;flex:1;cursor:pointer}.sideActions button:disabled{opacity:.35}.sideActions .danger{color:#9b3b30}.board{min-width:0;display:flex;flex-direction:column}.toolbar{height:55px;display:flex;justify-content:space-between;align-items:center;padding:0 18px;border-bottom:1px solid #b7c1b7;font-size:12px}.toolbar div{display:flex;align-items:center;gap:6px}.toolbar button{border:1px solid #9aab9d;background:#fff;padding:6px 10px;cursor:pointer}.toolbar b{min-width:48px;text-align:center}.canvas{display:block;width:100%;height:100%;min-height:560px;touch-action:none;background:#eef2e8;cursor:crosshair}.node{cursor:grab;filter:url(#shadow)}.node:active{cursor:grabbing}.node circle:first-child{fill:var(--lime);stroke:var(--forest);stroke-width:4}.node circle:nth-child(2){fill:var(--forest)}.node text{font-weight:800;font-size:16px;paint-order:stroke;stroke:#f7f5ea;stroke-width:6;stroke-linejoin:round}.node .num{font-size:10px;fill:#fff;stroke:none}.segmentLabel rect{fill:#fff;stroke:#65806f}.segmentLabel text{font-size:12px;fill:#2d4939}.blankTitle{font:700 25px Georgia;fill:#778b7e}.blankSub{font-size:14px;fill:#91a095}footer{text-align:center;padding:22px;font-size:11px;color:#66766c}@media(max-width:800px){header{padding:24px;align-items:flex-start}.total b{font-size:42px}main{grid-template-columns:1fr;margin:0 12px}aside{border-right:0;border-bottom:1px solid;max-height:none}.canvas{min-height:440px}.board{min-height:500px}}
