:root{font:13px/1.4 system-ui,Segoe UI,sans-serif;color:#212529;--line: #ced4da;--accent: #1c7ed6}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{display:grid;grid-template:auto 1fr auto / 230px 1fr 340px;grid-template-areas:"head head head" "left main right" "foot foot foot";height:100%}header{grid-area:head;display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid var(--line);background:#f8f9fa}header .project{margin:0 12px 0 4px;color:#495057}header .gap{width:14px}.message{margin-left:auto;padding:3px 10px;border-radius:4px;background:#ffe3e3;color:#c92a2a;cursor:pointer}aside{overflow:auto;padding:8px 10px;background:#f8f9fa}.left{grid-area:left;border-right:1px solid var(--line)}.right{grid-area:right;border-left:1px solid var(--line)}main{grid-area:main;position:relative;min-width:0;min-height:0}.sheet{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.empty{padding:40px;color:#868e96}h3{margin:12px 0 6px;font-size:13px}h3:first-child{margin-top:2px}h4{margin:14px 0 4px;font-size:12px;color:#495057}button,select,input{font:inherit}button{padding:3px 9px;border:1px solid var(--line);border-radius:4px;background:#fff;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{color:#adb5bd;cursor:default}button.on{border-color:var(--accent);background:#e7f5ff}.pages{margin:0 0 6px;padding:0;list-style:none}.pages li{display:flex;align-items:center;gap:2px;padding:2px 4px;border-radius:4px;cursor:pointer}.pages li.on{background:#d0ebff}.pages li span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pages li button{padding:0 5px}.palette{display:grid;gap:3px;margin-bottom:8px}.palette button{text-align:left}.field{display:grid;grid-template-columns:105px 1fr;align-items:center;gap:6px;margin:4px 0}.field input,.field select,aside select{width:100%;min-width:0;padding:3px 6px;border:1px solid var(--line);border-radius:4px}.right nav{display:flex;gap:4px;margin-bottom:8px}.plain{margin:0 0 6px;padding:0;list-style:none}.plain li{display:flex;align-items:baseline;gap:8px;padding:2px 0}.plain li span{flex:1}.plain li.free{color:#868e96}.plain li.excess{color:#c92a2a}small{color:#868e96}a{color:#0645ad;cursor:pointer}a:hover{text-decoration:underline}table{width:100%;margin-bottom:8px;border-collapse:collapse}th,td{padding:3px 4px;border-bottom:1px solid #e9ecef;text-align:left;vertical-align:top}.hint{margin-top:14px;color:#868e96}section>button{margin-top:10px}.right nav{flex-wrap:wrap}.overlay{position:fixed;inset:0;z-index:10;display:grid;place-items:center;background:#00000059}.dialog{width:min(640px,92vw);max-height:90vh;overflow:auto;padding:16px 20px;border-radius:8px;background:#fff;box-shadow:0 10px 40px #0000004d}.dialog .mapping{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.dialog .actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}.skipped{color:#c92a2a}.account{display:flex;align-items:center;gap:6px;margin-left:auto}.message+.account{margin-left:8px}.cloud{color:#2b8a3e}.cloud.dirty,.cloud.saving{color:#868e96}.cloud.conflict,.cloud.error{color:#c92a2a}.palette-row{display:grid;grid-template-columns:1fr auto;gap:3px}.dialog.wide{width:min(620px,96vw)}.symbol-form{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}.tools{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0 6px}.symbol-canvas{display:block;border:1px solid var(--line);border-radius:4px;cursor:crosshair;touch-action:none}.actions .left{margin-right:auto}.status{min-height:1.4em;margin:6px 0 0}.dialog{align-self:start;margin-top:5vh}.filter{width:100%;margin-bottom:6px;padding:3px 6px;border:1px solid var(--line);border-radius:4px}.palette details{margin-bottom:2px}.palette summary{padding:3px 2px;cursor:pointer;font-weight:600;color:#495057}.palette details>div{margin:0 0 3px 10px}.dialog.browser{display:grid;grid-template:auto 1fr auto / 250px 1fr 300px;grid-template-areas:"head head head" "tree hits detail" "foot foot foot";gap:0 14px;width:min(1240px,96vw);height:86vh;max-height:86vh;overflow:hidden}.browser>header{grid-area:head;display:flex;align-items:center;gap:8px;margin:-16px -20px 10px;padding:10px 20px}.browser>header h3{margin:0 8px 0 0}.browser>header nav{display:flex;gap:4px}.browser>header input{flex:1;padding:5px 8px;border:1px solid var(--line);border-radius:4px}.browser>header select{padding:4px 6px;border:1px solid var(--line);border-radius:4px}.tree{grid-area:tree;overflow:auto;margin:0;padding:0;list-style:none}.tree ul{margin:0;padding:0 0 4px 14px;list-style:none}.tree li:not(.branch),.tree .branch>div{display:flex;justify-content:space-between;gap:6px;padding:2px 6px;border-radius:4px;cursor:pointer}.tree .branch>div{font-weight:600}.tree .on{background:#d0ebff}.tree .none{color:#adb5bd}.hits{grid-area:hits;overflow:auto;min-width:0}.hits thead th{position:sticky;top:0;background:#fff}.hits tbody tr{cursor:pointer}.hits tbody tr:hover{background:#f1f3f5}.hits tbody tr.on{background:#d0ebff}.detail{grid-area:detail;overflow:auto;padding:0 0 0 14px;border-left:1px solid var(--line);background:none}.detail h4:first-child{margin-top:0;font-size:13px;color:inherit}.detail .choose{display:grid;gap:6px;margin-top:12px}.browser>footer{grid-area:foot;margin-top:8px}.assistant{position:absolute;left:50%;bottom:14px;z-index:5;width:min(780px,calc(100% - 40px));transform:translate(-50%);border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 6px 24px #0000002e}.assistant .ask{display:flex;gap:8px;align-items:stretch;padding:8px}.assistant textarea{flex:1;resize:none;padding:6px 8px;border:1px solid var(--line);border-radius:6px;font:inherit}.assistant textarea:disabled{background:#f1f3f5}.assistant .proposal{max-height:38vh;overflow:auto;padding:10px 12px 0;border-bottom:1px solid var(--line)}.assistant .proposal p{margin:0 0 8px;white-space:pre-wrap}.assistant .proposal .actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin:0 0 10px}.assistant .proposal small{margin-right:auto}header{flex-wrap:wrap}.branchbar{display:flex;align-items:center;gap:4px;flex-basis:100%;padding-top:5px;border-top:1px solid #e9ecef}.branchbar>span{margin-right:6px;color:#495057}.branchbar small{margin-left:10px}button.icon{display:grid;place-items:center;width:32px;height:30px;padding:0;color:#212529}.left .buttons{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.placing{margin:0 0 8px;color:var(--accent)}.navigator ul{margin:0;padding:0;list-style:none}.navigator .device{display:flex;align-items:baseline;gap:6px;padding:2px 4px;border-radius:4px;cursor:default}.navigator .device:hover{background:#e9ecef}.navigator .device.on{background:#d0ebff}.navigator .toggle{width:18px;height:18px;padding:0;line-height:1}.navigator .tag{font-weight:600;cursor:pointer}.navigator .device small{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.navigator .functions{margin:0 0 4px 24px;padding-left:8px;border-left:1px solid var(--line)}.navigator .functions li{display:flex;align-items:baseline;gap:6px;padding:1px 0}.navigator .functions li>span{flex:1}.navigator .functions li.free>span{color:#868e96}.navigator .functions li.excess>span{color:#c92a2a}.navigator .place{padding:0 6px;font-size:11px}.menu{position:fixed;z-index:20;display:grid;min-width:230px;padding:4px;border:1px solid var(--line);border-radius:6px;background:#fff;box-shadow:0 6px 24px #0003}.menu button{border:0;text-align:left}.menu button:hover{background:#e7f5ff}.dialog.picker,.dialog.plc{width:min(900px,96vw)}.picker>header,.plc>header{display:flex;align-items:center;gap:8px;margin:-16px -20px 12px;padding:10px 20px}.picker>header h3,.plc>header h3{margin:0 auto 0 0}.picker>header input{width:240px;padding:5px 8px;border:1px solid var(--line);border-radius:4px}.picker .sections{columns:3 220px;column-gap:18px}.picker section{break-inside:avoid;margin-bottom:10px}.picker section h4{margin:0 0 4px}.picker .palette-row{margin-bottom:3px}.picker .palette-row button:first-child{text-align:left}.picker>footer{display:flex;align-items:center;gap:10px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.picker>footer .field{grid-template-columns:auto 140px;margin:0}.plc .add{display:flex;gap:8px;margin:6px 0 14px}.plc .add select{width:260px}.plc input.address{width:80px;padding:2px 6px;border:1px solid var(--line);border-radius:4px}.plc td.tools{white-space:nowrap}.plc td.tools button{padding:0 6px}.template input,.template select{width:100%;padding:3px 6px;border:1px solid var(--line);border-radius:4px}.field .pair{display:grid;grid-template-columns:1fr 64px;gap:4px}.dialog.wide .symbol-form .field{grid-template-columns:150px 1fr}.dialog.wide{width:min(760px,96vw)}.branchbar .gap-before{margin-left:12px}.menu-layer{position:fixed;inset:0;z-index:19}.choice{display:flex;align-items:center;gap:8px;margin:6px 0}.choice input.short{width:150px;padding:3px 6px;border:1px solid var(--line);border-radius:4px}.plc>header nav{display:flex;gap:4px;margin-right:auto}.plc>header h3{margin-right:12px}.dialog.plc{width:min(1180px,96vw)}table.io input,table.io select{width:100%;min-width:0;padding:2px 6px;border:1px solid var(--line);border-radius:4px}table.io input.address{width:90px}table.io input.address.own{border-color:var(--accent);font-weight:600}table.io input.level{width:110px}table.io tr.first td{border-top:2px solid var(--line)}.signals{margin:10px 0}.signals summary{cursor:pointer;color:#495057;font-weight:600}.signal{display:grid;grid-template-columns:34px 1fr 74px 96px;gap:4px;align-items:center;margin:4px 0}.signal input,.signal select{min-width:0;padding:2px 4px;border:1px solid var(--line);border-radius:4px}.issues li{padding:5px 0;border-bottom:1px solid #e9ecef;color:#c92a2a}.assistant .files{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px 8px 0}.assistant .file{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;border-radius:12px;background:#e7f5ff}.assistant .file button{padding:0 4px;border:0;background:none}.statusbar{grid-area:foot;display:flex;justify-content:space-between;gap:16px;padding:3px 12px;border-top:1px solid var(--line);background:#f8f9fa;font-size:12px;color:#495057}.statusbar .balance a{margin-left:8px}.statusbar .balance.low{color:#b35c00;font-weight:600}.statusbar .balance.empty{color:#c92a2a;font-weight:600}.assistant .tokens{margin:0;padding:0 10px 6px;font-size:11px;color:#6c757d}.assistant .tokens.empty{color:#c92a2a}
